henso.com
Home
Archive
Search

rss feed for this page

DELI
HLM

LNGR
EURN
OON
CHLM
POOL
ELPH
RIST
SOFA
SENS
P3K
FM4
SCRP
MAL
RNS
GDNY
ELEG
OSNS
SLSH

Mozilla, baby!

antville.org
 Freitag, 10. August 2001 

Es scheint verkehrt: ich bin im Crunchmode und es geht mir gut. Natürlich ist dem Gefühl zu misstrauen, deshalb verordne ich mir jetzt erstmal eine kleine Ausfahrt ins Grüne.

Wo Namen sind, da wird gegrabbt. Für mich war Antville ja nur ein Code-Name, aber Robert möchte gerne dabei bleiben. Mich stört die Bedeutung. Ein bisschen.

Antville in HelmaDoc-Format, courtesy of Stefan Pollach.

Nächsten Freitag wird Mkt inniges Anhören bombastischer Hymnen einmahnen und es wird snivlem, "der Neue", auflegen.

coletta:~ # grep -c default.ida /var/log/httpd.access_log
547

hopdev:~ # grep -c default.ida /var/log/httpd/access_log
572

gong:~ # grep -c default.ida /var/log/httpd/access_log
829

lnk + 4 cmt (kris, hns, katatonik)
 Donnerstag, 9. August 2001 

Hmmmmmmmmmmmmmmmmmmmmmmmmmmmmaoui.

lnk + 2 cmt (chronistin, katatonik)
 Mittwoch, 8. August 2001 

Blogger hat ein XML-RPC-Interface, powered by yours truly.

Die Interessensgemeinschaft zur Aufklärung des Brummtons. Was für ein Name.

lnk + 5 cmt (isore, katatonik, brrr, earl, slauti)
 Dienstag, 7. August 2001 

Tobi stellt auf der Helma Mailing-Liste ein paar gute und sehr wichtige Beobachtungen an. Ich empfinde es genauso.

Gestern abend im Augarten Stanley Kubricks Barry Lyndon gesehen. Lady Lyndons Blick in der Szene, in der sie Redmond Barry am Spieltisch fatal verfällt werde ich nicht so schnell vergessen. Die wenigen Pixel, die das Bild links konstituieren, reichen leider nicht aus, diesen Blick zufriedenstellend wiederzugeben, es sei denn man hat ihn zuvor auf Grossleinwand gesehen. <brrrrrrrrrr>

Kris und Konsorten machen auf Elephantville richtig ernsthaften Inhalt.

chra hat ein interessantes Feature über Silberfische. Ich hatte auch welchen in der Wohnung, aber ich glaub ich hab sie exterminiert. Sollte ich das jetzt bereuen oder was?

Endlich darf ich es linken: Staatskunst von Murmel Comics, getarnt als unschuldiges Memory-Spiel.

lnk + 5 cmt (kris, hns, chra)
 Montag, 6. August 2001 

Full throttle.

Drop resistance and communication skills.

Wear tight chinese Gung t-shirt.

Das Ergebnis der letzten Woche: Helma hat endlich ein Objekt- und Cache-Management, das der Hopschen Funktionsweise entspricht. Prinzipiell wird auf persistente (in einer Datenbank gespeicherte) Objekte über einen Schlüssel aka Key zugegriffen. Der Key enthält die Datenquelle und ID des Objektes. Wenn also eine Hop-Application auf ein persistentes Objekt zugreift, sendet sie dessen Key an den NodeManager. Der schaut zunächst, ob für diesen Key bereits ein Objekt in seinem Cache existiert, andernfalls holt er sich das Objekt aus der Datenbank.

So weit so gut. Nun ist aber eine der grössten Stärken des Hop, dass er imstande ist, mit symbolische Referenzen zu arbeiten, die erst zur Laufzeit aufgelöst werden. Ein einfaches Beispiel ist die URL my.orf.at/hns. Das "hns" ist in diesem Fall nicht der primäre Schlüssel meines Records in der ORF ON User-Datenbank. Der ist vielleicht "423412", was ich aber nicht weiss, weil ich ihn nie zu Gesicht bekommen habe. Stattdessen werden die Objekte über eine ihrer Eigenschaften, in diesem Fall den User-Namen, in my.orf.at/ gemountet. Jede Anfrage in der Form "my.orf.at/<xxx>/yyy wird also anhand des Type-Mappings in eine Datenbankabfrage umgesetzt, ob ein Objekt existiert dessen User-Name gleich "<xxx>" ist. Ein anderes Beispiel für symbolische Referenzen sind virtuelle und Groupby-Nodes. Virtuelle Nodes sind frei definierbare Behälter für Objekte, Groupby-Nodes sind Behälter, die Objekte nach einer ihrer Eigenschaften gruppieren. Beide Arten von Objekten existieren nicht in der Datenbank, sondern werden vom Hop bei Bedarf on-the-fly erzeugt. So ist zum Beispiel das "/log/2001.08.06" in der permanenten URL dieses Eintrags ein Groupby-Node, der alle Einträge auf henso.com enthält, die am 6. August 2001 angelegt wurden. Das Objekt selbst existiert nicht in der Datenbank, aber Hop-intern und -extern steht es genau dann zur Verfügung, sobald in der Datenbank mindestens ein Weblog-Eintrag mit diesem Entstehungsdatum existiert.

