Auf der Suche nach einem fremden Programmierfehler war für mich das bin-log von MySQL nützlich.  Im Verzeichnis /var/lib/mysql, wo auch die Datenbanken liegen, finden sich bei mir mehr als fünfzig Dateien mit fortlaufender Nummerierung der Art mysql-bin.000001 . Dies Dateien beinhalten alle auf dem System ausgeführten SQL-Befehle, also alle Inserts, Updates und dergleichen. Die Inhalte können mit dem Programm mysqlbinlog ausgelesen werden.

mysqlbinlog --database=DBX25631 mysql-bin.000049

Hier werden konkret alle Zugriffe auf die Datenbank DBX25631 ausgegeben, die sich in der Datei mysql-bin.000049 befinden. Datum und Uhrzeit finden sich auch in der Ausgabe:

# at 487195020
#120610 19:59:36 server id 1  end_log_pos 487195168     Query   thread_id=468274        exec_time=0     error_code=0
SET TIMESTAMP=1339351176/*!*/;
INSERT INTO `jos_acajoom_xonfig` VALUES ('date_update', '2011-08-15 14:54:54', 0)
/*!*/;

Mit diesen Informationen hat man eine Chance fehlerhafte Zugriffe zu erkennen.

Leider werden die Dateien sehr groß (je 1GB) und ihre Zahl scheint nicht beschränkt zu sein (die Stellenzahl lässt mich erschrecken).

Im Abschnitt [mysqld] der Konfigurationsdatei /etc/my.conf lässt sich die Lebensdauer der Logdateien beschränken, im Beispiel auf  90 Tage.

expire_logs_days = 90

Das sollte den Speicherplatzbedarf deutlich reduzieren.

 

Nach längerer Vorbereitungszeit habe ich jetzt mein Evolution von POP3 auf IMAP-Nutzung umgestellt. Die Umstellung war eigentlich ganz einfach, ich habe einfach unter Einstellungen für mein Standard-Postfach unter Abrufen von E-Mails statt POP in der Drop-Down-Liste IMAP ausgewählt. Seitdem gibt es nun zwei Gruppen von Ordnern, einerseits die POP-Ordner unter Auf diesem Rechner und die neuen IMAP-Ordner unter Uwe@meine-maildomain.de. Nun kann ich meine Mails aus den alten Ordnern einfach in die neuen Ordner kopieren, wodurch mir auch meine alten Mails jetzt unter IMAP zur Verfügung stehen. Das dauert zwar etwas, ich habe auch etwa 4GB alte Mails, aber einfacher kann es kaum sein.

Womit ich etwas Probleme hatte sind die Mail-Filter. Ich habe die alle so verändert, dass sie die neu erstellten Ordner als Ziel nutzen, das hat aber nicht automatisch funktioniert. Ich musste erst unter den Einstellungen des IMAP Kontos auf Empfangsoptionen klicken und dort ein Häkchen setzen bei: „Filter auf neue Nachrichten in INBOX dieses Servers anwenden“.

Seit einiger Zeit bin ich dabei mir Webfonts zu experimentieren. Damit kann man endlich die Gestaltung von Webseiten unabhängig vom Betriebssystem des Betrachters halten. Wie so oft ist auch hier Google dabei kostenlos Unterstützung zu bieten mit den Google Web-Fonts.

Die Fonts kann man relativ leicht aktivieren, so dass sie dann vom Google-Server geladen werden. Man kann sie aber auch herunterladen und auf einem eigenen Server ablegen, dann muss man etwas mehr Aufwand treiben. Hier im Blog habe ich mir das recht einfach gemacht und das Plugin WP Google Fonts installiert, über das ich die Fonts aus einer Dropdown-Liste auswählen kann.

Weitere Informationen finden sich auf einer Reihe von interessanten Webseiten:

es gibt noch viel mehr Fonts, als die von Google:

Für meine Schule haben wir eine Reihe von Netbooks des Modells Acer Aspire One Happy gekauft. Sehr bunte Geräte, auf denen auch Ubuntu sehr schön läuft.

Was aber leider Probleme bereitet ist die Software für die LEGO NXT-Geräte. Die Bildschirmauflösung bleibt auf 1024×768 eingestellt, auch wenn der Monitor nur 1024×600 darstellen kann. Dummerweise fehlen dann gerade die Kontexteinstellungen, die sich im unteren Bereich des Bildschirms befinden.

