Dies ist das Blog Archiv von Jörn Horstmann
Für aktuelle Posts könnt Ihr mir auf Google+ oder Twitter Twitter folgen.
"Dies ist das Blog Archiv von Jörn Horstmann" vollständig lesen
Für aktuelle Posts könnt Ihr mir auf Google+ oder Twitter Twitter folgen.
"Dies ist das Blog Archiv von Jörn Horstmann" vollständig lesen
VIM kann zwar in Hinsicht auf Kontextsensitive Hilfe (noch) nicht mit aktuellen Entwicklungsumgebung mithalten, mit diesem Tip ist es aber möglich während dem Tippen den Prototypen und die benötigten Parameter einer Funktion anzuzeigen.
Update 2007-08-06: Links zu den XSL Stylesheets hinzugefügt
In das Hilfesystem von VIM lassen sich auch eigene Dokumente einbinden. Da ich häufig in PHP programmieren habe ich mich daran gemacht das PHP-Manual in das entsprechende Format zu konvertieren.
Update 2007-08-06: Das Skript zum erstellen der Hilfedatei steht jetzt zum Download bereit. Damit kann nun jeder eine aktuelle Version erstellen. Weitere Fragen zu dem Skript kann ich leider nicht beantworten da es ziemlich genau zwei Jahre her ist das ich das letzte mal etwas mit PHP entwickelt habe.
ANTLR ist ein Tool zum Erstellen von Parsern, die Abkürzung steht für "ANother Tool for Language Recognition". Die dritte, stark überarbeitete Version ist gerade in der Betaphase und kann von http://antlr.org/ heruntergeladen werden. Dieses VIM-Script bietet Syntax Highlighting für die Elemente von ANTLR Parsern und Lexern.
Hier ein VIM-Script das um JSON-Dateien hübscher darzustellen.
"Syntax Highlighting für JavaScript Object Notation" vollständig lesen
JavaScript Object Notation (JSON) ist ein einfach zu lesendes und zu parsendes Datenformat. Es basiert auf der Syntax von Array- und Objectdeclarationen in Sprachen wie JavaScript und Python.
Hier ist ein Parser für dieses Datenformat in der Programmiersprache Scheme.
Der Quellcode zeigt wie man JFlex und Antlr kombinieren kann um einen Parser für PHP zu entwickeln. Der Parser gibt lediglich die Lexer-Token und den Syntaxbaum aus. Ein Testscript vergleicht dabei die Ausgabe des Lexers mit der Tokenizer-Extension von PHP. Der Parser ist weniger getestet und hat sicher noch einige Bugs da die Grammatik von lalr/yacc nach la(1) transformiert werden musste.
Der Code ist vermutlich eher für Lernzwecke interessant, wer PHP Quellcode unter Java ausführen will sollte sich Cauchos Quercus mal ansehen.
Diese Klasse erzeugt eine Debugausgabe eines Objektes, Arrays, Liste oder Map ähnlich der print_r oder var_dump Funktion in PHP. Es wird nicht überprüft ob die Struktur rekursiv ist, stattdessen muss die maximale Tiefe angegeben werden bis zu der verzweigt wird.
Das Ausgabeformat orientiert sich an der JavaScript Object Notation.
Diese Klasse ist ein Wrapper für Arrays Primitiver Datentypen. Der Zugriff auf
einzelne Elemente geschieht dabei über Reflection. Die Funktionalität
entspricht ansonsten der Methode java.util.Arrays.asList
.
"List Wrapper für Arrays primitiver Datentypen" vollständig lesen
Hier mal wieder ein Benchmark um die Geschwindigkeit von C, C# und Java zu vergleichen. Das Programm berechnet Primzahlen einmal mit dem Sieb des Eratosthenes und einmal nach einer Brute-Force Methode.
Dieses XSLT Template formatiert einen Text als JavaDoc Kommentar indem
dieser in '/**
' und '*/
' eingeschlossen wird und
jeder Zeile ein ' * ' vorangestellt wird. Die Einrücktiefe kann als Parameter
übergeben werden.
Kommentare sind schön und gut, so lange sie mit dem Quellcode übereinstimmen. Dank JavaDoc kann aus ihnen auch eine übersichtliche Dokumentation erzeugt werden. Für triviale Methoden wie Getter und Setter ist der Aufwand, die Kommentare zu schreiben und mit dem Code synchron zu halten allerdings unverhältnismäßig groß. Dieses PHP-Script erzeugt daher die Dokumentation für diese Methoden automatisch aus dem Quellcode. Das Script kann sowohl an der Kommandozeile mit der Java Datei als Parameter aufgerufen werden als auch als Filter den Java Code von der Standardeingabe lesen.
"Getter und Setter automatisch dokumentieren" vollständig lesen
Auf weblogs.oreilly.com wird gerade vorgestellt, wie man mit einem vim Plugin komfortabel verschiedene Unicode Anführungszeichen eingibt. Eine einfache Version für deutsche typographische Anführungszeichen habe ich seit einer Weile auch in meiner .vimrc. Da ich größtenteils Quellcode bearbeite sind diese allerdings nur für Latex Dateien aktiviert. Hier die nötige Konfiguration:
autocmd FileType tex inoremap <buffer> " „“<LEFT> autocmd FileType tex inoremap <buffer> ' ‚‘<LEFT>
Links zu Empfehlungen des W3C und den deutschen Übersetzungen, wenn vorhanden.
Einige meiner Blog-Einträge enthalten HTML-Entities, z.B. zur Kodierung von Umlauten. In den RSS und Atom Feeds sind diese Entities allerdings nicht bekannt und verursachen so eine Fehlermeldung vom XML Parser. Um dieses Problem zu beheben habe ich die rss.php so modifiziert, dass den Feeds eine passende Doctype Deklaration vorangestellt wird.
Beim Testen mit dem Feed Validator stellte sich dann noch heraus dass die Namespace Angabe Fehlerhaft war und ein rdf:about Attribut beim channel Element fehlte. Der komplette Patch ist an angehängt.
Ich habe mich heute mal mit Hibernate beschäftigt und bin dabei auf einen Bug im MySQL Connector gestossen. Die Fehlermeldung sah folgendermassen aus:
Ich habe mich zwar bisher noch nicht näher mit Ruby und Rails beschäftigt, aber dieser Artikel über die Anbindung an SAP sieht sehr Interessant aus.
Einige Abkürzungen um XSLT-Dateien konfortabler zu editieren.
Runterladen und per autocommand einbinden:
autocmd FileType xslt source c:\programme\vim7\xslt.vim
Eine Formelsammlung die ich im November 2003 für eine Mathe-Vorlesung erstellt habe.
"Formelsammlung Statistik und Wahrscheinlichleitsrechnung" vollständig lesen
Ein minimales Beispile für die Verwendung des SAX-Parsers in Python. Ursprünglich geschrieben am 2004-05-26
Zwei angenehme und kontrastreiche Farbschemen für VIM. Diese funktionieren sowohl in der GUI als auch auf der Konsole.
Im Mai 2004 hatte ich mal versucht das Adressbuch meines Siemens S55 auszulesen. Die Daten sind in einer Datei mit dem Namen "5f07.adr" gespeichert, die sich z.B. mit der Date Suite auf den PC übertragen läßt. Nach ein Paar Stunden mit einem Hex-Editor kam folgendes Python-Script dabei heraus:
In Entwicklungsumgebungen ist es ja inzwischen üblich mit Templates und
Wizards zu programmieren, dies geht natürlich auch mit VIM. Dieses Script
stellt einige Abkürzungen zur Verfügung, aus sout"Hello World!"
wird z.B. System.out.println("Hello World");
.
Auch try/catch oder Schleifen lassen sich so einfacher
eingeben.
Die Erstellung von get/set-Methoden wird besonders vereinfacht, F2 erzeugt eine Get-Methode, F3 eine Set-Methode und F4 beides. Dabei wird jeweils nur nach dem Typ und Namen der Variable gefragt.
java.vim, automatisch einbinden per
autocmd FileType java source c:\programme\vim7\java.vim
: Die Messungen wurden damals mit Java 1.4 und der Client-VM durchgeführt. Mit Version 1.5 und der Server-VM sollte der Unterschied deutlich geringer Ausfallen. Ich bin allerdings noch nicht dazu gekommen erneut zu messen.
Ein genetischer Algorithmus ist eine Metaheuristik die zur Lösung von NP-schweren Optimierungsproblemen eingesetzt werden kann.
Bekannte Probleme zu deren Lösung genetische Algorithmen eingesetzt
wurden sind das Resource Constrained Project Scheduling Problem (RCPSP)
,
das Travelling Salesman Problem (TSP)
und das Vehicle Routing
Problem (VRP)
.
Da die Laufzeit des Algorithmus bis zum Finden einer guten Lösung mitunter sehr lang sein kann spielt die Performance einer Implementierung eine große Rolle. Im folgenden wird daher der Performanceunterschied zwischen einer Implementierung in C und einer äquivalenten Implementierung in Java untersucht.
"Performance von C und Java bei Genetischen Algorithmen" vollständig lesen
Einen guten Einstieg in die Assembler-Programmierung bietet das
Buch Programming From The Ground Up
von Jonathan Bartlett,
das auch als Ebook erhältlich ist.
Die Beispiele im Buch beziehen sich allerdings auf Linux und können und
Windows nicht ohne Änderungen verwendet werden, da sie direkt auf
Kernelfunktionen zugreifen.
Ein einfaches Beispiel wie man XML-Dateien mit dem SAX-Parser einliest.
Ein kleiner RSS-Parser inklusive Grafischer Oberfläche. Die Einträge werden mit einem Swing TableModel dargestellt.
Bei der Erzeugung von Textdateien wie CSV oder SQL kommt es öfter vor dass man den Ausgabestring in Anführungszeichen einschließen will. Dieser darf dann natürlich selber keine Anführungszeichen enthalten oder diese müssen mit einem Backslash maskiert werden. Das folgende Template ersetzt vorgegebene Zeichen an Hand einer Tabelle.