mercoledì 15 settembre 2010

hacking opensimulator

Inizio stasera una serie di posting sui miei esperimenti con OpenSimulator, esperimenti che in realta` sono iniziati un annetto fa, ma che avevo sospeso perche` la piattaforma era, all'epoca, un disastro, troppo immatura persino per un vecchio hacker come me.

Per chi non lo sapesse OpensSimulator e` la versione Open Source del server per mondi virtuali tipo Second Life. Per chi non sapesse cos'e` Second Life, invece, posso solo dire che anche i dinosauri, per quanto grossi, si sono estinti, ed e` il caso di evolversi, altrimenti si rischia la stessa fine :)

Ho installato sul mio server la versione piu` recente presa da OSGrid, precisamente la 0.6.9-post-patches, e l'ho configurata come server standalone, ovvero non collegata a nessuna grid particolare. Tuttavia e` hypergrid enabled, questo significa che se aprissi le opportune porte sul mio firewall, dall'esterno sarebbe possibile collegarsi e visitare i luoghi virtuali dei miei hackeraggi. Meglio di, non con una adsl come la mia, perlomeno.

La configurazione e` stata un discreto bagno di sangue, risolta poi scaricando una distribuzione gia` preconfezionata (Diva), e riutilizzando i config files adattandoli alle mie esigenze.

OpenSimulator e` scritto in C#, quindi dovendo girare su un server linux (non penserete mica sul serio che usi windows per un server) mi sono dovuto installare anche l'ultima versione di mono. Scaricare, compilare, insomma, le solite cosa da linux geek. Di tutto questo parlero` in dettaglio (pensando di fare cosa gradita a molti) in un altro post, per il momento preferisco buttare giu` qualche impressione a caldo mentre sevizio in modo ignobile la mia isola personale, un diario di bordo del perfetto hacker sadico, insomma.

Come prima cosa, ho creato un prim con uno script che mi mostrasse in tempo reale le statistiche principali della regione (FPS, numero di prim, occupazione di RAM):


vector color1 = <0,1,0>;
vector color2 = <1,1,0>;
vector colorw = <1,0,0>;
integer color = 1;

default
{
state_entry()
{
llSay(0, "monitor running");
llSetTimerEvent( 2.0 );
}

timer()
{
string tstr = "";
list tlist = osGetRegionStats();
vector tcolor;

tstr += "Dilatn: " + llList2String(tlist,0) + "\n";
tstr += "SimFPS: " + llList2String(tlist,1) + "\n";
tstr += "PhyFPS: " + llList2String(tlist,2) + "\n";
tstr += "Prims: " + llList2String(tlist,6) + "\n";
tstr += ".\n";
tstr += "RAM: " + (string)(osGetSimulatorMemory() / 1024 / 1204) + " Mb\n";
tstr += ".\n.\n.\n";

if (color == 1) {
tcolor = color2;
color = 2;
} else {
color = 1;
if (llList2Integer(tlist,0) <> 44000) {
tcolor = colorw;
} else {
tcolor = color1;
}
}

llSetText( tstr, tcolor, 1.0 );
}
}


Quindi ho indossato il prim (lo vedete sulla mia testa) e mi sono messo a creare prim a gogo, a mille alla volta, fino a raggiungere il massimo consentito dalla regione, che e` 45000. Per la verita` i prims in regione sono 45000 + 1, ma quello che ho sulla testa non conta riguardo al numero massimo.
Non ho capito perche`, ma la finestra di info della regione (dal client, sto usando Imprudence), mi diche il numero massimo di oggetti sulla land e` 15000, il che non e` ovviamente vero. Aggiunge anche che i 30mila oggetti in piu` saranno cancellati. Non e` vero neanche questo.

Ho continuato a creare prim (altri 1000 per la precisione), e me li ha lasciati creare. A questo punto ero perplesso. Dopo un restart le cose si sono chiarite, al reload della regione sono stati ricaricati solo 45000 prim, gli altri ... puff, andati. Il fatto che li abbia potuti creare ugualmente probabilmente e` per via che sto usando il master avatar (il super admin, insomma). Che mi da` il potere di creare cose che poi pero` saranno spazzate via. Ci deve essere un messaggio profondo in questa faccenda, ma non e` il momento di pensarci, ora.

