Monatsarchive: August 2013

Mit Composer und GitHub arbeiten

Die meisten Projekte auf GitHub unterstützten mittlerweile Composer. In diesem Artikel möchte ich darauf eingehen, wie man mit Composer arbeitet und wie man seine Projekte auf dieser Basis auf GitHub richtig verteilt und veröffentlicht. Ziel ist es, dass man als Entwickler nicht alle Quellen dritter in seine eigenen Repositories aufnehmen muss und immer mit den aktuellen Versionen arbeitet.

Ich für meinen Teil arbeite mit Mac OS X Mountain Lion und PHP 5.4.4 unter MAMP. Der Beitrag sollte sich aber auch auf jedem anderen Betriebssystem nachvollziehbar sein. Im Idealfall natürlich auf UNIX basierenden Betriebssystemen.

Um sich die letzte Version zu installieren, führt man einfach folgendes Kommando in einem leeren Verzeichnis aus.

Das Haupt-Repository für Composer liegt unter Packagist.org. Dort erhält man sämtlich Informationen zu vorhandenen Paketen und kann seine eigenen Pakete ebenfalls dort zur Verfügung stellen.

Eigene Pakete für Composer veröffentlichen

Wenn man sich auf Packagist registriert hat, kann man ganz einfach ein neues Paket hinzufügen. Ich möchte das einfach mal beispielhaft an einer Erweiterung für Magento durchführen.

Als erstes legt man sich eine Konfiguration im entsprechenden Git-Repository auf GitHub an (composer.json). Diese füllt man mit Inhalt und pusht diese mit in das Repository.

Wie man sieht werden Name, Lizenz, Typ und Beschreibung angegeben. Über den Namen sollte man sich an dieser Stelle schon einmal Gedanken machen. Dieser sollte später nicht noch einmal geändert werden, da er von vielen anderen Entwicklern in den eigenen Composer-Konfigurationen verwendet wird. Weiterhin kann man eine Webseite angeben und weitere Abhängigkeiten zu anderen Paketen. In diesem Fall brauche ich den Magento Composer Installer, welche ebenfalls auf GitHub verfügbar ist. Dort könnte man aber natürlich beliebig viele Pakete, in beliebigen Versionen mit Wildcards angeben. Hier ist mir die Version total egal.

Wenn man das getan hat, kann man auf Packagist ganz einfach sein Paket hinzufügen. Dazu gibt man die URL zum Git-Repository an und der Rest wird automatisch erledigt.

Packagist Submit Package

Das war es eigentlich auch schon – danach erhält man direkt den nächsten Screen und hat sein erstes Paket veröffentlicht.

Packagist New Package

Was nun noch stört, ist die rote Meldung. Diese bedeutet, dass das Paket nicht automatisch aktualisiert wird wenn sich die Quellen auf GitHub ändern. Dazu kann man eine entsprechende Hook auf GitHub anlegen. Dazu geht man in dem entsprechenden Repository auf Settings -> Service Hooks und wählt dort Packagist. Eingetragen werden Benutzername, Token und URL. Den Token findet man auf den Profil-Seiten von Packagist.

Diese Prozedur muss man leider für jedes einzelne Projekt ausführen. Doch die Arbeit lohnt sich, denn ab jetzt braucht man sich erstmal nicht mehr um die Updates auf Packagist kümmern.

Packagist GitHub Settings

Ich hoffe ich konnte etwas Licht ins dunkel bringen und habe euch motiviert, eure Pakete ebenfalls für Composer zur Verfügung zu stellen. Es ist wirklich unkompliziert und macht das Leben einfacher.

WordPress: Ladezeiten durch Komprimierung verbessern

Momentan versuche ich bei Google einen verbesserten PageSpeed-Score zu bekommen. Einer der aufgeführten Punkte bezog sich auf Kompression. Doch wie aktiviert man diese ohne zusätzliches PlugIn für WordPress? Abhilfe schafft die versteckte Options-Seite im Admin (ich kenne zumindest keinen direkten Link dorthin). Dazu geht man einfach auf die options.php im Admin. Die Url dorthin lautet wie folgt:

Dort sucht man dann nach dem Eintrag „gzipcompression“ und setzt diesen auf 1. Diese Einstellung bezieht sich aber nur auf den HTML-Content der direkt von WordPress ausgeliefert wird. Damit stellt sich Google also noch nicht zufrieden und möchte auch die anderen Inhalte komprimiert ausgeliefert haben.

Um sämtliche Inhalte zu komprimieren muss man dies dem Apache über die .htaccess mitteilen. Nach folgender Konfiguration ist auch dieser Punkt grün:

 

Mac OS X: Für die Entwicklung eine eigene Partition erstellen

Als ich mit der Entwicklung auf dem Mac angefangen habe, habe ich wenig Gedanken ans das Dateisystem verschwendet. Immerhin ist es ein UNIX-System und die sind schließlich alle Case-Sensitive. Falsch gedacht… Das standard Datei-Format von Mac OS X ist Mac OS Extended (Journaled). Also NICHT case sensitive.

