Things I learned today

Howto: SSL-verschlüsselter Zugriff einer Ruby on Rails-Applikation auf eine remote MySQL Datenbank

Heute hatte ich eine besonders interessante Aufgabe: Ich habe eine lokale Rails-Applikation, die auf eine remote MySQL-Datenbank über ein Netzwerk zugreifen muss. Da das öffentlich über das Netz geht, soll der Datentransfer natürlich verschlüsselt ablaufen. Damit das Ganze läuft muss man einige Dinge beachten.

  • Wie kann man mit Rails per SSL auf eine remote Datenbank zugreifen?
  • Was muss bei MySQL eingestellt werden, um SSL Zugriffe zu erlauben?
  • Wie werden die entsprechenden Zertifikate erstellt?
  • Wie muss die Firewall eingerichtet sein?

Eine nützliche Quelle für diese Aufgabe war diese Anleitung, in der beschrieben wird, wie man MySQL und rails konfiguriert. Ich habe noch eine weitere Quelle genutzt, die ebenfalls den remote Zugriff auf eine MySQL-Datenbank behandelt. Hier wird zusätzlich auf die IP-Tables-Konfiguration eingegangen. SSL wird dort allerdings nicht behandelt.

MySQL

Kümmern wir uns zuerst um MySQL. Am Anfang sollte man prüfen, ob die MySQL-Installation überhaupt SSL unterstützt. Dies kann man in der lokalen MySQL-Konsole testen:

mysql> SHOW VARIABLES LIKE 'have_ssl';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_ssl      | YES   | 
+---------------+-------+

Steht an dieser Stelle YES oder DISABLED ist alles gut und man kann weiter machen. Ansonsten muss man zuerst eine MySQL-Version mit SSL-Unterstützung installieren, worauf ich hier jedoch nicht eingehe.

Damit MySQL überhaupt remote Zugriffe erlaubt, muss die Konfigurationsdatei /etc/mysql/my.cfg angepasst werden.
Bei dem Eintrag bind-address steht üblicherweise 127.0.0.1. Damit remote Zugriffe erlaubt werden, muss hier aber die öffentliche IP des Servers stehen.

bind-address  = 256.256.256.256 #hier die eigene ServerIP eintragen
#bind-address  = 127.0.0.1 # - alter Eintrag

Nun noch ein

/etc/init.d/mysql restart

und testen ob noch alles läuft.
Falls man mehrere Anwendungen hat, die auf die MySQL-Datenbank zugreifen, kann es durchaus sein, dass die ein oder andere mit den neuen Einstellungen nicht mehr läuft. Wenn man eine findet, die plötzlich nicht mehr geht, kann das diverse Ursachen haben. Z.B. falsche Rechte des users in der MySQL user table oder falsche Verbindungseinstellungen (Can’t connect to MySQL server on ‘127.0.0.1’ (111)).

Läuft (wieder) alles, werden nun die Zertifikate und Keys erzeugt. Dies ist recht gut in der MySQL Dokumentation erläutert.

Generieren des CA Zertifikats:

openssl genrsa 2048 > ca-key.pem
openssl req -new -x509 -nodes -days 1000 -key ca-key.pem -out ca-cert.pem

Erstellen des Server Zertifikats:

openssl req -newkey rsa:2048 -days 1000 -nodes -keyout server-key.pem -out server-req.pem
openssl x509 -req -in server-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem

Erstellen des Client Zertifikats:

openssl req -newkey rsa:2048 -days 1000 -nodes -keyout client-key.pem -out client-req.pem
openssl x509 -req -in client-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem

Es ist relativ egal, was man bei den ganzen Abfragen eingibt, zumindest sofern man die Zertifikate nur selbst benutzen möchte. Passwort sollte hier keins benutzt werden!

Nun kopiert man die Datei ca-cert.pem server-cert.pem und server-key.pem in das MySQL-Konfigurationsverzeichnis.

mkdir /etc/mysql/ssl
mv ca-cert.pem  server-cert.pem  server-key.pem /etc/mysql/ssl

Hier sollte man unbedingt darauf achten, dass die Files nur die notwendigen Rechte (chmod und chown) haben, also nur der MySQL-User Lesezugriff hat und sonst niemand. Jeder der den Key kennt, kann ansonsten aufgrund des fehlenden Passwort eine SSL-Verbindung zu MySQL aufbauen.

Diese Dateien müssen nun in der MySQL-Konfigurationsdatei angegeben werden. Also noch einmal im Lieblingseditor /etc/mysql/my.cnf aufrufen und folgendes eintragen:

ssl-ca=/etc/mysql/ssl/ca-cert.pem
ssl-cert=/etc/mysql/ssl/server-cert.pem
ssl-key=/etc/mysql/ssl/server-key.pem

