Das Putzlowitsch Test- und SEO-Blog

Weltfrauentag mit 13 Zitaten und ein paar JavaScript-Spielereien

Weltfrauentag 2019

Heute ist der 8. März und damit der Internationale Frauentag. In Berlin ist heute sogar ein richtiger Feiertag mit Arbeitsfrei, geschlossenen Geschäften und so.

Weltfrauentag 2019 (Google Doodle, de)

Bei Google gibt es wieder ein weltweites Doodle, diesmal eine Slideshow mit 13 Zitaten bekannter und berühmter Frauen.

Google schreibt dazu: „Lass dich am Weltfrauentag von starken Frauen inspirieren!“

Die grafisch gestalteten Texte links bleiben unverändert in der Sprache der Autorinnen, die Zitate rechts mit den Namen und Berufen der Autorinnen jedoch wurden übersetzt und werden in der Sprache des Betrachters angezeigt, für mich also z.B. auf deutsch.

Da man nun nicht ständig die Spracheinstellungen vom Browser oder Betriebssystem ändert, bekommt man die Zitate in den anderen Sprachen nicht zu sehen.

Deshalb habe ich mal ein paar Sprachen ausgewählt, für die ich in der folgenden Liste die Zitate anzeige. Beim Start wird die Sprache des Webbrowser verwendet, falls vorhanden (falls nicht, wird ‚en‘ genommen). Mit den kleinen Sprachlinks kann man aber die gewünschte Sprache auch manuell auswählen.

Das Ganze ist mit Daten im JSON-Format und ein wenig JavaScript realisiert, ganz sparsam ohne Javascript-Frameworks wie jQuery o. Ä.

Viel Spaß mit den Texten. :-)


  • “Wozu brauche ich Füße, wenn ich Flügel habe?”
    Frida Kahlo, Mexikanische Künstlerin
  • “Lass dich niemals von der beschränkten Vorstellungskraft anderer Leute einschränken.”
    Dr. Mae Jemison, Amerikanische Astronautin und Ärztin
  • “Mut bringt neuen Mut hervor.”
    Millicent Fawcett, Britische Schriftstellerin und Frauenrechtlerin
  • “Ein Traum, den man alleine träumt, ist nur ein Traum. Ein Traum, den man zusammen träumt, ist Wirklichkeit.”
    Yoko Ono, Japanische Multimediakünstlerin
  • “Wir sind zu wertvoll, um uns von Enttäuschungen ablenken zu lassen.”
    NL Beno Zephine, Indische Diplomatin
  • “Sag nicht, du seist schwach, weil du eine Frau bist.”
    Mary Kom, Indische Boxerin
  • “Ich glaube wirklich an die Idee der Zukunft.”
    Zaha Hadid, Britisch-irakische Architektin
  • “Flügel bedeuten nur Freiheit, wenn sie zum Flug gespreizt sind. Auf dem Rücken getragen sind sie eine Last.”
    Marina Zwetajewa, Russische Dichterin
  • “Laß durch nichts in der Welt dich binden als durch deine höchste innere Wahrheit.”
    Emma Herwegh, Deutsche Schriftstellerin
  • “Ich bin wichtig. Genauso wichtig wie ihr. Nicht 'nur wenn...', nicht 'nur solange...'. Ich bin wichtig. Punkt.”
    Chimamanda Adichie, Nigerianische Schriftstellerin
  • “Jeder, der auch nur einen Traum hat, hat einen Grund stark zu sein.”
    Sanmao, Taiwanesische Schriftstellerin, die in China geboren wurde
  • “Die Zukunft kann schöner werden als die Vergangenheit.”
    George Sand, Französische Schriftstellerin
  • “Ich bin stärker als ich selbst.”
    Clarice Lispector, Brasilianische Schriftstellerin
Keine Kommentare »

Black Hat Sith / White Hat Jedi – ganz ohne SEO

Black Hat Sith / White Hat Jedi – SEO-Wettbewerb

Der schwarze Hut

Es gibt mal wieder einen SEO-Wettbewerb, gewissermaßen um das Sommerloch zu füllen. Der Start war am 27. Juli und er läuft noch bis zum 31. August. Der Gesamtwert der Preise von 40000 Euro wirkt recht spektakulär und auch der Ablauf und die Wertung der Teilnehmer klingen durchaus innovativ, was einen SEO-Wettbewerb angeht.

