Archiv 2007
Mitschnitte vom 24C3
geschrieben von: reaper, 30.12.2007
Nachdem ich dieses Jahr dann doch wieder nicht in Berlin bin und es in den letzten Jahren ewig gedauert hat bis das Bildmaterial vom Chaos Kongress verfügbar war scheinen die Videos dieses Jahr quasi on the fly verfügbar zu sein. Ich kann das eigentlich nur begrüßen. Eine liste der Mirrors findet sich unter http://events.ccc.de/congress/2007/Conference_Recordings
Smultron Texteditor für den Leoparden
geschrieben von: reaper, 30.12.2007
Smultron
Unter OSX habe ich jetzt schon eine ganze Weile nach einem kleinen, einfachen Editor gesucht. Das mitgebrachte TextEdit lässt sich zwar auch für Textdateien gebrauchen ist aber doch ganz klar als Rich-Text-Editor vorgesehen der Word und RTF Files verarbeitet. Ihm fehlen bequeme Mehrdokumentansicht ebenso wie Syntaxhighlighting. Zwischendurch war ich zu jEdit gewandert, aber fürs schnell mal in eine Datei reinschauen ist jEdit dann eigentlich auch schon wieder zu mächtig.
Jetzt bin ich auf Smultron einem kleinen Texteditor mit Syntax Highlighting für die verschiedensten Dateien. Der Editor startet rasend schnell, bindet sich perfekt in die Oberfläche von OSX ein und ist genau das was mir noch gefehlt hat. Die Erdbeere als Icon ist zwar etwas verwirrend aber das Innenleben ist dafür um so angenehmer.
Die Oberfläche teilt sich in einen Editor, eine Menuleiste und eine Dateileiste mit den aktuell offenen Dateien. Über die Menuleiste kann man schnell die wichtigsten Dateioperationen erreichen und das aktuelle Dokument durchsuchen. Dank der Seitenleiste hat man schließlich schnellen Zugriff auf die aktuell offenen Dateien was die tägliche Arbeit mit kleinen Dateien ungemein erleichtert.

Perl wird 20
geschrieben von: reaper, 18.12.2007
Heute vor 20 Jahren wurde die Version 1.0 der bekannten Skriptsprache Perl freigegeben. Inzwischen ist Version 5.8 aktuell und Version 6 ist schon im Jahr 2000 angekündigt worden. Man mag zu Skriptsprachen stehen wie man will aber Perl hat die Welt in verschiedenster Weise bereichert. Nicht zuletzt wäre manche Webanwendung nie geschrieben worden ohne Perl. Vielleicht wäre uns zwar der Schrecken von PHP erspart geblieben aber wer weiß was sonst schlimmeres über uns gekommen wäre, ja vielleicht müssten wir alle ASPs schreiben *grusel*
Also Happy Birthday Perl :)






