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
 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)
 Freitag, 3. August 2001 

Endlich verstehe ich den letzten Teil des Hop, der mir bisher ein Rätsel war, und kann ihn erklären bzw. so neuschreiben, dass er erstmals überhaupt zu verstehen ist.

Ich reposte hier einen Augenzeugenbericht aus Genua, den ich heute bekommen habe und der interessant ausschaut. Hab ihn selbst noch nicht ganz gelesen. Italienisch required. Wenn ich's gelesen habe poste ich eine Zusammenfassung, was natürlich auch sonst jeder machen darf.

----- Original Message -----
From: Stefano Agnoletto
Sent: Sunday, July 22, 2001 5:52 PM
Subject: Io ero a Genova. Quante menzogne....

Cari amici,
allora io ero a Genova. Io ho visto.
Non date retta ai giornali ed ai telegiornali.
E' stata una cosa pazzesca, un massacro.
E' difficile raccontare cio' che e' avventuto tra venerdi' e sabato.
Per farlo mi aiuto con quello che ho visto io e quello che hanno visto
altri carissimi amici presenti a Genova.
Vi prego di avere la pazienza di leggere e' veramente la cronaca di un
incubo che difficilmente sentirete sui grandi mass media.


1.Io arrivo Giovedi' a Genova dopo la festosa manifestazione dei
migranti, 50.000 persone. Ci sono i campi di raccolta, siamo tantissimi.
Migliaia di persone assolutamente pacifiche, un clima meraviglioso (vi
ricordate i campi scout?) si discuteva si cantava si stava bene insieme.
Scout e militanti, volontari e professionisti e venerdi' mattina
iniziamo le piazze tematiche in una citta' blindata:le varie
associazioni si troveranno sparse nella citta' per fare un assedio
festoso con danze, performance e slogan alla famosa linea rossa. A
questo punto sul lungo mare arriva il famoso blak blok, alcuni di loro
vengono visti parlare con la polizia, altri direttamente escono dalle
loro fila.Parlano soprattutto tedesco.
Iniziano a sfasciare tutto. Polizia e carabinieri stanno fermi. I Black
block cercano di infilarsi nel corteo dei lavoratori aderenti ai COBAS e
altri sindacati, di cui picchiano uno dei leader, vengono respinti a
fatica.
Poi i black blok puntano sulla prima piazza tematica (centri sociali),
piombano armati fino ai denti. La polizia li insegue, i manifestanti si
trovano attaccati prima dai black e poi dalla polizia che a quel punto
inzia le cariche violentissime. I Black se ne vanno e piombano sulla
piazza dove c'era la rete di Lilliput (commercio equo, gruppi cattolici
di base, Mani Tese..ecc.). La gente facendo resistenza pacifica cerca di
allontanarli. La polizia insegue: carica la piazza. La gente alza le
mani grida pace! Volano lacrimogeni manganellate. Ci sono feriti. I
Black se ne vanno e continuano a distruggere la citt=FD... 300-400 del
Black Bloc vagano per Genova, chi li guida conosce perfetttamente la
citta': il loro percorso di distruzione punta a raggiungere tutte le
piazze tematiche dove ci sono le iniziative del movimento..
E' impressionante.
Si muovono militarmente, si infiltrano, i capi gridano ordini, gli altri
agiscono. E a ruota arrivano polizia e carabinieri
Intanto nella piazza tematica dove c'e' l'ARCI e l'Associazione Attac
ecc.: tutto va bene, nel primo pomeriggio si decide di andarsene dal
confine con la linea rossa fino ad allora assediata con canti, scenette,
ecc. La gente sfolla verso Piazza Dante, la polizia improvvisamente
lancia lacrimogeni alle spalle,. Fuggi fuggi generale.
Gli ospedali si riempiono di feriti. Molti pero' non vanno a farsi
medicare in ospedale: la polizia ferma tutti quelli che ci arrivano.


