Salve

Dear english-speaking visitors: Since I do not want to maintain a bilingual website and my native tongue is German - most of the content of this website will be in german. Though don't let that hinder you, just jump straight to my software and enjoy their description in english.

Viel Spaß an alle die sich durch diese Einführung nicht abschrecken ließen, viel Spaß vor allem beim Lesen meiner Veröffentlichungen und dem Benutzen meiner Programme!

Cocoa hat ja Regex Support

Überraschend.

Das der so vollständig ist, hätte ich nicht erwartet. Aber in der Tat, ICU-Regexe in ihrer ganzen Pracht. Völlig ohne eine neue externe Dependency.

Laut der Dokumentation sollte das sogar in 10.4 schon funktionieren - mit dem einen Caveat, dass multiline Support dort wohl von Hand eingeschaltet werden muss (via (?m))

Sowas wird da möglich:

if ([@"aaa" matches:@"a{3}"])
    NSLog(@"gotcha");

// other examples
[@"argh fnord argh" matches:@".*\bfnord\b.*"];
[@"aaa" matches:@"\w{3}"];

Und das mit extrem wenig Aufwand:

@interface NSString (SimpleRegexMatching)
- (BOOL) matches:(NSString *)aRegex;
@end

@implementation NSString (SimpleRegexMatching)
- (BOOL) matches:(NSString *)aRegex;
{
    id predicate = [NSPredicate predicateWithFormat:@"self matches %@", aRegex];
    return [predicate evaluateWithObject:self];
}
@end

Ich bin beeindruckt.

Code hier


Die gegenwärtige Finanzkrise ist…

... eigentlich einfach zu verstehen.

Zum weglegen. :)


Darfs noch etwas mehr Atommüll sein?

Gerne auch Freihaus...

Extra 3 hat es mal wieder genagelt.

:-)


Aus einem Variablen-Namen einen String machen

Braucht man manchmal für Bindings. Gleichzeitig will ich aber nicht überall die namen meiner Variablen als Strings hinterlegen - schon alleine damit ich beim Refactorn auch alle Namen erwische.

Also den Macro-Prozessor zur Rettung:

#define NSStringize(aVariableName) @#aVariableName
#
macht aus einer beliebigen expression einen String
@
und das @ davor macht aus einem constanten c-string einen ObjC-NSString.

Und das problem ist gelöst. :)


_HiStOrY_V2_

Mit ein bisschen Hilfe von meinen Freunden...

Heute hab ich mal wieder die aktuelle Version von Bazaar (1.7.1) ausprobiert. Soweit ganz schnuckelig. Sogar der SVN Checkout von Adium hat hervorragend geklappt.

Ich muss sagen, beeindruckend.

Nur mit dem Plugin bzrtools hatte ich Schwierigkeiten, denn die darin enthaltene shell (ein geiles feature) zu benutzen brachte bzr reproduzierbar zum Absturz. :-(

Stellt sich mit hilfe von #bazaar und nach einigen Detours über den Python Debugger (nice!) und dtruss (nice!) heraus dass es an der libreadline liegt.

Die hat sich nämlich geändert und erwartet inzwischen am Anfang eines History-Files als allererste Zeile diesen eintrag: _HiStOrY_V2_.

Na toll. Und ansonsten stürzt das Programm einfach ab. Also wer sich das ausgedacht hat, der gehört aber auch echt erschossen. Wenigstens die Fehlermeldung hätte vernünftig sein können. Grumpf.

RSS