CakePHP – Ein Review

Heute fragte mich jemand, ob ich eigentlich etwas kennen würde, um mit PHP „schöner“ zu programmieren. Ich dachte zugegebener Maßen erst an einen Editor (da würde ich PhpStorm (gibt’s für Studenten umsonst!) empfehlen), es wurde dann aber relativ schnell klar, das es eher um sowas wie ein PHP-Framework geht. Um es gleich mal klar zu sagen: Ohne irgendein Framework würde ich nichts in PHP schreiben, was länger als 100 Zeilen ist. Man muss das Rad ja nicht immer neu erfinden, und dabei die gleichen Sicherheitslücken wieder einbauen 🙂

Nun entwickele ich für meinen Hiwi-Job schon rund 4 Jahre in PHP. Dabei habe ich die erste Zeit eine Anwendung weiter gepflegt, die ohne ein Framework geschrieben war. Nach einiger Zeit war klar, das es so nicht weitergehen konnte, die Anwendung war, auch durch ihr Alter und die Weiterentwicklung von PHP, unwartbar geworden und lief mit schnellen Schritten auf das End-Of-Life „ihrer“ PHP-Version zu. (Mehr sage ich jetzt nicht, der Autor ließt hier mit 🙂 ). Es musste also eine Neuentwicklung her, natürlich auf Basis eines Frameworks. Damals wurde mir CakePHP empfohlen (damals noch Version 2), was ich dann relativ unreflektiert übernommen habe. Jetzt nähert sich die Anwendung langsam der Fertigstellung, inzwischen basierend auf CakePHP 3. Im Laufe der Entwicklung hat sich eine gewisse Hassliebe zu Cake entwickelt…

Weiterlesen

ftRoboExt: Software

Nach einiger Pause gibt es mal wieder etwas neues zu meinem selbstgebauten Erweiterungsmodul „ftRoboExt“. Hardware und Gehäuse waren ja schon fertig, nun fehlte eine finale Version der Software. Inzwischen ist das ganze Projekt übrigens auf GitHub zu finden.

Das Protokoll für die Kommunikation zwischen Interface und Extension ist recht einfach, es ist im Prinzip ein SPI-Bus mit einem zusätzlichen Bestätigungssignal und einer Adresse. Über drei Adressleitungen wählt das Interface aus, mit welcher Extension es sprechen möchte. Die originalen Extensions lassen sich verketten, dabei wird das Signal aber nicht ganz unverändert durchgeschleift, sondern die Adresse wird von jedem Modul um ein verringert. Auf diese Weise ist jedes Modul adressiert, wenn es Adresse 0 sieht (das erste direkt, das zweite weil es 1-1=0 sieht). Eine sehr intelligente Lösung, denn dadurch wird die Adresse des Moduls einfach durch die Verkabelung bestimmt.

Wenn das Modul die Adresse 0 sieht, zieht es EM-ACK (die Bestätigungsleitung) auf Low. Nun beginnt das Interface 6 Bytes zu senden, die Extension gibt nach jedem Byte einen kurzen High-Puls auf der EM-ACK Leitung aus. Die originale Extension scheint recht langsam zu sein, so braucht sie etwa 700µs um die Adressierung zu bestätigen. Das Interface hat aber scheinbar auch kein Problem damit, wenn man schneller ist. Die 6 Bytes übertragenen Bytes enthalten die Nutzdaten, genaueres bei thkais.

Weiterlesen

Garmin Communicator Plugin und die AddOn-Signierung in Firefox

Mit Firefox 43 hat Mozilla ernst gemacht: Unsignierte AddOn werden deaktiviert, und lassen sich auch nicht mehr aktivieren. Ich dachte immer, das das kein Problem für mich sein sollte, ich konnte mich nicht daran erinnern, jemals ein unsigniertes AddOn installiert zu haben. Heute wies mich dann aber eine freundliche gelbe Leiste auf das Gegenteil hin: Um Wegpunkte von geocaching.com direkt an mein Garmin GPS-Gerät zu versenden braucht man ein AddOn von Garmin, und das ist leider unsigniert. Garmin selbst redet auf der Download-Seite nur Quatsch:

Als Hilfe hat Garmin eine sichere Verknüpfung erstellt, um den Internet Explorer-Webbrowser auf Ihrem Computer zu öffnen und Sie sicher zur gewünschten Seite bei Garmin.com weiterzuleiten.

