reapers blog
reaper, 07.11.2009
Da hab ich doch in einer .htaccess Datei folgendes gesehen:
AddType application/x-httpd-php php pdf
Wie Gehirnkrank muss man bitte dafür sein. Kein Schwein kann ahnen das man in dieses Verzeichnis was cleverer weise auch noch Download heißt keine PDF-Dateien ablegen kann. Ehrlich dafür gehört der Zuständige kastriert. Allein der Gedanke ein durch ein Skript generiertes PDF aussehen zu lassen wie eine echte Datei indem man sie entsprechend nennt und den Webserver anweist alle PDFs wie ein PHP-Skript zu behandeln lässt mich schaudern.
Wenn man sowas sieht versteht man die Vorurteile gegen PHP-Coder...
tags: development phpreaper, 15.10.2009
Derek Powazek erspart mir mit seinem SEO-Bashing Eintrag viele Worte. All die Gedanken die ich mit SEO (Search Engine Optimisation) verbinde sammelt er in seinem Post. Seine erste These lautet: The good advice is obvious, the rest doesn't work und damit hat der Mann ja so was von Recht. Alles was über gute Inhalte und ordentliche Seitenstruktur hinausgeht ist Unfug. Ebenso Recht hat er mit der These: SEO is poisoning the web, denn statt sich auf gutes Ranking zu konzentrieren und auf Google zu optimieren sollten manche Seiten einfach mehr ordentlichen Inhalt bieten.
Einfach mal den Beitrag lesen, lachen, erleichtert sein und dann den Flamewar in den Kommentaren genießen. Inzwischen hat er seine Meinung zu den Kommentaren auch noch einmal zusammengefasst.
tags: seo fun web developmentreaper, 18.09.2009
Reguläre Ausdrücke (RegEx) sind ein wahrhaft mächtiges Werkzeug wenn sie funktionieren. Einfache Ausdrücke gehen meist schnell von der Hand aber bei komplexen Ausdrücken kann das Testen ziemlich ausarten. Einen schnellen Test findet man unter auf der Seite Regexplanet.
Tools zu dem Thema gibt es natürlich auch, beispielsweise den RegExCoach. Dieser allerdings ist in neuen Versionen nur noch für Windows verfügbar. Für unterwegs ist aber die Online-Lösung durchaus tragbar.
tags: tools development webreaper, 04.09.2009
Große Projekte und vor allem alte Projekte neigen gelegentlich zur Vermüllung, alte Methoden die eigentlich nicht mehr gebraucht werden bremsen den Build-Prozess und schlimmer noch werden langwierig getestet obwohl sie längst nicht mehr gebraucht werden. Das mach den Code zum einen unübersichtlich und zum anderen kostet es Zeit da die Methoden bei größeren Refakturierungen immer mit bearbeitet werden müssen.
Eigentlich, so sagt ja die Theorie passiert so etwas gar nicht, weil man immer ordentlich schaut ob mal Leichen hinterlässt aber Softwareentwicklung ist eben eine moderne Form von Krieg und da sind Leichen nun einmal nichts besonderes. Will man aber ein Projekt entschlacken wird es schwierig diese Leichen zu finden. Hat man eine konkrete Methode an der Hand kann man in Eclipse mittels Strg-G schnell nach Referenzen suchen und Leichen identifizieren aber zum Aufräumen taugt das leider wenig.
Der UCDetector (Unused-Code-Detector) ist nun ein Plugin das genau diese Aufgabe übernimmt und den Code nach Unreferenzierten Methoden und Klassen durchsucht. Es ist dabei nicht gerade schnell aber das Ergebnis ist durchaus gut. Wichtig dabei ist natürlich das man mit dem Tool nur wirkliche Referenzen prüfen kann, seltsame Magie oder Reflektion Aufrufe kann man damit nicht untersuchen. Beim entfernen von altem Code ist also weiterhin Vorsicht angebracht.
Neben den reinen Referenzchecks findet der UCDetector auch Klassen und Methoden die nur in Tests verwendet werden oder gibt Ratschläge für die Sichtbarkeit von Methoden. Wird eine Methode beispielsweise nur innerhalb der eigenen Klasse verwendet schlägt das Tool vor diese doch private zu setzen.
Die Konfiguration könnte etwas besser sein, so habe ich leider keine Möglichkeit gefunden bestimmte Klassen oder Dateimuster auszuschließen was in Verbindung mit generiertem Code teilweise etwas nervig ist.
tags: java development tools eclipsereaper, 05.08.2009
Nachdem mir die Installation der aktuellen Subclipse Version mal wieder ein lokales Repository auf Version 1.6 aktualisiert hat funktionierte der in den Repositories von Ubuntu enthaltene Subversion-Client natürlich nicht mehr. Abhilfe schafft ein Update auf Version 1.6 über das Launchpad-Repository:
https://launchpad.net/~anders-kaseorg/+archive/subversion-1.6
Wieder ein wunderbares Beispiel für die Vorteile von Paketmanagementsystemen.
tags: ubuntu development toolsreaper, 26.06.2009
Seit heute ist die neue Version der Entwicklungsumgebung Eclipse Galileo (aka Eclipse 3.5) im Umlauf. Ich hab gleich mal das PHP-Bundle ausprobiert und bin angenehm überrascht. Viele Details die ich von den Java Views gewöhnt und in der PHP Ansicht vermisst habe sind jetzt dort mit eingezogen. So werden zum Beispiel endlich alle nachfolgenden Vorkommen einer markieren Variablen angezeigt.
Gefühlt ist die IDE auch schneller geworden (ich hoffe mal auf meinem Arbeits-PC hat sich dann auch der Bug beim Öffnen von Dateien erledigt). Auch wenn Eclipse allgemein auf einem modernen PC mit genug Arbeitsspeicher flüssig läuft sind manche Denkpausen schon recht lang :P Allein das Starten dauerte bei mir hier mit Ganymede sowas wie 30 Sekunden und ist jetzt runter auf 15 Sekunden (nicht das die Startzeit wirklich relevant wäre).
Was mit definitiv fehlt ist eine Intgration von SVN. CVS ist mit dabei aber SVN muss mal durch Subclipse immernoch leicht nachrüsten. Da würd ich mich wirklich wünschen das hier mal was out-of-the-box kommt. CVS ist ja nun wirklich ein Großvater unter den Versionskontrollsystemen :P
tags: tools development php javareaper, 21.05.2009
Normalerweise brauche ich zur Arbeit mit Subversion (SVN) keine fette GUI. Das Kommandozeilentool ist leicht zu bedienen und wenn man die grundlegende Arbeitsweise verinnerlicht hat erledigt die automatische Vervollständigung der Zsh den Rest. Bei der Arbeit mit Eclipse habe ich normalerweise noch Subclipse installiert was ein paar nette Features (Vergleich von Revisionen, Annotations, usw.) in die Entwicklungsumgebung integriert.
Die Kollegen mit Windows haben es da teilweise in ihrem Explorer mit TortoiseSVN noch ein Stück komfortabler, denn durch Tortoise sieht man dort auf den ersten Blick ob ein Verzeichnis oder eine Datei bereits versioniert ist, ob sie lokal verändert wurde und was svn status sonst noch so über sie aussagen kann. Unter Linux fehlt mir so ein Tool ehrlich gesagt, es ist schon echt komfortabel auch über den Dateibrowser Zugriff auf die SVN Metadaten zu haben.
Seitens des mit Gnome verknüpften Nautilus Dateibrowsers gibt es neben einer Reihe einfacher Skripte für commit und update auch NautilusSVN welches sich nahtlos in den Dateibrowser integriert. Über das Kontextmenu bietet NautilusSVN alle denkbaren und sinnvollen SVN Funktionen an und zeigt über kleine Symbole auch auf Datei und Verzeichnisebene den Zustand der Dateien an. Sehr praktisch und aufgeräumt wie ich finde. Also eine prima Adaption von TortoiseSVN aus der Windowswelt, nur besser weil Open-Source.
Neben einem fertigen Paket für Ubuntu steht selbstverständlich auch ein Pakete zur manuellen Installation unter anderen Distributionen zur Verfügung.
tags: ubuntu linux tools developmentreaper, 24.02.2009
Um den Platzverbrauch der Tabellen einer Oracle Datenbank zu ermitteln reicht ein simples Query:
select segment_name, bytes from user_segments where segment_type='TABLE'
Um den Platzbedarf einer einzelnen Tabelle zu ermitteln gehts auch direkt:
select bytes from user_segments where segment_name = 'TABLENAME'
tags: development
reaper, 08.09.2008
Ich bin ja ein leidenschaftlicher Eclipse Nutzer. An Netbeans kann ich mich irgendwie nicht gewöhnen. Vielleicht ist das auch nur die Trägheit, oder die Erweiterbarkeit von Eclipse mit verschiedenen Plugins aber der bei Eclipse verfügbare Profiler ist eine Zumutung. Will man mittels TPTP eine Webapplikaton auf einem Server wie Tomcat profilen muss man zunächst einen TPTP Agent installieren, den Applicationserver an diesen binden, in Eclipse noch die Entsprechenden Plugins installieren und kann dann vielleicht Profilen.
Vielleicht äußert sich bei mir darin, das man sich zum Agent verbinden kann wenn dieser genau die selbe Version hat wie das Plugin, aber vielleicht hängt es auch von der Uhrzeit ab. Denn selbst wenn beide Versionen matchen gehts nur manchmal. Ärgerlich muss ich sagen und umständlich wenn man betrachtet wie einfach es bei Netbeans gelöst ist. Hier ist der Profiler gleich mitgeliefert, dem Appserver wird einfach mitgeteilt das er vor dem Start auf den Profiler warten soll was auch klappt. In Netbeans verbindet man sich sich dann zum Profiler, der Appserver startet und die Daten tröpfeln in Netbeans ein.
Funktioniert ohne große Hürden und zwar so das man keine Versionskonflikte haben kann und wenn etwas nicht funktioniert bekommt man sogar hilfreiche Fehlermeldungen. Bei Eclipse geben weder Agent noch Plugin in der IDE eine Meldung aus. Typischer frustrierender Overhead, leider. Ich werd sicher nicht gleich auf Netbeans umsteigen aber der Profiler ist vorbildlich gelöst.
tags: development toolsreaper, 16.07.2008
Selenium ist ein ursprünglich für Akzeptanztests entwickeltes Framework. Unter anderem gibt es Plugins für verschiedene Browser mit denen sich Klickstreams aufzeichnen, bearbeiten und abspielen lassen. Die Streams lassen sich später speichern und erneut abspielen. Das schafft vor allem beim testen komplexer Webfrontends enorme Entlastung für die Tester. Neben dem Browserplugin gibt es auch noch Standalone Versionen die es erlauben vollautomatisch verschiedene Browser zu starten und dort spezifizierte Tests ablaufen zu lassen. Damit ermöglicht es Selenium sogar automatische Integrationstests durchzuführen. Laut dem Wiki der Entwickler ist es sogar möglich Selenium in CruiseControl zu integrieren.
Ich habe mir bisher nur das Plugin angeschaut und der Funktionsumfang geht weit über Testgen4Web hinaus. Was allerdings nicht möglich ist, ist der Export in jUnit oder andere Testframeworks. Selenium setzt immer das vorhandensein von Browsern voraus, egal ob per Plugin, Standalone oder Gridversion.
Tatsächlich sehe ich gerade auf den Seiten von openQA das es auch ein Eclipse Plugin für Selenium gibt. Da bekomme ich doch immer mehr Interesse an dem Tool.
tags: development firefox tools web



