Dateizugriffe verschalen für Testfälle mit JBehave und Easymock

Im Moment beschäftige ich mich inhaltlich damit, größere Mengen von Dateien zu verarbeiten. Methodisch bin ich immer noch bei BDD am Werk. Das ergibt den Kreuzungspunkt: Wie kann ich Dateizugriffe für Tests verschalen? Sobald das funktioniert, kann ich in den automatischen Build-Prozess einfach ein paar Beispieldateien integrieren.

Wie so viele habe ich nur mässige Freiheiten dabei, den Dateizugriff einfach zu isolieren. Dieser und ähnliche Tests sollen dazu dienen, das Ganze sicher refactoren zu können.
→ weiterlesen

Congstar/ZTE MF190 und Win7

Das war eine schwere Geburt!

Seit längerem habe ich für Reisen einen UMTS-Router von Sitecom, der mit meinem alten Fonic-Surfstick hervorragend funktioniert. Leider ist das Fonic-(O2)-Netz gerade in Großstädten oft chronisch überlastet, so dass diese Kombination nicht viel nützt.

Abhilfe sollte besagter Surfstick von Congstar schaffen, der scheinbar technisch ein ZTE MF190 ist. Einer der Haken dran: Der Sitecom-Router verträgt sich mit dem MF190 nicht. Also: Congstar-Karte in den Fonic-Stick, und los geht’s. Außer… außer wenn es Zeit ist, die Karte aufzuladen. Dann muss die Congstar-Karte in den Congstar-Stick, und der MF190 an den Windows7-Laptop.

Und der Windwos7-Laptop verweigert auf wundersame Weise das Laden der MF190 Treiber. Das Problem scheint schon bekannt zu sein, in den einschlägigen Foren gibt es viele Ideen und Verweise auf wilde Treiber, doch das Kernproblem hat wohl noch keiner gelöst. Wie so häufig im Leben habe ich es auch nicht gelöst, sondern umgangen.

Der entscheidende Tipp kam aus dem Wintotal-Form:

Drei Befehle genügen, damit Windows unsignierte Treiber akzeptiert. Leider verstehe ich nicht gut genug, was diese Befehle tun, um sicher zu sein, dass ich alles wieder korrekt rückgängig gemacht habe. Das finde ich sehr doof, denn eigentlich öffne ich damit bewusst ein Sicherheitsloch und ich mag die Unsicherheit, ob ich es korrekt wieder geschlossen habe, überhaupt nicht. Vielleicht hat hier noch jemand einen Tipp?

