Leeren Ordner in git speichern

Manchmal will man einen leeren Ordner speichern. Ohne weiteres lässt das git nicht zu, man kann sich aber eines Tricks bedienen und in dem Ordner folgende .gitignore-Datei anlegen:

# Erklärung, warum der Ordner leer ist
*
!.gitignore

Diese Datei sorgt dafür, daß alle anderen Dateien (“*”) von git ignoriert werden, bis auf “.gitignore” selbst (!.gitignore).

Binärdateien in subversion und die global ignore list

Manchmal kann es notwendig sein, binäre Build-Artefakte zu versionieren (z.B. wenn der Build zu zweitaufwendig ist, die Tools aus Lizenzgründen nicht überall verfügbar sind oder der Quelltext im Fall einer Binärzulieferung gar nicht vorliegt).

Subversion ist hier zwar auch nicht ideal, hat aber im Gegensatz zu verteilten Versionsverwaltungssystemen wie git nicht den Nachteil, daß die komplette History gespiegelt wird. Meist ist man ja nur an der letzten Version interessiert.

Wenn man also Libraries/Executables in subversion speichert, sollte die folgende Option in ~/.subversion/config explizit leer gesetzt sein:

global-ignores =

Continue reading “Binärdateien in subversion und die global ignore list”

Timer und gettimeofday()

TL&DR: Bei Zeitmessungen immer eine monotone Uhr verwendet werden, nicht die normale Systemzeit.

Long story:

In einem speziellen Fall einer Timer-Implementierung wurde gettimeofday() verwendet. Auf dem Entwicklungs-Rechner hat der Timer anstandslos funktioniert. Auf dem Embedded-System mit angeschlossenem GPS hat der Timer nicht gefeuert.

Grund dafür war, daß während des Hochfahrens die Zeit mehrmals gesetzt wurde. Dadurch waren die relativen Abstände der Zeitstempel nicht mehr korrekt. Speziell in dem Fall in dem die System-Zeit 60 Sekunden in die Vergangenheit gesetzt wurde war der 15 Sekunden-Timer plötzlich auf 60+15 Sekunden = 75 Sekunden terminiert.

Bei Zeitberechnungen/Timer ist man in den meisten Fällen an einer Uhr interessiert die für die Laufzeit des Programms bzw. des Systems die Zeit kontinuierlich hochzählt. Das Mittel der Wahl unter Linux ist dafür clock_gettime(CLOCK_MONOTONIC).

Howto build Mosquitto for debian 6 (Wheezy)

Update: Of course Debian 6 is “Squeeze” and “Wheezy” is Debian 7. I won’t correct it in the title (to keep the link stable).

In order to try out owntracks – a promising alternative to google latitude – I needed to install Mosquitto on my server. Mosquitto is an open source MQTT broker.

However the server machine still runs on debian 6. As there are no prebuild packages for that version I had to build mosquitto it on my own.

Continue reading “Howto build Mosquitto for debian 6 (Wheezy)”

Workaround für netzpolitik.org – Feed unter Tiny Tiny RSS

Seit kurzer Zeit wird in der ttrss-Installation auf einem debian 6 (Squeeze) – System der Feed von netzpolitik.org nicht mehr aktualisiert. Stattdessen erscheint folgender Fehler:

Couldn’t download the specified URL: 35 error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure

Continue reading “Workaround für netzpolitik.org – Feed unter Tiny Tiny RSS”