Wacom Bamboo Touch

Zur Entlastung der rechten Maushand war ich auf der Suche nach einem geeigneten Eingabegerät, das zusätzlich links der Tastatur positioniert, das Surfen im Internet und ähnliches unterstützen würde. Hierfür käme vermutlich nur ein separates Trackpad oder ein Trackball infrage. Das Angebot an Trackballs ist leider sehr übersichtlich. Hersteller wie Logitech, Kensington und zwei, drei weitere Spezialanbieter, zum Teil ohne Vertretung in Deutschland. Bei der alternativen Suche nach einem externen Touchpad stieß ich auf den Namen Wacom. Der größte Hersteller von Grafiktabletts seit über 25 Jahren. Das sollte ein Garant für Funktionalität und Praktikabilität sein. Wacom bietet gegenwärtig in seiner Serie Bamboo Geräte mit Touch und wahlweise kombinierter Pen Funktion an. Da ich nicht zeichnen möchte, bot sich das kleinste System der Familie an, das Wacom Bamboo Touch. Die Sensorfläche würde eine Größe von ca. 12 mal 8 Zentimetern haben und böte somit eine gute Relation zwischen vorhandener Fläche, Zeigergeschwindigkeit und -beschleunigung, um ein angenehmes, individuell abgestimmtes Arbeiten zu ermöglichen. Für den ungeduldigen Leser an dieser Stelle erklärt: Das Wacom Bamboo Touch enttäuschte auf ganzer Linie.

Wacom-Bamboo-Touch
Ruckelt auch mit ruhiger Hand

Die Verpackung des Geräts hätte genügend Stoff für einen eigenständigen Unboxing Clip gehabt. Das hatte dann allerdings die spätere Rückgabe des Teils auch etwas erschwert. Das USB-Kabel war hier mit 150 cm keinen Zentimeter zu lang. Die vier konfigurierbaren Tasten auf der schmaleren Kabelausgangseite hatten zwar einen guten Druckpunkt, waren aber in schwarzem Hochglanz (Klavierlack) ausgelegt. Am meisten enttäuschte die Sensorfläche selbst. Sie hatte die Haptik eines feinen, schwarzen, auf Resopal geklebten Blattes Papier. Benutzungsspuren darauf waren schon nach wenigen Tagen sichtbar.

Um einige Gestenfunktionen nutzen zu können, mußte die auf CD beigefügte Software installiert werden. Hier sollte sie auf Windows 7 Professional laufen. Die Installation von ca. 20 MB – hier wird wohl ein Softwarepaket für alle Tabelettarten genutzt – dauerte einige Minuten, danach landete man automatisch in dem eigentlich gut gedachten aber fehlerhaften Lernprogramm. Nach dessen Abbruch und der Beendigung der Installation mußte man zusätzlich feststellen, daß sich auch noch die Konfiguration des Acrobat Readers verstellt hatte! Ein Update des Wacom Treibers ist anzuraten. Im Zuge des Treiber-Downloads und einem kurzen flüchtigen Blick in das Bamboo Forum, ließ die Ahnung aufkommen, daß es sich bei der Fülle der Einträge vermutlich nicht ausschließlich um Danksagungen handeln würde

Nach dem Update, das auch die zuvor installierten Lernprogramme und Hilfen eigenständig wieder entfernte, gab die eigentliche Konfiguration keine Rätsel mehr auf. Benötigt wurden für die tägliche Arbeit die Gesten für horizontales und vertikales Scrollen und Tip-Ziehen. Bei jedem Neustart ist die Sensorik des Pads und auch die Tastenbelegung ohne Treiberunterstützung grundsätzlich rechtshändisch ausgelegt. Nach dem Login funktionierte in dieser Hinsicht jedoch alles wie es erwartet wurde. Unerwartet war aber, daß sich der Mauszeiger nicht ruckfrei und scheinbar auch nicht geradlinig über den Bildschirm bewegen ließ. So wurde das Anpeilen und Treffen insbesondere von Radiobuttons oder Checkboxen zum Geduldspiel. Dies hatte mit mangelnder Übung nichts mehr zu tun. Die Geste Tip-Ziehen funktionierte, zumindest mit linkshändischer Konfiguration, überhaupt nicht. Schlimmer war allerdings das Scrollen. Einige Applikationen wollten überhaupt nicht scrollen, weder vertikal noch horizontal. Firefox zum Beispiel ließ sich nur vertikal scrollen. Unangenehmer war die Situation im IE 9 (64-bit Edition). Hier wurden vertikale und horizontale Scrollbewegungen simultan ausgeführt. Das heißt, der Fensterinhalt bewegte sich dann bei dieser Zwei-Finger-Geste unweigerlich gleichzeitig, sowohl in X- und Y-Richtung. Dieser Effekt braucht nicht weiter kommentiert zu werden.