Anschließend darf man noch ein weiteres mal MySQL neustarten:

/etc/init.d/mysql restart

Ob alles geklappt hat und MySQL die angegeben Dateien auch findet und lesen kann, kann man so überprüfen:

mysql> show variables like '%ssl%';
+---------------+--------------------------------+
| Variable_name | Value                          |
+---------------+--------------------------------+
| have_openssl  | YES                            | 
| have_ssl      | YES                            | 
| ssl_ca        | /etc/mysql/ssl/ca-cert.pem     | 
| ssl_capath    |                                | 
| ssl_cert      | /etc/mysql/ssl/server-cert.pem | 
| ssl_cipher    |                                | 
| ssl_key       | /etc/mysql/ssl/server-key.pem  | 
+---------------+--------------------------------+

Firewall

Damit man das Ganze nun testen kann, muss man noch bei der Firewall, die man hoffentlich hat, den MySQL-Port 3306 öffnen. Bei iptables geht das so:

$iptables -I INPUT -i eth0 -p TCP -s $remoteip --sport 1024:65535 --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
$iptables -I OUTPUT -o eth0 -p TCP --sport 3306 -d $remoteip --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT

Statt der Variablen $remoteip trägt man einfach die IP ein, von der der Zugriff erlaubt sein soll. Mit diesen Zeilen kann dann auf den Port 3306 nur von der spezifizierten IP aus zugegriffen werden.

Test der Verbindung

Zum Testen der Verbindung muss man erst einen User anlegen, der auf die gewünschte Datenbank zugreifen darf. Also startet man als root den mysql client und legt einen neuen User an:

grant all privileges on datenbank-name.* to 'username'@'remote-ip' require ssl;
set password for 'username'@'remote-ip' = password('Passwort');
flush privileges;

Bei diesen Befehlen muss der eigene Datenbankname eingetragen werden, sowie der Benutzername, und die IP von der der Zugriff erlaubt sein soll. Ebenfalls sollte man sich natürlich ein vernünftiges Passwort einfallen lassen 🙂

Nun kann man die MySQL-Verbindung testen. Ein einfacher Test kann per telnet vorgenommen werden.

telnet example.com 3306

Oder aber man testet es gleich mit einem MySQL-Client. Bevor das geht, muss man allerdings die Dateien ca-cert.pem client-cert.pem und client-key.pem auf den Client kopieren. Nun kann man die Verbindung von Client aus testen:

mysql -uUsername -pPasswort -hHostname --ssl-ca=ca-cert.pem

Hier nimmt man den Username und das Passwort, dass man zuvor gewählt hat und gibt den Host an auf den die Datenbank läuft. Wenn alles glatt läuft, sollte man nun Zugriff auf die Datenbank haben.

Rails konfigurieren

Anschließend muss man nur noch in Rails die neuen Verbindungdaten einstellen und man ist fertig.
Also kopiert man die Dateien ca-cert.pem client-cert.pem und client-key.pem in den db Ordner des Rails-Projektes und editiert die database.yml wie folgt:

  host: remote-ip
  adapter: mysql
  encoding: utf8
  reconnect: false
  database: Datenbank-name
  pool: 5
  username: Username
  password: Passwort
  sslca: db/ca-cert.pem
  sslkey: db/client-key.pem
  sslcert: db/client-cert.pem

Und schon sollte die Rails Applikation vollen SSL-verschlüsselten Zugriff auf die entfernte My-SQL Datenbank haben. 😀

Ich bin bei dieser Anleitung den beiden oben angegeben Quellen gefolgt. Mir ist noch nicht ganz klar, ob die Client-Zertifikatdateien in dieser Konfiguration überhaupt benötigt werden. Wenn nicht, freu ich mich natürlich über Kommentare.

Quellen:
How Do I Enable Remote Access To MySQL Database Server?
Connecting to MySQL using SSL encryption in Ruby on Rails
MySQL Reference Manual: 5.5.6. Using SSL for Secure Connections

Zeitgesteuerte Events in actionscript3

Mein Match3 Spiel soll, ähnlich wie Bejeweled Blitz, einen Timer erhalten, der bestimmt, wie lange ein Spieler spielen kann. Auch das ist in as3 zum Glück recht einfach über ein TimerEvent zu lösen. Beim Realisieren des Timers haben mir zwei kleine Tutorials geholfen. Meine Lösung sieht wie folgt aus:

     import flash.utils.Timer;
     import flash.events.TimerEvent;
     import flash.text.TextField;
 
     var time:uint = 60;
     var timeText:TextField=new TextField(); 
 
     addChild(timeText);
     timeText.textColor=0x1111111;
     timeText.x = 600;   //position of time text
 
     var timerObject:Timer = new Timer(1000,60);
     timerObject.addEventListener(TimerEvent.TIMER, reduceTime);
     timerObject.start();
 
     private function reduceTime(eventObject:TimerEvent):void {
          if(time > 0){
              time--;
              timeText.text = "Time: " + time.toString();
          }
          else{
              timeText.text = "GAME OVER";
              //TODO: Trigger Game over
          }
     }

