Freitag28. Januar 2011

Ich bin ganz sicher nicht der klassische Programmierertyp und so lerne ich Programmiersprachen – im konkreten Fall JavaScript –, in dem ich mich herausfordernden Projekten stelle, um dabei Neues zu lernen. Leider ist dieses “Neue” nicht immer ganz logisch und führt schonmal dazu, dass sich Stirn und Tischplatte unaufhaltsam anzuziehen scheinen. So auch das Thema Pointer in JavaScript, welches mir gestern Abend aufgestoßen ist.

Wenn man ein wenig Erfahrung aus anderen Programmiersprachen wie C mitbringt, dann ist einem der Unterschied zwischen einem Objekt und dem Pointer auf ein Objekt bekannt. Das entscheidende dabei: Bei C kann man sehr einfach festlegen, ob man einer Variable eine Objektkopie zuweist oder nur einen Pointer auf das Originalobjekt erzeugt. Bei JavaScript sieht das etwas anders aus.

Obgleich in JavaScript so ziemlich alles als Objekt betrachtet werden kann, so gibt es doch feine aber entscheidene Unterschiede, wie diese intern behandelt werden. Folgender Code machte mich stutzig:

var layoutCSS = {
    'width': 'auto',
    'min-width': '720px',
    'max-width': '80em'
};
var minSettings = layoutCSS;
minSettings['max-width'] = 'none';
console.log(minSettings); //"none"
console.log(layoutCSS); //"none"

Wie man sieht, wird in diesem Beispiel nicht etwa eine Kopie des Objekts layoutCSS in minSettings angelegt, sondern lediglich ein Pointer auf das Originalobjekt. In der Konsequenz ändert sich der Inhalt des OriginalObjekts layoutCSS bei Zuweisungen an minWidth. Gut zu wissen, denn in JavaScript ist dieses Verhalten auf Arrays und Objekte begrenzt. Strings hingegen werden kopiert, obwohl sie intern ebenfalls wie Objekte behandelt werden. Aufklärung darüber, wie JavaScript mit Pointern umgeht, liefert der Artikel Understanding Pointers in JavaScript.

Soweit so nervig gewöhnungsbedürftig. Wie aber kommt man jetzt zu seiner Kopie bzw. Clone eines Arrays oder eines Objekts? Leider ist es auch hier so – ähnlich wie beim Versuch, ein assoziatives Array zu sortieren – dass JavaScript den Programmierer bei dieser Frage weitgehend im Stich läst. Handarbeit ist demnach angesagt. Einen ersten Lösungsansatz liefert der Artikel von Brian Huisman "How to copy arrays and objects in Javascript", der eine .clone() Methode einführt:

Object.prototype.clone = function() {
  var newObj = (this instanceof Array) ? [] : {};
  for (item in this) {
    if (item == 'clone') continue;
    if (this[item] && typeof this[item] == "object") {
      newObj[item] = this[item].clone();
    } else newObj[item] = this[item]
  } return newObj;
};

Speziell für jQuery-Nutzer gibts von John Resig höchstpersönlich noch einen kürzeren Vorschlag über die jQuery.extend():

// Shallow copy
var newObject = jQuery.extend({}, oldObject);

// Deep copy
var newObject = jQuery.extend(true, {}, oldObject);

Zwar finde ich persönlich diese Inkonsistenz bei JavaScript etwas nervig, dass man selbst nicht über Kopie oder Pointer wählen kann, aber was soll's. Wenigstens gibt es halbwegs einfache Lösungswege aus diesem Dilemma. An dieser Stelle ein ganz dickes Dankeschön an das kalifornische JavaScript-Lexikon Dirk Ginader, der mir mit diesen Links den Abend gerettet hat.


Mittwoch01. Dezember 2010

Seit einiger Zeit ist es in Bloggerland Tradition, den liebgewonnenen, schokoladengetriebenen Türchen-Wahn der Vorweihnachtszeit in leicht abgewandelter Form (Pralinen zu Blogbeiträgen) auch im Internetz aufleben zu lassen. Und so finden sich jedes Jahr an verschiedenen Stellen Autoren zusammen, um ihren Lesern mit 24 Blogposts den einen oder anderen Tipp für die tägliche Arbeit mit auf den Weg zu geben. Und da es jedes Jahr mehr werden, hier eine kleine - sicherlich unvollständige - Liste:

Webkrauts Adventdskalender 2010
Der Adventskalender der Webkrauts erscheint bereits seit 2005 und widmet sich in jedem Jahr einem übergeordneten Thema. In diesem Jahr sind dies die “Kunden”
24ways 2010
Was der Webkrauts-Kalender im deutschsprachigen Raum ist, ist 24ways auf der großen internationalen Bühne. Das who-is-who der Szene trifft sich zu 24 abwechslungsreichen Beiträgen rund um das Thema modernes Webdesign
WPEngeneers - Advent Calendar
Meines Wissen zum zweiten Mal starten die Programmierprofis ihren Adventskalender rund um das Thema “Wordpress”
Maddesigns CSS3-Adventskalender
Sven Wolfersmann ist ein ganz harter Bursche und zieht dieses Jahr einen Adventskalender zum Thema CSS3 fast alleine durch. Ich bin gespannt ...
HTML5-Demos-Adventskalender
Wie es der Name schon sagt ... it’s all about HTML5

Na denn, für Lesestoff ist gesorgt ...


Dienstag30. November 2010

Schon zu Dresdner Zeiten war DSL für den überwiegenden Teil der ersten Dekade des 21. Jahrhunderts ein unerfüllter Wunschtraum. Dann, nach Mitte 2009, ging es plötzlich irgendwie doch und wir bekamen DSL 6000. Leider war die Freude über die zwischenzeitlich halbwegs schnelle Verbindung nur von kurzer Zeit, denn wir sind in diesem Sommer nach Berlin umgezogen.

Der geneigte Leser mag sich denken: Selber schuld, wenn man bei der Wohnungssuche nicht auf die DSL-Verfügbarkeit achtet. Tja, haben wir aber als gebrannte Kinder. Und seit Juli - damals habe ich erstmals versucht, einen Internetanschluss für unsere neue Berliner Wohnung zu bestellen - hat sich der offizielle Ausbaustatus der Telekom sogar noch verbessert.

Aktuell sieht es so aus, dass wir nahezu mittig innerhalb eines vollständig mit VDSL erschlossenen Wohngebietes wohnen. Die Webseite der Telekom zeigt denn auch vor lauter Magenta kaum noch andere Farben.

Leider nützt das alles wenig, einschließlich der wirklich freundlichen Mitarbeiter des Twitterkanals @telekom_hilft, wenn der Ruf nach Problemlösung wie folgt beantwortet wird:

...

Ich habe mir mal deinen Anschluss angesehen und habe festgestellt, dass wir dir aus technischen Gründen keine VDSL Leitung bereitstellen können, da die Dämpfungswerte zu hoch sind.

Gerne hätte ich dir eine VDSL Leitung gebucht, aber das ist leider nicht möglich. Ich weiß, dass du laut dem Verfügbarkeitstool die Möglichkeit hättest. Wir möchten dir jedoch eine einwandfreie Leitung bereitstellen und das können wir mit den Werten nicht. Es tut mir leid, dass ich dir nichts anderes sagen kann.

...

So schön die Worte auch sind. Es sind mehr oder weniger die gleichen Informationen, die ich schon im September bei der ersten Absage per Telefon erhalten habe. Meine eigentliche Hoffnung beim Kontakt zu @telekom_hilft war jedoch nicht wohlformulierter Trost, sondern dass sich jemand dieses Problems annimmt. Wohl zuviel gewollt.

Und damit besteht leider die traurige Vermutung, dass sich an dieser Situation auch in nächster Zukunft nichts ändern wird. Alternativen sind leider nicht vorhanden, denn auch Kabel Deutschland hinkt mit dem Netzausbau hinterher. Und so haben wir nun vorläufig einen DSL3000 Anschluss, der zu Spitzenzeiten (diese sind irgendwo zw. 01:00 und 06:00) sogar die volle DSL3000-Geschwindigkeit bringt.

Liebe Telekom, es nervt!

 


Freitag15. Oktober 2010

Der ursprüngliche Releasebeitrag ist mittlerweile nicht mehr online, den hatte seinerzeit Jens Grochtreis am 15.10.2005 in seinem Blog veröffentlicht. Ich selbst habe mich selbst erst mit vier Tagen Verspätung getraut, in meinem Weblog darüber zu berichten, nachdem die Zugriffsstatistik und die ersten Emails auf ein verhalten positives Feedback zu meinem kleinen Layout-Tutorial schließen ließen.

