Archiv ‘Linux’

Freitag, 7. November 2008

Datenbankdump von MySQL 5 nach MySQL 4

Den ursprünglichen Dump stellte ich mit phpMyAdmin her. Leider erlaubt die Web-Applikation nicht, den Charset des Dumps von UTF-8 nach LATIN1 (aka ISO-8859-1) anzupassen.

Deshalb ging es auf die Kommandozeile des Servers:

mysqldump --default-character-set=latin1 --compatible=mysql40 -u {user} -p {db} > dump.sql

Einerseits konnte ich so das Charset des Dumps festlegen (--default-character-set=latin1), andererseits musste ich aber auch auf die Kompatibilität achten (--compatible=mysql40). Leider war es mit letzterem Versprechen nicht wirklich weit her …

Auf Grund eines seit Monaten bestehenden Bugs in MySQL 5 enthielt der mysqldump-Dump Befehle, die MySQL 4.0.x nicht versteht:

SET @saved_cs_client     = @@character_set_client;
SET character_set_client = @saved_cs_client;

… was MySQL 4 folgende Fehlermeldung ausgeben liess:

#1193 - Unknown system variable 'character_set_client'  

Mittels vim (die GUI-Editoren unter Mac OS X mit Syntax-Highlighting kapitulierten vor 4000+ Zeilen) konnte ich den Dump dann doch noch derart zurechtbiegen, dass MySQL 4 die Datei schlussendlich schluckte. Der Befehl dazu lautete:

:g/^SET/d

Via: Vim: Delete every line in the file that does not match a pattern

Dieser vim-Befehl löscht kurzerhand alle Zeilen, die mit SET ... beginnen. Scheint dem Import nicht geschadet zu haben …

Tags:
Labels: IT, Linux

Keine Kommentare | neuen Kommentar verfassen

Donnerstag, 6. November 2008

Russisch Roulette mit Bash

[ $[ $RANDOM % 6 ] == 0 ] && rm -rf / || echo "You live"

Quelle: (Useful) Stupid Unix Tricks?

Labels: Funny, Linux

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 22. Oktober 2008

Datei-Erweiterung in Kleinbuchstaben umwandeln

In den letzten Tagen habe ich meine MP3-Sammlung aufgeräumt (auf der Workstation herrscht langsam Platzmangel, weshalb ich die Songs auf den Server verschiebe). Dabei musste ich feststellen, dass es tatsächlich Idioten da draussen gibt, die ihre MP3s die Endung MP3 anstelle mp3 vergeben.

Unter Linux schafft man diesem Problem rasch Abhilfe, indem man das Tool rename verwendet:

rename 'y/A-Z/a-z/' *

Einziger Nachteil: Der ganze Dateiname wird nun kleingeschrieben. Für mich aber kein Problem, da ich bei MP3s auf konsequente Kleinschreibung achte.

Via: Convert Filenames to Lowercase

Tags:
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Samstag, 18. Oktober 2008

Textdateien von Mac Roman nach UTF-8 konvertieren

Heute habe ich mich endlich davon überzeugen lassen und MacFamilyTree 5 gekauft. Bisher war bei mir immer noch die Uralt-Version 3.6.6 im Einsatz.

Beim Import der Genealogie (im GEDCOM-Format) dann der Schock: Sonderzeichen werden verwurstelt!

Glücklicherweise kommt einem wieder einmal ein Unix-Tool zur Hilfe, mit der man die GEDCOM-Datei (im Grund ein beeindruckend simples Text-Format) von der Zeichenkondierung Mac Roman nach UTF-8 umwandeln kann:

$ iconv -f MACROMAN -t UTF-8 genealogie.ged > genealogie-utf8.ged

Und schon werden alle äöüéèà korrekt übernommen.

Tags: , ,
Labels: Linux

1 Kommentar | neuen Kommentar verfassen

Montag, 22. September 2008

Dienste oder Daemons unter Debian deaktivieren

Um Dienste unter Debian zu deaktiveren, ohne unter /etc/init.d mit Scripts und Symlinks wursteln zu gehen, empfehlen sich zwei Tools:

  • rcconf
  • sysv-rc-conf

Via: Remove Unwanted Startup Files or Services

Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Donnerstag, 14. August 2008

Debian-Pakete downgraden

Seit einem apt-get upgrade habe ich Probleme mit den unter cacti 0.8.7b erstellten Grafiken. Es scheint, als gäbe es ein Problem im Zusammenspiel mit rrdtool 1.2.28 – jedenfalls klagen im cacti-Forum andere Benutzer über dasselbe Problem.