So wird nicht nur an einem Stichtag zu einer bestimmten Zeit das Ranking bei Google herangezogen. Vielmehr gibt es an fünf Tagen vor Ende des Wettbewerbs jeweils um 19 Uhr eine Punktevergabe für die Rankings von Platz 1 bis 40. Hier zählen aber nur „Text-Suchergebnisse“, also keine Bilder, Videos, News usw. Wer dann in der Summe die meisten Punkte hat, hat gewonnen. Einfach, aber durchaus mal etwas Neues bei einem SEO-Contest.

Und noch etwas ist anders als sonst, es gibt zwei Suchbegriffe, auf die optimiert werden soll: Black Hat Sith und/oder White Hat Jedi

Ausgerufen hat den SEO-Wettbewerb die Website CineStock, Anbieter für lizenzfreie Cinemagraphs, Videos, Bilder und Musik. Cinemagraphs bzw. Cinemagramme sind laut Wikipedia Standbilder, die eine oft kleine, sich wiederholende Bewegung enthalten. Sie erscheinen dem Betrachter eher als Bild statt als ein kurzes Video.

Onpage-SEO, nie davon gehört!

Wenn man sich die Seite zum Wettbewerb bei cinestock ansieht, wird klar, warum sie einen SEO-Wettbewerb ausgerufen haben. Denn die Seite benötigt dringen etwas Onpage-Optimierung. Eine vernünftige, technische Optimierung der Webseiten selbst ist die Basis jeder SEO-Maßnahme. Da können Inhalte und externe Links noch so gut sein, wenn die Seite lahm daherkommt, sind die Besucher schnell wieder weg und auch Google wird nicht mit Top-Rankings winken.

Cinestock – Netzwerkanalyse

Insgesamt 227 Abfragen laden mal eben knapp 170 MB herunter. Das dauert dann auch mit meiner DSL-100 Anbindung stolze 18 Sekunden.

So werden die Logos der 36 Sponsoren und 26 Medienpartnern als einzelne JPEG-Bilder eingebunden.

Cinestock – Medienpartner Logos

Den Vogel schießt hier das 193×50 Pixel „große“ Logo von „SEO-Trainee“ ab, das als JPEG mal eben mit 650 kB zu Buche schlägt. Als PNG dürfte es etwa 10 kB groß sein.

Generell ist für Logos und Grafiken das PNG-Format besser geeignet und bei einer Vielzahl von kleinen Bildchen sollte man auch über Techniken wie CSS-Sprites oder Ähnliches nachdenken.

Aber gut, das PNG-Format kommt dann doch noch zum Einsatz. Allerdings hier nun für Bilder, die eher Foto-Charakter haben und für die daher besser das JPEG-Format geeignet ist.

Cinestock – Bilder (als PNG)

Am Ende der Seite findet man „Content für deine Seite“, eine Liste mit 20 Fotos der Größe 1920×1080 Pixel im PNG-Format und weiteren 35 Cinemagramme mit einer Breite von 650 Pixel als animierte GIF-Dateien. Gut, für die Cinemagramme ist wegen der Animation das GIF-Format die einzige Option. Aber für die Fotos wäre man mit JPEG-Bildern besser gefahren, das Bild „Black Hat Pokal 3“ ist als PNG über 3 MB groß, als JPEG dürfte es bei noch guter Qualität um 300 kB groß sein.

Aber unabhängig von der Eignung oder Nichteignung des Bildformates ist es keine gute Idee, 55 recht große Bilder auf einer Seite direkt als Bild in der Originalgröße einzubinden. Hier hätte es eine Galerie mit kleinen Vorschaubildern, die auf das Originalbild verlinken, auch getan.

Und was ist mit Facebook?

Allein 61 externe Requests gehen zum Facebook-CDN (fbcdn.net), davon 11 CSS, 29 JS und 15 mp4-Videos. Was für Videos eigentlich? Ganz oben am Anfang der Seite ist ein FB-Video als Erklärvideo eingebunden, aber was ist mit den 14 anderen?

Viele, externe Ressourcen sind der Seitengeschwindigkeit auch nicht gerade zuträglich.

SEO fängt mit Onpage an

Liebe Betreiber von CineStock, bevor Ihr einen SEO-Wettbewerb startet, solltet Ihr erst einmal die SEO-Hausaufgaben machen. Sonst verpuffen die positiven Effekte des Wettbewerbs ganz schnell unter der ächzenden Last einer lahmen Webseite!

3 Kommentare »

IP-Adresse bei Strato anonymisieren – so gehts

Strato Logfile anonymisiert

Strato-Logfile IP-Adresse anonymisiert