Zuerst definiere ich ein paar Variablen. Die Variable time enthält die noch verbleibende Zeit, das TextField gibt diese aus.

Anschließend wird ein timerObject erzeugt. Der erste Parameter definiert das Zeitintervall in dem das Zeitereignis ausgelöst werden soll. In diesem Fall 1000ms, also jede Sekunde. Der zweite Parameter gibt an, wie oft das Zeitereignis ausgelöst werden soll. Ich habe hier 60 mal gewählt. Bei diesem Code kann man den Parameter aber genauso gut weglassen oder auf 0 setzen. Dann wird das Ereignis unendlich oft ausgelöst.

Die darauf folgende Zeile registriert den EventListener. Wie üblich gibt der zweite Parameter an welche Funktion das Ereignis abarbeiten soll. Anschließend wird der Timer gestartet.

Mit Flash Mausklicks registrieren und verarbeiten

Ich bin gerade dabei mich in Flash bzw. actionscript3 einzuarbeiten und erstelle als Übungsaufgabe einen kleinen Match-3 Klon. Eine der ersten Dinge die ich dafür lernen musste war, wie Flash Mausklicks verarbeitet. Zum Glück ist das in Flash eigentlich ganz einfach. Ein nützliches Tutorial zum Thema Mouse Event ist: Understanding the AS3 Event Flow.
Zuerst muss man einen event listener an ein Objekt hängen, dass die Mausklicks empfangen soll. Das geht über einen der folgenden Aufrufe:

mySprite.addEventListener(MouseEvent.CLICK, click_event);
mySprite.addEventListener(MouseEvent.MOUSE_DOWN,mouse_down);
mySprite.addEventListener(MouseEvent.MOUSE_UP, mouse_up);			
mySprite.addEventListener(MouseEvent.DOUBLE_CLICK, doubleClick);

Das sind die vier events die ich für mein Spiel brauchte. Es gibt aber noch weiter mouse events, wie zum Beispiel: MOUSE_MOVE, MOUSE_OUT, MOUSE_OVER, MOUSE_UP, MOUSE_WHEEL, ROLL_OUT und ROLL_OVER. Durch den Aufruf von addEventListener wird das im ersten Parameter definierte mouse event mit dem Objekt mySprite verknüpft, so dass dieses Objekt nun die spezifizierten mouse events empfängt. Der zweite Parameter gibt den Funktionsnamen an, der den mouse event verarbeiten soll.

Eine solche Funktion kann dann zum Beispiel so aussehen:

private function mouse_down(e:MouseEvent):void {
    trace("Linker Maus Button wurde bei der X-Koordinate: " + mouseX + " und Y-Koordinate: " + mouseY + " gedrückt.");
}
private function mouse_up(e:MouseEvent):void {
    trace("Linker Maus Button wurde bei der X-Koordinate: " + mouseX + " und Y-Koordinate: " + mouseY + " wieder losgelassen.");
}
private function click_event(e:MouseEvent):void {
    trace("Links-Klick bei der X-Koordinate: " + mouseX + " und Y-Koordinate: " + mouseY);
}
private function doubleClick(e:MouseEvent):void {
    trace("Doppel-Klick bei der X: " + mouseX + " und Y: " + mouseY);
}

Das wars! Und schon kann man anfangen mit den Maus events zu arbeiten.
Was man mit Maus Events noch so alles machen kann ist am besten in der offiziellen Doku nachzulesen.

Nützliche Tools zum Webdesign und zur Webentwicklung – Teil 4 Webmaster Tools

Webmaster Tools sind Werkzeuge von diversen Suchmaschinen Anbietern, die einem alle eine tiefere Einsicht auf kritische Faktoren der eigenen Webseite liefern können. Die Informationen die man dort bekommt, können genutzt werden für SEO, Keyword-Analysen und zur Optimierung der Lesbarkeit und der Bewertung durch Suchmaschinen. Darüber hinaus erhält man meist auch noch sinnvolle Auswertungen über die Besucher der eigenen Webseite und mit welchen Suchbegriffen sie auf die Seite gekommen sind. Interessant, wenn auch von unterschiedlicher Qualität, sind die Informationen über die Verlinkung der eigenen Seite im Netz.

Google Webmaster Tools

