Archiv der Kategorie: Allgemein

Rethink yourself…

— Teaser —

Ich mache nun schon eine ganze Weile Software im und für das Internet – seit 1999 um genau zu sein – und heute muss ich meinem Herzen mal Luft machen.
Liebe Juniors, liebe Seniors: Hört auf, mein Internet kaputtzumachen.

— Kleiner Exkurs – Wie alles begann —

Als ich anfing, professionell Software zu entwickeln (ich also Geld für etwas bekam, was ich gerne machte), da schrieb man das Jahr 1999 – es ist also schon eine Weile her. Damals™ war das Netz noch recht neu im Massenmarkt, es gab keine Androiden oder iPhones und Webseiten rief man auf dem Computer zu Hause mit einem Browser ab. Die Leitung in dieses neue Netz war eher langsam und kostete dazu in Deutschland sowohl einen monatlichen Festbetrag als auch noch einen Geldbetrag pro Zeiteinheit (meist ein paar Pfennige pro Minute, lies bei Wikipedia nochmal über die Deutsche Mark nach, wenn dir Pfennige nichts sagen). Kurzum: Zeit war ein doppelt treibender Faktor in diesem Internet. Zum einen war Zeit kritisch, weil die Leitung nicht so schnell war (ein winziger Bruchteil heutiger Technik) und zudem war es auch noch teuer, je länger man online war (Flatrates kamen erst später).

In diesem Umfeld bekam ich nun Kontakt mit dem Internet und lernte, wie die Technik zur Darstellung von Webseiten funktioniert, was das TCP/IP Protokoll ist (und warum dieses Protokoll so toll ist, bis heute) und was alles zwischen dem „ich drücke enter, nachdem ich die URL eingegeben habe“ und „der Browser ist endlich fertig, das Modem kann wieder aus“ so alles passiert – dies prägt mich bis heute. (Zur Erinnerung: Das Modem kann aus heißt, dass ab dann kein Geld mehr bezahlt werden musste … und es heißt auch, dass ab dann auch kein Internet mehr zur Verfügung stand; dies für die jüngeren unter euch).

Ich habe damals also – geprägt von Zeit- und Geldnot – viel gelernt, vor allem darüber, wie man die Informationen einer Webseite schnell und datenoptimiert an den Browser bringt. Generell war die Optimierung von Code an die Aspekte Schnelligkeit und Robustheit (beide sind gleichwertig zu betrachten) von großem Interesse und allgemeiner Usus, ähnlich wie heute Unit Testing zum „guten Ton“ gehört, so war es damals vor allem optimierter Code, der zum Handwerkszeug gehörte; erschien dein Code nicht optimiert, warf das kein gutes Licht auf dich und dein Können.

Das Resultat des Ganzen war Code, der schnell und stabil vom Server zum Browser gesendet wurde und dort komplett (und möglichst fehlerfrei) bis zum nächsten „Cache renew“ verbleiben konnte, damit die Leute sich deine Seite möglichst offline in Ruhe durchlesen konnten.

Wer jetzt ganz genau mitgelesen hat, der erkennt so manchen Kunstgriff, so manche Technik wieder, die heutzutage einen anderen Namen hat oder dem einfach ein neuer Anstrich gegeben wurde. Im Kern ist es aber nichts anderes ist als das, was schon vor über 25 Jahren zum guten Ton gehört hat. Begriffe wie „Client side caching“ kommen da vor, „Server side purging“, „Load balanced optimization“ und der Begriffe vieler sagen dem ein oder anderen bestimmt etwas.

— Paradigmen —

Ouch, ein schweres Wort, ein Wort zudem, bei dem sich 10 Entwickler im Raum nicht einigen können, was es denn genau bedeutet. In diesem Fall hier bedeutet es so etwas wie „verschriftlichte best practices“ im Sinne von: Wir haben damals viel ausprobiert, viel gelernt und haben versucht, dass, was sich als das Beste herauskristallisiert hat, niederzuschreiben, damit es die Leute nach uns nicht so schwer haben. Damit da etwas ist, woraus diese neuen Leute schneller lernen können und die alten Fehler nicht wieder machen (denn das spart Zeit, mit denen man wieder neue Wege beschreiten kann).

Eines dieser alten und fast vergessenen Paradigmen heißt abgekürzt YAGNI und ausgeschrieben steht es für „you aint gonna need it“ und bedeutet soviel wie „du brauchst das nicht“. Meistens wird dies zusammen mit einem anderen Paradigma gebraucht, dem KISS-Prinzip, was für „keep it simple stupid“ (hier kommt wahlweise ein Komma hin oder auch nicht, ist aber für den weiteren Verlauf nicht weiter wichtig). KISS soll einem sagen, dass man Dinge einfach halten soll, sprich: Gibt es mehrere Lösungswege für ein Problem, dann nimm das simplere. Klingt doch logisch, oder? Wer befasst sich gern mit schwierigen Lösungen, wenn es eine einfachere gibt, die genauso funktioniert. Der letzte Teil ist übrigens wichtig, denn zur Entscheidung, ob ich eine einfachere Lösung nehmen kann, bedarf es natürlich der Forderung an diese Lösung, dass diese bitte auch mein Problem lösen soll. Eine einfache Lösung, die mein Problem nicht oder nur zum Teil löst, ist nutzlos wie eine leere Rolle Toilettenpapier – theoretisch machbar, praktisch aber nicht zu empfehlen.

Bewaffnet mit dem Wissen um diese alten „best practices“ können wir nun einen Schritt weiter gehen.

— Wie Webseiten funktionieren —

Der technische geneigte Leser möge mir verzeihen, wenn ich in diesem Kapitel nur ganz grundsätzlich auf die Funktion des technischen Ablaufes eingehe, aber dieser reicht für ein grundsätzliches Verständnis zum Thema sicherlich aus, ohne den nicht-technischen Leser zu überfordern.

Prinzipiell funktioniert das Netz so, dass „ich“ als Benutzer eine Ressource bei einem Server anfordere und dieser mir eine Information zusendet, ob er mir diese ausliefern kann oder nicht (und dann auch, warum nicht). Im Weiteren gehen wir mal davon aus, dass wir keinen technischen Defekt haben und alle Ressourcen, die wir haben wollen, auch da sind, wo wir diese anfordern.
Ist eine Ressource vorhanden, dann liefert mir der Server eine Information dazu (200-OK) und meistens auch eine Antwort im „body“ welches dann die Ressource ist (ich sagte ja, ganz stark vereinfacht).

Im speziellen Fall einer Webseite können dies folgende Dinge sein:
– Die Seite selbst
– Zur Seite gehörende Dinge wie
— CSS
— Javascript
— Bilder
— sonstiges

Und eines ist noch gut zu wissen: Oben sprach ich von „ich“. Dieses „ich“ in diesem Fall der Browser. Dieser sendet eine Anfrage an den Server, der Antwortet dann und der Browser muss mit dem Ergebnis dann umgehen (und ggf. noch mehr Ressourcen nachladen).
Nur: Was macht der Browser denn da genau?

— Was der Browser spricht —

Der Browser, heutzutage ein Zwiespalt zwischen Chromium-basierten und dem Firefox, kann im Prinzip nicht viel mehr als es schon Browser in der alten Zeit konnten: Er kann HTML.
HTML – die „Hypertext Markup Language“ – ist das Grundgerüst jeder Webseite. Jeder. Wirklich.
Im Prinzip kann der Browser ohne HTML keine Webseite darstellen und egal auf welcher Seite im Netz du bist, du kannst ja mal in deinem Browser auf „Quelltext anzeigen“ gehen und siehst: Ja, HTML, definitiv.

