Donnerstag, 28. Januar 2010

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


Dienstag, 26. Januar 2010

Manuskript fertig


Ich bin gerade mit dem Manuskript von meinem neuen JavaScript-Handbuch (ISBN: 978-3-8273-2940-0, 850 - 900 Seiten) fertig geworden. Das soll im März erscheinen und ich bin genau in der Zeit. Geht jetzt ab zum Lektor.
Das Buch kann man schon hier vorbestellen.

Donnerstag, 21. Januar 2010

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 (http://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.

Montag, 18. Januar 2010

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,

Montag, 11. Januar 2010

Jetzt lerne ich AJAX als eBook bei PC Welt

Am 8. Januar war die eBook-Version von meinem AJAX-Buch bei Markt+Technik der Tagesdownload bei PC Welt.
Jetzt lerne ich AJAX
Jetzt lerne ich AJAX Ralph Steyer
Markt & Technik
ISBN 978-3-8272-4225-9
erschienen 5/2007
ca. 352 Seiten

Freitag, 8. Januar 2010

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

Onlinetraining mit Ralph Steyer

Onlinetraining mit Ralph Steyer
Onlinetraining mit Ralph Steyer und anderen Autoren bei Video2Brain