Why are the programmers … ?
Posted on 23.09.2009 by tc77
Mit “The Tao of Programming” spricht Geoffrey James wahrscheinlich vielen Software-Entwicklern aus der Seele.
Why are programmers non-productive?
Because their time is wasted in meetings.Why are programmers rebellious?
Because the management interferes too much.Because they are burnt out.
Having worked for poor management, they no longer value their jobs.Why are the programmers resigning one by one?
– Geoffrey James, “The Tao of Programming”
20. Kölner Webmontag
Posted on 22.09.2009 by tc77
Auf der Schwelle zum vierjährigen Jubiläum hat sich am gestrigen montag Abend die Kölner Webgemeinde zum 20. Mal auf dem Webmontag zusammengefunden.
Das Themenspektrum war wie immer breit gefächert und reichte von server-seitigem Javascript bis hin zum Thesenpapier der KölnSPD zum Thema “Internetstadt Köln”.
Ryan Dahl nutzte seine 10 Minuten zur Vorstellung von node.js, einem Framwork zur Entwicklung von ereignisbasierten Anwendungen in JavaScript auf Basis von Googles V8 JavaScript Engine. In Vergleich zu verwandten Projekten wie helma soll node.js durch Skalierbarkeit und Geschwindigkeit bestechen. Nach Aussage von Ryan existieren derzeit jedoch noch keine Produktivsysteme auf Enterprise-Niveau, die es zu bestaunen gäbe.
Ganz entspannt ging es bei Sebastian Cohnen auf der CouchDB zur Sache, welcher die Vorzüge dieses dokumenten-basierten Mobiliars vorstellte. Die CouchDB ist ein in Erlang realisiertes Datenbanksystem, welches durch Einfachheit, Robustheit und Skalierbarkeit glänzt, so Sebastian. Einfachheit deshalb, weil sie zum Einen schemafrei sei und zum Anderen sämtlich Anfragen an die Datenbank in Form von RESTful-JSON-Anfragen gestellt würden, was nahezu jeden Browser zu einem Datenbank-Klienten mache. Die Auszeichnung “robust” verdanke CouchDB der Tatsache, das der Datenbestand, selbst nach einer abrupten Unterbrechung durch beispielsweise einem Stromausfall, nicht korrumpieren würde. Und auch beim Thema Skalierbarkeit soll die CouchDB gegenüber bekannten Master-Slave-Strukturen die Nase vorn haben, da sie zwischen einer beliebigen Anzahl von CouchDB-Instanzen repliziere und synchronisiere.
Mit jQuery UI begab sich Jörn Zaefferer auf das Paket des Webmontags. Als führender Entwickler stellte er in wenigen Zügen die Vorzüge der auf jQuery basierten Interface-Bibliothek vor. Jörn gab dabei einen Einblick in die bereits existierenden Plug-Ins aus den Bereichen “Interactions”, “Widgets” und “Effects”, aus welchen sich die Bibliothek zusammensetzt. Vom “Accordion” über den “Slider” bis hin zum “Datepicker” böte jQuery UI so ziemlich alles, was das Web begehrt. Darüber hinaus zeigte er noch den”ThemeRoller“, der es dem Entwickler ermögliche die einzelnen Element nach seinem belieben farblich anzupassen.
Mit dem Thesenpapier zur Internetstadt-Köln von SPD-Fraktionschef Martin Börschel hat Valentina Kerst den Webmontag bereichert und sogleich eine eifrige Diskussion ausgelöst.
Als Botschafter der cloudControl Unternehmergesellschaft stellte Philipp Strube das hauseigene Produkt vor, das eine kostengünstige Lösung zum Betrieb von hochperformanten, skalierbaren und wartungsfreien Webanwendungen sei. Mit Hilfe nur weniger Befehle an der Kommandozeilen sollen sich in wenigen Minuten Anwendungen für verschiedene Umgebungen, wie Staging, Testing, etc., erstellen und verwalten lassen.
Alles in Allem war es wieder ein gelungener und interessanter Montagabend in sehr netter Gesellschaft. Weiter so!
Einfacher Dateitransfer mit netcat
Posted on 03.09.2009 by tc77
Da sitze ich also im lokalen Netzwerk und möchte eigentlich nur die ein oder andere Datei zwischen den vorhandenen Gerätschaften austauschen. Kein Problem, wie man meinen sollte, aber zu meiner Linken steht ein Linux-Client, auf der Rechten ein Mac OS X-Client und mittendrin werkelt eine kleine SoHo Netzwerk-Festplatte von Phillips namens SPD8020. Die SPD8020 basiert auf einem abgespeckten Linux und einer Sammlung PHP-Skripte. Die Installation von FTP-, SMB- oder NFS-Servern erscheint mir zu aufwendig für den Transfer von ein paar Dateien.
Während der Linux- und Mac OS X-Client über ein vollwertiges Kommando-Arsenal verfügen steht auf der Netzwerk-Festplatte nur ein sehr eingeschränkter Befehlssatz zur Verfügung.
Die Lösung heisst wieder mal “netcat” und ermöglicht die Kommunikation zwischen zwei Geräten auf Basis des TCP- bzw. UDP-Protokolls.
Push
In dem als “Push” bezeichneten Verfahren baut der Sender eine Verbindung zum Empfänger auf. D.h. netcat wartet am Port 7800 auf eingehende Verbindungen und schreibt die empfangenen Daten in die Datei filename.out.
# Empfänger
$ nc -l 7800 > filename.out
# Sender
$ nc hostname 7800 < filename.in
Pull
In diesem Szenario baut der Empfänger eine Verbindung zum Sender auf. D.h. netcat bietet auf dem Port 7800 die Datei filename.out zum Transfer an und wartet auf eine Anfrage vom Empfänger.
# Sender
$ nc -l -p 7800 < filename.out
# Empfänger
$ nc -w 10 hostname 7800 > filename.in
Push vs. Pull
Was macht das nun für einen Unterschied, ob Push oder Pull?! Im lokalen Netzwerk unter den oben genannten Umständen wahrscheinlich keinen, aber in der freien Wildbahn im Schatten von Firwalls und Paketfiltern macht das durchaus einen Sinn.
Ein Szenario: Man sitzt im Büro und möchte gerne eine Datei von einem Rechner im Internet herunterladen. Leider lässt die Firewall des Büros keine eingehenden Verbindungen zu und sperrt diese. Ein “Push” ist demnach nicht möglich, da in diesem Falle der Rechner im Internet versuchen würde eine Verbindung zu dem Rechner im Büro aufzubauen. Es bleibt also nur noch die Möglichkeit des “Pull”, bei welchem der Rechner im Büro eine Verbindung zu dem im Internet aufbaut und sich die Datei “zieht”.