Sicher kann so ein Touch-Pad eine sinnvolle Unterstützung sein und eine wirksame Entlastung der dominanten Hand bewirken. Auch wenn die Feinmotorik der jeweils anderen Hand schwächer ausgebildet sein sollte, stellt ein Touch-Pad in dieser Hinsicht keine wirkliche Herausforderung dar. Um so enttäuschender ist es, daß ein renommiertes Unternehmen wie Wacom nicht einmal die Basisfunktionalität befriedigend darstellen kann. Ein vorheriger Blick in die Wacom Foren hätte rechtzeitig Warnung sein können. Dort sind, von Usern geschildert, all diese Unzulänglichkeiten nachzulesen.
rh2011-08-007

Firefox 3.6 schon veraltet

Seit Wochen signalisieren die beiden WordPress Installationen, beim Web-Hoster und auf dem heimischen Server, den Bedarf eines Updates von der Version 3.1.3 auf 3.2.1. So groß würde der Unterschied wohl nicht sein, aber über einige Unstimmigkeiten wurde schon in den einschlägigen Internet-Foren berichtet. Echte Innovationen, neue Features und schlichte Bugs, die Grenzen scheinen allgemein immer mehr zu verschwimmen. Also erst einmal nachsehen, was sich wirklich geändert hat. Zunächst wird die lokale Installation einem manuellen Update unterzogen, Dateien hin und her kopiert, …/upgrade.php, klick und fertig. Nach dem ersten Start von WordPress springt dem Betrachter ein senffarbener Störer mit der Aufdringlichkeit einer Reklame für Big-Mac plus Cola und Pommes gratis ins Auge.

Eingeschränktes Nutzungserlebnis möglich
Eingeschränktes Nutzungserlebnis möglich

Auf der visitenkartengroßen Fläche ist zu lesen, daß der installierte Web-Browser Firefox veraltet sei. Was bitte bedeutet veraltet? Außerdem bedeutet alt nicht zwangsläufig auch schlecht.

Dann muß Firefox also auch ein Update erhalten. Tatsächlich gibt es eine Auffrischung von der Version 3.6-Punkt-irgendetwas auf 3.6.18. Wie sich aber herausstellen wird, geht es im Kern um einen vollständigen Generationswechsel auf die Version 5 des beliebten Browsers. Nach dem kleinen Update und dem obligatorischen Neustart von Firefox 3.6.18, erscheint zum einen der Hinweis auf das neue Firefox 5, aber auch die Mahnung den Adobe Flash Player zu aktualisieren. Andernfalls könne Firefox eine reibungslose Arbeit nicht garantieren. Also noch ein Update.

Der Web-Browser Firefox 3.6 wurde Anfang 2010 und die Version Firefox 5.0 im Juni dieses Jahres veröffentlicht. Es handelt sich bei dem grellen Hinweis vermutlich mehr um schlecht gemachte Werbung für Firefox als um eine systemisch technische Anforderung. Wenn Werbung notwendig oder gewünscht ist, dann sollte das offen als werbliche Kommunikation dargestellt werden. Sollten hingegen die Anforderungen von WordPress an einen Browser derart hoch geschraubt worden sein, dann lägen die Probleme in der Entwicklung von WordPress selbst.

Betrachtet man die Methoden von Google, seinen Browser Chrome durchzusetzen, tritt erstaunliches zu Tage. Bei einem Update von Adobes Flash Player ist die Installationsoption von Google Chrome ebenso vorbesetzt, wie zum Beispiel beim Download des Systemtools CCleaner.

CCleaner empfiehlt Google Chrome
CCleaner empfiehlt Google Chrome

CCleaner ist ein hervorragendes Programm, aber wie stellt man schlüssig die Verbindung zu einem Web-Browser her? Erfreulich ist, daß noch Abwahlmöglichkeiten vorhanden sind. Es bleibt aber eine Frage der Zeit sein, wann so etwas als normaler Beifang einfach ungefragt mitgeladen wird.