Ok, der Browser kann auch noch ein paar Dinge mehr, dazu gehören z.B. Bilder anzeigen, Töne abspielen, Styles „verstehen“ und JavaScript interpretieren. Was braucht man sonst noch für eine Webseite, egal welche? Genau, nichts mehr. Das war’s. Alle Webseiten bestehen aus diesen Dingen.

Du brauchst ein Grundgerüst aus HTML, damit der Browser überhaupt etwas damit anfangen kann. In diesem HTML stehen dann diverse Dinge, zum Beispiel auch, ob der Browser noch etwas nachladen soll, nachdem er mit dem HTML interpretieren fertig ist. Dazu können Stylesheets gehören – die CSS Dateien – oder auch JavaScript, was eine Seite wieder dynamisch erscheinen lässt.

Aber die erste Sache, der Browser macht, ist HTML laden und interpretieren.

— Damals zu heute —

Die ersten Seiten im Netz bestanden nur aus HTML und dienten in erster Linie dem Informationsaustausch. Das Besondere an diesem Austausch war, dass man nicht nur Informationen darstellen konnte und sie „jeder“ (der es sich leisten konnte) abrufen konnte. Vielmehr war es die fantastische Möglichkeit, diese Informationen auch in Beziehung zueinander zu stellen. Das heißt, sprach man in einer Seite z.B. von Wikipedia, dann konnte man eine Beziehung zu einer anderen Seite herstellen, die dann diesen Begriff näher, tiefer, besser erklärte, so dass man seinen eigenen Kontext nicht immer wieder für Erklärungen verlassen musste. Eine tolle Sache, heute kennt man das als „Links“ auf Webseiten.

Ein wenig später kam dann der Wunsch auf, Seiten nicht mehr nur um ihrer Information wegen ins Netz zu stellen. Es kam – wie bei den meisten Dingen – auch darauf an, sie „schön“ zu präsentieren, was nach ein paar kurzen Irrungen und Wirrungen zu dem führte, was die meisten als CSS kennen. Die Möglichkeit, die Inhalte im HTML vom HTML getrennt gestalten. So sahen dann die Informationen ein wenig besser aus und konnten (manchmal, nicht immer) leichter gelesen werden.

Irgendwann zwischen „Wir haben das Internet erfunden“ und heute kam jemand auf die Idee, in diesem Internet doch auch dynamische Inhalte sehen zu wollen. Bis dahin war das Netz recht statisch. Es gab Seiten, Seiten standen in Beziehung zu anderen Seiten, aber im Prinzip hat sich eine Seite, war sie einmal online, nicht mehr geändert … zumindest nicht von selbst.
Die Technologie, die dynamische Inhalte ermöglichte, ist bis heute unter dem Namen „JavaScript“ bekannt (und nochmal: JavaScript hat nichts mit Java zu tun!!1!).

Diese Dinge, von erfahrener Hand respektvoll zusammen gefügt, ergaben zumeist informative Seiten, die überdies auch noch schön waren. Denkt man, in der Masse waren es meist blinkende Terrorwüsten ohne Inhalte, dagegen sind Cookie-Banner schon unaufdringlich – aber ich schweife ab, lassen wir uns die Illusion, dass die Webseiten mit HTML, CSS und JS gut funktionierten und ihren Sinn erfüllten.

Hier könnte die Geschichte nun zu Ende sein … wenn da nicht der „Ruf der Experten“ gekommen wäre.

— Berühmte Zitate —

Berühmte Zitate sind auch sowas wie „best practices“, allerdings nicht mit lehrender- sondern mit mahnender Funktion.
Besonders gut passt hier „Der Weg zur Hölle ist mit den besten Absichten gepflastert“, was uns so langsam in die Neuzeit des Netzes bringt.

— Soziale Medien als Motor —

Irgendwann nach 2010 (dem Datum des ersten iPhones und damit dem Massendurchbruch des mobilen Internets und damit dem Vormarsch sozialer Medien) kamen Entwickler der sozialen Medien auf Ideen, um Ihre Webseiten (nichts anderes ist ein soziales Medium technisch gesehen) schneller und effektiver an jedermann zu bekommen. Mobiles Internet war damals teuer (ähnlich wie das Internet generell ein paar Jahre vorher auch zu Hause) und damit die Leute die sozialen Medien auch unterwegs gern (und damit viel) benutzen, mussten die Seiten schnell geladen werden (auch das passt zu den Erfahrungen der Jahre vorher). Soziale Medien aber möchten auch viele Informationen an den Mann bringen, was zunächst dem Prinzip des „schnell“ eher entgegengesetzt ist. Wie bekommt man nun „schnell“ und „viel“ übereinander?

Das überlegten sich viele Leute, die Ergebnisse waren zumeist recht enttäuschend und alles andere als schnell (oder gar einfach). Dennoch, irgendwann hatten ein paar schlaue Menschen nicht nur die zündende Idee, sondern auch gleich die passende (und funktionierende) technische Lösung dafür: reaktive Webseiten. Du kennst das heute als „infinite scrolling“, d.h. du bist bei deinem Lieblingssocialnetzwork und kannst scrollen bis der Arzt kommt, es geht einfach immer weiter und weiter und weiter (auch als Doomscrolling bezeichnet). Der Trick hierbei ist, dass die Inhalte nicht im initialen Requests deines Browser zu finden sind, sondern die Dinge werden „on the fly“ immer dann geladen, wenn du am Ende der geladenen Daten bist. Heute geht das recht zügig, so dass der normale Netznutzer auch im mobilen Falle nichts oder nicht viel davon mitbekommt.
Und damit fängt das Problem so langsam an, konkret zu werden.

— Die „Lösung“ —

Massenhaft Daten dynamisch ohne Seitenwechsel nachzuladen bedeutet, dass wir mit den Standardmitteln nicht weit kommen. Daten nachladen ohne eine neue Seite zu laden bedeutet, dass wir die Daten per JavaScript nachladen müssen. An und für sich ist das nichts neues und auch, je nach Einzelfall, auch nicht per se schlecht. Es gibt durchaus Szenarien, wo das Sinn macht und auch sinnvoll ist. Das Problem eskalierte allerdings anders.

Ein großes soziales Netzwerk „erfand“ (nicht wirklich, wir vereinfachen aber mal) ein JavaScript-Framework, dessen Grundgerüst nicht mehr die Ergänzung von HTML darstellte, vielmehr begreift sich dieses Framework als Grundgerüst selbst, so dass sämtliche Arbeiten zur Darstellung der Homepage nicht mehr per HTML (und CSS und JS) getätigt werden, sondern samt und sonders in JS selbst durchgeführt werden. Für den jungen und unerfahrenen Entwickler bietet das den „Vorteil“, dass er „seine“ eine Sprache nicht verlassen muss und alles komplett „ohne Stilbruch“ aus einem Guss erledigen kann. Kein Witz, dies ist wirklich eine der Argumentationen für diese Vorgehensweise und dummerweise glauben bis heute viele Entwickler, dass das eine gute Sache wäre.

— Der Stand der Dinge —

Kommen wir nun zu den Details und damit dahin, wo es schmerzt. Nicht im Sinne von „es funktioniert nicht“, sondern im Sinne von „warum glaubt ihr, dass das eine gute Idee ist“. Kurzum, sehen wir die „Lösung“ mal an.
Der aktuelle Stand der Dinge ist der, dass viele junge Entwickler damit groß werden – und auch so ausgebildet werden -, dass alles in JS erledigt werden kann, was dann oft zu dem Irrglauben führt, dass auch alles in JS erledigt werden muss und JS-Frameworks sozusagen alternativlos sind.