Jedenfalls – so geht’s:

  1. Surfstick ausstecken
  2. en gesamten Congstar Connection Manager deinstallieren (sonst hängen die nicht signierten Treiber im Weg herum
  3. Neu starten.
  4. Eine Kommandozeile mit Administratorrechten öffnen
  5. In dieser Kommandozeile die folgenden drei Befehle eingeben:

    bcdedit.exe /set nointegritychecks ON
    bcdedit -set loadoptions „DDISABLE_INTEGRITY_CHECKS“
    bcdedit /set testsigning no

  6. Nochmal neu starten
  7. Jetzt kann der Surfstick erfolgreich installiert werden.

Das Ganze müsste über eine Sequenz wie die folgende wieder abgedichtet werden:

bcdedit.exe /set nointegritychecks OFF
bcdedit -deletevalue loadoptions
bcdedit /set testsigning yes

Leider klappt mit geschlossener Sicherheitslücke das Installieren wieder nicht, es fängt also wieder von vorne an: Alles deinstallieren und so weiter. Das ist eine passable Lösung für „ich will mal schnell den Surfstick aufladen“ (jedenfalls besser als noch einmal einen neuen Surfstick kaufen), für den normalen Betrieb ist das leider keine Lösung.

Vielleicht kann ja jemand darauf aufbauen.

Insgesamt finde ich das eine schwache Leistung von Congstar und ZTE.

Web-Porno-Sperren in Island?

Die Debatte über Web-Sperren ist fast so alt wie das Web.

Jede Kultur hat ihre eigenen Tabus. In Deutschland ist es überwiegend Gewalt, Nazis und Zweifel an der Klimaerwärmung. In den USA ist es überwiegend Pornographie. In Australien ist es überwiegend Selbstmord. Vielleicht ist ein – gemessen am kulturellen Rahmen – großzügiger Tabu-Filter wirklich sinnvoll, nach 20 Jahren der einschlägigen Debatte weiß ich es nicht mehr.

Das wichtigste Argument gegen Filter ist und bleibt allerdings, dass die Frage einer fairen Unterscheidung zwischen „gutem“ und „bösem“ Inhalt nach wie vor nicht geklärt ist.

Gerade jetzt, wo Fehlverhalten in Politik, Wirtschaft, Militär und Kirchen die Schlagzeilen prägt, gibt es keine Institution mehr, der man zutrauen kann, in dieser Hinsicht faire Entscheidungen zu treffen.

Intel baut keine Mainboards mehr – naht das Ende des PC-Zeitalters?

Was ist denn das „PC-Zeitalter“?

Ich erwarte, dass der Allround-PC zu Hause über die nächsten Jahre hinweg sukzessive verschwindet. Diese Entwicklung zeichnet sich schon seit einiger Zeit ab, IBM bzw. Lenovo ist da ein prominentes Beispiel, und einige der strategischen Unfälle im Hause HP waren von der gleichen Entwicklung getrieben. Und einige habe ich bestimmt verpasst.
→ weiterlesen

HowTo: Maven, Spring und JBehave

Und nun zu etwas ganz anderem: Ich habe wieder begonnen, zu programmieren.

Eines der Themen, das mich sehr fasziniert, ist „Behaviour Driven Development„. Dazu gibt es in Java einen netten Framework namens JBehave. Leider finde ich die Dokumentation zu JBehave etwas mager. Ich mag das Prinzip: „Make the simple things simple and the hard things possible“ (etwa: Mach die einfachen Dinge einfach und die schwierigen möglich).

Darum hier mein „Dankeschön“ an die Entwickler von JBehave: Eine möglichst einfach Bastelanleitung, wie JBehave in bestehende Maven-Projekte eingebaut werden kann. Im Moment arbeite ich auch mit Spring, also geht es hier darum, einen  minimalen Startpunkt zu schaffen.

→ weiterlesen

Soll ich auch der Böse sein?

Sehr genial: „Ich bin die Böse„. Auf mich übertragen:

Ich bin der Böse, obwohl ich seit über zwanzig Jahren praktisch mein ganzes freies Einkommen in Nutzungsrechte irgendeiner Art „investiere“. Ich tue das seit zwanzig Jahren, obwohl ich seit über fünfzehn Jahren Alternativen habe. Ich gebe sogar mehr Geld dafür aus als ich Zeit-Äquivalent habe, hier türmen sich ungelesene Bücher und ungesehene DVDs. Trotzdem muss ich mir immer wieder anhören, …

Ich zitiere – denn wenn ich’s auch so schön schreiben könnte, könnte der Rest von mir sein:

Trotzdem muss ich mir immer wieder anhören, wie böse wir Internetmenschen sind, weil wir immer nur alles umsonst haben wollen und nicht mehr bereit wären, Geld für Kunst zu bezahlen. Liebe Urheber, ich bin sehr wohl dafür, dass ihr Geld für das bekommt, was ihr macht. Es ist mir eigentlich auch schnurzpiep, was ihr bekommt, ich wage überhaupt nicht, eine Meinung darüber zu haben, was welcher Inhalt wert sein sollte. Wenn hunderttausend Leute ein Buch kaufen wollen, dann liegt es mir fern, beurteilen zu wollen, ob das Buch bzw. dessen Autor das jetzt verdient hätte oder nicht. […]

Trotzdem funktioniert die Art, wie das Urheberrecht gehandhabt wird in meinen Augen nicht mehr und ich habe schlicht und einfach ein Problem damit, als jemand, der von dem ihm zur Verfügung stehenden Geld einen nicht unerheblichen Anteil sehr, sehr direkt in vom Urheberrecht betroffene Konsumgüter und Veranstaltungen steckt, dann noch kriminalisiert zu werden.

Und ich füge Annes Artikel hinzu: Und ich habe die Nase voll davon, dass diese ehrlich erworbenen und bezahlten Nutzungsrechte sich dauernd unter meinem Hintern weg zu meinem Nachteil ändern, weil das neue DRM streikt, weil das DRM bzw. Dateiformat mit einem Gerät inkompatibel ist, weil irgendjemand den DRM-Server abschaltet, weil ein neues Gesetz meine (bestehenden!) Rechte geändert hat und so weiter.

Wenn es böse ist, dass ich mich hier persönlich beleidigt, angegriffen und benachteiligt fühle, dann bin ich gerne böse, und ich verstehe sogar noch, dass es einigen „Urhebern“ (naja… vielleicht eher den Verwertern) ähnlich geht: Dass sie sich angegriffen und benachteiligt fühlen.

Die digitale Gesellschaft hat das Potenzial dazu, dass wir in eine Win-Win-Welt steuern, doch so lange wir die Paradigmen der analogen Gesellschaft ohne sie zu reflektieren der digitalen überstülpen, bekommen wir offensichtlich Loose-Loose: Ich fühle mich benachteiligt und angegriffen, und die Urheber fühlen sich genauso. Das haben wir jetzt seit etwa 15 Jahren ausprobiert, wir könnten jetzt wissen, dass das mit dem „Loose-Loose“ sehr zuverlässig funktioniert.

Wie wäre es endlich einmal mit „wir reflektieren die Paradigmen und passen sie an die digitale Welt an“?

WordPress verlangt Verbindungsinformationen

Memo an mich selbst: Falls wieder einmal ein WordPress-Blog mit der Meldung „Verbindungsinformationen eingeben“ den Update verweigert, hier sind die beiden wichtigen Infos:

Touching My Desktop

Kristian Köhntopp schreibt unter der überschrift „Touching My Desktop“ spannende Dinge über das neue Layout von Google+. Und Windows 8. Und MAC OS X Lion. Und  in den Kommentaren zu seinem Artikel kommt auch noch Gnome dazu. Die wesentliche These ist:

Genau wie Windows 8 oder Apple hat Google das Problem, Anwendungen für eine neue Geräteklasse und Verwendung in neuen Lebenssituationen anpassen zu müssen.

Immerhin: Es gab früher Computerfirmen, die zu lange an „ihren“ alten, für neu-Nutzer untauglichen UI-Konzepten festgehalten haben. Das scheint diesmal nicht das Problem zu sein, die Firmen vergrätzen lieber „Bestandskunden“ um noch ein paar Neukunden zu gewinnen. Gleichzeitig finde ich es seltsam, denn die damaligen Sprünge an Neu-Nutzern (10x in einem Jahr oder so) erwarte ich jetzt nicht mehr.

Technisch könnte ein Teil der Antwort „Model-View-Controller“ sein, das läuft auf spezialisierte Apps hinaus.

Aber das ist eben auch nicht der Traum vom Geräte-unabhängigen Internet. Das ist teuer für die Firmen, das macht einen starken Lock-In für die Anwender, und die verschiedenen Apps halbwegs Feature-äquivalent zu halten ist doof, komplex, fehleranfällig und am Ende eben auch wieder teuer, das heisst drei Apps entwickeln kostet deutlich mehr als die dreifachen Entwicklungskosten einer App.

Vielleicht haben wir hier „einfach“ eine neue Design-Komplexität, die noch niemand (!) wirklich gut gelöst hat. So ist IT eben: Sobald ein Problem halbwegs gelöst ist, lauert das nächste.

Irgendwann war effektive Datenspeicherung ein Problem (zwei Ziffern für Jahreszahlen und so), CPU-Kapazität war mal ein Flaschenhals und Hauptspeicher. Auf dieser Ebene sind es heute eher Latenzen und Bandbreiten. Die „Browser Wars“ und Feature-Inkonsistenzen zwischen Browsern kommen inhaltlich diesem Thema ziemlich nahe, und jetzt – wo die Standardisierung in der Web-Welt langsam zu funktionieren beginnt – kommt die Explosion der zu bedienenden Endgeräte und Verwendungskontexte hinzu. Das W3C war da mit CC/PP (seit ~1999, ironischerweise in verschiedenen Ausprägungen bis Juli 2010) wohl ein wenig früh dran.

Einfach nur das Wissen um ein Geräte-Profil scheint zur Lösung auch nicht beizutragen. Ich vermute, dass es auf mehrere Apps hinausläuft (so wie es Facebook auch vormacht), und dass eine intelligente Segmentierung der Apps nach Verwendung und Geräteklasse der Schlüssel zum Erfolg. Eine Firma wie Google müsste drei Apps noch stemmen können, aber ein Dutzend wahrscheinlich nicht mehr.

Meine Kristallkugel sagt: Es gibt keine Patentlösung sondern viel Frust (für Anwender) und harte Arbeit (für Entwickler und Produktmanager). Der Umgang mit der Geräte- und Verwendungsvielfalt mausert sich zu einem wichtigen Feld für den Wettbewerb in den nächsten Jahren.