Qualitätsjournalismus muss unterstützt werden

Bis vor kurzem sagte mir der Name Richard Gutjahr genau: nichts. Vor einigen Tagen erfuhr ich über Twitter, dass der freie Journalist zufällig in der Gegend war und kurzerhand beschlossen hatte, nach Kairo zu reisen und direkt vor Ort zu berichten. Gutjahr wird vor allem als mediengeiler Vor-Dem-Applestore-Steher bezeichnet (er war der erste weltweit, der das iPad gekauft hat), der sich nur selbst inszenieren möchte und völlig naiv an die Sache heran geht (siehe Update). Dem mag man zustimmen und es ist sicher eine berechtigte Kritik, jedoch sollte man eins nicht vergessen: er ist dort. jetzt. und er berichtet den ganzen Tag über live. Punkt.

Völlig egal, warum jemand sowas macht – wichtig ist, dass er es tut und uns alle teilhaben lässt. Wenn ich dann von Leuten derartige Blogeinträge lese, wird mir schlecht. Denn das einzige, was ich da rauslese ist Neid. Aber gut, auch solche Menschen muss es geben.

Natürlich schreibe ich diesen Beitrag jetzt nicht nur, um euch darauf hinzuweisen, dass Richard diese Aktion durchzieht oder dass es Leute gibt, die immer was zu meckern haben. Nein, es geht mir da um etwas ganz anderes: Wie ihr vielleicht aus den etwas spärlichen Berichten der restlichen Medien erfahren habt (wobei hier Spiegel Online mal wieder eine sehr positive Ausnahme darstellt), kann man sich derzeit in Ägypten nur sehr schlecht online betätigen. Gutjahr geht an die Sache etwas pragmatischer ran und nutzt einfach sein Handy als Internetzugang. Da wir selbst in diesen modernen Zeiten noch immer unter absurd hohen Roaming-Kosten im Ausland leiden müssen, wird er verständlicherweise eine dicke Rechnung bekommen. Um diesen unschönen Nebeneffekt etwas abzufedern, hat er sowohl einen Flattr Button als auch die Möglichkeit der Spende über Paypal eingerichtet.

Meine Bitte ist nun: spendet ihm einfach ein paar Euro über Paypal oder Flattr’t ihn, damit diese Reise nicht zum (finanziellen) Fiasko wird. Das tut niemandem wirklich weh, hilft aber einem tollen Menschen gerade sehr viel! Und bevor ihr fragt: ja, ich hab gerade eben auch einen kleinen Betrag gespendet.

[Update]
hier gibt es ein interessantes Interview mit Gutjahr, der doch schon Erfahrung als Reporter in Krisengebieten vorweisen kann: meedia.de

Links:
Richard Gutjahr – Unterwegs nach Kairo

Tracking und Datenschutz – die Schreckensgeschichten des Internets

Die Benutzer des Internets kann man, wenn man es zynisch sieht, in zwei Gruppen einteilen: Paranoide und Menschen mit Privatsphären-Tourrette. Natürlich ist das überspitzt und es gibt viele Nuancen dazwischen, aber beide Tendenzen sind auf jeden Fall vorhanden.

Ich persönlich sehe mich eher in der Hälfte der offenen Menschen, die Privatsphäre etwas differenzierter definieren als andere. Davon kann man nun halten was man will – ich denke aber, dass jeder so glücklich werden soll, wie er das für richtig hält. Nun befinden wir uns aber im Internet, welches eine extrem große Reichweite bietet, aber nie vergisst. Und da ist es für meine Fraktion ab und zu nicht so leicht zu unterscheiden, ob man nun etwas öffentlich machen soll oder nicht. Aber immerhin hat man darüber noch die Kontrolle.

