Meta-Angaben und Umlaute

Aus Sicht der Suchmaschinenoptimierung ist eine gute Wiederspiegelung der aktuellen Seite (!= Website) in den Meta-Angaben auch heute noch von großer Bedeutung. Daher muss man sich frühzeitig Gedanken um gute Keyword- und Description-Tags machen. Ich habe das eben für mein Fotoalbum nachholen müssen. Dabei stieß ich schnell auf das leidige Problem mit den Umlauten. Wie schreibt man sie denn nun? Im Klartext oder lieber als HTML-Entitiy? Oder lieber „von Hand konvertieren“, also ä wird zu ae, ß zu ss, etc.? Nach einiger Recherche habe ich hier eine Zusammenfassung zu bieten:

  • Umlaute werden von den Robots generell in eine 7-Bit-Sequenz umgewandelt. Also wird aus ä ein „ae“ und aus einem ß wird ein „ss“.
  • Umlaute werden doppelt indiziert, nämlich als Stamm- und als Sonderzeichen. Deshalb wird Müsli auch unter Musli gefunden.
  • Eine Umwandlung in eine Entity ist keine gute Idee, da Entitäten als solche indiziert werden. Das heißt ganz einfach, dass ein Müsli auch als solches indiziert und gefunden wird – wenn es jemanden gibt, der nach sowas sucht.

Fazit: Meta-Angaben immer schön in normalen Umlauten schreiben, da sie für die Suche eh umgewandelt werden.

Headereintrag „X-Powered-By“ von PHP abschalten

PHP gibt sich gerne als Plaudertasche und erzählt brav jedem Besucher in dem Header der Verbindung, dass es für den zurückgegebenen Inhalt verantwortlich ist. Das sieht dann ungefähr so aus:

HTTP/1.x 200 OK
Date: Fri, 29 Jun 2007 08:28:04 GMT
Server: Apache/2.2.3 (Debian) PHP/4.4.4-8+etch3 mod_perl/2.0.2 Perl/v5.8.8

X-Powered-By: PHP/4.4.4-8+etch3

Content-Length: 481
Keep-Alive: timeout=15, max=98
Connection: Keep-Alive
Content-Type: text/html

Nun gehen die Meinung er SEO-Leute auseinander, manche behaupten, mod_rewrite-Regeln, die z.B. .html-Seiten vorgaukeln, wären nicht effektiv, wenn im Header eh steht, dass die Seite von PHP gerendert wurde. Um nun PHP das Senden dieser Header-Zeile abzugewöhnen, muss man lediglich in der php.ini den Wert von expose_php auf Off setzen.

Anschließend ist PHP mucksmäuschenstill. :-)

;
; Misc
;
; Decides whether PHP may expose the fact that it is installed on the server
; (e.g. by adding its signature to the Web server header). It is no security
; threat in any way, but it makes it possible to determine whether you use PHP
; on your server or not.
expose_php = Off

Nachtrag vom 06.11.2011:
Da es in die gleiche Richtung geht, hier der Hinweis, dass ich in dem Artikel Apache sehr extravertiert – Signatur verbergen und Token anpassen beschrieben habe, wie man dem Apache sein von Haus aus sehr gesprächige Art eindämmen kann.

Instant-Messaging im Unternehmen

Gestern hat Golem einen interessanten Artikel über eine Studie zum Thema „Instant Messaging in Unternehmen“ veröffentlicht. Im Zuge dessen habe ich auch mal die Kommentare studiert und bin auf die Serverapplikation „Openfire“ gestoßen. Openfire ist ein Serverprogramm, dass das Jabber-Protokol (auch XMPP genannt) fast 100% unterstützt. Besonders einfach soll die Installation und Administration sein, bei der einem eine schickes Webinterface sehr entgegen kommt.

Screenshots finden sich in großer Stückzahl auf der Hersteller-Website [ Direktlink ].

Programmiersprachen im Geschwindigkeitsvergleich

Unter der URL http://shootout.alioth.debian.org/ habe ich eben ein höchst interessantes Benchmark-System gefunden. Dort kann man auf verschiedenen CPUs viele unterschiedliche Programmiersprachen gegeneinander „antreten lassen“ um CPU-Auslastung und Speicherverbrauch gegenüberzustellen. Interessant ist z.B. der Vergleich zwischen Perl und PHP [ Link ].

Sachen gibt’s: Bilder im CSS als base64-Zeichenkette speichern

Ab Version 2.1 der Cascading Style Sheets (Link) ist es möglich, dem url()-Wert nicht nur den Pfad/URI einer Grafikdatei zu übergeben, es können auch base64-kodierte Strings angegeben werden. Das hat den Vorteil, dass man die Datei nicht physisch auf dem Server liegen haben muss. Inwiefern man das richtig toll sinnvoll einsetzen kann, müsste man noch mal nachforschen. Jedenfalls habe ich mich gefreut, dass es geht bzw. gehen wird. Eine gelungene Überleitung: Der Firefox kann’s, der Internet Explorer (mal wieder) nicht. :-S

Ein Beispiel*:

background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQ
d1PeAAAADElEQVR42mP4%2F58BAAT%2FAf9jgNErAAAAAElFTkSuQmCC);

*Beispiel entnommen aus dem Acid2-Kompatibilitätstest

Safari mit Fenstern

Apple hat seinen Internet-Browser „Safari“ in einer Beta-Version für Windows XP und Windows Vista zum Download freigegeben. Das Newsportal Golem weist allerdings in einem Artikel auf schwere Sicherheitslücken hin.
Apple hatte im Vorfeld verkündet, gerade bei der Windowsversion hohen Wert auf die Sicherheit zu legen.