Auf der Seite http://www.teamhassenplug.org/NXT/NXTGAdditions.html wird ein Add-in angeboten, welches aus den Kontextmenüs ein Popup macht. Das funktioniert im Prinzip auch, nur dass die Bezeichnungen auf Englisch sind. Ich konnte aber leider keine Möglichkeit finden für die Wiederholungen und die Fallunterscheidungen die Einstellungen vorzunehmen. Damit ist das Tool zumindest für mich nicht einsetzbar.

Eine andere Lösung besteht darin die Bildschirm-Auflösung auf 1024×768 einzustellen, auch wenn das Display dann interpolieren muss. Leider lässt Windows7 diese Einstellung nicht zu. Unter http://www.myasuseee.com/increase-your-screen-resolution-with-this-windows-7-hack/ habe ich dann eine Anleitung für einen Registry-Hack gefunden, der zumdest auf Rechnern mit Intel-Grafik funktioniert.

Man muss also nur regedit starten und dann nach folgendem Schlüssel suchen:

‘Display1_DownScalingSupported’

Hier muss man den vermutlich vorhandenen Wert ‚0‘ auf ‚1‘ abändern. Bei mir tauchte der Schlüssel fünf mal auf. Wenn alle Einstellungen korrigiert sind, dann muss man den Rechner rebooten und danach stehen weitere Bildschirmauflösungen zur Auswahl, z.B. 1024×768.

Die Anzeige ist nicht wirklich schön, aber es funktioniert.

 

 

Ruft man unter Linux mit dem Firefox eine Youtube-Seite auf, so wird das Video im Dateisystem temporär gespeichert. Lange Zeit konnte man die zugehörige Datei im Verzeichnis /tmp finden. Sie wurde erst beim Schließen des Browser-Fensters gelöscht. Seit einiger Zeit hat sich das Verhalten, zumindest bei Ubuntu, deutlich verändert.

Die Datei wird zwar im /tmp -Verzeichnis angelegt, aber gleich wieder glöscht. Dafür kann man sie im Cache-Verzeichnis des Firefox finden.

