seeseekey.net - Invictus Deus Ex Machina

Wer eine REST- bzw. eine RESTful-API entwickeln möchte, der kann natürlich das Rad neu erfinden und die komplette API von Grund auf entwickeln. Einfacher wird es wenn man ein bestehendes Framework nutzt. Für diesen Zweck bietet sich unter PHP Restler an. Mit Hilfe dieses Frameworks lassen sich vollwertige REST-APIs innerhalb weniger Stunden entwickeln. So unterstützt Restler unter anderem unterschiedliche Ausgabeformate wie JSON, XML oder YAML. Abgerundet wird das Paket durch eine ausführliche Dokumentation und sehr viele gut dokumentierte Beispiele.

luracast.com/products/restler

Restler ist unter der LGPL lizenziert und somit freie Software. Die offizielle Webseite ist mit hilfreichen Informationen gespickt, während der Quelltext auf GitHub zu finden ist.

Vor einiger Zeit spielte ich mit dem Gedanken einen Disassembler für Mac OS X zu programmieren. Allerdings wollte ich nicht alles neu erfinden und schaute mich deshalb nach einem passenden Framework um. Gefunden habe ich dabei Capstone.

capstone-engine.org

Dabei handelt es sich um ein freies, unter einer BSD-Lizenz lizenziertes, Framework zur Disassemblierung. Über verschiedene Bindings kann das Framework aus den unterschiedlichsten Programmiersprachen angesprochen werden. So gibt es unter anderem Bindings für C#, Java, Ruby und Python. Das Framework selbst ist dabei in C geschrieben. Capstone unterstützt dabei eine Reihe von Prozessorarchitekturen wie X86, Sparc, MIPS und ARM. Bezogen werden kann Capstone unter capstone-engine.org.

Wenn man größere Anwendungen schreibt, so haben diese meist eine Undo & Redofunktion. Damit man das Rad nicht neu erfinden muss, gibt es sogenannte Undo Frameworks. Ein schönes Framework für .NET ist das Undo Framework welches unter http://undo.codeplex.com/ zu finden ist. Es basiert dabei auf dem Entwürfsmuster Kommando (http://de.wikipedia.org/wiki/Kommando_%28Entwurfsmuster%29) und ist relativ einfach zu benutzen.

Weitere Informationen gibt es unter:
http://blogs.msdn.com/b/kirillosenkov/archive/2009/06/29/new-codeplex-project-a-simple-undo-redo-framework.aspx
http://blogs.msdn.com/b/kirillosenkov/archive/2009/07/02/samples-for-the-undo-framework.aspx

Gegeben sei folgender Quelltext:

<div class="divbox">Wert: 42</div>

In diesem Quelltext sollte der Wert je nach Position eines Sliders anpasst werden. Im ersten Moment versuchte ich es mit der jQuery Funktion replaceWith:

$(".divbox").replaceWith("Wert " + value);

Leider führt diese Methode dazu das der gesamte div Tag ersetzt wird was natürlich nicht erwünscht ist. Zum Glück gibt es in jQuery eine Entsprechung für das innerHTML, diese Funktion hört auf den Namen html:

$(".divbox").html("Wert " + value);

Damit wird nur der Text zwischen den div Tags geändert. Wichtig ist es dabei darauf zu achten das jQuery hier nur die innerHTML Eigenschaft des Browsers durchreicht und dies z.B. dazu führen kann das beim Internet Explorer Attribute in Anführungszeichen zurückgegeben werden.

Weitere Informationen gibt es unter:
http://api.jquery.com/html/
http://api.jquery.com/replaceWith/

Gestern habe ich mich ein wenig mit jQuery beschäftigt. Dazu erst einmal ein kleineres Beispiel:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <script src="jquery.js"></script>

    <script type="text/javascript">
    $(document).ready(function(){    
            $("a#hide").click(function(){
                $("#valuesInit").animate({ height: 'hide', opacity: 'hide' }, 'slow');
            })
    });
    </script>

  <title>jQuery Test</title>
