Archiv der Kategorie: Lehrerfortbildung

Beiträge über / vom LFB (http://lehrerfortbildung-bw.de)

etherpad v 1.1

Das Update auf etherpad 1.1 auf dem Ubuntu 10.04 Server meiner Computer AG lief zwar reibungslos durch, aber etherpad bekam nach dem Update den Hintern nicht mehr hoch. Auch händische Startversuche scheiterten ohne jegliche Rückmeldung. Als Problem identifizierte ich auf diesem Server das Startskript in

/etc/init.d/etherpad

Hier steht als lokales Installationsverzeichnis

DAEMON_BASE=“/usr/local/etherpad“

Für Version 1.1 müssen aber entsprechende Anpassungen vorgenommen werden:

DAEMON_BASE=“/usr/share/etherpad“

Die Start- und Stop-Skripte

/etc/rc0.d/K95etherpad
/etc/rc1.d/K95etherpad
/etc/rc2.d/S05etherpad
/etc/rc3.d/S05etherpad
/etc/rc4.d/S05etherpad
/etc/rc5.d/S05etherpad
/etc/rc6.d/K95etherpad
/etc/rcS.d/K95etherpad

müssen dann nicht mehr weiter händisch angepasst werden, sondern übernehmen auf Grund der Verlinkung den Eintrag.

Weitere Punkte zum Update oder Skripte mit dem falschen Pfad sind mir bisher nicht aufgefallen – können aber durchaus noch zu finden sein. Ich freu mich jetzt mal, dass die alten Pads das Update überlebt haben und mein Server wieder rund läuft.

Umbenennen

Die wie immer üble Ausgangslage, wenn ich Materialienlieferungen für den LFB erhalte:

Auf der Suche nach einem ordentlichen Skript für das Umbenennen von Datei- und Verzeichnisnamen bin ich hier über die Arbeit von Andi Latte gestolpert, die ich nur unwesentlich für meine Bedürfnisse anpassen musste:


#!/bin/bash
# Ersetzt Zeichen im Dateinamen rekursiv
# Vorlage: http://www.linux-community.de/Community/Fragen/Bash-Rename-Skript
# Aufruf des Skriptes auf Korrektheit pruefen
if [ -z $1 ];then echo Verwendung: umbenennen "/PFAD" ; exit 0;fi
# Meldung ungueltige Kodierung bearbeiten
convmv -f iso-8859-15 -t utf8 -r "$1" --notest
#
# Skript Start
#
find "$1" -depth -name "*" | while read file ; do
directory=$(dirname "$file")
oldfilename=$(basename "$file")
# sed und tr als Mittel der Bearbeitung
# Befehle sind so aufgestellt, dass einzelne Aktionen
# leicht durch Loeschen zwischen den Pipes
# veraendert werden koennen
newfilename=$(echo "$oldfilename" | tr "'" "_" | tr '!@#+ ' '_____' | tr '[]{}' '()()()' | sed -e 's/[\`\´\"\]//g' | sed -e 's/\&/and/g' | sed -e 's/[àáâãäå]/ae/g;s/[ÀÁÂÃÄÅ]/Ae/g;s/[éëêè]/e/g;s/[ÈÉÊË€]/E/g;s/[ìíîï]/i/g;s/[ÌÍÎÏ¡]/I/g;s/[òóôõöø]/oe/g;s/[ÒÓÔÕÖ]/Oe/g;s/[ùúûü]/ue/g;s/[ÙÚÛÜ]/Ue/g;s/[ÿý?]/y/g;s/[ÝŸ]/Y/g;s/[æ]/ae/g;s/[Æ]/AE/g;s/[碩]/c/g;s/[Ç]/C/g;s/[ßš]/s/g;s/[$§Š]/S/g;s/[=¦#:~*¿·¸°¯\%";+^˜‰…‡†???•]/_/g;s/[²]/2/g;s/[³]/3/g' | sed -e 's/[^\(\)\.\/\_a-zA-Z0-9-]//g' | tr [:upper:] [:lower:])
# Katastrophenpotential einschraenken
if [ "$oldfilename" != "$newfilename" ]; then
# Umbenennen beginnen
mv -i "$directory/$oldfilename" "$directory/$newfilename"
# Benutzer informieren
echo ""$directory/$oldfilename" ---> "$directory/$newfilename""
#echo "$directory"
#echo "$oldfilename"
#echo "$newfilename"
#echo
fi
done
exit 0

Das nun erträgliche Ergebnis, das eine automatisierte Weiterverarbeitung bei der Umsetzung nach HTML erlaubt:

Da WordPress sicherlich aus dem Skript oben wieder einmal Wurstsalat macht, hier das Skript für den Download: umbenennen_v2.zip und zur Sicherheit auch noch mal bei pastebin.

Nachteil des Skriptes: Der Backslash wird nicht berücksichtigt. Außerdem wäre ein iconv -t ascii nicht schlecht, um die exotischen Zeichen mit zu erwischen, die nicht im Skript selbst auftauchen. Ein paar Dummheiten sind außerdem auch noch drin: Z.B. wird ? am Ende durch _ ersetzt, dabei ist es da schon lange ein y.

Das Grundgerüst steht aber.

RSS Feeds bauen

Am LFB sind alle Seiten echte Handarbeit. Zwar ist ein CMS (unter Mason) vorhanden, das dann aus unserem HTML Geschreibsel hübsche Seiten verpackt, aber Funktionen wie einen automatischen RSS Feed Generator haben wir nicht. Derartiges wird in Zukunft ebenfalls von Hand gebaut und zwar mit Hilfe des Easy Feed Editor.

Da dieser für NET / Mono geschrieben wurde, muss das zuerst auf die Platte. Ein

sudo apt-get install mono-complete

erledigt das. Im Anschluss kann die EXE Datei des Easy Feed Editor – am einfachsten aus einem Terminal heraus – mit

mono Easy\ Feed\ Editor.exe

gestartet werden.

Wer mehr auf grafische Oberflächen steht klickt die EXE mit der rechten Maustaste an, wählt „Öffnen mit“ und dort „Anderer Anwendung …“

Im dann aufklappenden Fenster trägt man „mono“ im Feld „Benutzerdefinierten Befehl benutzen“ ein, setzt ein Häkchen bei „Diese Anwendung für DOS/Windows Programm-Dateien merken“ und klickt auf „Öffnen“.

Das Programm selbst ist – vor allem unter Ubuntu Lucid 64Bit – recht schmucklos, bringt aber eine ausreichende Zahl an Features für den Feed-Bau mit. Leider klappt bei mir ein Pasten aus der Zwischenablage in das Fenster für die Erstellung des Beitragstextes nicht. Eine kommende Version wird dies hoffentlich erledigen.

etherpad

Die c’t von heute hat einen Artikel zur Installation von etherpad auf debianoiden Linuxen veröffentlicht, den ich gerade in einer VM unter Debian 5 nachzuvollziehen versuche. Der Artikel scheint jedoch für Ubuntu geschrieben worden zu sein. Unter Debian 5 will es wie von der c’t beschrieben einfach nicht klappen – und aus diesem Grund hier eine veränderte und erweiterte Anleitung, die hoffentlich Idioten sicher ist:

Zuerst kommt die Installation eines Debian5-Minimalsystems dran. Dann als root

deb http://apt.etherpad.org all .
deb http://ftp.de.debian.org/debian  sid main non-free

in die /etc/apt/sources.list eintragen. Ein

apt-get update

aktualisiert die Paketliste. Aufpassen: Durch das SID Repo würde ein apt-get dist-upgrade zu einem Wechsel von der stable Version von Debian zu Sid führen. Wer das vermeiden will, sollte das Repo für Sid nach Fertigstellung der ehterpad-Installation dann wieder aus der sources.list auskommentieren. Die Fehlermeldungen wegen den evtl. nicht vorhandenen Keys (auf’s Erste) ignorieren. Ein

apt-get install  sun-java6-jdk

führt zur Installation der folgenden zusätzlichen Pakete:

avahi-daemon dbus gsfonts gsfonts-x11 java-common libasound2 libavahi-common-data libavahi-common3 libavahi-core7 libc-bin libc6 libc6-i686 libdaemon0 libdbus-1-3 libexpat1 libfontenc1 libfreetype6 libltdl7 libncurses5 libnss-mdns libreadline6 libx11-6 libxcb1 libxfont1 libxi6 libxtst6 locales odbcinst odbcinst1debian2 sun-java6-bin sun-java6-jre unixodbc xfonts-encodings xfonts-utils

Insgesamt landen hier rund 75 MB an zusätzlichen Daten aus dem Netz auf dem Rechner und brauchen ca. 180 MB an Platz nach der Installation. Wegrennen kann man in dieser Phase nicht, weil (neben einigen anderen notwendigen Userinteraktionen) die Lizenzbedingungen von Sun abgenickt werden müssen.

Ein

java -version

sollte die folgende Ausgabe bringen:

java version „1.6.0_20“
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode, sharing)

