// der php hacker

// archiv

Frankenstein spielen: Objektmutation mit PHP

Geschrieben am 14. Mai 2009 von Cem Derin

Wagen wir Heute ein Experiment: Ich möchte eine Instanz einer beliebigen Klasse mutieren lassen. Und zwar so, dass am Ende eine Instanz einer vollkommen anderen Klasse dabei herauskommt – die Daten aber immer noch die selben sind.

Wozu man das brauchen könnte? Nehmen wir einfach mal an, wir verwenden eine Bibliothek. Eine Klasse dieser Bibliothek leiten wir ab und fügen ein oder mehrere Methoden hinzu. Korrespondierende Klassen aus der Bibliothek allerdings geben immer eine Instanz der Ursprungsklasse zurück. Wir müssten nun also alle Methoden in denen das der Fall ist kopieren, und die Ursprungsklasse durch unsere Ableitung ersetzen.


// mehr lesen

Kennst du Entwickler, die besser sind als du?

Geschrieben am 24. Mrz 2009 von Cem Derin

Ich habe einen Artikel gelesen, auf den ich mit mehr als nur einem Twitter-Link eingehen will: Are You The Best Developer You Know? Dustin erklärt dort, dass er sich immer für die Jobs entscheidet, wo er das meiste lernen kann bzw. wo er am meisten gefordert wird. Wie auch ich lernt Dustin beim Arbeiten – also bei der Anwendung einer neuen Technik, einer neuen Bibliothek, eines neuen Frameworks, etc. Bei mir ist es sogar so, dass ich ohne realen Einsatzfall nicht wüsste, was ich überhaupt entwickeln sollte – Jenseits von “Hello, World!”.

Alerdings finde ich die Aussage, dass man sich einen Job suchen sollte, in dem man mit Leuten zu tun hat, von denen man etwas lernen kann ziemlich interessant. So ist es – zumindest in Deutschland – doch eher so, dass die Leute sich Job gerne dannach aussuchen, was sie selbst können um zumindest nicht als derjenige da zu stehen, der am “wenigsten” kann.

Das bedeutet jedoch, dass man sich selbst daran hindert sich zu entwickeln; darüberhinaus läuft man auch Gefahr dem Irrglauben zu unterliegen, dass man das gar nicht mehr nötig habe – immerhin sind die anderen ja noch schlechter. Was dabei rauskommt kann man sich denken: Schlechte Software, schlechte Entwickler. Das wird sich auch nicht mehr ändern, denn tatsächlich gute Entwickler werden kein Interesse haben, diesem Team beizutreten. Alles in allem tritt hier ein Ähnlicher Effekt ein wie beim Anti-Pattern des Programmer Experience Clumping.

Daher mein abschließender Rat: Versucht immer darauf bedacht zu sein, von Kollegen lernen zu können. Das ist nicht nur persönlich fördernd, sondern sorgt auch für eine ganz andere Arbeitsmoral. Darüberhinaus auch ein Aspekt was Selbstmotivation angeht. Aber dazu habe ich Morgen noch einen Artikel für euch parat ;-)

Mein Arbeitsplatz (oder: Dinge die man nicht mehr missen will, Teil 2)

Geschrieben am 22. Mrz 2009 von Cem Derin

Ich möchte heute mal meiner exhibitionistischen Ader freien Lauf lassen, und euch einen Blick auf meinen Arbeitsplatz erlauben. Keine Sorge, ihr werdet hier keine Fotos von meinem Schreibtisch bekommen, auf dem ich mit meiner handvoll Cinemascope-LCDs protze, meine Designerleuchte zur Schau stelle oder meine teuren Gadgets prominent positioniere. Nein, mir gehts es um die inneren Werte: Was nutze ich für Software. Dabei überschneidet sich das, was ich privat bzw. zu Zeiten als freiberuflicher Entwickler einsetzte bzw. einsetze und was beruflich auf den Desktop kommt zum allergrößten Teil. Daheim lege ich ein bisschen mehr Wert auf Open Source (auch wenn ich hier kein Dogmatiker bin). Im beruflichen Alltag kann – und will – man das nicht immer. Wie dem auch sei …


// mehr lesen

Meine Backup-Nemesis

Geschrieben am 18. Mrz 2009 von Cem Derin

Ich gebe es zu: Ich bin eine Backup-Niete. Ich lege Backups immer nur sporadisch, schlampig und hastig an. Und meistens arbeite ich an dieser Strategie nur, wenn ich einmal auf Backups angewiesen war und – Überraschung – keine zur Verfügung hatte. Beruflich ist das kein Problem: Da übernehmen andere Leute die Arbeit für mich. Leute, die Ahnung von dem haben was sie tun – und keine Ahnung von dem was ich tue. Aber privat ist und war das schon immer ein Problem (vor allem in meiner Freelancer-Zeit).