Anders sieht es jedoch mit den Informationen aus, die Benutzer ohne ihr wissen hinterlassen. Hier kommen wir nämlich zum sog. Tracking. Dabei wird versucht, Benutzer eindeutig zu identifizieren – aber nicht mit Adresse und Telefonnummer. Es geht nur darum, zu erkennen, was ein und die selbe Person auf einer Seite so macht. Denn als Seitenbetreiber bzw. als Anbieter einer Online-Plattform will und muss man teilweise wissen, wie einzelne Klickpfade aussehen – also die Wege, die Benutzer auf den eigenen Seiten gehen. Das mag erstmal nach Spionage klingen, ist es aber nicht. Wobei dies natürlich eine Frage des Standpunktes ist.

Doch welche Intentionen hat denn der Seitenbetreiber? Nehmen wir mal zwei Beispiele: Ein Betreiber eines Blogs und ein Affiliate Netzwerk. Für alle, die nicht wissen was letzteres ist: Affiliate Links bieten die Möglichkeit, dass man z.B. Onlineshops oder bestimmte Produkte seinen Lesern oder Freunden empfiehlt und dafür eine kleine Belohnung von einigen Cent oder auch einigen Euros bekommt. Affiliate Netzwerke dienen als Treffpunkt für beide Parteien. Aber dazu später mehr.

Kommen wir erst einmal zum Blogbetreiber. Der schreibt munter vor sich hin, sucht sich verschiedene Themen und versucht so, eine möglichst große Reichweite zu bekommen. Denn sind wir mal ehrlich, so hat jeder Blogger ein kleines Ego und jeder Leser ist Balsam dafür. Nur leider hat er ein Problem: er ist blind. Er kann nun zwar anhand von Kommentaren und Verlinkungen erkennen, ob seine Texte gut sind und vor allem ob sie auch gefunden werden, oder ob dem nicht so ist. Sprechen wir von einem Blogger, der sein Hobby zum Beruf gemacht hat, so muss er seinen Werbekunden auch irgendwie zeigen können, dass jemand seinen Blog liest. Und hier kommt das Tracking ins Spiel. Man kann damit darstellen, woher die Besucher kamen, welche Suchbegriffe sie in Suchmaschinen verwendet haben um einen Beitrag zu finden, wie lange sie da geblieben sind und ob sie schon einmal da waren.

Das mögen auf den ersten Blick nicht notwendige Daten sein – was sicher der Fall ist. Aber für den Blogbetreiber sagen sie viel aus: Habe ich viele Stammleser oder kommen die meisten nur einmal vorbei? Welche meiner Artikel erreichen viele Menschen, bei welchen geht so gut wie gar nichts? Nach was suchen Menschen, die mich finden? Den Blogbetreiber interessieren an dieser Stelle keine einzelnen Nutzer. Für ihn ist einfach eine Auswertung über alle hinweg interessant. Sicher könnte er auch ohne ein Tracking auskommen, aber dann ist der Blog mehr oder weniger ein Blindflug. Sofern, wie erwähnt, Werbekunden mit im Spiel sind, hat man dann ein ernstes Problem.

War das Tracking im Blog noch eher ein sehr positives, aber dennoch optionales Feature, so gibt es Anwendungen im Internet, die auf derartige Technologien einfach angewiesen sind. Möchte man sich im Affiliate Geschäft betätigen, so haben beide Seiten ein Problem: ich als Seitenbetreiber muss irgendwie beweisen, dass ich Leute zum beworbenen Angebot geleitet habe, der Werbepartner muss prüfen, ob denn durch die Empfehlung auch ein Kauf erfolgt ist. Man könnte das nun auf reiner Vertrauensbasis durchziehen, aber leider sind nunmal nicht alle Menschen ehrlich und so erübrigt sich diese Option. Mittels Tracking durch das Affiliate Netzwerk z.B. stellt dies aber kein Problem mehr dar. Sowohl der erste Klick des Besuchers als auch der evtl. daraus resultierende Verkauf sind messbar. Hier ist es absolut notwendig, die Daten auf den einzelnen Benutzer heruntergebrochen zu bekommen. Dabei ist aber völlig uninteressant, wer die Person eigentlich ist. Es geht nur darum zu sehen, ob eine Person auf den Affiliate Link geklickt und anschließend auch wirklich gekauft hat. An dieser Stelle wird übrigens meistens einfach ein Cookie verwendet, da dies die beste Zuordnung ermöglicht. Leider ist das Cookie aber auch sehr schnell durch den User gelöscht.

