Webseite modernisiert

Es war mal wieder Zeit meine Webseite zu modifizieren. Hab sowohl das Design geringfügig angeapckt, aber auch die technische Basis. Mache jetzt immer mehr mit jQuery (aber nicht um des Frameworks willen – deshalb sparsam und eher im Hintergrund). Dazu habe ich auch die Infos selbst entmistet. Denke, dass die Seite jetzt weniger erschlägt und harmonischer geworden ist.

Und mein altes Opera-Buch ist jetzt auch wieder online und kostenlos zu lesen. Durch Probleme auf dem Server, auf dem ich die Inhalte gehostet habe, war es in der letzten Zeit nicht erreichbar. Jetzt habe ich die Seiten auf meinen Server geholt. Die nächsten Wochen mache ich das auch mit den anderen Büchern.

JavaFX Platform offizielle Rich Client Technology für die Olympiade 2010

Nachdem ich mich letztes und vorletztes Jahr viel mit JavaFX beschäftigt habe, hatte ich der Technologie eine große Zukunft vorausgesagt. Sie hat meiner Meinung nach ein erhebliches Potential. Nur ist es seit einigen Monaten ziemlich still um JavaFX geworden und das enttäuscht mich doch ziemlich. Aber jetzt gibt es eine neue hammerharte Referenzapplikation für JavaFX.
Wie Oracle verlautbaren lässt, sind JavaFX™ und Java™-Plaftformen die offizielle Rich Client Technology von dem Organisationskomittee bei den olympischen Winterspielen in Vancouver. Die Ergebnissse, Nachrichten, etc. werden über JavaFX aufbereitet (https://www.vancouver2010.com/olympic-medals/geo-view/).

Das dürfte wieder für JavaFX einen ziemlichen Anschub bedeuten. Vielleicht wird das doch noch die Erfolgsstorie, die ich vorhergesagt habe.

Native digitals versus Digital Immigrants

Als ich die letzten Tage nach meinen Videoaufzeichnungen in der Trainerwohnung in Graz die Abende verbracht hatte, musste ich dort auf TV verzichten. Aber schneller W-LAN war an. Nur komischer Weise darf z.B. Zattoo in Österreich keine Kanäle bereitstellen. Also bin ich bei den direkten Streams und Mediatheken von HR, ZDF und 3-Sat hängen geblieben. Und da hab ich neben Nachrichten hauptsächlich Computersendungen durchstöbert. Dabei bin ich erstmals über den Begriff der Digital Natives gestolpert. Damit werden Personen bezeichnet die zu einer Zeit aufgewachsen sind, in der digitale Technologien wie Computer, das Internet, Handys und MP3s verfügbar und bereits selbstverständlich waren. Das sind alle Leute ab Geburtsjahr 1980. Die ab vielleicht 1990 – 1995 kennen eine Welt ohne Internet gar nicht mehr. Generation Internet.
Die davor werden als Analoge bezeichnet. Oder auch Digital Immigrants, wenn sie sich zumindest die digitalen Techniken als Erwachsene noch angeeignet haben.

Nun bin ich zwar definitiv kein Digital Native, aber irgendwie scheine ich für meinen Lebensstil einfach nur zu früh geboren zu sein. Denn was über die Digital Natives den staunenden Analoge im Fernsehen erklärt wird, ist für mich seit Jahren mein way of life. Sicher weil es mein Job ist, aber dennoch – die Abgrenzung nach dem Geburtsjahr greift viel zu kurz.

Aufnahmen beendet

Heute habe ich meine Aufnahmen zum jQuery-Videotraining beendet. Morgen kommen noch ein paar Nacharbeiten, aber im Grunde bin ich fertig.


Heute Mittag hatte ich das erste Mal die Tage auch Zeit nach Graz rein und auf den Schlossberg zu gehen. Die anderen Tage habe ich bloß zwischen der Wohnung und dem Studio 10 Meter über die Straße rüber gependelt.

Ich war zwar schon so oft hier in Graz (auch um die Jahreszeit), aber es hat bisher noch nie Schnee gelegen. Heute war jedoch dicker Schnee angesagt und vom Schlossberg bin ich fast mehr gerutscht als gegangen.

Morgen geht es dann mit dem Flieger wieder nach Hause.

Selbst vor der Kamera

Die Videotraining basieren ja darauf, dass ich was auf dem Bildschirm vorführe, das aufgezeichnet wird und ich die Erklärungen spreche. Bin also dabei gar nicht zu sehen. Aber es gibt immer auch noch eine Trainervorstellung. Und da sitzt man selbst vor der Kamera und wird gefilmt. Heute morgen war ich mal wieder dran.

Ansonsten hab ich jetzt über 7 Stunden Material zusammen. Aber ich war noch überhaupt nicht in der Stadt selbst. Ich kenne Graz von meinen vielen Trainings hier zwar recht gut, aber an einem der noch verbleibenden Tage will ich trotzdem mal runter in die Innenstadt und vielleicht auch hoch auf den Hausberg. Hoffe, dass ich morgen abschätzen kann, wie meine restliche Zeit hier ausgeht.

Google-Konkurenz zu iPad

Es sieht so aus als wollte Google unmittelbar auf die Vorstellung des iPad von Apple mit einem eigenen Gerät reagieren. Und die Pläne scheinen schon mehr als wage zu sein, denn auf einer offiziellen Google-Seite sind bereits entsprechende Bilder aufgetaucht. Zumindest lassen die Bilder in Zusammenhang mit Googles Chrome OS ein Gerät erkennen, das ziemliche Ähnlichkeiten mit Apples iPad aufweist. Die Sache ist zwar noch nicht offiziell bestätigt, aber die Stellungnahmen von Google klingen auch nicht gerade nach Dimenti.

Tag 1 in Graz

Bin im Studio von Video2Brain in Graz angekommen. Hatte Glück mit dem Flug, denn ich bin noch vor dem großen Schnee von FFM weggekommen. Heute Nachmittag sind wohl wieder diverse Flüge ausgefallen. Dafür ist hier in Graz strahlender Sonnenschein. Aber davon habe ich sowieso nicht viel, da ich im dunklen Tonstudio hocke. Obwohl es bald 18:00 Uhr ist, fange ich heute noch mit dem Videotraining zu jQuery an. So komme ich schon mal in Gang, bevor es morgen dann richtig losgeht.

PS: Der Flug hierher war übrigens wieder Erwarten total ruhig. Hatte eigentlich mit starkem Wind gerechnet. Dafür sparen sie beim Catering auf dem Flug. Nur ne halbe Stulle gab es ;-(

Neues jQuery-PlugIn

Nachdem wir gestern in der Probe meiner Band Safety First am Anfang wieder mal die Frage nicht entscheiden konnten, in welcher Tonart wir uns einspielen, kam mir die Idee ein jQuery-PlugIn zu schreiben, das uns die Entscheidung abnimmt ;-). Ich wollte sowieso ein paar neue jQuery-PlugIns erstellen und das ist zumindest mal eine Idee für was halbwegs Sinnvolles.

Das PlugIn sucht einfach per Zufallsgenerator aus allen 12 Tonarten eine aus und liefert die als Rückgabewert. Den kann man in einem beliebigen Container anzeigen.

Das PlugIn ist über diverse Parameter bezüglich des Aussehens konfigurierbar.

Hier ist die jQuery UI-Seite für das neue PlugIn

Eine Anwendung in einer Webseite

So nutze ich das auf der Bandseite

Hier geht es zu meinem Client für Twitter als jQuery-PlugIn


jQuery – Das neue JavaScript-Framework für interaktives Design


jQuery -    Das neue JavaScript-Framework für interaktives Design

Ralph Steyer,
Addison-Wesley,
ISBN 978-3-8273-2887-8,
erschienen 10.2009,
ca. 384 Seiten


ECMAScript 5 wurde veröffentlicht

Die als standardisierte Grundlage von JavaScript als auch JScript dienende Sprache ECMAScript wurde im Dezember 2009 in der Version 5 verabschiedet (kurz ES5) und um diverse Features aus den Mozilla-Ideen zur JavaScript 1.6 – 1.8 erweitert.

Der neue Standard führt einige neue APIs ein und soll vor allen Dingen robustere Programme ermöglichen. ES5 ist die direkte Nachfolgeversion von ECMAScript 3, denn ECMAScript 4 wurde auf Grund interner Streitigkeiten im Konsortium übersprungen.

Eine der wichtigsten Erweiterungen der neuen Version von ES5 ist die offizielle Aufnahme von JSON samt der offiziellen Implementierung einiger wichtiger Referenzfunktionen bzw. APIs (https://www.json.org/json2.js) in den Sprachumfang. Und damit werden auch Parsermethoden Einzug in die Sprache halten, die als Alternative für die Erzeugung eines Objektes aus JSON mittels eval() sowie die Extraktion eines Strings aus einem JSON-Objekt dienen (JSON.parse() und JSON.stringify()).

Mittels einer neuen Methode seal() kann man in Zukunft (wenn dieser Standard in JavaScript beziehungsweise JScript umgesetzt ist) seine Objekte gegen eine versehentliche Veränderung schützen. Eine als Parameter übergebene Eigenschaft eines Objekts wird gegen die Veränderung seiner Beschreibungen geschützt und es können keine neuen Properties hinzugefügt werden. Man wird sogar Objekte einfrieren können (freeze()). In dem Fall sind auch die Werte von Eigenschaften und veränderlich. In die gleiche Stoßrichtung zielt die Fixierung Objekte mit preventExtension(). Ein so gekennzeichnetes Objekt lässt sich nicht mehr um weitere Methoden und Eigenschaften ergänzen. Mit den zusätzlichen booleschen Methoden isFrozen() und isSealed() können Sie herausfinden, ob ein Objekt auf die eine oder andere Weise geschützt ist.

Für die Arbeit mit Datenfeldern sind die Methoden wie forEach(), map() und filter() aus JavaScript 1.6 offiziell in ES5 aufgenommen worden. Mit keys() kann die Bezeichnung der Methoden und Eigenschaften eines Objektes ermittelt werden.

Die vielleicht wichtigste beziehungsweise im professionellen Umfeld nützlichste Neuerung von ECMAScript 5 (neben der offiziellen Unterstützung von JSON) ist die Möglichkeit der Festlegung, dass die Verarbeitung von einem Skript nach strengen Regeln zu erfolgen hat. Das macht man mit der Anweisung „use strict“, die als String am Beginn eines Skripts oder einer Funktion zu notieren ist. Der Ansatz mit der einfachen Notation eines Strings im Code soll verhindern, dass es zu Inkompatibilitäten mit bestehendem Code und ES5 kommt.
Solch ein strenger Verarbeitungsmodus erzwingt beispielsweise, dass man Variablen sauber deklarieren muss und auch keine Zuweisung von Werten zu Objekteigenschaften vornehmen kann, ohne dass sie vorher deklariert wurden. Damit wird eine der tückischsten Fehlerquellen von JavaScript beseitigt, die sich auf Grund der losen Typisierung ergibt. Eine weitere Folge des strengen Verarbeitungsmodus ist, dass das Datenfeld arguments, über das die an eine Funktion übergeben Parameter zu finden sind, nicht mehr verändert werden kann. Auch wird in diesem Modus die Funktionalität von eval() sicherheitsrelevant eingeschränkt. Ebenso ist die bisweilen optionale Verwendung von Semikola zum Abschluss eines Befehls dann verboten. Aber auch die weiteren Reglementierungen in diesem Modus bewegen neue Versionen von JavaScript in Richtung einer sicheren und vor allen Dingen wartbaren Sprache. Wird Code mit der Einstellung „use strict“ aktiviert, soll der Code nur dann ohne Fehlermeldung ausgeführt werden, wenn die Interpretation des Codes eindeutig ist. Dies soll die Ausführung von Skripten zudem schneller machen.

In ES5 sind Eigenschaften eines Objektes nicht mehr nur einfache Schlüssel-Wert-Paare. Jede Eigenschaft besitzt explizit Attribute. Mit defineProperty() können dabei die Eigenschaften eines Objektes und die jeweiligen Attribute auch dynamisch zur Laufzeit definiert werden.
In vielen professionellen Programmiersprachen wie Java ist es üblich, dass man den Zugang zu Eigenschaften von Objekten nicht direkt gestattet. Stattdessen verwendet man indirekte Zugriffe über so genannte Getter und Setter. Das sind Methoden, über die Werte von Eigenschaften abgefragt (die Methode heißt in EC5 standardisiert get()) oder gesetzt (die Methode heißt entsprechend immer set()) werden können. Diese Philosophie wird auch in ECMAScript 5 eingeführt. Es gibt zudem entsprechende Eigenschaften, auf die direkt zugegriffen werden kann (Value Properties) und solche, auf die nur noch indirekt zugegriffen werden kann (Accessor Properties). Diese Accessor Properties verfügen neben den Gettern und Settern über Attribute wie writeable, configurable und enumerable, über die verschiedener Verhaltensweisen von Eigenschaften festgelegt werden. Mit der booleschen Eigenschaft writeable bestimmen Sie, ob eine Eigenschaft gegen Veränderung geschützt ist. Mit configurable erlauben Sie eine Konfigurierung (etwa ob eine Eigenschaft gelöscht werden kann und ob andere Attribute veränderbar sind). Und mit der Eigenschaft enumerable können Sie bestimmen ob eine Eigenschaft in einer Schleife wie for…in mit aufgezählt wird oder nicht.

ECMAScript 5 führt Skripte ein, die im Hintergrund laufen können. Diese nennen die Verantwortlichen Web Workers. Erzeugt werden solche Web Workers als Objekte vom Typ der neuen Klasse Worker.
Solche Skripte blockieren die normale Benutzerinteraktion bzw. Webseite nicht, sondern laufen wie im Fall von echtem Multithreading parallel dazu ab. Die Kommunikation mit so einem Hintergrundprozess erfolgt mit einem neuen Eventhandler onmessage.
Das Worker-Objekt selbst kann nun mittels der Funktion postMessage() Nachrichten an seinen Erzeuger versenden.

Keine length-Eigenschaft bei deklarativ erzeugten Arrays

Ich dachte eigentlich nicht, dass mich in JavaScript überhaupt noch was überraschen kann. Aber wenn man deklarativ ein Datenfeld etwa so erzeugt:

var p = {
0:1, 1:2, 2:3
}

dann steht die Eigenschaft length über p nicht zur Verfügung. Bei assoziativen Arrays war mir das zwar bekannt.Und nach etwas Nachdenken war die Sache wegen dem impliziten assoziativen Ansatz klar, aber irgendwie hat mich das in dem Moment überrascht,

Umfrage in Silverlight

Würden Sie eine Programmierschulung besuchen, die in Englisch durchgeführt wird – oder bevorzugen Sie Deutsch als Unterrichtsprache?
Diese Frage steht im Zentrum einer kleinen Umfrage, die Silverlight-Experte Otto Fischer gestartet hat. Mit der Teilnahme an der Umfrage nehmen Sie automatisch an der Verlosung von zehn Exemplaren des Buchs „Silverlight-3 Crashkurs“ von Otto Fischer teil. Der Titel ist im Microsoft-Press Verlag erschienen.
Sie können Ihre Gewinnchance verdoppeln (verdreifachen…), indem Sie das Umfrage-PlugIn auf Ihrer Website platzieren. Für jede Internet-Domäne, auf der Sie das PlugIn installieren, wandert eine zusätzliche Kugel mit Ihrem Namen in die Lostrommel. Schicken Sie einfach den Link zu Ihrer Seite mit dem PlugIn an Info@silverlight-city.de

Bayeux gestattet Push-Technink mit AJAX

Ich bin gerade über Bayeux gestolpert. Das Protokoll gestattet Push-Technink mit AJAX. Sehr interessant. Das muss ich weiter verfolgen. Denn grundsätzlich kann man per HTTP eine Datensendung nur durch den Client anstoßen. Der Server kann immer nur auf eine Anfrage reagieren. Das ist im Grunde ein unabdingbares Sicherheitsfeature. Nur schränkt das viele sehr interaktive RIAs ziemlich ein. Deshalb erweitert das Bayeux-Protokoll HTTP in Hinsicht auf die bidirektionale Kommunikation – sowohl vom Client zum Server und umgekehrt vom Server zum Client. Bayeux wird mittlerweile schon bei diversen Webapplikationen verwendet, ohne dass das dem Anwender bewusst ist. Und zwar solche RIAs, bei denen der Server beim Eintritt eines bestimmten Ereignisses von sich aus Informationen an registrierte Clients übermitteln soll. Das können zum Beispiel Web-Onlinespiele oder Börsenticker sein. Die neu erschiene CometD-Version 1.0 (https://cometd.org/) implementiert nu das Bayeux-Protokoll. Dazu bei es eine Javascript-Bibliothek mit der Möglichkeit der Anbinung anjQuery und Dojo sowie eine in Java geschriebene Clientbibliothek zur Integration in Java-Applikationen. Gerade die Verbindung zum Dojo Tookit ist ziemlich naheliegend, den hinter CometD steht die Dojo Foundation. Auf Seiten des Servers stellt CometD eine in Java geschriebene Bibliothek zur Umsetzung der eigentlichen Applikationslogik zur Verfügung.

GWT 2.0 und qooxdoo 1.0

Gibt zwei mehr oder weniger interessante Entwicklungen im Umfeld von AJAX- bzw. Web-Frameworks. Das GWT ist in die Version 2.0 gegangen und ein neues Framework mit Namen qooxdoo erschienen.

Ich persönlich finde die neue Version des GWT sehr interessant, während mir das Drumherum bei qooxdoo sehr befremdlich erscheint (unabhängig davon, ob die Welt wirklich auf noch ein Framework gewartet hat).

qooxdoo wurde steht unter https://qooxdoo.org/ zum Download zur Verfügung. Das Framework unterstützt nach eigenen Aussagen die wichtigsten gängigen Browsern (Internet Explorer, Firefox, Safari, Opera, Chrome). Was mich persönlich zum Einen etwas befremdet ist, dass dAs Framework frei sein soll und unter einer dualen Lizenz (LGPL und EPL) steht, aber die Entwicklung wurde hauptsächlich von der 1&1 Internet AG vorangetrieben.

Viel mehr stört mich aber die Marketingaussage aus dem Projekt dass man mit dem Framework RIAs erstellen kann, ohne dass man sich mit Webtechniken wie CSS, DOM und HTML auskennen muss. Mit so einen Bullshit haben schon der Hersteller der katastrophalen WYSIWYG-Webeditoren die Webseitenersteller für dumm verkauft.

Aber so rein von der Funktionalität macht qooxdoo auf den ersten Blick gar keinen schlechten Eindruck. Es konzentriert sich auf die Erstellung von Webanwendungen mit desktop-ähnlicher Oberflächen. Es ist also im Gegensatz zu mehr an der Programmierung orientierten Frameworks wie Prototype mehr auf die Optik fokussiert.
Von der Funktionalität scheint das Framework vergleichbar mit den Platzhirschen jQuery, Dojo oder YUI zu sein. Es enthält die üblichen Widgets, Layout-Manager und Themes sowie Tools zur Codevalidierung, JavaScript-Kompilierung, Unit-Tests, automatisierte GUI-Tests, Debugging etc. Von großen Interesse dürfte aber sein, dass das angekündigte QxWT-Projekt fast alle qooxdoo-Funktionen in das Google Web Toolkit (GWT) integrieren soll.

Und damit sind wir beim GWT, dessen Version 2.0 verfügbar ist. Es enthält mit Speed Tracer einen neuen Performance-Profiler für Chrome. Klar was Google damit bezweckt – eine Win-Win-Situation für das GWT und Ghrome zu schaffen. Ebenso neu ist ein inkrementeller Download von Applikationen mit Code-Splitting. Damit müssenh Anwender erst einmal nur den für eine Anwendung wirklich notwendigen Code herunterladen. Das reduziert die Startzeit einer Webanwendung. Weiter ist ein UIBinder ein UI-Framework neu. Damit lassen sich GUI für Webanwendungen schneller entwickeln und die Präsentationsschicht und Anwendungslogik sauber trennen. Also das GWT 2.0 werde ich mir auf jeden Fall näher ansehen.