Ich muss allerdings dazu sagen, dass ich mich immer irgendwie aus dem ärgsten rauswinden konnte. Quelltexte hatte ich verstreut zwischengelagert und konnte das meiste innerhalb einer angemessenen Zeitspanne wieder zusammenklauben. Layouts waren irgendwo mal als eMail verschickt worden, wenn auch in früheren Versionen. Und eMail-Korrespondenz hat man durch Weiterleitungen ohnehin auf mehreren IMAP-Servern.

Da ich in vielen Bereichen meines digitalen Lebens ein pedantisches Arschloch bin und auf meinem Desktop mehr Ordnung herrscht als in meiner WG-Stube, meine MP3’s wie meine Platten penibel nach Jahrgang und Genre Sortiert sind, ist mir das Thema Backups immer ein übles Dorn im Auge gewesen und befleckte meine ansonsten blütenweiße Nerdweste. Aus diesem Grund will ich mal meine (laut Feedbruner nicht mehr so kleine) Leserschaft zu rate ziehen, und mir ein paar Best Practices für “Desktop”-Backups abholen. Evtl. gibt es ja auch ein paar Buchempfehlungen o.ä. ;-)

Ich freue mich schon.

Conventions over configuration

Geschrieben am 13. Feb 2009 von Cem Derin

Derzeit lese ich Agile Webdevelopment with Rails. Das Buch ist zwar von 2006, aber mir ging es auch in erster Linie um das Prinzip von Ruby on Rails. Wie dem auch sei, keine Sorge, ich werde jetzt nicht über Ruby berichten oder gar komplett auf Ruby umsteigen (obwohl ich gerne was produktives mit Rails bauen würde, hehe). Es geht mir viel mehr um eines des Kernprinzipien von Ruby on Rails: Conventions over configuration.

Dieses Grundprinzip ist das, was Ruby eigentlich so bekannt gemacht hat. Was dafür gesorgt hat, dass man eine Applikation mit Rails in wenigen Minuten aufbauen kann (Scaffolding) und nur noch der Feinschliff gemacht werden muss. Aber was bedeutet conventions over configuration genau und wie kann man es auf PHP anwenden?


// mehr lesen

Von Foo, Bar und Fnord

Geschrieben am 26. Jan 2009 von Cem Derin


Jeder kennt sie, viele benutzen sie. Aber woher kommen eigentlich Hello World, asdf und 42? Diese Frage möchte ich heute beantworten, auch wenn das nur indirekt mit PHP zu tun hat. Ein bisschen Hintergrundwissen hat noch niemandem geschadet ;-)


// mehr lesen

“Alles ist eine Klasse”

Geschrieben am 18. Jan 2009 von Cem Derin

bricks

Vorweg die gute Nachricht: Objektorientierung hat sich in der PHP-Welt durchaus durchgesetzt. Große Projekte werden immer öfter Objektorientiert angegangen, es werden Design Pattern umgesetzt und PHP spielt einem mit jeder neuen Version mehr und mehr in die Hände. Frameworks wie das Zend Framework oder CakePHP tragen ihren Teil oftmals dazu bei.

Kommen wir aber zur schlechten Nachricht: Die Klassenabstraktion wird oftmals nicht sehr weit geführt. Oft werden bestimmte Untermengen nicht mehr Objektorientiert strukturiert, sondern man verfällt innerhalb der ersten Klasse schnell dazu, Eigenschaften primitiv abzubilden.


// mehr lesen

Geschrieben in Entwicklung, Theorie 5 Kommentare

Objektdatenbanken in Webapplikationen

Geschrieben am 30. Dez 2008 von Cem Derin

databaseVor ein paar Tagen habe ich meine Zeitschriftensammlung aufgeräumt, dabei fiel mir eine Ausgabe des Linux Magazins wieder in die Hände, der ich bei Erscheinen nicht die nötige Aufmerksamkeit geschenkt habe. In dieser Ausgabe gab es eine Reihe von Artikeln rund um das Thema Datenbanken. Ausschlaggebend für den Text den ich hier schreibe ist aber der Artikel über db4o.

Nach dem ich den Artikel aufmerksam(er) gelesen hatte, malte ich mir eine PHP-Welt aus, in der Objekte direkt in die Datenbank geschrieben und aus ihr geladen werden können, dabei Referenzen und Integrität berücksichtigt und das ganze nativ in PHP abgefragt werden kann. Für Webapplikationen – wenn es denn so einfach geht wie mit db4o – wäre das eine erhebliche Arbeitserleichterung.


// mehr lesen

Geschrieben in Entwicklung, Theorie Kommentieren
theme von mir, software von wordpress, grid von 960 grid system. funktioniert in allen browsern, aber der safari bekommt das mit der schrift am schönsten hin.