Code Conventions
geschrieben von: reaper, 13.12.2007
Will man im Team gute Software entwickeln muss man sich einfach an gewisse Konventionen halten. Besonders bei Entwicklungsprozessen im Rahmen eine Extreme Programming-Projektes, bei dem der Code selbstdokumentierend sein soll ist es wichtig das der Code einfach und übersichtlich gehalten wird. Natürlich gibt es dabei eine Menge persönlicher Präferenzen. Gestritten wird da um Einrückungen, Klammerpositionen und Zeilenlängen. Wie man es macht ist am Ende eigentlich egal, nur einheitlich sollte es sein und vor allem nicht so:
// schlechter code
public function hasNext() {
$tmp = $this->position;
if ($this->valid($tmp++)) {
return true;
} else {
return false; } }
Denn räumt man den Code ein wenig auf hat man zwar mehr Lines of Code aber das ganze wird sicher nicht langsamer, denn eigentlich ist die Syntax die gleiche, nur findet man zum Beispiel Klammerfehler leichter und wie ich finde kann man auch die Funktion schneller überblicken, wenn man die zusammenhängenden Strukturen statt im Kopf gleich im Code sieht:
// c style code
public function hasNext()
{
$tmp = $this->position;
if ( $this->valid( $tmp++ ) )
{
return true;
}
else
{
return false;
}
}
Tatsächlich halte ich persönlich in diesem Zusammenhang den Java Coding Style für nicht optimal. Eher sprechen mich da die GNU Coding Styles an. Denn wenn die öffnenden geschweiften Klammern auf einer neuen Zeile stehen und der Code eingerückt auf der wiederum nächsten beginnt, dann sieht man wesentlich schneller was da zusammengehört. Und ganz ehrlich wenn der Raum zwischen öffnender und schließender Klammer nicht mehr auf eine Seite passt ist eh etwas falsch ;)
// java coding style
public function hasNext() {
$tmp = $this->position;
if ($this->valid($tmp++)) {
return true;
}
else {
return false;
}
}
Bugzilla Mails über Header filtern
geschrieben von: reaper, 11.12.2007
Auf der Arbeit nutzen wir Bugzilla für die Fehlerverwaltung, dieses schickt per default bei allen Änderungen eines Bugs eine Mail an die betroffenen Entwickler. Bisher hatte ich nur nach dem Absender (also dem Bugzilla Server) sortiert und die Bug-Reports in einen extra Ordner geschoben. Nun bekomme ich aber inzwischen von mehreren Projekten Bugs zugesand was darin resultiert das diese wild durcheinander purzeln. Bei einer Suche nach besseren Filtermöglichkeiten stieß ich dabei auf die Header die Bugzilla seit Version 3 den Mails hinzufügt:
X-Bugzilla-Reason: CC X-Bugzilla-Type: newchanged X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: Amazing Website X-Bugzilla-Component: frontend X-Bugzilla-Keywords: X-Bugzilla-Severity: enhancement X-Bugzilla-Who: reporter@some.com X-Bugzilla-Status: NEW X-Bugzilla-Priority: P2 X-Bugzilla-Assigned-To: assignee@some.com X-Bugzilla-Target-Milestone: X-Bugzilla-Changed-Fields:
Damit werden alle wichtigen Fakten über den Bug verfügbar. Über das Product lassen sich z.B. die Bugs prima einzelnen Projekten zuordnen und man kann auch komplexe Filter basteln die z.B. eigene Bugs automatisch als TODO flaggen.
19 Regeln wie man seine Webseite versaut
geschrieben von: reaper, 03.07.2007
19 Regeln wie man seine Webseiten versauen kann finden sich auf Josiah Coles Webseite, mein persönlicher Favorit dabei ist ganz klar Nummer 19:
Firefox Extensions bei der Entwicklungsarbeit
geschrieben von: reaper, 25.06.2007
Der Grund warum der Firefox bei mir eigentlich überall der Browser Nummer 1 ist, sind die Extensions. Sicher ist es auch schön ein konsistentes und stabiles Interface zu haben aber durch die Extensions wird eine ziemlich mächtige Maschine aus dem kleinen Fuchs ;)
Wie ich heute "schmerzhaft" erfahren musste hat das auch Schattenseiten. Tatsächlich habe ich fast den ganzen Tag damit verbracht einem unerwarteten Seitenrefresh nachzujagen. Dabei alle technischen Möglichkeiten auszuschöpfen um dann zuerst voller Schrecken festzustellen das ich meinen Fehler mit dem IE nicht reproduzieren konnte und dann das es in anderen Füchsen funktionierte. Der logische Schluß daraus war dann das es eine Extension sein müsse. Somit deaktivierte ich alle Extensions und reaktivierte diese wieder Stück für Stück.
Am Ende ließ sich der Fehler nach dem reaktivieren der Adblock Plus Extension reproduzieren. Nach weiterer Suche fand sich dann der wahre Grund, im Code der Seite die den Fehler aufwies fand sich das Google Analytics Schnippsel, welches durch den Adblocker gefiltert wurde. Ein Deaktivieren der Block Regel reichte also aus um das Problem zu beseitigen. Warum es hier zu einem Refresh kam ist damit zwar nicht geklärt, laut dem Forum der Extension ist das Problem aber schon anderen auf die Füße gefallen.
Einen Schluss kann ich jedoch ziehen, die Extensions sind mächtig, aber bei der Entwicklungsarbeit können Sie durchaus Probleme aufwerfen die sich im Alltag nicht äußern würden und bei seltsamen Systemverhalten sollte man eher mal nen zweiten Browser konsultieren. Es muss ja nicht unbedingt der IE sein ;)
Apache und PHP zum Schweigen bringen
geschrieben von: reaper, 18.06.2007
Nicht das eine wirkliche Sicherheit bringt, aber es ist doch schön wenn man dem Apachen und auch PHP ein wenig Geschwätzigkeit abgewöhnen kann. Per default zählt der Indianer nämlich sämtliche aktiven Erweiterungen und seine genaue Version auf. PHP selbst klebt in jeden Header den es angefasst hat mal eben noch seine Version rein, damits auch jeder weiß. Zum einen sind das Informationen die für den Besucher der Webseite unwichtig, für den Admin bekannt und für Skript Kiddies eine Herausforderung sind ;)
Zuerst also dem Apachen seine Geschwätzigkeit abgewöhnen, dazu in die /etc/apache2/apache.conf (so unter Debian) die folgenden Zeilen einfügen:
# ServerTokens # This directive configures what you return as the # Server HTTP response Header. The default is # 'Full' which sends information about the OS-Type # and compiled in modules. # Set to one of: # Full | OS | Minor | Minimal | Major | Prod # where Full conveys the most information, # and Prod the least. # ServerTokens Prod
Damit verwandelt sich der ausführliche Server Header in ein knappes Server: Apache. PHP kann man über einen Eintrag in der /etc/php5/apache2/php.ini zum Schweigen bringen. Einfach den Schalter expose_php auf Off setzen:
; Decides whether PHP may expose the fact that it is ; installed on the server (e.g. by adding its signature ; to the Web server header). It is no security threat ; in any way, but it makes it possible to determine ; whether you use PHP on your server or not. expose_php = Off
Nach der Korrektur den Webserver neustarten und die Header mit wget oder LiveHTTPHeaders anschauen ;) Wirkliche Sicherheit bringt das alles nicht, aber warum soll man denn immer allen alles zeigen ;)
Automatisierte Tests für Webseiten mit TestGen4Web
geschrieben von: reaper, 29.05.2007
Automatische Tests sind eine feine Sache nur leider im Falle von Webfrontends recht umständlich zu erstellen. TestGen4Web ist hier ein einfaches Tool welches ich sehr zu schätzen gelernt habe. Im Grunde handelt es sich bei dem Firefox Plugin um eine Art Makrorekorder die alle Clicks die man auf einer Webseite macht aufzeichnet. Die Aufzeichnung lässt sich als XML-Dokument abspeichern und nachträglich bearbeiten.
Das ganze macht das Testen von langen Workflows in der Regel schon um einiges einfacher, aber es geht noch besser. Nutzt man den zugehörigen Translator kann man auch Vollautomatische Tests für generieren, so ist es unter anderem Möglich HttpUnit-Tests zu generieren.
Which programming language are you?
geschrieben von: reaper, 07.05.2007
In verschiedenen Blogs fand ich diesen leicht anderen aber umso nerdigeren Nerd-Test ;) Abgesehen davon das ich kaum etwas in Python gecoded habe außer einem kleinen Benchmark letztes Jahr finde ich es schon interessant wie man hier meine Persönlichkeit getroffen hat :P Ich mag tatsächlich keinen aufgeblähten Code mit unverständlichen Bestandteilen :P