Wenn nicht, dann ist die Sun Java VM mit dem folgenden Befehl als Default einzurichten:

update-alternatives –config java

Es folgt die Installation des mysql Servers sowie der Verbindungssoftware zwischen Java und dem Datenbankserver. Ich zieh mir hier auch gleich noch phpmyadmin und einen Apachen:

apt-get install scala mysql-server libmysql-java mercurial phpmyadmin apache2

Debian zieht sich nun

apache2-mpm-prefork apache2-utils apache2.2-bin apache2.2-common dbconfig-common fontconfig-config javascript-common libapache2-mod-php5 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libdb4.7 libdb4.8 libdbd-mysql-perl libdbi-perl libfontconfig1 libgd2-xpm libgssapi-krb5-2 libhtml-template-perl libjpeg62 libjs-mootools libk5crypto3 libkrb5-3 libkrb5support0 libmcrypt4 libmysqlclient16 libnet-daemon-perl libonig2 libpcre3 libplrpc-perl libpng12-0 libqdbm14 libsqlite3-0 libssl0.9.8 libt1-5 libuuid1 libxml2 libxpm4 make mercurial-common mysql-client-5.1 mysql-common mysql-server-5.1 mysql-server-core-5.1 openssl perl perl-base perl-modules php5-cli php5-common php5-gd php5-mcrypt php5-mysql php5-suhosin psmisc python-support scala-library ssl-cert wwwconfig-common

