Twitter Updates for 2010-02-06

Raphael Vullriede February 6th, 2010

  • Karaoke in Japan Town war lustig und das Essen danach war einfach unglaublich! In Japan gibts es so viel besseres Essen als nur Sushi! #

Twitter Updates for 2010-02-05

Raphael Vullriede February 5th, 2010

  • Erstmal Dinner (vietnamesisch) und danach das erste Mal in einen Club in SF! Vermutlich nichts mit meiner Musik aber was solls :-) #

Twitter Updates for 2010-02-04

Raphael Vullriede February 4th, 2010

  • Endlich auf dem Weg yur Golden Gate Bridge! #
  • Vorgestern thailändisch, gestern koreanisch (lecker!), mal schauen was es heute gibt. Ich werde mich hier einmal quer durch Asian essen! #

Twitter Updates for 2010-02-03

Raphael Vullriede February 3rd, 2010

  • Trinken mit Asiaten: Pro: sie kennen lustige Trinkspiele, kontra: sie halten Jim Beam für einen guten Whiskey :-) #
  • @SFMOMA war richtig gut, auch wenn ich ja nicht wirklich der Kunst-Mensch bin. #
  • Kamera ist auf dem Weg, ab Morgen gibts dann die ersten Bilder! #

Twitter Updates for 2010-02-02

Raphael Vullriede February 2nd, 2010

  • Das erste mal seit Ewigkeiten Bier nur gegen Ausweis: Da werde ich mich wohl dran gewöhnen müssen. #

Visum-Antragsverfahren für die USA

Raphael Vullriede December 15th, 2009

Wer, wie ich, plant für längere Zeit in die USA zu reisen, benötigt ein Visum, da das Visa Waiver Program, mit dem u.a. deutsche Staatsbürger visumfrei einreisen können, auf 90 Tage begrenzt ist. Auch wenn man (noch) keine Rückflug-Ticket hat (z.B. da der Abflugort noch nicht feststeht) oder zwischenzeitlich über die Grenze nach Canada oder Mexiko reisen möchte, ist man nicht mehr für das Visa Waiver Program qualifiziert. Man sollte sich die Bestimmungen daher im Vorfeld auf jeden Fall gut durchlesen!

Wie läuft das Antragsverfahren ab?

  • Man meldet sich unter http://www.usvisa-germany.com zum Online-Visa Informationsservice an.
  • Nach der Zahlung von $10 hat man Zugriff auf alle Bereiche und kann online alle notwendigen Anträge ausfüllen.
  • Die notwendigen Anträge (DS-156 und nur für die Männer DS-157) werden aus den eingegebenen Daten generiert und man kann sie als PDF herunterladen und speichern bzw. drucken.
  • Man vereinbart online ein Termin für das sogenannte Visa-Interview in Berlin, Frankfurt oder München.
  • Man zahlt die Visum-Antragsbebühr über die Website http://www.roskosmeier.de/ in Höhe von 91,70 EUR.

Visa-Interview, was ist das?

Um das Visum zu beantragen, muss man persönlich in einem Konsulat in Berlin, Frankfurt oder München vorstellig werden. Zu diesem Termin muss man zwingend folgende Unterlagen mitbringen:

  • Die Antragsformulare DS-156 und evt. DS-157.
  • Die Zahlungsbestätigung von Roskos&Meier.
  • Ein Foto im Format 50mmx50mm (Ein Passfoto ist nicht ausreichend, und ja: sie schicken dich mit einem Passfoto wieder nach Hause).
  • Ein Reisepass, der nach Ausreise noch min. 6 Monate gültig ist.
  • weitere Dokumente mit denen du nachweisen kannst, dass du dir die Reise leisten kannst und wieder zurück nach Hause willst (Ein Rückflugticket und/oder Familie in Deutschland können helfen).

Wie läuft der Termin ab?

  • Man sollte wissen, dass zu der angegebenen Uhrzeit mehrere Antragsteller einen Termin vereinbahr haben und daher etwas Zeit mitbringen.
  • Das Mitführen von jeglichen elektronischen Gegenständen ist untersagt! Das schließt auch Handys mit ein! Nein, man kommt mit Handys wirklich nicht rein und nein, es stehen auch keine Schließfächer zur Verfügung! (Kleiner Tipp: nicht weit entfernt ist die Bibliothek der juristischen Fakultät der freien Universität Berlin, die haben Schließfächer….)
  • Nach Passieren der Sicherheitskontrolle wird man in das eigentliche Gebäude eingelassen und dort von einer freundlichen Dame empfangen, die einem erklärt, in welcher Reihenfolge man die Dokumente zu sortieren hat. Eine weitere Frau kontrolliert die Dokumente dann auf Vollständigkeit. Hier werden die ersten bereits wieder nach Hause geschickt, z.B. aufgrund eines Fotos im falschen Format!
  • Die nächste Station kontrolliert die Anträge dann auf formale Korrektheit (Passnummer und Namen identisch mit Nummer des Reisepasses etc.). Hier gehen dann die Nächsten nach Hause. Wenn man Glück hat und hat das Foto noch nicht aufgeklebt, kann man den Antrag vor Ort an einem PC nochmals ausfüllen. Falls alles o.k. ist, darf man erstmal warten bis man namentlich aufgerufen wird.

