Archive for the 'Allgemein' Category

PHP-CLI mit PDO auf dem Mac

Da Mac OS X von Hause aus kein Datenbankbetriebssystem mitbringt, wird das von Hause aus mitgelieferte PHP ohne Unterstützung für die “PHP Data Objects”-Schnittstelle (PDO) kompiliert. Das ist mehr als ärgerlich, weil beispielsweise das Zend Framework diese Schnittstelle verlangt. Auch die in den Macports verfügbaren PHP-Versionen werden ohne PDO-Unterstützung kompiliert.

Dieser Umstand hat mir in den vergangenen Wochen einiges an Kopfschmerzen bereitet, weil es mir nicht gelingen wollte, komplexere PHP-Scripte auf der Kommandozeile auszuführen. Bis ich hier die einfache, wie auch großartige Lösungsidee fand: wenn man Mamp installiert hat, das standardmäßig sowohl eine MySQL-Installation, als auch PHP5 mit PDO-Support eingebaut hat, kann man einfach den $PATH so umbiegen, dass er auf das PHP-Binary zeigt. Die liegt übrigens hier:

/Applications/MAMP/bin/php5/bin/php

So einfach kann das also sein.

GOP - Groovy Option Parser

Nachdem ich Studiumsbedingt in der Vergangenheit mal gezwungen war, mich mit Commons CLI auseinander zu setzen, habe ich ein Gefühl dafür bekommen, wie schön es ist, eine leichtgewichtige Lösung für die Verarbeitung von Kommandozeilenargumenten zu haben. - Und wie schmerzhaft nervig es ist, wenn man so was nicht hat. ComminsCli hat damals zwar weitestgehend getan, was ich wollte, aber das Mass an Gegenwehr war mir eigentlich zu groß.

Wesentlich vielversprechender sieht dagegen GOP aus. Das ist ein Parser für Kommandozeilenargumente, der in Groovy implementiert ist.

Der Parser bringt dabei u.a. die Möglichkeit mit, optionalen Parametern einen Default Wert zu geben, Validierungsregeln in Closures zu definieren und automatisch aus den Parameterdefinitionen ein Hilfe Menü zu generieren.

Das Codebeispiel sieht auf jeden Fall ziemlich schlank und chick aus:

def parser = new org.computoring.gop.Parser(description: "An example parser.")
parser.with {
required 'f', 'foo-bar', [description: 'The foo-bar option']
optional 'b', [
longName: 'bar-baz',
default: 'xyz',
description: 'The optional bar-baz option with a default of "xyz"'
]}
 
def params = parser.parse("-f foo_value -- some other stuff".split())
 
assert params.'foo-bar' == 'foo_value'
assert params.b == 'xyz'
assert parser.remainder.join(' ') == 'some other stuff'

[via GroovyZone]

OpenID - Stand der Dinge?

In den vergangenen Tagen habe ich mich arbeitsbedingt vermehrt mit Online Office und Online Collaboration Plattformen auseinander gesetzt. Abgesehen davon, dass es mittlerweile wirklich eine Menge davon gibt und die Qualität teilweise erstaunlich ist (z.B. bei Acrobat Buzzword), fällt ganz extrem auf, dass keiner der Anbieter OpenID anbietet!

Dieser Gedanke geht ein bisschen auf Episode 58 des WebDevRadio zurück, in der Michael Kimsal beklagt, dass viele grosse Player wie Google oder Microsoft zwar mittlerweile als OpenID Provider auftreten, aber sich beharrlich weigern, OpenID als Authentifizierungsmethode zu akzeptieren.

Gerade der Bereich Online Office ist in meinen Augen ein Bereich, der auch weniger technisch versierte Nutzer anzieht. Gerade hier wäre es extrem hilfreich, wenn OpenID gleichberechtigt neben anderen Möglichkeiten angeboten werden könnte.

Nur so kann es gelingen, endlich einen einigermassen sinnvollen, einheitlichen Authentifizierungsstandard zu etablieren.

Oder gibt es bereits in anderen Bereichen den ernsthaften Versuch OpenID auch in nicht-Nerd-Kreisen zu etablieren?

WordPress Security Update 2.6.5

2.6.5 ist ein Sicherheitsrelease das einen schwerwiegenden XSS-Exploit behebt, nebenbei wurden auch noch ein paar kleinere Probleme gefixed.  [Details]

Hello World in 200 Programmiersprachen

Dieser Post hat gleich doppelten Nutzten. Zum einen möchte ich auf die Encyclopedia of Programming Languages verweisen welche eine Liste von Hello World Beispielen hat und aber auch gleich einmal die Funktionalität von WP-Syntaks aus meinem letzten Post beweisen

ANSI C

#include <stdio.h>
 
