Press left mouse button to continue.

Autor: ports (Seite 14 von 82)

Plastikschrott

Wenn man Kinder hat darf man in vielen Bereichen neue Erfahrungen machen. Eine Erfahrung ist, dass bei Spielzeug Qualitaet seinen Preis hat. Aktuell ist wieder ein Haufen Plastikschrott, der *eigentlich* so eine Seifenblasenpistole sein sollte, kaputt gegangen. Das Teil hat genau einen Tag lang gehalten, bevor es seinen Geist aufgegeben hat.

Total beliebt sind in dem Zusammenhang auch die ganzen Zeitungen, die es da fuer Kinder gibt. Da gibt es ja dann jede Woche auch irgendwas an Spielzeug dabei. In der Regel ist es so, dass Niklas so eine Zeitung geschenkt bekommt und das mitkommende Spielzeug keine Woche haelt. Das ist natuerlich fuer das Kind total traurig. Aber auch ich habe da wenig Freude dran, denn oft heisst es „Papa, reparier bitte“. Und wer so ein Spielzeug mal gesehen hat der weiss, dass so ein Ding nur aus einem Haufen Sollbruchstellen besteht. Reparatur ist da nie eine Option.

Flash und Linux

Es gibt so Dinge, die gehen einfach nicht miteinander. Flash und Linux waren immer schon zwei so Dinge. Obwohl die Installation von Flash heute um ein vielfaches leichter als beispielsweise vor drei Jahren ist, heisst es nicht, dass man nicht doch mit Problemen rechnen kann. So habe ich die Tage Mint auf die Version 11 aktualisiert und stelle nun fest, dass der im Rahmen des Paketmanagements angebotene Flashplayer nicht so richtig das ist, was ich erwarte. Ich kann zwar beispielsweise auf youtube Videos anschauen, bekomme auf anderen Seiten aber Meldungen wie „Zur Wiedergabe benötigen Sie eine aktuellere Version des Adobe Flash Players, den Sie kostenlos für alle gängigen Betriebssysteme herunterladen können.“.

Das Herunterladen des APT-Files resultiert dann nur in einer Meldung „Unknown channel ‚katya-partner‘ und das tar.gz-File hat keinen Installer. Da in der neuen Firefox-Version der Plugin-Ordner auch nicht mehr da ist, wo man ihn erwarten wuerde, klappt der ganze Ranz also nicht „mal eben“.

Unterm Strich also wieder mal „Scheisse deluxe“.

System of a Down

Jaja, nicht die Musik von jedem. Aber ich finde es schon beeindruckend, dass System of a Down auf dem diesjaehrigen Rock am Ring Sonntags der Hauptgig auf der Centerstage waren. Ich konnte den Auftritt komplett sehen und muss sagen, die Jungs waren fantastisch!

Boah… zurueck

So, seit Samstag sind wir aus dem Urlaub zurueck. Wir waren 14 Tage in Kroatien (Baska auf Krk), haben knapp 2750 Kilometer zurueck gelegt, etwa 18 Stunden fuer den Rueckweg gebraucht, eine leichte Sommergrippe fuer mich mitgebracht und dafuer ein paar Teile unseres Autos auf der Autobahn gelassen. Gott sei Dank hatte die Grippe mich nicht richtig erwischt, so dass ich langsam den Rest meines Urlaubs geniessen kann 🙂
Auf der Rueckfahrt durch Slowenien dachte ich so gegen 21:15 Uhr, was das da vorne kommisches auf der linken Spur ist, als ich bemerkt habe, dass es scheinbar ein LKW-Reifen ist. Eine Vollbremsung inklusive Ausweichmanoever hat zumindest soweit geholfen, dass wir nicht Vollgas ueber den Reifen drueber sind. Aber vorne links fehlt nun ein Teil der Schuerze und die linke Schiebetuer hat auch eine Delle. Das hat hat uns dann knapp drei Stunden Wartezeit gekostet. Frisch in Deutschland dann angekommen hat es so zu regnen angefangen, dass wir auch mit etwa 80 km/h staendig ein aufschwimmendes (Aquaplaning) Fahrzeug hatten. So haben wir dann gegen 4:30 Uhr an einer Raststelle angehalten und erst mal ein paar Stunden Pause gemacht.

Jetzt werde ich erst mal ein paar hundert Mails loeschenlesen und dann langsam wieder anfangen mich zu aklimatisieren 😉

