seeseekey.net - Invictus Deus Ex Machina

Normalerweise sind Favicons statische Gebilde. Allerdings wurde schon Tetris für das Favicon umgesetzt. Wer also etwas Bewegung in sein Favicon bringen möchte, sollte sich die Javascript Bibliothek favico.js anschauen. Mit der Bibliothek ist es möglich sein Favicon zu animieren oder gleich komplette Videos in diesem abzuspielen. Auch der Zugriff auf die Webcam und die anschließende Darstellung im Favicon sind möglich.

lab.ejci.net/favico.js/

Der Quelltext der Bibliothek ist auf GitHub zu finden. Lizenziert ist das ganze unter der MIT-Lizenz und der GPL und damit freie Software.

Mit Javascript und Co. ist mittlerweile eine ganze Menge möglich. Das sieht man auch immer wieder an den unterschiedlichsten Experimenten, welche aus dem Hause Google kommen. In diese Fall ist es buildwithchrome.com.

Lego im Browser

Auf der Seite kann man dabei virtuell mit Legosteinen spielen. Leider sind nur rote Steine vorhanden und auch die Steinauswahl ist begrenzt — trotzdem kann man beachtliche Bauwerk erschaffen. Alles in allem ist es ein schönes Beispiel was man mittlerweile im Browser bewerkstelligen kann.

Wer Entity-Relationship-Modelle bzw. die entsprechenden Diagramme (ERD) erstellen möchte, der kann hierfür Software wie die freie MySQLWorkbench nutzen. Für das plattformübergreifende Erzeugen solcher Diagramme kann man allerdings auch die freie Webapplikation wwwsqldesigner nutzen.

Der ERD-Designer in Aktion

Auf der Webseite des Autors gibt es eine Demo zum Ausprobieren. Die in PHP und Javascript geschriebene Software steht dabei unter einer BSD-Lizenz und ist somit freie Software. Bei der Installation muss das entsprechende Archiv nur auf dem Webserver entpackt werden und kann sofort genutzt werden. Nur wer die Möglichkeiten der serverseitigen Speicherung nutzen möchte, muss einige Parameter konfigurieren.

Wer schon immer das tiefe und unerklärliche Bedürfnis hatte, Windows in der ersten Version auszuprobieren, der kann dies nun tun. Möglich wird dies mit der Webseite jsmachines.net. Das ganze basiert dabei auf dem unter GPL stehenden PCjs. Dabei handelt es sich um einen IBM PC Emulator, welcher in Javascript geschrieben ist. Der Quelltext soll später auf GitHub zur Verfügung stehen.

Der Windows 1 Emulator in Aktion

Die Windows-Emulation ist neben einigen anderen Emulationen (unter anderem Zork I und DONKEY.BAS) auf der Webseite zu finden.

In den neueren Firefox Versionen hat man das Problem das sich im Optionsmenü keinerlei Möglichkeit mehr findet, Javascript komplett abzuschalten. Der Grund für diese Entscheidung seitens Mozilla liegt darin, dass „das Web ohne Javascript einfach kaputt ist“. Abhilfe schaffen hier Plugins wie NoScript. Allerdings gibt es auch im Firefox direkt noch die Möglichkeit Javascript zu deaktivieren. Dazu gibt man in der Adressleiste „about:config“ ein und sucht nach der Zeichenkette:

javascript.enabled

Der Wert kann dann entweder auf „true“ oder auf „false“ gesetzt werden, und somit die Javascripteinbindung konfiguriert werden.

Das schöne an zentralen Sammlungen ist das man sie relativ einfach auswerten kann. In diesem Fall geht es um die Auswertung der GitHub Repositories. Wie der Name „Popular Convention“ andeutet geht es darum aus den Quelltexten bestimmte Informationen über bevorzugte Konventionen wie z.B. Leerzeichen vs. Tabs zu extrahieren.

Popular Convention und Scala

Das Ergebnis kann man sich auf der Webseite http://sideeffect.kr/popularconvention/ für die Sprachen Javascript, Java, Python und Scala anschauen. Die Software zur Auswertung ist dabei freie Software und steht unter der MIT Lizenz und kann unter https://github.com/outsideris/popularconvention bezogen werden.

