Asciiflow

Schnell mal ein Diagramm in eine Mail zu packen geht dank Anhängen, relativ problemlos. Aber es geht auch eleganter. So könnte man zum Beispiel die Webapplikation „Asciiflow“ benutzen. Mit dieser Webapplikation ist es ohne Probleme möglich Flussdiagramme zu erstellen

Asciiflow in Aktion

Asciiflow in Aktion

Die einstehenden Diagramme können dabei sowohl importiert als auch exportiert werden. Daneben gibt es einige Werkzeug, sowie eine Unde und Redo Funktionalität. Zu finden ist Asciiflow dabei unter http://www.asciiflow.com/ zu finden.

Atlas selbst gebaut

Es scheint Webapplikationen für so ziemlich jedes denkbare wie undenkbare Problem zu geben. Eine der interessanteren Applikationen ist sicherlich „Field Papers“ welcher unter http://fieldpapers.org zu finden ist.

Ein Atlas wird erstellt

Ein Atlas wird erstellt

Der Dienst ist dafür gedacht, für bestimmte Gebiete Karten auszudrucken, welche wahlweise mit einem Notizbereich ausgestattet sind. Diesen kann man dann dazu nutzen um z.B. beim Mapping für OpenStreetMap neue Informationen anzutragen. Neben dem Open Street Map Material benutzt der Dienst auch die Bing Luft- und Satellitenbilder, welche in unterschiedlichster Weise für die zu entstehende Karte kombiniert werden können.

Piwik 1.9.2, die Backdoor und deren Entfernung

Wie Heise berichtet, ist die aktuelle Version von Piwik (1.9.2) mit einer Backdoor versehen. Augenscheinlich fand die Infektion gestern, nach 15:18 Uhr statt, Updates welche vorher eingespielt wurden, sollten nicht betroffen sein.

Erkennen kann man eine infizierte Version an der Zeichenkette:

eval(gzuncompress(base64_decode

Sollte diese Zeile in der Piwik Installation auftauchen so sollte man folgende Schritte durchführen:

  • die Datei „piwik/core/DataTable/Filter/Megre.php“ löschen
  • aus der Datei „piwik/core/Loader.php“ die letzten sechs Zeilen löschen (beginnend mit „<?php Error_Reporting(0)“)
  • die Piwik Installation nach Dateien durchsuchen, welche nicht zu Piwik gehören und diese entfernen

Alternativ kann man das ganze neu installieren, mit der entsprechenden Github Version welche unter https://github.com/piwik/piwik/archive/1.9.2.zip zu finden ist.

Update:
Mittlerweile gibt es bei Piwik einen Sicherheitsbericht in welchem unter anderem steht das die Versionen von 16:43 Uhr bis Mitternacht kompromittiert sind.

Update (2):
Die im Sicherheitsbericht empfohlene Säuberung sieht so aus:

  • „piwik/config/config.ini.php“ sichern
  • „piwik/“ Verzeichnis löschen
  • neuste Piwikversion herunterladen
  • auf den Server hochladen
  • „config.ini.php“ wieder in den Ordner „piwik/config/“ packen

Danach ist die Piwik Installation wieder sauber.

Weitere Informationen gibt es unter:
http://forum.piwik.org/read.php?2,97666
http://www.golem.de/news/webanalyse-backdoor-in-piwik-1211-95956.html

gettext und PHP

Bei einer multilingualen Webapplikation welche in PHP geschrieben ist, kann man natürlich zur Übersetzung mit assoziativen Arrays arbeiten und dann je nach Sprache die richtige PHP Datei einbinden.

$lang['welcome'] = 'Willkommen auf dieser Webseite.';
$lang['maintenance'] = 'Die Webseite befindet sich in der Wartung.';

Das Problem an dieser Variante ist, das sie nicht wirklich gut zu pflegen ist. Schöner ist es das ganze mit gettext zu übersetzen, da man hier nur die po Dateien übersetzen muss, und man das nicht im Quelltext tun muss.

Das Problem an dieser Variante ist allerdings, das nicht auf jeden Webserver gettext vorhanden ist. Hier hilft das Paket php-gettext welches unter https://launchpad.net/php-gettext/ zu finden ist. Mit Hilfe dieses Paketes, kann man gettext nutzen ohne sich darum kümmern zu müssen ob es installiert ist. php-gettext wrappt das ganze und emuliert nicht vorhandene Funktionen.

Das ganze zu benutzen ist auch relativ einfach:

 //gettext initialisieren
 $locale = "de_DE"; //Sprache definieren
 $domain = 'default'; //Domäne definieren
 $encoding = 'UTF-8'; //Zeichenkodierung definieren

 //include gettext
 require_once('./ext/php-gettext/gettext.inc');

 //Sprache setzen
 T_setlocale(LC_MESSAGES, $locale);

 //Pfad zu den Übersetzungen definieren
 T_bindtextdomain($domain, './locale/');

 //Zeichenkodierung setzen
 T_bind_textdomain_codeset($domain, $encoding);

 //Domäne setzen
 T_textdomain($domain);

Nachdem dies getan ist, kann damit begonnen werden die Texte in der Anwendung zu übersetzen. Dabei wird aus einem:

echo 'Willkommen auf dieser Webseite.';

ein:

echo T_('Willkommen auf dieser Webseite.');

T_ ist dabei der Name der Übersetzungsfunktion welche von php-gettext bereitgestellt würden. Unter reinem gettext würde diese Funktion nur _ heißen. Nachdem man seinen Quelltext mit den entsprechenden Funktionen bestückt hat muss man diese Strings aus den PHP Dateien extrahieren. Da man das nicht von Hand machen möchte nutzen wir dazu folgendes kleines Skript:

 #!/bin/sh

 #Schreibe alle PHP Dateien in eine Textdatei
(find ./data -name "*.php" && find ./system -name "*.php") > update-translations.txt

 #Rufe xgettext auf um die pot Datei zu erzeugen
 xgettext -f update-translations.txt -kT_ngettext:1,2 -kT_ --language=PHP -o update-translations.pot

Mit dieser pot Datei kann mittels PoEdit (http://www.poedit.net/) eine po Datei erzeugt werden. Diese po Dateien können auch wieder mittels der pot Datei aktualisiert werden, falls später neue Strings dazu kommen oder verschwinden. Beim speichern generiert PoEdit aus der po Datei eine mo Datei, bei welcher es sich um die binäre Representation der po Datei handelt. Diese mo Datei wird von gettext letztendlich zur Übersetzung genutzt.

Weitere Informationen gibt es unter:
http://phpmagazin.de/itr/online_artikel/psecom,id,874,nodeid,62,_language,de.html
http://blog.medianetix.de/2008/12/ubersetzung-von-quelltexten-mit-gettext-und-poedit/