und lädt hierzu 67 MB aus dem Netz. Nach der Installation ist der Plattenplatz wieder um 130 MB kleiner.

Bei der Installation ist dann das mysql root-Passwort anzugeben und dieser für den Apachen zu konfigurieren (ist nur ein Klick in einem Auswahlfenster). Weiter ist der administrative Benutzer für phpmyadmin anzugeben und ein Passwort zu setzen.

Jetzt kann man im Browser durch Aufruf der IP / Domain des Servers mal nachsehen, ob alles geklappt hat und der Server sowie phpmyadmin erreichbar sind.

In die Datei /etc/profile wird nun der folgende Code hinzugefügt, damit alle Komponenten sich auch gegenseitig finden können:

export JAVA_HOME=“/usr/lib/jvm/java-6-sun“
export SCALA_HOME=“/usr/share/java“
export JAVA=“/usr/bin/java“
export SCALA=“/usr/bin/scala“
export PATH=“/usr/bin:/usr/bin:/usr/local/mysql/bin:$PATH“
export MYSQL_CONNECTOR_JAR=“/usr/share/java/mysql-connector-java-5.1.10.jar“
export JAVA_HOME SCALA_HOME JAVA SCALA MYSQL_CONNECTOR_JAR PATH

Ein

echo $PATH

zeigt, ob es mit den Exporten klappt. Wenn nicht, dann entweder „sourcen“ oder ab- und wieder anmelden und erneut überprüfen.

Ein

apt-get install etherpad

zieht die notwendigen Abhängigkeiten mit sich. Man sollte hier aber nicht wie gewohnt ein paar Mal [Enter] drücken, sondern beachten, dass auf Grund der fehlenden Keys für die neu hinzugefügten Repos die Vorauswahl von Debian bei der Rückfrage, ob man nicht vertrauenswürdige Pakete einspielen will, auf Nein steht. Das sieht so aus:

WARNUNG: Die folgenden Pakete können nicht authentifiziert werden!
etherpad
Diese Pakete ohne Überprüfung installieren [j/N]? j

Rund 30 MB werden aus dem Netz geholt, die nach der Installation weitere 44 MB belegen werden. Während der Installation sind dann wieder das mysql root Passwort anzugeben (damit etherpad seine Datenbank anlegen kann). Außerdem ist der administrative Benutzer für Etherpad anzugeben und auch die Domain, unter der etherpad zu erreichen sein soll. Der Eintrag localhost ist hier entsprechend zu ergänzen.

In der Datei

/usr/share/etherpad/etherpad/bin/run-local.sh

sind ist noch eine Anpassungen nötig: Ziemlich weit oben in diesem Startskript steht

MXRAM=“1G“

Das ist für die ersten Tests ein wenig viel, schreibt die c’t, und meint, der folgende Eintrag würde auch reichen:

MXRAM=“128m“

Hervorzuheben ist, dass hier nicht 128MB oder 128M stehen darf, da sonst ein Syntaxfehler moniert wird. In vielen Anleitungen im Netz ist das aber der Fall. Komisch.

Die während der Installation gemachten Angaben sind dann hier

/etc/etherpad/etherpad.local.properties

zu finden und können falls nötig angepasst werden. Ich habe am Ende noch die Zeile

etherpad.skipHostnameCheck = true