Eins der nützlichen Werkzeuge zur Bewertung der eigenen Seite ist das Google Webmaster Tool. Um es nutzen zu können, muss man allerdings einen meta key in den Header der eigenen Seite einbauen, oder eine eigene HTML-Seite zur für die Webmaster Tools erstellen. Nur so kann Google validieren, ob man auch wirklich der Eigentümer der angegeben Seite ist.

Die Webmaster Tools sind in vier Kategorien unterteilt. Unter der Kategorie Site Configuration findet sich die nützliche Funktion Google den Ort der eigenen Sitemap mitzuteilen. Findet Google eine Sitemap vor, kann dies das Indexieren der einzelnen Seiten einer Domain beschleunigen.

Ebenfalls praktisch ist die der Test der robots.txt, der unter Crawler Access zu finden ist. Hier kann man testen, ob Google bestimmte Subseiten erreichen kann oder ob sie wegen Restriktionen der robots.txt für Google unsichtbar sind. Hat man noch keine (funktionierende) robots.txt, kann man sie sich hier auch gleich generieren lassen. Außerdem kann man hier auch noch die Löschung von Seiten aus dem Google Index beantragen. Dass macht natürlich nur Sinn, wenn man zuvor verhindert hat, dass diese Seiten in Zukunft erneut aufgenommen werden.

Unter dem Punkt Settings, kann man die Crawl Rate des Googlebots einstellen, bzw. “nahelegen”, da Google eh macht was es will. Erzeugt einem der Googlebot zuviel Load auf dem eigenen Server sollte man die Crawl Rate ein wenig herabsetzen. Bei frischen Seiten oder Seiten mit sich stark ändernden Inhalten, kann man die Crawl Rate herauf setzen und hoffen, dass dadurch die Aufnahme von Seiten in den Index beschleunigt wird.

Die zweite Kategorie der Google Webmaster Tools nennt sich Your site on the web.

Der Punkt Search Queries kann einem viele manuelle Google Suchanfragen ersparen, denn hier kann man sehen, wie oft die eigene Seite bei verschiedenen Suchbegriffen unter den Ergebnissen aufgetaucht ist, welche Position die eigenen Seite bei dieser Suchanfrage hatte und wie viel Prozent der Suchenden anschließend die eigene Seite besucht haben. Auf dieser Seite erhält man viele wertvolle Informationen darüber, welche Keywords besonders gute Ergebnisse erzielen.

Natürlich darf auch in den Webmaster Tools die eigentliche Keywordsanalyse des Inhalts einer Seite nicht fehlen, ebenso wie die Auflistung von externen Backlinks zu der eigenen Seite. Die interne Verlinkung gibt Aufschluss welche der eigenen Subseiten gut verlinkt sind. Hier sollten die zentralen Seiten möglichst oben stehen.

In der dritten Kategorie Diagnostics bekommt man unter anderem eine Übersicht wie oft der Googlebot die eigene Seite besucht, wie viele Seiten er in den letzten Monaten gecrawlt hat, wie lange er dafür gebraucht hat und wie viele Daten er dabei heruntergeladen hat. Die Crawler Errors geben eine Übersicht darüber ob und welche Elemente oder Seiten der Googlebot nicht crawlen konnte, was ein Hinweis auf falsch gesetzte Links ist. Nützlich kann auch die Funktion Crawl as Googlebot sein. Hier kann man ersehen, wie der eine bestimme Seite für den Googlebot aussieht. Dies kann besonders nützlich sein, wenn man Code implementiert hat, welcher dafür sorgt, dass dem Googlebot spezieller Content ausgeliefert wird. Die HTML Suggestions geben einen Hinweis auf double content und auf weitere sich negativ auswirkende HTML-Eigenschaften der Seite.

In der letzten Kategorie Labs befindet sich die Site performance Analyse der Seite. Hier erhält man einen Geschwindigkeitsvergleich der eigenen Seite mit dem Rest der Welt, sowie ein paar nützliche Tipps, wie man die Geschwindigkeit noch weiter verbessern kann.

Alexa Site Info

Mit Alexa Site Info erhält man ein weiteres sehr mächtiges Tool zur Analyse der eigenen Webseite. Alexa bezieht seine Daten von den Usern die die Alexa Toolbar installiert haben. Daher sind die Daten leider nicht unbedingt repräsentativ, da es nur wenig Gründe gibt, sich freiwillig die Toolbar zu installieren.

Zu Beginn erhält man von Alexa den Rang der eigenen Seite. Es gibt sowohl einen Gesamtrang, als auch einen länderspezifischen Rang. Die Traffic Stats erhält man nur, wenn die untersuchte Seite in der Rangliste der 100.000 meist besuchten Seiten zu finden ist. Hat man dies erreicht, erhält man eine ausführliche Info darüber, wie viel Personen die eigene Seite besuchen. Die Daten enthalten viele nützliche Informationen wie die Bounce Rate, Pageviews per User, allgemeine Reichweite und wie viele Personen über Suchmaschinen auf die Seite gekommen sind.