Weiterlesen

Kurztipp: Segmentation Fault von PHP mit XDebug unter Ubuntu 15.04

Unser Entwicklungsrechner lief hier lange unter Ubuntu 14.10 LTS, aber nach dem jetzt Ubuntu 15.04 da war, haben wir uns doch mal entschlossen, ein Update zu fahren, in der Hoffnung dadurch ein paar Probleme loszuwerden, die wir hatten. (Und ich wollte mal sehen, wie sich Systemd macht…). Abgesehen von einem kleinen Stromausfall während des Updates und darauf folgender Reparatur auf der Textkonsole (bei Windows wäre ein Neuinstallation nötig gewesen!), lief auch alles gut.

Was leider nicht mehr wollte, war Xdebug. Ohne Debugger liefen die PHP-Skripte perfekt, aber wenn man sie debuggte, wurde komischerweise teilweise Variablen nicht angezeigt und es kam zu sehr unerklärlichen Exceptions, gefolgt von einer tollen Meldung im Apache Log:


[core:notice] [pid 13686] AH00052: child pid 14595 exit signal Segmentation fault (11)

Weiterlesen

Opertunistic Encryption mit Firefox 37 und Ubuntu 14.04 LTS

Firefox 37 hat ein neues Feature: Opertunistic Encryption, oder auch „TLS for http://“. Die Idee ist einfach: Wir versuchen einfach mal, die Seite über HTTPS zu laden, auch wenn das Zertifikat nicht nicht stimmt, behaupten aber auch nicht, die Seite wäre sicher. Einfach, aber wirkungsvoll. Ich finde es aktuell schrecklich, das es entweder verschlüsselt und authentifiziert mit teurem Zertifikat, oder völlig unverschlüsselt gibt. Sollte nicht viel mehr der Unterschied verschlüsselt und nicht authentifiziert (http) oder verschlüsselt und authentifiziert (https) sein?

Natürlich ist es ein leichtes, die Verschlüsselung auszuhebeln, wenn man ein aktiver Angreifer/MITM ist. Aber es hilft gegen passives Belauschen. Und das muss nicht mal die NSA sein, es geht auch um Sachen wie FireSheep. Auf jeden Fall ist die Idee das man so, wenn möglich, ein verschlüsselte Verbindung bekommt, aber da man ja nicht weiß, mit wem man redet, behauptet niemand, das die Verbindung sicher sei.

Weiterlesen

Kurztipp: VPN Verbindungen unter Windows zurücksetzen

Irgendwie hatte ich es geschafft, die Netzwerkeinstellungen von Windows völlig zu zerlegen. Ich konnte keine Verbindung mehr zu einem VPN herstellen, und bei dem Versuch ein bestehendes VPN zu ändern oder auch nur zu löschen ist am Ende der komplette Windows-Explorer abgestürzt.

Ein Hinweis fand ich im Geräte-Manager: Dort wurden (evtl. versteckte Geräte einblenden) ein paar „WAN Miniport“s angezeigt, die ein gelbes Ausrufezeichen hatten. In den Details wurde dann ein „Fehler 31“ erwähnt. Leider ließen sich diese Geräte auch in keinster Weise löschen oder reparieren. Zu Fehler 31 findet man sogar direkt bei Microsoft den Tipp, dieser Fehler würde auftreten, wenn das Gerät nicht gelöscht werden kann, weil es nicht richtig installiert ist 😉 . Man würde es loswerden, indem manuell irgendeinen Treiber installiert, um es dann zu löschen (gleich mehr dazu). Das hat leider auch nicht geholfen, nach einem Reboot waren die Geräte und die Probleme wieder da.

Jetzt habe ich noch mal ein wenig im Netz gesucht, und bin dabei auf diesen Tipp gestoßen, und er hat funktioniert!

Weiterlesen

OpenStreetMap Karten auf Garmin Geräten und in BaseCamp verwenden

Jaja, die Karten. Die Cash-Cow schlechthin für Anbieter von Navigationsgeräten. Leider macht auch Garmin da keine Ausnahmen, und legt seinen GPS-Geräte nur eine Weltkarte bei, die kaum mehr aus Autobahnen enthält. (Auch wenn bei den Straßennavis ja wohl teilweise lebenslange Updates dabei sind).

Nun bringt einem das auf einem GPS-Geräte zum geocachen natürlich nicht besonders viel. Natürlich kann man Caches einfach mit der Kompas-Funktion suchen, aber eine Karte finde ich schon ein wenig praktischer.