Leider macht man aber früher oder später doch mal einen Flüchtigkeitsfehler und schreibt einen Buchstaben in einem PHP-Include dann doch mal klein statt Groß. In der lokalen Entwicklungsumgebung läuft alles wunderbar, sobald man dann aber einen neuen (getesteten) Stand auf das Livesystem spielt, bekommt man nur eine weiße Seite zu Gesicht (dank abgeschaltetem error_reporting). Die angeforderte Datei konnte dann einfach nicht gefunden werden. Das löst zumindest bei mir ein wenig Stress aus – gerade wenn es sich um einen größeren Kunden handelt, welcher sich Ausfallzeiten absolut nicht leisten kann und will.

Ich möchte nun nicht auf einen Workflow mit Staging-Systemen eingehen – einen kleineren Hotfix spielt man auch gerne mal direkt ein.

Um dem Problem zu entgehen, bin ich schon vor langer Zeit auf die Entwicklung auf case sensitive Partitionen um. Wer das auch machen möchte, muss zum Glück nicht seine komplette Festplatte neu formatieren (das wäre auch nicht ratsam, da manche Programme angeblich nicht mit case sensitive Partitionen klar kommen und vereinzelt Probleme machen). Man kann einfach die aktuelle Partition auf einer beliebigen Festplatte um eine weitere Partition mit wenigen Klicks erweitern. Der größere Schritt ist es, die bestehenden Projekte in ihr neues zu Hause zu verschieben. Das kann mitunter sehr lange dauern – also am besten vor dem Feierabend anstoßen.

Disk Utility Neue Partition

Mac OS X: Bootbares Medium mit GParted erstellen

Um unter Mac OS X ein Medium zu erstellen von welchem gebootet werden kann, kommt man um Unetbootin nicht drumherum. Mit diesem Programm kann man beliebige ISO-Files auf ein Medium spielen, welches man dann direkt starten kann. Dabei denke ich an GParted Live, Knoppix oder andere Tools. Das ist besonders dann hilfreich, wenn man keine Lust hat extra eine CD oder DVD für eine einmalige Verwendung zu brennen.

Nachdem mach den USB-Stick, die SD-Karte oder andere Medien gemountet hat, sollte man sie als erstes formatieren. Nun startet man Unetbootin und wählt das entsprechende ISO-File von GParted aus. Für viele gängige Produkte übernimmt sogar das Programm den Download. Es ist also wirklich super simpel und unkompliziert.

Eine Alternative zu GParted live ist Parted Magic, welches man ebenfalls über das Dropdown im Programm vorauswählen kann. Viel Erfolg beim Partitionieren der (Windows-) Festplatte. Für eine „umpartitionierung“ der Mac OS X Partitionen reichen übrigens die Boardmittel und man muss nicht so komplizierte Wege gehen. Danke an Apple.

Mac OS X: Dateiformat von Screenshots ändern

Falls man das Standard-Dateformat von Screenshots (PNG) nicht gebrauchen kann und lieber JPEG hätte, hilft folgendes Kommando in der Shell:

Einfach <extension> durch die entsprechende Erweiterung ersetzen. Unterstützt werden JPG, PNG und sogar PDF.

Mycestro – die neue Maus

Extrem cool fand ich ein Projekt auf Kickstarter – daher möchte ich heute mal ein wenig Werbung dafür machen. Der Name lautet Mycestro und soll die uns bekannte Form der Maus ablösen. Natürlich gab es schon etliche Ansätze die das versucht haben und auch von Minderheiten bis heute genutzt werden (wobei ich gerade niemanden kenne der beispielsweise einen Trackball im Einsatz hat). Doch dieses Konzept scheint für mich stimmig und bekommt von mir etwas mehr Aufmerksamkeit.

Mycestro ist ein kleines Gerät, welches am Zeigefinger befestigt wird und sämtliche Funktionalitäten einer Maus nachbildet. Verbunden wird es per Bluetooth. An der Seite befinden sich drei Buttons, welche die Funktionen der verschiedenen Mausbuttons (links, mitte und rechts) repräsentieren. Auf diese kann man während des Tippens mit dem Daumen drücken. So muss man die Hand nicht mehr von der Tastatur nehmen, während man Tippt. Scrollen fällt auch nicht weg, dazu muss man einfach mit dem Daumen über die Flächen an der Seite streifen.

WordPress PlugIn-Trends und Analysen

Als PlugIn-Entwickler weiß man oft nicht, wie gut ein PlugIn ankommt und wie intensiv es genutzt wird. Die Anzahl der Downloads ist sicher kein ausschlaggebender Indikator. An dieser Stelle kommt PressTrends.io ins Spiel. Das Ganze kann man erstmal kostenlos testen, wenn mann auf weniger als 1.000 Seiten vertreten ist.

Damit das Ganze funktioniert, muss man sich natürlich registrieren. Die ganzen Statistiken werden (wie bei Google Analytics) auf den Servern von PressTrends gespeichert. Im Anschluss erhält man einen API-Key und ein Secret und kann mit dem Tracking via API starten. So könnte man z.B. analysieren, wie oft eine bestimmte Funktion im Admin überhaupt genutzt wird. So kann man schnell erkennen wo sich eine Weiterentwicklung lohnt und in welchen Bereichen man eventuell weniger Zeit investieren sollte.

Ich finde das ist ein ganz interessanter Ansatz und ich werde mir das Thema auf jeden Fall einmal genauer ansehen. Wer mehr wissen möchte und auf dem aktuellen Stand bleiben will, abonniert sich am besten den RSS-Feed des Blogs von PressTrends.