Aber was passiert eigentlich bei diesen Frameworks?
Bauen wir uns doch mal ein gedankliches Beispiel: Lass uns eine Seite für eine Arztpraxis bauen, vielmehr, lass uns zwei Seiten bauen, gleiches Layout, gleiche Funktionen, das eine mit einem JS Framework, das andere klassisch.
Beim JS-Framework brauchen wir gar keines konkret heranziehen, da der Funktionskern prinzipiell gleich ist. Von daher können wir einen Pseudo-Funktionsansatz darlegen, der zur Veranschaulichung auch völlig ausreichend ist.

— Der Framework Ansatz —

Natürlich benötigen wir zunächst mal ein installiertes NodeJS nebst npm. Dann brauchen wir entsprechend natürlich auch unser geliebtes JS-Framework (hier Name einfügen) und das zieht sich dann auch gleich mal alle seine Abhängigkeiten in Form diverser JS-Pakete ran. Dabei benötigt natürlich auch jedes Paket wieder seine eigene Abhängigkeiten von anderen Paketen, die npm natürlich auch gern für uns auflöst, runterlädt und an seinen Platz in den `node-modules` Ordner legt. Allein die Vanilla für das Framework wiegt bereits jetzt eine Menge.

Dann müssen wir natürlich auch die Seite selbst bauen, d.h. wir müssen routing einstellen, (Pseudo-)Klassen anlegen, Komponenten registrieren und benutzen, alles so verpacken, dass es das Framework auch versteht und dann am Ende die Inhalte der Seite anlegen.

Anschließend laden wir alles auf unseren Webserver, stellen den entsprechend so ein, dass der auch korrekt in das Framework routet und rufen dann die Seite auf.
Wenn man sich jetzt den Spaß macht und in den Browser eigenen Entwicklertools nachsieht (drück doch mal F12, wenn du nicht weißt, wovon ich rede), dann nimmt sich der Aufruf meist recht viel Zeit und ist auch recht groß. Du siehst das ganz unten in den Entwicklertools bei den „Netzwerkanalysen“ wo steht „xyz Anfragen, xyz übertragen, Beendet: xyz ms“.

Merk dir diese Zahlen mal, sowohl was die Anzahl der Requests angeht, als auch die Größe der übertragenen Daten.

Der Kern des Ganzen, warum ich diesen Ansatz kritisiere, ist der, dass zunächst einmal Tonnen von Daten Clientseitig durch ein Framework geroutet werden, um dann am Ende doch wieder zu einer kleinen Arztpraxis-HTML-Seite zusammenzufallen. Der Aufwand, um hier zum Ergebnis zu kommen, ist recht hoch, gleichwohl der Nutzen doch eher überschaubar bleibt. Möge mir jemand das Buch der Erkenntnis reichen, den bisher sehe ich da keinen Vorteil.

— Der klassische Ansatz —

Wir erstellen Seiten+1 Dateien, eine ist für das CSS, die anderen sind die eigentlichen Seiten. Da bauen wir einfach die Seiten, die wir brauchen und nennen die „xyz.html“, die zusätzliche nennen wir „xyz.css“ und die ist nur für das CSS. Okay, wir könnten noch eine machen, eine „xyz.js“, aber mal ehrlich, warum? Das wird eine Arztseite, dynamisch ist anders.

Wenn wir fertig sind, laden wir die alle auf den Server und sind fertig – html und css können alle Webserver per Default ausliefern, dafür sind die gebaut worden *zwinkersmily*.

Auch jetzt schauen wir nochmal in den Netzwerkanalysen nach und siehe da, exakt Seiten+1 (oder +2, je nachdem ob wir eine js mitliefern oder nicht) Requests wurden gemacht. Ich gehe fast jede Wette ein, dass die Größe und die benötigte Zeit für das Abrufen der Seite wesentlich kleiner sind als mit dem anderen Ansatz.

— Von Hämmern und Nägeln —

„When all you have is a hammer, everything looks like a nail!“ … das ist ein schlauer Spruch, den man sich tief im Gehirn verankern sollte. Du bist ein Junior, du kennst dich mit JS aus. Okay, aber warum kennst du dich nur mit JS aus? Weißt du, dass alle JS-Frameworks am Ende auch nur HTML auswerfen? Was anderes kann dein Browser einfach nicht darstellen. Auch Electron nicht (ist auch nur ein gemappter Chromium-Browser). Die wollen alle nur HTML haben.

Und nun mal eine Frage: Warum gibst du ihm nicht einfach HTML?
Es mag sicherlich ganz toll sein, wenn man einen Hammer hat. Damit kann man wunderbar Nägel in die Wand hämmern. Wenn du allerdings nur einen Hammer hast, dann fängst du auch an, Schrauben in die Wand zu kloppen (oder wer-weiß-wohin noch) und oberflächlich betrachtet funktioniert das auch …. zunächst. Aber der Teil, den du nicht siehst, der erhält durch unsachgemäße Benutzung Schäden (in dem Beispiel: Der Dübel wird zertrümmert, die Schraube zerstört). Und offenbar ist das ja auch erst einmal in Ordnung, weil: Das kleine leichte Bild, was du da aufhängst, das hängt doch. Ergo: Funktioniert.

Was bei deinem kleinen Bild noch ok zu sein vermag, das hält allerdings die Analogie zur Softwareentwicklung nicht mehr aus. Sicher mag dein Projekt im kleinen Rahmen (lies: auf deinem Rechner oder kurz nach dem Live-Start) noch funktionieren, was passiert aber, wenn dein Projekt plötzlich ein Erfolg wird? Von jetzt auf gleich strömen nicht mehr 2 Besucher pro Stunde deine Seite, sondern 20.000 pro Minute. Hält dein Projekt das aus? Die Schraube in der Wand wird mit Sicherheit keinen Elefanten aushalten, so kaputt wie die innen drin ist.

Jetzt sagt so mancher „meh, das ist unrealistisch“. Ist es das? Ist es nicht das, was sich alle Entwickler wünschen, dass „dein“ Projekt wie eine Bombe einschlägt und erfolgreich wird? Ich wünsch mir das jedes Mal und aus dem Grund bereite ich mich auch darauf vor, dass es mal so weit kommt. Ich betrachte als verantwortungsvoller Entwickler nicht nur den normalen „alles ist rosa“ Weg, ich betrachte vor allen Dingen die aus der Mathematik bekannten Grenzwerte, die Randbereiche, die „Roten Zonen“, die Kehrpunkte, kurzum: Ich bin da, wo es weh tut, in der roten Zone.
Warum? Ganz einfach: Wenn es in der roten Zone funktioniert, dann funktioniert es überall!

Warum die ganzen Umwege über Frameworks, Komponenten, Abhängigkeiten von eher fragwürdigen 3rd Party Librarys (wann wurden die zuletzt aktualisiert? Welche Sicherheitslücken haben die eigentlich?).

— Security —

