Fr, 24. Februar, 2012
Ich habe kürzlich mein uralt-ZIP-Drive rausgekramt und ein altes Backup gefunden.
Meine erste Webseite ging vor - sage und schreibe - 15 Jahren online! F… (ferdammt), ich bin mit der Meldung genaugenommen sogar ein paar Tage zu spät ;-)
Zur Technik:
Damals war HTML 3.2 “state of the art”. Das heisst: die Webseite bestand aus Frames - und es gab zusätzlich eine Noframe-Variante. Es gab auch einige dezent animiert GIFs - natürlich alle selbsterstellt ;-)
Linkerhand das Menü enthielt Icons, die im onmouseover-Event Grafiken austauschten. Tja, das CSS-Pseudoelement :hover - geschweige denn CSS gab es ja noch nicht.
Ich habe versucht, den goldenen Regeln für schlechtes HTML möglichst gekonnt auszuweichen (heute gibt es ja zuhauf HTML-Validatoren und SEO-”Zeugs”).
Dies war die Frame-Variante:
Inhalt:
Was stellte ich in meiner ersten Webseite online? Es gab einige meiner damaligen mit Delphi und Turbo Pascal erstellten Programme für Windows und DOS zum Download - ebenso 2 Tracker-Songs.
Meine Webseiten entstanden mit einem DOS-Editor (Teil des hammermässigen Norton Commander Clons namens “DCC”), für den ich auch gleich eine Datei für das Syntax-Highlight von HTML anbot.
Ja, ich weiss, im Screenshot gibt es HTML-Syntax-Fehler - es ist ja meine allererste Seite ;-)
Und auch damals gab es schon unterschiedliche Browser, auf die es Rücksicht zu nehmen galt. Frames und Animationen konnten nicht alle Webbrowser.
Oooh jaaa. Lang-lang ist’s her!
Links:
Di, 14. Februar, 2012
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>
Sa, 21. Januar, 2012
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…]
Mo, 29. August, 2011
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
[Weiterlesen…]
So, 7. August, 2011
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.
[Weiterlesen…]
Mo, 21. März, 2011
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…]
So, 6. März, 2011
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)
[Weiterlesen…]
Do, 28. Oktober, 2010
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:
$sql
“;
$db->exec($sql);
}
Weiterführende Links:
So, 5. September, 2010
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…]
So, 6. Juni, 2010
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…]