Serversynchronisation

Hinweis on: Das ist ein Beitrag aus dem ehemaligen Projekt „adminstories.de“. Bitte hier fuer weitere Informationen schauen.Hinweis off

Wir nutzen zwei Server um eine Vielfalt an Diensten zu nutzen und anzubieten. Die Dienste – Web, Mail, Subversion, WebDav, etc. – haben wir nicht zeitgleich auf beiden Servern laufen. So haben wir Mail beispielsweise auf foo und unsere „privaten“ Webseiten auf bar. Aber unsere Tracs haben wir wieder auf foo und so weiter.

Der Grund fuer zwei Server ist nicht in erster Linie die Verteilung von Last, sondern wir wollen sowas wie erhoete Verfuegbarkeit im Fehlerfall erreichen. Natuerlich muessen wir bei Ausfall einer Maschine noch etwas tun (Namensaufloesung, Dienste hochfahren), aber damit sind wir in der Regel schneller, als einen Server neu aufzusetzen. Denn dafuer muss man auch erst mal die Zeit haben.

Bei der Frage „Wo liegen welche Daten“ orientieren wir uns an dem sogenannten Filesystem Hierarchy Standard, den Dirk schon mal beschrieben hatte. So liegen also alle unsere, nicht fuer den Betrieb der Server benoetigten, Webseiten unterhalb von /srv/www, Mails haben wir in /var/vmail und so weiter. Die genutzte Struktur erlaubt es uns relativ unkompliziert und schnell eine Synchronisation der Daten zwischen beiden Systemen zu etablieren. So synchronisieren wir alle Webseiten alle Stunde von bar nach foo via /usr/bin/rsync -az –delete -b –backup-dir=/srv/bak/rsync/www -e „ssh -c arcfour“ /srv/www/ www-data@foo:/srv/www/. Mit –delete -b –backup-dir=/srv/bak/rsync/www stellen wir sicher, dass am Ursprungsort geloeschte Dateien auch im Ziel geloescht werden, aber auch eine Sicherung der Datei angelegt wird. Man weiss ja nie 🙂

Mail synchronisieren wir ebenfalls alle Stunde, mit im Grunde gleichem Aufruf wie fuer Webseiten. Etwas herausfordernder war die Synchronisation der MySQL-Datenbanken. Auf foo haben wir fuenf Datenbanken und auf bar sind es 21. Vorgabe fuer das zu erstellende Script war unter anderem, dass es ohne Anpassung, sowohl auf foo, als auch auf bar laueffaehig ist. Rausgekommen ist nachfolgendes.

#!/bin/bash
logger -t syncdbs.bash -i „Starting sync“
TIMESTAMP=$(date „+%Y%m%d“)
SOURCE_DIR=“/srv/bak/backup-md2″
DESTINATION_DIR=“/srv/bak/sync“
DB_PREFIX=“db.“
DB_USERNAME=$(awk ‚/user/ {print $3}‘ /etc/mysql/debian.cnf | uniq)
DB_PASSWORD=$(awk ‚/password/ {print $3}‘ /etc/mysql/debian.cnf | uniq)
if [ „`hostname`“ = „foo“ ];then
DB_TO_COPY=“dbbar_01 dbbar_02 dbbar_03 dbbar_04 dbbar_05 dbbar_06 dbbar_07 dbbar_08\
dbbar_09 dbbar_10 dbbar_11 dbbar_12 dbbar_13 dbbar_14 dbbar_15 dbbar_16 dbbar_17\
dbbar_18 dbbar_19 dbbar_20 dbbar_21″
REMOTE_SRV=“bar“
elif [ „`hostname`“ = „bar“ ];then
DB_TO_COPY=“dbfoo_01 dbfoo_02 dbfoo_03 dbfoo_04 dbfoo_05″
REMOTE_SRV=“foo“
else
logger -t syncdbs.bash -i „Aborting syncdbs. no proper hostname found. should be foo or bar.“
exit 9
fi
cd $DESTINATION_DIR
for i in $DB_TO_COPY
do
mysqlshow -u $DB_USERNAME -p$DB_PASSWORD | awk ‚{print $2}‘ | grep ^$i$
if [ $? -eq 0 ]
then
FILENAME=$DB_PREFIX$i-$TIMESTAMP*.sq*
# retrieve file from server
logger -t syncdbs.bash -i „retrieving $FILENAME“
scp -q filecopy@$REMOTE_SRV:$SOURCE_DIR/$FILENAME $DESTINATION_DIR/
# extract file
bzip2 -d $FILENAME
# import database
logger -t syncdbs.bash -i „importing $FILENAME“
mysql -u $DB_USERNAME -p$DB_PASSWORD $i < $FILENAME
rm $FILENAME
else
logger -t syncdbs.bash -i „error: no database $i. skipping $FILENAME“
fi
done
logger -t syncdbs.bash -i „Ending sync“