</head>
<body>
  <div id="valuesInit" style="background-color:#ADADAD">
  <p><b>Initialwerte</b></p>
  Lorem Ipsum dolor sit amet...
  </div>

  <p><a href="#" id="hide">Verstecken</a></p>
</body>
</html>

In diesem Beispiel wird eine div Box mit der ID valuesInit und der Klasse divbox angelegt. Oben wird für den Link mit der ID hide eine Klickfunktion definiert. Diese Klickfunktion sucht dabei das Element mit der ID valuesInit und lässt es verschwinden. Nun gibt es verschiedene Möglichkeiten etwa zu selektieren:

  • nach Element
$("div").animate({ height: 'hide', opacity: 'hide' }, 'slow');
  • nach ID
$("#valuesInit").animate({ height: 'hide', opacity: 'hide' }, 'slow');
  • nach Klasse
$(".divbox").animate({ height: 'hide', opacity: 'hide' }, 'slow');

Weitere Informationen gibt es unter:
http://docs.jquery.com/Main_Page
http://www.very-clever.com/jquery-tutorial.php
http://www.andreas-schlapsi.at/2008/10/10/jquery-dom-elemente-auswahlen/

Wer auf der Suche nach einer High Level API für WebGL ist, der sollte sich einmal PhiloGL anschauen. Dieses Framework welches Open Source (MIT Lizenz) ist kann dabei unter http://senchalabs.github.com/philogl/ bezogen werden. Ein kurze Einführung in das Framwork gibt der Entwickler in seinem Blog unter http://www.sencha.com/blog/introducing-philogl-a-webgl-javascript-library-from-sencha-labs/.

Weitere Informationen gibt es unter:
http://www.golem.de/1102/81627.html