Der irritierte User kann in der WordPress-Situation zwei Dinge tun. Er kann einfach blind auf Firefox 5 upgraden und alles ist wahrscheinlich gut. Oder er bedient WordPress 3.2.1 zunächst einmal weiter mit Firefox 3.6.18, bewertet sein persönliches Nutzungserlebnis, wie es auf dem Werbeschildchen so schön heißt, und beurteilt dann, ob eine Browser-Erneuerung angebracht wäre. Das ganze vorzugsweise zunächst auf einer Testinstallation.
rh2011-08-004

WordPress: Artikel umhängen

Wenn die Notwendikeit besteht, Artikel einem anderen Benutzer zuzuordnen, weil man zum Beispiel über Monate hinweg neue Artikel als Administrator verfaßt hat, und nun erkennt, daß /wp_admin/ zum festen Bestandteil der URL der Autoren geworden ist, kann man diese Anpassungen direkt in der Datenbank vornehmen.

Bei der Neuanlage eines Benutzers, zum Beispiel als Redakteur, fällt auf, daß die E-Mail-Adresse nicht doppelt vorkommen darf. Die weiteren Schritte sind selbsterklärend. Ein neuer Benutzer wird in der Tabelle wp_users mit einer neuen ID hinterlegt. Diese IDs werden in den Tabellen wp_posts vollständig und wp_postmeta teilweise referenziert. Zunächst kann man sich sehr einfach einen Überblick über die verschiedenen Post-Typen und Post-Stati der Tabelle wp_posts verschaffen:

Abfrage:

SELECT post_status, post_type, COUNT(*) AS 'Anzahl'
FROM wp_posts
GROUP BY post_status, post_type;

Ausgabe:

post_status post_type Anzahl  
auto-draft post 3  
inherit attachment 36  
inherit revision 10  
publish nav_menu_item 6  
publish page 5  
publish post 32  

Die echten, veröffentlichten Artikel verfügen also über die Merkmale »publish« und »post« und sollten in der Anzahl mit den tatsächlichen Posts übereinstimmen. Auch Einträge wie Seiten und Menus haben einen Benutzerbezug. Die Attachments sind die Bilder/Dateien aus der Mediathek.

In der Tabelle wp_postmeta wird neben der ID des Posts unter anderem der Benutzer festgehalten, der zuletzt einen Post modifiziert hat. Enthält das Feld wp_postmeta.meta_key den Schlüssel »_edit_last«, dann weist das Feld wp_postmeta.meta_value auf die ID des Benutzers. Die Systemrelevanz ist an dieser Stelle nicht klar, aber bei Änderungen in der Tabelle wp_posts sollten auch hier entsprechende Anpassungen vorgenommen werden. Ebenfalls unklar ist, ob auch die IDs der Datensätze für die Attachments in wp_posts umgelegt werden sollten.

Angenommen, alle Artikel/Posts wurden bisher vom Administrator (ID = 1) geschrieben und sollen jetzt an den neu erstellten Redakteur (ID = 2) umgehängt werden, dann würde das in zwei Schritten erfolgen. Die Feldinhalte wp_posts.post_author müssen auf die neue ID 2 eingestellt werden, sofern Post-Status und Post-Type auf »publish« und »post« stehen:

UPDATE wp_posts SET post_author = 2
WHERE post_author = 1 AND
(post_status = 'publish' AND post_type = 'post');

Als nächstes wird noch die Tabelle wp_postmeta angepaßt. Dies ist etwas aufwendiger, da nur die »_edit_last« Positionen korrigiert werden sollen, deren post_id auf einen Datensatz in der wp_posts zeigen, die die Post-Status und Post-Type Eigenschaften »publish« und »post« erfüllen. Zunächst erst mal nachsehen:

SELECT pome.* FROM wp_postmeta AS pome
LEFT JOIN wp_posts AS po ON pome.post_id = po.ID
WHERE pome.meta_key = '_edit_last' AND
pome.meta_value = '1' AND
po.post_status = 'publish' AND
po.post_type = 'post';

Wenn dieser SQL-Query das gewünschte Resultat geliefert hat, dann kann ein entsprechendes Update durchgeführt werden:

