Mit GIT und Ramaze zum Ziel
vom 11. June 2009Wer mich kennt, weiß dass Ruby seit ein paar Jahren meine Lieblingsprogrammiersprache ist. Da ich zur Zeit durch das Praxissemester bei IBM täglich mit PHP und dem Zend-Framework arbeiten muss, tut es richtig gut, privat mit Ruby zu programmieren. Im Webbereich ist RubyOnRails ja mittlerweile zu einem quasi-Industriestandard geworden. Mir ist das Framework aber zu groß, zu aufgebläht, zu schwerfällig und komplex. Deshalb hab ich mich - mal wieder - auf die Suche nach einem für mich besseren Web-Framework gemacht und bin auf Ramaze gestoßen. Ideal für mein aktuelles Projekt (von dem ich bald berichten werde).
Ramaze ist wirklich nur ein Framework zur Entwicklung, nichts anderes. Es steht jedem Entwickler frei, welchen Server, welche DB-Schnittstelle und welche Template Engine man verwenden möchte. Der SourceCode ist super dokumentiert und durchgetestet. Aber das Beste an diesem Framework ist die Community und die Entwickler selbst. Ich hatte zu Beginn ein paar Anlaufschwierigkeiten, die ich im IRC innerhalb von ein paar Minuten gelöst bekam.
Beim Programmieren habe ich einen kleinen Bug gefunden, der eigentlich schnell behoben war. Auf der Seite fand ich leider kein Bug-Tracker o.ä., also beschloss ich mit der Anleitung ein Patchfile zu generieren. Nachdem ich den Patch an manveru im IRC geschickt hatte, war er 10 Minuten später im trunk eingeflochten. So macht das Spaß!
Bisher bin ich mit Subversion als Versionsverwaltung immer gut gefahren, auch wenn viele nicht damit zurechtkommen oder darüber fluchen. Doch GIT wird mir von Tag zu Tag sympathischer.
Kommentar schreiben,
del.icio.us
Legacy-Systeme mit mod_rewrite fixen
vom 18. March 2008Altanwendungen zu betreuen ist oft nicht einfach, bei Webanwendungen wird es meist noch umständlicher und niemand macht es gerne. Wenn man beispielsweise die Blogsoftware wechselt, auf ein CMS-System wechselt oder gar die neue Version selbst programmiert hat, stimmen die alten URLs nicht mehr. Das ist besonders ärgerlich, wenn die alte Seite viele Backlinks hatte, die nach dem Umzug nicht mehr funktionieren.
Ein Beispiel: In der alten Anwendung sahen die URLs so aus: http://example.com/blog/index.php?id=123. In der neuen Software sieht die URL, die zum gleichen Content führt, anders aus: http://example.com/123-meine-neue-webseite.
Was also tun? Es hinnehmen? Das alte System parallel weiterlaufen lassen, nur damit die Links noch stimmen? Zu umständlich. Aktuelle Webserver bieten die Möglichkeit an, URLs mit Hife von mod_rewrite intern umzuschreiben. Dieses Feature wird meistens dafür verwendet um die URLs einfacher, verständlicher und "sicherer" zu machen.
Diese Funktionalität kann man auch dafür verwenden um das Altsystem zu "faken". Hier eine Lösung in Lighttpd für das obige Beispiel (Voraussetzung hierfür ist natürlich, das die neue Blogsoftware die Seite nur anhand der ID auswählt und nicht zusätzlich am Seitennamen):
url.rewrite-once(
"/blog/index\.php\?id=([0-9]+)." => "/$1-old-url")
Alles was in der Form /blog/index.php?id=xxx am Webserver eintrifft wird auf das neue URL-Schema umgeformt. So erhält man seine alten URLs weiter am Leben, ohne das sie weiter existieren müssen.
Was aber tun wenn man keine Verknüpfung zwischen alter und neuer URL herstellen kann? Dies passiert beispielsweise dann, wenn man im neuen System die Seite nicht anhand der ID sondern anhand des Seitennamens auswählt (/blog/meine-neue-webseite z.B.). Hier führt kein Weg an einem kleinen Hilfsscript vorbei das die fehlende Verbindung wieder herstellt. Im obrigen Beispiel müssten wir eine Beziehung zwischen der ID und des Seitennamens herstellen. Ein einfaches PHP-Script könnt so aussehen:
$row = $sql->query(
"SELECT url_name FROM entries WHERE id=?",
$_GET['id']);
header("LOCATION: /blog/".$row->url_name);
Das kleine Script sucht den Seitennamen anhand der ID raus und leitet dann an diese weiter. Die Regel für mod_rewrite würde dann so aussehen:
url.rewrite-once(
"/blog/index\.php\?id=([0-9]+)." => "/legacy.php?id=$1")
Hat die neue Seite den Content der alten Seite nicht mehr, kann man diese Technik auch dazu nutzen um die alten URLs auf eine Übersichtsseite oder eine spezielle "existiert nicht mehr"-Seite umzuleiten.
Kommentar schreiben,
del.icio.us
Mehr HASS!
vom 2. March 2008Der (jetzt nicht mehr ganz) King of the Internet Zed Shaw fordert mehr Hass für das Internet. Schluss mit den braven Protokollen die jeden Schrott zulassen und Servern die alles akzeptieren müssen. Weg mit den Mailservern die jede Spammail mit einem höflichen HELO entgegennehmen. Jeder der in irgend einer Weise Müll von sich gibt wird gnadenlos in die Fresse geschlagen und für alle Ewigkeit gebrandmarkt.
Auf savingtheinternetwithhate.com beschreibt er sein neues Vorhaben Utu mit recht eindeutigen Worten.
The Internet needs more hate. Much more. We’re overrun by morons, assholes, griefers, spammers, porn peddlers, Nazi dictators, little Napoleons, and arbitrary censors who only behave in their socially deficient manner because they know you can’t do anything about it. [...]
In den Griff kriegen will er das durch ein neues Protokoll das einer sicheren Benutzeridentifizierung, einem Bewertungsschema und einem Bestrafungsmechanismus zugrunde liegt. ("[...] The Internet needs identity, reputation, and retribution. [...]").
Nun frage ich euch: Was haltet ihr davon? Soll das Internet mehr einem digitalen Abbild der realen Welt gleichen ("[...] In the real world you would tell them to screw off personally. You’d call the police. You’d move to the other side of the room and tell all your friends to ignore them. You’d punch them in the face for the things they said about you and your family. [...]") oder kann das Internet nur dann weiter bestehen, wenn jeder gleichberechtigt behandelt wird egal was er anstellt und jeder tun und lassen kann was er will?
Sinnloses Stöckchen, Level 16
vom 7. February 2008Über eine lange, verworrene Bloggerkette bin ich über Markus auch ein Teil des sinnlosen Stöckchen geworden. Die Aufgabe:
- Nimm das nächste Buch in deiner Nähe mit mindestens 123 Seiten.
- Schlage Seite 123 auf.
- Suche den fünften Satz auf der Seite.
- Poste die nächste drei Sätze.
Das "näheste" Buch ist bei mir gerade "Generative Programming" von Czarnecki und Eisenecker:
It also states that important issues should be represented in programs intentionally (i.e., explicitly, declaratively, and with little or no "extra noise") and should be well localized. This facilitates unserstandability, adaptability, reusability, and the many other good qualities of a program because intentionality and localisation allow us to easily verify how a program implements out requirements. Unfortunately, the relevant issues are usually mutually dependent and overlapping because they all concern one common model (i.e., out program being constructed). Thus, if we try to represent all these issues explicitly and locally, we will introduce a lot of redundancies.
An meinem Nachttisch liegt grade "Getting Things Done" vom Großmeister David Allen. Auf Seite 123 steht:
You may find you have a tendency, while processing your inbasket, to pick something up, not know exactly what you want zo do about it, and then let your eyes wander into another item fatther down the stack and get engaged with it. That item may be more attractive to your psyche because you know right away what to do with it - and you don't feel like thinking about what's in you hand. This is dangerous terretory.
Und ganz im Sinne von "Dont Break the chain" reiche ich das Stöcklein weiter an Andreas, Florian, Rubn und kb.
Kommentar schreiben,
del.icio.us
Sammelkiste
vom 21. December 2007Dinge, über die ich bloggen wollte, aber nicht dazugekommen bin:
UnitTests mit Mocks: Anhand eines IRC-Clients wird demonstriert wie man mit einem Mock-Objekt den Gegenpart (den IRC-Server) simulieren kann. Klick
NetBSD 4.0 ist drausen. Auch sowas das ich mir schon lange mal näher anschauen wollte, bisher hat es allerdings nur zu einer kurzen Testinstallation gereicht. Klick
Linus Torvalds verteidigt Linux und gibt Solaris den Abschuss. Hey, that's not a bug, that's a FEATURE!. Klick
Bash bunter machen. Wem es gefällt: Klick
Anzeichen dafür, dass man ein schlechter Programmierer ist: Klick
Die Gesichter hinter der großen Software-Gurus. Ziemlich lustige Zusammenstellung. Klick
Raumschiffe basteln für Anfänger und Freaks. Es gibt sogar einen (sehr teuren) Bausatz für die Serenity. Klick
Gedicht-Generator der Spitzenklasse. Was haben wir gelacht :) Klick
Phing 2.3 heute?
vom 2. November 2007Gerade habe ich über die Phing-dev Mailingliste erfahren, das das 2.3er Release kurz bevorsteht. Offene Bugs gibt es keine mehr. Der Branch ist im SVN schon erstellt, es fehlt also nur noch das Zusammenschnüren der Pakete.
Die wichtigsten Änderungen sind:
- PHPUnit3 support
- Der Task "phpdoc" unterstützt jetzt neben <
- Es werden nun Streams für die komplette Ausgabe und das Logging verwendet.
- ... und viele weitere kleinere Features wie der überarbeitete move-task, und eine Menge BugFixes.
Die nächsten (schon heiß diskutierten) Schritte werden vermutlich die Unterstützung bzw. den Umstieg auf PHP6 sein, zudem wollen die Entwickler den kompletten Code mit den in PHP6 kommenden Namespaces ausstatten.
Kommentar schreiben,
del.icio.us
Sonntägliches Link-Mashup
vom 28. October 2007The Future of Software Development Warum das Wasserfallmodell gescheitert ist und warum ein paar einzelne Webseiten programmieren, die Millionen nutzen, alles gewürzt mit einer Hand voll BuzzWords.
Understanding Ruby blocks, Procs and methods Blocks, yield, lambda und high-order-function einmal richtig erklärt. Die Kommentare sind auch sehr aufschlussreich.
Execution in the Kingdom of Nouns Java-Bashing at its best. Warum im Javaland die Verben von den Hauptwörtern beherrscht werden.
Design by Metaphor Warum kunden bei der Projektplanung gerne Vergleiche oder "Referenzen" zur Beschreibung von Features nutzen und wo die Gefahren liegen. "Just like eBay" is not enough!
Kommentar schreiben,
del.icio.us
Radiohead "In Rainbows"
vom 10. October 2007Heute wurde mir das neue Album "In Rainbows" von Radiohead kostenfrei per E-Mail ausgeliefert. (Wer es nicht mitbekommen hat: Das Album konnte für einen Betrag den man selbst wählen konnte, online bestellen) Leider ist kein Cover dabei, aber das Album an sich ist nach dem ersten Durchhören wirklich verdammt gut! An die anderen Bands und Plattenlabels: Nachmachen!
Here we are again
vom 7. October 2007So, ich habe es nur endlich geschafft, mein altes Blog durch die neue Seite abzulösen. Es sind noch ein paar Bugs drin, die ich aber die nächsten Tage fixen werde. Die Kommentare, sowie die Kategorien konnte ich leider nicht migrieren, tut mir leid dafür. Auch fehlen noch einige geplante Features wie eine Trackback-Funktion und einen RSS-Feed für die Kommentare.
Unter Projekte werden und Zukunft meine laufenden und schon abgeschlossenen Projekte auftauchen. Unter Artikel versuche ich meine schon geschriebenen Artikel und Übersetzungen einzupflegen und neue zu schreiben. Es lohnt sich also den RSS-Feed zu abbonieren.
Wer noch ein tolles Zitat für den Header hat, würde ich mich über einen Kommentar sehr freuen :)
Kommentar schreiben,
del.icio.us
1