Einfachen Alert unter Android erzeugen

Möchte man in einer Android-App einen Alert (in etwa das Äquivalent zu einer MessageBox) erzeugen, so kann der AlertDialog dafür genutzt werden. Dieser stellt dabei einen Builder zur Verfügung mit welchem der Dialog schnell erstellt ist:

AlertDialog dialog = new AlertDialog.Builder(view.getContext()).create();

dialog.setTitle("Warnung");
dialog.setMessage("Bild konnte nicht gesendet werden.");

dialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
    new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
        }
    });

dialog.show();

In dem Quelltext wird eine neue Instanz des AlertDialog-Builders mit dem Kontext des aktuellen View angelegt. Mit Hilfe des Builders wird der Titel und die Nachricht des Dialogs festgelegt. Anschließend wird ein OK-Button definiert und dieser mit einer Funktionalität versehen. Danach wird der Dialog mittels der show()-Methode angezeigt.

Worst of OSM

Die freie Weltkarte OpenStreetMap ist über die Jahre immer größer, detailreicher und besser geworden. Wo Licht ist, ist allerdings auch Schatten zu finden. Beim OpenStreetMap sind dies – neben Edit-Wars und vielen (durchaus produktiven) Diskussionen – unbedachte Bearbeitungen, welche zu seltsamen Ergebnissen führen.

worstofosm.tumblr.com

worstofosm.tumblr.com

Eine Liste solcher Fehlschläge ist im Tumblr-Blog Worst of OSM zu finden. Von winzigen Häusern, interessant getaggten Imbissgelegenheiten bis zum Mißbrauch des freien Tag-Schemas ist dabei alles zu finden – damit findet der geneigte OpenStreetMap-Mapper seine tägliche Portion Grusel.

sleep 31536000

Vor einigen Tagen schaute ich mir die Tasks unter einer Mac OS X Installation genauer an. Stutzig wurde ich bei einem Task in der Aktivitätsanzeige welcher folgenden Befehl ausführte:

sleep 31536000

Wenn man kurz nachrechnet wird man feststellen das dieser Sleep-Befehl einer Wartezeit von einem Jahr entspricht. Damit stellt sich die Frage was es mit diesem Befehl auf sich hat. Wenn man sich anschaut, wer für den Sleep-Befehl zuständig ist wird man feststellen das der GPG Agent diesen Befehl abgesetzt hat. Hintergrund für dieses Verhalten ist, das es nach Aussage der Entwickler keine einfachere Möglichkeit gibt ein Skript beim Herunterfahren des Systems auszuführen. Der entsprechende Commit im Repository erklärt das Verhalten genauer.

Git und „multiple stage entries“

Wenn man längere Zeit mit Git arbeitet, wird einem die eine oder andere seltenere Fehlermeldung über den Weg laufen. Eine dieser Fehlermeldungen ist:

fatal: multiple stage entries for merged file 'DBAdapter.cs'

Hintergrund bei diesem Problem ist das der Index, welcher die Änderungen und Dateien enthält mit welchem der nächste Commit erstellt wird, für eine Datei mehrere Einträge vorhält; was per Definition nicht der Fall sein sollte. Der Workaround für diese Problem besteht darin, den Index (bzw. die sogenannte Staging area) zu löschen, die Dateien erneut hinzuzufügen und das ganze mit einem Commit in Stein gießen:

rm .git/index
git add -A
git commit -a

Anschließend kann das Git-Repository wieder ohne Probleme genutzt werden.