Javas String.replaceAll

The following statement

"foo baz".replaceAll("baz","$bar");

will present you an java.lang.IllegalArgumentException: Illegal group reference exception as the replacement string can contain backreferences to the search pattern as stated in Mather#replaceAll:

This method first resets this matcher. It then scans the input sequence looking for matches of the pattern. Characters that are not part of any match are appended directly to the result string; each match is replaced in the result by the replacement string. The replacement string may contain references to captured subsequences as in the appendReplacement method.

Note that backslashes (\) and dollar signs ($) in the replacement string may cause the results to be different than if it were being treated as a literal replacement string. Dollar signs may be treated as references to captured subsequences as described above, and backslashes are used to escape literal characters in the replacement string.

Luckily, there is an easy solution:

"foo baz".replaceAll("baz",Matcher.quoteReplacement("$bar"));

| Comments (0) »

21-Jul-09



Batchconvert ascii to utf8

Next time i see umlauts in source, I’ll scream. Loud.

In the mean time I try this:

find . -iname "*.java" -exec sh -c 'iconv -f cp1252 -t utf-8 {} > {}.utf8' \;
for i in `(find . -name "*.utf8")`; do mv $i ${i/.utf8/}; done

Before you try this, make a backup of your files. It worked for me but i don’t guaranty that your files won’t vanish.

| Comments (0) »

12-May-09


Understanding

I’d love to understand what makes people create abominations such as this:

if((foo ? !bar : true))
    if(!somethingelse)
        dosomething()

I don’t want to judge anyone, the thing actually worked, but i really want to understand why people don’t see that this is crap. I’m really aware of the fact, that things tends to organically grow, but how can it be achieved to raise awareness to this fact? I mean, i’m probably only a not-totally-bad engineer, but i see things that will break or are just ugly as hell and i want my colleagues to be more aware of pitfalls.

Would make life much easier and probably more conflict free.

| Comments (0) »

08-May-09


JAX2009: Impressionen einer Konferenz (ohne Bilder)

Wie bereits im letzten Jahr war ich auch dieses Jahr 2 Tage auf der JAX, die dieses Jahr in Mainz statt fand.

Nach zahlreichen Konferenzen in den letzten Jahren, u.a. einige DOAGs, werden meine Gefühle bzgl. dieser Veranstaltungen immer gemischter. Ich habe den Eindruck, dass die Schere zwischen guten und schlechten Vorträgen immer größer klafft. Vielleicht eine Folge dessen, dass versucht wird, immer mehr Slots zu füllen.

Bemerkenswert an der JAX dieses Jahr waren natürlich Rails Day an einem Tag, Grails / Groovy Day am nächsten.

Stefan Tilkov hielt einen gut strukturierten Vortrag über REST Technologien im Rahmen des Rails Day. Das, was er präsentierte, hätte von der Thematik auch gut in einige andere Frameworks gepasst, aber trotzdem: Die Präsentation war gelungen. Gute Mischung aus wenigen Folien und Livecoding. Spätestens danach musste dem Zuhörer klar sein, was REST bedeutet. Im selben Track präsentierte Jonathan Weiss “Advanced Deployment mit Rails” in einer Art und Weise, wie ich mir keinen Vortrag vorstelle: Viel zu viele textlich überladene Folien und zumindest fürs Publikum, eine ungünstige Themenwahl. So fiel auch leider das “advanced” weg, was im Rahmen von Fragen wie “Was ist besser, JRuby oder Grails?” (Was ist besser, Apfel oder Birne?) aus dem Publikum wohl auch gut war.

Der Vortrag Rails 3 von Gregg Pollack wurde zwar in einem gänzlich anderem Stil gehalten als Stefans, war aber trotzdem hörenswert: Frei und sicher gesprochen, ohne zu langweilen.

Auch Keynotes können langweilen: Brian Kim von Liferay sprach zum Thema “Architecting your way through recession: an open source survival kit”. Ich habe nicht eine Aussage aus diesem Vortrag behalten.

Im Gegensatz dazu “Fette Maschinen brauchen schlanke Software” von Klaus Alfert, der sehr anschaulich dokumentierte, warum funktionale oder hybrid funktionale Sprachen in den nächsten Monaten und Jahren immer wichtiger werden. Auch er langweilte nicht mit Textwüsten. Passend dazu, Ted Newards “Busy Java Developer’s Guide to Scala”. Ted ist immer wieder das reinste Vergnügen: “What’s your name? – Rüdiger. – Ok, Walther.”

Was ich nicht verstehe, dass teilweise einige Redner augenscheinlich vollkommen unvorbereitet zu einer Konferenz kommen oder aber die Zuhörer mit endlosen Slides, die aussehen wie ein “man ” in Powerpoint langweilen, anstatt Slides zur Motivation zu nutzen und zur Abwechslung einmal frei zu sprechen. Die Vorträge, die mich wirklich innerlich aufgeregt oder mir wörtlich die Augen zufallen ließen, erwähne ich mal nicht namentlich.

Im Gegensatz zur DOAG ist das Publikum auf der JAX jünger und durchmischter, aber auch teilweise deutlich unhöflicher, was jedes Mal bei der Nahrungsmittelausgabe offensichtlich wurde: Sturm auf das Büffet. Oh wie ich es hasse, wenn Menschen komplett alles an Erziehung vergessen, wenn irgendwo kostenloses Essen rumsteht. Generell zum Essen: Liebe Jaxcon Menschen, lasst doch die Gimmicks wie Taschen, Rucksäcke und Zeugs sein und bestellt etwas höherwertiges Catering 🙂

Trotzdem, einige nette Gespräche habe ich geführt, u.a. mal ein paar Kollegen von Codecentric kennen gelernt und einen Vortrag von Mirko gehört (Flush and Clear: O/R Mapping Pitfalls), nachdem ich immer noch über die Sinnhaftigkeit eines select distinct nachdenke am manyToOne Ende einer 1-n Beziehung, um das zusätzliche Select zu sparen ;). Desweiteren traf ich witziger weise einen Kollegen aus Ausbildungszeiten, die Welt ist wirklich klein.

Alles in allem: Eine gute Veranstaltung, 3 oder 4 Tage wären mir aber definitiv zu viel oder ich müsste mir angewöhnen, aus Vorträgen, die mich aufregen, einfach raus zu gehen. Mal schauen, wie es nächstes Jahr wird… Eventuell kann man ja bis dahin DOAG und JAX zusammenwerfen 😉

| Comments (0) »

24-Apr-09