In den Server-Logdateien, die Strato seinen Webhosting-Kunden bereitstellt, werden die IP-Adressen schon seit vielen Jahren anonymisiert. Laut Hilfe/FAQ werden dazu die ersten 9 Bit der IP-Adresse in einen Hash-Wert umgewandelt. Aus der IP-Adresse 123.123.123.123 wird z.B. 123.123.122.243 (weitere Infos).

So weit, so gut, damit dürfte man, was personenbezogene Daten in den Log-Dateien angeht, auf der sicheren Seite sein. Durch die Anonymisierung geht der Personenbezug verloren.

Vollständige IP-Adresse in der Umgebung

Allerdings wird die nicht-anonyme IP-Adresse an alle Website-Applikationen wie z.B. WordPress durchgereicht und kann dort weiterverarbeitet und gespeichert werden. Man sieht das ganz gut auf einer PHP-Info-Seite:

Strato: IP-Adresse mit PHP-Info

Die vollständige IP-Adresse steht im Feld ‚REMOTE_ADDR‘ der globalen Arrays $_SERVER und $_ENV (Environment) zur Verfügung. Auch in anderen Programmiersprachen wie Perl, Python und per SSI (Server Side Includes) kann man darauf zugreifen.

Viele Web-Applikationen nutzen diese IP-Adresse für unterschiedliche Zwecke. In WordPress wird zu jedem Kommentar die IP-Adresse gespeichert, Statistik-Tools wie Piwik nutzen diese ebenso. Nun ist ja die IP-Adresse ein personenbezogenes/-beziehbares Datum und sollte daher nicht exzessiv genutzt und gespeichert werden.

Alles ganz anonym

Nun wäre es doch nicht schlecht, wenn man auch diese vom Webserver bereitgestellte IP-Adresse einfach anoymisieren könnte, ganz generell gewissermaßen auf der Systemebene.

Bei Strato geht das tatsächlich. Schon vor längere Zeit gab es nach der Einführung von „Speed Plus“ das Problem, das nicht mehr die tatsächliche IP-Adresse, sondern die eines Strato-Servers als Remoteadresse durchgereicht wurde. Die dort beschriebene Lösung für die .htaccess-Datei funktioniert prinzipiell immer noch. Nur muß ich jetzt nicht die IP-Adresse aus dem X-Forwarded-For extrahieren und der REMOTE_ADDR zuweisen, sondern die IP-Adresse verkürzen und mit Nullen auffüllen.

Mit dem Modul mod_setenvif hat man die Möglichkeit, Umgebungsvariablen abhängig von Umgebungsvariablen und Request-Feldern zu setzen. Genau das brauchen wir hier. Wir haben die Umgebungsvariable Remote_Addr und wollen diese verkürzt (anonymisiert) in die Umgebungsvariable REMOTE_ADDR setzen. Das Problem läßt sich mit ein bißchen Regular-Expression-Zauber in zwei Zeile in der .htacces erschlagen:

SetEnvIf Remote_Addr ^((\d+\.){3}) REMOTE_ADDR=$10
SetEnvIf Remote_Addr ^(([^:]+:){2}) REMOTE_ADDR=$1:

Zwei Zeilen sind deshalb erforderlich, weil IPv4- und IPv6-Adressen jeweils extra verarbeitet werden. Die Zahlen in den geschweiften Klammern geben an, wieviele Elemente der IP-Adresse erhalten werden sollen. Mit $1 wir der Rückbezug auf die erhalten gebliebenen Elemente hergestellt und die Zeichen danach wurden einfach hinzugefügt. In der ersten Zeile ist das also nicht nicht $10, sondern $1 und 0. Damit wird aus der IP-Adresse 217.245.43.45 dann 217.245.43.0.

Möchte man nur die ersten beiden Elemente der IPv4-Adresse erhalten, mußte die erste Zeile so aussehen:

SetEnvIf Remote_Addr ^((\d+\.){2}) REMOTE_ADDR=$10.0

Das 0.0 wird deshalb verwendet, damit die IP-Adresse „syntaktisch“ richtig erhalten bleibt. Aus 217.245.43.45 wird 217.245.0.0.

Optimalerweise steht die zwei Zeile ganz am Anfang einer .htaccess im Wurzelverzeichnis des Webpaketes. Dann wirkt sei auch auf alle Domains oder Subdomains, die ihr sichtbares Wurzelverzeichnis in einem Unterverzeichnis des Webspace haben.

Durchschlagener Erfolg

Damit wird die IP-Adresse nicht nur für PHP anonymisiert, sondern auch für andere Programmiersprachen. Zur Demonstration habe habe ich vier Beispiele vorbereitet, bei denen Ihr Eure aktuelle IP-Adresse sehen solltet, allerdings mit der letzten Stelle auf Null gesetzt:

Die Anonymisierung ist so durchschlagend, daß sogar die Error-Log-Daten, die Strato im Kundenbereich bereitstellt, nun anonymisiert sind:

Strato Error-Log: IP-Adresse anonymisiert

Und die normalen Server-Log-Files, die es im Strato-Kundenmenü gibt, sind nun sogar doppelt anonymisiert. Einmal ist die letzte Stelle genullt und dann greift noch die oben beschriebene Strato-Anonymisierung.

Anonymer geht es kaum noch. :-)

Keine Kommentare »

Magenta SmartHome Tür-/Fensterkontakt optisch an AVM FRITZ!Box

Die Fritz!Box 7490 als Telefonzentrale

FRITZ!Box 7490 – Startseite

Schon seit einiger Zeit fungiert hier im Haus eine Fritz!Box als Telefonzentrale. Früher war es noch eine gute, alte 7270, nun ist es eine auch schon nicht mehr ganz frische 7490. Per DECT sind fünf Mobilteile angemeldet, 4 x das FRITZ!Fon C4 und ein FRITZ!Fon C5. Die Fritz!Box stellt allerdings nicht die Verbindung zum Internet per DSL her, sondern ist hinter einem BinTec-Router RS353jv im lokalen Netz eingebunden. Anfänglich war es gar nicht so einfach, die Konfiguration für die Fritz-Box hinter dem Router als VoIP-Telefonkiste hinzubekommen, jetzt läuft es aber schon länger sehr stabil.

FRITZ!Dect 200 – Steckdose

Vor gut drei Jahren hatte ich dann eine AVM FRITZ!DECT 200 (intelligente Steckdose) zugekauft, einfach mal zum Probieren und Spielen mit dem ja so angesagten SmartHome-Kram. Und ich wollte den Energieverbrauch meines PCs messen, was dieser smarte Zwischenstecker außer Schalten nebenbei auch kann.

Nun läuft diese Steckdose also schon längere Zeit eher unauffällig vor sich hin, aber das kann ja noch nicht alles sein, was SmartHome so zu bieten hat.

Magenta SmartHome Tür-/Fensterkontakt optisch

Magenta SmartHome – Tür-/Fenster-Kontakt (optisch)

Irgendwie bin ich dann kürzlich bei Amazon über den Magenta SmartHome Tür-/Fensterkontakt optisch gestolpert und habe dort gelesen, daß er wohl auch mit der Fritz!Box zusammen arbeitet. Spannende Sache, das wollte ich als Technik-Fan unbedingt mal ausprobieren. Also habe ich mir so ein Teil bestellt.

Grundlage ist das sogenannte DECT-ULE, also das „Digital Enhanced Cordless Telecommunications“ (DECT), ein internationaler Standard für Telekommunikation mittels Funktechnik, besonders für Schnurlostelefone. DECT-Telefone gibt es schon recht lange. Dazu kommt die relativ neue Spezifikation „Ultra Low Energy“ (ULE), die gerade für kleine, batteriebetriebene Geräte wie z.B. Sensoren geschaffen wurde.

Dazu kommt noch „HAN FUN“ (Home Area Network FUNctional protocol), ein vereinheitlichtes, herstellerübergreifendes Protokoll für die Kommunikation der Geräte. Und so kommt es nun, daß eine Telekom SmartHome-Sensor mit einer AVM-FritzBox zusammenarbeiten kann.

Plug&Play?

Der Sensor ist endlich da und auch schnell an der Fritz!Box angemeldet, aber es tut sich nichts. Die zugewiesene Steckdose schaltet nicht und auch sonst zeigt der optische Kontakt keine Reaktion. Ist der Sensor etwa defekt?

FRITZ!DECT 100 Repeater

Zunächst habe ich mich im Internet auf die Suche begeben und als erste, mögliche Fehlerquelle den FRITZ!DECT Repeater 100 ausgemacht. So ein Repeater läuft hier auch, weil etwas größere Entfernungen zur Basisstation überbrückt werden müssen. Also habe ich entsprechend der Empfehlung den Repeater in der Fritz!Box abgemeldet und aus der Steckdose gezogen.

Nach dem Reset des Sensors und der Neuanmeldung an der Box zeigte sich keine Verbesserung des Zustandes. Die Suche ging weiter. Ein anderer Nutzer berichtetet, daß der „Kontakt“ erst nach mehrmaliger An- und Abmeldung funktioniert hätte. Also habe ich den Sensor immer wieder an- und abgemeldet, in unterschiedlicher Herangehensweise. Und plötzlich, oh Wunder, funkionierte er tatsächlich. Was war passiert, war das nur Zufall?