Invece, alcuni dati: con 45mila prims l'occupazione di RAM riportata e` di circa 372Mb, ma non so per quale motivo mentre li creavo ho raggiunto un massimo di 90Mb. Solo dopo un restart della regione, quando ne ha ricaricato il contenuto, l'occupazione e` schiz zata a 372Mb.

L'occupazione reale del processo, secondo quanto dice top, e` di 438 Mb, mono ci mette il suo hoverhead, ovviamente. Segnatevi questi dati di massima, se intendete sperimentare anche voi, e non volete mandare in vacca la vostra povera macchina linux per mancanza di RAM :)

Una curiosita`, il comando "show stats" dalla console di opensim mostra un'occupazione di ram di 297Mb .. dato che dovrebbe riportare gli stessi valori della funzione usata nello script (gli altri in effetti sono uguali) non si capisce bene chi dei due abbia ragione.

Probabilmente nessuno dei due, visto che l'occupazione reale e` quella data dal sistema, che e ` quella che conta, alla fine.

Altra curiosita`: i prim sulla land sono memorizzati, nel database MySql, nelle due tabelle "prims" e "primshapes". Se li prendete su e li mettete nell'inventario, invece, finiscono nella tabella "assets". Ci sara` una ragione per cui hanno scelto di memorizzare le stesse cose in due posti differenti, invece che creare opportuni link, ma la cosa mi sfugge. Gli assets hanno un link che li collega, eventualmente, al vostro inventario. Una cosa e` certa, i prims nelle due prime tabelle sono solo quelli effettivamente sulla land, mentre gli assets non vengono mai cancellati, posso vedere che dentro ci sono le 15 o 20 versioni dello script che ho modificato piu` volte. Questa cosa non ha alcun senso, e credo funzioni allo stesso modo anche su Second Life. Il che spiega perche` questa tecnologia "non e` scalabile". Ovviamente, se ha dei flaws di progettazione di base cosi` grossolani. Spero almeno che vi sia in giro un task che permetta la pulizia del database, cosa pero` di cui dubito assai (dopo giorni di tribolazioni su questo software, sto cominciando ad entrare nella logica malata degli sviluppatori).

Durante la creazione dei prim, il motore fisico e` andato in mona, potevo passare attraverso i blocchi come se non esistessero. Dopo il restart le cose si sono sistemate, ora i prim sul terreno sono solidi come rocce. Visto anche la storia dell'occupazione iniziale di RAM piuttosto esigua, immagino che durante la creazione i prim siano stati piazzati nella scena in modo, come dire, parziale, e suppongo che ci sia un task di consolidamento che si occupa, di tanto in tanto, di rendere "reali" le cose create, task che pero` deve essere andato in mona assieme al motore fisico per la troppa roba creata (o troppa in troppo poco tempo). Anche il viewer ci mette d el suo, quando provo a sloggarmi ci mette circa un quarto d'ora per uscire. Ci metterebbe. Lo ha fatto la prima volta. Ora lo killo io prima :)

