T3UXW09 Podcasts – Teil 1

Im ersten von fünf Podcasts zur T3UXW09 präsentieren Jens Hofmann und Andreas Beutel die Ergebnisse von Team 1 der TYPO3 User Experience Week 2009. Die T3UXW09 war im November 2009 im Thüringischen Behringen zur Verbesserung der Usability des TYPO3-Backends durchgeführt worden und hatte viele konkrete Verbesserungen erreicht, die zum Teil bereits in Version 4.3 eingeflossen sind. Die folgenden Podcasts sollen nun im Abstand von zwei Tagen veröffentlicht werden.

Im ersten Podcast zur T3UXW09 werden folgende Anpassungen vorgestellt

  • umsortierte Backend-Formulare
  • überarbeitete Page-Modul mit Drag&Drop
  • Backend-Grid-Editor1
  • ExtJS basierte Backend-Suche

Diese Features sind bisher nicht in TYPO3 Version 4.4 eingeflossen, das bereits einen Feature-Freeze erfahren hat. Die Integration in Version 4.5 zum Ende 2010 ist aber erklärtes Ziel. Team 1 bestand aus Jens Hoffmann, Kian Gould, Thomas Hempel, Jo Hasenau, Timo Schmidt und Michael Klapper.

Backend-Grid-Editor
Damit kann ein Entwickler die Ansicht im Backend an das Frontend-Layout anpassen. Das Modul steht zum Test auf Forge zur Verfügung.

Podcast als MP4, auf der TYPO3-Seite oder kostenlos in iTunes abonnieren.

HipHop für PHP

Der Schleier wurde gelüftet: Facebook hat mit »HipHop« einen Source Code Umwandler veröffentlicht, der PHP-Code in höchst-optimierten C++ Code konvertiert. Dieser wiederum wird dann mit g++ kompiliert um maximale Performance zu erreichen.

Bei Facebook brachte der Einsatz von HipHop eine durchschnittliche Reduzierung der CPU-Auslastung um 50% – natürlich abhängig von der jeweiligen Seite. Für Facebook bedeutet weniger CPU-Last weniger Server – und damit weniger Kosten. Aber natürlich bedeutet weniger Auslastung auch weniger Energieverbrauch.

In seinem Blog-Beitrag schreibt Haiping Zhao »We are proud to say that at this point, we are serving over 90% of our Web traffic using HipHop, all only six months after deployment.

How HipHop Works
The main challenge of the project was bridging the gap between PHP and C++. PHP is a scripting language with dynamic, weak typing. C++ is a compiled language with static typing. While PHP allows you to write magical dynamic features, most PHP is relatively straightforward. It’s more likely that you see if (…) {…} else {..} than it is to see function foo($x) { include $x; }. This is where we gain in performance. Whenever possible our generated code uses static binding for functions and variables. We also use type inference to pick the most specific type possible for our variables and thus save memory.

[…]

Overall HipHop allows us to keep the best aspects of PHP while taking advantage of the performance benefits of C++. In total, we have written over 300,000 lines of code and more than 5,000 unit tests. All of this will be released this evening on GitHub under the open source PHP license.

Der ganze Artikel (englisch) im Facebook Blog: http://developers.facebook.com/news.php?blog=1&story=358

Using mod_security 2.5 and Apache 2 on Mac OS X

Unfortunately recent MacPorts comes with mod_security 1.8.6 and the maintainer is not actively supporting updates (for details see this ticket). Since I wanted to test some settings on a local Apache installation on my Mac with the latest release (2.5.11) I used the information given in the ticket to patch and update my mod_security port.

This guide is straight forward and shows just the required changes, a working MacPorts installation with Apache 2 is mandatory. You simply have to edit the Portfile that contains the details for mod_security.

Step-by-step explanation

  1. Update your MacPorts installation by sudo port selfupdate and sudo port upgrade outdated (read this guide for more details on MacPorts selfupdate)
  2. Open the portfile for mod_security and replace the content of the file with the provided code. The portfile in my installation resides in/opt/local/var/macports/sources/rsync.macports.org/ release/ports/www/mod_security/Portfile


    Download the Portfile as text file

  3. Now you may install mod_security via MacPorts using this terminal command:sudo port install mod_security
  4. Open the Apache configuration file (/opt/local/apache2/conf/httpd.conf) in a text editor and add mod_security to the list.Open a new Terminal (the Termin.app resides in /Applications/Utilities on your harddrive) window and then type the following command to open and edit the file (the sudo command is required to get write-access to this file since it is normally not writable for you user account).sudo nano /opt/local/apache2/conf/httpd.confNow enter your password (the same you use to log in to your Mac). Use the cursor keys to scroll down to the section for the Dynamic Shared Object (DSO) Support and copy the following line below the last LoadModule… statement (see screenshot).LoadModule security2_module modules/mod_security2.so

    To save and leave the Nano editor press CTRL+X and confirm with Y (for Yes) to save.

  5. Reload the Apache server. The security module should now be loaded by Apache (start or restart Apache to commit changes).sudo /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper restart

YUI 3.0 veröffentlich