Basis fuer die Synchronisation ist ein entsprechendes Backup (mysqldump) auf der „gegenueberliegenden“ Seite. Das Script ist, wie man sehen kann, kein Voodoo. Aufwand entsteht, da die Variablen DB_TO_COPY gepflegt werden muessen. Die Anfangsidee „Les‘ doch einfach aus welche Datenbanken auf der anderen Seite sind“ war prima. Das haette man schnell mit einem ssh user@foo mysqlshow -u user -p hinbekommen. Das klappt aber nicht dauerhaft. Laueft der Job auf beiden Servern einmal, habe ich auf beiden Servern alle Datenbanken. Lasse ich den Job dann 12 Stunden spaeter auf foo noch mal laufen, wuerden alle Datenbanken von bar importiert und damit natuerlich auch die fuenf benoetigten Datenbanken auf foo mit einem alten Stand ueberschrieben.

Man koennte, um sich etwas mehr Automatismus zu erhalten, die Datenbanken als bak_* importieren und dann im Fehlerfall umbenennen. Die Idee hat fuer mich aber nicht so viel Charme, da ich beim Umschalten so wenig wie moeglich anfassen moechte.

Nicht zu vergessen ist natuerlich, dass es nur mit der Synchronisation von ein paar Daten und Datenbanken nicht getan ist. Im Ernstfall muss auch sichergestellt sein, dass die genutzten Anwendungen (Maildaemon, Webdaemon, etc.) auch auf der Backupseite verfuegbar sind. Und dann muss man natuerlich auch schauen, dass die Anwendung entsprechend konfiguriert ist. Einfach alle Webseiten kopieren und dann /etc/apache2/sites-enable zu vergessen ist ungeschickt.

Auch sollte nicht vergessen werden, dass die Rechte auf dem Backup gesetzt sind, bzw. noch zu setzen sind. So ist ein Import aller Datenbanken schon mal ein erster Schritt. Aber so lange die Anwendungen keine Rechte auf „ihre“ Datenbank haben bin ich noch nicht am Ziel.

Ja, machnmal waere es leichter einfach irgendwo einen „einfachen Server“ zu mieten. Aber wo bleibt da der Spass?

Letzter Arbeitstag

So, heute ist mein letzter Arbeitstag. Also der letzte Tag, an dem ich arbeiten gehe. Meinen Job beim TUEV Rheinland fange ich am 01.07 an.

So ein Wechsel ist wirklich eine interessante und spannende Sache. Nicht alleine weil man sich im neuen Herausforderungen stellt. Es ist auch so, dass man ab dem Tag der Kuendigung viele Dinge im alten Unternehmen mit anderen Augen sieht. Wobei „mit anderen Augen“ nicht ganz passt. Es ist eher so, dass viele Dinge nun klarer sind. Man hat nicht mehr die „Firmenbrille“ auf, die einige Dinge manchmal auch besser dastehen laesst als sie sind. Und das kann durchaus hilfreich sein. Und wo es nicht hilfreich ist, so ist es fuer andere manchmal durchaus erheiternd.

Ich habe immer zu meiner Meinung gestanden und die auch klar kommuniziert. Das habe ich allerdings in der Regel auch immer sehr Business-kompatibel getan. Also durchaus mal den Hammer in Zuckerwatte gepackt. Das habe ich mir fuer die letzten Wochen gespart. Wenn meine Meinung gefragt war habe ich die klar und deutlich zum Ausdruck gebracht. Natuerlich ohne pampig zu werden, aber schon klar erkennbar. Interessant war, dass ich damit nicht schlechter gefahren bin. Es scheint tatsaechlich so, dass viele Menschen klare Worte durchaus vertragen koennen.