Zwei einfache Beispiele, jedoch zeigen sie einigermaßen, worauf ich hinaus will: es gibt gute Gründe, warum Benutzertracking nichts böses sein muss. Natürlich wird es, wie so oft im Leben, auch schwarze Schafe geben – aber wollen wir deshalb auf alles positive verzichten?

Nach diesen Zeilen wird es sicher bereits bei den Paranoiden brodeln – sie sehen ihre Privatsphäre verletzt und wollen aus Prinzip nicht, dass jemand sieht, was sie tun. Das ist ein zu respektierendes Recht, jedoch muss man eine große Einschränkung vornehmen: Das Internet, so wie wir es derzeit kennen, ist nicht kostenlos. Es erscheint auf den ersten Blick so, aber bezahlen müssen wir trotzdem. Nur die Währung ist eine andere. Denn aus Sicht eines Werbers ist das Netz die beste Erfindung nach der Werbung selbst. Hat man bei allen anderen Medien keinerlei Möglichkeiten der Rückmeldung, ob eine Anzeige gut ankommt bzw. wirkt, so hat man hier beim einzigen Medium eine direkte Rückmeldung. Man kann Werbung auf einzelne Personen zuschneiden und so die Reichweite erhöhen. Aber leider ist Werbung in unserer Gesellschaft sehr negativ belastet und wird eher als lästig denn förderlich bewertet.

Nun stehen wir vor dem Dilemma, dass wir einerseits möglichst alles kostenlos haben wollen, andererseits aber auch nichts kostenlos ist. Betreibt man einen Blog oder ein Newsportal, dann kostet dies zunächst erstmal Geld. Je nach angepeilter Anzahl von Benutzern variiert dieser Preis von sehr günstig bis sehr teuer. Hätten wir den Sozialismus dann wäre das kein Problem, aber da wir in der Marktwirtschaft leben muss dieses Geld irgendwo her kommen. Kann der kleine Blogbetreiber seine Tätigkeit noch als Hobby verbuchen und dafür monatlich einen kleinen Betrag investieren, so haben Seiten wie z.B. der Spiegel, Golem, Engadget usw. ordentlich an Ausgaben zu begleichen. Da niemand einen derartigen Aufwand als Minusgeschäft hinnimmt, wird Werbung geschalten.

Warum schreibe ich das alles? Ich möchte meine Leser einfach darauf hinweisen, dass sie sich ihrer Privatsphäre bewusst werden sollen – es aber auch nicht übertreiben sollen. So lange wir munter mittels des Swift-Abkommens sämtliche Kontenbewegungen an die USA übertragen, so lange selbst die Internetseiten von Datenschützern nicht einmal ihre eigenen Regeln befolgen, so lange Politiker vom Radiergummi fürs Internet schwärmen, ja so lange sollten alle mal die Füße still halten und sich vielleicht mal auf wirklich wichtige Probleme konzentrieren. Übrigens: die Informationen, die man so beim Tracking verwendet: die IP Adresse bzw. die daraus gewonnenen Geo-Daten, installierte Plugins im Browser, evtl. das Betriebssystem und den Browser selbst, Monitorauflösung…Es gibt sicher schützenswertere Daten.

Facebook Chat mit Adium – Fehlerbehebung