In questo momento ho creato altri 4 prim sulla land, quindi 4 oltre il limite. Nessun problema, neanche al motore fisico. Li vedete li` per terra, belli colorati. Ora faccio un restart della regione e vedo che fine fanno.

Bene, fatto. Nel senso che il comando "restart" ha ricaricato 45000 prims, e portato l'occupazione del processo a circa 600Mb. Della serie, gest iamo correttamente la reinizializzazione delle variabili, oppure e` mono (C#) che ha una garbage collection che fa cagare, o probabilmente en trambe le cose. D'altro canto un linguaggio nato in casa Microsozz non poteva essere granche`, e il fatto che sia stato scelto come base per lo sviluppo di questo progetto spiega molti dei problemi che lo affliggono. Parlo della mente contorta degli sviluppatori, non del linguaggio in se ;)

A parte gli scherzi, questo passa il convento, e comunque OpenSimulator e` uno progetto di tutto rispetto, dubito che si possa fare di meglio quando si lavora "on the edge", in un campo cosi` innovativo come questo.

Ok, evitiamo il restart. Facciamo un "quit" e facciamo ripartire l'istanza da zero, che e` meglio. Sicuramente se si ha intenzione di mettere questo mostro su un server in produzione meglio pensare ad un watchdog che appena lo vede divorare piu` ram del necessario, tak!, un colpo alla nuca e via che si riparte, meglio il crash di un'isola che il crash dell'interso sistema.

Ah ... 4 prim in piu` sono ancora li`. Anche questo e` interessante, nel senso che mi piacerebbe sapere con quale logica sono eseguiti i controlli dei limiti nel simulatore. Mi vengono in mente solo espressioni colorite e piuttosto oscene, quindi sorvoliamo.

Per ora mi fermo qui, ho hackerato abbastanza per stanotte. Vi invito a fare un giro sulle nostre isole pubbliche, qui: KUBiC HyperKUBiC, per ora sono vuote ma appena riesco a riappropriarmi della mia roba su Second Life (di questo parlero` in un altro post), si riempiranno.

Buona meta-navigazione.

venerdì 11 dicembre 2009

demenza terapeutica

bene bene ... ho volutamente lasciato a mantecare questo mio blog, perche` mi sono accorto che aveva preso una piega troppo polemica

va bene la denuncia, vanno bene gli sfoghi quando ci si scontra con la spazzatura che ci circonda, ma la polemica, in se, e` sterile, e porta via un sacco di tempo .. che e` prezioso, non siamo qui in eterno (per fortuna) e dovremmo usarlo meglio che possiamo

quindi a parte le 1000 mila attivita` in cui mi perdo quotidianamente, di recente ho calcato la mano su quella che definisco "demenza terapeutica": grazie alla ghiotta occasione della sentenza della Corte di Strasburgo sul crocefisso nelle aulee scolastiche, e per salvaguardare i miei neuroni dalla marea di merda che e` venuta a galla rimestando nel pozzo nero, ho trovato un branco di stupendi cazzeggiatori che riescono a combattere, con la loro ironia e intelligenza, l'isteria che ci salta addosso ogni 3x2

fatevi un giro su questo gruppo in feisbuk: Difendiamo le radici cristiane! NO ALLE CIFRE ARABE NELLA SCUOLA! II, iscrivetevi e partecipate, oppure se siete invasati, fate come gli altri invasati che non si rendono conto dell'intento ironico del gruppo, e insultateci, polemizzate e non mancate di segnalarlo, il primo gruppo (notate il II nel titolo) gia` e` stato bannato per "istigazione alla violenza" (??), se dovesse accadere di nuovo, risorgera` com'e` giusto che sia :)

riprendero` a scrivere su questo blog appena mi saro` ripulito dalla spazzatura mentale accumulata negli ultimi tempi, vi saluto per il momento con la famosa frase "sara` una risata che vi seppellira`"

(ma anche come dice il mio amico Sacha, "ricordati che devi morire" ... mi tocco gli zebedei e chiudo la trasmissione)

mercoledì 1 luglio 2009

brutti spettacoli e pessimi attori



Oggi stavo rientrando dall'italia, ero in autostrada, quando sento per radio la notizia dell'incidente ferroviario di Viareggio.

Tre le cose che mi hanno colpito, al di la` dell'ovvio orrore nell'apprendere della morte di persone bruciate vive.

La prima, Bertolaso e` arrivato sul luogo in elicottero, per un sopralluogo. Si, lo so che e` il capo della Protezione Civile, e la cosa gli compete, ma ho ugualmente sentito un brivido: a pelle, quell'uomo, mi da` l'idea di uno squalo.

La seconda, Berlusconi si precipita sul luogo, dove rimane (parole del cronista) "20 minuti ad osservare la scena del disastro". Mi sono ritrovato a visualizzare mentalmente questa immagine, una faccia di gomma che guarda, per 20 lunghissimi minuti, una scena apocalittica, una scena di cui non gliene frega una beata mazza. Dopo 20 minuti avra` pensato, ok, mi sono fatto vedere abbastanza, per i coglioni che amano vedermi in tv basta e avanza, e via verso altre comparsate.

Se il primo B. mi ricorda uno squalo, il secondo B senza dubbio e` l'incarnazione di uno sciacallo (che pure in natura ha la sua dignita`, e mi scuso con lo sciacallo).