UPDATE wp_postmeta AS pome 
LEFT JOIN wp_posts AS po ON pome.post_id = po.ID
SET pome.meta_value = '2'
WHERE pome.meta_key = '_edit_last' AND
pome.meta_value = '1' AND
po.post_status = 'publish' AND
po.post_type = 'post';

rh2011-08-002

Daily PuTTY

Das Anfertigen einer Datensicherung wird meist völlig zurecht als störend empfunden. Es unterbricht oder hemmt den normalen Arbeitsablauf für Minuten oder sogar Stunden. Vielleicht überlegt man überdies zuvor noch einen Virencheck durchführen zu lassen, um zumindest eine saubere Kopie zu erzeugen. Dann dauert der ganze Prozeß nochmals länger. Und wann hat man jemals eine Datensicherung aufgrund von plötzlichem Datenverlust benötigt? Bisher wurde doch eine Sicherung mit anschließender Rücksicherung nur im Migrationsfall oder einem geplanten prophylaktischen HD-Tausch durchgeführt. Wie auch immer, Kopienahme der Datenbestände hat auch etwas beruhigendes.

Bei WordPress bezieht sich die Datensicherung auf zwei Bereiche. Da ist zum einen die MySQL Datenbank für WordPress mit seinen elf Tabellen (das entspricht der aktuellen WP-Standardinstallation). Dort werden die Artikel, Kommentare, Bezüge und strukturelle Daten abgelegt. Dieses Datenzentrum verdient natürlich sicherungstechnisch die höchste Aufmerksamkeit. An die Datenbank und seine Tabellen gelangt man mittels geeigneter MySQL-Clients. Das könnte zum Beispiel phpMyAdmin sein.

Der zweite Bereich betrifft die WordPress Installation. Eigentlich den variablen Teil davon. WordPress selbst ist ja jederzeit in der aktuellsten Version verfügbar und somit aus dem Stand wiederherstellbar. Individuelle Daten liegen aber beispielsweise in dem Ordner mit den eigenen Themen, und dem Ordner mit den sogenannten Multimedia-Daten. Für die Sicherung der gesamten WordPress Installation oder Teilen davon würde man zum Beispiel auf einen FTP-Client wie Filezilla zurückgreifen müssen.

Wie, was und wann man auch immer sichern mag, in der Regel benötigt man zwei verschiedene Abläufe und das ist für eine regelmäßige Datensicherung nicht gerade förderlich. Einige Web-Hoster bieten ihren Kunden einen SSH-Zugang (Secure Shell) zu ihrem reservierten Datenbereich an. Mittels eines geeigneten SSH-Clients kann man vom lokalen Arbeitsplatz auf den SSH-Server des Hosters und damit auf die eigenen Datenstrukturen und verfügbaren Programme zugreifen. Ein gut nutzbarer SSH-Client ist zum Beispiel PuTTY.

PuTTY selbst als GUI, bringt auch einige Kommandozeilen Tools mit, die es dem Anwender gestatten eine Sicherung beider Datenbereiche zusammenzufassen und über eine Batch-Datei (Windows) automatisiert ablaufen zu lassen. Hier zunächst exemplarisch der Aufruf von PuTTY auf der Kommandozeile eines Terminalfensters:

> c:\"program files (x86)"\putty\putty
  -ssh -P 22 -l ssh-user -pw ssh-password
  hostname_oder_ip

Die beiden Informationen zu ssh-user und ssh-password wurden natürlich zuvor vom Web-Hoster bekanntgegeben. An dieser Stelle sei ausdrücklich angemerkt, daß es selbstverständlich nicht state of the art ist, sich, wie in diesem Beispiel, durch die Mitgabe eines gewöhnlichen Paßworts beim Server zu authentifizieren. Richtig, weil sicherer, wäre die Public-Key-Authentifizierung mit privatem und öffentlichem Schlüssel. Aber das ist ein anderes Thema.

Mit dem vorstehenden PuTTY-Befehl hat man sich jetzt also erfolgreich in den Server eingewählt. Für eine Online-Session ist das bestens geeignet, aber für einen Batch-Ablauf vollkommen unbrauchbar. Hierfür gibt es das Kommandozeilen-Tool plink:

> c:\"program files (x86)"\putty\plink
  -ssh -P 22 -l ssh-user -pw ssh-password
  hostname_oder_ip
  /usr/bin/program_to_run