Seit einiger Zeit hatte ich in Adium das Problem, dass ich zwar erfolgreich im Facebook Chat eingeloggt war und Kontakte, die mich anschrieben auch in der Kontaktliste erschienen – ich sah aber nicht, ob Kontakte online waren oder nicht. Scheinbar hat Facebook mal wieder was an der API geändert und die Jungs von Adium haben noch nicht nachgezogen.

Egal – nachdem es mich nun richtig genervt hat, habe ich mal eine kurze Recherche angestellt und schnell die Lösung gefunden. Facebook selbst gibt eine offizielle Vorgehensweise an 😉
Und zwar verwendet man nicht das Facebook Plugin, sondern das gute alte Jabber Protokoll. Und so gehts:

Bei Facebook anmelden, dann die Seite www.facebook.com/sitetour/chat.php aufrufen und dort “Adium auswählen”. Schon wird euch der Loginname angezeigt. Das Passwort ist euer normales Facebookpasswort. Tragt diese Daten als Jabber-Login ein und schon werden die Facebook Kontakte wieder korrekt angezeigt.

via apfeltalk.de

Drone im Eigenbau bekämpft Wasserstoffbalons

Leider haben mich bisher die sehr hohen Anschaffungskosten der Quadro-Copter davon abgehalten, mir so ein kleines Spielzeug zuzulegen. Ich hatte bereits vor 2 Jahren einen RC Helicopter, verkaufte ihn jedoch wieder da die Steuerung extrem kompliziert und im Outdoor Bereich fast unmöglich war. Sicher ändert sich das mit größeren und teureren Modellen, aber so viel Geld ist mir so ein Spielzeug nun auch wieder nicht wert. Quadro- und Tri-copter (steht für 4 bzw. 3 Propeller) sind wesentlich besser, da sie automatisch die Lage des Helicopters ausgleichen und damit einen nahezu perfekten Schwebezustand ermöglichen – sie können in der Luft “stehen”. Aber auch hier sind die Anschaffungskosten leider noch immer sehr hoch.

Wenn ich mir nun dieses Video anschaue, fangen gleich wieder die Finger an zu jucken. Ein paar schwedische RC-Freaks haben einen Tricopter gebaut, der neben der Flugtechnik auch über Feuerwerks-Körper verfügt. Mittels Onboard-Kamera bekämpfen sie damit Wasserstoff-Balons, was ziemlich cool aussieht. Aber schaut selbst:

Baut mir jemand so ein Teil? Danke 😉

via engadget

Aufräumarbeiten

So, hab endlich mal den Blog etwas entschlackt, alle Facebook Like-Buttons usw. entfernt (bis auf die Facebook Freunde Box) und das Lightbox Plugin repariert, damit alle etwas größeren Bilder nun wieder schön im Web 2.0 Look angezeigt werden. Soweit ich das überblicken kann, läuft bytelude.de nun wieder fehlerfrei – sollte euch etwas gegenteiliges auffallen, bin ich natürlich für jeden Hinweis dankbar.

Just Mobile GUM Pro – der universelle Akku für Unterwegs

Seit ich auf die modernen Smartphones und vor allem die permanente Online-Verbindung umgestiegen bin, hat sich – neben den ziemlich happigen monatlichen Kosten – ein großer Nachteil gezeigt: die sehr geringe Akkulaufzeit. Hier muss ich sagen, dass sich Android-Geräte und iPhone nicht viel nehmen. Beim heutigen Stand der Technik sollten 3 Tage Laufzeit bei normaler Nutzung schon drin sein. Habe ich zuletzt mit dem Milestone nicht mal einen ganzen Tag geschafft, so komme ich mit dem iPhone zumindest schon mal auf 1,5 Tage. Aber auch dies ist inakzeptabel. Gerade beim iPhone Zubehör gibt es ja den einen oder anderen interessanten Zusatzakku – sei es in einer Schutzhülle versteckt oder zum Anstecken – was aber alles erstens relativ teuer ist und zweitens auch eher unpraktikabel.

