Shared memory C++ class - Standalone

Since  needed it for one of my research projects, I have created an offspin of the SharedMemory class in my FlexLib2 library.

The created SharedMemory class supports the creation of SharedMemory segments in the OpenMPI context. In the end you will have a shared memory segment on every machine, where the program is executed.

Shared memory example
Shared memory example

An example code is included. It compiles on gcc 4.8.4 on Ubuntu 14.04 with C++98 and C++11 Standart.

It includes a Makefile and an example program. Checkout the README file for details. And: Have fun 🙂

[Link to the source]

 

If you need some more info about how to deal with POSIX shared memory on a Linux system, I can recommend this following article.

Ubuntu 16.04 is here

Xerus-600x400
Eponym: African ground squirrel. They are cute! [Source]
Ubuntu 16.04 is here! You can immediately download it from the Ubuntu.com page. View the Release Notes here.

Since I'm away until the end of the next week, I will not have the time to try it out yet.

I am really looking forward to the announced snaps and the apt. I have hopes that the snaps will make a difference when it comes to unification of installing packages on different distributions. To be honest, unless the package is well supported, the situation is a mess. I don't want to be offensive, I know it's not easy to build a package for every distribution.

To support the community, my server now seed the Ubuntu Torrents 🙂

Have fun! I will have a closer look, when I'm back home. Until then - Hejda from Sweden 🙂

Cool Linux Terminal: cool-retro-term

CoolRetroTerminal
Fallout-Like Terminal makes your work more fun 🙂

Having a boring task in the terminal to do? Why not putting it into a fancy Fallout-Like Terminal??Get cool-retro-term 🙂
Compilation instructions are on the GitHub page.

Have fun 🙂

Triple Seven - Just a random ssh bug

Seit gestern ist ein neuer OpenSSH Bug bekannt: Triple Seven.

Aufgrund eines Problems im Speichermanagement ist es so bösartigen Servern möglich, den privaten ssh Key des Clients auszulesen. Für den Fall, dass sich also jemand mit einem nicht vertrauenswürdigen ssh-Server verbunden hat, ist es möglich, dass der eigene ssh-Key kompromittiert wurde.
Wer sich nicht sicher ist, ist daher angeraten sich neue ssh-Keys zu generieren und die alten in die Verbannung zu schicken (wichtig!)

Es steht mittlerweile ein Update für Debian, Ubuntu, RHEL und weiteren Distros zur Verfügung, das das Problem fixen soll.

Wer den eigenen Client zur Zeit nicht updaten kann, sollte die UseRoaming Option ausschalten. Entweder als Parameter in /etc/ssh/ssh_config

Oder als Programargument in der Kommandozeile

Und als Abschluss: Wenn irgendjemand Lust auf dubiosen Verschwörungstheorien hat, kann bei diesem Heise-Kommentar anfangen 🙂

Nat mit IPTables

NAT mit iptables in 4 einfachen Zeilen.
(Ist eigentlich NAPT und nicht NAT, wird aber weitläufig so bezeichnet)

1. IP Forwarding aktivieren

Zur permanenten Aktivierung, entsprechende Zeile in /etc/sysctl.conf

2. IPTables konfigurieren

Ich nehme an, dass eth0 die Schnittstelle nach drauĂźen ist und eth1 die interne Schnittstelle, die mit dem Internet verbunden werden soll. Also

eth1 -> eth0 -> Internet

AbschlieĂźende Hinweise

  • iproute2 untersĂĽtzt seit Linux 2.6 nicht mehr nat [Verweis]. Leider finden sich noch einige Tutorials dazu im Internet.
  • Was ich hier vorstelle ist eigentlich nicht NAT sondern NAPT. NAT im Sinne von "ich verwende den Routing Stack von Linux" findet sich heute eher selten.

 

Kurzeintrag: Imagemagick und Collagen

Kurzeintrag: Mit dem Imagemagick-Programm montage kann man sehr einfach Collagen erstellen.

