Apache/PHP/MySQL mit PHPUnit und XDebug unter Mac OS X
Eine kurze Anleitung wie man den Apache von Mac OS X so einrichtet, dass man damit arbeiten kann.
Eine kurze Anleitung wie man den Apache von Mac OS X so einrichtet, dass man damit arbeiten kann.
Auf meiner Suche nach einer schlanken Alternative zu Silverstripe (zu dem ich ein Verhältnis habe, das man ruhig mal als Haßliebe bezeichnen darf), bin ich vor einiger Zeit auf ein besonders feines Exemplar von Open Source CMS gestoßen: Symphony. Lange Zeit wohl eher als Geheimtipp gehandelt, erfreut es sich jüngst wachsender Beliebtheit. Aus gutem Grund. Symphony ist keines dieser HTML-spuckenden Monster, sondern ein gut durchdachtes Content Management Framework mit dem sich erstaunlich viel bauen lässt.
Seine große Flexibilität gewinnt es, indem es keine Vorannahmen über die Inhalte trifft, die es verwalten soll. Während andere CMS ja meist von einer hierarchischen Seitenstruktur (jawohl, die alte Baum-Metapher) ausgehen, werden Inhalt und Struktur innerhalb von Symphony getrennt behandelt. Dem liegt ein durchdachtes Konzept zu Grunde, das wegen seiner Komplexität und nicht zuletzt wegen der etwas eigenwillig gewählten Nomenklatur am Anfang einige Schwierigkeiten bereiten kann. Das jetzt aufzudröseln, würde mir an dieser Stelle wohl nicht gelingen. Einen guten Überblick gibt aber dieser Einstieg mit Schaubild.
Eine auffällige Besonderheit von Symphony ist dessen Template-Sprache. Statt wie so oft eine eigene zusammenzubasteln, wählten die Entwickler XSLT, eine vom W3C standardisierte Transformationssprache. Diese wandelt XML-Daten in (perfektes) HTML (oder andere Formate) um. Entsprechend werden vom CMS alle Seiteninhalte intern als XML-Daten repräsentiert. Hat man erstmal den Dreh raus, erscheint wieder einmal flexibel und vor allem logisch. Trotzdem bleibt die Auseinandersetzung mit XSLT auch mit einiger Erfahrung gewöhnungsbedürftig.
Erstaunlich selten erwähnt wird die hohe Qualität von Symphony insgesamt. Während einige Open Source CMS doch öfter mal nach Bastelei riechen, kommt Symphony mit sauberem (wenn bislang auch schwach dokumentierten) Quellcode, einem aufgeräumten, fast puristischem Interface und guter Internationalisierung daher. Das beinahe schon minimalistische Erscheinungsbild verleitet leicht dazu, das System zu unterschätzen. Der Funktionsumfang von Symphony ist aber nicht geringer als der anderer freier CMS. Zwar steht erstmal nur die Kernfunktionalität zur Verfügung, einfach installierbare Erweiterungen bieten dann aber die üblichen Features wie Rechteverwaltung, Versionskontrolle, Asset-Management etc. So lässt sich genau der Bedarf abdecken, der für das jeweilige Projekt benötigt wird. Das Schreiben eigener Erweiterungen erfordert hingegen einige Übung, was der leider noch sehr spärlichen Entwicklerdokumentation geschuldet ist. Mit den Bordmitteln bzw. mit Hilfe der bereits vorhandenen Erweiterungen kommt man aber schon recht weit.
Wer also ein modernes und flexibles CMS zum Bau einer funktionsreichen Website sucht, sollte sich auf einen Testlauf mit Symphony einlassen. Die Einarbeitung ist zwar mühevoll und kostet einige Zeit, schlägt dafür aber schon bald in Begeisterung um.
Welcher Mac-User hat sich nicht schonmal über den, naja sagen wir mal liebevoll „eigenwilligen“ Finder geärgert? Bei diesem Kernstück des Mac-Betriebssystems hat Apple nämlich wieder ganze Arbeit geleistet, um Funktionen, die uns Nutzer verwirren könnten, konsequent wegzulassen. Und so gibt es dort etwa kein hochkompliziertes Copy & Paste. Statt dessen darf man mit der Maus versuchen, Dateien durch ziehen und ablegen an den gewünschten Ort zu bugsieren. Eine Art Geschicklichkeitsspiel, das der geschätzte Nutzer nicht bei jedem Versuch gewinnen kann.
Und dann wäre da noch die Unmöglichkeit der Anzeige versteckter Dateien, zusammen mit der Tatsache, dass der Finder eben solche in jedem Ordner, den er mal öffnen darf, auch gleich erstellt. Diese vielgehasste .DS_STORE ist haufenweise Bestandteil aller Verzeichnisse, die ein Mac-Benutzer an Windows- und Linux-User weitergibt. Dort ist es natürlich nur ein nutzloses Artefakt, welches lediglich bezeugt, wie wenig Kontrolle ein Mac-Nutzer über sein System hat.
Verglichen mit diesen beiden Apple-Possen, die mich seit meinem Wechsel vor drei Jahren regelmäßig in Sehnsucht auf den Nautilus-Dateimanager von GNOME zurückblicken haben lassen, ist es fast eine Kleinigkeit, dass der Finder eine ganz eigene Auffassung davon hat, wie Dateien und Ordner alphabetisch anzuordnen sind.
Aber trotz dieser Qualen hasse ich den Finder seit ein paar Tagen nicht mehr. Da habe ich nämlich TotalFinder entdeckt. Es ist ein Plugin für den Finder, das gut auch als Bugfix durchgehen könnte. Was der TotalFinder kann:
Für 15 US-Dollar absolut fair im Preis und empfehlenswert. Bleibt die Frage, warum Apple nicht gleich ein solches Produkt mitliefert.
Mehr zu TotalFinder hier: http://totalfinder.binaryage.com/
Der Entwickler von TotalFinder vergibt kostenlose Lizenzen an Leute, die über das Produkt bloggen. An dieser Aktion habe ich nicht teilgenommen. Nur damit keiner denkt, hier würd's nicht mit rechten Dingen zugehen...
Seit ein paar Tagen läuft bei mir Postbox als Ersatz für Apple Mail. Grund etwas Neues auszuprobieren war vor allem die schlechte Suchfunktion in Mail, die sich oftmals als Produktivitätskiller erwiesen hat. Anders bei Postbox. Hier hat man offenbar an die Leute gedacht, die mit E-Mail tatsächlich arbeiten müssen:
Anders als Mail fügt sich Postbox gut in meine Arbeitsabläufe ein. Meine Empfehlung: Wer mit Mail nicht absolut zufrieden ist, sollte sich einen Testlauf mit Postbox gönnen.
Jüngst hoppelt er wieder über die Bildschirme deutscher Wohnzimmer: Der Hase Bob, eine H-Milch-süchtige Animationsfigur mit schlauer Brille auf der Nase, die für die ach so ökologischen Getränkekartons von Tetra-Pak wirbt. Bob sagt, der Getränkekarton bestünde hauptsächlich aus Holz, das ja wieder nachwachsen würde. So werden im Trickfilm aus einem Wald voller Bäume ruckzuck ein paar Getränkekartons. Und dann sprießen wieder neue Bäume aus dem Boden. Alles super-ökologisch.
Die sich aufdrängende Frage, wie aus den Kartons am Ende wieder Bäume oder sonst was werden soll, beantwortet Bob leider nicht (wie auch andere treffend feststellen). Auch grundsätzlich tut sich der vom Niveau her an die Teletubbies erinnernde 30-Sekünder schwer damit, Fakten zu nennen. Glücklicherweise übernimmt dies stattdessen die Deutsche Umwelthilfe in einer Pressemitteilung. Darin wird etwa die realistische Recycling-Quote von Getränkekartons auf nur rund 35 Prozent beziffert. Zudem sei der Zellstoffanteil über die Jahre zurückgegangen, der Getränkekarton bestünde heute bis zu 34 Prozent aus Kunststoff und bis zu sechs Prozent aus Aluminium. In der Konsequenz hält die Organisation die Befreiung des Getränkekartons von der Pfandflicht für nicht weiter gerechtfertigt.
Link: „Ökologisch vorteilhaft“? – Pfandprivileg für Getränkekartons muss überprüft werden
Vor einiger Zeit stand ich vor dem Problem, dass ich mein SNOM VoIP-Telefon den Kontakten aus meinem MacOS-Adressbuch füttern wollte. Das SNOM 820 kann zwar Adressbücher im CSV-Format lesen, um dergleichen aus dem Adressbuch exporieren zu können, brauchte ich aber ein kleines AppleScript. Es basiert weitgehend auf diesem hier, das ich an ein paar Stellen angepasst habe, damit das Format vom Telefon angenommen wird.
set resultText to ""
set currentLine to ""
set numPhones to 0
tell application "Address Book"
-- Find the maximum number of phone numbers
repeat with x from 1 to the count of people
set thePerson to person x
set countP to count of phone of thePerson
if countP > numPhones then
set numPhones to countP
end if
end repeat
-- Export all contacts
repeat with x from 1 to the count of people
set thePerson to person x
set my currentLine to ""
set my currentLine to my currentLine & "\"" & the name of thePerson & "###phoneLabelHere###\","
set my currentLine to my currentLine & "\"###phoneHere###\""
-- Walk through Phone entries
set numCurrentPhones to the count of phone of thePerson
repeat with thePhone in the phone of thePerson
set thePhoneValue to the value of thePhone
set thePhoneLabel to the label of thePhone
set theLine to my searchReplace(my currentLine, "###phoneHere###", thePhoneValue)
if numCurrentPhones > 1 then
set theLine to my searchReplace(theLine, "###phoneLabelHere###", " (" & thePhoneLabel & ")")
else
set theLine to my searchReplace(theLine, "###phoneLabelHere###", "")
end if
set my resultText to my resultText & theLine & linefeed
end repeat
end repeat
-- Save file
set theFile to choose file name with prompt "Save as:" default name "snom.csv" default location the path to home folder
set fp to open for access theFile with write permission
write resultText to fp as «class utf8»
close access fp
end tell
on searchReplace(origStr, searchStr, replaceStr)
set old_delim to AppleScript's text item delimiters
set AppleScript's text item delimiters to searchStr
set origStr to text items of origStr
set AppleScript's text item delimiters to replaceStr
set origStr to origStr as string
set AppleScript's text item delimiters to old_delim
return origStr
end searchReplace
Seit kurzem beschäftige ich mich näher mit serverseitigem JavaScript, speziell der RingoJS-Plattform. Mein erstes Projekt damit ist jetzt der Freizeitpilot, eine community-getriebene Datenbank für Ausflugsziele. Die Anwendung wird in der Google App Engine gehostet und ist seit gestern online.
Threddie ist ein (fast) Echzeit-Diskussionssystem für den Austausch mit Kollegen und Kunden. Jeder der die (optional mit Kennwort geschützte) URL einer Diskussion kennt, kann daran teilnehmen. Klingt einfach? Ist es. Die Anwendung ist (endlich einmal) so simpel, dass sie tatsächlich als Alternative zum altehrwürdigen Produktivitätskiller E-Mail taugt.
Derzeit ist Threddie in einem frühen Beta-Stadium, der Launch liegt gerade mal einen Monat zurück. Beim Testen ist mir der ein oder andere Bug aufgefallen. Es lohnt sich aber allemal, das System kurz auszuprobieren (dauert drei Minuten) und als Option für's schnelle Brainstorming zwischendurch im Hinterkopf zu haben.
Website: threddie.com