Bei Search Analytics erhält man eine Übersicht darüber welche Suchbegriffe zu den meisten Seitenbesuchen geführt haben. Eine interessante demografische Auswertung der Besucher ist unter dem Punkt Audience zu finden. Hilfreich kann auch die Clickstream Analyse sein, unter der man sehen kann, woher die eigenen Besucher gekommen sind und wohin sie anschließend gesurft sind.

Alexa bietet auch die Funktion die analysierte Seite mit einer beliebigen anderen Seite über einen gewissen Zeitraum hin zu vergleichen. Hier zeichnen sich schöne Trends ab und man kann die Performance der eigenen Seite mit Konkurrenzangeboten vergleichen.

Yahoo Site Explorer

Es gibt verschiedene Tools, um auszuwerten wie viele externe Seiten die eigene Seite verlinken. Eingehende Links sind zum Beispiel ebenfalls mit den Google Webmaster Tools, als auch direkt über die Google Suchmaschine auszuwerten. Keine dieser Informationen ist jedoch so detailliert wie der Yahoo Site Explorer, womit dieser eindeutig eins der besten Tools ist, um die Backlinks der eigenen Seite zu ermitteln. Darüber hinaus bietet der Yahoo Site Explorer jedoch nur wenig Funktionalität und weiterführende Informationen.

Bing Webmaster Tools

Was Google kann, kann Microsoft schon lange. Oder doch nicht? Auf jeden Fall gibt es auf Bing ebenfalls Webmaster Tools. Die Informationen die dort erhältlich sind, sind tatsächlich recht vergleichbar mit denen von Google. Allerdings ist Google deutlich umfangreicher als Bing. Den Hauptnutzen von den Bing Webmaster Tools sehe ich zur Zeit in der Funktion dort die eigenen Sitemap(s) anzugeben, damit die eigene Seite schneller in den Index aufgenommen wird. Wobei selbst dann die Geschwindigkeit von Bing zu wünschen übrig lässt. Bevor jetzt jeder dort hin surft, um sich einen Account dort zu erstellen, sollte ich eventuell noch darauf hinweisen, dass die Bing Webmaster Tools nur zu nutzen sind, wenn man sich den Flash Ersatz aus dem Hause Microsoft namens Silverlight installiert.

Nützliche Tools zum Webdesign und zur Webentwicklung – Teil 1: Validatoren
Nützliche Tools zum Webdesign und zur Webentwicklung – Teil 2: SEO Keyword Tools
Nützliche Tools zum Webdesign und zur Webentwicklung – Teil 3: Webseiten Analyse Tools

Nützliche Tools zum Webdesign und zur Webentwicklung – Teil 3: Webseiten Analyse Tools

Neben den in den vorigen Teilen dieser Reihe vorgestellten Standard-Werkzeugen der Webentwicklung gibt es noch diverse Tools, die Webseiten nach vielen unterschiedlichen Kriterien analysieren, bewerten und versuchen daraus eine Art Score zu ermitteln. Über die Aussagekraft dieser Gesamtbewertungen lässt sich trefflich streiten. Dennoch sind diese Tools durchaus nützlich, um schnell Probleme oder Optimierungsmöglichkeiten zu finden und nicht zuletzt auch dazu sich selbst ein bisschen zu beweihräuchern 😉

Webseiten-Analyse

Tools dieser Art gibt es viele. Ich verwende recht gerne diese zwei deutschen Seiten:

Seitwert

Seitwert bewertet die Seite nach sechs unterschiedlichen Kriterien:

  • Google Bewertung
    Hier fließen der aktuelle Page Rank der Seite, die bei Google verzeichneten Backlinks und die Positionierung der Seite anhand der extrahierten Suchbegriffe zur Berechnung eines Wertes ein.
  • Yahoo Bewertung
    Hier fließen die bei Yahoo verzeichneten Backlinks und die Positionierung der Seite anhand der extrahierten Suchbegriffe zur Berechnung eines Wertes ein.
  • Externe Wertungen
    In die externen Bewertungen fließen die Alexa-Bewertung, Google Trends und die aktuelle Sichtbarkeit der Domain ein.
  • Technische Details
    Unter den technischen Details findet man die Bewertung des W3C-Validators und einige mehr oder weniger wichtige SEO-Kriterien.
  • Social Bookmarks
    Verlinkung in gängigen Social Bookmarking Tools.
  • Sonstiges
    Hier gibt es Punkte für Wikipedia-Verlinkungen, DMOZ-Einträge und das Alter der Domain.

