Apache Ant: replaceregexp und HTML

Wer mit Ants replaceregexp HTML suchen und ersetzen möchte, wird recht schnell in Fehler wie

  1. Wert des Attributs "match", das mit Elementtyp "null" verknüpft ist, darf nicht das Zeichen "<" enthalten.
  2. Öffnendes Anführungszeichen wird für Attribut "{1}" erwartet, das mit Elementtyp "id" verknüpft ist.
  3. Auf Elementtyp "replaceregexp" müssen entweder Attributspezifikationen, ">" oder "/>" folgen.

bzw deren englischer Entsprechung

  1. The value of attribute "match" associated with an element type "null" must not contain the '<' character.
  2. Open quote is expected for attribute "{1}" associated with an element type "id".
  3. Element type "replaceregexp" must be followed by either attribute specifications, ">" or "/>".

stoßen. Lösung:

  1. alle "<" durch &lt; ersetzen. Mit "" escapen genügt nicht.
  2. Geöffnete Anführungszeichen müssen geschlossen werden m(
  3. Alle Anführungszeichen durch "&quot;" ersetzen. Mit "" escapen genügt nicht.

PS:

  • Um mehrere Zeilen gleichzeitig zu ersetzen, muss man – etwas uneingängig – das Flag "s" setzen.
  • Um (potentiell) verschachtelte Tags (z.B. DIV) zu ersetzen, immer nicht-"greedy" arbeiten, also z.B. mit (.*?) statt mit (.*)

net.sf.json.xml.XMLSerializer und eckige Klammern

Es gibt einen extrem hartnäckigen Bug in net.sf.json.xml.XMLSerializer: Ein XML-Knoten

wird nicht zum String

sondern zum leeren Array

Jetzt könnte man vermuten, dass CDATA hilft, oder HTML-Sonderzeichen, oder Escapen, oder oder oder. Alles falsch. Der Serializer ist so "klug", dass er alles trimt optimiert und ersetzt, bis er wieder den ursprünglichen String findet, und der Bug zuschlägt. Das meine ich mit "hartnäckig 🙂

Einzige Lösung, die mir eingefallen ist (Verbesserungen werden gerne gesehen!):

PS: Das ist deshalb geringfügig weniger dirty, als es aussieht, weil spitze Klammern Teil des Suchstrings sind. Spitze nicht-escapte Klammern dürfen in (validen) XMLs nur Teil der Struktur sein, deshalb werden hier tatsächlich nur Knoteninhalte, die ausschließlich "[]" lauten, ersetzt.

PPS: Ein ähnliches Problem gibt es mit

aus dem ein Object wird. Ich ersetze es deshalb einfach analog, siehe oben.

Git als offline-Verlängerung von SVN

Ja, dafür ist git nicht gedacht, und ja, git ist viel besser als SVN.

Aber.

Angenommen, man hat ein Projekt im SVN. Und muss nun zum Kunden, bei dem kein Zugriff auf dieses SVN möglich ist. Dann wäre es doch potentiell elegant, das Projekt als git-Projekt auf einen USB-Stick auszuchecken, und gegen dieses portable Repository zu arbeiten. Gesagt, getan:

Dann, beim Kunden, checkt man vom USB-Stick aus:

bzw. arbeitet man dort wie (von git) gewohnt. Später synchronisiert man Stick und lokalen SVN-Checkout, und diesen spielt man zurück in's SVN.

Danke an Arndt! Quellen: [1], [2], [3], git-svn

Windows (Phone) 8 [Update]

Video via Malte.

Die Geräte sind zu groß. (Eine Abart von) Office ist vorinstalliert – hoffentlich gibt das keine Kartellklagen 😉 Die "Rooms" sind cool: Win Phones haben Facebook und Twitter tief verankert, aber das emanzipiert sie davon. Coole Idee. Die Cloudfunktionen sind standard, aber die Integration von iPhone und OS X machen Sinn – und sind nochmal deutlich weniger restriktiv und kontraproduktiv als Apple. "Kids Corner" ist Quatsch, glaube ich 🙂

Übrigens: Es mehren sich positive Stimmen zu Windows (Phone 8) auf Spon (Link1, Link2), aber auch auf apfeltalk (Link1, Link2) und im Facebook-Freundeskreis. Da geht was!

Spon meldet eine Art Tablet/Notebook-Hybrid, mit zugegebenermaßen "nur" Win RT, aber 8-16 Stunden Akkulaufzeit!

Welche Bank?

Tag,

neulich ließ meine Bank mich wissen, dass sie jetzt Gebühren verlangt - "nur für die Leistungen, die Sie auch wirklich nutzen". Tatsächlich bedeutet dies: Kontoführungsgebühren, Gebühren für Überweisungen, für Überweisungsgutschriften (WTF?!), Ausführung von Daueraufträgen, Benutzung der Geldautomaten, ... Nach etwa 20 Jahren heißt es jetzt also auch für mich: Eine neue Bank muss her.

Kriterien:

  1. Kostenloses Konto, Geld abheben, Onlinebanking. Meinetwegen nur eine gewisse Anzahl an kostenlosen Überweisungen (so hatte die KSK es bisher gemacht). Aber ich sehe nicht ein, für Kernleistungen eines Kontos (Geld rein – Geld raus) Geld zu bezahlen, solange ich der Bank jeden Monat eine schier unendliche Menge Geld (=mein Gehalt) zur Verfügung stelle.
  2. Entweder als reine Online-Bank, oder eine mit Filialen in meiner Nähe.
  3. Möglichst dichtes Netz an Geldautomaten
  4. Kreditkarte brauche ich eigentlich nicht, ich habe eine "Amazon"-VISA-Karte mit Punktesystem

Punkt 2+3 sprechen zusammen für die Haspa, aber die hat kein kostenloses Konto. Also eine Onlinebank. Eine kurze Umfrage auf Facebook liefert (tatsächlich nur!) drei Alternativen, die ich im Folgenden kurz vorstellen will. Jede Bank wird in allen Punkten, mit denen je eine Bank wirbt, gegen die anderen gestellt - ohne spezielle Reihenfolge der Punkte:

  1. comdirect:
    1. Laut Wikipedia eine Tochter der Commerzbank, und abgesichert durch den EdB und BdB.
    2. Bei Einrichtung eines Kontos gibts 50 Euro (im vierten Monat; ohne Mindestgeldeingang).
    3. Geld kann man "bei der Cash Group" kostenlos abheben – sonst 5,90 €
    4. Keine Guthabenverzinsung (?)
    5. Kontoauszüge (? "Finanzreport") per Post: "pro Vorgang" 1.50 € Quelle
    6. Kontowechselservice "für bis zu 8 Zahlungsempfänger" (? sollten nicht Leute, von denen ich Geld bekomme, informiert werden? Die "Empfänger" werden schon sehen, dass meine Miete etc jetzt von woanders kommt)
    7. Apps für iOS
    8. (Keine Informationen über das Onlinebanking)
  2. ING-DiBa:
    1. Laut Wikipedia eine Tochter der niederländischen, international tätigen ING Groep, und abgesichert durch den BdB.
    2. Bei Einrichtung eines Gehaltskontos gibts 50 Euro (4 Wochen nach dem 3. Gehaltseingang; bis 15.12.).
    3. Bargeld gibt's kostenlos an "VISA"-Geldautomaten (als Debit-Card). Mit der Bankkarte außerdem in ausgewählten Supermärkten (Bezahlen geht überall).
    4. Keine Guthabenverzinsung – aber ein Tagesgeldkonto mit 2% Quelle
    5. Kontoauszüge per Post (monatlich): 0.55 €
    6. Kostenloser Kontowechselservice Quelle
    7. App für iPhone und Android – interessant schon für die Geldautomaten-Suche
    8. Onlinebanking "professioneller als bei der DKB"
  3. DKB:
    1. Laut Wikipedia eine Tochter der BayernLB. Über Absicherung finden sich Informationen auf der Homepage: BdB und eine "Patronatserklärung der Bayerischen Landesbank".
    2. Keine Aktion für die Kontoeröffnung, dafür ein Punktesystem, das meine Amazon-Karte ersetzen könnte... allerdings haben sie nur merkwürdige Partner.
    3. Geld abheben ist "nur" mit der VISA-Karte kostenlos, diese gibt es ebenfalls kostenlos. Die beiden Konten (Giro und VISA) sind getrennt, das hatte Malte mir auch schon angedeutet. Die VISA-Karte scheint man aber an allen Automaten benutzen zu können? Quelle
    4. 1.55% Zinsen auf's VISA-Konto, 0.5% auf's Giro- ("Internet"-)Konto. Quelle. Der Zinssatz ist variabel Quelle
    5. Kontoauszüge per Post (monatlich): 1 €
    6. Kein Kontowechselservice (?)
    7. keine App (?)
    8. "Unprofessionelleres" Onlinebanking, teilweise mit merkwürdigem Verhalten ("noch eingeloggt", obwohl man sich ausgeloggt hat)

Fazit, in derselben Reihenfolge. 1 Punkt für den/die Sieger in wichtigen Kategorien, 0.5 Punkte für Sieger in unwichtigen Kategorien:

  1. Relatives Unentschieden: Zuerst schien mir die ING-DiBa als Tochter einer ausländischen/internationalen Bank am suspektesten... andererseits sind Commerzbank und BayernLB auch nicht gerade für ihre Zuverlässigkeit berühmt, und das FSB nennt die ING Gruppe "systemrelevant" – sprich: Zu schützen. Je 1 Punkt, Tendenz ING-DiBa.
  2. Willkommensgeld gibt's am ehesten bei der comdirect, dann bei der ING-DiBa. Bei DKB gibt's dafür Punkte. Je 0.5 Punkte.
  3. DKB klingt durch die Trennung von Giro und VISA nervig zu administrieren. Mit der comdirect kann man an den wenigsten Automaten Geld abheben. 1 Punkt für ING-DiBa.
  4. Zinsen gibt's bei der DiBa (allerdings nur auf's Tagesgeldkonto) und bei der DKB (allerdings weniger als bei DiBa), je 1 Punkt.
  5. Kontoauszüge per Post bieten alle; die comdirect scheint dazu aber eine manuellen Aufforderung zu brauchen, und ist am teuersten. 0.5 für ING-DiBa und DKB
  6. Kontowechselservice am ehesten bei ING DiBa. Trotzdem ohne Wertung, da erst nach Abschluss prüfbar
  7. iOS- und Android-App bei der ING, iOS-App bei comdirect. Je 0.5 Punkte pro App (schade: Ich habe ein Windows Phone)
  8. Keine Wertung für das Onlinebanking, da keine Aussage zur comdirect vorliegt. Tendenziell aber gegen die DKB

Also: ING-DiBa ist der Sieger mit 5+ Punkten, vor DKB (3- Punkte) und comdirect (2 Punkte). Der Vorsprung ist klar genug, um auch bei anderer Gewichtung vertretbar zu sein – DiBa, ich komme!