Fünf Jahre ist das nun her – ein halbes Jahrzehnt. YAML war damals eines der ersten Projekte, die den Begriff CSS-Framework zur Umschreibung des zugrunde liegenden Konzepts verwendeten. Ich erinnere mich an zahlreiche, lebhafte Diskussionen über den Sinn und Unsinn eines solchen Vorhabens. Heute sind diese Diskussionen weitgehend verstummt. Das Framework wurde stetig weiterentwickelt, begleitet von zusätzlichen Werkzeugen wie dem YAML Builder und YAML Debug. Es hat sich über die Jahre eine beeindruckend hohe Akzeptanz im professionellen Webdesign erarbeitet. Aktuell gibt es Tutorials oder vorgefertigte Implementationen für mindestens 28 verschiedene Content Management Systeme, darunter einsteigerfreudige Systeme wie Joomla und Wordpress genauso wie CMS-Schwergewichte, z.B. CoreMedia CMS oder Open Text (ehemals RedDot). In den letzten beiden Runden (2008 und 2009) des Biene-Awards zur Auszeichnung barrierefreier Webseiten vertrauten zahlreiche Preisträgern auf das Framework.

Besonders beeindruckt hat mich eine URL, auf die mich gestern Abend Michael Preuß eher nebenbei aufmerksam gemacht hat: http://www.yamlchina.com. Offensichtlich hat sich im Verlauf der letzten 4 Monate in China eine begeisterte Community formiert, die eine weitgehend vollständige Übersetzung der Online-Dokumentation sowie darüber hinaus zahlreiche Anwendertutorials verfasst hat und voller Respekt auf das Original verlinkt. Es lohnt sich wirklich, die Seite mit der automatischen Übersetzungsfunktion von Google Chrome zu besuchen.

Ich möchte mich deshalb an dieser Stelle bei allen Wegbegleitern bedanken, die durch Ihre Unterstützung, ihre konstruktiven Kritik, ihre Bugmeldungen, ihre Blog- und Zeitschriftenartikel, Zuschriften und Vorträge zu diesem Erfolg beigetragen haben.

Und auch nach fünf Jahren ist ein Ende der Entwicklung nicht abzusehen. Erst vorgestern ist die neue Version 3.3 online gegangen und ein erster Ausblick auf die Version 4.0, die sich parallel bereits in Entwicklung befindet, und deren Hintergründe gegeben. Es bleibt also spannend, das kann ich versprechen.


Donnerstag14. Oktober 2010

In den Abenstunden des gestrigen Tages war es endlich soweit, YAML 3.3 – das lange angekündigte und erwartete Update meines (X)HTML/CSS Frameworks ging endlich online.

Wohin geht die Reise?

Wie sich unter aufmerksamen Lesern und Barcamp-Besuchern bereits herumgesprochen haben sollte, arbeite ich seit längerer Zeit an einem Nachfolger des YAML-Builders. Mit der Veröffentlichung dieses neuen Projektes wird gleichzeitig (bzw. kurz davor) YAML 4.0 das Licht der Welt erblicken. Diese Version 4.0 ist die Basis für die Arbeit an meinem JavaScript-Projekt und daher ebenfalls schon seit längerem in der Entwicklung und reift langsam heran, allergings wird bis zur geplanten öffentlichen Betaphase noch einige Zeit ins Land gehen.

Damit einher gehen aber einige größere Veränderungen des Frameworks, die eine Abwärtskompatibilität zu dem 3er-Releasestrang unmöglich machen. Aus meiner Erfahrung dürfte das den wenigsten Nutzern weh tun, da die Mehrzahl der Entwickler einen Versionswechsel nur in Verbindung mit neuen Projekten vornimmt. Dennoch habe ich mich entschlossen, einige der für YAML 4.0 geplanten Verbesserungen in der Version 3.3 vorzuziehen, um auch den 3er-Strang zukunftsfähig und für die nächsten 2 Jahre praxistauglich zu halten.

Den gesamten Beitrag lesen


Seite 7 von 44 Seiten

« Erste  <  5 6 7 8 9 >  Letzte »