Der Gesamtscore der Seite errechnet sich aus den sechs oben genannten Unterkategorien und kann maximal 100 Punkte betragen. Die derzeit beste Seite ist derzeit Heise mit 85.25 Punkten. Die schlechteste Seite in der Top 100 hat immerhin noch 62.26 Punkte.

Seitenreport

In die Bewertung von Seitenreport fließen neun unterschiedliche Kriterien mit ein. Viele der Punkte sind die gleichen wie bei Seitwert, aber insgesamt ist Seitenreport deutlich umfangreicher. Besonders praktisch ist die integrierte Keyword-Analyse.

  • Technisches

    Unter dem Punkt Technisches werden, wie der Name schon sagt, die technischen Punkte der Webseite bewertet. Neben der typischen HTML- und CSS Validierung, gibt es hier unter anderem den Punkt Spaghetti-Code, der einem einen schönen Indikator dafür bietet wie sauber der eigene Code ist.

  • Suchmaschinen, Verzeichnisse und SEO

    In diesen Punkt fließen unter anderen die Bewertungen von Google und Yahoo ein. Ebenfalls wird hier nach Duplicate-Content geprüft sowie das Vorhandensein einer Sitemap, die Verlinkung der Seite und andere Dinge bewertet.

  • Social Media

    Unter dem Punkt Social Media ist zu sehen wie stark die Seite von verschiedenen Social Media Diensten verlinkt wird. Hier sind zur Zeit nur wenige Dienste vorhanden, dafür geht dieser Punkt aber auch nicht in die Bewertung mit ein.

  • Benutzerfreundlichkeit

    Wichtigster Punkt der Benutzerfreundlichkeit ist mit Sicherheit die Antwortzeit der Seite. Je höher dieser Wert ist, desto höher ist auch die Absprungrate der Benutzer. Neuerdings berücksichtigt aber auch Google die Geschwindigkeit der Seite, bei seinen Bewertungen, so dass ein hoher Wert bei der Antwortzeit doppelt schädlich für die Seite ist.

  • Zugriffszahlen

    Die Zugriffszahlen werden hier durch eine Alexa-Analyse ermittelt, welche bestenfalls einen Trend aufweisen kann, für eine genaue Messung der Zugriffszahlen aber eher ungeeignet ist.

  • Inhalte

    Der einzige Wert unter dem Punkt Inhalte, der in die Bewertung eingeht, ist das vorhanden sein eines Wiki-Artikels über die Seite. Da dies nur für sehr große Projekte der Fall sein wird, kann dieser Punkt für kleinere Seiten getrost ignoriert werden. Webmaster großer Projekte werden eh bereits wissen, ob ein Wiki-Artikel existiert oder nicht.

  • Datentransfer

    Der Punkt Datentransfer ist wieder ein eher technischer Aspekt. Hat man Probleme bei der Antwortzeit der Seite, kann dieser Punkt eventuell Aufschluss darüber geben, wie die Antwortzeit der Seite noch verbessert werden kann.

  • Sicherheit und Datenschutz

    Die beiden Punkte sind recht selbsterklärend. Hier wird geprüft, ob die Seite Flash oder Google Analytics einsetzt.

Beide Tools sind durchaus empfehlenswert. Bei beiden muss man sich jedoch vorher einen (kostenlosen) Account erstellen, um den Service nutzen zu können. Welches Tools man verwendet ist ein bisschen Geschmacksfrage oder welche Schwerpunkte man von der Analyse erwartet. Bei den Seitwert Ergebnissen ist die allgemeine Verlinkung der Seite ein Schwerpunkt der Bewertung, während im Vergleich dazu bei Seitenreport die technischen Aspekte höher bewertet werden.

Nützliche Tools zum Webdesign und zur Webentwicklung – Teil 2: SEO Keyword Tools

Beim Gestalten einer Webseite gilt es immer, ebenfalls ein Auge auf die Suchmaschinenoptimierung (SEO) zu werfen. Daher werde ich in den zweiten Teil dieser Reihe darauf eingehen, wie die optimalen Keywords für den Inhalt einer Webseite gefunden werden können. Für die Keyword-Optimierung gibt es verschiedene Tools, die vor oder während der Erstellung vom Content einer Seite konsultiert werden sollten.

