Freitag, 15. August 2008

SQL-Dump zerlegen


SQL-Dumps kommen üblicherweise als Textfile daher. Und haben häufig die unangenehme Eigenschaft, riesig zu werden. Dieser Beitrag stellt ein kleines Python-Script vor und zur Verfügung, mit dem sich der Dump einer MySQL-Datenbank in mehrere Dateien zerlegen lässt, die jeweils nur noch die Daten einer einzelnen Tabelle enthalten. Eine MySQL-Datenbank mit all ihren Tabellen lässt sich etwa so prima exportieren:

mysqldump --opt -h 127.0.0.1 -u DBUSER -pDBPASSWD DATABASE >dump.sql

Was aber tun, wenn 'dump.sql' viel größer als gewünscht ist? Nun, zerlegen wir die Datei doch in kleinere Häppchen. Das lässt sich per Hand mit einem Editor bewältigen, ist dann aber schnell Sklavenarbeit und dazu noch fehleranfällig. Dann lieber ein Tool nehmen, dass diese Arbeit maschinell erledigt. Vermutlich gibt es dieses Tool bereits zuhauf - ich habe nicht danach gesucht. Wer so ein Tool kennt möge mir doch eine Zeile schreiben.

In meinem Fall hatte ich nicht die große Allround-Lösung im Sinn. Auch habe ich mich nicht damit beschäftigt, welche syntaktischen Klimmzüge das Programm da bei den Kommentaren im Dump hinterlässt. Vielmehr habe ich ein Tool geschrieben, dass mir genau die Arbeit abnimmt, die ich sonst per Hand gemacht hätte: Database-Dump nehmen, jeden Abschnitt daraus, der eine Tabelle enthält, in eine eigene Datei stecken, die 'tabellenname.sql' heißt, und dafür sorgen, dass auch hier die Kommentare am Anfang und am Ende der Datei wieder vorhanden sind.

So ist splitsql.py entstanden, ein Python Opensource Programm, das beliebig verwendet werden darf. Beispieldaten kann man sich hier anschauen. Was Spaß macht: Es lässt sich leicht modifizieren, und so ist es nicht schwer, ihm beizubringen, zusätzliche Informationen auszugeben, wie etwa die Vorlage für ein Shellscript oder Texte, die man wieder in den Quelltext einbauen kann. Viel Spaß!

Donnerstag, 7. August 2008

The One Line Webserver

It can be so easy - once you know. A lot of people do some web development at home. Beginners reach a major frontier once they leave the terrain of pure (X)HTML and CSS. For instance dealing with AJAX in general requires a web server. Mostly you'll find the advice to install one of those great all-in-one packages like XAMPP from apachefriends or to turn to Linux right away. And this is where you'll surely end if you follow your web developer career. But there may be a lot of reasons why you wouldn't want to follow this lane and prefer an inobtrusive and small solution to start with.

All right, here it comes. I'm talking of Windows here. But the solution is applicable to other operating systems as well (if it's needed there at all ...). My advice is to install Python on your machine. This is just a matter of a few clicks once you have grabbed the complete installer package from the download page of python.org. Currently version 2.5.2 is what you should choose. It will propose to install to C:\Python25 which you should do. Make sure that this folder is added to your path. Installing Python isn't a danger or risk. It doesn't bloat your system and can be easiely removed using the uninstaller. But you'll never feel the need to do so.

Now create a folder as the root of your webserver and a subfolder where you put your documents. Let's say we now have ".../MyServer/htdocs". Create a file "MyServer/htdocs/helloworld.txt" with "Hello World!" as content. Open a command line window and navigate to the "MyServer/htdocs" folder. And one single command gets your web server on your local machine up and running:

C:\MyServer\htdocs> python -m CGIHTTPServer

Serving HTTP on 0.0.0.0 port 8000 ...

WARNING: Do not start this server while you're connected to an untrustable net - like the internet - as it may expose your complete machine. Do local testing only!

What basically happens is that you start Python which will look for a python module CGIHTTPServer. The module will then be imported and as it finds out that it's running as a main module it activates "a little test routine" which will run forever until you press CTRL+C and the next http-request is encountered. The "little test routine" in fact is a complete webserver with some abilities. Do the test:

http://localhost:8000/helloworld.txt

and "Hello World!" is what you should see in the browser. You've tasted blood and would like to try some serverside active scripting? That's easy. Add a second folder named 'htdocs/cgi-bin' and place a little text file called "helloworld.py" there. It contains a single line:

print "Hello World!"


So now you have:

MyWebserver/ <- just to organize everything
MyWebserver/htdocs <- your webspace! start server here.
MyWebserver/htdocs/cgi-bin <- place Python scripts here
MyWebserver/htdocs/helloworld.txt
MyWebserver/htdocs/cgi-bin/helloworld.py

Now open this URL in your browser:

http://localhost:8000/cgi-bin/helloworld.py

You got this?
Congratulations!


Python will start helloworld.py as a CGI-script and direct all output to your web page. Amazing, isn't it? There won't be PHP and MySQL unless they already existed on your machine. But Python programmers will now have hundreds of ideas of how to inspect and extend the code. You aren't a Python programmer? Well, become one! It's more than advisable!

