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.

Vorratsausspionage vor Gericht

Ich muss mich doch mal bei den über 30.000 Klägern bedanken, die die so genannte Vorratsdatenspeicherung (für mich ist das nur reine Spionage auf Vorrat) vor Gericht gezerrt haben. Und es bestehen gute Chancen, dass der Mist gekippt wird. Schon seltsam, dass der verantwortliche Angeklagte – das Justizministerium – wohl selbst eine Verurteilung wünscht. Das macht zumindest Hoffnung, dass einige Leute in Deutschland aus den zwei Überwachungsstaaten im letzten Jahrhundert ein bisschen was gelernt haben. Und ich frage mich wo die Terroristen wirklich sitzen, die unsere Freiheit bedrohen?

Standardisierungsversuch XMLHttpRequest-Objekt

Da schau – das XMLHttpRequest-Objekt soll ein Webstandard werden. Zumindest nach dem W3C, das den letzten Working Draft dafür vorgelegt hat. Bis zum 16. Dezember 2009 nimmt das WW3C noch Kommentare zum aktuellen Entwurf entgegen. Das bedeutet, dass die Arbeiten an dem Standard fast abgeschlossen sind. Das W3C will mit der Standardisierung nun für einheitliche Implementierung sorgen.

Bleibt zu hoffen, dass dies erfolgreicher verläuft als die bisherigen Standardisierungsversuche wie bei HTML oder CSS, an die sich Browserhersteller quasi als Qualitätsmerkmal nicht gehalten haben oder immer noch nicht halten. Aber so weit sich das XMLHttpRequest-Objekt mittlerweile schon etabliert hat kann selbst der zahnlose W3C-Tiger nicht mehr viel falsch machen.

Neue Programmiersprache von Google

Da schau an. Google beackert ja wirklich jeden Acker. Jetzt gibt es sogar eine neue Programmiersprache mit Namen Go. Sie soll C oder Pascal ähneln und bisher noch nicht produktionsreif sein. Google verfolgt in Bezug auf die OO einige ungewöhnliche Ansätze, denn angeblich gibt es keine Vererbung und keine Typhierarchien. Aber Schnittstellen und Pakete sowie private Elemente. Auch Polymorphismus wird unterstützt. Und entsprechend aller modernen Sprachen gibt es einen GC zur Speicherbereinigung.

Nun stellt sich die Frage, wozu man eine weitere Programmiersprache braucht? Aber Google hat schon immer eine Nase für Trends und spannende neue Entwicklungen. Ich bin mir noch nicht sicher, ob sich eine Beschäftigung mit Go lohnt. Aber ein bisschen werde ich wohl damit experimentieren.

https://golang.org/

Diplomarbeit wieder entdeckt

Ich habe gerade beim Stöbern im Keller meines Elternhauses meine Diplomarbeit gefunden. Hatte die im Heizungskeller in der hintersten Ecke versteckt. Das Thema waren mathematische Grundlagen der relativistischen Quantenmechanik. Genau genommen geht es um die „Existenz und Vollständigkeit der Wellenoperatoren nach V. Ens“, deren Gültigkeit ich vom Fall des nichtrelativistischen Schrödinger-Operators auf den relativistischen Fall mit dem Dirac-Operator übertragen habe.

Was ein Formelwust. Versteh selbst nix mehr. Selbst bei der Einleitung verwende ich schon Begriffe, mit denen ich heute nichts mehr anfangen kann. Aber irgendwann muss ich das wohl mal kapiert haben.

Neuer Online-Workshop zu AJAX

Ich halte mal wieder bei akademie.de einen Online-Workshop zu AJAX. Er geht über 4 Wochen und beginnt am 10. November 2009.


In den vier Wochen werden die Teilnehmer mit vielen praktischen Beispielen und Übungen an AJAX herangeführt:

* vom Schnelleinstieg ins „Prinzip AJAX“
* über die Kerntechniken von AJAX: (X)HTML, Style Sheets, DHTML und JavaScript
* bis zu anspruchsvollen AJAX-Applikationen mit serverseitiger Programmierung mit PHP

Der Workshop richtet sich an Webentwickler und Programmierer, die schnell und fundiert alle relevanten Techniken samt diverser praktischer Beispiele rund um AJAX kennen lernen wollen. Am Ende des Workshops können Sie anspruchsvolle AJAX-Anwendungen selbst programmieren.


Zum Workshop