Meine paranoide Allianz

Vor einiger Zeit habe ich beschlossen, auch die eine oder andere Versicherung, die ich bei der A*****z habe, online verwalten zu wollen. Die Versicherung bietet hierzu ein Portal an, bei dem man sich auf dem üblichen Wege registrieren muß, wenn es mal was ernsteres ist: Also Formular ausfüllen, unterschreiben und ab die Post. Nach kurzer Zeit waren dann auch Zugangskennung und Paßwort da und es ging an die erste Anmeldung. Nichts besonderes an dieser Stelle, daß eine Änderung des Paßwortes erwartet wird.
Erster Versuch: Das Ding sieht so gut aus, daß ich es lasse, wie bisher. *mööp* Das Paßwort muß sich unterscheiden. Naa gut…
Zweiter Versuch: Ich dreh es einfach mal um. *mööp* Das Paßwort darf nicht die gleichen Zeichen enthalten. Bitte?
Dritter Versuch: Ein Paßwort aus meinem Standard-Repertoire. *mööp* Das Paßwort enthält ungültige Zeichen. Ach? Und welche?
Es folgen weitere sinnlose Versuche…
Zehnter Versuch: Ich wähle ein paar zufällige Zahlen aus. *mööp* Es dürfen keine fünf Zeichen aus dem alten Paßwort enthalten sein. %&/§%$&%&§&!!1!Elf!!
Elfter Versuch: Ich ersetze die identischen Zahlen durch andere. *ding* Es geht. Endlich.

Jeder Normalbenutzer hätte hier schon beim zweiten Versuch entnervt aufgegeben. Ich bin nur bei der Stange geblieben, weil ich weiß, daß es sowas wie Paßwortregeln gibt. Aber wie bescheuert ist das denn bitte?

Also nun guten Mutes zur Liste der Verträge weitergeklickt, in der Hoffnung, ich hätte ab sofort den absoluten Überblick. Die Liste ist leer…
Und jetzt kommt’s: Man muß jeden Vertrag, den man im Portal sehen möchte freischalten! Und zwar per Papierformular… *argh*

Ticken die da eigentlich noch ganz richtig? Ist das nicht ein wenig paranoid? Nicht mal eine Bank hat solche Restriktionen in ihrem Online Banking.

Festplatte kopieren mit dd

Das vor kurzem von mir erworbene Samsung N150 Netbook enthält eine Starter-Version von Windows 7. Nunja, mittlerweile vom MacOS X verwöhnt kann ich nach den ersten Gehversuchen nur sagen: Gesehen, gelacht, (wird) gelöscht. Das Problem an der Idee ist nur: Wie kann ich Windows 7 im Falle des Falles doch wieder zurückspielen? Eine CD/DVD wird nicht mitgeliefert, stattdessen ist die interne Platte auf krudeste Art und Weise mit Partitionen vollgestopft: Vier Stück an der Zahl, zwei davon versteckt, zwei sichtbar. Versteckt wurden offenbar die Bootpartition sowie eine weitere, von der ich vermute, daß es sich um die glorreiche Einrichtung namens „Wiederherstellungspartition“ handelt. Letztere ist sogar als „inaktiv“ gekennzeichnet, so daß man mit Windows-Bordmitteln nicht mal an die Daten kommt.
Jetzt kann man natürlich mit den unterschiedlichsten Programmen Sicherungen der beiden NTFS-Partitionen machen. Hilft aber im vorliegenden Fall nicht viel, da die versteckten Partitionen nicht gesichert werden und zudem das Partitionsschema verloren gehen würde, wer weiß, wofür das noch notwendig sein kann.
Aber als Hobbyadministrator mit gefährlichem Halbwissen ist mir spontan dd eingefallen: Damit kann man praktisch alles praktisch überall hinkopieren, warum also nicht eine ganze Festplatte von vorn bis hinten in Form eines Images sichern? weiterlesen Festplatte kopieren mit dd

Unser täglich Deadlock

Im aktuellen Kundenprojekt halte ich mein Gehirn derzeit durch Programmierung mit C# und .NET davon ab zu verrotten. Die von einem Kollegen und mir entwickelte Anwendung hat inhaltlich zeitraubende Dinge zu tun und so kann es passieren, daß einem ab und zu ein sogenannter ContextSwitchDeadlock um die Ohren gehauen wird. Eine kurze Recherche im Netz ergab zwei Lösungsmöglichkeiten: Entweder schaltet man für den Debugmodus den zugehörigen MDA (Managed Debug Assistant) ab oder man gibt der Anwendung programmatisch etwas „Luft um Atmen“.
Ersteres geschieht über das Menü Debug -> Exceptions und das Entfernen des Häkchens unter Managed Debugging Assistants -> ContextSwitchDeadlock.
Programmatisch kann man innerhalb von langlaufenden Operationen hin und wieder ein Application.DoEvents(); einstreuen, damit Windows mitbekommt, daß die Anwendung überhaupt noch läuft. Hier bieten sich z.B. Schleifen und das allseits beliebte Modulo an.