E' sera. La gente e' sconvolta, molti inziano a essere presi dalla
rabbia. Dei black improvvisamente non si ha piu' notizia.
Alla cittadella dove c'e' il ritrovo del Genoa Social Forum saremo
diecimila.E' arrivata la notizia della morte del ragazzo.
C'e' paura, i racconti di pestaggi violentissimi si moltiplicano.
Ragazzi e suore che piangono. C'e' un sacco di gente ferita. Un anziano
che piange con una benda in testa, =CB un pensionato metalmeccanico. C'e'
Don Gallo della Comunita' di San Benedetto. C'e' la mamma leader delle
Madri di Plaza de Mayo in Argentina, quelle che da anni cercano notizie
dei loro figli desaparecidos: dice che e' sconvolta per quello che ha
visto con i suoi occhi, gli ricordano troppo l'Argentina della
dittatura: non pensava fosse possibile in Italia
Intervengono mio fratello, Luca Casarini delle tute bianche e Bertinotti
(l'unico politico che ha avuto il coraggio di correre ) calmano tutti:
ragazzi non uscite in piccoli gruppi, non accettate la sfida della
violenza. Si decide che la risposta sara' la grande manifestazione del
giorno dopo, saremo in tantissimi, pacificamente contro tutte le
provocazioni e le violenze di black block e forze dell'ordine. Il
senatore Malabarba racconta che e' stato in questura. Ha trovato strani
personaggi vestiti da manifestanti, parlano tedesco ed altre lingue
straniere. Confabulano con la polizia e poi escono dalla questura.
Scoppia improvvisamente un incendio in una banca vicino alla cittadella.
Gli elicotteri ci sono sopra: per piu' di 40 minuti non arriva ne'
pompieri ne' niente.
Di notte uno dei campi dove siamo a dormire, il Carlini, viene
circondato dalla polizia. Entrate a perquisire, fate quello che volete.
La gente piange: implorano di non essere ancora caricati. La polizia
entra: nel campo non trova niente.


2. Sabato: la grande manifestazione, siamo veramente una moltitudine. Il
corteo parte, ci sono mille colori. Gente di tutto il mondo. Tutte le
associazioni, il volontariato, i contadini, i metalmeccanici, i curdi,
..ecc. Canti, danze, mille bandiere.
Piazzale Kennedy. Non ci sono scontri. Non c'e' niente.
Sbucano i black Block La polizia improvvisamente, senza alcun motivo,
spacca in due l'enorme manifestazione. . Si scatena la guerra. Cariche
dovunque, manganellate. Sono impazziti. La polizia carica i
metalmeccanici della FIOM, i giovani di Rifondazione. Iniziano
inseguimenti per tutta Genova. Chi rimane solo =CB inseguito, picchiato.
Decine di persone testimoniano di inseguimenti e pestaggi solo perche'
riconosciuti come manifestanti. E' picchiato dalla polizia un
giornalista del Sunday Times (sul numero di oggi racconta la sua
avventura...)
In un punto tranquillo della manifestazione, sul lungomare,
improvvisamente da un tetto vengono sparati lacrimogeni che creano
panico. Usano gas irritanti, producono dermatiti, non fanno respirare.
I Black Bloc? compaiono e scompaiono, nessuno li ferma. Attaccano un
ragazzo di Rifondazione. Gli spaccano la bandiera e lo picchiano.
Attaccano a pietrate i portavoce del Genoa Social Forum. Spaccano
vetrine ed incendiano. Sono armati fino ai denti: ma come ci sono
arrivati nella Genova blindatissima? La testa della grande
manifestazione =CB tranquilla, il Genoa Social Forum fa l'appello di
defluire con calma, di non girare da soli per la citta'. Veniamo
indirizzati verso Marassi dove ci sono i pulman di quelli arrivati la
mattina. Siamo fermi li'. Non si puo' andare avanti: a piazzale Kennedy
e' guerra. Siamo in tanti fermi, seduti per terra.
Improvvisamente partono i lacrimogeni. Fuggi fuggi generale. Si cerca di
tornare verso la cittadella del Genoa Social Forum: passano camionette
della polizia da dove urlano: vi ammazzeremo tutti!
La seconda parte del corteo non arrivera' mai alla piazza dove era
prevista la conclusione. Tutte le persone vengono caricate
indistintamente sul lungo mare. Chi riesce scappa nei vicoli verso la
collina, dove si scatena una vera e propria caccia all'uomo.


Sabato notte, la manifestazione era ormai finita da alcune ore, la
polizia irrompe nella Sede stampa del Genoa Social Forum. Picchiano
tutti con una violenza impressionante. In particolare sono interessati
alla documentazione (testimonianze, video, foto...ecc.) che raccontano
quello avvenuto tra venerdi' e sabato: sono molti attenti a distruggere
tutto. Vengono distrutti tutti i PC e tutto il materiale che trovano,
viene arrestato l'avvocato che coordina il gruppo di avvocati presenti a
Genova. Viene distrutto o portato via anche tutto il materiale che gli
avvocati avevano raccolto per difendere le persone arrestate. Adesso non
si sa piu' neanche quante sono e quali sono le accuse.
Durante la perquisizione, fatta senza alcun mandato, a parlamentari,
avvocati, giornalisti e medici e'impedito di entrare.
Le famose armi comparse oggi in conferenza stampa ieri non si erano
viste....rimangono i feriti e gli arrestati.
Del black blok non si sa piu' niente.


Vi assicuro, due giorni da incubo: black block e forze dell'ordine hanno
fatto un massacro e volevano farlo. Poliziotti e carabinieri erano stati
montati in modo pazzesco, fin da venerdi' mattina urlavano e
insultavano..
Gli hanno veramente lavato il cervello.
E poi oggi a sentire televisioni e leggere giornali: Dio mio sembra
proprio un regime: dove hanno scritto la verita' che tutti noi che
eravamo li' abbiamo visto?
Divento poi matto a pensare che alcuni potranno ancora pensare: "voi
contestatori, dite le solite cazzate..."


Non fatevi imbrogliare, abbiate il coraggio di mettere in discussione i
vostri convincimenti sulle meravigliose forze dell'ordine italiane e
sugli apparati democratici del nostro Stato.
A Genova veramente e' avvenuto qualcosa di pazzesco.
Hanno inaugurato il nuovo governo....
Un'altra piccola cosa: sul giovane ammazzato. La sapete la prima
versione della questura prima che comparissero i video? ammazzato da un
sasso lanciato da altri manifestanti.......
Se pensate che molta della documentazione raccolta da testimoni e' stata
distrutta dopo l'irruzione alla sede del Genoa Social Forum di questa
notte....ci rimangono le "sicure" versioni delle forze dell'ordine...


Meditate e per favore fate girare, stampate, parlate, c'e' bisogno di
raccontare la verita'. A vostri amici, parenti, colleghi di lavoro.
Vi prego non voltatevi dall'altra parte.
grazie
Stefano
P.S. Mio fratello e' distrutto, mi ha detto: =CB pazzesco, sembra di
essere nell' America Latina negli anni 70.
Forse neanche lui aveva capito fino in fondo con chi aveva a che fare e
che governo e responsabili delle forze dell'ordine potessero arrivare a
tanto.

lnk + 2 cmt (earl, hns)
 Donnerstag, 2. August 2001 

Ah so, die Hitzewelle.

Torque ist ein Unterprojekt von Turbine, was wiederum ein Unterprojekt von Jakarta, einem Unterprojekt von Apache ist. Gehen tut es bei Torque um die Beschreibung relationaler Datenquellen sowie die Erzeugung entsprechender Java-Klassen. Die Datenquellen werden mithilfe eines XML-Formats beschrieben. Die systemabhängigen SQL-Statements (CREATE und dergleichen) werden über ein mir unbekanntes Template-System gerendert.

Heute beim Frühstück mit Tom aka Snivlem die Vorzüge des Kakaos wieder entdeckt. Suchard Express, genauer gesagt.

Heute, Anfang August 2001, ist ein guter Tag um die Zeit zwischen 29. Oktober und 3. November 2000 auf der Euroranch zu vergegenwärtigen. Oder die Woche danach. Vielleicht gehen sich auch noch die erste und zweite Woche nach der Woche danach aus. Diese Hyperlinks - eine feine Erfindung.

Ich habe gerade eine Regel zur Ab- und Einhaltung von Arbeitspausen eingeführt. Pro Arbeitstag muss ich mindestens dreimal eine Viertelstunde auf der Couch liegen oder auf der Terrasse sitzen - je nach Wetter- und Gemütslage. Bisher gewinnt die Couch haushoch gegen die Terrasse, auch weil wir dort keine gescheiten Liegestühle haben.

lnk + 4 cmt (wikinger, hns, mkt)
 Mittwoch, 1. August 2001 

Hitzewelle? Welche Hitzewelle?

Gedanken zum automatischen Spiegeln von Websites: Der österreichische Mirror von Python.org verdeutlicht, warum es nicht immer eine Tugend ist, auf dem allerletzten Stand zu sein.

Der gestrige Tag wird wohl als einer der produktiveren meines Lebens in meine Biografie eingehen. Fast 40 kb diffs all across Helma. Natürlich hab ich mehr Code weggeschmissen als neu geschrieben, aber das ist ja das schöne.

Der Anlass war, dass heute zwei Bug-Reports von Tom Förster und Chris Langreiter kamen, die beide die selbe Wurzel hatten: die Arten, wie Helma kurzlebige und persistente Objekte intern referenziert. Es liegt nämlich in der Natur der Sache, dass diese Objektarten verschieden gehändelt werden müssen: kurzlebige Objekte müssen direkt "verdrahtet" werden, weil sie sonst nirgends existieren, während langlebige Objekte indirekt über eine Zwischenschicht verbandelt werden, die die Objekte aus der Datenbank holt, wenn sie gebraucht werden, und wieder aus dem Cache rausschmeisst, wenn anderswo mehr los ist.

Bisher war das so gelöst, dass beide Objektarten von unterschiedlichen Klassen dargestellt wurden, die beide das selbe Interface implementierten: helma.objectmodel.Node und helma.objectmodel.db.Node. Wenn ein Objekt von einem Zustand in den anderen wechselte, musste quasi eine Klon-Instanz des gesamten Objektbaums mit der neuen Klasse erstellt werden - höchst problematisch, weil zu diesem Zeitpunkt bereits eine Vielzahl von Verweisen auf das Objekt existieren können (sowohl Hop-intern als auch im Javascript-Interpreter), die alle von der Umwandlung benachrichtigt werden müssen.

Die richtige Lösung des Problems war peinlich einfach: Eine smarte Referenzklasse namens NodeHandle, die weiss, wie sie grad auf ihren Node zugreifen muss. Die Klasse bleibt dieselbe und ist von Anfang an persistent-capable. Die Klasse für kurzlebige Objekte hingegen wird nur noch für jene Objekte benutzt, die niemals in Datenbank eingecheckt werden dürfen.

lnk + 8 cmt (chris, hannes, hns2, hns)

Not logged in. Click here to log in.

 comments