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

Oktober, 2009

Robben

Di 27 Okt. 09 # Permalink

Robben in einer Aufzuchtstation

Aufgenommen in einer Robben-Aufzuchtstation an der Nordsee.

AJAX loading Grafik neben dem Mauszeiger anzeigen

Di 27 Okt. 09 # Permalink

Um dem Benutzer zu visualisieren, dass gerade ein asynchroner HTTP Request ausgeführt wird, hat die AJAX Welt das ajax-loading.gif erfunden. Diese kleine animierte Grafik gibt es in vielen Varianten und bittet den Benutzer optisch darum zu warten, bis der Inhalt geladen wurde. Sinnvolle Sache, sonst klickt er sich nämlich doof und dusselig, falls es doch mal ein wenig länger dauert. Kurzerhand habe ich das auch mal hier in Form des springenden Punktes im Blog eingebaut.

Zuerst habe ich meinen Body-Tag mit einer ID versehen, damit ich mit Prototype einfach auf das Body-Element zugreifen kann.

	<body id="body">

Dann habe ich ein kleines DIV samt Bild mit den CSS Eigenschaften “position:absolute” und “display:none” hinzugefügt. Das DIV kann mit Prototype so nämlich frei positioniert werden, wird aber vorerst nicht angezeigt.

	<!-- Create hidden bouncing ball layer (ajax-loading.gif or similar) -->
	<div id="bouncer" style="position:absolute;display:none"><img src="/images/ball.gif" alt=""/></div>

Als nächstes wird ein Event-Handler an den Event “onmousemove” des Body-Tags geklebt. Der Handler ermittelt die aktuellen Maus-Koordinaten und platziert das (noch immer versteckte) DIV versetzt neben der Maus.

	// Move the bouncing ball next to mouse cursor position
	$('body').onmousemove = function( e ) {
		mouseX = Event.pointerX( e );
		mouseY = Event.pointerY( e );
		$('bouncer').setStyle( { left: (mouseX+15) + 'px', top: (mouseY+15) + 'px' } );
     		return true;
	}

Danach habe ich meine AJAX-Load Funktion noch so abgeändert, dass mit Beginn des Requests das DIV mit der Grafik angezeigt wird und bei Erfolg oder Fehler wieder versteckt wird. Anbei eine kleine Beispiel-Funktion.

	// Example function to use the bouncer
	function ajax_load( uri )
	{
		$('bouncer').show();
		new Ajax.Request( uri, {
					onSuccess: function( r ) {
						$('bouncer').hide();
					},
					onFailure: function( r ) {
						$('bouncer').hide();
					}
		});
	}

Wirklich einfach, aber ein toller und ausnahmsweise auch mal sinnvoller Effekt. ;-)

Netzpolitik, ein Traum

Di 27 Okt. 09 # Permalink

“Es ist bereits 9 Uhr, als er nach einem langen Tag nach Hause kommt. Während der Rückfahrt kam ihm unerwartet eine Idee, wie er das Problem der hohen Arbeitslosigkeit vielleicht lösen könnte. Also schaltet der Arbeitsminister doch noch kurz seinen Laptop ein und tippt die Idee in das Forum der Webseite des Bundesministeriums für Arbeit und Soziales. Er will sehen, wie die Bürgerinnen und Bürger darüber denken und lässt die Diskussion ein paar Tage laufen. Danach liest er alle Beiträge und stellt fest, dass da doch einige Sachen sind, die er nicht bedacht hat. Sowohl negativ, als auch positiv. Trotzdem scheint es lohnenswert seine Idee weiter zu verfolgen, also diskutiert er im Foreneintrag mit und schildert seine Gedanken. Es findet ein Austausch statt.”
Weiterlesen…

SVN per PHP bedienen

Mo 26 Okt. 09 # Permalink

Da ich ja einige WordPress Plugins entwickele und ich mir die Zusammenarbeit mit dem WP SVN Server erleichtern wollte, habe ich für alle Plugins ein kleines PHP Script geschrieben, welche die Änderungen im SVN eincheckt. Klar ginge das auch über ein Shell-Script, aber die PHP Datei kann ich nicht nur auf der Konsole, sondern auch über den Browser aufrufen – manchmal ganz praktisch.

Wenn ich an einem Plugin also nur kleine Änderungen gemacht habe, die ich eben schnell ins Repository schubsen will, dann kopiere ich die geänderten Dateien einfach in den trunk, erhöhe die Version im SVN Script und rufe dieses anschließend auf. Die neue Version wird dann eingecheckt und der neue tag erstellt.

<?php
	// Config
	$plugin_src	= '/home/www/example/src/article2pdf/';
	$svn_home	= '/home/www/example/src/article2pdf/svn/article2pdf/';
	$svn_trunk	= '/home/www/example/src/article2pdf/svn/article2pdf/trunk/';
	$svn_tags	= '/home/www/example/src/article2pdf/svn/article2pdf/tags/';
	$svn_user	= 'the_user';
	$svn_passwd	= 'the_password';

	// Version values
	$version	= '0.27';
	$message	= 'Adding some new functions.';

	// Set home for svn, important, or svn will not work!
	putenv( "HOME=$svn_home" );

	// Up
	echo passthru( "cd $svn_home ; svn up", $ret );
	if( $ret === 0 )
	{
		// Stat
		echo passthru( "cd $svn_home ; svn stat", $ret );
		if( $ret === 0 )
		{
			// Check in trunk
			echo passthru( "cd $svn_home ; svn ci --username $svn_user --password $svn_passwd -m '$message'", $ret );
			if( $ret === 0 )
			{
				// Copy new version to tag
				echo passthru( "cd $svn_home ; svn cp trunk tags/$version", $ret );
				if( $ret === 0 )
				{
					// Stat and check in new version
					echo passthru( "cd $svn_home ; svn stat", $ret );
					echo passthru( "cd $svn_home ; svn ci --username $svn_user --password $svn_passwd -m 'Tagging $version'", $ret );
				}
			}
		}
	}
?>

Wichtig ist per putenv das HOME-Verzeichnis auf den Pfad zum SVN Verzeichnis zu setzen, da SVN über PHP sonst nicht funktioniert. SVN braucht zwingend im Environment eine passende HOME-Angabe. Diese Umgebungsvariable scheint aber standardmäßig von PHP nicht gesetzt zu sein.

Die Sache mit der USK

Mo 26 Okt. 09 # Permalink

Weil ich seit kurzem einen neuen Rechner habe, habe ich mir zwei Spiele bestellt, die ich nun endlich mal zocken kann: Age of Conan und Left4Dead. Beide haben in Deutschland eine USK 18+ Freigabe, sprich: Nur wer über 18 Jahre ist, kann diese Spiele im Laden kaufen, bzw. im deutschen Internet bestellen. Soweit so gut und vorweg: Ich halte die USK in Deutschland für eine prima Sache. Es gibt Spiele, die sind klar für Jugendliche und Kinder nicht geeignet, aber bei einer Sache übertreibt die USK meiner Ansicht nach.

Ich kann nicht nachvollziehen, dass Spiele, die eine USK 18+ Freigabe haben, in Deutschland dennoch vom Hersteller zensiert werden müssen, um nicht indiziert zu werden. Wird ein Spiel indiziert, darf es nicht mehr öffentlich beworben oder verkauft werden, es geht dann nur über den Griff “unter die Ladentheke”. Das wollen die Spielehersteller natürlich vermeiden, deswegen werden die Spiele in der Deutschen Version geschnitten. Weiterlesen…