Alles in allem habe ich hier viele Menschen kennengelernt. Ein Haufen netter und umgaenglicher Leute. Auch einige sind natuerlich einige dabei, die ich schon etwas vermissen werden. Aber natuerlich habe ich hier auch Spinner und Sozialkrueppel finden koennen. Und klar ist auch, dass mich nicht jeder vermissen wird. So ist das eben. Man kommt nicht mit allen Leuten klar und es kommen nicht alle mit einem klar. Mal schauen was die Zukunft bringt.

Auf jeden Fall hatte ich hier eine sehr lehrreiche Zeit. Ich hatte viel Spass mit meinen Aufgaben und hatte die Chance bei tollen Projekte bei zu sein und auch selber prima Projekte umsetzen. Ich werde also gerne an meinen alten Arbeitsplatz denken. Und das finde ich schoen.

Fruehstueck fuer Kinder

Morgens, wenn ich mir mal ein Broettchen beim Baecker hole, bin ich manchmal schon was verbluefft. Und zwar dann, wenn ich sehe wie Eltern mit ihren Grundschulkindern herein kommen und, in der Regel, die Kinder ihr „Fruehstueck“ aussuchen lassen. Da gibt es dann ein Muffin, eine Quarktasche, ein Puddingteilchen oder irgendwas anderes aus dem Bereich „Schlecht fuer die Zaehne und kein richtiges Fruehstueck“. Ist es, weil Eltern den Kindern zeigen wollen wie lieb sie sie haben? Oder soll es ein Ersatz fuer etwas sein?

Hochzeitslied

Gestern waren wir auf einer Hochzeit eingeladen. Und ich war echt ueberrascht was man in der Kirche schon alles „darf“. Mein Einmarsch des Paares lief, man mag es kaum glauben, „George Harrison – Here Comes the Sun“. Fand ich schon mal sehr nett. Aber nach der Trauung durfte ich mal was richtiges cooles hoeren.

Revision 11

Vermutlich werden es alle schon mitbekommen haben. Die Revision 11 ist ja nun seit ein paar Tagen vorbei. Es waren wieder viele prima Produkte dabei. Eine Liste aller Results gibt es, wie gehabt, bei pouet.net. Um keine Ergebnisse vorweg zu nehmen hier noch mal ein aelteres Teil. Veroeffentlicht wurde das Ding 1993 auf „The Party“.

Migration von WordPress nach s9y

Hinweis on: Das ist ein Beitrag aus dem ehemaligen Projekt „adminstories.de“. Bitte hier fuer weitere Informationen schauen.Hinweis off

Mir ist keine Migration bekannt, bei der es nicht irgendwelche Probleme gab. So auch ein Wechsel von einer Blogsoftware zu einer anderen. Da denkt man „Ach, einfach nur einen Import der Daten und gut“, aber so einfach ist es oft nicht. In vielen Faellen gibt es nicht mal einen gescheiten Importmechanismus. Da ist dann Handarbeit angesagt.

Beim Migrieren meines privaten Blogs von WordPress nach Serendipity (s9y) waren die Vorzeichen etwas besser, da s9y zumindest einen Importer mitbringt (~/include/admin/importers/wordcodess.inc.php). Aber wie oben geschrieben… Migration laueft nicht problemlos. Daher hier mal ein paar Punkte, die ich im Rahmen der Migration zu bewaeltigen hatte. Vorab der Hinweis, dass ein Backup auf jeden Fall Sinn macht. Einmal ein falscher Befehl in der falschen Tabelle und man faengt, im schlimmsten Falle, von vorne an. Ja, ich spreche aus Erfahrung 🙂

Um moeglichen Problemen mit Umlauten (ä, ö, ü) oder bestimmten Sonderzeichen (Halbgeviertstrich, Scharfes S) vorzubeugen macht es Sinn, diese vor dem Import anzupassen. Daher habe ich erst einmal ein Suchen/Ersetzen auf die Tabellen wp_comments und wp_posts gemacht. Hier einmal ein Beispiel fuer das Ersetzen von ä in den Beitraegen und Kommentaren.

UPDATE `wordcodess`.`wp_comments` SET `comment_content` = replace(`comment_content`,’ä‘,’ae‘);
UPDATE `wordcodess`.`wp_posts` SET `post_content` = replace(`post_content`,’ä‘,’ae‘);

Anschliessend habe ich noch, um keine unnoetigten Altlasten mitzunehmen, die Beitraege, die als post_type den Wert revision haben, geloescht. Das sind die Beitraege die sonst spaeter in s9y als Draft auftauchen.