extra key words: "poor man's web server"

Dienstag, 15. Juli 2008

TYPO3: Voll im Thema


Zweiter Montag im Monat, es war wieder soweit: Die TYPO3-ug-muenster hat sich getroffen. Ich würde mal so sagen: Ein voller Erfolg. Trotz Ferienzeit sieben Leutchen da, nette Atmosphäre, und wie immer, selbstverständliche Neuigkeiten und neues Selbstverständliches. Das nennt man Anregung. Was der eine nicht weiß, ahnt zumindest der andere. Na gut, manchmal auch nicht, aber das liegt in der Natur der Sache. Die Website zum Thema: typo3ugms.de. Wir haben eine eigene Mailingliste, und was wir untereinander per Mail besprechen läuft hier durch. Dort kann man auch im Archiv nachlesen. Es ist eine Riesenvorteil, dass darin alle Infos gespeichert bleiben und nichts verloren geht. Ein prima Langzeitgedächtnis also. Wer mal schnell sehen will, was los ist, kann das auch hier tun. Ich hoffe, diese typo3.org-Adresse bleibt.

Tipp: Die Mailingliste ist auch als Newsgroup verfügbar! Und es ist am besten, sie mit einem Newsreader zu lesen. Der fragt nach dem Host-Namen des Newsservers, und die lautet: news.netfielders.de. Wie das mit der Newsreader-Einstellung geht, findet man kompakt auf individual.de. Häufig benutzt wird Mozilla Thunderbird. Unter Windows empfiehlt sich der Agent. Meine Erfahrung: Er ist sein Geld Wert! In der Variante als FreeAgent war er bis zur Version 3.x kostenlos und auch sehr gut nutzbar.

Parallel bin ich auch in der Mailingliste eingetragen. So erhalte ich eine Mail, wann immer jemand etwas postet. Zum Lesen und Schreiben benutze ich dann wieder den Newsreader. Dann stimmt die Nachrichtenverkettung, und ich habe alle Nachrichten Newsreader vorrätig. Das ist besser als jede Websuche!

Sonntag, 13. Juli 2008

Knoten in der DSL-Leitung oder was?


Letzten lag bei meinem Provider fast einen Tag lang eine "Großstörung" vor und nichts ging mehr in Sachen DSL und Internet. Kein Wunder, dass ich den gleichen Verdacht hatte, als letzte Woche partout kein Datenpaket eintrudeln wollte. Diesmal war es jedoch anders: Der Router hatte sich eingewählt, und die Linux-Maschine schnurrte wie gewünscht. Dann fiels mir ein: Ach ja, gestern war Windows-Patchday. Einer Ahnung folgend: ZoneAlarm deaktiviert, und siehe da: Es ging wieder.

Nett, (oder Selbstschutz), von meinem Provider kam eine Infomail, dass durch "Einspielen des neuesten Microsoft-Updates (KB951748) in Kombination mit dem Security-Programm ZoneAlarm" es zu Störungen beim Internetverkehr kommt. Na, das ist doch mal eine Info. Warten wir also ab, bis der Patch zum Patch da ist oder ZoneAlarm angepasst wurde, so dass sich beide wieder vertragen.

Hhm, das ging ja schnell: Hier sind sie schon, Aufklärung und Workaround. Noch besser: Jetzt auch in deutscher Sprache.

Freitag, 11. Juli 2008

Neues vom Eszett: Jetzt gibt's das S nicht nur scharf, sondern auch groß


In meinem Ausweis steht Bleß. Aber auch Bless. Was gilt denn nun wann? Und längst nicht jeder auf der Welt weiß mit diesem "ß" etwas anzufangen. Was hat es mit diesem seltsamen Buchstaben auf sich? Schau nach: ß in Wikipedia. Seit 130 Jahren wird darüber diskutiert, ob es nicht auch eine Form dieses Buchstabens in großer Schreibweise, also in Versalien geben solle. Nun ist es soweit: In ISO-10646 und Unicode 5.1 ist er jetzt enthalten und somit technisch - als Zahlenwert - schon einmal definiert. U+1E9E ist sein Unicodewert (Wikipedia über das große ß). Bleibt die Frage, wie lange es dauern wird, bis die Schriftdesigner für dieses Symbol auch eine Glyphe finden, die sich ausreichend von ß,S,B unterscheidet. Und wie lange es dauern wird, bis diese dann Einzug in die Fontdateien hält. Zur Zeit ziehen da bei mir nur Fragezeichen auf - siehe Abbildung. Tipp: Ausgesprochen nützlich ist www.utf8-zeichentabelle.de. Diese Webanwendung hilft bei der Recherche im Lande Unicode.

Mittwoch, 9. Juli 2008

Blogstart

Jetzt hat's also auch mich erwischt. Wie's aussieht, ist ein Leben ohne Permanentnotizen ja kaum noch führbar - zumindest, wenn man sich in der Infoflut der Informationstechnologien tummelt. Gehen wir's also an: Hier ist ein Blog. Der, die, das? Jedenfalls meins, meiner, meine! Mal sehen, was sich damit so treiben lässt.