/* Hello */
int main(void)
{
 printf("Hello, World!");
 return 0;
}

JAVA

public class HelloWorld {
 public static void main(String[] args) {
 System.out.println("Hello, World!");
 }
}

Unsere Wordpress Plugins

Listen sind ja immer sehr beliebte Arten von Blogpost, deswegen hier einmal die von uns verwendeten Wordpress Plugins. Dabei werden wir die Post je nach Bedarf aktualisieren, wenn es weitere zu würdigende Plugins gibt. Um die Links zu den Plugins aktuell zuhalten sind sie direkt mit den Einträgen im WordPress Plugin Verzeichnis verlinkt.

  • Akismet - schon in der Grundinstallation von Wordpress enthalten und ein mächtiger Spamfilter zur Analyse der Posts.
  • Bad Behavior - der zweite Spamfilter spezialisiert auf das blocken von Spam Robots.
  • All in One SEO Pack - Mit diesem Plugin lassen sich sehr komfortable die META-description und META-keywords anpassen. Des weiteren werden automatisch META-tags für jeden Post aus den angegebenen Tags generiert. Dies lässt sich alles sehr einfach über das Admin Interface bearbeiten.
  • Google XML Sitemaps - generiert automatisiert eine Google XML Site, dies verbessert die die Indizierung durch Google deutlich, da nicht immer die ganze Seite analysiert werden muss.
  • FeedBurner FeedSmith - ermöglicht das Umleiten des Feeds zu Feedburner zum tracking der Feedabonnenten.
  • Wordpress Automatic Upgrade - zum Update von Wordpress über das Admininterface. Es werden alle nötigen Backups erstellt und dann die neuste Version von Wordpress heruntergeladen und installiert.
  • WPhone - stellt das Admininterface optimiert für das iPhone dar und ist für mobile Kommentarmoderation unerlässlich.
  • WP-Syntax - zur Anzeige von Quellecode in den Posts. Für das Highlighting wird GeSHi verwendet, welches eine sehr große Anzahl an Sprachen unterstützt.

Grails: keine Tabellengenerierung bei Verwendung reservierter Begriffe als Eigenschaften

Wenn beim Start einer Grails Applikation die Datenbanktabelle zur neu erstellte Domain Class ums Verrecken nicht erzeugt wird, dann liegt es wahrscheinlich an der Namenswahl der Properties. Verwendet man nämlich Schlüsselwörter wie to, text oder from, dann startet die Anwendung zwar, Hibernate verweigert aber stillschweigend die Generierung der betreffenden Tabelle!

Dieses Wissen kann einen Vormittag wesentlich angenehmer gestalten…

via: Ken Kousen

wysihat - der schlanke WYSIWYG

37signals stellt mit WysiHat ein WYSIWYG JavaScript Framework zum Erstellen eigener Richtexteditoren zur Verfügung. Dabei lassen sich das Design und die Funktionalitäten von WysiHat einfach anpassen und erweitern.

Zurzeit werden in Version 0.1 von WysiHat alle gängigen Browser unterstützt.

Abhängigkeiten bestehen zu Prototype 1.6. Eine Demo gibt es unter http://qhoxie.com/wysihat zusehen.

Zend Framework 1.7 Preview Release

Seit ein paar Wochen ist ein Preview Release der neuen Version 1.7 des Zend Framework erhältlich. Neben klassischen Themen wie allgemeiner Performancesteigerung ist vor allem die neue Zend_AMF Komponente erwähnenswert.

Die Dokumentation ist leider noch nicht aktualisiert, so dass es schwierig ist, sich einen Überblick über die Details zu verschaffen. Es wäre jedoch wünschenswert, dass auch Backends für Flash/Flex getriebene Anwendungen in Zukunft ausschliesslich mit dem Zend Framework realisiert werden können und weitere Bibliotheken wie beispielsweise AMFPHP nicht weiter benötigt werden.

Hier wird es auf jeden Fall in Kürze ein Einstiegstutorial zum Thema Zend_AMF geben.

jsdoc Toolkit - Dokumentationsgenerator für JavaScript

JavaDoc, phpDocumentor, Doxygen, die Liste der Dokumentationsgeneratoren für Programmiersprachen ist beinahe unerschöpflich. - Nur für JavaScript gab es bisher noch keine richtige Lösung. Und das in Zeiten, in denen JavaScript zunehmend für umfangreiche Projekte genutzt wird und komplexe Businesslogik kapselt.

Diese Lücke will jsdoc schliessen und bietet eine automatische Generierung von Dokumentation für JavaScript. jsdoc kommt mit einer umfangreichen Liste von Tags, die speziell auf JavaScript zugeschnitten sind. So gibt es beispielsweise @private als Markierung privater Variablen.

Gefunden bei den CodeKeksen.