Das Tool plink ist sozusagen das Gegenstück zu putty für die Kommandozeile. Es verbindet sich in gleicher Weise mit dem Server, und setzt einen Befehl ab. Alle Ausgaben der aufgerufenen Programme auf STDOUT/STDERR erfolgen natürlich, wie bei putty auch, auf dem SSH-Client, also dem lokalen Arbeitsplatz. Anschließend wird die Verbindung wieder beendet.

Über diesen Weg gibt es also die Möglichkeit die Datenbank mittels mysqldump zu sichern. Bleibt noch die Aufgabe gezielt Dateien oder ganze Verzeichnisse auf den Client zu ziehen. Das Tool pscp, das gemeinsam mit PuTTY ausgeliefert wird, leistet genau diese Arbeit:

> c:\"program files (x86)"\putty\pscp
  -l ssh-user -pw ssh-password
  -r hostname_oder_ip:/www/htdocs/blog-user/wordpress
  c:\users\win-user\wordpress

Hier kopiert pscp das Host-Verzeichnis …/wordpress rekursiv (-r) und speichert es im Verzeichnis des Windows-Users ebenfalls unter …\wordpress ab. Die Dokumentation zu PuTTY und den Tools ist sehr ausführlich und somit zur Lektüre empfohlen.

Jetzt bleibt nur noch das Ganze sinnvoll in einem Skript oder einer Batch-Datei zusammenzufügen. Eine grobe Struktur ist nachfolgend dargestellt:

@echo off
::
:: 1. Sicherungsordner (S_jjjjmmtt_hhmmss) anlegen
::
for /f "tokens=1-3 delims=/.- " %%A in ('date /T') do (
    set TT=%%A& set MM=%%B& set JJJJ=%%C)
set Datum=%JJJJ%%MM%%TT%
for /f "tokens=1-3 delims=:, " %%A in ('echo %time%') do (
    set hh=%%A& set mm=%%B& set ss=%%C)
set Uhrzeit=%hh%%mm%%ss%
set Verzeichnis=S_%Datum%_%Uhrzeit%
mkdir c:\users\win-user\%Verzeichnis%
::
:: 2. Servereinwahl und Ausführung des Befehls 'mysqldump'
::
c:\"program files (x86)"\putty\plink -ssh -P 22 ^
  -l ssh-user -pw ssh-password ^
  hostname_oder_ip ^
  /usr/bin/mysqldump -u mysql-user -pmysql-password ^
  --opt ^
  --skip-extended-insert ^
  --databases ^
    wordpress ^
  --tables ^
    wp_commentmeta ^
    wp_comments ^
    wp_links ^
    wp_options ^
    wp_postmeta ^
    wp_posts ^
    wp_terms ^
    wp_term_relationships ^
    wp_term_taxonomy ^
    wp_usermeta ^
    wp_users ^
  > c:\users\win-user\%Verzeichnis%\blogdump.sql
::
:: 3. Download Dateien/Verzeichnisse
::
c:\"program files (x86)"\putty\pscp ^
  -l ssh-user -pw ssh-password ^
  -r hostname_oder_ip:/www/htdocs/blog-user/wordpress/wp-content/themes/my-themes ^
  c:\users\win-user\%Verzeichnis%
::
c:\"program files (x86)"\putty\pscp ^
  -l ssh-user -pw ssh-password ^
  -r hostname_oder_ip:/www/htdocs/blog-user/wordpress/my-media ^
  c:\users\win-user\%Verzeichnis%
::

Im ersten Schritt wird im aktuellen Client-Verzeichnis ein Ordner zur Aufnahme der Sicherungsdateien erstellt. Dieser Ordner erhält einen Namen bestehend aus dem Präfix »S«, dem aktuellen Datum gefolgt von der aktuellen Uhrzeit. Im zweiten Schritt erfolgt der Dump der WordPress Datenbank für ausgewählte Tabellen. Die Ausgabe (STDOUT) von mysqldump wird in den zuvor erstellten Sicherungsordner umgeleitet. Im dritten Schritt werden noch einige Verzeichnisse in den Sicherungsordner kopiert. Weitere Dateien/Verzeichnisse könnten hier noch folgen. Für einen Echteinsatz müßten unbedingt noch die Errorlevel abgeprüft werden. Außerdem könnte der Aufruf parametrisiert erfolgen, um den Umfang der Sicherungsmaßnahme zu steuern.
rh2011-08-001