Bei meiner Recherche auf Amazon stieß ich dann auf das GUM Pro Mobile Battery Pack. Auf den ersten Blick ist da kein Unterschied zu den iPhone-Ansteck-Akkus zu erkennen, auf den zweiten Blick sieht man aber den sehr großen Vorteil: das Teil ist nicht auf einen Stecker festgelegt, sondern bietet einfach einen USB Port, der Strom liefert. Man kann so ziemlich jedes USB Gerät daran anstecken und unterwegs laden. Mein iPhone 4 kann ich damit ca. 2x-2,5x komplett aufladen – selbst für das iPad ist genug Saft vorhanden. Das Gerät selbst wird auch über USB geladen. Damit es zu keiner Verwechslung kommt, ist dieser Ladeport ein Mini-USB Stecker, der eigentliche Stecker für Handy, iPad, PSP, Navi usw. ist dann ein ganz normaler USB Port.

Zwar schreckten mich die 41,90€ erst einmal ab, im Nachhinein betrachtet hat sich die Investition doch gelohnt. Egal wo ich hin will und egal, wie mein Akkustand gerade aussieht – ich hab das Teil überall dabei und brauch mir also zumindest um das Thema Strom keine Sorgen machen. Auch längere Bahnreisen, auf denen man sich den einen oder anderen Film anschauen möchte sind kein Problem mehr, da der Akku genug Strom abgibt, um das Gerät während des Ladens trotzdem benutzen zu können.

Nachdem ich den Akku das erste mal geladen hatte und mein iPhone aufladen wollte, war ich erschrocken – die Akkuanzeige ging gleich auf sehr geringe Restladung runter. Ein kurzer Blick in die Kundenrezensionen zeigte mir aber, dass das Problem bekannt ist: der GUM Pro benötigt ein paar Ladezyklen, bis er seine volle Kapazität von 4400mAh erreicht. Dieses Verhalten legt eigentlich jeder Akku an den Tag, nur hier ist es besonders deutlich. Nach einigen Monaten Benutzung muss ich sagen, dass die Kapazität nach einigen Ladezyklen richtig gut ist und ich wie gesagt mehr als 2 komplette Ladungen schaffe.

Wie ihr auf den Fotos sehen könnt ist die Ausstattung funktional gehalten – 2 USB Ports, ein Schalter und 3 LEDs für die Ladeanzeige. Steckt man den Akku selbst zum Laden an, dann verwandelt sich eine LED in eine Ladeanzeige – von Rot wechselt sie mit wachsendem Ladestand zum grün. Die verwendete Technik ist allerdings ziemlich einfach gehalten und so ist man gut beraten, direkt senkrecht auf die LED zu schauen, da sie von der Seite betrachtet sehr schnell grün erscheint. Bei direktem Blick ist sie aber meistens gerade bei orange angelangt. Eine zusätzliche LED hätte hier vielleicht nicht geschadet. Der Ladevorgang dauert ca. 8 Stunden.

Fazit:
Der GUM Pro hat meine mobile Nutzung echt erleichtert. Zumindest brauche ich, neben gelegentlichen Problemen mit dem Empfang, keine Akkuprobleme fürchten, sollte ich mal länger weg sein. Größe und Gewicht sind noch im Rahmen, um den Akku überall mitzunehmen, einzig die entsprechenden Ladekabel könnten dann der Schachpunkt sein. Von mir gibt’s eine klare Kaufempfehlung.

Links:
Just Mobile GUM Pro

[Quicktip] mit MYSQL nach % (Prozent) suchen

Gestern stand ich vor der Aufgabe, Datensätze in der Datenbank zu finden, die ein Prozentzeichen an einer bestimmten Stelle in einem Wort hatten. Sagen wir, ich wollte nach “Wo%rt” suchen. Nun könnte man einfach ein

SELECT * FROM `test` WHERE wert LIKE 'Wo%rt'