Statt einen Haufen Geld für (detaillierte!) Karten auszugeben, kann man auch einfach zu OpenStreetMap greifen: Dort wird eine Weltkarte im Wiki-Prinzip gebaut; ich möchte fast behaupten, dass die (zumindest in Deutschland) besser ist als jede kommerzielle Karte. Zumindest habe ich noch keine Straße o.ä. gefunden, die nicht eingezeichnet war, oft sind sogar Trampelpfade u.ä. verzeichnet. Natürlich ist nicht alles perfekt einheitlich, gerade was die Qualitätsbewertung von Straßen angeht, daher würde ich die Karten wohl nicht für eine (Auto-)Navigation benutzen. Aber für Geocacher sind die Karten perfekt.

Weiterlesen

Ubuntu 14.04: .htaccess in Apache 2.4 wieder aktivieren

Das Update auf Ubuntu 14.04 macht dem Webentwickler wenig Spaß: Erst ist der PEAR-Installer kaputt, und dann wurde auch noch Apache auf 2.4 aktualisiert, womit sich ja doch einiges ändert. Das wichtigste dürfte wohl die Änderung an der Syntax für die Authentifizierung sein, doch auch die kleineren Änderungen machen sich bemerkbar:

Mit 2.4 wurde der Default-Wert für AllowOverride von All auf None geändert. Leider kommt Ubuntu mit einer ziemlich minimalen Konfiguration für Apache, die gar keine Einstellung für diesen Wert enthält. Dadurch werden jetzt alle .htaccess Dateien deaktiviert! Man kann sich jetzt natürlich streiten, was der sinnvollere Default-Wert ist, aber zumindest für das Desktop-Ubuntu, dass ja doch eher zum entwickeln benutzt wird, fände ich „AllowOverride All“ ganz nett. (AllowOverride steuert, welche Werte der Konfiguration in einer .htaccess Datei überschrieben werden können, besonders auch die beliebten mod_redirect Regeln. Ohne diese Regeln funktionieren die meisten Websites ja gar nicht mehr).

Weiterlesen

Ubuntu 14.04: Fehler in PEAR

Update: Inzwischen gibt es einen Fix (siehe Kommentare), nur kann der auch nicht installiert werden, weil ja der Installier kaputt ist 🙁 Also bitte ein Mal manuell zumindest das Paket „Archive_Tar“ aktualisieren, dann sollte alles funktionieren. Inzwischen landen die herunter geladenen Dateien auch nicht mehr unter /build/buildd/… sondern unter /tmp/pear/download/

So wie es aussieht hat Ubuntu momentan ein kleines Problem mit Pear, dem Packetmanager von PHP: Wenn man versucht ein Packet zu installieren oder zu aktualisieren kommt diese schöne Meldung:

Starting to download Console_Table-1.2.0.tgz (10,206 bytes)
.....done: 10,206 bytes
could not extract the package.xml file from "/build/buildd/php5-5.5.9+dfsg/pear-build-download/Console_Table-1.2.0.tgz"
Download of "pear/Console_Table" succeeded, but it is not a valid package archive
Error: cannot download "pear/Console_Table"
Download failed

Weiterlesen

Dateiendungen für Highlighting in Notepad++ einstellen

Ich habe mich heute ein wenig mit CakePHP beschäftigt (das sieht wirklich richtig gut aus), und CakePHP benutzt *.ctp-Dateien (Cake-Template soll das wohl heißen). Das sind im Grunde aber nur HTML/PHP Dateien (bzw. Fragemente davon). Also wollte ich beim Bearbeiten mit Notepad++ auch das passende SyntaxHighlighting haben.

Leider erkennt Notepad++ die Sprache der Datei an der Dateiendung (woran auch sonst) und stellt .ctp-Dateien natürlich nur als Text dar. Und das zu ändern ist gar nicht mal so einfach, denn die Einstellung dafür ist unter Einstellungen/Stile…

Stile_2013-03-29_14-19-13Dort klickt man auf die Sprache und stellt unten bei „Benutzer-Erw.“ die entsprechende Endung ein. Hat ein wenig gedauert, bis ich das gefunden habe… Möchte man mehr als eine Erweiterung haben, kann man sie einfach mir Leerzeichen getrennt eintragen 🙂

Weiterlesen