Von einem, der auszog, das Kochen zu lernen - PHP 5.4/5.5 mit Vagrant und Chef virtualisieren
foobugs:
Bei foobugs führen wir seit mindestens einem Jahr unsere Projekte in einer virtualisierten Umgebung durch. Durch die starke Ähnlichkeit zur Umgebung, unter der die Applikation letztendlich beim Kunden laufen wird, ergeben sich zahlreiche Vorteile. So kann man Fehler in einer Live-Umgebung frühzeitig erkennen, das Deployment verbessern und testen, sowie Performance-Tests ausführen, ohne großen Aufwand zu betreiben. Dazu kommt, dass jeder Entwickler die selbe Umgebung hat, in der er testet.
In der Vergangenheit konnte man dies nur erreichen, indem man zuvor erstellte Live-Umgebungen als Image an seine Mitarbeiter oder Freelancer verteilt hat. Dies führte aber auch dazu, dass man bei einem Software-Update (zum Beispiel einer Aktualisierung des Apache in der Virtuellen Box) auch das komplette Image austauschen musste.
Genau in diese Lücke ist Vagrant gesprungen und erleichtert es, die gesamte Entwicklungsumgebung in einem Repository zu speichern und somit auch eine History über geänderte Software-Komponenten zu führen.
Read More
Praktische Sublime Text Plugins
Wenn es um den perfekten Editor geht, scheiden sich die Geister. Doch eigentlich ist das Nebensache, so lange jeder einen Editor gefunden hat, mit dem er möglichst effektiv und elegant arbeiten kann.
Seit ca. einem Jahr ist Sublime Text der Editor meiner Wahl. In einem ersten kleinen Artikel will ich nun ein paar Plugins vorstellen, die ich sehr nützlich finde.
Leider sind viele Plugins nach der Umstellung auf Python 3 nicht mehr mit Sublime Text 3 kompatibel. Da der Quellcode vieler Plugins aber auf GitHub zu finden ist, kann man helfen, das zu ändern!
Das erste Plugin, das jeder Sublime-Text-User benötigt. Damit kann man im Editor schnell und einfach Plugins installieren, aktualisieren und auch wieder rausschmeißen.
Dieses Plugin kann die Groß- und Kleinschreibung der markierten Zeichenkette quasi auf „Knopfdruck“ ändern. So wird aus CamelCase ganz schnell snake_case.
In Textmate war diese Funktion schon dabei. In Sublime Text muss man sich dieses Plugin installieren, um aus einfachen Anführungsstrichen ' doppelte " zu machen – und umgekehrt.
In den meisten Fällen ist ein einziger Eintrag in der Zwischenablage mehr als genug. Mit der Zeilen-verschiebe-Funktion (CMD+CTRL+UP, CMD+CTRL+DOWN) oder Duplikation (CMD+SHIFT+D) kommt man aber auch gut ohne Zwischenablage aus. Wenn das mal nicht ausreicht, hilft die Clipboard-History, die über CTRL+ALT+CMD alle zuletzt kopierten Einträge anzeigt.
Generiert quasi auf Zuruf UUIDs. Einfach uuid eingeben, TAB drücken und schon hat man eine neue UUID.
Das Plugin reagiert auf die verschiedenen Formate dokumentierender Kommentare (/**) und fügt – wenn die Funktion oder Methode schon geschrieben wurde – automatisch die Annotations für Parameter und Return-Werte hinzu. Beim Ausfüllen der Felder kann man dann TAB drücken, um jeweils eins weiter zu rücken.
Hilfreich ist auch der Shortcut ALT+Q, der alle Zeilen innerhalb des mehrzeiligen Kommentars auf die Maximallänge bringt. Man muss also nicht mehr lange überlegen, wann man im Kommentar einen Umbruch macht. Kurz ALT+Q – fertig.
The past quarter i was working at foobugs for the Berlin based startup Trademob. Our Team was developing a new rich client application for their clients which will be released during this year I think. It was a great opportunity to extend my skills in backbonejs and chaplinjs which are really nice libraries.
During that time I also discovered brunch which is something like a boilerplate, ready-to-use compiler application assembler which makes it much easier to start a new project from scratch. You don’t have to set up your build steps, minification and test configuration on your own because brunch does this stuff for you.
So I tried it out on a little project I had in mind for some months now. A simple and small application that uses the HTML5 geolocation API of the browser to display the user’s location on a map and show the info of the getCurrentPosition or watchPosition return values. It should be designed for small screen mobile devices such as my HTC Desire or iPhone to see how the callback intervals change when I drive or walk around.
So here it is: http://gps-tracker.herokuapp.com/
And the best thing is - it’s open source! Test it on your mobile device and feel free to post issues or fix them in your fork: https://github.com/foobugs/gps-tracker
Ich bin Google Mail und Google Apps Nutzer - habe also mehrere E-Mail Konten. Um diese möglichst bequem zu managen habe ich bisher immer auf Sparrow vertraut. Da die aber im Sommer von Google gekauft wurden und die Einstellung angekündigt wurde, war mir klar ich müsste mich an einen neuen E-Mail Client gewöhnen.
Dann kam das 10.8 Update (Snow Leopard) heraus und ich probierte es einige Monate mit dem E-Mail Client “Mail”. Da der aber keinerlei sinnvolle Schortcuts bereit hält und sich obendrein auch irgendwie langsam anfühlt habe ich mich dann doch wieder für den Browser-basierten Client von Goolge entschieden.
Um nicht ständig mehrere Tabs oder Browser mit unterschiedlichen Postfächern offen zu halten gibt es eine praktische Erweiterung für Chrome welche das Prüfen der Postfächer übernimmt: Checker Plus for Gmail Webstore Link
Damit kann man sehen wie viele ungelesene Nachrichten man hat. Man bekommt Benachrichtigungen über neue E-Mails per Audio-Signal, Stimme oder Growl-Benachrichtigung und kann sich sogar die E-Mails ohne GMail öffnen zu müssen öffnen und gleich archivieren oder löschen. Praktisch.
Die Aussicht von dem Eingang zu “Studio 1” im Bethanien am Morgen. #digiyards (at Kunstquartier Bethanien). Mehr auf zum Symposium Digital Backyards auf der Berliner Gazette Website.
CSV Datei mit PHP auslesen
Seit PHP 5.1 gibt es die Möglichkeit Dateioperationen nicht mehr mit Funktionen auszuführen sondern SPLFileObject oder SPLFileInfo zu verwenden. In PHP 5.2 kam auch noch die Unterstützung für CSV Dateien dazu und so kann man ziemlich elegant mit CSV Dateien umgehen. Das folgende Beispiel illustriert das hoffentlich:
Die positiven Dinge sind auf jeden Fall die schöne objektorientierte API und die wenigen Zeilen Code die einem erlauben über den Inhalt der CSV Datei zu iterieren und zwar ohne die gesamte Datei im Speicher zu behalten!
Das Zeilenende als Stolperstein
Ein kleiner Stolperstein stellt allerdings die unterschiedlichen Zeilenenden dar die von manchen Programmen bei dem Erstellen einer CSV Datei verwendet werden. So kam es beim Testen schon vor, dass eine CSV Datei mit einem Carriage Return (chr 13) am Ende erzeugt wurde, statt dem gewohntem Line Feed (chr 10) oder einer Kombination aus beidem. Das Problem dabei ist, dass PHP dann die Zeilenenden nicht richtig erkennt und alle Daten in der ersten Zeile stecken. Dies kann man aber beheben indem darauf achtet, dass man auto_detect_line_endings in der php.ini aktiviert hat oder es einfach selbst setzt.
git - praktische Einführung
Am Montag haben René und ich bei Familie Redlich einen Workshop rund um das Thema Entwicklungsumgebungen und git gegeben. Zuerst haben wir den von foobugs eingerichteten Server vorgestellt der zum Beispiel verschiedene PHP-Versionen unterstützt. Danach habe ich in einer kleinen Präsentation git vorgestellt und anschliessend haben wir mit den Entwicklern alle möglichen Varienten von ein- und auschecken, pushen, pullen, mergen, branchen etc. durchgespielt.
Wer sich noch nicht an git ran getraut hat sollte sich vielleicht mal die Slides anschauen die Slides der git Präsentation anschauen die ich gerade bei Slideshare hochgeladen habe:
[2012-06-28]
Gerade habe ich auf Hacker News noch diese eine wunderbare Visualisierung der Repositories und git-Befehle von Mark Lodato gefunden.
Der Developer Color Picker von Panic hat sich gerade als sehr hilfreich herausgestellt. Er ermöglicht es zum Beispiel in Textmate in SCSS/SASS oder CSS Dateien einen Farbwert samt Alpha-Kanal-Stärke auszuwählen. Einfach zu installieren und schon kann’s losgehen.
Markdown mit Pandoc und Vorlagen auf OSX in PDFs verwandeln
Markdown ist aus meinem Alltag nicht mehr wegzudenken. Die einfach zu erlernende Auszeichnungssprache die John Gruber und Aaron Swartz erdacht haben, wird mittlerweile von diversen Plattformen unterstützt. Sogar Bücher, wie zum Beispiel “The Grumpy Programmer’s Guide to Building Testable Applications in PHP” von Chris Hartjes, werden damit geschrieben.
Da man so gut wie alle gängigen Formatierungen in Markdown vornehmen kann, kommt es für mich oft gar nicht in Frage, Dokumentation oder Notizen in komplexen Programmen zu schreiben. Textmate, oder wenn es sein muss auch mal vi, reichen mir aus.
Seinen Kunden will man nicht zumuten, Markdown-Dateien zu lesen. Stattdessen sollen diese schöner formatiert und in einem PDF gesammelt werden. Genau dieses Problem habe ich letztens auf OSX relativ komfortabel gelöst.
Markdown zu HTML
Wenn man PDFs aus Markdown erstellen möchte, macht es sich am besten, diese zuerst in HTML umzuwandeln. Ein Tool, welches u.a. Vorlagen mit einbezieht, Inhaltsverzeichnisse erstellen, in andere Formate umwandeln und damit auch für andere Zwecke genutzt werden kann, ist pandoc.
Nach der Installation eines der Packete, kann man einzelne Markdown-Dokumente in HTML umwandeln:
pandoc README.md -o README.html
Das schöne bei pandoc ist, dass man neben Footer, Header oder Stylesheets auch ganze Templates selbst definieren kann, die beim Konvertieren mit einbezogen werden:
pandoc -c mystyle.css -A footer.html -H header.html README.md -o README.html
Weitere Befehle und genauere Beschreibungen zu den Templates sind im Pandoc User’s Guide nachzulesen. Ganz nett ist auch die Funktion, mit Platzhaltern für Datum oder Autor arbeiten zu können.
HTML zu PDF
Hier gibt es wieder mehrere Möglichkeiten. Um pandoc das PDF-Generieren beizubringen, muss man leider LaTeX installieren, was auf Grund der Größe des Pakets (mehr als 1 GB) lächerlich erscheint. Wenn man aber auf OSX arbeitet, kann man eine im System “versteckte” Funktion benutzen, die jedes HTML inklusive Stylesheet, Bilder etc. in ein PDF verwandelt: convert
/System/Library/Printers/Libraries/convert -a "media=A4 portrait" -f README.html -o README.pdf
Der Befehl ist leider nicht wirklich dokumentiert; er kann aber auch RTF oder normale Text-Dateien in PDFs konvertieren. Es gibt auch noch weitere Parameter, die man mit -a übergeben kann. Welche von den auf CUPS gelisteten funktionieren, konnte ich aber leider nicht finden.
Beispiel auf GitHub
Für foobugs habe ich ein kleines Beispielprojekt aufgesetzt, mit dem man wunderbar rumspielen und sich für seine Firma oder sein Projekt eine Vorlage erstellen kann. Die Quellen sind im pandoc-templates Projekt auf GitHub zu finden.
foobugs:

Nach 8 Release Candidates hat das PHP Entwicklerteam gestern Abend offiziell PHP 5.4.0freigegeben. Die neue Version beinhaltet neben Unmengen von Bug-Fixes eine Vielzahl toller neuer Features:
-
Traits
Die etwas andere Mehrfachvererbung, die es einer Klasse ermöglicht, von mehreren…
1.