Apropos Security!
Ich selbst baue nicht nur beruflich Webprojekte, ich baue die auch im Privaten, zum Teil auch für das Ehrenamt. Mein Anspruch an meine privaten Projekte ist nicht anders als der Anspruch für die beruflichen Projekte. Ergo untersuche ich den Code für meine Projekte auch (nicht nur, aber auch) auf die Sicherheit. Dazu gibt es Tools und Anbieter, die einen dabei unterstützen (verlass dich aber nicht nur auf andere, denkt auch selbst).
Meine Web-Projekte basieren zumeist auf dem TALL-Stack, d.h. im Kern ist es PHP auf der einen und JS auf der anderen Seite. Was mir nun auffällt ist, dass ich wesentlich (!) mehr Meldungen zu Sicherheitsproblemen in den JS-Teilen bekomme als in den PHP Teilen. Damit meine ich in beiden Fällen die jeweiligen 3rd Party Librarys, die zwangsläufig sowohl bei PHP als auch bei JS installiert werden. Es ist erschreckend, dass sich da eine Quote von 17:1 rauskristallisiert (nochmal für Juniors: auf 17 Sicherheitsmeldungen zu JS kommt eine für PHP, Tendenz eher steigend auf Seiten JS).

— Fazit —

Eingangs erwähnte ich bereits die best practices aus grauer Vorzeit, „YAGNI“ und „KISS“. Meine Beobachtung ist aber, dass diese Paradigmen entweder nicht mehr beachtet werden oder deren Existenz schlicht unbekannt ist.

Wenn die dir unbekannt waren, dann freut es mich, dass ich es dir näher bringen konnte. Du kannst dich gern weiter in diese Prinzipien vertiefen und diese verinnerlichen, es wird dazu beitragen, aus dir einen besseren Entwickler zu machen.
Wenn es allerdings nicht beachtet wird, dann heißt dies ja, dass diese Paradigmen durchaus bekannt sind und schlicht aus gottgegebener Selbstherrlichkeit missachtet werden. Aber: Warum? Machst du irgendwas besser, weil du mehr Dinge auf das Problem wirfst, ohne es besser zu lösen? Wahrscheinlich nicht. Mein Eindruck bei dieser Sparte („ich ignoriere mal dieses alte Zeug, das ist alt, heute machen alle JS, basst scho“) ist leider, dass viele zum einen gar nicht den Überblick und damit das Wissen haben, was da eigentlich im Hintergrund passiert und zum anderen nur sehr wenige bereit sind, sich dem „alle machen das“ entgegenzustellen.

In meinem Kopf geht dann immer ein Schild mit einem sehr sinnigen Spruch hoch:
„Fresst mehr Scheiße, Milliarden Fliegen können sich nicht irren!“
Soviel zur Weisheit der Masse 😉

Mein persönlicher Anspruch ist, dass ich das immer das „limes(beste Projekt)“ baue und dazu gehört auch, dass ich mir zuerst die Aufgabenstellung anhöre und erst dann entscheide, mit welchen Technologien man das wohl lösen könnte. Mein Werkzeugkasten umfasst mehr als nur eine Sprache und mehr als nur ein Framework und dies alles aus Jahren der Erfahrung, des Scheiterns und Verzweifeln, des Wegwerfen und „Machen wir die Nacht durch und schreiben es neu“-coden.

Aspekte wie Sicherheit, Robustheit und Schnelligkeit (alle sind gleichwertig) haben bei mir immer Vorrang vor irgendeinem „das geht noch hübscher, wenn wir library xyz noch requiren“ Ansatz. Zuerst muss es funktionieren, es muss stabil sein, schnell und sicher.
Hübsch kommt dann und CSS mit HTML kann in der Regel bereits 90% deines JS-Frameworks abdecken, man sollte nur mal die Doku von HTML komplett lesen.

Ständiges Hinterfragen deines Wissens wird dazu beitragen, dass du ein besserer Entwickler wirst; ein Leitstrahl kann für dich derselbe Satz sein wie für mich: „scio me nihil scire“.

Windows Developer System – Der Webserver (02)

Kommen wir in der Reihe des Windows Developer Systems nun zum Kern eures Entwickler-Systems, dem Webserver. Es gibt verschiedene Möglichkeiten, welchen Webserver man als Entwickler benutzt. Die Haupt Zielplattform wird sicherlich immer noch der gute, alte Apache Webserver sein. Da wir als Windows-ianer aber etwas verwöhnt sind, was Installation und Konfiguration von Software angeht benutzen wir für diesen Teil den Zend Server. Der hat den Vorteil, dass er komplett fertig als „One-Click-Installer“ reinkommt und nichts kostet außer ein paar Minuten Zeit.

Zuerst begibt man sich auf die aktuelle ZendServer Downloadseite und wählt die für sich passende Installation aus. Aktuell gibt es dort den ZS für PHP 5.3 und PHP 5.4 zur Auswahl.

Die Downloadseite des Zend Servers

Es wird zum Download AFAIK kein Account benötigt, falls doch ist dieser kostenfrei und auf jeden Fall die Mühe wert.

Nachdem ihr den Server runtergeladen habt, könnt ihr die Installation wie gewohnt starten. Der Server ist wirklich einfach zu installieren. Beim Zielverzeichnis können wir der Einfachheit halber Den Pfad “C:\” wählen, der Server wird dann unter “C:\zend” installiert. Die kurzen Dateipfade werden uns später die Arbeit etwas leichter machen, wenn es darum geht, Virtuelle Hosts aufzusetzen – dazu später mehr.

Das wirklich schöne am Setup des Zend Servers ist, dass im Schritt “Custom Setup” ganz unten die Option “MySQL Server” angewählt werden kann und damit nicht nur ein MySQL Server runtergeladen wird, sondern das Ganze auch fix und fertig serviert und konfiguriert wird. Wirklich praktisch!

Custom Setup des Zend Servers

Die restlichen Optionen müsst ihr nach euren Anforderungen setzen, ich belasse meist alles so wie es ist und füge nur die Option des MySQL Server hinzu, dann habe ich schon ein funktionierendes System.

Die Installation dauert je nach Optionen, Downloadgeschwindigkeit und CPU ein paar Minuten. Zeit für einen Kaffee 😉

Nach der Installation _kann_ es sein, dass manche Rechner neu starten müssen, andere jedoch nicht. Tut wie euch geheißen und ihr bekommt anschließend den kompletten Zend Server als Trial-Verison für 30 Tage. Keine Angst, nach Ablauf der 30-Tage verwandelt sich die “echte” Zend Server in die “Free”-Version, die genauso als Entwickler-Basis verwendbar ist – nur ein paar Profi-Features fehlen, das wirklich wichtige bleibt aber erhalten.

Je nach Präferenz könnt ihr in den Diensten von Windows nun auch den automatischen Start von “Apache” und “MySQL Server” auf “Automatisch” belassen oder auf “Manuell” setzen. Ich setze den Apache meist auf Manuell und starte diesen bei Bedarf, der MySQL Server läuft dagegen ständig, da ich öfters mal Datenbankabfragen aus meiner IDE starte, während ich programmiere. Aber auch hier: Eure Bier, macht’s, wie’s euch beliebt.

In eurer System-Tray (neben der Uhr) habt ihr nun auch ein schickes neues Icon, ein Klick drauf und ihr könnt den Server starten, stoppen oder restarten wie es euch gefällt. Ein Doppelklick führt zu einer netten Übersicht, die in der Praxis aber kaum Bedeutung hat.

Ob ihr nun glaubt oder nicht, euer Webserver mitsamt MySQL-Server ist nun installiert und einsatzbereit. Yes, it’s that easy!

Wenn der Apache gestartet ist erreicht ihr die Konfigurationsseite des ZendServers unter der URL

http://localhost:10081/ZendServer/

Beim ersten Aufruf (oder nach einem Update) müsst ihr den Üblichen EULA’s zustimmen und angeben, ob ihr den Server als “Development” Server benutzt oder als “Production”, dann ein Password für den Admin-Zugang eintragen und fertig ist der Server!

Zend Server Dashboard direkt nach Installation