eingefügt, um später weniger Probleme zu bekommen. Hier besteht aber auch die Möglichkeit, den etherpad Server auf HTTPS umzubiegen. Gelogt wird im default nach

/var/log/etherpad

Da das Startskript in /etc/init.d/etherpad extrem schweigsam ist, empfiehlt sich für den ersten Start die Nutzung von run-local.sh im oben angegebenen Verzeichnis.

root@debian5:/usr/share/etherpad/etherpad# ./bin/run-local.sh

Wichtig ist hier, dass der etherpad Server wirklich aus dem Verzeichnis /usr/share/etherpad/etherpad heraus gestartet wird, sonst erhält man die Fehlermeldung

Using config file: ./etc/etherpad.localdev-default.properties
Exception in thread „main“ java.lang.NoClassDefFoundError: net/appjet/oui/main
Caused by: java.lang.ClassNotFoundException: net.appjet.oui.main
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Heap
def new generation   total 14784K, used 263K [0x9f880000, 0xa0880000, 0xa0880000)
eden space 13184K,   2% used [0x9f880000, 0x9f8c1ec8, 0xa0560000)
from space 1600K,   0% used [0xa0560000, 0xa0560000, 0xa06f0000)
to   space 1600K,   0% used [0xa06f0000, 0xa06f0000, 0xa0880000)
concurrent mark-sweep generation total 245760K, used 0K [0xa0880000, 0xaf880000, 0xaf880000)
concurrent-mark-sweep perm gen total 16384K, used 1567K [0xaf880000, 0xb0880000, 0xb3880000)
Could not find the main class: net.appjet.oui.main.  Program will exit.

Jetzt kann etherpad auch auf der Shell mit dem Browser links2 erreicht werden:

links2 http://localhost:9000/

Damit der Server auch über Port 80 und nicht nur lokal zu benutzen ist, passen wir den Apache an.

a2enmod proxy_http
/etc/init.d/apache2 restart

Der folgende Code kommt in die Apache Konfigurationsdatei:

<IfModule mod_proxy_http.c>
ProxyPass               /       http://localhost:9000/
ProxyPassReverse        /       http://localhost:9000/
ProxyPreserveHost       on
<Proxy http://localhost:9000/>
Order Allow,Deny
Allow from all
</Proxy>
</IfModule>

der daraufhin einen restart braucht:

/etc/init.d/apache2 restart

Wenn man dann immer bei einer komischen Seite mit dem Namen „false“ landet, liegt es an der Konfiguration von etherpad. Ein Eintrag der IP des Servers hinter

topdomains =

in

/etc/etherpad/etherpad.local.properties

und nachfolgendem Neustart von etherpad und Apache erledigt das Problem.

Und nach dem vielen Text, hier dann endlich das Ergebnis mit Bild:

Ich muss schon sagen: Die Herren Jo Bager und Alvar Freude machen es sich in der c’t doch ein wenig einfach 🙂 Ohne meinen Basteltrieb hätte ich zügig wieder aufgegeben.

Sicherheitstechnisch ist der etherpad-Server, den ich hier beschreibe, nicht eine Bohne wert – aber für das interne Netz müsste es reichen. Hoffentlich. Sobald ich das Ding dann in meiner Schule am laufen habe, werde ich die Konsequenzen ja miterleben und auch mittragen. Für einen solchen Einsatzzweck sollte man dann screen für den Start im Hintergrund nutzen – oder mit nohup arbeiten, vor allem aber die Namensauflösung in den Griff bekommen und so evtl. um den Apache-Proxy rumkommen. Ob man hierzu etherpad aus den Quellen selbst kompilieren muss – das will ich heute nach dem ganzen Gefrickel gar nicht wissen.

Quellen, Ideen und vor allem Problemlösungen gibt es hier:

http://oceanobservatories.org/spaces/display/~gadavis/Etherpad+Migration

http://mclear.co.uk/2010/03/10/installing-etherpad-on-debian/

Diesen Text habe ich auch – etwas geglättet – auf dem LFB veröffentlicht: http://lehrerfortbildung-bw.de/werkstatt/sonstige/txtimnetz/1_ethpad.htm

Siehe hierzu auch: http://www.bdjl.de/localhost/?p=1489 (Update auf etherpad 1.1)

imagemagick

Das Ausgangsbild war dieses hier:

Also erstens zu groß (angestrebt war eine Breite von 150 Pixeln), zweitens im falschen Format (png) und drittens auch noch zu dick, weil mehr als 10kb schwer.

for i in `ls *.png`; do convert $i -resize 150 conv_$i.jpg; done

Ergebnis:

Schwarze Ecken? Das war die Transparenz im PNG. Die musste nun weg und zwar in Richtung weiß.