Mit dieser Art von Objekt-Referenzen, die natürlich auch gecacht werden müssen, hatte der Hop bisher Probleme. Es war zwar kein Problem, die Key-Klasse so zu vergewaltigen, dass sie imstande war, für solcherart symbolisch referenzierte Objekte eindeutige Schlüssel zu liefern. Falls das Objekt aber nicht im Cache gefunden wurde, war es unschön, das angeforderte Objekt anhand des Schlüssels von der Datenbank zu holen oder neu zu erzeugen, weil die im Schlüssel enthaltene Information - (Pseudo-)Datenquelle und (Pseudo-)Objekt-ID - eben keine Anleitung dazu mehr liefern konnte.

Die Lösung des Problems: Key ist jetzt ein Interface, das von zwei Klassen implementiert wird: Dem oben beschriebenen DbKey, der wie gehabt Datenquelle und Objekt-ID beschreibt, und einer neuen Klasse namens SyntheticKey, die stattdessen einen Key zu einem anderen Objekt und eine Beschreibung enthält, wie das eine Objekt vom anderen erhalten werden kann. Das schöne daran ist, dass diese Ableitungsregel der gleiche einfache symbolische Name ist, der z.b. in URLs verwendet werden kann, weil der Hop mit seinem Type Mapping ja weiss, wie er aus dem symbolischen Namen eine konkrete DB-Query oder ein virtual- oder groupby-Objekt erzeugen kann.

In diesem Licht wiederhole ich mein vorgestriges Vorher - nachher-Posting. (Update: die vorher-Ansicht "funktioniert" nicht mehr, weil ich auf antville.org gestern abend den neuen Snapshot aufgespielt habe. Was gezeigt werden sollte war, dass die alten Keys grauslig verrenkt ausschauten ;-)

In der nachher-Ansicht sieht man zwei Arten von Keys: solche mit und ohne "Pfad" am Ende.

weblog[1]
[0]
[1]
[1]/hns
[1]/jo6pack
skin[2]
skin[3]
weblog[1]/skinmanager
weblog[1]/skinmanager/story
weblog[1]/skinmanager/story/preview

Bei den Keys ohne Pfad handelt es sich um Instanzen von DbKey. "weblog[1]" ist beispielsweise das Objekt vom Typ weblog mit der Objekt-ID 1. Wenn vorne kein Typname dransteht bedeutet das, dass das Objekt nicht in einer relationalen Datenbank, sondern in der internen Objektdatenbank gespeichert ist. "[0]" ist z.b. das Root-Objekt der Application, "[1]" das User-Root-Objekt. Die Objekte mit Pfad hintendran sind hingegen Instanzen von SyntheticKey. Man sieht hier auch, wie sich synthetische Keys nicht nur auf DbKeys, sondern wiederum auf andere synthetische Keys beziehen und so "Key-Ketten" bilden können. Zum Bespiel ist "weblog[1]/skinmanager" ein virtuelles Objekt, das an "weblog[1]" gemountet ist und die Skin-Objekte für dieses Weblog enthält. "weblog[1]/skinmanager/story" ist ein Groupby-Objekt, das alle Skins dieses Weblogs enthält, die zum Prototyp "story" gehören. "weblog[1]/skinmanager/story/preview" schliesslich ist persistentes Skin-Objekt, das beschreibt, wie die Voransicht von Stories auf diesem Weblog ausschauen soll. Dieses Skin-Objekt ist auch noch mit seinem primären Key "skin[3]" im Cache des Node-Managers enthalten.

PS: obige Anordnung und Struktur der Skins in Antville ist im Type-Mapping des weblog-Prototyps durch folgenden Zeilen definiert:

skinmanager=[virtual]skin.NAME
skinmanager.subnodeRelation=<skin.WEBLOG_ID
skinmanager.areSubnodes=true
skinmanager.groupby=PROTO

Ja, das Format der type.properties-Files ist nicht super-intuitiv. Wir denken schon über ein neues Format nach, das etwas weniger konzis und etwas mehr expressiv ist ;-)

Themenwechsel: Der einzige Grund, warum viele Leute keinen grünen Tee mögen (oder komisch aromatisierten grünen Tee trinken) ist dass sie ihn zu lang ziehen lassen. Eine Minute reicht völlig. Von Tricks wie kurz aufbrühen, wegschütten und wieder aufgiessen halt ich nichts.

Dan Clowes und Terry Zwigoff im Salon.com-Gespräch. Vielleicht schaue ich mir Ghost World doch an.

Interview mit Richard Stallman.

lnk + 2 cmt (earl, wikinger)
 Sonntag, 5. August 2001 

Yes! Der erste Tag seit Dienstag, an dem am aktuellen Helma-Snapshot wieder alles läuft. Mehr dazu nach dem Frühstück.

Heute nachmittag um 4 sind Mkt und ich bei Radio en-gen, einer Sendung auf Radio Orange zu Gast. Es geht um Weblogs. FALSCH! Das ist ja erst am Dienstag.

lnk + 2 cmt (chris, hns)
 Samstag, 4. August 2001 

Vorher - nachher

lnk + 1 cmt (chris)

Not logged in. Click here to log in.

 comments