Und das Interview?

  • Zuerst sollte man sich bzgl. der Interviews nicht verückt machen. Im Regelfall ist das vollkommen harmlos und nach ein paar Minuten positiv beendet. Der Beamte will im Wesentlichen prüfen warum du in die USA reist, ob du die finanziellen Mittel dafür hast und ob die glaubhaft machen kannst, dass du wieder nach Hause willst.
    In meinen Fall wurde der Beamte stutzig, dass ein Software-Entwickler nach San Francisco reisen möchte ohne beruflichen Hintergrund. Nach dem ich ihm versichert habe, dass ich da wirklich nicht arbeiten möchte und ganz bestimmt wieder nach Deutschland komme, bekam ich dann direkt die mündliche Zusage, dass mein Visum genehmigt ist. Weitere Unterlagen wie Rückflugticket o.ä. wollte er gar nicht sehen. Die ganze Prozedur vom ersten Anstellen bis zum genehmigten Antrag hat weniger als eine Stunde gedauert und war damit wesentlich schneller erledigt als vermutet!

Singleton-Pattern mit ActionScript

Raphael Vullriede November 30th, 2009

In einem aktuellen Kundenprojekt setzen wir im Backend wir gehabt Java EE ein, als Frontend kommt aufgrund spezieller Anforderungen ein RichClient auf Adobe AIR Basis zum Einsatz. Bei der Umsetzung hilft uns ein externer Partner, der uns im AIR Umfeld ein wenig aufmunitioniert ;-)

Bei einem Blick in die Quelltexte, die in unserem Subversion aufgeschlagen sind, bin ich über ein Konstrukt nach folgendem Muster gestoßen:

package de.vullriede {

    public class Singleton {

        private static var _instance:Singleton;

        public function Singleton(enforcer:SingletonEnforcer) {
            if (!enforcer) {
                throw new Error( "Singleton and can only be accessed through Singleton.getInstance()" );
            }
        }

        public static function get instance():Singleton {
            if(!Singleton._instance) {
                Singleton._instance = new Singleton(new SingletonEnforcer());
            }
            return Singleton._instance;
        }
    }
}

class SingletonEnforcer{}

Was die Klasse machen soll war mir schnell klar: klassisches Singleton-Pattern, allerdings auf kreative Art und Weise implementiert. Dem Konstruktor wird ein Argument übergeben, welches außerhalb des Packages deklariert ist und somit  nicht verwendbar. Es ist also nicht möglich die Klasse selber zu instanziieren; die einzige Instanz ist über getInstance() erreichbar.

In Java würde man das ähnliches mit einem privaten Konstruktor machen, der dann nur von der getInstance()-Methode benutzt werden kann:

package de.vullriede;

public class Singleton {

    private static Singleton instance;

    private Singleton() {
    }

    public static Singleton getInstance() {
        if (instance == null) {
             instance = new Singleton();
        }
        return instance;
    }
}

Google hat mich dann aufgeklärt, dass das obere Konstrukt kein schmutziger Hack ist. sondern Best Practice, da ECMAScript und damit auch ActionScript 3 keine privaten Konstruktoren kennt.
Welche Lösung eleganter ist darf jeder selbst entscheiden.

Festplatten-Verschlüsselung unter Linux/Ubuntu

Raphael Vullriede November 21st, 2009

Anlässlich des Kaufes einer externen Festplatte für mein Notebook (Plextor PX-PH500US) habe ich die Gelegenheit genutzt, mir mal die Performance verschiedener Verschlüsselungsmöglichkeiten unter Linux anzuschauen. Da eine für den Nutzer transparente Verschlüsselung des Home-Verzeichnisses möglich sein sollte, blieben nur eCryptfs und LUKS. Zusätzlich habe ich noch TrueCrypt getestet, da ich das bereits unter Windows genutzt habe.
eCryptfs und LUKS/Truecrypt benutzen unterschiedliche Ansätze wie Dateien verschlüsselt werden. Während eCryptfs tatsächlich einzelne Dateien verschlüsselt, operieren LUKS/Truecrypt auf Blocklevel. Zu Vor- und Nachteilen einfach mal Google bemühen.