ausführen, wird aber sehr schnell feststellen, dass das gewünschte Ergebnis bzw. der gewünschte Datensatz zwar dabei ist, aber auch alle weiteren Einträge, die mit “Wo” anfangen und mit “rt” enden – wie z.B. “Wohnort”. Das Prozentzeichen (“%”) und der Unterstrich (“_”) dienen in MySQL als Platzhalter – % für beliebig viele Zeichen beliebigen Typs und _ für ein beliebiges Zeichen.

Pfiffig wie ich war nahm ich den Standard-Escape-Character unter Unix – das Backslash (“\”), um das % zu entschärfen:

SELECT * FROM `test` WHERE wert LIKE 'Wo\%rt'

Natürlich funktionierte das so auch nicht, denn das Backslash ist eben nicht für das Escaping unter MySQL gedacht. Nach ein wenig Recherche im Netz fand ich dann heraus, dass man selbst definieren muss, was das Escape-Zeichen sein soll. Und das geht so:

SELECT * FROM `test` WHERE word LIKE 'Wo!%rt' ESCAPE '!'

In diesem Fall habe ich also das Ausrufezeichen als Escape Character definiert, man kann aber jedes andere Zeichen einsetzen – außer natürlich % und _. Man kann für jedes einzelne Like ein eigenes Escape Zeichen definieren.

Lebenslauf

Jeder gute Blog hat einen Bereich, in dem sich der Autor selbst vorstellt – man will ja schließlich wissen, mit wem man es hier zu tun hat. Da dieser Bereich bisher leicht vernachlässigt wurde freue ich mich umso mehr, endlich den entsprechenden Bereich fertig gestellt zu haben. Ihr findet den Text hier oder ihr klickt einfach rechts im Menü auf “about”. Anmerkungen und Korrekturen sind natürlich immer herzlich willkommen.

statische Code-Analyse mit dem php code sniffer

Foto von Dennis Wegner

Programmierer machen, wie jeder andere Mensch, auch Fehler. Nun gibt es zum einen Fehler in der Syntax, auf der anderen Seite gibt es die Logik-Fehler. Beide verursachen, dass ein Programm entweder gar nicht oder nicht wie erwartet funktioniert. Normalerweise kann (und muss) man diese Fehler entdecken – manchmal geht das leicht, manchmal aber auch nicht. Syntax-Fehler stellen hier den einfachsten Kandidaten dar, da diese meist schon von der verwendeten IDE erkannt werden, spätestens aber bei der Ausführung des Programms ein Fehler auftritt. Logische Fehler sind da schon etwas kniffliger, da sie rein aus Programmiersicht fehlerfrei sind. Nur die Art und Weise, wie sie ein Problem behandeln entspricht nicht dem, was der Programmierer ursprünglich vor hatte.

Zu diesen beiden Kandidaten gesellt sich aber noch eine weitere Gattung, nämlich die Art und Weise, wie Code geschrieben wird. Jeder Programmierer hat – genauso wie jeder Mensch die eigene Handschrift – einen eigenen Programmierstil. Das ist zuersteinmal nichts verwerfliches und wird weder Probleme in der Syntax noch in der Logik hervorrufen. So gesehen gibt es aus betriebswirtschaftlicher Sicht keinerlei Notwendigkeit, sich darum zu kümmern. Problematisch wird es aber dann, wenn mehrere Entwickler mit einem Projekt beschäftigt sind. Spätestens hier treffen Welten auseinander und es kann durchaus vorkommen, dass völlig korrekter Code einfach nicht mehr bzw. nur sehr schwer lesbar ist. Bei geringem Umfang stellt das nicht das große Problem dar, wenn man allerdings mit komplexen Projekten zu tun hat kann dies zu einem großen Hindernis werden. Das fiese daran ist, dass man das Problem anfangs einfach nicht erkennt. Wenn es dann auftritt, ist es meist zu spät.

