Archive for Januar 2009

h1

Perl rocks

Januar 30, 2009

Charly und ich haben die Aufgabe PHP-Code nach bestimmten Qualitätsstandards zu überarbeiten. Zum Beispiel dürfen für Variablennamen keine Abkürzungen verwendet werden. Man könnte jetzt also eine Datei nach solchen falschen Variablennamen durchsuchen und sie mit den Besseren ersetzen, indem man die Editor-Funktionen für globales Ersetzen verwendet. Das Problem ist, dass Variablen nicht nur in einer Datei verwendet werden, sondern teilweise überall im Projekt, verstreut in verschiedenen Dateien. Welcher Editor kann aber von Hause aus rekursiv in allen Dateien des Projekts Variablennamen ersetzen? Meiner jedenfalls – soweit ich weiß – nicht.

Eine Lösung ist Perl in Verbindung mit find:

perl -pi -e ’s/$schlechteVar/$guteVariable/g‘ `find . -name „*.php“`

Das ersetzt alle Vorkommen von ‚$schlechteVar‘ mit ‚$guteVariable‘ in allen Dateien unterhalb des aktuellen Verzeichnisses, die auf .php enden.

Eine weiterer Standard wurde festgelegt, der besagt, dass alle geschweiften Klammern auf eine einzelne Zeilen müssen. Also statt z.B. (wie eigentlich üblich):

if (Bedingung) { …

soll es so aussehen:

if (Bedingung)

{

Auch hier hilft wieder Perl! Diese beiden Befehle, sollten dafür sorgen, dass alle geschweiften Klammern auf einzelnen Zeilen landen:
perl -pi  -e ’s/([^[:blank:]]+?)[[:blank:]]*?{/$1\n{/g‘ `find . -name *.php`

perl -pi -e ’s/}[[:blank:]]*([^[:blank:]]+.*?\n$)/}\n$1/g‘ `find . -name *.php`
Wie gesagt: Perl rocks!
Advertisements
h1

Django Cheatsheet

Januar 29, 2009

Hab gerade eine recht nützliche Übersicht, bestehend aus 2 A4 Seiten, über Django gefunden. Es ist vielleicht nicht der Renner, aber einen Blick auf jeden Fall wert:

http://www.mercurytide.co.uk/news/article/django-cheat-sheet/

h1

Latex fullpage.sty not found

Januar 18, 2009

Ein Problem, eine Lösung. So gefällt mir Linux:

charly@lucy:~/texmf$ sudo apt-get install texlive-latex-extra

h1

awk und syncN

Januar 14, 2009

awk hat mir tatsächlich geholfen 😉 wer hätte das gedacht. Ich glaube ich habe die kleine Skriptsprache deutlich unterschätzt.

Aber von Anfang an: In meinem Skript syncN gibt es eine Funktion „–check“. Die zwei Files miteinander vergleicht. Bisher nur über das Datum. Das sieht bis jetzt so aus :

check ()
{
	ssh user@host "ls -lah /Route/to/SyncDir/ > /tmp/checkreturn"
	scp user@host:/tmp/checkreturn /tmp/checkreturn
	cat /tmp/checkreturn
	rm /tmp/checkreturn
}

Die Ausgabe des ganzen ist relativ unschön.

insgesamt 352K
drwxr-xr-x 2 noqqe noqqe 4,0K 2009-01-09 16:10 .
drwxr-xr-x 7 noqqe noqqe 4,0K 2009-01-13 12:29 ..
-rw-r–r– 1 noqqe noqqe 337K 2009-01-14 20:07 $FILE

Jetzt gibt es da wunderschön, awk.

ssh user@host "ls -lah /Route/to/SyncDir/ | awk '{ print $6 " " $7 }' > /tmp/checkreturn"

und schon bekommt man nur noch das Datum und die Uhrzeit 😉

2009-01-14 20:09

Demnächst gibts übrigens zusätzlich zur wunderschönen awk Ausgabe noch einen md5 Summen Vergleich 😉

h1

Zeilen aller Dateien des Ordner rekursiv zählen (bash)

Januar 14, 2009

Gestern wollte ich zählen, aus wieviel Zeilen Code ein Projekt an dem ich programmiere besteht. Darum sollten alle Zeilen in den Dateien und den Unterordnern des aktuellen Ordners gezählt werden. Das hat sich dann als schwieriger rauszufinden herausgestellt als ich zuerst annahm. Lange Rede kurzer Sinn, hier die Lösung:

charly@lucy:~/py$ wc -l `find -iname „*.py“`

Zu beachten sind die Anführungszeichen um .py, die verhindern, dass „find“ bei falschen Dateinamen abbricht. In diesem Beispiel werden, wie man leicht erkennen kann, nur Dateien die auf  „.py“ enden gefunden. Wer die Suche einengen will, braucht dagegen etwas kompliziertere Parameter. Hier schließe ich nun den ordner „framework“ von der Zählung aus:

charly@lucy:~/py$ wc -l `find -iname „framework“ -prune -o -iname „*.py“`

Prune dient zum Ausschließen von Ordnern aus der Suche, und -o dient zum Verbinden mehrer Befehle. Würde man zum Beispiel zwei Ordner ausschließen würde dies so aussehen:

charly@lucy:~/py$ wc -l `find -iname „framework“ -prune -o -iname „django“ -prune -o -iname „*.py“`

„wc“ kann übrigens neben den Zeilen (-l) auch die Wörter (-w), die Zeichen (-m) und die Bytes (-c) zählen.


h1

Der alte Neue

Januar 13, 2009

Hallo, da jetzt noqqe auch schon was geschrieben hat und ich schon länger Teil dieses Blogs bin, mich aber bisher immer im Hintergrund gehalten habe hielt ich es für nötig jetzt auch mal was zu schreiben. Mein echter Name ist Chris, bin einiges jünger als Flo und habe in einigen Bereichen der Programmierung schlechte bis gute Erfahrung (Python, Lua, C++).

Momentan führe ich auch noch sowas wie eine Homepage (Wenn man es Homepage nennen möchte). Die meisten Mitglieder von Codecocktail kenne ich schon länger, am längsten wohl noqqe. Kennen gelernt habe ich sie alle über meinen ehemaligen Blog.

h1

Der Neue

Januar 13, 2009

Guten Morgen allerseits,

Kurz vielleicht ein Wort zu mir: Flo, 19 , komme von www.noqqe.de, habe programmiertechnisch nicht ganz so viel zu bieten wie der Rest der Truppe(lediglich meine Projekte unpack und syncN die in Bash geschrieben sind)  und kenne die 4 von Codecocktail eigentlich schon ziemlich lange 😉 Hoffe ich kann meinen Beitrag zu Codecocktail leisten. Ich freu mich sehr hier mitbloggen zu dürfen 🙂

Auf ein gutes miteinander,
der fünfte im Bunde,

noqqe.