Internet Explorer: name-Attribut = Funktionsname = Fehler auf der Seite

Ahhhhhh! Ich fahre bald nach Redmond und werfe da Steine in die Fenster!






Man könnte ja meinen, das wäre alles so in Ordnung. Ist es im Firefox auch. Und im Internet Explorer? „Fehler auf der Seite – Das Objekt unterstützt diese Eigenschaft oder Methode nicht„. Was das im Klartext bedeutet? Der IE möchte gerne beim Onclick-Ereignis anstatt auf die Funktion „previewTemplate()“, lieber auf den iframe mit dem Namen „previewTemplate“ zugreifen und scheitert – natürlich. Sowas dämliches?!

Lösung: Anderen Namen für Funktion oder Objekt (in diesem Fall Iframe) vergeben. AHHH!

Selectbox-Optionen ohne Value – IE sagt: „Nein, danke!“

Hmpf! Schon wieder so ein dusseliges Problem, das mich aufgehalten hat. Ich weiß auch gar nicht, ob es daran liegt, dass der Firefox so nachsichtig ist oder der Internet Explorer (mal wieder) zu dämlich.

Folgendes sei gegeben:


Nun möchte ich die Werte der Optionen bei jeder Änderung ausgeben lassen. Ich erweitere also die Selectbox um das folgende:


Das funktioniert im Firefox auch ganz prima! Im Internet Explorer geht es leider nicht. Skriptfehler – Abbruch. Angeblich ein ungültiges Element. Na gut… und woran liegt es?! Daran, dass die Option-Felder keinen eigenen Value-Wert haben! %$&§““!&;“$$&%!!%&%$§!!!!!

Des Rätsels Lösung:


ffmpeg-php

Um die ffmpegGeschichte jetzt zu vervollständigen, präsentiere ich hier noch das entsprechende PHP-Modul ffmpeg-php.

Das Modul erweitert PHP um einige sehr schöne Funktionen, z.B. um aus Videos Screenshots oder gleich animierte GIFs zu erzeugen. Was benötigt man? ffmpeg sowie PHP4 oder PHP5 sind „natürlich“ Voraussetzung. Für die Bildextraktion wird noch GD-Lib benötigt. Wenn man diese Voraussetzungen erfüllt, kann es eigentlich schon losgehen:

How to install ffmpeg-php4 on Debian 4.0 (Etch)

1. Downloading the archive via Subversion

svn co https://ffmpeg-php.svn.sourceforge.net/svnroot/ffmpeg-php ffmpeg-php

2. Now change to the directory and execute „phpize“. Maybe you do not have installed it and then you can reinstall it with apt.

apt-get install php4-dev
cd ffmpeg-php
phpize

3. After a short period the system will throw you back to prompt. No it’s time to configure and build the extension.

./configure && make && make install

4. Checking for existing ini file! In some cases installation will not create a PHP-extension ini-file by itself, so you have to do the work. The directory where to find it depends on your configuration (PHP and Apache versions). In my case it’s „/etc/php4/apache2/conf.d/“

There you have to create a file named „ffmpeg.ini“ an fill it with:

# configuration for php FFMPEG module
extension=ffmpeg.so

5. After all just restart apache with

/etc/init.d/apache2 restart

Try it by checking your „phpinfo()“-output or by testing a function directly, i.e.:

$movie = new ffmpeg_movie("/path/to/video.ext");

(C) 2007 by Ronald Vilbrandt

Aktualisiert zuletzt am: 30.10.2007

ffmpeg – Videokonvertierung vom Feinsten

Nachdem ich ja jetzt schon so von den Flashvideos geschwärmt habe, möchte ich gerne präsentieren, was man alles machen muss, um mit ffmpeg solche FLV-Dateien zu erzeuge. Der Weg war hart und steinig aber ich habe es geschafft! ;-)

Ein kurzer Ablauf:

ffmpeg über Debians apt installiert. Das war ja einfach! Flash-Video erzeugt – klappt ja prima. Aber halt!! Kein Ton!! :-(

Nachforschungen…

lame-mp3 fehlt! Na gut, schnell über apt installieren. … Gibt es nicht! Warum? Weil es lizenzrechtlich wohl nicht so einfach ist und deswegen stellt es Debian nicht zur Verfügung. Na gut, irgendwo wird es schon entsprechende Debian-Pakete geben…
Heureka! debian-unofficial.org bietet fertige Pakete an!
lame installieren, testen – kein Ton. Warum? ffmpeg muss entsprechend neu kompiliert werden. Von Hand! Es gibt ja sicherlich Anleitungen im Internet. Gibt es auch, aber leider alle nur für ältere ffmepg-Versionen oder nicht für Debian 4.0 (Etch). Nach einigem Rumgefrickel: Ich habe Feuer gemacht! Ich habe es kompiliert und installiert! Die Konvertierung läuft nun auch mit Ton! Fein, fein!

Dann mal eben die verschiedensten Dateiformate getestet:

  • AVI (XVid, DivX) – läuft
  • DIVX – läuft
  • MPEG – läuft
  • WMV, WMV8, WMV9 – laufen
  • MOV – läuft
  • 3GP – läuft nicht!

Mist! Dabei ist 3GP durch die Handy ja gerade ein ziemlich wichtiges Format! ffmpeg unterstützt prinzipiell 3GP-Dateien, allerdings nicht mit dem neueren Audio-Codec SAMR.

Weiterlesen

Flash Videos – Eine romantische Huldigung

„Ich brauche Flashvideos!“, ging mir so durch den Kopf, als ich über die Zukunft meiner Webgalerie nachgedacht habe. Meiner Meinung nach ist das „Flash Video„-Format eine der grandiostesten Erfindungen der letzten Jahre. Hat man sich früher noch mit „hakeligen“ Formaten wie QuickTime, Real oder gar Microsofts „Windows Media Video“ rumgeschlagen, für das der Besucher immer aufwändige und vor allem „nervige“ Software installieren muss, so braucht man für die schönen Flashvideos nur das Adobe* Flash-Plugin – und das ist ja bei fast jedem installiert. Wenn ich dann noch zurückdenke, wie der Rechner immer ins Schwitzen kam, wenn der Media-/Real- bzw. QuickTime-Player angeschmissen werden musste…

* ehemals Macromedia

Opacity (Transparenz) für verschiedene Browser

Ab CSS3 wird es (endlich!) eine einheitliche Definition für Transparenz bei Objekten geben. Bis dahin gilt leider, wie viel zu oft: „Verschiedene Browser, verschiedene Implementierungen.“

Los geht’s:

CSS

div {
opacity: 0.5 // CSS3
-moz-opacity: 0.5 // Mozilla
khtml-opacity: 0.5
filter: alpha(opacity=50); // Internet Explorer
}

JavaScript

div = document.getElementById("my_div");
div.style.mozOpacity 		= 0.5;
div.style.mozOpacity 		= 0.5;
div.style.khtmlOpacity 	= 0.5;
div.style.filter = "alpha(opacity=50)";

Nach der Internet Explorer-Variante musste ich richtig lange forschen. Aber es hat sich ja gelohnt. ;-)

Löschen von alten Dateien

Wenn man mal wieder alte Backups o.ä. löschen will:

find /pfad/ -mtime +30 -exec rm {} \;

Erläuterung:
mtime: Datum in Tagen wann die Datei zum letzten mal geändert (modifiziert) wurde
exec rm: Befehl, der mit den gefunden Dateien benutzt werden soll. Ein „ls -la“ anstatt einem „rm“ listet einem erst einmal die Dateien auf, die er findet. Gibt Kontrollfreaks wie mir immer ein wenig Sicherheit, bevor ich sie lösche.

setAttribute & Class – Internet Explorer stinkt (mal wieder)…

In JavaScript gibt es ja einige wunderbare Funktionen bzw. Funktionalitäten. Besonders verpönt ist es ja das „.innerHTML“ um Inhalte einzufügen. Es ist schnell aber irgendwie unsauber. Von daher macht man das über das „Einhängen“ von richtigen (X)HTML-Nodes.

Beispiel:

var div =  document.getElementById("mein_div_wo_ich_was_reinhaengen_will");
var table = document.createElement("table");
table.setAttribute("class", "meine_bunte_css_klasse");
div.appendChild(table);

Nachvollziehbar? Gut! Funktioniert aber nicht im Internet Explorer! Warum? Die Antwort mein Freund, weiß ganz allein der Wind.

Machen muss man es wie gefolgt:

[...]
table.setAttribute("className", "meine_bunte_css_klasse");
[...]

oder

[...]
table.className = "meine_bunte_css_klasse";
[...]

Mehr oder weniger elegant ist auch folgende Möglichkeit

[...]
table.setAttribute((document.all ? "className" : "class", "meine_bunte_css_klasse"));
[...]

Da „document.all“ nur unter dem IE verfügbar ist, wird hier „spontan entschieden“ welches Attribut gesetzt wird.

Update:
Wie man in den Kommentaren lesen kann, ist document.all NICHT nur im Internet Explorer verfügbar. Dort steht ebenfalls ein „besserer“ Lösungsansatz. Vielen Dank noch mal für den Hinweis.

SSH-Key verteilen – Ein Klassiker

Weil ich es mir nie merken kann und werde, hier noch mal der Ablauf:

Schlüssel erzeugen:

ssh-keygen -t rsa1
ssh-keygen -t rsa
ssh-keygen -t dsa

Schlüssel auf Remote-System kopieren:

ssh-copy-id user@remote-system
ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote-system
ssh-copy-id -i ~/.ssh/id_dsa.pub user@remote-system