for i in `ls *.png`; do convert $i -alpha off -resize 150 conv_$i.jpg; done

Ergebnis:

So stimmt’s.

DreamWeaver 8 auf Lucid 64

… funktionierte einfach überhaupt nicht! Während DW8 unter meinen 32bittigen Laptops unter Lucid einfach das tat, was er die letzten Jahre immer tat – arbeiten – brach der Start des DW unter der 64 Bit Version von Ubuntu Lucid Lynx 10.04 LTS mit der Fehlermeldung

err:module:attach_process_dlls „odbc32.dll“ failed to initialize, aborting

ab. Erst ein Post in den Ubuntuforen brachte mich auf die richtige Spur, nur wusste ich nicht, wie wörtlich ich diesen nehmen sollte. Die Antwort: Sehr wörtlich!

Benötigt wird eine funktionierende Installation von Windows XP. Ist die nicht vorhanden, dann kann man nach den benötigten DLLs auch googlen und welche aus dem Netz verwenden. Ich würde aber dazu raten, diese auf jeden Fall auf Viren zu scannen (clamav – oder noch besser mit Hilfe von Webdiensten).

Lange Vorrede: Man kopiert sich die Dateien

odbcint.dll
odbc32.dll

aus dem Ordner

Windows/system32

des Windowsrechners (aus XP – wenn in Wine XP eingestellt ist) nach

/home/benutzername/.wine/drive_c/windows/system32

Dann stellt man auf dem Reiter von WineCFG (in der Shell mit winecfg aufgerufen oder über das Menü /Anwendungen /Wine /Konfiguriere Wine) ein, dass Wine die odbc32.dll nativ behandeln soll.

Dazu fügt man eine neue Überschreibung hinzu, indem man aus dem Dropdownmenü die odbc32.dll auswählt und dann im kleinen Popup-Fenster ein Häkchen bei „Nativ (Windows)“ macht.

Voila. Einen Bugreport hab ich auch gleich mal dazu geschrieben, in der Hoffnung, dass sich ein Experte darum kümmert. Schließlich sollte Wine Windows emulieren können, ohne derartige Krücken – und konnte dies bisher auch.

Mehrseitendruck

Der Ausdruck von mehreren Seiten auf ein Din A4 Blatt lässt sich unter Linux vielfältig organisieren. gtklp ist eine Möglichkeit, die ich hier schon beschrieben habe. Auf der shell eigenet sich psnup oder auch mpage.

Dabei kann zumindest OpenOffice das auch von sich aus – und zwar aus der Seitenansicht heraus.

Zuerst werden in der Seitenansicht selbst die „Druckoptionen Seitenansicht“ aufgerufen – das ist das Icon mit der zeigenden Hand links vom „Seitenansicht schließen“ Knopf.

Hier kann die Aufteilung der zu druckenden Seiten auf das Einzelblatt eingestellt werden.

Zum Abschluss den Schalter „Seitenansicht drucken“ in der Seitenvorschau anklicken.

etherpad

Google hat den von mir sehr geschätzten und auch viel im Unterricht und in Fortbildungen eingesetzten Service etherpad geschluckt und wollte für eine Übergangszeit (?) bis zur Integration in Google Wave nur noch die schon bestehenden Pads weiter am Leben lassen. Das Anlegen neuer Pads war nicht mehr möglich.

Inzwischen hat sich das geändert – und ausnahmsweise mal in die richtige Richtung: etherpad scheint eine OpenSource Strategie zu verfolgen.

Lichtblick.

Lingoes

Jochen Lüders schreibt in seinem Blog JochenEnglish über Lingoes – eine Software, die zumindest auf Windowsrechnern die Installation von vielen Wörterbüchern für Umme erlaubt (Freibier – nicht Freiheit). Darunter sind auch Klassiker wie Merriam-Webster, LDCE, CALD, Roget’s Thesaurus oder das AHD. Warum auch immer – schön, dass diese kostenlos erhältlich sind.

lingoes

Ich hab mir diese nun für die Schule auch geholt (und damit die Anschaffungswünsche des Fachbereichs etwas konterkariert) – auf Linux scheinen diese auch mit Wine nicht laufen zu wollen.

Dafür gibt es für Linux StarDict, das zumindest mal viele der wichtigsten Wörterbücher mitbringt, leider aber die Wörterbücher von lingoes nicht importieren kann. Das Paket ist Teil von Ubuntu:

sudo apt-get install stardict

Auf der Webseite von StarDict gibt es viele Wörterbücher zum Download, die nicht über den Paketmanager selbst erhältlich sind – als Tarball.