Weihnachtskarten 2013

Samstag, 21. Dezember, 2013

Alle Jahre wieder…
Meine elektronische Weihnachtskarte ist online.

2013-12-21-weihnachtskarte.jpg

Die Karte hat als Motiv das Bundeshaus in Bern - was mir nicht neutral genug erschien, um es als versendbare Karte zu gestalten.
Aber mit dem Weihnachtsgruss von 2012 ginge dies (s. Link unten “Der schnellste Weihnachtsmann der Welt”).

Weiterhin gibt es eine Weihnachtskarte rein in Papierform:

2013-12-21-wkarte-papier.png

Weiterführende Links

  1. Weihnachtsgruss 2013 - Anm.: diese e-Card wurde vom Server gelöscht
  2. Weihnachtsgruss 2012 Der schnellste Weihnachtsmann der Welt
  3. Axels Blog Der schnellste Weihnachtsmann der Welt

Wie sowas entsteht?
[Weiterlesen…]

TWebbrowser meldet sich mit Trident Version 4

Donnerstag, 14. November, 2013

… obwohl der IE 10 installiert ist.

Aber mal von vorn: ich schreibe an einer Windows-Anwendung, in die ich die Komponente des Internet Explorer - eben TWebbrowser - einbinde, um Inhalte anzuzeigen. So kann man HTML und CSS zum Layouten verwenden. Klicks kann man mit seinem Programm abfangen und auswerten und so z.B. Klicks auf Links auf Routinen seiner Anwendung umbiegen.

Bei den Experimenten verhielt sich der Browser merkwürdig … bis ich per Javascript navigator.appVersion habe ausgeben lassen, was mir eine (uralte) Version 4 zum Vorschein brachte.

Natürlich war ich nicht der Erste auf der Welt, der auf dieses Problem stösst und die Suche in der unendlichen Müllhalde lies mich die Lösung finden. Welche da wäre: man muss in der Registry den Namen seiner Exe-Datei mit einer IE Version verknüpfen. Das kann man entweder in den Installer packen - oder falls es als portable Version funktionieren muss - beim Start der Anwendung ausführen.

Der Codeschnipsel, den ich in meine Anwendung gesetzt habe, sieht in Delphi so aus:

var 
    Reg: TRegistry;
begin
     Reg := TRegistry.Create;
     try
        Reg.RootKey := HKEY_CURRENT_USER;
        if Reg.OpenKey('Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION', True) then
        begin
             Reg.WriteInteger(ExtractFileName(paramstr(0)), 9999);
             Reg.CloseKey;
        end;
     finally
        Reg.Free
     end;
    (...)

Weiterführende Links

Mysql-connect sehr langsam?

Mittwoch, 28. August, 2013

Für Windows gibt es fixfertige Pakete für die Kombination Apache + Php + Mysql + X, wie z.B. XAMPP oder Wamp.

Für ein kleines Projekt habe ich auf eine solche zurückgegriffen und irgendwie war es langsam. Was genau langsam war, war nach einigem Debugging lokalisiert:

(...)
$iStart=microtime(true);
mysql_connect($hostname . ":" . $hostport, $username, $password);
echo microtime(true) - $iStart."s to open DB $database<br>";
(...)

Das mysql_connect() brauchte regelmässig 1 Sekunde - die anschliessenden Queries 0.00x Sekunden.

Ursache ist der Zugriff mit dem Hostnamen “localhost” auf die Loopback-Adresse. Wenn man den Mysql-Service auf eine IP-Adresse bindet, geht es massiv schneller. Konfiguriert wird dies in der my.ini im Installationsverzeichnis von Mysql. Oder man verbindet sich auf die IP-Adresse 127.0.0.1.
Ach, und unter Windows den Eintrag lower_case_table_names=2 nicht vergessen - daher schiebe ich es mal hinterher:

(...)
bind-address="127.0.0.1"
bind-address = ::1          # fuer ipv6
lower_case_table_names=2 
(...)

Nach Änderung der Konfiguration muss man den Mysql-Dienst neu starten, damit es wirksam wird.

Weiterführende Links:

Browser-Surround-Test

Dienstag, 30. Juli, 2013

Mein letzter Browser Check auf Unterstützung von Surround-Wiedergabe von HTML5-Audiotags ist ca. 1 Jahr her.

Mehr oder minder zufällig habe ich die Problemkinder Firefox (Version 22) und Opera (Version 15) getestet: siehe da, in beiden kann nun 5.1 Audio wiedergegeben werden.

Yeah!

Firefox
Im Falle von Firefox war die zuletzt von mir getestete Version die Nr. 13.
canPlayType([MIME]) liefert auf Firefox 22:

  • audio/mp4 - “maybe”
  • audio/ogg - “maybe”

In surround werden sowohl OGG als auch AAC (Extension .m4a) wiedergegeben.

Opera
Opera hat mit der jetzigen Version 15 die Rendering Engine auf die des Chromium-Projektes gewechselt und verwendet für die Darstellung von Webseiten damit dieselbe, wie Google Chrome. In Opera 12 gab es vor 1 Jahr noch keinen Surround-Sound.
canPlayType([MIME]) liefert auf Opera 15:

  • audio/mp4 - “false”
  • audio/ogg - “maybe”

In surround wird OGG wiedergegeben; AAC kann nicht abgespielt werden.

AMC-Player
Wann in welchen Versionen es genau in beiden Browsern gefixt wurde, weiss ich nicht … aber egal. Ich habe meinen Html5-Player - den AMC player - auf Version 0.15 aktualisiert (*), damit man ist im Firefox die Umschaltung auf Sourround freigegeben (für Opera mit Chromium-Engine war es verfügbar). Den Html5-Player mal wieder anzuschauen, habe ich eh schon zu lange vor mir hergeschoben.

