Too Cool for Internet Explorer

Archive for August 2005

HACK #1: Reguläre Ausdrücke in VIM

Thursday, 18. August 2005
11:10:33 (+0000)

Haben Sie sich schon mal überlegt, was man mit dem VIM so alles machen kann. Nehmen wir ein kleines Fallbeispiel, um eine Problematik aus der Praxis etwas plastischer darstellen zu können.

Nehmen Sie an, Sie hätten eine C++ Source-Code File mit über 10.000 Zeilen Code. Knapp die Hälfte davon, sollen solche JavaDOC-Kommmentare sein, wie der folgende:

/**
* Escape 5 characters – ‘&’, ‘”‘, ‘>’, ‘< ' and '\'' - to the standard
* XML quotation - "&", """, ">", "<" and "&apros;".
*
* @param char* buf: output variable, perhaps with escaped characters
* @param char* data: text, which should be checked and perhaps corrected
* @param int* len: normally value of strlen(buf), means the start point of appending
* @return 1: successfully done
* @return 0: means (buf==NULL), alloc mem before!!!
* @return -1: means (data==NULL)
*/

Nun ist dem Author der C++ Source-Code Datei aber ein Fehler unterlaufen. Es darf nämlich mehrere @param’s geben, aber nur einen @return, der aber mehrzeilig sein darf! Nun können Sie fast 5000 Zeilen mit der Hand durchgehen und den Fehler korrigieren, oder Sie verwenden REGEX – reguläre Ausdrücke.

Zunächste können Sie sich die Fehler einmal markieren lassen, wenn Sie folgendermaßen in VIM suchen. Voraussetzung ist, dass in der ersten Zeile immer “@return 1: …” steht:

/@return [^1].*:

Hiermit sagen Sie dem improved VI, dass er jeden regulären Ausdruck suchen (‘/’) soll, der mit “@return ” anfangen soll, der danach keine 1 ([^1]) haben soll und bis zum ‘:’ beliebige Zeichen haben darf. Das ist doch genau, der Fehler :-) Wenn Sie zuvor noch

:set hls

sagen, zeigt Ihnen der VIM der Fehler auch hervorgehoben.

Um nun das “@return ” am Anfang jeder 2. Return-Zeile wegzulöschen, muss dieser REGEX erst einmal in Substrings zerlegt werden, um später auf einen dieser zuzugreifen und so sagen zu können, dass einer dieser Substrings stehen bleiben soll – nämlich der Return-Wert zzgl. des ‘:’. Dies geschieht mit gequoteten (‘\’) runden Klammern. Nun fehlt noch das Schlüsselwort, um auf den 2. Substring – also den Return-Wert – zugreifen zu können. Dies geschieht mit einer gequoteten (‘\’) Zahl – hier die \2:

:%s/\(@return\) \([^1].*\)/\2/g

Mit dem :%s sagen Sie VIM, dass er etwas suchen und ersetzen soll – gefolgt von dem regulären Ausdruch, den er suchen soll, gefolgt von dem Ausdruck, durch den er ihn ersetzen soll. Das ‘g’ am Schluss steht dafür, dass er dies im gesamten Dokument tun soll.

:%s/[GESUCHER_AUSDRUCK]/[NEUER_AUSDRUCK]/g

Gutes REGEX-VIM-Tutorial: TU-Chemnitz

Wasser als Datenspeicher

Sunday, 07. August 2005
13:16:58 (+0000)

Gestern beim Abendessen ist es mir gekommen, ob es denn nicht möglich wäre, Wasser als Datenspeicher zu nutzen. Das Wasser Informationen enthält, ist ja schon lange bekannt. Bei Trinkwasser beispielsweise ist Umkehrosmose schon lange ein Begriff – im Grunde ist dies nichts anderes, als ein Verfahren um dem (Trink-) Wasser bestimmte Informationen mitzugeben.

So müsste es doch auch möglich sein, andere Daten im Wasser speichern zu können. Fraglich bliebe aber dann, ob Viren (im informationstechnischen Sinne) Menschen krank machen können und ob dann ein Abguss ein “rm -rf $FILE” ablösen würde :-)

Aber – meiner Meinung nach – wäre es schon denkbar. Naja mal sehen, wo die Forschung und Entwicklung (F&E) in 10-50 Jahren steht.

Windoze sucks!!!

Tuesday, 02. August 2005
17:53:38 (+0000)

Heute habe ich zum 2. Tag wieder versucht meine Arbeit beim Siemens zu erledigen – schließlich werde ich als Student nicht umsonst bezahlt. Statt dessen hatte ich wieder nur Probleme mit den Windoze-Kisten. Gestern bereits fing es an, nachdem der PC nach einem CAT-Update nicht mehr laufen wollte und sich in den Zustand einer Reboot-Loop versetzt hatte. Heute habe ich feststellen müssen, dass auf dem Abteilungsnotebook, dass ich nach dem gestrigen GAU bekommen hatte, Büro 2000 installiert ist. Leider funktioniert aber Ausguck 2000 mit den neuen M$ Exchange Einstellungen nicht mehr :-( sodass ich heute vergeblich versucht habe, Büro 2004 zu installieren. Nur dafür war *angeblich* zu wenig Speicher vorhanden (um es genau zu sagen 471 MB) – das ist jedenfalls die einzige Erklärung, warum das Setup ohne Meldung ständig beendet wurde. Ab morgen werde ich mir eine SUN-Kiste greifen, da kann man wenigstens anständig daran arbeiten!!! Nur dann komme ich leider nicht, an meine PC-Mails, die ich für meine Arbeit benötige :-(

Ich sage nur, dieses Windoze geht mir so ziehmlich gegen den Strich *grrr*