Hier mal wieder ein besonderes Schmankerl:
Hier lassen sich alle Vorurteile bestätigen, die man in mühsamer “Doku”-Konsumierung auf den Privatsendern gewinnen ließen.
Fahrtenbuch des Schreckens
Gestern habe ich fröhlich auf das neue Ubuntu upgedatet. Und siehe da: Der automatisch mitinstallierte Standardbrowser ist Firefox 3.0 Beta 5. Schönes Ding eigentlich. In der Ausführungsgeschwindigkeit von JS ein absoluter Renner! ABER: Firebug kann man zwar installieren (über Hinzufügen), nur stürzt das Ding bei mir reproduzierbar ab. Firebug ist also faktisch nicht verwendbar.
Nun gut, dachte ich mir, ist doch nicht so schlimm. Mach ich mir eben auch noch den Firefox 2 drauf. Geht ja ohne Probleme. Nur teilt der seine Add-ons offenbar mit dem 3er. Super… Also 3er deinstalliert. Und jetzt läßt sich der Firebug 1.0.5 gar nicht mehr installieren. Diese Erfahrung haben auch andere Leute gemacht. Mal suchen, obs auch irgendwo eine Lösung gibt…
Update: Mit einem neuen Profil geht die Installation. Mal schauen, ob Firebug so auch funktioniert. Um ein neues Profil anzulegen, den Browser schließen und in der Konsole mit “firefox-2 -ProfileManager” starten. Nachteil: Seitdem wird mir unter das Fenster ein XML-fehler gerendert: “</overlay>”. WTF???
Für alle an der ExtJs-Problematik Interessierten und Verärgerten: Unter http://sourceforge.net/projects/openext/ werden Patches für die unter LGPL laufende ExtJs Version 2.0.2 entwickelt. Das Projekt ist kein wirklicher Fork, da immer noch rechtliche Unklarheiten -offenbar auch bezüglich den älteren Versionen- bestehen.
Ob sich die Jungs um Jack S. einen Gefallen mit dem Lizenzwechsel einen Gefallen getan haben?
– org.directwebremoting.extend.MarshallException caused by InstantiationException: It is logical, but I didn’t find the problem for hours: You’re dealing with beans here, so don’t forget a standard no-arg constructor!
– org.directwebremoting.extend.MarshallException “No converter found for class“: Have a look in your DWR-Config. A def <dwr:convert type=”bean” class=”de.company.project.DWRBean*” /> will convert a bean with the name DWRBean, but not a bean DWRBean2. The * is misleading and does only work ‘properly’ in combination with a package: e.g. de.company.project.dwr.*”.
– Calls in JS to remote java-methods don’t return a value: If you call a remote method, you cannot simply assign the return value to a var. var x = remote.getX(); is wrong. The calls are done async, so you got to define callback-handler: remote.getX({callback: this.handleResponse.createDelegate(this, object), errorHandler: this.handleError.createDelegate(this, object)}); The createDelegate-method is ExtJs-specific and allows you to use ‘this’ in your callback. If you’re not working with extjs, just leave it out. (Hint for JS-Newbies: the callback-handler in this case only got one parameter, the returned object).
Die Javascript-Ajax-Bibliothek ExtJs ist in Version 2.1 erschienen. Warum schon wieder eine neue Version? Performance? Api-Verbesserung? Nix davon! Kommerz ist der Grund. Ab jetzt ist der Einsatz in kommerziellen Produkten nicht mehr ohne weiteres möglich. Knapp 300$ kostet eine kommerzielle Ein-Entwickler-Lizenz. open-Sourcisten bleiben verschönt. Für den Einsatz in OSS bleibt ExtJs kostenfrei.
Für uns (kommerzielle) heißt das jetzt aber: Auf ExtJs kann man nicht mehr setzen. Ich bin mir noch nicht sicher, ob ich mich jetzt freuen soll, weil ich mich nicht mehr mit dem Scheiß rumschlagen muss, oder ob ich jetzt weinen soll, weil ich wieder eine neue API (noch unklar welche) lernen muss.
Nachtrag: Ich scheine nicht der Einzige zu sein, der sich nach Alternativen umschaut. Die DOJO-Seite scheint komplett überlaufen. Endlose Response-Time .. 😉
Am Sonntag haben wir die diesjährige Grillsaison eröffnet. Eine Gelegenheit, mal meinen tollen Grill zu preisen: “Pocket BBQ”, ein Falt-Grill. Zusammengeklappt kann man ihn ohne Probleme unterm Arm transportieren. Ausgeklappt bietet er etwa 30 x 30 cm Grillfläche. Der Grill zieht super gut und es macht quasi keinen Stress, die Kiste zu zünden. Zum Reinigen kann man das Ding einfach mit einem Stock an den Griffen packen und einmal in den Rhein halten. Einziger Nachteil: Der Grillrost ist nicht höhenverstellbar. Fully equiped in action:
Apache POI is a java library which allows to build Office-Documents. POI stands for “Poor obsfuscation interface” and is a good description. Nonetheless it’s the only lib I know which allows you to produce what most customers still don’t want to miss: MS Excel sheets and Docs. In the following post, I want to list some hints I found in the last weeks when working on excel sheets:
– Cellstyles don’t work like normal objects: if you use a cellstyle for a cell and AFTERWARDS changes the style to use it for some other cell, you will find only the latter style in the resulting document
– Don’t mix up font definition and borders: Use the HSSFRegionUtil.setBorderXXX() for borders. This methods puts a border around the given region preserving the style (font) defined before. Keep in mind, that you have to use the method AFTER you defined the cell with a certain style.
– if you use Springs AbstractExcelView, do not just implement the excel-building code in a subclass of it. Build an abstraction layer between the Spring view and the building code to avoid dependencies to HttpRequest and HttpResponse. Otherwise testing will be painful. I defined an AbstractDocumentBuildView extending the AbstractExcelView that defines an abstract method which passes only the Workbook and the data to the implementing subclasses.
– Make a big list of constants defining the column/row-structure and labels!
– It is not possible to make “autofilters” so far! Just don’t try it.
– To put a dataFormat of your choice in a cell, use cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat(xxx));
– HSSF is short for “Horrible SpreadSheet Format” (not kiddin’!). So just try to take it easy …
für 1 Person
2 kleine Rotbarschfilets
1/2 Becher Sahne
2 TL Dill
2-3 TL scharfer Senf
etwas Mehl
10 kleine Cocktailtomaten
2 Schnapsgläschen trockenen Weißwein
1 Knoblauchzehe
Öl
Den Fisch, falls tiefgefroren, komplett auftauen lassen. Mit einem Küchentuch abtupfen. Dann mit Salz und Dill von beiden Seiten einreiben. Anschließend großzügig mehlieren.
Das Öl in einer kleinen Pfanne heiß machen und den Fisch von beiden Seiten bei mittlerer Hitze 5 Minuten je Seite anbraten. (Induktionsplatte 1500Watt). Der Fisch sollte noch nicht ganz durch sein. Ganz fertig wird er beim Köcheln und Durchziehen in der Sauce. Und die kommt so zustande: Noch mal etwas heißer machen und mit dem Weißwein ablöschen. Den Knoblauch geachtelt hinzugeben. Wenn der Alkohol verflogen ist, mit Sahne auffüllen. Den Senf dazugeben und unterrühren. Ein wenig (so 5 Minuten) bei mittlerer Hitze einkochen lassen und dann für die letzten 3 Minuten noch die ganzen Tomaten dazugeben. Sie sollen nur warm/heiß werden und erst im Mund explodieren. Mit ein wenig Petersilie bestreut hat man auch wieder ein schönes Farbenspiel.
Oh nein… Gestern nicht eingekauft. Und jetzt: Hunger. Gott sei Dank horte ich ja (haltbare) Lebensmittel in unseren Küchenschränken. Und so kann man dann doch noch schnell einen rauskochen. Zugegebenermaßen hatte ich keine frischen Pfifferlinge und musste daher zwei Dosen aufmachen. In der Verwendung macht das ganze aber keinen Unterschied.
1 Handvoll gehackte Walnüsse 1 große gewürfelte Zwiebel 400g dünne Bandnudeln 5 getrocknete Tomaten (auch eingelegt möglich) 4 mittelgroße Cocktailtomaten 400g Pfifferlinge 3cl Sherry einige Thymianzweige Lorbeerblatt, Rosmarinzweiglein, Salz, Pfeffer etwas Schnittlauch zum Garnieren 2 EL gehackte Petersilie 1/2 - 1 Becher Sahne optional noch etwas Waldpilzbrühe zum Würzen
Zuerst die Walnüsse kurz in der heißen Pfanne ohne Öl ein wenig anrösten. Dann Öl in die Pfanne geben und die Zwiebeln dazuwerfen. Benutzt man eingelegte Tomaten kann man gut das Öl davon verwenden. Auch wenn es sich meist nicht um Olivenöl handelt, ist dieses Öl sehr aromatisch. Die Zwiebeln glasig werden lassen, und die Pfifferlinge und die zu feinen Stücken geschnittenen getrockneten Tomaten zugeben. Kurz und heiß braten, bis die Flüssigkeit der Pfifferlinge austritt. Mit Sherry ablöschen. Die Gewürze zugeben und warten, bis der Alkohol verflogen ist. Dann mit Sahne auffüllen und auf kleiner Flamme köcheln lassen. In der Zwischenzeit sollte das Nudelwasser kochen und die Nudeln am Besten schon darin. Sobald diese fertig ist, Nudeln auf einen Teller geben, Sauce darübergeben und mit geachtelten Tomaten und Schnittlauch garnieren.
Ich habe in den letzten Tagen meine Boykott-Idee weiter ausgebaut. Es bringt ja nichts, wenn ich einfach nicht bei den Spielen reinschaue. Da ich nicht zu den auserwählten Einschaltquoten-Bestimmungs-Haushalten gehöre, kriegt das ja niemand mit. Viel besser als nicht reinzuschauen und daher die Werbung nicht sehen, ist doch folgendes: Ich schaue möglichst viel und zwar vor allem Werbung und dann kaufe ich genau alle die Produkte nicht, die zu Olympia beworben werden. Diese Protestvariante sagt mir insgesamt deutlich besser zu, da ich einerseits die sportlichen Ereignisse anschauen kann, andererseits dem ganzen System die Grundlage entziehe. Für alle, die nicht genügend Zeit haben um Version 2 des Boykottes durchzuziehen, empfehle ich immer noch Version 1. Ich werde aber zusätzlich hier die Namen der Firmen veröffentlichen, die beim Olympia-Witz mitmachen.