SEO

  • Google AdWords Keyword-Tool
    Das Keyword Tool lässt sich auf zwei unterschiedliche Arten nutzen. Die erste Methode bietet sich an, wenn man bereits weiß auf welches Keyword eine Seite hin optimiert werden soll. Dann gibt man einfach dieses Keyword und eventuell weitere relevante, verwandte Keywords an. Das Keyword Tool liefert einem dann weitere verwandte Suchbegriffe, zu denen es bei Google Suchanfragen zu diesem Thema gibt.
    Bei der zweiten Möglichkeit gibt man dem Keyword Tool eine URL die er analysieren soll. Dies kann entweder die eigene Seite sein oder aber die Seite eines Konkurrenzangebots. Google analysiert dann den Content und sucht einem anhand des Inhalts Suchbegriffe heraus, die häufig gesucht werden.

    Beide Methoden eignen sich, um geeignete Keywords für die eigene Seite herauszufinden und den Content der Seite mit einer entsprechenden Keyword-Dichte zu versehen.

  • Google Insights
    Mit Google Insights lassen sich Keywords in Relation zueinander über einen gewissen Zeitraum hinweg analysieren. Und da wir schon mal beim Thema sind, habe ich gleich mal die Suchwörter Webdevelopment und Webentwicklung in Deutschland miteinander verglichen:
    Wie man sieht, bekommt man hier eine schöne grafische Auswertung darüber welches Volumen an Suchanfragen die verschiedenen Keywords zu einem bestimmten Zeitpunkt hatten. Sehr interessant auch, um Trends zu entdecken, beziehungsweise die Korrelation von Suchwörtern und aktuellem Zeitgeschehen zu verfolgen. Sind solche Korrelationen vorhanden, sucht dieses Tool einem auch gleich passende News-Artikel heraus, die das Thema behandeln.

Selbstverständlich ist auch hier der Markt der zur Verfügung stehenden Keyword-Tools erheblich größer als hier vorgestellt. Jedoch unterscheiden sich die verschiedenen Angebote kaum, so dass die hier vorgestellten Tools für die meisten Zwecke vollkommen ausreichend sind.

Nützliche Tools zum Webdesign und zur Webentwicklung – Teil 1: Validatoren

Thunderbird Lightning mit Google Calendar synchronisieren

Heute habe ich entdeckt, dass sich zwei meiner Lieblingstools, nämlich Google Calendar und Thunderbird synchronisieren lassen. Neben den offensichtlichen Voraussetzungen einen Google Account zu besitzen und Thunderbird installiert zu haben, brauch man nur zwei weitere Plugins für den Thunderbird:

Zum Installieren der Plugins, muss man sie zuerst lokal auf der Festplatte speichern (wieso das immer noch nicht automatisch geht, wie bei Firefox, verstehe ich bis heute noch nicht). Anschließend kann man sie im Thunderbird unter dem Menüpunkt Extras/Add-ons per Klick auf den Installieren… Button installieren. Nun noch schnell den Thunderbird neu starten.

Importieren der Kalender

Zuerst brauch man die Adresse des Google Kalenders, den man im Thunderbird importieren möchte. Dazu klickt man auf Einstellungen unter seinen Kalendern und wählt anschließend den entsprechenden Kalender aus. Ganz unten findet man die Privatadresse seines Kalenders. Man lässt sich die XML-Variante anzeigen und kopiert den Link in die Zwischenablage.

Im Thunderbird ist es jetzt nur noch eine Sache von wenigen Klicks. Oben in der Tab-Leiste ist nun ein neuer Button, mit dem man in die Kalenderansicht wechseln kann. In der linken Spalte unten irgendwo in der weißen Fläche einen Rechtsklick oder per Menüpunkt Datei/Neu/Kalender den Dialog für einen neuen Kalender öffnen.

In diesem Dialog wähle man Im Netzwerk, anschließend Google Kalender und fügt hier den Link aus der Zwischenablage ein. Nun kann man dem Kind noch einen Namen und eine Farbe geben und schon hat man den Google Kalender im Thunderbird.

Thats it! Das Schöne ist, dass in beide Richtungen synchronisiert wird. Dass heißt, man kann sowohl im Thunderbird, als auch im Google Calendar Termine hinzufügen und im jeweils anderen taucht der Termin dann auf. \o/

Nützliche Tools zum Webdesign und zur Webentwicklung – Teil 1: Validatoren

Eigentlich baue ich nur ungern Webseiten, vor allem weil ich HTML und CSS für nicht wirklich elegante Werkzeuge halte. Dennoch habe ich inzwischen so viele Webseiten gebaut, dass ich langsam den Überblick darüber verliere. Die Webentwicklung berührt viele Themen, von denen die meisten immer wiederkehrend sind. In vielen dieser Bereiche benutzt man immer wieder die gleichen Tools.

Dieser Beitrag ist daher eine lose Link-Sammlung inklusive Kurzbeschreibung verschiedenster Tools, die man immer wieder bei der Webentwicklung braucht. Hier wird kein großes Geheimnis gelüftet oder irgend ein Super-Tool vorgestellt, daher ist er wohl vor allem für Einsteiger nützlich. Streng genommen habe ich dies nicht heute gelernt, sondern im Laufe der letzten Jahre … aber egal …