Um dem Herr zu werden, setzen viele Unternehmen und Entwickler auf Coding-Standards. Dabei handelt es sich um Regeln, wie Code formatiert werden muss und welche Lösungswege nicht verwendet werden sollten. Oder eben, welche Prioritäten bestimmte Lösungswege haben. Dabei geht es z.B. um die Art und Weise, wie Klammern gesetzt werden, die Variablen formatiert werden, wie Klassen und Kontrollstrukturen (Schleifen usw.) auszusehen haben usw. Gerade große Open Source Projekte mit mehreren hundert oder gar tausend Entwicklern müssen einfach derartige Regeln definieren, da sonst reinstes Chaos entsteht. Das würde dann dazu führen, dass Code zwar sehr gut, aber aufgrund von schlechter Lesbarkeit nicht mehr wartbar wäre. Und somit leider unbrauchbar sein würde.

Ok, nun haben wir die Theorie geschafft. Nun kann man die Regeln definieren und jeder hält sich dran, aber wie es so bei den Menschen ist, unterlaufen einem Fehler, man wird faul oder man hat einfach keine Lust auf die Regeln. Die gegenseitige Kontrolle von Code mag bei kleineren Mengen noch durch Menschen machbar sein, wenn ein Projekt aber aus mehreren zehntausenden Zeilen Code besteht, ist das auch nicht mehr machbar. Und an dieser Stelle setzt man auf statische Code-Analyse. Mit den entsprechenden Tools kann man Code analysieren und anschließend anhand definierter Regeln auswerten lassen.

Eines dieser Tools, und das sagt ja schon die Überschrift, befasst sich mit der statischen Analyse von php Code und nennt sich “php code sniffer”. Das Tool ist kostenlos und kann über PEAR geladen werden:

pear install PHP_CodeSniffer-1.3.0RC2

Die Version 1.3 RC2 ist die derzeit aktuelle Version, um auf dem neusten Stand zu sein schaut doch einfach mal hier nach, welche die aktuelle Version ist.

Über die Console ist das Tool nach erfolgreicher Installation mittels “phpcs” verfügbar. Der Aufruf ist dann ganz leicht:

phpcs --standard=zend class.php

In diesem Beispiel wurde die Datei class.php auf die Coding-Standards von Zend hin überprüft. Das Ergebnis sieht dann ungefähr so aus:

FILE: /.../class.php
--------------------------------------------------------------------------------
FOUND 3 ERROR(S) AND 0 WARNING(S) AFFECTING 3 LINE(S)
--------------------------------------------------------------------------------
1 | ERROR | End of line character is invalid; expected "\n" but found "\r\n"
9 | ERROR | Expected 0 spaces before opening brace; 2 found
11 | ERROR | Spaces must be used to indent lines; tabs are not allowed

Als kurze Erklärung: In Zeile 1 wurde ein falscher Zeilenumbruch verwendet (kann passieren, wenn man mit Windows und Linux/Unix im Wechsel am gleichen Code arbeitet), in Zeile 9 waren zwei Leerzeichen vor der öffnenden geschweiften Klammer und in Zeile 11 wurde mit Tabs an Stelle von Leerzeichen eingerückt. Die Datei an sich funktioniert tadellos, allerdings verstoßen diese Punkte eben gegen die Konventionen von Zend.

Wie ihr seht, ist es mit dem php code sniffer sehr schnell und vor allem sehr einfach möglich, euren Code auf Regeln hin zu untersuchen und Fehler dieser Art zu finden. Neben den Regeln von Zend gibt es noch einige weitere vorgefertigte Rules, die ware Stärke zeigt das Tool aber mit der Möglichkeit, eigene Regeln zu definieren. Da ich den Umfang dieses Beitrags nicht sprengen will, schaut euch doch einfach mal folgenden Beitrag auf “php hates me” an, der genauer auf dieses Thema eingeht: PHP Code Sniffer – Eigene Regeln erstellen.

Links:
php code sniffer
phphatesme.com