Ruby on Rails ... oder was?
Ruby on Rails (RoR) macht in letzter Zeit immer öfter von sich reden - und wenn man sich umsieht, findet man immer mehr gutgelaunte Menschen, die jetzt wegen RoR noch viel besser gelaunt sind. Vorbei die Zeit, als man für ein neues Webprojekt 70% des Codes mal wieder schreiben mußte, obwohl man ihn in 10 anderen Projekten auch schon genutzt hat - nur in einer etwas anderen Weise, so daß ein erneutes Programmieren ähnlich oder weniger aufwendig ist als den alten Ansatz anzupassen.
Dabei macht man im Grunde genommen bei vielen Webprojekten immer wieder das gleiche. Ruby on Rails ist ein geschickt zusammengeschustertes Framework, das jede Menge Automagic beherrscht. Anstatt viele Dinge wieder einmal zu tun ist es eine Art installierbares Framework, das mit so gut wie keiner Konfiguration auskommt, nicht zuletzt auch weil es sich an das MVC Prinzip (Model-View-Controller) und auch konsequent an DRY (Don't repeat yourself) hält.
Ruby mag für Ruby-Fans eine schöne Sprache sein, aber gibt es denn vergleichbares auch für andere Sprachen?
Das Gute ist, es gibt solche Frameworks für PHP, Python und auch andere Sprachen die für die Webprogrammierung verwendet werden. Alle Frameworks machen einen mehr oder weniger guten Eindruck, aber keines davon scheint an RoR ran zu kommen.
Wer sich näher mit dem Prinzip MVC für Webanwendungen beschäftigen will ohne gleich eine neue Sprache zu lernen, dem kann ich schon mal ein paar Einstiegspunkte nennen, denn es gibt auch ganz gute Frameworks für PHP und Python:
MVC Frameworks für und in PHP:- CakePHP (http://cakephp.org/): Steckt noch in den Kinderschuhen, beherrscht die grundlegenden Dinge, die man für eine MVC-Implementierung braucht. Da dieses API aber noch jung ist und rasant wächst, würde ich es noch nicht produktiv einsetzen. Die Modelle müssen auch derzeit noch selbst in die Datenbank implementiert werden, die meisten RoR-Nachfolger generieren zumindest den benötigten SQL-Code dafür. Ein Vorteil von CakePHP ist, daß es auch noch mit PHP4 funktioniert.
- PHP on Trax (http://phpontrax.com/): Vielversprechend, steckt aber auch noch tief in der Entwicklung. Eine Dokumentation ist so gut wie nicht vorhanden, jedoch kann es schon die eigenen Modelle generieren um sie in die Datenbank zu bringen. PHP on Trax benötigt zwingend PHP5 und PEAR.
- Solar (http://www.solarphp.com/): Auch Solar befindet sich noch in der Entwicklung, erscheint aber schon recht weit fortgeschritten zu sein. Immerhin gibt es eine halbwegs brauchbare Dokumentation für den Einstieg und eine gute Dokumentation der API. Solar benötigt zwingend PHP5 und PEAR. Es läßt sich auch direkt per PEAR-Channel installieren.
MVC Frameworks für und in Python:
- Django (http://www.djangoproject.com/): Django hat bereits zwei Jahre Entwicklung hinter sich und erscheint als stabiles, sehr gut dokumentiertes Framework das selbst Einsteigern schnelle Ergebnisse ermöglicht. Die API ist hervorragend dokumentiert. Es erzeugt selbständig aus den definierten Modellen die Datenbank. Als Entwicklungsserver beinhaltet Django einen eigenen Webserver, der im Produktivbetrieb gegen Apache mit mod_python ausgetauscht werden kann. Es integriert sich nahtlos in die vorhandene Apache-Installation. Django ist im Grunde genommen das, was man sich wünscht.
- TurboGears (http://www.turbogears.org/): TurboGears tritt an als fast fertiges Framework, das mehrere Open-Source Programme zu einem MVC-Framework verbindet. Die Dokumentation ist gut für den Entwicklungsstand. Ein eigenes Marketing-/Howto-Video erleichtert es dem Einsteiger eine Idee zu bekommen, wie man mit dem Framework arbeitet.
Um herauszufinden, was wirklich am Hype dran ist habe ich mit Django in Python ein wenig experimentiert und war überrascht, mit welch geringem Aufwand ich schon brauchbare Ergebnisse bekam. Doch dazu bei Gelegenheit in einem Beispiel mehr...
Mein Fazit dabei ist gespalten. Einerseits freue ich mich zu sehen, daß auch die Open-Source Alternativen Innovationen bringen, die man von kommerziellen Anbietern noch nicht gesehen hat. Andererseits steckt vieles davon noch in den Anfängen und man muß sehen, wie sich die Frameworks in den nächsten Monaten entwickeln. Speziell die PHP-Frameworks scheinen alle durchweg unausgereift und leider produktiv noch nicht einsetzbar zu sein. Die Python Frameworks sind deutlich mächtiger und erwachsener, insbesondere Django, das als ernste Konkurrenz zu Ruby on Rails gesehen werden darf. Bei den meisten Webhostern dürfte zwar PHP installiert sein, aber mit Python (oder mod_python) oder Ruby dürfte die Auswahl geringer sein.
Browser-Tabs vom 6. Oktober 2005
- http://www.tomschroeter.de/Bali/Bali.html Ein guter Reisebericht über Bali.
- http://wxpython.org/docs/api/wx.ProgressDialog-class.html Wie man in wxPython einen ProgressDialog mit allem Firlefanz in 30 Sekunden baut.
- import wx
- a = wx.App(0)
- dialog = wx.ProgressDialog(titel, beschriftung, maximalwert, parent_objekt, wx_style)
- dialog.Show(True)
- for i in range(100):
- dialog.Update(aktuellerwert, newmsg="NeueBeschriftung")
- dialog.Destroy()
- http://www.dzug.org/organisation/ Deutsche Zope 3.0 Community. Ach, habe ich schon erwähnt, daß Zope 3.0 final released wurde?

- http://www.little-idiot.de/ Ein paar sehr brauchbare Tutorials zu PHP, MySQL, Arbeiten im Team bei der Entwicklung von OpenSource Software.
Cobol und die moderne Welt

Zufällig liefen mir heute Daten über den Weg, die aus einem in Cobol geschriebenen und zugegeben schon etwas älteren Programm stammen. Beim auseinandernehmen der Datenstrukturen stieß ich auf einen für mich ziemlich seltsam anmutenden Datentyp: comp-3.
Stell dir vor, du hast eine gegebene zahl 1234567, die du comp-3 codiert speicherst. Du gibst also 1234567 rein und kriegst hexadezimal 0x12, 0x34, 0x56, 0x7c raus.
Der Aufbau ist an sich recht leicht: Man packt jeweils eine Ziffer in ein 4-bit nybble (also ein teil-byte) und hängt ganz am Schluß noch mal in 4 bit ein "0xC" für positiv oder ein "0xD" für negativ an. Klingt logisch, nicht? Diese Komprimierung stammt noch aus der Zeit, als Speicher wirklich kostbar war, aber mußte man ausgerechnet so speicherplatz sparen?
Zum Glück gibt's heute Internet und immer ein paar Informationen zu seltsamen Datentypen im Netz zu finden ([1], [2]).
Einen schnellen Hack in Python zum Umwandeln nach Signed Integer stell ich mal rein, vielleicht brauchts irgendwann noch mal jemand:
- def comp3_to_signed_int(comp3):
- rnum = ""
- for nybble in comp3:
- inum = str(hex(ord(nybble)))
- inum = inum[2:]
- inum = inum.rjust(2, "0")
- rnum += inum
- if rnum.endswith("d"):
- rnum = rnum[:-1] * -1
- else:
- rnum = rnum[:-1]
- return rnum
Browser-Tabs vom 2. Oktober 2005
Browser Tabs an sich sind ja eine wirklich feine Sache. Einen Nachteil in Verbindung mit gespeicherten Sessions (Opera oder Firefox-SessionSaver) haben sie allerdings: Sie neigen dazu, sich zu vermehren, weil man die guten Dinge gerade auf läßt um sie bei Gelegenheit mal zu lesen und zu verarbeiten (also irgendwas mit ihnen anzustellen). Bei mir haben sich nun wieder so einige Tabs angesammelt, die ich ungerne verlieren würde. Also verewige ich sie in Ablage "Blog" und kann dann, sollte ich das jemals wieder tun wollen, auch später noch mal darauf zurückgreifen. Aber zuerst befreie ich meine Tableiste...
- http://jeenaparadies.net/weblog/ Ein Weblog mit interessantem Design.
- http://www.spiegel.de/spiegel/0,1518,377478,00.html Ein Artikel über die Vorgänge an deutschlands Autobahnen, genauer gesagt zwischen Verpächter und Pächtern der Tank+Rast Kette.
- http://www.spiegel.de/reise/fernweh/0,1518,377552,00.html Reisebericht über die Route 66.
- http://googleblog.blogspot.com/2005/09/illuminated-continent.html Google Earth zeigt Informationen über Afrika an, die direkt aus der National Geographic stammen. Interessant für Fans von Google Earth oder National Geographic.
- http://www.w3junkies.com/toocool/join.php Kennzeichne deine Website als zu cool für den Internet Explorer. Nicht von dieser Welt.
- http://www.derekdevries.com/amici/patterns/ Software Design Patterns für PHP.
- http://www.dynamicwebpages.de/tutorial/ Stattliche Sammlung an Tutorials für PHP.
- http://www.spiegel.de/spiegel/0,1518,377520,00.html Artikel über die Illuminaten und deren Entstehung.
- http://members.chello.nl/f.niessink/download.html TaskCoach 0.50 erschienen.
Serendipity 0.9 (dieses Blog wird damit betrieben) ist