Lightbox2 mit CSS Selektoren via Prototype aktivieren
Quick n Dirty.. ;)
Diese Funktion fügt allen Bilderlinks innerhalb des angegebenen CSS-Selectors das berühmte ' rel="lightbox" ' hinzu. Es macht praktisch das was mein WordPress Plugin auch tut, nur eben als Javascript und mit Hilfe der Prototype $$ Funktion. Also wenn zum Beispiel eure Beiträge im DIV mit der ID "posts" liegen müsste der Aufruf wie folgt aussehen
enlightMe('#posts')
Das wars dann auch schon.
Für Lightbox2 Support habe ich noch einen zweiten Parameter eingebaut um die Serien Funktion miteinzubringen.
Wenn ihr den zweiten Parameter mit eine String füllt wird rel="lightbox" entsprechend angepasst ;)
enlightMe('#slideshow', 'slider')
-
/**
-
* Add lightbox to given css selector
-
*
-
* @example enlightMe('#content')
-
* @access public
-
* @param string cssSelector CSS Class or ID with . or #
-
* @param mixed serie Optional param string. Default false. Name of the series.
-
* @return void
-
**/
-
function enlightMe(cssSelector, serie)
-
{
-
var links = $$(cssSelector+' a');
-
var imglink = new RegExp("jpg|gif|png","i");
-
for(var i=0; i <links.length; i++) {
-
var url = links[i].href;
-
if(imglink.test(url)) {
-
if(serie!=undefined){ links[i].setAttribute('rel','lightbox['+serie+']'); }
-
else { links[i].setAttribute('rel','lightbox'); }
-
}
-
}
-
lb = new Lightbox(); lb.initialize();
-
}
How to: Foobar2000 und Logitech G15
In diesem Artikel möcht ich mal all denen helfen die nicht wissen wie sie Foobar2000 0.9x mit dem G15 Keyboard von Logitech kombiniert bekommen. Ich musste lange suchen bis ich was brauchbares gefunden habe. Also als erstes sei gesagt das man für die Kontrolle des Players über die Media Keys kein Plugin für das G15 braucht. Der Foobar bietet dafür die Hotkey Einstellungen die sich ohne weiteres konfigurieren lassen. Wichtig ist hierbei das man die Hotkeys als "Global Hotkeys" definiert, denn ansonsten funktionieren diese nur wenn man die Applikation im Vordergrund hat.
Für die Anzeige braucht man ein Plugin für Foobar. Da gibt es zwar ein spezielles ('foo_g15') aber das ist nur für 0.8x und daher nicht für die neuste Version des Players geeignet. Man muss dem Media Display von Logitech ein wenig was vorflunkern: Es gibt für den Foobar2000 Player ein Plugin das allen Awendungen vorgibt ein Winamp Player zu sein. Sobald man das installiert hat meldet sich auch sofort das Media Display von Logitech und alles wird so angezeigt wie es sich gehört. .. Problem gelöst.
Zusammen mit den Global Hotkeys und der Anzeige hat man nun also das Equivalent eines richtigen G15 Plugins. Gewusst wie. :)
Tips für schnelleres Javascript
Die einzigst wahre Komprimierung
Auch wenn sich durch das verketten von Variablendefinitionen, das entfernen von Kommentaren und das einsparen von hübscher Formatierung die Dateigrösse bis zu 50% verringert, gibt es eine weitere Methode seine Skripte schneller unter das Volk zu bringen. GZIP hilft nicht nur bei HTML oder bei CSS. Gzip hilft auch bei Javascript und dank Apache sogar ohne sein Script in eine PHP-Datei packen zu müssen. Der wohlmöglich grösste Vorteil dieser Methode ist neben der Komprimierung auf nur 40% der Originaldateigrösse die Möglichkeit das Javascript zu cachen, was den weiteren Verlauf des Besuchs der Seite positiv beeinflusst.
Vorteile:
- Skripte wie z.b. die 50kb grosse prototype.js werden zu angenehmen 17kb häppchen
- Man kann Einfluss auf das Caching des Clients nehmen (Haltezeit, etc.)
- Folgeseiten laden schneller
Nachteile:
- Ältere Browser unterstützen Gzip nicht richtig, jedoch alle Browser der fünften Generation
Überlegungung vor der Implementierung:
- Ist mein Javascript dynamisch (generiert via php o.ä)?
- Benutze ich Skripte die Browser der 5ten Generation sowieso vorrausetzen?
- Ist Apache und PHP für diese Methode konfiguriert?
Erstellt eine PHP Datei mit dem namen "gzip-js.php". Fügt folgenden Code ein und ändert gegebenfalls das Caching oder was euch noch so in den Sinn kommt:
Dann legt diese Datei in den Ordner mit euren Javascripten. In dem gleichen Ordner erstellt eine ".htaccess" Datei mit folgendem Inhalt:
-
AddHandler application/x-httpd-php .js
-
php_value auto_prepend_file gzip-js.php
-
php_flag zlib.output_compression On
Diese Methode funktioniert nur wenn ihr PHP mit der ZLib kompiliert habt und auto_prepend erlaubt ist, bzw. Apache die Verwendung von .htaccess zulässt.
Code von John Cox (quelle)
Nicht alles aufeinmal..
Browser sind dumm - manche sogar dümmer. Also ziehen wir mal unsere Vorteile daraus. Javascript onload-events werden erst ausgeführt nachdem der DOM-Tree geladen ist und zusätzlich alle Bilder geladen wurden. Desweiteren sollte man berücksichtigen das Browser standardmässig nur 2 bis 4 HTTP Requests aufeinmal machen und jeweils gewartet wird bis diese fertig sind. Nun haben wir aber auf der anderen Seite unsere 10 Javascript-Dateien die wir dem Benutzer gerne liefern würden. Üblicherweise würde man diese nun alle im Head-Bereich mit dem Script-Tag der Reihe nach einfügen. Aber halt..
Diese Methode ist überflüssig und lahmt lediglich den Ladevorgang. Letzendlich verschwendet man zum Zeitpunkt an dem die Seite aufgerufen wird nur das limitierte Kontigent an HTTP Requests. Wie zuvor erwähnt führt der Browser die Skripte erst aus wenn der Rest der Seite beim Klienten vorliegt. Frei nach dem Prinzip "erst die Arbeit - dann das Vergnügen".
Um dieses Verhalten zu umseren Vorteil zu nutzen erstellen wir im folgendem ein Skript welches zuständig für das Laden weiterer Skripte ist. Das ganze wird erledigt mit einem Loop, einem Array und document.write(). Der Sinn ist es, dass man im Endeffekt nur noch ein kleines Script hat welches erst dann alle Bibliotheken runterlädt, wenn der Klient Javascript aktiviert hat (entlastung) UND wenn der Browser überhaupt in der Lage ist diese auszuführen. Zwei Fliegen mit einer Klappe :)
Und so sieht das ganze dann aus:
Erstellt eine Funktion welche mit document.write die Script-tags einfügt.
-
var meineSkripte = new Array('prototype', 'lightbox', 'behaviour');
-
-
function writeScriptTag(filename){
-
document.write('<script type="text/javascript" src="scripts/'+filename+'.js"></script>');
-
}
-
function loadScripts() {
-
for(var i=0;i<meineSkripte.length;i++){ writeScriptTag(meineSkripte[i]); }
-
}
-
window.onload = loadScripts();
Wenn eure Seite geladen wird lädt der Browser erstmal das ganze HTML samt Bilder und DANACH führ er erst die 'loadScripts' Funktion aus, welche die eigentlichen Skripte runterlädt.
Vorteile:
- Man kann fast zu 100% sicher sein das der DOM komplett verfügbar ist. Für eventuell geplante Manipulation etc..
- Die Seite wird schneller geladen, weil man den Browser nicht mit noch nutzlosen Scriptdownloads beschäftigt
- Javascripte werden nur geladen wenn der Benutzer auch Javascript aktiviert hat. (Spart Traffic und Nerven)
Nachteile:
- Mir sind keine bekannt. window.onload geht meines Wissens nach in allen Browsern.
Überlegungung vor der Implementierung:
- Warum man das nicht schon immer so gemacht hat ;)
Die etwas andere Richtung
Zuvor haben wir ja das verzögter Ausführen für nützlich befunden. Es mag jedoch Fälle geben in dem das nicht erwünscht ist. Allerdings muss ich gleich dabei sagen das meine Erfahrungen mit dieser Methode positiv sowie negativ waren. Es kommt eben auf das Anwendungsgebiet an. Dean Edwards hat sich ein wenig mit dem "onload"-Problem auseinandergesetzt und einen Weg gefunden wie er das Ausfühen von Javascript NACH dem laden des DOM und VOR dem laden enthaltener Bilder möglich ist.
Gerade auf Seiten mit grossen Bildern kann es hier zu argen Problemen kommen, da der Benutzer wichtige Funktionen oder Navigationselemente erst verwenden wenn der Ladevorgang abgeschlossen ist. Das kann unbeachtet ein Besucher-Killer sein.
Testet es einfach mal selbst mit dem Code von seinem Blog. Falls ihr Prototype einsetzt, kann ich die FastInit Klasse empfehlen. Sie ermöglicht auch mehrere Funktionen die vor dem Laden der Bilder gebraucht werden aneinander zu ketten.
Vorteile:
- Man kommt schneller an den DOM.
- Man kann Berechnungen auf dem Client erledigen die er später braucht, aber ohne die Bilder noch nicht einsetzen kann.
Nachteile:
- Internet Explorer nur via externer Datei, Safari und Opara nur über Umwege (Q)
Überlegungung vor der Implementierung:
- Was wird als erstes gebraucht (dhtml menüs, etc.)?
- Welche Browser haben die Besucher (zielgruppe)
- Kommt mein Skript damit klar so schnell zu sein?
Zutaten für Web 2.0
Pierre Francois beschreibt die wichtigsten Zutaten für einen erfolgreichen Web2.0 Startup und was man für die Zukunft wirklich alles benötigt. AJAXSQLRUBYCSSXHTML etc.. In diesem 17 minütigen Video, aufgenommen im Barcamp Boston, wird auf lustige Art und Weise (und in Englisch) ein wenig Web2.0 durch den Kakao gezogen. Die Einblendungen auf der linken Seite sind die Folien vom Beamer zur besseren Lesbarkeit. Viel Spass :)
CVSNT – Komfortabel und gut.
Heute habe ich geschlagene 5 Stunden damit verbracht auf meinem Zweitrechner CVSNT zu installieren. Ich kann nach all dem Frust mit NTFS und XP nur noch sagen das es sich absolut gelohnt hat! Die Möglichkeit direkt im Explorer zu sehen welche Dateien verändert wurden, mit rechter Maustaste die Veränderungen nachzuvollziehen und die Gewissheit zu haben Fehler rückgängig zu machen ist schlichtweg genial.
Dank TortoiseCVS kann man sich das geschreibsel in der Shell bzw. DosBox sparen und direkt ins CVS spielen, hinzufügen, kommentieren und auschecken - und das alles über das Kontextmenü. Das Programm ermöglicht auch das problemlose zusammenführen und vergleichen mit externen Tools wie ExamDiff. Um CVSNT nun letztendlich zum laufen zu bringen, bin ich dieser Anleitung gefolgt.
Jetzt muss ich nur noch ein paar Euro für die PHPEdit Erweiterung "CVS & SVN" zusammenkratzen und die Entwicklungsumgebung ist perfekt. Langsam frage ich mich warum ich es mir all die Jahre so schwer gemacht habe...
Links zum Thema:
CVSNT download
CVSNT step-by-step
TortoiseCVS homepage
PHPEdit IDE
Softwareentwicklung mit PHP5
Ich habe heute ein komplettes Buch mit dem Titel "Professionelle Softwareentwicklung mit PHP5" gefunden. Der Author ist Sebastian Bergmann und das Buch behandelt nahezu jeden erdenklichen Bereich in Bezug auf objektorientierte Programmierung mit PHP5. Desweiteren einen Abschnitt über Datenbankprogrammierung und für den Webbereich sicherlich interessanter Teil über XML, SAX und SOAP. Ich hab mich erstmal mit dem OO-Teil begnügt. Lohnt sich; wurde zuletzt vor circa einer Woche aktualisiert.
Wichtige Zutaten für Web2.0
Man nehme GROSSE Schriften, Arial oder sonstiges Sans-Serif mit vielen bunten Pastelfarben und mixe dies mit runden Ecke und Schatteneffekten und viele coole Javascript Effekte wie gelbe Fadehighlights und dergleichen. Links zu allen wichtigen Dingen für ambitionierte Web2.0 Startups hat Roman Mittermayr in seinem "Web 2.0 in a nutshell" Artikel zusammengefasst:
CarsonWorkshops – Summit 2006
Am 8.Februar findet in London die CarsonWorkshops Summit unter dem Titel "The Future of Web Apps" statt. Es sind noch ein paar Plätze frei und kostet nur 75 Pfund. Klingt viel, aber dafür ist die Auswahl an Sprechern nahezu exquisit. Shaun Inman (mint), David Hansson (37 Signals), Steven Crossan und Steffen Meschkat (google), Andres Shorten (adobe, flex), Tom Coates (yahoo)und Joshua Schachter (del.icio.us) werden an einem Tag das Programm der Konferrenz ausfüllen. Ich bin wirklich am überlegen mich nicht dorthinzubegeben um schonmal einen Eindruck von 2006 zu bekommen. Die Themen sind allesamt interessant:
- Warum Tagging für eine neue Web-Anwendung Pflicht ist.
- Wie man Ajax so einsetzt das es die Interaktivität bietet die Besucher erwarten.
- Entwicklung von Web 2.0 Anwendungen zum Spass und auch zum Profit.
- Eine drei-viertel Stunde über Ruby on Rails und dessen Vorteile.
- 10 Gründe warum man seiner Anwendung eine API spendieren sollte.
- Umsetzen von Webapplikationen mit Augenmerk auf das Budget
- Sowie ein Vortrag über Flex und Google Labs plaudert aus dem Nähkästchen.
Ich werde mich gleich mal nach Flugtickets umsehen. Ansonsten bleibt nur zu hoffen das es wenigstens noch Podcasts der Vorträge im Anschluss geben wird. Besucher erhalten noch eine "Kit" mit Informationen über Projektfinanzierung, Artikel zum Thema und natürlich Begleitmaterial zu den Vorträgen. 800 Plätze sind verfügbar, Wi-Fi, Parkmöglichkeiten und U-Bahn um die Ecke.
Weitere Informationen, wie Hotels und Schedule auf der Summit Website:
http://www.carsonworkshops.com/summit/index.html