Magenta SmartHome Tür-/Fensterkontakt optisch an AVM FRITZ!Box – so gehts!

Mein Fehler bei den ersten Anmeldeversuchen war, daß ich dem Sensor bereits im ersten Schritt einen schönen Namen verpaßt hatte, also z.B. „Test 1“. Genau hier liegt das Problem, was ich nach weiteren Versuchen eindeutig reproduzieren konnte.

Die folgende Schritt für Schritt Anleitung sollte zum Erfolg führen.

0. Vorbereitung

Fritz!Box 7490 – Smart Home Gerät löschen

Gegebenenfalls sind vorhandene Fritz!Dect Repeater aus der List der Geräte zu löschen und aus der Steckdose zu ziehen!

Falls der Sensor schon an der Fritz-Box angemeldet wurde, diesen zunächst aus der Liste der SmartHome-Geräte entfernen. Das geht mit dem roten X ganz rechts hinter dem Gerät.

Anschließend den Sensor selbst durch Druck auf den Home-Button für 10 Sekunden, bis die weiße LED das zweite Mal kurz aufleuchtet, zurücksetzen.

Der Sensor wechselt nach wenigen Sekunden in den Kopplungsmodus, was durch Blinken der weißen LED signalisiert wird. So verhält sich auch ein neuer Sensor nach dem Einlegen der Batterien.

1. Neues Gerät anmelden

Fritz!Box 7490 – Smart Home Gerät anmelden

Unter Heimnetz -> Smart Home kann der Tür-/Fensterkontakt nun mit [Neues Gerät anmelden] angemeldet werden. Das kann einige Sekunden dauern. Ist die Kopplung erfolgreich, leuchtet die weiße LED am Sensor durchgehend für etwa 3 Sekunden und geht dann aus. Die Fritz-Box zeigt eine entsprechende Erfolgsmeldung (grüner Balken) an.

Fritz!Box 7490 – Smart Home Gerät – Anmeldung erfolgreich

Mit [OK] wird die Anmeldung bestätigt und man gelangt zu den Basiseinstellungen des SmartHome-Gerätes.

2. Das Smart Home Basis-Profil

Fritz!Box 7490 – Smart Home Gerät – Basisprofil

Im nächsten Schritt werden die Basiseinstellungen des Smart Home Gerätes angezeigt. Hier könnte man z.B. den vom System vergebenen Namen „HAN-FUN #1“ ändern. Den Namen jetzt aber nicht ändern! Das kann man später immer noch in den Einstellunge machen. Wenn man es hier schon macht, funktioniert der Sensor nicht richtig. Den Dialog einfach mit OK bestätigen.

Fritz!Box 7490 – Smart Home Geräte-Liste

Man gelangt wieder zur Liste der Smart-Home-Geräte. Mit dem Stift-Button kann man nun weitere Einstellungen vornehmen.

3. Die Smart Home Geräte-Einstellungen

Fritz!Box 7490 – Smart Home Gerät – Profil (Einstellungen)

Hier kann nun der Name von „HAN-FUN #1: Unit #1“ in z.B. „Test 1“ geändert werden. Außerdem kann man das Verhalten des Sensors und die gewünschten Aktionen festlegen. In meinem Test-Fall habe ich „stets in Bereitschaft“, „Sensor geschaltet Dose 1“, „offen Meldung schaltet An“ und „jeweiliger Sensor bestimmt autark“ konfiguriert.

Magenta SmartHome Tür-/Fensterkontakt optisch an AVM FRITZ!Box funktioniert!

Derzeit kann man mit dem „Magenta SmartHome Tür-/Fensterkontakt optisch“ nur die AVM FRITZ!DECT 200 (Steckdose) schalten lassen, das Versenden von Nachrichten ist noch nicht direkt möglich.

Fritz!Fon C4 – Smart Home Display

Auf dem Fritz!Fon C4 und C5 wir der Zustand des Sensors zumindest angezeigt, wenn man z.B. Smart-Home als Startbildschirm wählt. Der geschlossene „Kontakt“, also die Tür bzw. das Fenster ist zu, wird mit „aus“ signalisiert, eine offene Tür bzw. ein offenes Fenster mit „ein“. Gut, das ist schon mal besser als gar nichts.

Ich hoffe ja, daß AVM die Smart-Home Funktionen im zukünftigen FRITZ!OS weiter ausbauen wird. Und noch zur Info, bei mir läuft die normale FRITZ!OS Version 6.93, also keine Labor-Version.

Viel Spaß mit Smart-Home! :-)

14 Kommentare »