P.S.: Ich bin wieder da! 🙂 In den vergangenen Monaten hat sich in meinem Privatleben etwas wesentliches verändert und mir fehlte die Zeit, die Seite hier zu pflegen. Ich werde mich jedoch bemühen, diesen Zustand zu ändern. Äh, also letzteren…! 😉

Gadget No. 5

Endlich ist es soweit, ich habe mir im vergangenen Monat ein iPhone zugelegt. Damit ist der Gerätepark auf mittlerweile fünf Geräte aus dem Hause Apple angewachsen. Nachdem ich mich vor einigen Monaten noch tierisch über die Tarife der Telekom aufgeregt habe, wird sich der eine oder andere nun fragen, wieso ich doch zugeschlagen habe. Nun, Auslöser war der Bericht, daß O2 unter der Hand iPhones für Bestandskunden anbieten würde. Zwar bin ich nicht bei denen Kunde, habe es mir jedoch nicht nehmen lassen, das ganze hypothetisch für meinen Anbieter durchzurechnen. Das Ergebnis war eindeutig: Auch wenn ich beim alten Anbieter bleibe und noch eine Datenoption dazubuche, würde mich ein iPhone dort über zwei Jahre gerechnet 400 Euro mehr kosten als bei der Telekom mit einem vergleichbaren Tarif. Also bin ich mal zum rosa Riesen gelatscht und habe über die Theke ein freundliches „Das da! *auf’s iPhone zeig*“ gerufen. 🙂

Und ich habe es bisher nicht bereut. Aber wie überall gibt es gute und schlechte Seiten am Gerät:

Die schlechten Seiten:

  • Der Stromverbrauch ist grausam, wenn man alle Features aktiviert hat und auch noch nutzt, ist das Ding innerhalb von Stunden leergesaugt. Am schlimmsten schlägt 3G zu, wenn man es also nicht explizit braucht, sollte man es deaktivieren, das bringt eine Menge. Auch abschalten kann man Bluetooth, die Ortungsdienste sowie WLAN, sofern man die Dinge nicht ständig benötigt.
  • Die SMS-Applikation bietet keine Zählung von getippten Zeichen oder Nachrichten an. Für Vielschreiber der Horror.
  • Eigene Klingeltöne kann man zwar vergeben, jedoch keine eigenen Töne für eingehende Nachrichten. Ist zwar nicht lebensnotwendig, aber es nervt schon, wenn solche rudimentären und üblichen Dinge bei so einem teuren Gerät einfach fehlen.

Die guten Seiten kann man recht schnell zusammenfassen: Es gibt kein besseres Gerät, welches Telefonie und Netzdienste zusammenfaßt. Und das bei einer Bedienung, die seinesgleichen sucht. Man muß es einfach ausprobieren bzw. über längeren Zeitraum nutzen, um die ganze Bandbreite zu erfassen.

Ich möchte jetzt noch ein paar Tips für Apps aus dem Store geben. weiterlesen Gadget No. 5

Mathematische Unterhaltung

Vor kurzem bin ich auf Arbeit über folgendes Problem gestolpert: Gegeben sei ein Wert x, der in eine Menge von Werten xn aufgeteilt werden soll. Das Verhältnis der Verteilung soll dabei der Verteilung einer bekannten Menge von Werten yn mit der Summe y entsprechen. Die ersten Versuche mit Dreisatz und Verhältnisgleichungen führten allerdings nicht zum gewünschten Ergebnis. Da Werte gerundet wurden und die Divisionen durchaus Werte mit unendlichen Nachkommmastellen ergaben, traten bereits bei kleineren Beträgen Fehler auf.
Nach kurzer Diskussion wurde ich auf einen Algorithmus von Martin Fowler zur Allokation von Geldwerten aufmerksam gemacht. Dieser ermöglicht die restfreie Aufteilung eines gegebenen Betrags. Mit diesem Algorithmus kann man „Foemmel’s Conundrum“ lösen, welches versucht, 5 Cent in einem 30/70-Verhältnis zu verteilen (Lösung: 2 Cent/3 Cent).
Fowler arbeitet in seinem Beispiel mit ganzzahligen Werten vom primitiven Typ long. Es ist jedoch zu beachten, daß dies bei großen Werten durchaus zu Überläufen und damit falschen Ergebnissen (oder gar Ausnahmen…) führen kann. Ich habe daher den Algorithmus für Java so angepaßt, daß er mit java.math.BigInteger rechnet, womit Überläufe ausgeschlossen sind. Und so sieht das ganze dann aus:

private static BigInteger[] allocate(BigInteger amount, BigInteger[] ratios) {
    BigInteger total = BigInteger.ZERO;
    for(int i=0; i

Bleibt nun die Frage, wie uns dieser Algorithmus bei nicht-ganzzahligen Werten hilft. Nun, nehmen wir an, wir haben eine Menge von java.math.BigDecimal-Werten. Dann müssen diese in eine ganzzahlige Form gebracht werden. Zunächst müssen alle Werte auf die gleiche Anzahl Nachkommastellen gerundet werden; damit bleiben die Zahlenverhältnisse in der ganzzahligen Form erhalten. Da java.math.BigDecimal intern bereits einen ganzzahligen Wert zusammen mit einer Skalierung (Anzahl Nachkommastellen) speichert, ist die Umwandlung kein Problem. Die so berechneten Werte dienen nun als Eingabe für den gezeigten Algorithmus. Die Werte in der Ergebnismenge sollten im letzten Schritt auf die Anzahl Nachkommastellen des zu verteilenden Wertes gerundet werden, jede andere Anzahl Stellen ergibt keinen Sinn. Man kann z.B. nur ganzzahlige Centbeträge verteilen und diese in den Verteilungen wiederfinden. Damit sieht die Verteilung beliebiger Werte wie folgt aus:

private static BigDecimal[] allocate(BigDecimal _amount, 
        BigDecimal[] _ratios) {
    // max. Anzahl NKS aus allen beteiligten Werten ermitteln
    int maxScale = _amount.scale();
    for(int i=0; i<_ratios.length; i++) {
        if (_ratios[i].scale() > maxScale) 
            maxScale = _ratios[i].scale();
    }
    // nun alle _ratios neu skalieren und dabei in Ganzzahlen umwandeln
    BigInteger[] ratios = new BigInteger[_ratios.length];
    for(int i=0; i<_ratios.length; i++) {
        ratios[i] = _ratios[i].setScale(maxScale, 
                BigDecimal.ROUND_HALF_UP).unscaledValue();
    }
    // den Eingangswert neu skalieren und in Ganzzahl umwandeln
    BigInteger amount = _amount.setScale(maxScale, 
            BigDecimal.ROUND_HALF_UP).unscaledValue();
	
    // den Algorithmus ausführen
    BigInteger[] results = allocate(amount, ratios);

    // nun die Ergebnisse wieder in umwandeln
    // Anzahl NKS ist gleich der des Eingangswertes
    BigDecimal[] _results = new BigDecimal[results.length];
    for(int i=0; i
					

NSLU2 als Backup-Server

Bereits vor einigen Monaten habe ich mir eine Linksys NSLU2 zugelegt, welche bisher jedoch mangels Idee für den Einsatz originalverpackt vor sich hin oxidierte. Erst mit dem Erwerb eines zweiten Mac-Rechners und dem Erscheinen der Apple Time Machine kristallisierte sich ein Anwendungsfall für das Gerät heraus: Ein Backup-Server. Die Idee war zunächst, via Time Machine die Backups der Macs dorthin zu schreiben, allerdings stellte sich während der Installation der NSLU2 heraus, daß netatalk bei mir darauf nicht unter OpenWrt lief. Als Alternative bot sich dann schnell ein rsync-Server an. Um die Installation und Konfiguration der NSLU2 als rsync-basierter Backup-Server soll es in diesem Artikel gehen. weiterlesen NSLU2 als Backup-Server

Sichere E-Mails

In Zeiten zunehmender Überwachung und Neugier seitens des Staates ist nun auch für mich der Moment gekommen, über sichere Kommunikation nachzudenken. Im konkreten Fall betrifft dies E-Mails, die ich in Zukunft nicht mehr als Postkarte sondern lieber als ordentlich zugeklebten Brief versenden möchte. Als Klebstoff eignet sich hier hervorragend eine assymmetrische Verschlüsselung, wie sie mit PGP (Pretty Goog Privacy) schon seit Jahren existiert. Ich habe mich für das frei verfügbare GnuPG entschieden und dieses – gefolgt vom Plugin für Apple Mail – auf meinen Macs installiert.
Meinen öffentlichen Schlüssel kann man sich hier herunterladen: GPG Key