Code

Internet of Things: GPS Tracking mit LoRaWAN

Das Internet der Dinge ist ein riesiges Feld möglicher Anwendungsszenarien. Häufig geht es darum „Dinge“ zu lokalisieren. Im klassischen Umfeld werden hier zur Übermittlung von GPS-Daten Lösungen eingesetzt, die mittels Mobilfunk die jeweiligen Koordinaten an einen zentralen Server weiterleiten. Hierdurch entstehen pro Sensor monatliche Kosten für Mobilfunk, die mit LoRaWAN eingespart werden können. Weiterlesen »Internet of Things: GPS Tracking mit LoRaWAN

Screenshot von RESTClient beim Debugging von POST-Formularen

POST-Formulare mit Firefox-Addon testen [Toolbox]

  • Blog, Code

Bei der Entwicklung individueller Web-Applikationen gehören Eingabe-Formulare selbstverständlich dazu. An allen Ecken und Enden sollen Benutzer Daten eingeben und Einstellungen anpassen können. Viele dieser Formulare werden auf HTTP-Protokollebene als POST-Requests abgebildet.

Solche Requests lassen sich im Browser standardmäßig zwar wiederholen (F5 bzw. Strg/Cmd+R), aber schlecht schnell anpassen. Hilfe leistet uns in solchen Fällen ein kleines Firefox-Addon.

Weiterlesen »POST-Formulare mit Firefox-Addon testen [Toolbox]

Fehler: Maximale PHP-Laufzeit überschritten

CakePHP: debug() für große oder komplexe Objekte

  • Blog, Code
Fehler: Maximale PHP-Laufzeit überschritten

Maximale Skriptlaufzeit überschritten

CakePHP bringt die globale Funktion debug() mit, die sich bequem überall nutzen lässt, um beliebige Daten zu debuggen.
Bei Objekten, die viele tief geschachtelte Daten beinhalten, versucht debug() dann mit großem Eifer alle Daten darzustellen, die beispielsweise an einem Controller oder einem Model hängen. Je nach der tatsächlichen Datenmenge und der maximalen Skriptlaufzeit kann das dazu führen, dass das Skript im Ganzen beendet wird und der Programmablauf nicht ordentlich analysiert werden kann.

Weiterlesen »CakePHP: debug() für große oder komplexe Objekte

Suchergebnisse mit ack

ack statt grep für Code-Suche [mit CakePHP-Config]

  • Blog, Code

Für viele Entwickler ist grep unter Unix-artigen Betriebssystemen das Tool der Wahl, um Texte in Dateien zu suchen. Was liegt näher als es auch zu nutzen, um sich einen Überblick über Quellcode zu verschaffen?
Prinzipiell kann grep diese Aufgabe natürlich auch erfüllen, schließlich ist Quellcode auch nur eine Form von Textdateien. Es gibt aber mit ack ein Programm, das genau auf den Anwendungszweck Code-Suche optimiert ist.

Ack liefert in vielen Fällen einen sehr guten Überblick über fremden und eigenen Code und ermöglicht auch ohne eine ausgewachsene IDE Antworten auf Fragen wie: „Wo wird eine Funktion aufgerufen, die ich gerade bearbeiten möchte?“ oder „An welcher Stelle wird dieser Text in ein Template geladen oder ausgegeben?“

Weiterlesen »ack statt grep für Code-Suche [mit CakePHP-Config]

Segmentation Fault in libpthread mit Apache2 und APC

  • Blog, Code

Ein Segmentation Fault beim Start von Apache kann sicher viele Ursachen haben. Eine davon ist eine unscheinbare Änderung im APC-Modul, die den Apache beim Start so sehr behindert, dass er den einen Segmentation Fault wie diesen hier erleidet und nicht hochfährt:

apache2[2938]: segfault at f ip 00007ff081777854 sp 00007fff1f579a70 error 6 in libpthread-2.11.3.so[7ff08176f000+17000]

Weiterlesen »Segmentation Fault in libpthread mit Apache2 und APC

MySQL: InnoDB-Engine nicht verfügbar

  • Blog, Code

Die InnoDB-Engine für MySQL bietet gegenüber MyISAM einige Vorteile wie Transactions, feineres Locking und harte Fremdschlüsselbeziehungen.
Deshalb setzen wir InnoDB gerne für unsere Projekte ein, beispielsweise für Webapplikationen auf Basis von CakePHP.

Es kann das Problem auftreten, dass sich in einer Datenbank nur MyISAM-Tabellen anlegen lassen, aber keine InnoDB-basierten. Prüft man die verfügbaren Engines im mysql-Prompt mit dem Befehl SHOW ENGINE;, dann erhält man in etwa folgende Ausgabe:

show-engines

Weiterlesen »MySQL: InnoDB-Engine nicht verfügbar

Git Commit-Autor setzen

  • Blog, Code

Bei unseren Projekten nutzen wir gerne Git als Werkzeug, um unsere Codebasis zu versionieren und gemeinsam daran zu entwickeln.

Es gibt aber auch Fälle, in denen Git bei uns ausschließlich zur Versionierung dient, zum Beispiel für Server-Konfigurationen. Damit können wir bei Problemen, die durch Änderungen hervorgerufen wurden, schnell auf vorherige Stände zurückschalten. Das hilft uns Ausfallzeiten zu minimieren, denn so ist nicht unbedingt das Einspielen eines vollständigen Backups nötig.

Für ein solches Git-Repository bietet es sich an, Commits direkt auf dem Server zu machen. Allerdings führt das dazu, dass jeder Entwickler unter dem gleichen Autor Commits erstellt (solange sich alle den gleichen Linux-User teilen). Solche Commits sind später schlecht nachzuverfolgen. Angenehmerweise bietet Git hierfür Abhilfe.Weiterlesen »Git Commit-Autor setzen