WordPress, PHP, JavaScript, Web 2.0, Gaming, Motorräder, Fotografie, Piratenpartei, Privates

Coding

Parallax Scrolling Effekt mit Prototype/Scriptaculous JavaScript

Mi 11 Nov. 09 # Permalink

Wer sich an Spiele wie “Shadow of the Beast” erinnert, der muss sich auch zwangsweise an diesen netten Pseudo-3D Effekt erinnern, mit dem diese Spiele ihren coolen Look erhielten. Parallax Scrolling nennt man diese Technik übrigens, bei der verschiedene Layer aus Grafiken übereinander gelegt und unterschiedlich schnell horizontal oder auch vertikal bewegt werden.

Weil mir gestern Abend langweilig war, habe ich mich damit beschäftigt den Parallax Effekt versuchsweise in JavaScript umzusetzen. Als Bibliotheken verwende ich dabei PrototypeJS und Scriptaculous. Nachdem ich mit einem Grafikprogramm meine 3 Layer gezeichnet und PNGs mit Transparenz exportiert hatte, ging es an die Umsetzung. Schnell wurde mir klar, wie simpel es im Grunde ist mit ein wenig CSS und JavaScript diesen Effekt zu erzeugen. Weiterlesen…

SOAP Dienste programmieren mit PHP

Di 10 Nov. 09 # Permalink

Wer für seine eigene Anwendung eine Web-API anbieten möchte, hat vielfältige Möglichkeiten dies zu realisieren. Per einfachem HTTP GET oder POST Request und einer Rückgabe als XML/RSS/CSV/JSON/whatever, oder – was ich etwas eleganter finde – per SOAP. Dabei ist das Entwickeln eines eigenen SOAP Dienstes mit PHP gar nicht so kompliziert, wie vielleicht vermutet. Zumindest finde ich SOAP schöner als die weitere Alternative XML-RPC. Weiterlesen…

Twitter Listen als RSS/Atom Feed abonnieren

Mo 09 Nov. 09 # Permalink

Die neue Listenfunktion bei Twitter ist klasse, denn damit lassen sich endlich die Leute denen man folgt thematisch gruppieren. Da die Listen nun auch per Twitter API angesprochen werden können, ist es möglich die Tweets einer Liste per RSS bzw. Atom zu abonnieren. Eine praktische Sache.

Einfach im Browser oder RSS Reader eine dem folgenden Format entsprechende URL eingeben:

http://api.twitter.com/1/ACCOUTNAME/lists/LISTENNAME/statuses.atom

Wobei “ACCOUNTNAME” durch den Twitternamen z.B. “motorradblogger” zu ersetzen ist. Das gleiche gilt natürlich für “LISTENNAME“.

Zum Beispiel so: Meine Liste von Motorradbloggern.

E-Mail Adresse vor Spam-Robots schützen

Di 03 Nov. 09 # Permalink

Wenn man mal eben fix eine E-Mail Adresse vor Spam-Robots sichern will, dann geht das ganz einfach mit ein wenig JavaScript.

	// Entweder so
	document.write( '<a h'+'ref="ma'+'ilto'+':post'+'@'+'thegeek'+'.'+'de">post'+'@'+'thegeek'+'.'+'de</a>' );

	// Oder auch so [prototype]
	$('my_mail_adress').update( '<a h'+'ref="ma'+'ilto'+':post'+'@'+'thegeek'+'.'+'de">post'+'@'+'thegeek'+'.'+'de</a>' );

Wichtig ist noch folgendes:

	<noscript>
		post AT thegeek . de
	</noscript>

Sollte JavaScript nicht verfügbar sein, wird einfach die E-Mail Adresse ohne “@”-Zeichen und Domain ausgegeben, was die Spam-Robots nicht dekodieren können.

Siehe hier (mit Protype umgesetzt, da document.write bei asynchron geladenem Content nicht sinnvoll ist):

PS: Die Mail-Adresse existiert nicht und wurde wirklich dynamisch mit JavaScript eingefügt. :-)

MySQL, die Indizes und der Typo3 Kickstarter

Di 03 Nov. 09 # Permalink

Bei einem Kundenprojekt (ein Veranstaltungskalender-Modul in Typo3) wunderte ich mich kürzlich, warum im Echtbetrieb die Querys teilweise ewig lang laufen. Da ich die Datenbankstruktur mit dem Typo3 Kickstartet erzeugt hatte, ging ich davon aus, dass es an den Indizes nicht liegen kann, die werden vom Kickstarter schließlich mit gesetzt.

Also probierte ich ein wenig rum, versuchte die Querys zu optimieren, den Code umzustricken, mit dem Ergebnis, dass alles nichts brachte. Eine Query von 3000 Datensätzen dauerte teilweise Minuten lang – was natürlich in der Rechnerwelt mehr als eine Ewigkeit ist. Okay, es wurden ziemlich viele Tabellen per Join hinzugezogen, aber 3000 Datensätze… pah, das ist doch wirklich lächerlich.

Also bin ich nochmal die Tabellenstruktur durchgegangen und siehe da: Zwei ID-Felder waren nicht mit einem Index versehen. Nach dem Hinzufügen dauert die Query dann 0,00 Sekunden. So soll es sein.

Blöder Typo3 Kickstarter. Wer damit arbeitet, aufgemerkt: Das Ding vergisst bei bestimmten Konstellationen die Indizes, also von Hand anlegen, sonst kann euch die Query bei komplexen Joins um die Ohren fliegen.

Das Veranstaltungskalender-Modul ist übrigens ziemlich pornös geworden: So mit Drag n Drop und Medienupload im Overlay, halt alles was man so mit Scriptaculous + Prototype so machen kann und Typo3 von Haus aus nicht mitbringt. Außerdem kann der Kalender wiederholende Termine an bestimmten Wochentagen, wobei die Eingabe richtig schön einfach ist. Ist auf jeden Fall eine nette GUI geworden.

Übrigens mag ich Typo3 nicht, die API ist scheiße dokumentiert und die Icons im Backend ätzend fitzelig und alles andere als selbsterklärend. Ich hoffe es ist bei der Entwicklung dieses einen Moduls geblieben. Schade, dass wir in der Firma kein WordPress anbieten. Da hätte ich richtig Spaß!