La terza cosa che mi e` venuta in mente, e` il ricordo delle discussioni fatte alcuni anni fa con amici e conoscenti, che mi davano per pazzo, retrogrado (e ultimamente, comunista, che va sempre per la maggiore) per le mie critiche alla TAV.

Insistere sul fatto che non ero contrario ai treni ad alta velocita`, ma che le modalita` di realizzazione e i dubbi sugli appalti mi preoccupavano, non serviva a farli ragionare, ero un retrogrado che "non capiva l'importanza del progresso per l'italia".

Ma era il punto cruciale a farmi incazzare, non mi capacitavo del fatto che non capissero: gli investimenti nella TAV significavano senza ombra di dubbio che tutto il resto delle ferrovie sarebbe stato trascurato. Perche` in italia e` cosi` che si fa, ci si fa grandi con i conti della serva, cosi` come ai tempi di un altro B, tal Benito, si mandavano i nostri fanti in russia con gli stivali dalla suola di cartone e gli automezzi che si bloccavano perche` il gasolio congelava nel motore.

Odio quando devo constatare il classico ed antipatico "l'avevo detto io", mi fa sentire vecchio ed e` frustrante. Il ruolo del profeta non mi si addice, eppure anche in questo caso ci avevo azzeccato. Profezia facile, si puo` obiettare. Certo, ma allora perche` se e` cosi` facile, la maggior parte degli italiani, queste cose, non le vedono? Possibile che siamo diventati cosi` ottusi?

Semplici ragionamenti mi portano a considerare il mondo come un insieme di cause ed effetti, di azioni e reazioni, di un sistema che ha un equilibrio naturale, e che come un pendolo, se lo si tira da una parte, prima o poi compira` il suo percorso e salira` dall'altra.

Se investi miliardi di euro in un progetto ambizioso come la TAV, e nel contempo riduci il personale, i controlli, gli investimenti, appalti esternamente la manutenzione ... quando il pendolo oscilla dalla parte opposta, aspettati l'inevitabile, puo` andare bene una volta, due, dieci. Ma prima o poi il conto e` da pagare.

Quanti altri incidenti come questo dobbiamo portarci sulle coscienze, prima di cominciare a pigliare a calci in culo la lunga catena di irresponsabili (dai politici agli amministratori) che "gestiscono" settori vitali di un paese, come le ferrovie, ma non solo?

Domande retoriche, le risposte sono li` a portata di mano, oppure non esistono proprio, quindi chiudo qui. Mi rimane solo (solo?) da abbracciare virtualmente le vittime di questa tragedia.

mercoledì 24 giugno 2009

englaro: dopo tanto clamore, ora un clamoroso silenzio

E` di questi giorni la notizia che e` stato archiviato perche`, come si direbbe in legalese, il fatto non sussiste, il fascicolo aperto dall'Ordine dei Medici di Bergamo contro Defanti, il neurologo che ha avuto in cura Eluana Englaro.

Il fascicolo e` stato archiviato un mese fa, ma nessuno ne ha sentito parlare. Curioso il fatto che sia stato proprio l'Ordine dei Medici a decidere di non diffondere la notizia. A sentir loro, perche` su questa faccenda si era gia` creato anche troppo tam tam mediatico, e perche` ci sono ancora strascichi in sede legale.

Sara` .. a me sembra piu` che altro che l'Ordine, che ha prontamente aperto il fascicolo su pressione degli integralisti, per quanto abbia ravanato non ha trovato nulla da eccepire sul comportamento del neurologo, e dovendo chiudere il giocoforza il fascicolo, hanno cercato di evitare di rendere pubblica la magra figura.

Ammesso e non concesso che, come gli e` stato chiesto di aprire il fascicolo la prima volta, qualcuno abbia chiesto loro il silenzio la seconda.

A pensar male si fa peccato, ma quasi sempre ci si azzecca, diceva un certo inquietante personaggio ...