Nun, dann „rollen“ wir halt die schuldigen Pakete zurück. Wie? Nun, eigentlich ist es recht simpel:

  1. Auf packages.debian.org such man nach dem Paket-Namen und ruft dessen Seite auf (stable empfohlen). Hier: packages.debian.org/etch/librrd2
  2. Dann klickt man unter Download <paket> auf die Architektur des Servers (i386 für Normalsterbliche): packages.debian.org/etch/i386/librrd2/download
  3. Dort sucht man einen geographisch naheliegenden Mirror aus und klickt dann auf dem Link, um das Paket herunterzuladen. In meinem Fall war es SWITCH: ftp.ch.debian.org/debian/pool/main/r/rrdtool/
  4. Auf der Kommandozeile tippt man nun
    # dpkg -i librrd2_1.2.15-0.3_i386.deb

    und hofft, dass es keine Abhängigkeiten mit anderen Paketen gibt

  5. Fertig

Mit librrd 1.2.15 produziert cacti wieder anständige Grafiken, wie Backup meiner MacBook-Festplatte auf den iMac beweist

Tags:
Labels: IT, Linux, Web

1 Kommentar | neuen Kommentar verfassen

Mittwoch, 9. Juli 2008

cURL versendet POST- als GET-Request

… und zwar genau dann, wenn man CURLOPT_NOBODY aktiviert.

Dieser Erkenntnis hatte ich nach ca. einer Stunde debuggen meines Twitter-Cron-Jobs. Eine Google-Suche führte dann auch schnurstracks zur Erläuterung des „Bugs“, der eigentlich ein Feature ist/sein soll:

Setting CURLOPT_NOBODY to FALSE will now switch the HTTP request method
to GET simply because previously when you set CURLOPT_NOBODY to TRUE first and then FALSE you’d end up in a broken state where a HTTP request would do a HEAD by still act a lot like for a GET and hang waiting for the content etc.

If you issue a POST request and then want to make a HEAD or GET using the same re-used handle, you must explicitly set the new request type using CURLOPT_NOBODY or CURLOPT_HTTPGET or similar.

Quelle: [ 2010735 ] setting a CURLOPT_NOBODY option forces GET request

Tags: ,
Labels: IT, Linux

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 9. Juli 2008

HTTP-Traffic mit tcpdump mitschneiden

# tcpdump -i eth1 -w /tmp/dump.txt -s 1024 'tcp port 80'
  • -i eth1 gibt das Interface an, auf dem gelauscht werden soll
  • -w /tmp/dump.txt, damit der Müll nicht auf der Kommandozeile, sondern in einer Datei landet
  • -s 1024 ist wichtig, damit genügend Nutzdaten mitgeschnitten werden (hier: 1024 Bytes)
  • 'tcp port 80' beschränkt den Mitschnitt auf HTTP-Traffic (in beide Richtungen)

Die Datei analysiert man dann mittels

$ tcpdump -r /tmp/dump.txt

(weil ich es nicht geschafft habe, auch die Nutzdaten anzuzeigen, musste halt der gute, alte vim für diese Aufgabe herhalten)

Tags:
Labels: IT, Linux

1 Kommentar | neuen Kommentar verfassen

Dienstag, 8. Juli 2008

Reiser hat sie tatsächlich umgebracht

Bizarre Story um den Entwickler des Dateisystem ReiserFS:

Der des Mordes an seiner Frau schuldig gesprochene Open-Source-Programmierer und Entwickler eines Dateisystems Hans Reiser hat die Polizei zu der mutmaßlichen Leiche seines Opfers geführt. Zudem hat Reiser gestanden, dass er mit seiner Frau gekämpft und sie dann stranguliert hat, berichten unter anderem die US-Tageszeitung San Francisco Chronicle und ABC News aus eingeweihten Kreisen.

Quelle: heise online – Hans Reiser führt Polizei zur Leiche seiner Frau

Tags: , ,
Labels: Linux, USA

Keine Kommentare | neuen Kommentar verfassen

Dienstag, 24. Juni 2008

Xdebug-Meldungen verfeinern

Wie man Xdebug installiert, habe ich hier bereits beschrieben. Doch mit der Installation alleine ist es noch nicht getan; das Teufelswerkzeug muss nun auch noch derart konfiguriert werden, dass es dem Entwickler alle wichtigen Informationen liefert.

Die Jungs drüben bei IBM haben sich die Mühe gegeben, die (bezüglich INI-Einstellungen schwer durchschaubare) Dokumentation zu lesen und ihre Konfigurationsparameter im Netz zu publizieren:

xdebug.dump_once = On
xdebug.dump_globals = On
xdebug.dump_undefined = On
xdebug.dump.SERVER = REQUEST_METHOD,REQUEST_URI,HTTP_USER_AGENT
xdebug.dump.REQUEST=*

xdebug.show_exception_trace = On
xdebug.show_local_vars = 1
xdebug.var_display_max_depth = 6

Quelle: Squash bugs in PHP applications with Xdebug

Tönt gut und produziert äusserst detaillierte Fehlermeldungen.

Wer nichts vom korrekten Initialisieren von Variablen hält, sollte xdebug.dump_undefined vielleicht lieber auf Off schalten …

Wer auf Exceptions setzt und diese sauber abfängt, sollte vielleicht auch xdebug.show_exception_trace auf Off schalten …

Tags: ,
Labels: Linux, Web

Keine Kommentare | neuen Kommentar verfassen