Um beispielsweise aus den viert Dateien Plot1.png - Plot4.png eine Collage mit den Namen Collage.png zu erstellen genĂĽgt der folgende Befehl:

Um die Dateien auf eine Größe von 320x320 zu bringen, und eine 2x2 Collage zu erstellen

Fertig! Gefunden im Montage User Manual

Patch erzeugen (diff, patch)

Dev corner | Patch, diff | Eine kurze EinfĂĽhrung

"Einen Patch einspielen". "Eine Datei patchen". Diese Phrasen hört man häufig wenn es um Software geht, vor allem bei solcher, an der mehrere Personen beteiligt sind.
Ein Patch in diesem Kontext ist nichts anderes als eine Datei, welche die Ă„nderungen einer anderen Datei beschreibt. Also soetwas wie "Ersetze Zeile 3 mit einer leeren Zeile".
Beispiel:
Ich arbeite an einem sehr großen Code (sagen wir mal so um die 10 MB) und entdecke einen Bug, den ich beheben kann. Die Änderung ist ein Einzeiler. Ich möchte die Änderung an den Programm-Entwickler schicken.
Nun kann ich entweder die rießige Code-Datei (10 MB) an den Maintainer schicken, oder ich erstelle eine Datei, welche genau sagt, an welcher Stelle welche Änderungen zu erledigen sind (< 1 kByte).
Nun, Computerentwickler sind faul. Es wäre doch schön, wenn es ein Programm gibt, das eine solche Datei automatisch generiert und anwenden kann.
Hanau hier kommen diff und patch ins Spiel.

Anleitung

Beispielannahmen:

Originaldatei: original.c
Geänderte Datei: original_new.c

Patch erstellen

Die Datei original.c.patch beinhaltet nun alle Ă„nderungen relativ zu original.c.

Patch einspielen

Der Maintainer hat sich den Patch angeschaut und ist mit den Ă„nderungen einverstanden. Nun kann er seine Datei original.c mit der Datei original.c.patch patchen:

Patch und Diff im Einsatz in der Konsole
Patch und Diff im Einsatz in der Konsole

NĂĽtzliche Optionen

Notiz fĂĽr Eclipse

In Eclipse ist es bei GIT oder SVN-Projekten sehr einfach Patches zu erstellen oder einzuspielen:

Rechtsklick auf die Datei -> Team -> Create / Apply patch

Patchen und Patches anwenden in Eclipse
Patchen und Patches anwenden in Eclipse

Fork daemon template

Snippet um in Linux einen Daemon zu Forken

Der Prozess muss zweimal forken, damit
a) Kein Elternprozess existiert (init wird Elternprozess)
b) Der neue Dämonprozess von Terminal detached wird

nanoHttp

nanoHttp - Ein extrem einfacher Web-Server, geschrieben in C.

Primärer Einsatzzweck ist es einen einfachen Webserver auf meinem Android-Tablet zu haben, ohne einen Riesen wie kWS oder ähnliche zu installieren.

Cross-Compile fĂĽr Android (arm-linux-androideabi-gcc)

Erforderliche Pakete:

  • gcc-arm-linux-androideabi

Standartmäßig wird gcc zum kompilieren verwendet. Das entstehende Binary ist dadurch für dein System geschaffen.
Um nanoHttp für Android zu kompilieren muss nun ein anderer Compiler gewählt werden. Dazu kann einfach das Makefile editiert werden: Kommentar der folgenden Zeile entfernen und die CC=gcc-Zeile auskommentieren:

Nun ein einfaches make ausfĂĽhren

Und fertig 🙂

Installationspacket

Mitlerweile steht ein fertig kompiliertes Binary zum Download bereit. Die Installation muss per Hand erledigt werden, Anleitungen liegen jedoch im Packet.

Die Installation richtet sich eher an fortgeschrittene Benutzer, die sich mit ADB auskennen.