Git Commit-Autor setzen

  • Blog, Code

Bei unseren Projekten nutzen wir gerne Git als Werkzeug, um unsere Codebasis zu versionieren und gemeinsam daran zu entwickeln.

Es gibt aber auch Fälle, in denen Git bei uns ausschließlich zur Versionierung dient, zum Beispiel für Server-Konfigurationen. Damit können wir bei Problemen, die durch Änderungen hervorgerufen wurden, schnell auf vorherige Stände zurückschalten. Das hilft uns Ausfallzeiten zu minimieren, denn so ist nicht unbedingt das Einspielen eines vollständigen Backups nötig.

Für ein solches Git-Repository bietet es sich an, Commits direkt auf dem Server zu machen. Allerdings führt das dazu, dass jeder Entwickler unter dem gleichen Autor Commits erstellt (solange sich alle den gleichen Linux-User teilen). Solche Commits sind später schlecht nachzuverfolgen. Angenehmerweise bietet Git hierfür Abhilfe.Weiterlesen »Git Commit-Autor setzen

CakePHP: Fehlende Strings bei i18n extract (Übersetzung)

  • Blog, Code

CakePHP bietet die Möglichkeit Anwendungen mit überschaubarem Aufwand zu übersetzen, indem man sich .pot-Dateien generieren lässt. Diese lassen sich dann mit Standardwerkzeugen wie PoEdit verwenden, um die .po-Dateien mit den jeweiligen Übersetzungen zu erzeugen.

Um alle verwendeten Zeichenketten innerhalb eines Projektes in die entsprechenden .pot-Dateien zu bringen, bietet CakePHP eine eigene Shell an, die sich wie folgt aus dem app-Verzeichnis heraus aufrufen lässt:

Weiterlesen »CakePHP: Fehlende Strings bei i18n extract (Übersetzung)

Mysql Datenbank Backup via mysqldump ohne Root Passwort

Datenbank-Backups gehören zum täglich Brot eines Systemadministrators. Gerne werden hierfür kleine Shell-Skripte auf Basis von mysqldump gebastelt, die via Cronjob angestoßen werden.

Leider finden sich in der Praxis immer wieder Skripte folgender Art:

#!/bin/bash
/usr/bin/mysqldump -uroot -pSecretPassword mydatabase > backup`date +%Y-%m-%d`.sql

Nicht nur unnötig, sondern auch ein Sicherheitsrisiko stellt hier die Verwendung des Root-Users dar.

Weiterlesen »Mysql Datenbank Backup via mysqldump ohne Root Passwort

Reihenfolge der Interfaces in resolv.conf ändern

  • Blog, Code

In unserem Netzwerk gibt es aus verschiedenen Gründen Server, die über zwei oder mehr Netzwerkschnittstellen kommunizieren. Dabei kann es wichtig sein, die Reihenfolge festzulegen, in der die Namensauflösung über resolvconf geschieht, um sicherzustellen, dass die Adressen in verschiedenen Netzen wie gewünscht aufgelöst werden.

Nach der Installation des Paketes resolvconf über die Paketverwaltung kann die Grundeinstellung über dpkg-reconfigure resolvconf vorgenommen werden.

Weiterlesen »Reihenfolge der Interfaces in resolv.conf ändern

XEN und „RTNETLINK answers: File exists“

In einer XEN-basierten Infrastruktur lässt sich im XenCenter unkompliziert einer VM eine weitere Netzwerkschnittstelle hinzufügen. Überlicherweise funktioniert das sogar ohne die Maschine herunterzufahren („Hot-Plugging“). Leider ist das nicht immer der Fall und kann Fehlermeldungen auslösen, die nicht direkt auf das Problem hinweisen, z.B.

$ ifup eth1
RTNETLINK answers: File exists
Failed to bring up eth1.

Die Lösung ist einfach, wenn die Maschine nicht ununterbrochen am Netz bleiben muss:

Weiterlesen »XEN und „RTNETLINK answers: File exists“

Appcelerator Titanium + Android: Kompilieren schlägt mit TypeError fehl

  • Blog, Code

Beim Kompilieren einer Android-App mit Hilfe des Titanium SDK 3.x von Appcelerator kann es vorkommen, dass die folgende Fehlermeldung erscheint:

[ERROR] TypeError: argument of type 'NoneType' is not iterable
[ERROR] :  Build process exited with code 1
[ERROR] :  Project failed to build after 2s 278ms

Die Ursache für diesen Fehler liegt darin, dass Google in aktuellen Veresionen seines Android SDK einige Dateien verschoben hat, sodass das Erzeugen der APK-Datei fehlschlägt.

Weiterlesen »Appcelerator Titanium + Android: Kompilieren schlägt mit TypeError fehl