UPDATE:

  • Der AMC-Player hat die Version 1 erreicht
  • Besuche zum Selbst-Ausprobieren meine “Testseite für unterstützte Audioformate”

Weiterführende Links

Ausgabe des Blogs wurde verbessert

Montag, 22. Juli, 2013

Ein paar Kleinigkeiten verbessert man immer mal wieder hier und da …

1) Microdata eingeführt

Naja, zumindest einmal rudimentär. Vielleicht können Suchmaschinen dann etwas genauer die Bloginhalte analysieren.
Die Anpassung erfolgte in den Template-Files unter
[Flatpress-Root]/fp-interface/themes/[Theme-Name]/*.tpl
anhand des Links [01] (s.u.).

2) Filtertyp und Wert anzeigen
Wenn man im Archiv Monat/ Jahr wählte oder aber eine der Kategorieen, so war funktionell die darauffolgende Ansicht korrekt, aber es wurde in Flatpress nicht ausgegeben, dass und welche Filteraktion gerade greift. Nun wird der Anzeigemodus eingeblendet:

2013-07-22-h2-nach-datum.png 2013-07-22-h2-archiv.png 2013-07-22-h2-artikel.png
[Weiterlesen…]

Pimped Apache Status - ZPanel Modul verfügbar

Montag, 15. Juli, 2013

Ist doch schön, dass Leute Gefallen an meinem Tool finden.
Vor ein paar Tagen hat mir Russel einen Fix gesendet, weil das Curl-Multiexec (das holt von allen Webservern parallel die Statusinformationen ab) in seiner Umgebung zu lange brauchte. Und nebenbei weiss ich nun auch, dass es auch ein ZPanel Modul für meine PHP-Applikation gibt.

Nachtrag:
Ich hab soeben auch auf Version 1.08 aktualisiert, die den Fix für curl und als neues Feature die Anzeige von Balken enthält.

2013-07-15-apachestatus_bars_02.png

  • Pimped Apache Status - Webseite
  • Pimped Apache Status - auf Sourceforge
  • http://forums.zpanelcp.com/showthread.php?28323-Pimped-Apache-Status - ZPanel Forum mit Installationsanleitung für ZPanel (Anm.: Die Webseite forums.zpanelcp.com wurde deaktiviert)

Blog-Software (Flatpress) wurde aktualisiert

Freitag, 12. Juli, 2013

Ich war faul, glaub’ ich. Jedenfalls habe ich die von mir verwendete Blog-Software lange nicht mehr aktualisiert.

Nach dem Update des Layouts vor ein paar Tagen wurde nun die aktuelle Version eingespielt.
Es gab bis auf eine Kleinigkeit im Pretty-Url-Plugin keine Probleme.

Links:

CSS-3D-Effekt: Aussparung

Montag, 20. Mai, 2013

Bei meinem letzten Layouts hatte ich in der Haupt-Navigation einen Effekt verwendet: Der aktive Navigationspunkt sah wie eine Aussparung aus:

2013-05-20-css-3d-effekt-04.jpg

Wie man zu diesem kommt, erkläre ich schrittweise.
[Weiterlesen…]

Osterkarte 2013

Dienstag, 26. März, 2013

Wieder einmal rechtzeitig: Meine animierte Osterkarte mit Sound ist am Wochenende fertig geworden.

2013-03-26-osterkarte.jpg

Osterkarte anzeigen

Chrome: Abspielen mancher Ogg Files nicht möglich

Dienstag, 22. Januar, 2013

Mehr durch Zufall habe ich festgestellt: manche meiner Stereo-Ogg Files lassen sich im Chrome mit dem html5 audio player gar nicht abspielen. Firefox spielte sie allesamt klaglos.

Ich habe zwar schon als Stereo-Quelle MP3 Dateien in verschiedenen Bitraten, aber alle Ogg Files, die daraus erstellt werden, gehen vorher durch ffmpeg und werden zu PCM WAV Dateien umgewandelt.

  • Die Quelle zum Encoden nach Ogg ist somit immer WAV mit 44.1 kHz.
  • Encoder ist immmer oggenc2 - also immer derselbe Encoder und denselben Parametern.

Also habe ich irgendwann die Suche nach Encoder-Problemen aufgegeben.

Soweit ich es debuggt habe, wird im Javascript-Code das Audio Objekt erfolgreich initialisiert. Auch die Methode play() wird erfolgreich aufgerufen. Chrome macht anschliessend - was man in der Entwicklerkonsole unter Netzwerk sieht - partial Requests auf das Audiofile. Und hier bleibt er hängen: “pending” steht da im Status.

2013-01-22-chrome-html5-ogg.png

Workaround:
Was ich gefunden hab: die URLs der Audiosourcen werden um ein “?” ergänzt - und schon funktionierts im Chrome.

also ALT:

<audio>
  <source src="/data/song_2.0_.ogg" type="audio/ogg">
  <source src="/data/song_2.0_.mp3" type="audio/mp3">
  (...)
</audio>

und NEU:

<audio>
  <source src="/data/song_2.0_.ogg?" type="audio/ogg">
  <source src="/data/song_2.0_.mp3?" type="audio/mp3">
  (...)
</audio>

… und das Javascript Snippet:
aSource ist ein Array mit den Keys src (eine URL des Audios) und type (MIME Type). Wenn kein “?” in der Audio-URL vorkommt, wird dieses angefügt.

s+='<audio>';
(...)
  sourcesrc=String(aSource.src);
  if(sourcesrc.indexOf("?")<0) sourcesrc+="?";
  s+='<source src="' + sourcesrc + '" type="'+aSource.type+'">';
(...)
s+='</audio>';
(...)
document.getElementById("divaudios").innerHTML=s;

weiterführende Links