Im Punkt “Configurations” könnt ihr einzelne Komponenten (de-)aktivieren und auch alle Teile der php.ini bearbeiten, inkl. Erklärungen. Grade für Neulinge im Bereich Webserver sehr praktisch. Der Server kann nach allen Änderungen die Ihr braucht per Klick neu gestartet werden.

Der größte Teil unter dem Mneüpunkt “Applications” fällt übrigens nach dem Ende der Trial-Phase weg und betrifft eh nur Cloud-“Zeug”, was erstmal nicht von belang sein soll. Wir wollen ja unser lokales System aufbauen und die Grundlage dafür ist nun vorhanden.

Schaut euch also nun in Ruhe euren neuen lokalen Webserver an. Im nächsten Teil geht es weiter mit der Konfiguration der Virtuellen Hosts und was man damit schönes machen kann.

Werkzeugkasten 2012

In guter Tradition hier etwas verspätet mein Werkzeugkasten für 2012.

Ich stelle dir hier Werkzeuge und Programme vor, mit denen ich gut klarkomme. Evtl. stoße ich dich auf ein Programm, was du noch nicht kennst, was dich aber produktiver macht. Wenn ja freut mich das. Ein Hinweis aber: Ich bekomme von keinem der hier vorgestellten Anbieter irgendetwas für diese Liste. Diese Meinungen hier sind nicht gekauft, die sind durch Wochenlanges Ausprobieren, rumfummeln, reinfrickeln, usw. erarbeitet. Wollte das nur vorher klarstellen, auch wenn es sich manchmal wie ein Pressetext liest.