Da die Menge der nützlichen Tools für Webentwickler so umfangreich ist, werde ich die Tools in einer Reihe unterschiedlicher Beiträge vorstellen. Der erste Teil behandelt Validatoren für Webseiten. Diese Reihe erhebt selbstverständlich keinen Anspruch auf Vollständigkeit. Wenn ich ein besonders wichtiges Tool vergessen habe, freue ich mich über Anmerkungen, Kommentare und Anregungen.

Validatoren

Die Benutzung von Validatoren sollten jedem Webentwickler zur Gewohnheit werden. Mit diesen Tools kann man die Qualität des Codes überprüfen, den man gerade fabriziert hat. Je weniger Fehler geschmissen werden, desto maschinenlesbarer ist der Code.

Die Crux der Cross-Browser-Kompatibilität lässt es leider nicht immer zu, hundertprozentig korrekten Code zu schreiben und das obwohl die Document Type Declaration (DTD) eigentlich genau dazu da sein soll, dass Maschinen wissen, wie sie mit dem nun folgenden Inhalten umzugehen haben. Nichtsdestotrotz sollte man natürlich ständig bemüht sein, möglichst sauberen Code zu schreiben. Das mag auch Google!

HTML Validierung

Bevor man seinen HTML-Code validieren lässt, sollte man sich Gedanken darüber gemacht haben, welchen DTD man verwenden möchte. Die gängigsten sind HTML 4.01 und XHTML 1.1. Beide gibt es jeweils in den Formen Strict, Transitional und Frameset. Weitere Infos zum Thema DTD gibts in bei w3schools, Wikipedia und SelfHTML(deutsch).

  • W3C HTML Validator
    Dieser Validator überprüft, ob der HTML-Code die Regeln des zuvor definierten DTD einhält, der Code also gemäß der Regeln valide (gültig) ist. Falls Fehler gefunden werden gibt der Validator die Zeile im Dokument an, die den Fehler verursacht hat und markiert das entsprechende Element rot. Wenn man sehr viele Fehler hat, sollte man nicht gleich erschrecken. Oft passiert es, dass der Validator durch einen Fehler in einen Status versetzt wird, in dem er den nachfolgenden Code nicht mehr vernünftig analysieren kann. In einem solchen Fall sollte man einfach den ersten gefunden Fehler beseitigen. Die Folgefehler sollten dann anschließend sich in Wohlgefallen auflösen.
  • W3C CSS Validator
    Dieser Validator überprüft, ob der CSS-Code valide ist. Man kann entweder direkt ein zu überprüfendes CSS File angeben, oder aber einfach eine URL einer Webseite angeben. Bei letzterer Methode sucht sich der Validator selbstständig das zugehörige CSS File zum analysieren. Besonders praktisch sind beim CSS Validator die Warnungen. Hier erkennt man unter anderem auch doppelt definierte Eigenschaften, so dass sich dieser Validator wunderbar dazu eignet überflüssige Deklarationen ausfindig zu machen.

Die beiden vorgestellten Validatoren werden für die meisten Webentwickler ausreichend sein. Bei W3Schools gibt es aber noch weitere Validatoren für XML, XHTML und WML Dateien. Selbstverständlich gibt es noch zuhauf andere Validatoren von unterschiedlichen Anbietern, die aber auch nicht mehr bieten, als die hier vorgestellten.

Things I learned today

Hallo zusammen!

Dieses Blog dient vor allem als Dump für Dinge die ich in im Laufe  meiner Tätigkeiten so dazu gelernt habe. Erster Linie soll es ein Nachschlagewerk für sein, wie ich diverse technische Probleme gelöst habe. Die Themen werden daher wohl stark informatiklastig sein, werden sich aber nicht notgedrungen auf das Gebiet der Informatik beschränken. Hauptsächlich werden hier vermutlich Informationen über Linux, Debian, Netzwerke oder Adminstration im Allgemeinen zu finden sein. Ebenso wird man vermutlich regelmäßig Infos zu Ruby on Rails (ROR), PHP, HTML, CSS, AJAX, SEO, Facebook Development und anderes Webgedöns finden. Eventuell gibts auch ab und zu Beträge über Startups oder Existenzgründung, da ich gerade an meiner Selbstständigkeit arbeite.

Wie gesagt ist das Blog in erster Linie für mich, damit ich nachgucken kann, wie ich diverse Dinge mal gemacht habe. Aber wenn der ein oder andere hier nützliche Informationen findet, freut mich das natürlich auch.