Bei Mapbender (zu finden unter http://www.mapbender.org) handelt es sich um ein Web-Framework für GIS Belange. Das ganze Framework kann man auch unter Ubuntu installieren. Im ersten Schritt müssen dazu einige Pakete installiert werden. Dies geschieht mittels:

sudo apt-get install apache2 php5 postgresql php5-pgsql 

Nachdem alle Pakete installiert sind, sollte die aktuelle Version von Mapbender heruntergeladen und entpackt werden. Anschließend sollte für Mapbender ein eigener Nutzer (mittels adduser mapbender) namens mapbender angelegt werden. Bevor wir dann mittels su mapbender uns in den Kontext des Nutzers begeben, kopieren wir die entpackten Dateien in sein Homeverzeichnis.

Dem Nutzer postgre muss nun noch ein Passwort zugewiesen werden. Dies geschieht mittels:

sudo sudo –u postgres psql 

Daraufhin öffnet sich die Postgres Konsole in welcher man mittels \password postgres das Passwort setzen kann. Nun sollte die Daten im Homeordner des Mapbender Ordners die passenen Rechte bekommen:

find /home/mapbender/ –type d –exec chmod 777 {} +
find /home/mapbender/ –type f –exec chmod 777 {} + 

Nun wird die Datenbank installiert. Dazu wird das Skript install2.6.sh welches unter /home/mapbender/resources/db/ zu finden ist ausgeführt. Das Skript stellt dabei einige Fragen wie zum Beispiel nach dem Namen der Datenbank, Webservernenutzer (www-data) etc.

Im nächsten Schritt wird die Datei /etc/apache2/httpd.conf mit einem Editor geöffnet. Dort kommt dann folgendes in die Datei:

Alias /mapbender /home/mapbender/http

 <Directory /home/mapbender/http>
 Options MultiViews
 DirectoryIndex index.php
 Order allow,deny
 Allow from all
 </Directory>

Nachdem das geschafft ist muss die Konfigurationsdatei von Mapbender angepasst werden. Diese befindet sich im Ordner /home/mapbender/conf und trägt den Namen mapbender.conf. Dort trägt man die Datenbankkonfiguration sowie die Login URL ein. Nun startet man noch den Apache mittels /etc/init.d/apache2 restart neu. Danach sollte Mapbender funktionieren. Wenn nicht hilft es das Error Logging in der php.ini zu aktivieren um so den Fehlern auf die Spur zu kommen.

Weitere Informationen gibt es unter:
http://de.wikipedia.org/wiki/Mapbender
http://www.mapbender.org/Installation

Auf der Such nach einer ordentlichen Javascript Bibliothek bin ich auf jQuery gestoßen. Dabei bietet jQuery die üblichen Funktionen wie DOM Manipulation, Browserabstraktion sowie zahlreiche AJAX Funktionalitäten. Auch Dokumentation ist reichlich vorhanden, wie man unter http://docs.jquery.com/Tutorials#Tutorials_auf_Deutsch sehen kann. Die offizielle Seite der Bibliothek ist unter http://jquery.com/ zu finden.

Weitere Informationen gibt es unter:
http://de.wikipedia.org/wiki/JQuery

Eigentlich wollte ich nur mal nachschauen welche Dateiformate Android von sich aus unterstützt bin dann aber über das hübsche Architektur Diagramm von Android gestolpert.

Da lag es nah nicht nur sich die Dateiformate anzuschauen sondern den Kreis etwas größer zu ziehen. Also für Anwendungsentwickler sehr interessant ist das durchdachte und modulare Applikationsframework von Android.

So werden Bibliotheken für 2D und 3D (basierend auf OpenGL ES), Sqlite zum speichern von strukturierten Daten, Webkit und noch einige andere Bibliotheken mitgeliefert. Die Einstiegshürde ist im Gegensatz zu anderen Mobilplattformen fast nicht vorhanden. Man kann eigentlich sofort loslegen. Alle Anwendungen die der Entwickler schreibt sind Java Anwendungen welche allerdings nur auf der Android eigenen Dalvik VM laufen.

Bei der VM handelt es sich um eine Registermaschine (im Gegensatz zu einer Stapelmaschine). Das hat den Vorteil das der Bytecode wesentlich performanter ausgeführt wird.

Doch nun zu den unterstützen Medientypen. Auf der Audioseite unterstützt Android ACC, AMR, MP3, MIDI, OTA, Ogg Vorbis und PCM. Bei den Bildformaten kommt Android mit GIF, PNG, JPEG und BMP klar wobei es JPEG auch schreiben kann. Da hätte man ruhig auch noch eine Schreibunterstützung für PNG Bilder mit einbauen können.

An Videoformaten gibt es H.263, H.264 und MPEG4 SP wobei die beiden erstgenannt vom Framwork auch encodiert werden können.

Eine Besonderheit in diesem Zusammenhang ist das G1 von T-Mobile. Es unterstützt neben den genannten Formate noch die WMA und WMV Formate aus dem Hause Microsoft.

Weitere Informationen gibt es unter:
http://developer.android.com/guide/basics/what-is-android.html
http://developer.android.com/guide/appendix/media-formats.html

Bevor ich es vergesse, vor einen Tagen ist der vierte Meilenstein des FSO Frameworks herausgekommen. So wurden auch in diesem Release wieder viele Bugs behoben und allgemein an der Stabilität des Frameworks gearbeitet. Die Telefonbuch API unterstützt nun mehrere Telefonbücher, der SMS PDU Modus wurde verbessert (bessere Unterstützung der Zeichensätze). Daneben gab es Verbesserungen im GPS Daemon sowie viele kleinere und größere Optimierungen. Der vierte Meilenstein kommt in den unterschiedlichsten Images:

- openmoko-fso-console-image
– openmoko-fso-illume-image
– openmoko-fso-image

Bei dem console-image handelt es sich um ein reines Konsolen Image. Das illume-image ist ein FSO Image nur mit Ilumne während das fso-image ein FSO Image mit Zhone und einiger Software ist.

Weitere Informationen und den Download gibt es unter:
http://downloads.openmoko.org/framework/milestone4/
http://wiki.openmoko.org/index.php?title=OpenmokoFramework/Status_Update_5