Die Schwerpunkte “auf Arbeit” dieses Jahr sind zweigeteilt: PHP und MySQL, sowie Continous-Interation und Frameworks

  • Zend Studio
    Wie beim letzten Jahr bleibt Zend Studio die IDE meiner Wahl. Auch harte Konkurrenz durch Netbeans und PHPStorm (in dieser Reihenfolge) konnte der High-End-IDE nichts anhaben. Sicher glänzt Netbeans durch viele kostenlose Features – privat setze ich nur auf Netbeans, weil mir das Studio da zu teuer ist –, aber die gewohnte “alles-geht”-Mentalität und das “out-of-the-box” Prinzip – vor allem im Bereich debuggen von PHP-Scripten – hat mich auf’s neue Überzeugt. PHPStorm habe ich getestet – dank einer geschenkten Lizenz sogar über einen längeren Zeitraum – allerdings konnte es sich nicht gegen das Zend Studio oder Netbeans behaupten; aber ich habe bestimmt nur die falschen Projekte und die falschen Ansprüche Zwinkerndes Smiley.
  • Zend Server (CE)
    Alles aus einem Installer – Apache und MySQL-Server – und alles Updatefähig per Mausklick – noch immer überzeugt mich das “easy-going” Prinzip vom Zend Server; wahrscheinlich, weil das Studio auch besser damit zusammenarbeitet oder weil ich einfach zu faul bin, mir jede Quelle selbst zu kompilieren. Basis meiner lokalen Entwicklungsumgebung bleibt der ZendServer (CE, oder heute free-edition).
  • SVN, Vercue, Subversion Edge
    Yep, die Versionskontrolle ist ebenfalls wieder dabei. Wir wurden professioneller, haben die selbst ge”apt-get”tetten Quellen durch eine fertige kostenlose Lösung auf Serverseite namens Subversion Edge ersetzt und sind alle zufrieden. Ich, weil ich nun von überall per Browser an die Repo-Verwaltung komme, meine Kollegen, weil die das nun auch können, mein Chef, weil alle gut drauf sind und es ihn (fast) nichts gekostet hat – ausser ein paar Nerven beim Serveradministrieren.
    Vercue verrichtet weiterhin seinen Dienst im Hintergrund und informiert uns Entwickler darüber, dass ein anderer mal wieder was neuen commited hat. Sehr nützlich!
  • Git und Stash
    Leider kamen wir aus Zeitgründen noch nicht dazu, git mehr Aufmerksamkeit wie das reine “teste mal an” zu geben, aber wir sind zuversichtlich, bald die ersten Projekte mit dem Verteilten Versionssystem zu beginnen. Auf Serverseite hilft uns dabei bestimmt Stash, welches ich persönlich mit meinen Privatprojekten als Bitbucket kenne und schätze.
  • FileZilla
    Ohne Worte, oder? Ein FTP-Tool hat jeder, FileZilla ist meins.
  • Outlook, MS Office
    Jajajajaja, ruhe im Saal Zwinkerndes Smiley Im Business kommst du ohne Office-Packet nicht weit und für mich als Windows-ianer ist Outlook einfach das beste Mailprogramm, wenn man damit auch etwas mehr wie “nur” E-Mail machen möchte.
  • Zend Toolbar
    Essentiell zum debuggen, single-click-install beim ZendServer, einfacher geht’s nicht mit der Zend Toolbar. Für den Chrome könnte Zend wirklich auch mal eine Toolbar mitliefern. Die ist nämlich nicht dabei, die muss man sich aus dem Forum downloaden. Geht aber problemlos und kostet höchstens 5 Minuten.
  • Chrome, IE, Firefox, rest
    Hier die erste gravierende Änderung zu 2011: Firefox ist nicht mehr der Primärbrowser. Zu lahm, zu schwer, zu … neee-lass-mal … Beruflich wie privat ist der Primäre Browser nun Chrome geworden, schnell, schmal, und alles sieht genauso aus wie im Fox. Ist ja schließlich 2013, da sollte das auch so sein, die Browserkriege sind beendet. BEENDET! Platz 2 ist der IE, Firefox ist noch da, aber nur zum Testen, Opera ist verschwunden, weil nicht gebraucht … gibt’s noch irgendwelche nennenswerten Browser? (Ich setz Safari mit Chrome gleich, weil fast gleiche Engine).
  • Web Developer Tools
    Ja, wichtig. Mal eben die Parameter einer Form ansehen? *Klick* Da sind Sie. Top Addon, auch für Chrome, leider nicht für IE, aber was ist nicht ist …
  • MySQL Studio
    Das MySQL Studio wird mir immer wichtiger. Nicht nur zur Analyse und Debuggen von komplexen Querys hervorragend geeignet, sondern auch, um zwei mysql-dump (jeweils knappe 300MB) miteinander zu vergleichen und die Frage zu beantworten: Hat sich was an der Tabellenstruktur getan? Wenn ja, was? Und das ganze bitte Grafisch! Und anschließend bitte eine “Alter”-SQL File exportieren. Genial!
  • Notepad2, Notepadd++
    Einen davon solltest du auch auf dem System haben, es lohnt sich Zwinkerndes Smiley “Mal eben” was kleines, oder “mal eben” ein .sql durchsuchen, dabei aber Syntax-Highlighing und Code-Folding haben wollen? Kein Problem, downloaden, installieren, Arbeitszeit sparen!
  • RegEx Editor
    Ein selten geniales und simples Tool, mit dem ich problemlos auch die komplexesten Regulären Ausrücke testen und optimieren kann. Hat mir schon so manche schlaflose Nacht erspart. Grade, wenn man sich manchmal nicht mehr ganz so sicher ist, ob der neue RegEx auch diesen und jenen Fall “covert” kann man es mit diesem Tool sehr schnell prüfen. Top und kostenlos!
  • Sysinternals und WSCC
    Keine Geheimnisse mehr in Windows. Profi-Tools für Profi-Fragen und mit dem WSCC sogar ein GUI-Updater.
  • KeePass
    Mein unersetzlicher Begleiter mit allen meinen Passwörtern. Wie sonst könnte ich mir alle Kundenpasswörter auf allen Seiten merken, ohne die Sicherheit zu gefährden? Ich brauche nur noch das (elend lange) Passwort für KeePass und gut ist. Ein STRG+ALT+A und ich bin im System des Kunden. Perfekt!
  • Screenpresso
    Hab noch nichts besseres gefunden und ich suche wirklich immer nach guten Tools. Auch das Sniping-Tool von Win7 kann leider nicht alles, was mit Screenpresso problemlos geht.
  • Launchy ist weg
    Yep, Launchy ist weg, ich mach nun alles via Taskbar oder der Suche von Win7.
  • Spotify
    iTunes ist weg, Spotify ist da. iTunes war so “nett”, mir alle meine Songs neu zu “taggen”, was zu einem heillosen Chaos führte. Bei Spotify habe ich das Problem nicht und zusätzlich kann ich in neue Alben länger reinhören wie z.B. bei Amazon und mir ein Bild davon machen, ob ich es kaufe oder nicht. So manchen Album wäre nicht in meiner Sammlung ohne diese Funkttion. Leider bin ich nur “free” Member und muss Werbung ertragen, aber solange kein Justin Bieber dudelt ist alles in Ordnung Zwinkerndes Smiley
  • Social Networks
    Ja, die Produktivitätskiller schlechthin, die bösen, bösen Social-Netwörks wie Twitter, Google+, Facebook oder wie-auch-immer. Letztes mal hatte ich dafür TweetDeck, dieses mal hatte ich schlicht keine Lust. Keine Lust, jede Stunde Twitter zu checken, keinen Bock, Stundenlang auf G+ rumzuklicken, Facebook auch nur zwei Minuten daddeln und wieder weg. Ich brauche das nicht, und daher brauche ich kein Tool mehr dafür.
    Nicht falsch verstehen, ich mache immer noch mit, aber mehr passiv, ich lese mit, kommentiere kaum, schreibe so gut wie nichts (außer neue Blog Posts natürlich) und Twitter prüfe ich zweimal am Tag per Windows Phone – da fällt mir ein, ein Tool kommt in die Werkzeugkiste: Peregrine, so heißt der Twitter-Client auf meinem WP7. Das war’s schon von wegen Social … kleiner Nachtrag: Die Newsfindung erledige ich hauptsächlich per Twitter, direkt dahinter kommen die klassischen RSS-Feeds einiger Newsseiten, die ich direkt in Outlook lese, also auch hier kein Tool für RSS.
  • Windows7
    Bin immer noch Gehirngewaschen, bin immer noch bei den Proprietären Abzockern aus Redmond, immer noch beim “Klicki-Bunti” Fenster, immer noch bei der Virenschleuder, bei der Malware-Verbreitungsplattform, immer noch beim bösen, bösen Windows, bei dem wir alle nicht mehr sein wollen und auch nicht sein dürfen.
    Weißt du was: Bin ich doch!
    Und ich bin zufrieden!
    Weil alles geht, so wie es soll!
    Ja, ich kenne Linux, hab LinuxMint14 installiert und obwohl diese Distri wirklich toll aussieht und sich selbst für mich gut “anfühlt” … es bleibt leider dabei, dass ein falscher “apt-get” mal wieder meine ganze X-Oberfläche zerstört hat und ich – als Pinguin-Laie – das nicht mehr hinbekomme. Ich hätte echt Angst, wenn das mein Produktivsystem wäre.
  • PHPUnit, Selenium, LiveTest, …
    Qualitätssicherungstools stehen bei mir dieses Jahr ganz weit oben in der Gunst. Bei neuen Projekten versuche ich mich an Test-Driven-Development, was zeitlich bedingt nicht immer funktioniert. Aber der Sinn und Zweck ist verstanden und Workarounds für ein schnelles bereitstellen in den Projekten sind ebenfalls erarbeitet und funktionieren gut.
  • Codesniffer, Messdetector, …
    Und auch diese Tools dürfen nicht fehlen. Ein großer kritischer Systemausfall beginnt mit kleinen Schludereien auf Code-Ebene. Diese kleinen Helfer erinnern mich daran, wo ich zu schnell arbeite und besser auf die Bremse drücken sollte.
  • Jenkins, Continous-Development
    Und da ich – wie alle Entwickler – ja zur Gattung der Faultiere gehöre, was sich wiederholende Arbeiten gehört, macht mein persönlicher Jenkins alle QA-Sachen für mich automatisiert … nun ja, zumindest für die ganz neuen Projekte, die alten Legacy-Projekte dafür in Angriff zu nehmen ist … schwierig. Weniger vom fachlichen Standpunkt aus, mehr vom Zeitlichen Standpunkt. Aber wir arbeiten dran Zwinkerndes Smiley.
    Sehr cool ist auch, dass sich Jenkins ins Zend Studio integriert und mich die Fehlermeldungen dort per Klick direkt an die entsprechende Codestelle führen. Perfekt!
  • Zend Framework, Backend-Framework
    Mein persönliches Framework für PHP. Ich habe Symfony ausprobiert, ich arbeite bei manch Kundenprojekt mit CodeIgniter, ich habe PIMF ausprobiert, sogar FLOW habe ich mir angesehen. Steckengeblieben bin ich beim Zend Framework. Klar, Zend Studio, Zend Server, da liegt das nahe, aber die ganze Art und Weise des MVC liegt mir und ich komme intuitiv zurecht. Für mich heißt das, Zend Framework und ich liegen auf einer Wellenlänge und das heißt, dass ich damit Spaß habe und Produktiv arbeiten kann … und darauf kommt es doch an.
    ZF setze ich bei neuen Sachen wenn es geht als „Full-Stack” ein, bei einigen Legacy-Projekten läuft es als Library für ein paar Aufgaben und wird per Autoloader eingebunden. Praktisch, wenn ein Framework beides kann.
    Derzeit bin ich noch in Version 1 unterwegs, der Lernweg zur Version 2 ist schon geplant, auch vor Ralf’s Buch Zwinkerndes Smiley
  • Bootstrap, Frontend-Framework
    Wenn das Zend Framework mein Backend-Framework der Wahl ist, dann wurde Twitter Bootstrap mein Frontend-Framework, mit dem ich bestens zurecht komme. Habe mir auch HTML5Boilerplate angesehen und 960 Grid System, auch hierbei kann ich aber nur eines nehmen, am besten komme ich mit Twitters Gedanken klar.
  • Zend Certified Engineer (ZCE) PHP
    Ne, ich bin’s noch nicht, aber der Voucher liegt bereit und ich lerne fleißig. Dabei bleiben leider manche anderen Sachen liegen und ich experimentiere nicht so viel mit neuen Frameworks rum. Bald…

Und da gibt es nun auch noch den Privaten Schwerpunkt, der liegt neben PHP und allen oben genannten Sachen derzeit bei C#.

  • VisualStudio (Express)
    Klar, wer C# macht, der sollte auch Microsofts IDE benutzen. Wer schon mal C++ programmiert hat (so wie ich einst), der weiß einfach, dass VS die beste IDE der Welt ist, wenn man zu den “echten” Programmiersprachen kommt. Das Microsoft die IDE in einer benutzbaren Version kostenlos hergibt ist umso erfreulicher.
    Schade, das Microsoft (noch) kein VisualStudio für PHP geplant hat … aber die Hoffnung stirbt zuletzt Zwinkerndes Smiley

Ich denke, das waren die wichtigsten Sachen, die kleineren Tools und Helfer erwähne ich nicht, das würde zu groß werden. Trotzdem wurde die Liste ja schon recht lang.