Testsystem:

uname -a
Linux nexus 2.6.31-14-generic-pae #48-Ubuntu SMP Fri Oct 16 15:22:42 UTC 2009 i686 GNU/Linux
cat /proc/cpuinfo | grep "model name"
model name    : Intel(R) Core(TM)2 Extreme CPU Q9300  @ 2.53GHz
model name    : Intel(R) Core(TM)2 Extreme CPU Q9300  @ 2.53GHz
model name    : Intel(R) Core(TM)2 Extreme CPU Q9300  @ 2.53GHz
model name    : Intel(R) Core(TM)2 Extreme CPU Q9300  @ 2.53GHz
sudo hdparm -I /dev/sdb | grep Model
Model Number:       TOSHIBA MK5055GSX

Interessant, Plextor verbaut also Toshiba-Platten…

Um die Test einfach zu halten benutze ich Bonnie 1.03c . Es gibt sicherlich bessere Benchmarks aber um einen ersten Eindruck zu bekommen reicht es! Bei der Interpretation beziehe ich mich in erster Linie auf die Block-Operationen, da diese in einem echten System den Großteil des Workload ausmachen.

Zum Vergleich erstmal die Performance ohne Verschlüsselung im Auslieferungszustand, d.h. VFAT als Dateisystem:

VFAT USB 2.0

Version 1.03c       ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
bl018550         6G 28284  56 28552   7 14808   5 33960  75 34282   5 143.8   0
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
16    75  64 +++++ +++  1826  99   107  50 +++++ +++   665  96

VFAT eSATA

Version 1.03c       ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
bl018550         6G 49123  76 60099  12 30173   9 72605  94 75029  11 164.4   0
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
16    86  63 +++++ +++  1834  99   114  51 +++++ +++   675  98

Wie nicht anders zu erwarten ist eSATA in allen Bereichen um Längen besser. Interessant dabei ist allerdings die höhere CPU-Auslastung. Alle weiteren Tests wurden nur noch mit eSATA durchgeführt.

Alles erstes mal ein vernünftiges Dateisystem testen:

Ext4 eSATA

Version 1.03c       ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
bl018550         6G 53860  80 54020  10 25841   6 67645  92 73386  11 174.7   0
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++

53,8MB/s schreiben und 73,4MB/s lesen, nicht schlecht! Auf jeden Fall besser als meine interne Festplatte :-)

Zuerst zum Vergleich eCryptfs:

Ext4 eCryptFS eSATA

Version 1.03c       ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
bl018550         6G 29381  97 48973  97 21543  57 46309  97 73448  71 112.2   1
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
16  4846  52 +++++ +++ 25089  89  9856  96 +++++ +++  4622  13

Es bleiben 48,9MB/s schreiben und 73,4MB/s lesen bei deutlich höherer CPU-Auslastung. Weiterhin sind die Seeks/s deutlich zurückgegangen. Der Performance-Verlust ist allerdings nicht so hoch wie erwartet.

Ext4 LUKS (aes-xts-plain, 256Bit, cryptsetup 1.0.6)

Version 1.03c       ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
bl018550         6G 51435  77 49828   8 27971   7 52273  76 73933  10 167.7   0
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++

49,8MB/s schreiben, 73,9MB/s lesen. Die Werte sind somit nahezu gleich zu eCryptfs, trotz vollkommen unterschiedlicher Ansätze. Allerdings ist die CPU-Auslastung gerade mein Lesen deutlich geringer und es sind mehr Seeks möglich.

Ext4 TrueCrypt eSATA (AES 128Bit, RIPE-160, TrueCrypt 6.3)
Da der TrueCrypt-Wizard auch in der aktuelle Version noch kein Ext4 kennt musste ich das Dateisystem von Hand anlegen, wie zu Beispiel hier beschrieben.

Version 1.03c       ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
bl018550         6G 50909  84 52487   8 27557   6 41492  85 74252  12 174.3   0
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
16 +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++ +++++ +++

52,4MB/s schreiben und 74,2MB/s lesen. Schreiben und Seeks/s sind hier also fast genauso schnell wie ohne Verschlüsselung.

Fazit:

  • Verschlüsselung muss kein Performancefresser sein (Vorausgesetzt man hat eine CPU dafür über ;-) )
  • Schreiboperationen sind bei allen Lösungen zwar langsamer als ohne Verschlüsselung, ob der Unterschied in der Praxis allerdings eine Rolle spielt sei dahingestellt.
  • eCryptfs hat leichte Nachteile gegenüber Mechanismen die auf Blocklevel-Ebene arbeiten. Dafür ist die Integration in Ubuntu deutlich besser und man kann die verschlüsselten Dateien einfacher sichern.

« Newer Entries