Auch in Sachen Darstellung hat das Surfen nicht viel mit einer schicken Safari zu tun, denn viele Websites werden nur schlecht gerendert. Hier sind ein paar Beispiele:

Safari bild.t-online.de

Safari heise.de

Safari blog.rvi-media.de

Wer sich Safari (trotzdem) herunterladen möchte, kann das hier tun.

NIE wieder alert()-Fenster!

Endlich habe ich „sie“ fertig zur Veröffentlichung! Sie? Damit ist die „JavaScript Development Console“ (kurz: JSDC) gemeint!

Dadurch, dass ich viel mit JavaScript und Ajax-Techniken arbeiten muss, hat mich die Ausgabe von Variablen über alert() irgendwann so genervt, dass ich mir eine bessere Lösung basteln musste. Und genau diese Lösung will ich der Menschheit nicht vorenthalten! ;-)

Ein Auszug aus der Beschreibung:

Dieses kleine Tool soll die Arbeit mit JavaScript vereinfachen. Jeder der schon mal mit JavaScript aufwändigeren Quellcode programmiert hat weiß, wie mühselig die Ausgabe von Variablen ist. Generell hat man nur wenige Möglichkeiten “mal eben” eine Variable auszugeben. Die schnellste Möglichkeit ist dabei natürlich die alert()-Funktion. Aber innerhalb einer Schleife alert()-Ausgaben zu machen ist keine spaßige Angelegenheit. Eine andere Möglichkeit wäre, mit document.write() Ausgaben zu machen, aber auch das ist einiges an Schreibarbeit und das Ergebnis landet ziemlich weit unten auf der Seite oder mitten im Text. Gerade in der Zeit von Web 2.0 sind AJAX-Status-Meldungen und XML-Rückgaben ein wichtiger Bestandteil geworden.

Wer die Konsole mal schnell sehen will klickt HIER.

Eine (etwas) ausführlichere Demonstrationsseite gibt es HIER.

Eine Beschreibungsseite findet man oben im Menü oder HIER.

Über Feedback jeder Art freue mich natürlich immer! :-)

onChange im Firefox fehlerhaft

Ich habe schon wieder den Internet Explorer verflucht aber nein, dieses mal ist der Firefox der Bösewicht! ;)

Angenommen ich habe einige Radio-Buttons mit einem „onChange„-Event ausgerüstet, dann feuert der Firefox das Event gleich dann ab, wenn ich den Radio-Button in eine andere Stellung bringe. Der Internet Explorer macht es aber erst, wenn der entsprechende Radio-Button anschließend den Fokus verliert. Und er hat damit recht! In diesem Fall doof für mich, aber immerhin auch mal ein Fehler im Firefox.

HTML4 sagt dazu:

onchange: Fires when a control loses the input focus and its value has been modified since gaining focus

Animierte Grafiken + Form -> Submit + Internet Explorer

Ich könnte in den (wirklich innovativen Namen) des Blogs langsam mal den Zusatz „Internet Explorer“ aufnehmen… Jeden Tag neue tolle Kuriositäten!

Folgendes Szenario: Ich möchte einen Upload realisieren (in diesem Fall für Videos). Da wir in modernen Zeiten leben, möchte ich den User in der Zwischenzeit mit einer putzigen Ladeanimation erfreuen (z.B. einem typischen Web 2.0-Brummkreisel, wie er einem inzwischen auf jeder zweiten Seite entgegenlacht).

D.h. ich mache ungefähr folgendes:


Supersache das und im Firefox eine Augenweide. Im Internet Explorer auch. Also fast… Da man bei Microsoft ja immer sehr ressourcensparend arbeitet (Bitte lachen Sie JETZT) haben sich die IE-Entwickler gedacht: „Wenn der Hansel schon irgendwo draufklickt, dann will er auch weg von der aktuellen Seite und dann kann der Rest der Seite auch aufhören bunt zu blinken und so.“ Und so geschah es auch! Klickt der IE-User auf den oben beschriebenen Button hört die (Gif-)Animation auch schon auf und man kann sich während des 10 MB-Uploads den halbfertigen Kreisel angucken – Ui, wie spannend!

Abhilfe scheint es dafür nur indirekt zu geben. Ich habe mich für eine JavaScript-Sache entschieden, die die „Loading …„-Anzeige animiert, denn JavaScript führt der Internet Explorer auch nach dem Submit aus. Ist ja auch irgendwo logisch. AAAAAAH!!!

var i = 0;

function funktion_zum_sichtbarmachen_der_loading_box() {

[...]

window.setInterval(function() {

if(0 == i % 3) {
	document.getElementById("loading").innerHTML = ".";
} else {
	document.getElementById("loading").innerHTML += ".";
}

i++;

}, 1000);

[...]

}

Dadurch wird auf eine schnelle, dreckige und einfache Art jede Sekunde ein „.“ hinter das „Loading“ gepackt. Nach drei Punkten, geht’s dann wieder von vorne los. Fantastisch und funktioniert auch im Internet Explorer. Und dabei wollte ich mit den Brummkreiseln auch mal modern sein. Buhhuhu!!! :-(

iframe mit Rand – Redmond vs. CSS

1:0 für Microsoft! :-(

Wer vermutet und gehofft hat, man könne mit „border: 0px;“ einen randlosen IFRAME erzeugen, der hat wieder mal die Rechnung ohne den Internet Explorer gemacht. Der findet Ränder nämlich trotzdem toll. Abhilfe schafft nur das HTML-Attribut frameborder mit dem Wert 0.

Sieht dann so aus:


Muss ja auch nicht immer einfach sein …