Wie sieht deine Liste aus?

Blogger–Gut, dass du weg bist

Ich bin weg.
Weg von Blogger.
Weg vom eingesperrt sein, weg vom “du darfst nur, was wir erlauben”.
Ich fühle mich frei!

Der Umzug von Blogger in ein eigenes System wie z.B. WordPress hört sich ganz einfach an und ich muss zugeben, der größte Teil ist auch einfach. Aber die Probleme liegen im Detail. Einige könnten sagen, es ist jammern auf hohem Niveau. Aber ich fange am besten vorn an.

Neue Domain besorgen und WordPress darauf installieren, das sind die ersten einfachen Schritte. Dann ins Backend und “Werkzeuge” –> “Daten importieren” auswählen, dort dann entsprechend alles von Blogger importieren was geht. Das alles klappt auch angenehm gut.

Anschließend sind alle Altlasten im neuen System. Achtung: Waren Artikel in Blogger als “Entwurf” gekennzeichnet sind diese nun veröffentlicht. Also, schnell in die Blogger-Übersicht, diese auf Entwürfe gefiltert und dann diese Artikel in WordPress auch auf “Entwurf” gesetzt. Dann ist erst mal alles gut.

Und hier könnte die Geschichte enden, wären da nicht der treue Leser des Alt-Blogs und die großen bösen Suchmaschinen. Ich fange auch hier vorn an.

Der Alt-Leser des Blogs muss irgendwie auf das neue Blog aufmerksam werden. Ist auch ganz einfach: Im Alt-Blog einen kurzen Beitrag veröffentlichen mit der neuen URL, fertig; mit der Zeit kommen die alle ins neue Blog. Persönlich Bekannten und wichtigen Verlinkungen schickt man das ganze noch per E-Mail. Später zeige ich noch, wie man auch die sonstigen Besucher zum Umdenken ins neue Blog “zwingt”.

Und nun die Suchmaschinen. Denen teilt man auch mit, dass man nun ein neues Blog hat. Dies macht man natürlich nicht per Blogeintrag oder Mail, die SuMas kennen dafür Redirection-Codes. Wer sich auskennt, der weiß: 301 vom Alt- ins Neusystem und das alte Blog ist bald vergessen und man bekommt keine Strafe bzgl. “duplicate content”; Schöne Sache, die 30x Umleitungen … wenn das denn bei Blogger funktionieren würde.

Funktioniert aber nicht. Zumindest kenne ich keinen Weg.
Man kann weder eine .htaccess anlegen, die dann umleitet – was ja der klassiche Weg wäre – noch mittels PHP eine header()-Umleitung einrichten. Es bleiben einem nur HTML und JS.

Aber man kann ja legal tricksen. Irgendwie muss ja alles von A nach B weitergeleitet werden und das geht bei Blogger über den Trick des Templates.

Zuerst installier man sich das WordPress-Plugin “Blogger 301 Redirect”. Dieses gibt einem genaue Anweisungen. Wenn man sich dran hält, bekommt man u.a. ein neues Template für’s alte Blogger-Blog. Dieses sorgt dafür, dass jeder Besucher der Startseite auf die Startseite des neuen Blogs umgeleitet wird und jeder Besucher eines Artikels wird ebenso auf den entsprechenden Artikel im neuen Blog umgeleitet – gut, dass wir die vorher importiert haben.

Leider ist es dem Plugin nicht Möglich, diese Umleitungen per 301 zu erreichen, da “nur” per Javascript “window.location.href” umgeleitet wird … aber besser als gar nicht ist es allemal.

Nun noch eine Sitemap raushauen, am besten mit dem WP-Plugin “Google XML Sitemaps”, das macht den größten Teil der Arbeit selbst. Die generierte Sitemap gibt man nun noch bei den Google Webmastertools für das neue Blog an und ist auch mit dieser Baustelle fertig.

Ich versuche, mein neues Blog mit möglichst wenigen Plugins auszustatten. Ausser den beiden o.a. sind natürlich Akismet mit dabei und auch das extrem gute “2-Click Social Media Buttons”-Plugin, welches die schönen Social-Media Buttons einfügt, die man erst freigeben muss, damit einen diese Netzwerke nicht die ganze Zeit tracken.
Wer möchte, kann ganz gezielt einzele Buttons auch permanent freigeben. Tolle Sache! Danke an Michael für den Tip in seinem Blog.

Ich hoffe, ich konnte evtl. dem ein oder anderen zumindest etwas helfen.

Neue Blogadresse

Mein Blog ist umgezogen.

Vom gehosteten blogger „alles-fertig“ Blog bei Google zum „mach-alles-selbst“ Blog auf einer eigenen Domain mit eigenem WordPress. Irgendwie klingt das so, als wäre es nun schlechter.

Es ist aber besser. Mit eigener Domain und eigenem WordPress kann ich nun auch eigene Änderungen vornehmen … zur Not sogar an WordPress selbst, wenn irgendwas das nötig machen sollte. Das geht bei blogger nicht.

Naja, zu den sonstigen Vorteilen brauche ich nichts zu sagen; ich habe schon lange ein Auge auf Wordpess gehabt, doch nun gab es den entscheidenden Grund zu wechseln: Das Theme!

Ja, das Theme gab den Ausschlag. Das neue „Twenty Twelve“ hat alles, was ich von einem guten Theme erwarte. Es ist schlicht, professionell und „responsive“.

Und hier ist mein neues, altes, Blog!

Ich denke, es wird noch einige Zeit brauchen, bis alle alten Leser die neue Adresse gefunden haben und bis Google merkt, dass ich es ernst meine und alle alten Adressen auf die neuen Umgeleitet haben wird. Aber nun bin ich frei in meinem Blog und nur darauf kommt es an, oder?

Wie findet ihr es? Hat es sich gelohnt?

Werkzeugkasten 2011

Nils von phphatesme.com hatte eine tolle Idee: Warum schreiben wir nicht jährlich unsere Tools und Programme auf, die wir so verwenden und können uns dann im Rückblick über uns selbst freuen, was wir vor x Jahren doch alles für Steinwerkzeuge benutzt haben und dass es ja früher alles ja eh entweder viel besser war (wenn es mal wieder schlecht läuft) oder viel härter war (wenn dem Kollegen die Loorbeeren zu schnell zufallen).

Und weil ich das auch für eine gute Idee halte und Selbstironie nie verkehrt ist, mache ich da mit. Hier also die Tools, Programme, Helferlein die ich 2011 benutze, allerdings ohne spezielle Reihenfolge, dafür bin ich derzeit einfach zu faul.

