X-powered im Header will ich nicht
Wenn in einer bei einem Provider gehosteten Webseite im Header etwas mitgesendet wird, wie
X-Powered-By PleskLin
… das muss ja nicht sein. Selbst wenn der HTTP Response Header selbst nicht als Text auf der Webseite sichtbar ist - Webentwicklertools, wie die “Web Konsole” im Firefox oder “Entwicklertools” in Chrome können es mit den Standard-Boardmitteln eines Webbrowsers anzeigen lassen.
Mit Daten, was für ein System da wohl am Laufen ist, sollte man generell sparsam sein.
Wenn ein Apache Webserver im Einsatz ist (das ist bei Hostern für private Webseiten zumeist der Fall), kann man dies in der .htaccess im Webroot entfernen lassen. Man fügt folgende Zeilen hinzu:
<IfModule mod_headers.c> Header unset X-Powered-By </IfModule>
Google+ Button Html5 konform einbetten
Hinweis:
Dieser Inhalt ist veraltet. Google Plus exitiert nicht mehr.
—
Um den G+ Button einzubetten, sieht Google das Laden eines Javascripts vom Google-Server und diesen Tag vor:
<!-- Place this tag where you want the +1 button to render --> <g:plusone annotation="inline"></g:plusone>
Nur ist das nicht konform mit der HTML-Syntax, auch nicht mit HTML5. Macht man einen Testlauf mit einem Validator, so wird diese Zeile angemahnt.
[Weiterlesen…]
Twitter Widgets defekt?
Der Internet Explorer zeigt Inhalte vom Twitter Widget nicht an.
Selbst wenn man es auf dem Twitter-eigenen “Baukasten” versucht, bleibt die Vorschaubox einfach leer.
Die Webdeveloper Toolbar bringt das Problem ans Licht:
SEC7112:
Das Skript von “http://api.twitter.com/1/twitter/lists/d9/statuses.json?callback=TWTR.Widget.receiveCallback_1&include_rts=true&clientsource=TWITTERINC_WIDGET&1314634493205=cachebust” wurde aufgrund eines fehlerhaften MIME-Typs geblockt.
widget_list
Includes von Javascript und CSS Files minimieren
Im Laufe der Zeit sammeln sich mehr und mehr kleine Skripte und CSS-Dateien an, die um Einbindung in den Header bitten. Bei mir wurde das Arsenal auch immer grösser:
Javascript:
Ich hatte mehrere Dateien mit eigenen Javascript-Funktionen (wobei die ein oder andere nur im Fall der Verwenung nachgeladen wurde). Hinzu kommen ein Javascript Framework (jQuery) und diverse jQuery Plugins und sonstige Javascripts von Fremdanbietern.
CSS:
Ich verwende 2 CSS-Dateien für die Darstellung auf Bildschirmen und eine CSS Datei für Druckausgabe. Weitere Dateien kommen CSS-Dateien von jQuery-Plugins und sonstigen PHP-Skripten.
IE 9: CSS 3 und HTML 5 Features auf der Webseite aktivieren
Nun ist der IE 9 also fertig. Nicht dass es mein persönlicher Favourit ist…, aber ich würde es begrüssen, wenn meine Webseite auf allen Browser etwa gleich daherkäme.
Also habe ich die 64-Bit Installation gewählt. Dieses Setup hat sowohl die 64 Bit als auch die 32 Bit Version des Internet Explorer eingerichtet.
Nach der Installation meine Webseite aufgerufen … und es sah aus, wie auch im IE8. Es benötigt in der Webseite eine kleine Zeile speziell für den IE 9, damit dieser weiss: ich darf hier mehr Funktionen ausreizen. [Weiterlesen…]
PHP-Schnipsel: Hintergrundjobs durch Seitenaufrufe auslösen lassen
Wenn man bei seinem Provider keinen Cronjob einrichten kann, aber genügend Besucher hat, kann man ggf. Hintergrundjobs während der Seitenaufrufe auslösen. Man muss dafür sorgen, dass nicht jeder einzelne Seitenaufruf die Verarbeitung triggert, sondern es soll max alle n Sekunden geschehen.
In PHP definiere ich ein Array mit der Konfiguration und ein Arbeitsverzeichnis. Im Arbeitsverzeichnis wird bei Ausführung eines Jobs eine Datei zum Merken des letzten Ausführungsdatums getoucht (jaja, ein schönes deutsches Wort). Soll derselbe Job erneut ausgeführt werden, wird das Alter der Datei im Arbeitsverzeichnis geprüft. Wenn das Alter Älter als mein definiertes Limit ist, dann wird der Job erneut ausgeführt - ansonsten nicht.
Klingt einfach … - ist es auch ;-)
Voraussetzungen, damit das nachfolgende Beispiel funktioniert:
- wget muss am Webserver vorhanden sein (alternativ liessen sich auch curl oder lynx verwenden)
- PHP-Funktion exec muss zugelassen sein
- getestet wurde es nur mit einem Unix-System als Webserver (für Windows s. Anmerkungen unten)
PHP mit Sqlite - mein erster Gehversuch
Ich habe mal einen Download-Zähler gebaut: mittels .htaccess werden alle Dateizugriffe auf ein PHP-Skript umgebogen, welches einmal die angeforderte Datei ausliefert und den Zugriff protokolliert.
In PHP5 ist Sqlite direkt mitgeliefert. Die Sqlite Datenbank ist eine Textdatei, auf die ohne einen laufenden Server zugegriffen wird. Für kleine Webauftritte, wo das Webroot nicht auf einem NFS- oder SMB-Share liegt, ist dies problemlos.
Der wesentliche Vorteil einer SQl-Datenbank zu einer (CSV-) Textdatei ist die Auswertung der Daten: mit SQL Queries kommt man schnell zu den gewünschten Informationen.
Ich definiere mal in PHP eine Variable mit dem Dateinamen zur Datenbank:
$sqliteDB = $_SERVER['DOCUMENT_ROOT']."/sqlite/downloads.sqlite";
In dieser Datenbank ist - weil es zum Einstieg einfacher ist: mit einem grafischen Tool - eine Tabelle angelegt worden:
CREATE TABLE "downloadcount" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE , "time" DATETIME, "file" TEXT, "ext" TEXT, "ip" TEXT, "referrer" TEXT, "usaeragent" TEXT )
Dann muss man nur noch wissen, welcher Sqlite Treiber beim Provider vorhanden ist. Das kann wahlweise Sqlite2, Sqlite3 oder PDO Sqlite sein. Die Versionen unterscheiden sich bei den Kommandos zum Öffnen der Datenbank oder beim Aufruf zum Ausführen eines Queries.
Bei Sqlite 3
$db = new SQLite3($sqliteDB);
Bei PDO Sqlite 3:
$db = new PDO("sqlite:".$sqliteDB);
Ich beziehe mich mal auf die PDO Variante…
So öffnet man eine DB und fügt mit Ausführung eines SQL Statements einen Eintrag hinzu. Eingefügt werden hier die aktuelle Uhrzeit (des Requests), Dateiname und dessen Erweiterung, IP-Adresse des Aufrufers, Referrer und User-Agent.
// $filename enthält den Dateinamen der heruntergeladenen Datei $db = new PDO("sqlite:".$sqliteDB); if ($db) { $path_info = pathinfo($filename); $ext=$path_info['extension']; $sql="INSERT INTO `downloadcount` (`time`, `file`, `ext`, `ip`, `referrer`, `useragent`) VALUES ('".date("Y-m-d H:i:s")."', '" . $filename . "', '".$ext."', '" . getenv("REMOTE_ADDR") . "', '" . getenv('HTTP_REFERER') ."','".getenv('HTTP_USER_AGENT')."'); "; // echo "SQL:<br>$sql<br>"; $db->exec($sql); }
Weiterführende Links:
- DBeaver - Datenbankverwaltung für div. Datenbanken(kostenlos, Opensource; für Windows, Mac, Linux; unterstützte Datenbanken: Sqlite, Mysql, Postgres, Oracle u.v.a.)
- Sqlite Administrator (Freeware; Windows)
- www.php.net - PDO Sqlite
- www.php.net - Sqlite 3
5.1-WAV-Dateien zu AC3 umwandeln leicht gemacht
Manche Probleme schafft sich der Mensch ja selbst. So kann ich mit Magix Musikmaker 5.1-Musik erstellen, aber ein Export nach Mp3 erzeugt konsequent lediglich Stereo-Dateien. Wahrscheinlich, weil kein Mp3-Pro-Encoder dem Programm beiliegt - aber eine Fehlermeldung kommt auch nicht.
Es bleibt der Export nach WAV oder Windows Media, um 6 Kanäle zu behalten.
4:43 min Musik erzeugen eine 143 MB grosse WAV-Datei. Und Windows Media … das passt mir grad nicht ;-)
Nun hab ich also meine 5.1 Wave-Datei. Klingt zwar gut, ist aber noch ein klitzekleinwenig zu gross.
Meine Konvertierungsversuche mit VLC oder ffmpeg scheiterten kläglich. Ffmpeg weigerte sich, ein Audio mit mehr als 2 Audiokanälen zu lesen. Beim Export mit VLC erhielt ich grausame akustische Resultate - warum auch immer - soviel liess sich ja auch gar nicht einstellen.
[Weiterlesen…]
HTML5 - neues Apple Buzzword und Showcase des “Safari-Web-Standards”
Grossmundig werden Standards, wie HTML5, CSS3, and JavaScript genannt. Alles basiert auf offenen Standards, um das von Apple ungeliebte Flash zu verbannen. Und tolle Demos gibts im Showcase dazu. Aber nicht alle Browser unterstützen diese, aber eben der “Superbrowser” von Apple. Bewundern darf man das im HTML5 Showcase.
Oder auch eben nicht.
http://www.apple.com/html5/ (Anm.: Seite wurde entfernt - der Link wurde daher dekativiert)
[Weiterlesen…]
HTML-Fehler auf Suchmaschinen-Startseiten
Google hat kürzlich seine Seite einem leichten optischen Refresh unterzogen. Einigermassen verdutzt war ich, dass der Suchmaschinen-Branchenprimus viele HTML-Fehler enthält. Ganze 46 Fehler bei einer Seite, die lediglich ein Suchformular und ein paar Links drumherum zeigt. Ausserdem sollten bei Google fähige Webprogrammierer am Werk sein.
Ein Vergleich mit anderen Anbietern zeigt aber, dass sauberer HTML Code scheinbar nicht gerade “üblich” zu sein scheint.
Getestet wurde mit http://validator.w3.org/.