Das YUI Team veröffentlicht die produktionsreife Version 3.0 der YUI Bibliotheken (Core, Node, Event, Animation, IO, Drag & Drop und weitere). Version 3 ist eine komplette Überarbeitung (die erste seit 2005) und bringt eine Vielzahl an Verbesserungen mit sich.

YUI 3 is the first ground-up redesign of YUI since 2005, and it brings with it a host of modernizations:

  1. Selector-driven: YUI 3 is built around one of the lightest, fastest selector engines available, bringing the expressive power of the CSS selector specification into actions that target DOM nodes.
  2. Syntactically terse: Without polluting the global namespace, YUI 3 supports a more terse coding style in which more can be accomplished with less code.
  3. Self-completing: YUI 3’s light (6.2KB gzipped) seed file can serve as the starting point for any implementation. As long as this seed file is present on the page, you can load any module in the library on the fly. And all modules brought into the page via the built-in loader are done so via combo-handled, non-blocking HTTP requests. This makes loading the library safe, easy and fast.
  4. Sandboxed: YUI modules are bound to YUI instances when you use() them; this protects you against changes that might happen later in the page’s lifecycle. (In other words, if someone blows away a module you’re using after you’ve created your YUI instance, your code won’t be affected.)
    The code we’re shipping today in 3.0.0 is the same code that drives the new Yahoo! Home Page, and it goes out with confidence that it has been exercised vigorously and at scale. The team is thrilled to be sharing it with you today for the first time in a production-ready release.

Websites in verschiedenen IE-Versionen überprüfen

Mit dem »Microsoft Expression Web SuperPreview für Windows Internet Explorer« soll man die so genannte »cross-browser compatibility« – also die Darstellung einer Site in verschiedenen Browsern (oder verschiedenen Versionen eines Browsers) – testen können. Microsoft stellt für den Internet Explorer ein solches Tool kostenlos zum Download bereit. Erfordert aber das .NET Framework (Version 3.5).

Die Installation ist etwas langsam und das Tool an sich auch. Größere Sites kann es nicht korrekt darstellen. Faiz: Nicht wirklich hilfreich.

Microsoft-Expression-Web-SuperPreview-EINSTIEG-450.png

Microsoft-Expression-Web-SuperPreview-DVGW-450.png

Einführung in HTML 5 (Video)

Im Google Code Blog wurde ein Video (unten eingebettet oder auf Youtube) veröffentlicht, das in einer knappen dreiviertel Stunde auf HTML5 eingeht und beschreibt, was dabei an großen Neuerungen und Änderungen zu erwarten ist. Das sind unter anderem die Themen

  • Web vector graphics with the Canvas tag and Scalable Vector Graphics (SVG)
  • The Geolocation API
  • HTML 5 Video
  • The HTML 5 Database and Application Cache
  • Web workers

Schöner Debuggen: »prettyPrint« für JavaScript

James Padolsey bietet mit »prettyPrint« eine art Variablen-Dumper für javaScript an (so in der Art wie JavaScript Dump:

»prettyPrint« is an in-browser JavaScript “variable dumper” similar to ColdFusions’s cfdump. It enables you to print out an object of any type in table format for viewing during debugging sessions. In combination with Firebug, »prettyPrint« will make you the best-equipped JavaScript debugger on earth! (not guaranteed)

Some of its key features:

  • Entirely independent. It requires NO StyleSheets or images.
  • Handles infinitely nested objects.
  • All native JavaScript types are supported plus DOM nodes/elements!
  • Protects against circular/repeated references.
  • Allows you to specify the depth to which the object will be printed.
  • Better browser users benefit from gradient column-headers! Thanks to HTML5 and CANVAS!
  • Allows low-level CSS customisation (if such a thing exists).
  • Fully validated with JSLint!

Google Page Speed

Google Page Speed, eine Erweiterung für Firefox und Firebug, soll Webseiten schneller machen und ist als als Open Source verfügbar.

Google veröffentlicht mit Page Speed eine Firefox-Erweiterung, die Web-Designern und -Entwicklern helfen soll, die Ladezeiten ihrer Seiten zu verringern. Dabei geht Page Speed allerdings einen Schritt weiter als andere, ähnliche Firefox-Erweiterungen.
Bislang kam Page Speed nur bei Google intern zum Einsatz. Die Firefox-Erweiterung bettet sich in Firebug ein und schlägt beim Laden von Webseiten Maßnahmen zu deren Optimierung vor. Dabei optimiert Page Speed beispielsweise automatisch die verwendeten Bilder und stellt eine komprimierte Version zur Verfügung, die direkt in der Webseite verwendet werden kann.

(Via Golem.de)

YUI3: Draggable DataTable Rows

Neu in YUI3 (befindet sich in der Entwicklungsphase) und von Gonzalo Cordero schön in seinem Artikel »Draggable DataTable Rows« beschrieben.

A recent project of mine required an implementation of DataTable where rows could be moved around with Drag and Drop functionality. After looking through the YUI gallery of examples, I realized that the feature I was trying to implement was a little bit different from the ones I saw. So I decided to implement my own solution. In this article I’ll explain how I combined YUI’s DataTable and Drag and Drop components, some workarounds for the challenges I encountered, and how I was able to improve upon my initial solution by using the new YUI3 codeline (which is currently available in preview mode).

(Via Yahoo! User Interface Blog.)