damit das auch mal wieder gesagt ist: so zu arbeiten wäre der Traum.
Aber eben - die Realität ist: unverlinkbare Word-Dokumente, Excel - etc…
Jazz Platform
Dieses Blog ist in erster Linie ein öffentliches Notizbuch für mich selber: ich notiere darin kleine Dinge, die ich immer wieder vergesse. Oder Entwicklungen, die ich spannend finde.
Dienstag, 27. November 2012
Mittwoch, 21. November 2012
Erwartete Exception in JUnit
Wieder ein Klassiker, den ich jedesmal vergesse, wenn ich ihn brauche - drum hier im Blog.
Ich erwarte in JUnit einen Exception, und möchte auch die Message der Exception testen.
Hier ist die Lösung:
Möchte man die Message nicht anschauen, erwartete bloss, dass es knallt, genügt dies:
Donnerstag, 15. November 2012
Reflections
Um Klassen zur Laufzeit zu laden, habe ich grad folgendes kleines, sehr mächtiges Framework entdeckt:
http://code.google.com/p/reflections/
Damit lässt sich sehr einfach eine einfache Plug-In Architektur erstellen, um - in diesem Fall - zur Laufzeit Policies zu laden, die eine Policy-Klasse erweitert.
Bemerkung: wie zu erwarten war, funktioniert das natürlich - wie immer in solchen Fällen - unter JBoss nicht, wegen Klassenlader-Problemen. Wir suchen die Lösung noch...
http://code.google.com/p/reflections/
Damit lässt sich sehr einfach eine einfache Plug-In Architektur erstellen, um - in diesem Fall - zur Laufzeit Policies zu laden, die eine Policy-Klasse erweitert.
Bemerkung: wie zu erwarten war, funktioniert das natürlich - wie immer in solchen Fällen - unter JBoss nicht, wegen Klassenlader-Problemen. Wir suchen die Lösung noch...
Samstag, 10. November 2012
Warum Java?!? Ich mach doch nichts. Der Facebook-Updater.
Ich habe mein "Mountain Lion" frisch installiert, noch ohne Java (neuerdings hat ein frischer Mac noch kein Java...) - und beim jeden einloggen kommt die Meldung:
Was ist das?!? Ich habe nichts mit Java gestartet. Läuft da irgendein Zeugs, das ich nicht will?!?
Ein Blick in die Console verrät mir:
Nov 10 20:48:34 oscar.local Download Java Components[3256]: Java Install cancelled
Und, eine Prozess-ID tiefer, ein Klick früher, der Übeltäter:
Nov 10 20:48:26 oscar com.apple.launchd.peruser.501[141] (com.facebook.videochat.rschumm.updater[3255]): Exited with code: 1
Facebook? Wtf...
Es stellt sich heraus, dass facebook-Video-Chat, eine Abklatsch-Version von Skype, stinkfrech einen LaunchAgent installiert, der immer wieder (und auch beim Einloggen) den Befehl
java -cp /Users/rschumm/Library/Application Support/Facebook/video/1.2.0.158/FacebookUpdate.jar
laufenlässt. Gopf :-)
Getriggert wird das durch
/Users/rschumm/Library/LaunchAgents/com.facebook.videochat.rschumm.plist
Wenn ich die Datei lösche, ist der Spuk vorbei. Und ich habe was über LaunchAgents gelernt.
Weitere Infos:
Wenn das alle so machen würden wie Facebook.... dann könnte man noch lange warten mit Einloggen.
Mittwoch, 7. November 2012
TimeMachine: neue HD
Mac OS X ist schon cool…
Ich habe soeben eine neue Harddisk in mein gutes altes MacBook Pro unter «Mac OS X Mountain Lion» eingebaut. Mit dem Migrations-Assi alles von der alten HD importiert. Dauert stundenlang, aber klappt. (Man könnte das auch von TimeMachine machen.)
Nun kommt aber die grosse Frage: neue Harddisk, neue UUID der Harddisk - peilt das TimeMachine oder macht es ein volle Backup und verliert die History?
Die Antwort im system.log:
cool… First backup after disk inheritance - die History geht also nicht verloren.
Ich habe soeben eine neue Harddisk in mein gutes altes MacBook Pro unter «Mac OS X Mountain Lion» eingebaut. Mit dem Migrations-Assi alles von der alten HD importiert. Dauert stundenlang, aber klappt. (Man könnte das auch von TimeMachine machen.)
Nun kommt aber die grosse Frage: neue Harddisk, neue UUID der Harddisk - peilt das TimeMachine oder macht es ein volle Backup und verliert die History?
Die Antwort im system.log:
Nov 7 18:56:21 oscar.local com.apple.backupd[419]: Backing up to: /Volumes/Time Machine-Backups/Backups.backupdb
Nov 7 18:56:24 oscar.local com.apple.backupd[419]: Inherited root volume Macintosh HD, UUID: BFEA6DB7-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
Nov 7 18:56:25 oscar.local com.apple.backupd[419]: Event store UUIDs don't match for volume: Macintosh HD
Nov 7 18:56:34 oscar.local com.apple.backupd[419]: Deep event scan at path:/ reason:must scan subdirs|new event db|
Nov 7 18:56:34 oscar.local com.apple.backupd[419]: First backup after disk inheritance for / - complete scan required
Nov 7 18:56:34 oscar.local SystemUIServer[180]: Warning: accessing obsolete X509Anchors.
cool… First backup after disk inheritance - die History geht also nicht verloren.
mvn release: update Versions
Um mit dem Maven Release Plug-In Versionsnummer anzupassen, ohne den ganzen anderen Karsumpel zu machen:
http://maven.apache.org/plugins/maven-release-plugin/examples/update-versions.html
mvn release:update-versions -DautoVersionSubmodules=true
Details:
http://maven.apache.org/plugins/maven-release-plugin/examples/update-versions.html
Freitag, 2. November 2012
Java aus xsd: JAXB
Etwas kleines, nicht neues, einfaches, aber extrem cooles:
Man hat ein Schema, z.B. das von XACML3,
http://docs.oasis-open.org/xacml/3.0/xacml-core-v3-schema-wd-17.xsd
und möchte davon mit Java eine Instanz abfüllen.
Nichts einfacher als das mit JAXB:
Man stelle das Schema in /src/main/xsd und lasse einen mvn install laufen, mit folgendem Plugin konfiguriert:
Man hat ein Schema, z.B. das von XACML3,
http://docs.oasis-open.org/xacml/3.0/xacml-core-v3-schema-wd-17.xsd
und möchte davon mit Java eine Instanz abfüllen.
Nichts einfacher als das mit JAXB:
Man stelle das Schema in /src/main/xsd und lasse einen mvn install laufen, mit folgendem Plugin konfiguriert:
Die generierten Klassen landen in target und werden von eclipse automatisch in den build-path genommen. Fertig.
Die Klassen können dann ganz einfach benützt werden: hier wird z.B. ein XACML-String von JAXB geparst und in Java umgewandelt:
Proxy...
Die Arbeits-Bremse in jedem Unternehmensnetzwerk: Proxy. Jedesmal muss ich nachschauen, darum hier:
System.setProperty("http.proxyHost", "myProxyServer.com");
System.setProperty("http.proxyPort", "80");
bzw:
-Dhttp.proxyHost=10.0.0.100 -Dhttp.proxyPort=8800
Abonnieren
Posts (Atom)