Schwerpunkt dieses Jahr: PHP und MySQL

  • Zend Studio
    Meine IDE für PHP und alles, was damit einhergeht. Besonders den Debugger und den Profiler möchte ich nicht mehr missen. Die IDE kann alles, was ich täglich brauche und es gibt immer noch Dinge und Features, die ich noch entdecken kann. Dieses Jahr trübt ein kleiner (aber für mich umso schwerer wiegender) Encoding-Bug das Erlebnis, aber lt. Zend Support wird diesem im nächsten Release (wieder) gefixed.
    Einziger Zusatz ist die SVN Unterstützung von CollabNet; die standardmäßige SVN Unterstützung ist wirklich nicht so toll 😉
  • Zend Server (Community Edition)
    Apache, PHP und MySQL „out-of-the-box“ und absolut update-fähig auf Knopfdruck, so stelle ich mir einen modernen Webserver vor. Ebenso positiv: Die Administration via Webinterface. Kostenlos und als PHP 5.2 und PHP 5.3 Version, derzeit schwerpunktmäßig im Einsatz: PHP 5.2
  • SVN und Vercue (SVN Monitor)
    Ohne kommt man nicht mehr hin. Versionskontrollsysteme (VCS) sollten in keinem professionellen Umfeld fehlen und bei der Menge an verschiedenen Kundensystemen und -seiten brauche ich auch eine schnelle Übersicht über alle SVN Projekte auf dem Server (wer hat was wann eingecheckt in der Systray) und bekomme bei ganz wichtigen Projekten sogar eine Mail, sobald eine Änderung eingeht. Sehr nützliches Werkzeug. Derzeit beim Test von SubversionEdge, mal sehen…
  • FileZilla
    Irgendwie müssen die neuen Daten ja auf den Kundenserver, oder? Und die Auftritte der Neukunden müssen auch zu mir kommen. Filezilla macht das alles und zur Not sogar gleichzeitig auf mehreren Kundenservern. Dank Filterlisten, Serververwaltung und Warteschlange.
  • Outlook (ja, MS Office)
    Outlook hilft mir, meine Mails, meine Termine usw. zu organisieren, so dass ich den Kopf frei habe, mich um die Programmierprobleme zu kümmern. Ich weiß, es gibt andere Götter Mailprogramme, aber ich komme im „Buisness“ am besten mit Outlook klar.
  • Firefox mit Firebug
    Muss ich dazu noch irgendwas sagen?
  • Zend Toolbar
    Nützliches AddOn, für Firefox, für Chrome und IE
  • WebDeveloperTools
    Sehr nützliche Erweiterung für den Firefox.
  • Chrome, Opera, IE9
    Alle nennenswerten Browser zum testen der Seiten; ich favorisiere eigentlich keinen, aber Chrome läuft gefühlt am flüssigsten, gefolgt von IE9. Opera nehme ich nur zum testen.
  • devart MySQL Studio
    DAS Tool für MySQL und die erstellung an Analyse komplexer Querys. Irgendwann schreibe ich mal einen längeren Beitrag dazu. Auf jeden Fall solltet ihr euch das Programm mal ansehen, wenn ihr vorhabt, komplexe Querys zu erstellen oder vorhandene Querys zu optimieren. Die Express Version ist kostenlos zum reinschnuppern 😉
  • Notepad2
    So schnell wie das original, aber zusätzlich noch Sytax Coloring und Zeilennummern. Für schnelle Sachen („kannste-mal-eben-…“) super.
  • Notepad++
    Sollte mittlerweile auch jeder auf dem System haben, also keine weiteren Worte.
  • Sysinternals Suite (WSCC – Windows System Control Center)
    Aus der Sysinternals Suite nutze ich vor allem den Process Explorer und „autoruns“, das WSCC hält mir dabei alles up-to-date, ohne dass ich immer nachsehen muss.
  • VirtualBox
    Einmal Linux blau, einmal Windows 98, einmal MacOS in der Dose … Virtualisierung ist toll.
  • KeePass
    Passwörter sollte man gut wählen. Dabei werden die so komplex, dass die sich kein normaler Mensch merken kann. Aber dazu gibt es ja KeePass. Keine Angst vor 30-stelligen Kundenpasswörtern 😉
  • Screenpresso
    Klein, nützlich und im SysTray, so könnte man Screenpresso bei 99% seiner Zeit beschreiben. Das restliche Prozent hat es in sich. Screenshots kennt jeder, muss jeder ab und zu mal machen, der Druck zur „Druck“ Taste ist nicht weit … und dann? Bildbearbeitung auf (dauert gefühlte 2 Tassen Kaffee) nur um ein paar lästige kanten und den Desktop zu entfernen. Screenpresso nimmt nur einen Teil des Bildschirms auf. „Druck“ drücken, Bereich entweder auswählen (Programm-Box Wahl) oder per Bereichsauswahl markieren, LMT drücken und schon kann man den Screenshot sogar nochmal – grob – Nachbearbeiten und speichern. Wer oft Screenshots machen muss, der wird begeistert sein. 
  • Launchy
    Kennt jeder Windows User: Start-Programme und das große Suchen, wo denn nun der Shortcut ist. Den Desktop mit allen Verknüpfungen auf alle Programme voll zu pflastern kann es aber auch nicht sein. Mit Lanchy kein Thema, das Tool scannt das Programme Menü (und auch Verzeichnisse eurer Wahl) und legt einen Index an. Dann startet man das Tool per Tastatur-Shortcut (STRG+ALT+BACKSPACE bei mir) und gibt z.B. „wor“ ein und schon erscheint im Auswahlmenü „Word 2007“, einmal ENTER und das Programm startet. Launchy lernt sogar hinzu. Wenn du W7 eingibt und Word aus der Liste suchst, wird beim nächsten mal schon Word vorgeschlagen. Die restliche Zeit verbringt Launchy nur im RAM und taucht sonst nirgends auf.
  • iTunes 
    #Uuaaaa, und schon schreien wieder alle: Apple-Fanboy, ist was mit Windows… Nein, iTunes ist aus 2 Gründen drauf: SongBird schmiert mir ständig ab und ruiniert unter Windows7 mein Theme (will immer auf das sehr schnörkellose Theme wechseln) und zum anderen läuft es flüssig und spielt ab, was ich ihm serviere, vor allem Podcasts kommen automatisch. Einkaufen würde ich aber im Apple Store nicht 😉
    Ach ja: Falls irgendwann mal SongBird mit Windows7 Unterstützung da ist, bitte einen Hinweis an mich.
  • TweetDeck
    Zum Twittern und „Twitter-Übersicht-behalten“ reicht es mir völlig.
  • Windows7
    Kein konfigurieren, kein „apt-get irgendwas“, kein „sudo kramp config –install-doch-bitte-endlich“, kein „man warumgehtdasnicht“ … einfach problemlos arbeiten!
    Man merkt schon: Ich komme mit Windows einfach besser klar. Zum arbeiten ungeschlagen, der Rest ist gut für Webserver und Pinselschwinger 😉
  • Selenium
    Steht mit Absicht unten. Das Tool ist mir bekannt, habe es bisher aber nur selten eingesetzt, da der Suppport für moderne Firefox Versionen nicht da war. Mit der neuen 2.0 ist das Ding nun wieder in der Gegenwart und ich plane, es häufiger einzusetzen.
So, ich hoffe, ich habe nichts vergessen.
Und wie sieht deine Entwickler-Werkzeugkiste für 2011 aus?

Neues Mobile – Template

Ich habe nun endlich auch eine vernünftige Mobilversion meines Blogs. Bei Blogger kann man diese (derzeit noch) neue Funktion aktivieren, indem man über die Adresse http://draft.blogger.com geht und sich dort mit seinen Blogger-Daten einloggt oder direkt eingeloggt draufklickt.

Hier mal ein Screenshot vom derzeit aktuellen Mobilthema:

Das ganze ist derzeit noch im „Draft“-Status. Sobald Google die neuen Blogger-Funktionen bereitstellt, die derzeit schon in den USA aktiviert werden, wird sich das ganze sicher noch farblich besser anpassen lassen.

Ich finde das ganze schon jetzt super, vor allen Dingen viel besser auf einem Smartphone lesbar als die „normale“ Seite, die man dann nicht mehr lesen kann.

Und an der Stelle gleich mal meine Frage: Wer schaut sich dieses Blog in der Mobilfassung an und wie findet ihr dieses neue Mobilthema? Würde mich ehrlich interessieren.