Es gibt jetzt also zwei Möglichkeiten an die Flash-Datei zu kommen (die entsprechenden Informationen habe ich unter http://sartoo.de/articles/update–flash-videos-werden-nicht-mehr-unter–tmp-gespeichert.html gefunden):

1. Cache-Verzeichnis

Der Firefox legt die gecachten Dateien im Home-Verzeichnis des Benutzers ab und zwar unter:

~/.mozilla/firexox/<kryptische zeichenkette>.default/Cache/

Die kryptische Zeichenkette ist für jeden Benutzer verschieden. Für das Video http://www.youtube.com/watch?v=qFCj0FJ7Ia4 finde ich hier folgenden Eintrag, wenn das Video vollständig geladen wurde:

-rw-------  1 debacher debacher 11931147 2011-07-09 17:06 A2E8FC60d01

als Dateiname dient hier eine wohl zufällige Zeichenkette. Im Nautilus-Browser wird beim Anzeigen des Verzeichnisses ein Vorschaubild angezeigt.

2. /tmp/Verzeichnis

Im Verzeichnis /tmp ist die Datei zwar gelöscht, sie ist aber vom Flash-Player geöffnet und solange sie geöffnet ist kann man ihren Inhalt auch wieder aktivieren. Dazu muss man erst einmal mittels lsof den Dateinamen bestimmen:

lsof  +aL1 /

zeigt alle Dateien an, die zwar geöffnet sind, aber weniger als einen Dateilink besitzen, genau so etwas suchen wir:

COMMAND    PID     USER   FD   TYPE DEVICE SIZE/OFF NLINK NODE NAME
plugin-co 7275 debacher   16u   REG    8,6 11931147     0 8927 /tmp/FlashXXwFVrmk (deleted)

Man sieht hier die gleiche Dateigröße wie im Cache-Verzeichnis, aber einen etwas sprechenderen Namen. Diese Datei kann man nun aus dem /proc-Dateisystem restaurieren:

 cat /proc/7275/fd/16 > /tmp/FlashXXwFVrmk

Dabei entspricht die 7275 hier der PID aus der lsof-Anzeige und die 16 ist der numerische Teil der FD. Der Dateiname des Ziels ist eigentlich beliebig, muss nicht mit dem Originalnamen übereinstimmen.

 

Das Backend von Typo3 sieht in den Seiteneigenschaften mehrere Felder für Meta-Informationen vor. Will man die Einträge auch in die Seite eingebunden haben, so muss man das Template entsprechend anpassen. Folgender Typoscript-Code leistet das (hier als Beispiel die Version meiner Schule):

page.meta{
 keywords.field = keywords
 keywords.ifEmpty (
   Stadtteilschule, Richard-Linde-Weg, Lohbrügge, Bergedorf, Hamburg, Bildung, Medien
 )
 description.field = description
 description.ifEmpty (
   Stadtteilschule Richard-Linde-Weg
 )
}

Wenn in das jeweilige Feld ein Eintrag gemacht wurde, dann wird dessen Inhalt genommen, ansonsten der Default-Eintrag hinter der ifEmpty Bedingung.

Es gibt noch ein drittes Feld namens Inhaltsangabe, dass kann man unter der Bezeichnung abstract erreichen.
Ein Alternative zu diesem Ansatz sollen folgende Zeilen bilden:

page.meta.keywords = Stadtteilschule, Richard-Linde-Weg, Lohbrügge, Bergedorf, Hamburg, Bildung, Medien
page.meta.keywords.override.field = keywords 
page.meta.description = Stadtteilschule Richard-Linde-Weg
page.meta.description.override.field = description

In manchen Netzwerke sind alle Ports gesperrt. Aber die Ports 80 und meist auch 443 sind zumindest über einen Proxy erreichbar. Diese Situation kann man ausnutzen, um trotzdem über eine OpenVPN-Verbindung eine Zugriff auf alle Dienst zu ermöglichen.

Man benötigt hierfür aber einen Rechner, der außerhalb des gesicherten Netzwerkes steht und ständig erreichbar ist. Notfalls reicht aber auch ein heimischer Rechner mit einer DynDNS-Adresse. Auf diesem Rechner erfolgt die Serverkonfiguration von OpenVPN, auf dem Arbeitsplatzrechner im abgeschotteten Netz die Client-Konfiguration.

Ich bin im Prinzip lediglich der Anleitung unter http://wiki.ubuntuusers.de/openvpn gefolgt. Die Beschreibungen gehen davon aus, dass OpenVPN bereits installiert ist.

Auf dem Server

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
sudo gunzip /etc/openvpn/server.conf.gz
sudo cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa2

Damit werden die Beispieldateien in den Konfigurationsordner von OpenVPN kopiert.

Nun wechselt man in den neuen Ordner easy-rsa2:

cd /etc/openvpn/easy-rsa2

und editiert dort die Datei vars

export KEY_COUNTRY=DE
export KEY_PROVINCE=NRW
export KEY_CITY=Düsseldorf
export KEY_ORG=”Vpntest”
export KEY_EMAIL=”onlyspam@myhomepage.net”

Diese Werte passt man an die eigenen Gegebenheiten an.

Dann kann man aus dem Verzeichnis easy-rsa2 heraus mit folgenden Schritten die Schlüssel erzeugen:

sudo mkdir keys
source ./vars
sudo -E ./clean-all
sudo -E ./build-ca
sudo -E ./build-key-server server
sudo -E ./build-key meinclient
sudo -E ./build-dh

Hierdurch werden im Verzeichnis keys die notwendigen Schlüssel erzeugt.Von den dort angelegten Dateien müssen drei später zum Client-Rechner kopiert werden:

  • ca.crt
  • meinclient.crt
  • meinclient.key

Jetz muss man noch die Server-Konfigurationsdatei anpassen, die wir nach /etc/openvpn kopiert haben. Da die Datei 300 Zeilen lang ist, hier nur die veränderten Zeilen:

# Which TCP/UDP port should OpenVPN listen on?
# If you want to run multiple OpenVPN instances
# on the same machine, use a different port
# number for each one.  You will need to
# open up this port on your firewall.
;port 1194
port 443

# TCP or UDP server?
proto tcp
;proto udp

...

# Any X509 key management system can be used.
# OpenVPN can also use a PKCS #12 formatted key file
# (see "pkcs12" directive in man page).
ca ./easy-rsa2/keys/ca.crt
cert ./easy-rsa2/keys/server.crt
key ./easy-rsa2/keys/server.key  # This file should be kept secret

# Diffie hellman parameters.
# Generate your own with:
#   openssl dhparam -out dh1024.pem 1024
# Substitute 2048 for 1024 if you are using
# 2048 bit keys.
dh ./easy-rsa2/keys/dh1024.pem
...

Wichtig ist hier vor allem die Wahl des Ports 443, damit man durch den Proxy kommt und auch das Protokoll TCP, sowie die Pfade zu den Schlüssel-Dateien.

Mit einem Neustart werden die Einstellungen aktiv:

sudo /etc/init.d/openvpn restart

Client

Wenn der Server läuft, dann geht es an die Client-Konfiguration.Zuerst wird wieder eine Besipieldatei kopiert, jetzt die client.conf.

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/

Im nächsten Schritt werden jetzt die drei Schlüsseldateien (s.o.) vom Server kopiert, einfach in das Verzeichnis /etc/openvpn.

Nun muss noch die Datei client.conf angepasst werden:

# Are we connecting to a TCP or
# UDP server?  Use the same setting as
# on the server.
proto tcp
;proto udp

# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote stern.lokales-netz.de 443
...
# SSL/TLS parms.
# See the server config file for more
# description.  It's best to use
# a separate .crt/.key file pair
# for each client.  A single ca
# file can be used for all clients.
ca ca.crt
cert meinclient.crt
key meinclient.key

Nunkann man die Verbindung testweise aufbauen mittels:

openvpn /etc/openvpn/client.conf

Wenn in der Datei /etc/default/openvpn die Zeile

AUTOSTART="none"

steht, dann muss die Verbindung per Hand aufgebaut werden, bei

AUTOSTART="all"

wird sie beim Systemstart automatisch aufgebaut. Nach der Konfiguration kann man per

sudo /etc/init.d/openvpn restart

einen Neustsart auslösen.

Heute tauchte das Problem auf, dass ich einen fertig konfigurierten Server bei mir im Hause testen wollte, unter Nutzung seiner eigenen IP. Mein häuslicher Server hat aber nur noch eine Netzwerkkarte (eth0) und ist auf die IP-Adresse 192.168.1.1 konfiguriert. Der andere Rechner hat eine IP-Adresse von z.B. 143.100.122.200 und ein Gateway von 143.100.122.254.

Also habe ich meinem Rechner virtuell die Gateway-IP gegeben:

ifconfig eth0:1 143.100.122.254

damit ist dann mein Rechner von dem fremden Rechner aus erreichbar, aber nicht das Intenet. Dazu muss man das Forwarding überhaupt aktivieren mittels:

echo 1 > /proc/sys/net/ipv4/ip_forward

Jetzt fehlt nur noch die iptables Regel:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

eventuell vorhandene Regeln muss man vorher löschen.

Die Website meiner Schule ist unter mehreren Domains erreichbar. Das gibt Probleme mit dem Google API-Key und  pit_googlemaps. Die Extension sieht die Nutzung mehrerer Keys nicht direkt vor. Das Problem ist aber über das Setup im Template ganz einfach lösbar, indem man folgenden Code am Ende anfügt:

[globalString = ENV:HTTP_HOST = *schulerlw.de]
 plugin.tx_pitgooglemaps_pi1.googleAPIKey = ABQIAAAAQ4awX-q5a_T3PuHs7qabUxTeO06x_derRestistgeheim
[globalString = ENV:HTTP_HOST = *richard-linde-weg.de]
 plugin.tx_pitgooglemaps_pi1.googleAPIKey = ABQIAAAAQ4awX-q5a_T3PuHs7qabUxTeZaE-derRestistgeheim
[GLOBAL]

Damit sucht sich Typo3 den Key aus, der zur jeweiligen Domain passt.

Ich musste leider feststellen, dass sich diese beiden Extensions nicht ohne weitere Änderungen miteinander vertragen. Der Effekt besteht darin, dass perfectlightbox aus irgendeinem Grund versucht die Sitemap als Grafik zu laden. Eine einfache Lösung habe ich unter http://wowa-webdesign.de/typo3/typo3-tutorial-teil-41-inhalte-anlegen-sitemap/ gefunden.

Man geht einfach im Konstanten-Editor auf die Kategorie  PERFECTLIGHTBOX(27) und wählt dort den ersten Punkt Which Javascript Librarys to use? aus und stellt von protaculous auf mootools um.

Schon vertragen sich die Extensions.

Dabei ist mir aufgefallen, dass es unter http://wowa-webdesign.de/typo3-kurs/ mehr als 60 Folgen eines Typo3-Kurses gibt.