DELETE FROM `wordcodess`.`wp_posts` WHERE `post_type`=’revision‘;

Bitte beachten, dass es auch Werte wie etwa attachment oder page gibt. Somit waere es nicht so prima alles was ungleich revision ist zu loeschen. Der s9y-Importer macht es so, dass er alle Eintraege die nicht den Wert publish haben, als isdraft == true importiert.

Nun habe ich mal – mutig, mutig – einen Import der Daten in sy9 gemacht und geschaut, was es noch zu bereinigen gibt. Zum einen waren das bei mir die Accounts. Diese werden im Rahmen des Imports mitgenommen und es werden auch die Spalten author sowie authorid mit den „alten“ Werten – bei mir ports und 4 – versehen. Ich wollte aber ramon mit der ID 1 haben.

UPDATE `sy9`.`s9y_entries` SET author=’ramon‘;
UPDATE `sy9`.`s9y_entries` SET authorid=1;

Ein weiterer Punkt auf meiner Liste war die Erstellung einer ordentlichen Kategorieliste. Dafuer habe ich erst einmal die entsprechenden Eintraege via TRUNCATE TABLE `s9y_entrycat`; (Welcher Beitrag ist wie kategorisiert) und TRUNCATE TABLE `s9y_category`; (Welche Kategorien gibt es) geleert und neue Kategorien eingepflegt.

INSERT INTO `kl_s9y_ramon`.`s9y_category` (`categoryid`, `category_name`, `category_icon`, \
`category_description`, `authorid`, `category_left`, `category_right`, `parentid`, \
`sort_order`, `hide_sub`) VALUES (NULL, ‚Adminstories‘, “, “, ‚0‘, ‚1‘, ‚2‘, ‚0‘, 0, 0), \
(NULL, ‚Alter Inhalt‘, “, “, ‚0‘, ‚3‘, ‚4‘, ‚0‘, 0, 0),

Das anschliessende kategorisieren musste dann, zumindest bei mir, von Hand erfolgen, da ich mir jeden Beitrag noch mal anschauen musste. Ansonsten koennte man auch etwas wie

INSERT INTO `s9y`.`s9y_entrycat` (`entryid`, `categoryid`) VALUES (‚2‘, ‚2‘);
INSERT INTO `s9y`.`s9y_entrycat` (`entryid`, `categoryid`) VALUES (‚3‘, ‚2‘);

verwenden. Damit wuerde dann der Beitrag mit der ID 2 und 3 der Kategorie mit der ID 2 zugewiesen.

Im Rahmen meiner Migration habe ich mehrfach einen Fehler gemacht, so dass ich den Datenimport auch jedesmal gemacht habe. Da ich nicht jedesmal eine neue Datenbank erstellen wollte habe ich mich darauf beschraenkt, vor jedem neuen Versuch, die fuer mich relevanten Tabellen zu leeren und meinen Benutzer anzulegen.

TRUNCATE TABLE `s9y_authors`;
INSERT INTO `lx_logbuch`.`serendipity_authors` (`realname`, `username`,`password`, \
`authorid`, `mail_comments`, `mail_trackbacks`, `email`,`userlevel`, `right_publish`, \
`hashtype`) VALUES (‚Ramon Kukla‘,’ramon‘, ‚abcdefghijklmnopqrstuvwxyz0123456789abcd‘, \
‚5‘, ‚1‘, ‚1‘, ‚ramon@kukla.info‘, ‚255‘, ‚1‘, ‚1‘);
TRUNCATE TABLE `s9y_category`;
TRUNCATE TABLE `s9y_comments`;
TRUNCATE TABLE `s9y_entries`;
TRUNCATE TABLE `s9y_entrycat`;
TRUNCATE TABLE `s9y_permalinks`;
TRUNCATE TABLE `s9y_references`;
TRUNCATE TABLE `s9y_refs`;

Alles in allem war die Migration, allerdings auch aus weiteren Gruenden, eine sehr zeitintensive Geschichte. Der Grund, warum ich nach einem Wechsel von s9y zu Wordcodess und nun wieder zu s9y zurueck bin, sind ueberschaubar. Ich fuehle mich bei s9y einfach wohler, der Support im Forum ist prima und es ist – nicht gemessen, aber mein subjektiver Eindruck – schneller als WordPress.

« Ältere Beiträge Neuere Beiträge »

© 2025 Software Failure

Theme von Anders NorénHoch ↑