Über das Wochenende hatte ich einige GPS getagte Bilder geschossen und wollte diese auf einer Karte darstellen. Eine kurze Suche im Netz ergab, das so etwas in dieser Form nicht existierte (wobei hier natürlich ein Irrtum vorliegen kann). Also wurde das ganze auf Basis von Leaflet implementiert.

Die Webapplikation in Aktion

Leaflet ist ein Framework mit welchem man schnell Kartenapplikationen im Web realisieren kann. Um den „Gps Tagged Image Viewer“ zu benutzen, müssen die Dateien auf einem Webserver kopiert werden. Die Bilder werden dabei in den Ordner „images“ kopiert. Anschließend wird das PHP Skript „parseimages.php“ aus dem „utils“ Ordner ausgeführt. Dieses ließt die EXIF Daten aus den Bildern aus und erzeugt die entsprechenden Marker in einer Javascript Datei. Danach kann das ganze genutzt werden.

Die Karte ist dabei mit drei Kartenebenen versehen, einmal Bing Luftbilder (für welche ein API-Key registriert werden muss), sowie OpenStreetMap in zwei unterschiedlichen Renderings. Der Quelltext ist unter GPLv3 verfügbar und kann auf GitHub bezogen werden.

Da beginnt man den Tag mit dem gemütlichem Debuggen von Javascript Code und plötzlich bekommt man von Chrome folgende Meldung auf der Javascript-Konsole:

Cross origin requests are only supported for HTTP.

vorgesetzt. Da stellt sich natürlich die Frage was passiert ist. Die Antwort ist relativ einfach. Chrome unterbindet das die betreffende Webapplikation etwas von einem anderen Ursprung laden kann. Bei HTTP würde so etwas funktionieren. Wenn man das ganze über das „file:///“ Schema aufruft wird es etwas komplizierter. Dafür muss Chrome der Parameter „-allow-file-access-from-files“ übergeben werden, welcher das ganze dann wieder erlaubt. Unter Mac OS X könnte die Kommandozeile dann wie folgt aussehen:

open /Applications/Google\ Chrome.app/ --args -allow-file-access-from-files

Danach funktionieren die „Cross origin requests“ unter Chrome auch lokal.

In JavaScript kann man vernünftig programmieren, wenn man die schlechten Teile weglässt. Nicht umsonst gibt es das Buch JavaScript: The Good Parts. Dabei haben sich im Laufe der Zeit einige „Best Practices“ entwickelt, welche unter anderem in Form von Design Patterns vorliegen. Auf der Webseite http://shichuan.github.com/javascript-patterns/ kann man sich diese anschauen und so sehen, was man in Zukunft besser machen kann. Das entsprechende GitHub Projekt ist dabei unter https://github.com/shichuan/javascript-patterns/ zu finden. Leider scheint es keine definierte Lizenz für das Projekt zu geben, so das der Lizenzstatus im Moment augenscheinlich noch ungeklärt ist.

Bei der Entwicklung wundert man sich ab und an, was für interessante Projekte in den Weiten des Netzes so umherschwirren. So unter anderem das Projekt Script#. Dabei handelt es sich um eine Erweiterung für das Visual Studio 2012 mit welcher es möglich ist C# Quelltext (so er gewissen Kriterien genügt) in JavaScript umzuwandeln, bzw. zu compilieren.

Die Erweiterung welche im Quelltext unter https://github.com/nikhilk/scriptsharp zu finden ist, steht dabei unter der Apache Lizenz und ist somit freie Software. Nach der Installation fügt sie dem Visual Studio neue Projekttypen hinzu, mit welchen man anschließend arbeiten kann. Leider gibt es von Script# keine MonoDevelop Variante, so das man im Moment zwingend an das Visual Studio gebunden ist. Allerdings findet sich in der Roadmap folgender Satz:

In terms of code contribution, it would be especially interesting to see the development of import libraries for common libraries, so they are easily usable right out of the box. It would also be interesting to see the development of complementary tools/addins, adding support to other IDEs (esp. MonoDevelop) and other such complementary projects. Or you might be interested in the very core, i.e. the compiler itself.

Also wenn sich jemand bemüßigt fühlt, das ganze für MonoDevelop in Angriff zu nehmen, der muss nun nicht mehr auf die Einladung warten. Die offizielle Projektseite von Script# ist unter http://scriptsharp.com/ zu finden.