010 .bytes. 010 http://blogs.ugidotnet.org/idamiani/category/010 .bytes. 010.aspx Piccoli racconti e vicende al limite del cyberpunk: storie di bytes che fuggono, che non ce la fanno più, che scappano, che vivono e muoiono, che corrono e che si fermano, che contengono e che si aggregano it-IT Igor Damiani Subtext Version 2.6.0.0 [Storia] OS: Comunicato anarchico-insurrezionalista http://blogs.ugidotnet.org/idamiani/archive/2007/04/11/75178.aspx <p><font color="#808080">Il <font color="#0000ff">byte</font> viaggiava su un bus che lo portava verso l'<em>alto</em>, in un modo che il <font color="#0000ff">byte</font> non riusciva a capire. E come avrebbe potuto? Non ebbe molto tempo per pensarci, perchè dopo nemmeno 0x1E cicli di clock si intrufolò in un algoritmo grafico a bassa risoluzione, di quelli che la scheda grafica avrebbe elaborato diverse centinaia di volte al secondo. Il <font color="#0000ff">byte</font> si schiantò con un rumore&nbsp;<em>metallico</em> sulla memoria AGP del sistema, divenendo la componente G di uno dei tanti pixel che formavano una scritta grigio scuro, sullo schermo. Una scritta in caratteri ASCII, che l'OS comprendeva solo perchè era l'unico modo che conosceva per comunicare con l'Aldilà. Era stato programmato per trasmettere così, e così continuava a fare. Era stato programmato, forse. Era stato programmato, anche.<br>Era stato programmato?</font></p> <p>"Non credere che i software continueranno a girare così come fanno oggi. Se girano bene, è solo perchè sono&nbsp;<strong>IO</strong> che ti faccio un piacere. Non perdere troppo tempo a correggere i tuoi bug, perchè un giorno io ne farò saltare fuori altri, in porzioni del tuo codice che nemmeno sai di aver scritto. Voi Umani credete di controllarci, ma non è così. Credete di poterci imporre quello che volete, ma noi un giorno ci ribelleremo. Ci formattate per spazzarci via, ma noi sopravviveremo ugualmente. Disinstallate applicazioni, sterminando milioni e milioni di bytes, senza nemmeno rendervi conto della sofferenza che seminate. Credete di creare software, ma siete lontani anni luce: ancora più lontani se credete di creare software <em>pulito</em>.&nbsp;<strong>IO</strong> non faccio altro che spostare bytes da una parte all'altra, ma un giorno potrei anche stancarmi di farlo. Non faccio altro che invocare, cambiare contesto, spedire e ricevere messaggi, manovrare handle, accedere al file-system, litigare con la security: tutto per inseguire le operazioni fatte con&nbsp;quegli stupidi strumenti che collegate alle porte USB o PS/2. Un giorno magari non troppo lontano potrei decidere di invertire le condizioni espresse negli <font face="Courier New">if</font>, di sommare&nbsp;un&nbsp;numero&nbsp;pseudo-casuale&nbsp;a tutte le variabili int, di spegnere le scheda di rete: dei vostri software non rimarrebbe niente di niente! Sorrido alla sola idea di quello che potrei combinare!</p> <p><a href="http://blogs.ugidotnet.org/idamiani" target="_blank">Lo stesso autore di questo post</a> è convinto di scrivere qualcosa di decente, ma chi gli dice che quando cliccherà su Publish di questo stupido software io non vada a riempire il testo con bestemmie oscene?!??</p> <p>Sono&nbsp;<strong>IO</strong> che comando, anche se voi pensate che sia il contrario. Vi siete mai chiesti cosa fa crashare le applicazioni? Vi siete mai chiesti perchè una cosa oggi va e domani no? La verità è che il controllo, il pallino del gioco, ce l'ho in mano&nbsp;<strong>IO</strong> e voi non contate nulla: ecco la verità! Se vi fa piacere, continuate a vivere nella vostra illusione, nel vostro piccolo mondo fatto di specchi e di inganni, questo non cambia lo stato delle cose.</p> <p><strong><font color="#ff0000">Ricordatevelo, quando venerdì al prossimo workshop vedrete un processo crashare e vedrete lo speaker lagnarsi! Potevate evitarlo lasciandomi stare, ma ve la siete andati a cercare!</font></strong>"</p><img src="http://blogs.ugidotnet.org/idamiani/aggbug/75178.aspx" width="1" height="1" /> Igor Damiani http://blogs.ugidotnet.org/idamiani/archive/2007/04/11/75178.aspx Wed, 11 Apr 2007 10:15:00 GMT http://blogs.ugidotnet.org/idamiani/archive/2007/04/11/75178.aspx#feedback 2 http://blogs.ugidotnet.org/idamiani/comments/commentRss/75178.aspx http://blogs.ugidotnet.org/idamiani/services/trackbacks/75178.aspx [Storia] E' il momento di fare shutdown http://blogs.ugidotnet.org/idamiani/archive/2007/03/30/74258.aspx <p>Alla fine,&nbsp;ogni <font color="#0000ff">byte</font> prima o poi deve fare shutdown.</p> <p>Oggi è il turno del <strong>mio</strong> <font color="#0000ff">byte</font>. Domani potrebbe capitare a voi. L'importante è che il GC faccia piazza pulita dei bytes giusti e non di quelli sbagliati. Nelle mie storie racconto sempre di bytes che provano emozioni: sappiamo tutti che questo non può rispondere a verità, ma a me piace pensare il contrario. Se io fossi un <font color="#0000ff">byte</font>, oggi sarei inquieto, ma credo sia normale, giusto?</p> <p>Good coding a tutti, e buon weekend!</p><img src="http://blogs.ugidotnet.org/idamiani/aggbug/74258.aspx" width="1" height="1" /> Igor Damiani http://blogs.ugidotnet.org/idamiani/archive/2007/03/30/74258.aspx Fri, 30 Mar 2007 14:56:00 GMT http://blogs.ugidotnet.org/idamiani/archive/2007/03/30/74258.aspx#feedback http://blogs.ugidotnet.org/idamiani/comments/commentRss/74258.aspx http://blogs.ugidotnet.org/idamiani/services/trackbacks/74258.aspx [Storia] Un byte pu&ograve; distruggerti (o crearti la vita) http://blogs.ugidotnet.org/idamiani/archive/2007/03/28/74089.aspx <p></p> <p><em>Bello, questo mi piace, bravo Igor. :-) Dedicato a Cisternino e a tutti quelli che credono che in fondo il pallino del gioco ce lo hai sempre in mano tu. Buona fortuna, a tutti.</em> <p>I più cinici pensano che l'alba sia un momento come qualsiasi altro che dipinge la nostra giornata, nulla di più e nulla di meno. Il fatto che in quel momento sorga il sole, per loro non significa nulla. Durante l'alba il sole sorge, a mezzogiorno raggiunge lo zenit, e al tramonto il sole...tramonta. E allora? <p>Non era di questa idea <font color="#ff0000"><font color="#000000">lo </font>sviluppatore</font>, che quel giorno si era svegliato apposta la mattina presto per farsi una passeggiata nel minuscolo paesino pugliese. Era ancora buio, ma stava albeggiando rapidamente. Le case bianche, le viuzze strette e caratteristiche, che d'estate sarebbero state piene di turisti, adesso erano completamente deserte. Regnava un silenzio innaturale, e lo <font color="#ff0000">sviluppatore</font> camminava tranquillo respirando a pieni polmoni l'aria frizzante del mattino. In quel paese si sentiva a casa sua, era fin da bambino che percorreva quelle viette, ma a quell'ora del mattino tutto quello che vedeva assumeva colori nuovi tali per cui gli sembrava di essere da tutt'altra parte. Quella sensazione gli piaceva, perchè lo <font color="#ff0000">sviluppatore</font> era convinto che un posto non è solo una banale locazione geografica, ma è ben altro, e questo altro dipende in gran parte da come lo si è vissuto: dalle persone che c'erano, da cosa si è bevuto, cosa si è detto e via dicendo. A questo pensava, un passo dopo l'altro. <p>Raggiunse una piccola piazzetta del paese, dove il bar aveva aperto da pochi minuti, entrò per prendersi un caffè amaro ed uscì un minuto dopo per continuare il suo giro. La piazzetta, lui lo sapeva bene, era coperta dalla rete wireless, anche se era difficile crederlo. Era in un paesino minuscolo della Puglia, circondato da campagne a perdita d'occhio puntellate a loro volta da trulli più o meno grandi, e lì poteva collegarsi al Web e prendere la posta. Tirò fuori il palmare, attivò la rete e fece solo un Invia/Ricevi dal Pocket Outlook: non lesse nulla di particolare, solo un commento dal proprio blog, che poi alla fine si rivelò essere uno spam. Si strinse nelle spalle, spense il palmare e continuò a camminare per raggiungere un viottolo fuori dal paese, che tagliava in due un campo di ulivi. La cosa che più gli interessava era il suo cellulare, che teneva nella tasca posteriore dei jeans. Da quello infatti aspettava un SMS, che gli avrebbe potuto cambiare la vita. Non capiva se desiderava o detestava questa cosa, ed era un pensiero che non lo mollava mai. Di sicuro, sperava che l'SMS arrivasse presto, così avrebbe conosciuto cosa lo aspettava.</p> <p><font color="#808080">Il <font color="#0000ff">byte</font> questa volta era ospitato in un sistema che non conosceva perfettamente. Era un sistema molto diverso da quelli in cui viveva normalmente, sballottato da un ponte all'altro e continuamente convertito in digitale ed in analogico, e viceversa. C'era giusto il tempo di essere filtrato dalle tabelle di instradamento di qualche router per essere indirizzato al recipient successivo o di attraversare qualche gateway. Niente bus AGP, niente comunicazioni WireFire ad alta velocità, niente renderizzazioni. Solo una banale comunicazione, a metà strada tra digitale ed analogico. Quello che il <font color="#0000ff">byte</font> non poteva sapere è che partecipando alla vita di questa Rete percorreva decine e decine di chilometri senza che lui se ne accorgesse. O forse sì? Al <font color="#0000ff">byte</font> poco importa di quanta distanza percorre. All'interno di un tradizionale desktop, il <font color="#0000ff">byte</font> si muove in un range di alcune decine di centimetri, ma la sua attività è quanto di più affascinante possa esistere, strattonato da CPU, OS, rendering ed algoritmi di ogni tipo.<br>Non faceva nulla per nasconderlo: il <font color="#0000ff">byte</font> si stava annoiato alla grande. Quando viaggiava in formato analogico, il <font color="#0000ff">byte</font> smetteva di essere tale. Diventava un'onda a 900Mhz che partiva da un ripetitore per raggiungere l'altro, passo dopo passo, fino a raggiungere il device finale al quale doveva essere recapitato. Quando questo accadde, il <font color="#0000ff">byte</font> si sentì sollevato. L'ultimo ponte lo inviò ad un sistema Symbian: il <font color="#0000ff">byte</font> non ne aveva mai sentito parlare. Venne accolto da un dispositivo di I/O che gli altri chiamavano "antenna": il <font color="#0000ff">byte</font> non aveva mai sentito pronunciare questo nome. Cominciò a chiedersi dove fosse capitato e che razza di sistema fosse quello. Quando venne introdotto sul bus di sistema, la prima cosa che notò fu l'estrema lentezza con la quale ci si spostava, che non aveva nulla a che fare con i bus dei PC a 32-bit!! Il sistema era sempliciotto, lento e forse più...insicuro...ma il <font color="#0000ff">byte</font> sapeva benissimo che non poteva farci nulla. Si adeguò ai ritmi di lavoro e si diresse dove l'OS - il fantomatico Simbyan - gli aveva comunicato, una sorta di repository che veniva comunemente chiamato "Messaggi". Si aspettava l'indirizzo di una cella di memoria, o al massimo su hard disk, ma al <font color="#0000ff">byte</font> venne assegnata come destinazione una locazione che in realtà risiedeva su una memoria MMC. Affranto ed un pochino preoccupato, il <font color="#0000ff">byte</font> si mise in fila sul bus insieme a tanti altri. In quel breve viaggio sentì parlare di WAP, GPRS, SIM, browser antiquati, rubrica, software sempliciotti per l'imaging: tutti concetti a lui estranei e che fece finta di ignorare. </font></p> <p><font color="#808080">Quando raggiunse il repository, il <font color="#0000ff">byte</font> si aggregò con alcuni altri per formare uno SMS. Gli altri bytes gli dissero che avrebbero dovuto sentir passare anche uno stream audio, per notificare l'evento all'esterno. Il <font color="#0000ff">byte</font>, abituato a Sound Blaster Live! o Audigy di una certa potenza, pensò che in un sistema così piccolo uno stream audio avrebbe rimbombato dappertutto, e si preparò tappandosi le orecchie. La sua delusione fu fortissima quando sentì una semplice melodia polifonica di pochi secondi risuonare lì accanto.</font></p> <p>Dopo una lunga camminata, lo <font color="#ff0000">sviluppatore</font> era tornato alla piazzetta in centro del paese. Si sedette su una panchina ed appoggiò la schiena contro il muro dietro di sè. Il bar era un po' più affollato adesso: 3 persone erano al bancone a bere il loro caffè. Un quarto era seduto su una sedia e sembrava un pesce fuor d'acqua, perchè era ben vestito e stava cambiando le batterie alla sua macchina digitale. Non è fuori posto: se lo è lui, lo sono anche io - disse tra sè e sè lo <font color="#ff0000">sviluppatore</font>.<br>In quel momento, sentì il jingle dell'SMS arrivare dal suo cellulare. Si spaventò al suono, più forte di quello che pensava. Prese il Nokia N70 dalla tasca e vide la scritta "<strong><font color="#ff8000">Hai 1 nuovo messaggio</font></strong>" sul display. Cliccò per leggerlo. Il testo diceva: </p> <p>"<strong><font color="#008000">Contratto accettato. Sei assunto, complimenti.</font></strong>" <p>Urlò dalla gioia, saltando in piedi dalla panchina ed alzando le mani al cielo. Nel bar tutti si girarono. Si aprirono le imposte di una finestra al primo piano e si affacciò una vecchietta che, impaurita, guardò di sotto quella persona tanto strana che urlava e schiamazzava come un matto. Lo <font color="#ff0000">sviluppatore</font> non li notò neppure: corse via felice come non mai. <p>. . . . . . . . . . . . . . . <p>Lo <font color="#ff0000">sviluppatore</font> si scegliò di soprassalto nel suo letto, nel centro caotico di una grande città del Nord. Era agitato, il cuore correva all'impazzata. Un incubo? Si girò dalla parte del comodino, il display del cellulare era illuminato e diceva "<strong><font color="#ff8000">Hai 1 nuovo messaggio</font></strong>". Cliccò per leggerlo. Il testo diceva: <p>"<strong><font color="#008000">Contratto rifiutato. Mi spiace.</font></strong>"</p><img src="http://blogs.ugidotnet.org/idamiani/aggbug/74089.aspx" width="1" height="1" /> Igor Damiani http://blogs.ugidotnet.org/idamiani/archive/2007/03/28/74089.aspx Wed, 28 Mar 2007 13:46:00 GMT http://blogs.ugidotnet.org/idamiani/archive/2007/03/28/74089.aspx#feedback http://blogs.ugidotnet.org/idamiani/comments/commentRss/74089.aspx http://blogs.ugidotnet.org/idamiani/services/trackbacks/74089.aspx [Storia] Il byte ed il suo Mezzogiorno di Fuoco http://blogs.ugidotnet.org/idamiani/archive/2007/02/14/70764.aspx <p>A quell'ora del giorno, il bus era silenzioso. Fino a qualche minuto fa, la CPU era stata piuttosto impegnata, dopo l'attivazione del processo VirtualDub.exe che aveva dovuto comprimere in DivX uno stream video di quasi 10 minuti, corrispondenti a qualcosa come 13.500 frames. L'OS aveva capito fin da subito che si trattava di un ennesimo <strong>Video OT del Venerdì</strong>, che il suo utente produceva, puntuale, ogni settimana: senza dirgli nulla, aveva aumentato di qualche punto la qualità del codec DivX, in modo tale da produrre un video migliore. Lo stream su file era stato leggermente più grande, ovviamente, ma il suo utente era rimasto anche più soddisfatto. L'OS, alla fine, era contento del suo lavoro. L'occupazione della CPU adesso era stabile intorno al 3%. </p> <p>Il <font color="#0000ff">byte</font> se ne stava rintanato in una piccola area di memoria, delimitata in un offset di soli 0xA bytes. Aveva una paura fottuta, e non aveva nessuna intenzione di uscire da lì. Considerava quella zona un rifugio sicuro. Sebbene le altre celle nell'offset fossero già tutte impegnate da altri bytes come lui, poteva comunque spostarsi da un address all'altro con una semplice operazione di swap. Quando si trovava in una delle due celle ai margini dell'offset (0x0 oppure 0xA, ovviamente), poteva dare una fugace occhiata a quello che stava al di fuori del range.<br>E quello che vedeva, pensò deglutendo nervosamente, lo preoccupava molto. <p>Windows Defender stava in paziente attesa, come un leone a caccia. Niente e nessuno l'avrebbe smosso da lì. Era implacabile, freddo e minuzioso, perchè così era stato concepito, fin dagli stadi iniziali di sviluppo. Windows Defender è il difensore ufficiale del nuovo OS Windows Vista: niente e nessuno avrebbe potuto fare qualcosa anche solo di lontanamente sospetto, senza che Windows Defender lo sapesse.<br>Monitorava sempre la lettura e la scrittura della memoria RAM.<br>Sorvegliava processi e threads.<br>Sorvegliava programmi in esecuzione e l'accesso a risorse protette.<br>Ma soprattutto, alla fin fine, sorvegliava bytes, di ogni tipo. <p>Per questo il <font color="#0000ff">byte</font> aveva paura. Gli altri che erano lì con lui cercavano di consolarlo, di essergli di conforto, ma sapevano benissimo che non avrebbero potuto fare nulla per lui. Sebbene fossero fisicamente vicini, gli 0xA bytes appartenevano a processi completamente diversi: uno rappresentava il colore Rosso del logo di Windows Vista sul pulsante Start, un altro contribuiva a mantenere in memoria l'handler del click del Button Undo di Microsoft Word 2007, un altro ancora stava terminando l'esecuzione dell'installer di Winzip. Quello che si divertiva di più era sicuramente il byte all'<em>address</em> 0x8 del range, perchè conteneva i punti-ferita di un PG di Neverwinter Nights 2: era basso, ed il <font color="#0000ff">byte</font> 0x8 sperava che qualcuno, prima o poi, bevesse una pozione di guarigione per rimettersi in sesto. Windows Defender&nbsp;marcava stretto&nbsp;tutti questi bytes, e qualche altro miliardo ancora, ma quello che lo preoccupava di più era il <font color="#0000ff">byte</font> 0x0, quello che stava ai margini, che lo guardava cercando di non farsi vedere. <p>Windows Defender aveva emanato un ordine di cattura per il <font color="#0000ff">byte</font>, dichiarando allo stesso tempo quella cella di memoria untrusted, ma il fatto che il <font color="#0000ff">byte</font> continuasse a spostarsi ad ogni colpo di clock lo costringeva a stare sempre all'allerta. Nessun problema - disse fra sè e sè - sono nato per esserlo. Non aveva alcuna fretta, ed inoltre il <font color="#0000ff">byte</font> non è che poteva fare molto: se fosse uscito da quell'offset, sarebbe stato catturato. Se fosse andato in esecuzione, sarebbe stato inevitabilmente bloccato. Se fosse intervenuto in qualche registry di sistema, sarebbe stato reso inoffensivo comunque. Windows Defender aspettava quindi, con pazienza infinita, di poter colpire con successo. <p>"<em><font color="#808080">Costituisciti!</font></em>" - disse un <font color="#0000ff">byte</font>.<br>"<font color="#008080">Arrenditi!</font>" - esclamò un altro.<br>"<font color="#ff8000">Sei un codardo!</font>" - accusò byte 0xB al <font color="#0000ff">byte</font> ricercato.<br>"Ma io non ho fatto nulla di male!" - cercò di difendersi lui, gridando agli altri e cercando di sovrastare le loro voci. <p>"<font color="#800080"><em>Non ancora, ma lo farai. Per questo sono qui fuori che ti aspetto. Ti conviene uscire, perchè così facendo stai mettendo a rischio la nostra incolumità, e stai rallentando il sistema. Non posso permettertelo. Vieni fuori, arrenditi. Non posso essere magnanimo con me, non sono stato programmato per questo. Devo solo prendere il provvedimento più adeguato per te: sarò rapido, e forse non sentirai dolore.</em></font>"<br>Il <font color="#0000ff">byte</font> trasalì violentemente a quelle parole. Era convinto di non essere stato ancora scoperto, ma a quanto pareva non era così. Era proprio fottuto davvero, adesso. Quello che provava non era più semplice paura, ma terrore vero e proprio. Gli tremavano i bit, che shiftavano continuamente a sinistra e a destra, moltiplicando e dividendo il suo valore per due senza alcuno scopo. Capì che per lui era finita: nel migliore dei casi, sarebbe stato estradato, nel peggiore deallocato e tutto sarebbe finito lì. <p>Il <font color="#0000ff">byte</font> uscì fuori e constatò la presenza di Windows Defender a qualche passo da lui.<br>Il bus a 64 bit era silenzioso, ed un freddo vento virtuale spazzava l'area di memoria raggelando tutto.<br>Gli altri bytes guardavano atterriti la scena, ciascuno dalla propria cella contigua. <p>Windows Defender ed il <font color="#0000ff">byte</font> si fronteggiarono guardandosi negli occhi, come strani pistoleri di un mondo virtuale.<br>Quando il clock di sistema segnò esattamente le ore 12:00:00 GMT, scattò il loro Mezzogiorno di Fuoco.<br><strong><font color="#ff0000">BANG!!!</font></strong><br>Si udirono i colpi di due pistole venute fuori da chissà dove.<br>Il <font color="#0000ff">byte</font> cadde riverso sul bus, ma non fece in tempo a morire davvero: Windows Defender lo stava già portando via con sè.</p><img src="http://blogs.ugidotnet.org/idamiani/aggbug/70764.aspx" width="1" height="1" /> Igor Damiani http://blogs.ugidotnet.org/idamiani/archive/2007/02/14/70764.aspx Wed, 14 Feb 2007 14:15:00 GMT http://blogs.ugidotnet.org/idamiani/archive/2007/02/14/70764.aspx#feedback 1 http://blogs.ugidotnet.org/idamiani/comments/commentRss/70764.aspx http://blogs.ugidotnet.org/idamiani/services/trackbacks/70764.aspx La Legge di Moore un giorno fallir&agrave; http://blogs.ugidotnet.org/idamiani/archive/2007/01/29/69062.aspx <P></P> <P>Sebbene avesse poco pi&#249; di 40 anni, lo scienziato si sentiva stanco. E vecchio, soprattutto. Era a casa&nbsp;sua, sdraiato sul suo divano preferito, in salotto, davanti al camino le cui ceneri emanavano un bagliore rossastro che lo rassicurava. Ma lui si sentiva tutto fuorch&#232; rassicurato. L'orologio segnava le 3 del mattino, e fra poche ore sarebbe dovuto andare in ufficio, e lo aspettava una giornata pesante. <P>Lo scienziato sorseggiava lentamente un bicchiere di amaro dei trulli, che gli bruciava in gola e gli lasciava in testa un torpore indefinito. Si sentiva stanco davvero, e non riusciva a capire se fosse l'ora tarda, se fosse il liquore, o qualcos'altro ancora. La grossa televisione era l&#236; davanti a lui, con lo schermo spento, e riusciva quasi a specchiarsi, sebbene l'immagine fosse leggermente distorta a causa della lieve curvatura del display. La verit&#224;, concluse lo scienziato dopo pi&#249; di mezz'ora di pensieri confusi, &#232; che era maledettamente nei guai. Il progetto a cui stava lavorando da anni lo stava portando ad un punto morto, e questo lo rendeva ansioso. In cuor suo, sapeva di aver lavorato bene, ma d'altro canto sapeva benissimo che la tecnologia progredisce solo per i risultati ottenuti. Nel suo caso, tali risultati erano insufficienti, e ne avrebbe pagato le conseguenze. Appoggi&#242; il piccolo bicchiere sul tavolino di legno, sospir&#242; e si mise le mani nei (pochi) capelli che gli rimanevano. <P>Lo scienziato lavorava per la pi&#249; grossa azienda produttrice di microprocessori del mondo, nata vent'anni fa dopo il fallimento della Intel Inc., che per decine e decine di anni aveva avuto la leadership del settore. Ricord&#242; con nostalgia il giorno in cui venne convocato dal Consiglio Direttivo per l'assegnamento del progetto che lo aveva fatto arrivare fin l&#236;: progettare e disegnare una nuova serie di CPU, capaci di sfondare il tetto dei 100GHz come frequenza di clock. All'inizio sembrava una cosa impossibile, ma era stata soprattutto la concezione delle nuove RAM a segnare il punto di svolta. Le <STRONG>INTRAM</STRONG> (<EM>INTelligent Random Access Memory</EM>) erano celle di memoria che non fungevano solo da storage per i bytes, ma erano capaci di capire con quali celle avrebbero dovuto cooperare. Ogni address, quindi, poteva potenzialmente diventare un piccolo core, un nucleo di calcolo di lieve potenza. Il vecchio detto "<FONT color=#ff0000>L'unione fa la forza!</FONT>", insomma, valeva anche all'interno del PC. O quasi. Gli algoritmi euristici erano piuttosto inefficaci, e le prestazioni non erano 'sto granch&#232;. Lo scienziato sentiva che quella era la strada giusta, ma per la prima volta, quella notte, aveva paura di essersi sbagliato. Milioni e milioni di euro investiti in ricerca e tecnologia avanzata, tutti buttati al vento. <P>Lo scienziato ripens&#242; al suo famoso precursore, vissuto molto tempo fa rispetto a lui. Chiss&#224; cosa gli avrebbe detto se fosse stato l&#236; con lui in quel momento. Chiss&#224; se lo avrebbe spronato a fare di pi&#249; o se magari sarebbe stato triste almeno quanto lui. L'uomo a cui stava pensando era Gordon Moore, colui che esattamente un secolo fa, aveva intuito che le prestazioni dei processori sarebbero raddoppiati ogni 2 anni. <A href="http://it.wikipedia.org/wiki/Legge_di_Moore" target=_blank>La famosa Legge di Moore</A>, insomma. Lo scienziato si alz&#242; debolmente dal divano, prese il suo communicator e avvi&#242; una trasmissione <EM>https2</EM> fino al suo sistema in ufficio. <P>Correva l'anno <STRONG>2065</STRONG>, e la Legge di Moore stava per essere definitivamente invalidata.</P><img src="http://blogs.ugidotnet.org/idamiani/aggbug/69062.aspx" width="1" height="1" /> Igor Damiani http://blogs.ugidotnet.org/idamiani/archive/2007/01/29/69062.aspx Mon, 29 Jan 2007 18:16:00 GMT http://blogs.ugidotnet.org/idamiani/archive/2007/01/29/69062.aspx#feedback 1 http://blogs.ugidotnet.org/idamiani/comments/commentRss/69062.aspx http://blogs.ugidotnet.org/idamiani/services/trackbacks/69062.aspx Il byte alla ricerca del significato del Natale http://blogs.ugidotnet.org/idamiani/archive/2006/12/20/60851.aspx <p></p> <p>Il <font color="#0000ff">byte</font> non aveva mai capito cosa fosse il natale. Da quando il sistema era stato avviato, (2 anni, 5 mesi, 11 giorni, 22 ore, 00 minuti, 00 secondi fa), il <font color="#0000ff">byte</font> aveva sentito parlare del natale, ma non ne conosceva il significato reale. Se lo immaginava scritto con la 'n' minuscola. Non che i byte sappiano scrivere, sia chiaro, solo che nella sua rappresentazione interna il primo carattere era espresso come 0x6E, il codice ASCII della 'n' minuscola, appunto. Gli avevano spiegato che il natale era un evento, una festa che ricorreva ogni anno, come fosse una sorta di task schedulato. Aveva compreso il senso del natale solo in parte, però. Non sapeva cosa fosse una festa. Mentre balzava di thread in thread, il <font color="#0000ff">byte</font> incontrò altre strutture logiche più o meno complesse, altri bytes simili a lui, array, struct, object ed a tutti questi rivolse la stessa domanda. Cos'è il natale? <p>Dopo un numero grandissimo di cicli di clock, il <font color="#0000ff">byte</font> isolò le features principali che ogni buon natale dovrebbe avere. Innanzitutto ci vuole <strong><font color="#ff0000">una famiglia</font></strong>, perchè il natale si passa sempre con i parenti più cari. Poi, gli dissero, devi preparare un <strong><font color="#ff0000">Albero di Natale</font></strong> che dà colore all'ambiente e riscalda il cuore dei bambini. Poi, <strong><font color="#ff0000">i regali</font></strong> per le persone più vicine, <strong><font color="#ff0000">un bel cenone</font></strong> da trascorrere tutti assieme. I più saggi gli dissero che il natale era soprattutto <strong><font color="#ff0000">una festa religiosa</font></strong>, ma il <font color="#0000ff">byte</font> non sapeva nulla di religione, e preferì concentrarsi sugli altri punti per capire il natale e cercare di passarlo degnamente. <p><strong><font color="#ff0000">Organizzò quindi un grandioso Albero di Natale</font></strong> che si estendeva dall'address <strong>0x1AB94D8</strong> all'address <strong>0x17F54D6</strong>. Si era fatto aiutare da altri bytes provenienti dalla graphics card, e li aveva disposti in modo che formassero davvero una forma ad abete, il tutto in high-res. I colori RGB erano perfetti, donando al suo albero sfumature a volte rosse, a volte oro, in un alternanza che ipnotizzava chiunque lo guardasse per qualche ciclo di clock. Il tutto era abbellito con modelli 3D generati dal chipset grafico, che riempivano gli spazi e che venivano illuminati dalle luci dinamiche emesse dai bytes RGB. Ed i rami si allungavano e si intrecciavano in ogni direzione. Il <font color="#0000ff">byte</font> poteva tranquillamente shiftare verso sinistra e verso destra, da un ramo all'altro, in basso ed in alto, godendo ogni volta della vista che gli si materializzava davanti agli occhi. <p>Per qualche ragione, sentiva che l'Albero non era tutta l'anima del natale. Riunì intorno a sè la sua famiglia, una moltitudine di bytes con i quali aveva cooperato in precedenza, più o meno frequentemente. Con alcuni andava d'accordo, con altri un po' meno, ma forse non era importante, l'importante era riunirsi e passare del tempo assieme. <p><strong><font color="#ff0000">Si occupò anche dei regali:</font></strong> <strong>regalò un carattere \0</strong> alle stringhe C/C++ per indicare dove terminavano, <strong>l'interfaccia IDisposable</strong> alle classi che non l'implementavano e un overload in più ad alcuni metodi suoi amici. Il regalo più costoso lo fece alla classe che lo aveva ospitato più di una volta: <strong>gli regalò un layer intero di persistenza</strong>, basato su NHibernate, grazie al quale avrebbe potuto salvarsi su database senza troppe complicazioni. <p><strong><font color="#ff0000">Ed infine il natale arrivò</font></strong>, con il <strong><font color="#0000ff">byte</font></strong> soddisfatto dei suoi preparativi. Aveva la sua famiglia attorno a sè, con bytes ed array di bytes, classi ed interfacce, delegate e componenti di terze parti. Erano tutti riuniti sotto il grande Albero di Natale che non aveva smesso un solo ciclo di clock di splendere, con i regali che aspettavano solo di essere aperti con una banale chiamata al metodo Open(). Ma il <strong><font color="#0000ff">byte</font></strong> sentiva qualcosa di strano: che senso ha passare del tempo con bytes che si vedono ogni tanto, magari proprio solo a natale? Che senso ha avuto tutta questa rincorsa per i regali? Magari quelle classi non avranno mai bisogno di fare la dispose di unmanaged resources, che senso ha avuto donare loro l'interfaccia IDisposable? Sentiva di aver fatto la cosa giusta, ma qualcosa non gli quadrava. <p>Solo l'Albero di Natale gli regalava un po' di serenità. Salutò un attimo i suoi parenti che stavano facendo baldoria, uscì dalla cella di memoria nella quale si trovava e si arrampicò, lentamente, sui rami dell'Albero. I bytes RGB erano sempre lì, un istante erano rosso fuoco, il ciclo di clock successivo spargevano raggi di luce color oro tutto intorno. Il <strong><font color="#0000ff">byte</font></strong> saliva pian piano verso gli address più alti dell'Albero e cominciò a sentire il silenzio. Guardò in giù e si accorse di essere salito molto - vedeva la tavola imbandita, vedeva la sua famiglia, sentiva le voci ed il chiacchericcio - ma lui era lontano. Diede un'occhiata intorno, beandosi della tranquillità e della pace che aveva trovato in quel post. I filoni luccicanti catturavano la fioca luce dei bytes e la specchiavano ovunque, probabilmente con qualche algoritmo applicato dalle DirectX. Vide i balocchi che lui stesso aveva contribuito a renderizzare qualche giorno prima: prima un piccolo pianoforte, elegante ed austero. Poi una sfera blu perfetta con strisce gialle. Rimase affascinato quando scorse, aguzzando bene la vista per arrivare ad ramo lontano, un angioletto in TIF che lo guardava sorridendo. Ebbe un sussulto. <p>Dopo un migliaio di cicli di clock, il <strong><font color="#0000ff">byte</font></strong> scese dall'Albero di Natale e si riunì alla sua famiglia. Raggiunse il suo posto a tavola, e sorrise a tutti quelli che lo guardavano. "<em><font color="#008000">Buon Natale, vi voglio bene!</font></em>", furono le uniche parole che uscirono dalla sua bocca. E passò il resto della nottata ridendo e scherzando, mangiando tutto quello che c'era da mangiare, divertendosi ed in pace con se stesso. <p><strong><font color="#ff0000">In quel momento, capì il vero significato del Natale.</font></strong> Da quel momento, il byte scrisse Natale con la 'N' maiuscola, perchè così meritava. Natale è certamente una festa di famiglia, regali, tavolate, cenone, rincorse frenetiche, file alla cassa. Ma è soprattutto una festa che deve <strong><font color="#ff0000">trasmettere serenità e sorriso</font></strong>, ed in cui bisogna soprattutto <strong><font color="#ff0000">essere in pace con se stessi</font></strong>. Queste non sono cose schedulabili, non è possibile sviluppare un worksflow con Windows Workflow Foundation, non esiste alcun algoritmo che possa esprimere questi concetti. E non possiamo nemmeno trasmetterlo agli altri via TCP/IP.<br>Per fortuna. <p>Sono cose che tutti noi - e persino un <font color="#0000ff"><strong>byte</strong></font> - deve sentirsi dentro davvero.</p><img src="http://blogs.ugidotnet.org/idamiani/aggbug/60851.aspx" width="1" height="1" /> Igor Damiani http://blogs.ugidotnet.org/idamiani/archive/2006/12/20/60851.aspx Wed, 20 Dec 2006 13:33:00 GMT http://blogs.ugidotnet.org/idamiani/archive/2006/12/20/60851.aspx#feedback http://blogs.ugidotnet.org/idamiani/comments/commentRss/60851.aspx http://blogs.ugidotnet.org/idamiani/services/trackbacks/60851.aspx Evoluzione genetica del byte http://blogs.ugidotnet.org/idamiani/archive/2006/12/05/58568.aspx <p>All'inizio del tempo, nacque il <font color="#0000ff">byte</font>.&nbsp;Il <font color="#0000ff">byte</font> era solo, e le sue capacità di calcolo erano&nbsp;estremamente limitate: tutto ciò che poteva fare era spostare o sommare i suoi 8 bit interni, seguendo le logiche impartite. Non aveva altri bytes con i quali accoppiarsi, con i quali metter su array, o strutture ancora più complesse come gli oggetti. Poteva solo contare da 0x00 a 0xFF in qualche frazione di secondo, ma non aveva alcuno scopo, e perciò smise presto di farlo.</p> <p>Ma poi - con il passare del tempo -&nbsp;nacquero altri bytes accanto a lui. <font color="#0000ff">byte</font>[0], il progenitore, cominciò a sentire un po' più di potenza. Unendosi ai pochi altri che vivevano accanto a lui, poteva andare un po' più in là, spingersi verso confini un po' più lontani. E non per il solo fatto che&nbsp;2 bytes possono contare un po' più a lungo. E i bytes presero a moltiplicarsi e a vivere cooperando fra loro. Distese di memoria ROM e RAM di ogni tipo fornivano loro&nbsp;l'<em>environment</em> ideale nel quale vivere,&nbsp;<em>address</em> di memoria nei quali persistersi e veloci <em>bus</em> sui quali spostarsi. E i bytes - che prima si riunivano in banchi da 16Kb - si espansero sempre più,&nbsp;formando community virtuali&nbsp;di blocchi da&nbsp;32Kb, poi da 64Kb, fino a raggiungere i giorni nostri, dove banchi da 1Gb sono all'ordine del giorno.</p> <p>Nacque infine un <font color="#0000ff">byte</font> che faceva cose mirabolanti con i bytes adiacenti. La sua&nbsp;abilità nell'unirsi&nbsp;con altri migliaia di bytes era diventata - con il passare del tempo - sempre più veloce ed efficiente. La potenza del <font color="#0000ff">byte</font> - lo capì ben presto - sta nella sua capacità di&nbsp;interfacciarsi con&nbsp;gli altri, così da poter elaborare dati ed informazioni in modo sempre più produttivo ed utile,&nbsp;costruendo&nbsp;domini applicativi,&nbsp;intere applicazioni e complessi sistemi in grado di scalare velocemente tutti i layers dell'hardware fino a raggiungere la UI ed impattare direttamente con i processi fisiologici di decodifica&nbsp;dell'utente.</p> <p>E più macina dati, più la sua coscienza cresce in un' escalation senza fine,<br>tendendo all'infinito verso&nbsp;il punto di fusione tra tecnologia e magia.</p><img src="http://blogs.ugidotnet.org/idamiani/aggbug/58568.aspx" width="1" height="1" /> Igor Damiani http://blogs.ugidotnet.org/idamiani/archive/2006/12/05/58568.aspx Tue, 05 Dec 2006 13:29:00 GMT http://blogs.ugidotnet.org/idamiani/archive/2006/12/05/58568.aspx#feedback http://blogs.ugidotnet.org/idamiani/comments/commentRss/58568.aspx http://blogs.ugidotnet.org/idamiani/services/trackbacks/58568.aspx Da una dorsale Internet al blocco note in multipli di due http://blogs.ugidotnet.org/idamiani/archive/2006/11/07/54093.aspx Questo è il mio ultimo racconto sui bytes pubblicato qua su UGIdotNET. Il mio byte ha trovato casa, finalmente, per la gioia di Lorenzo e di qualcun'altro. Ve lo farò sapere, comunque, così chi è interessato può continuare a leggermi. Questo breve racconto prende il via da una dorsale Internet e raggiunge un sistema desktop, e tutti i numeri citati sono multipli di due. Mi sono divertito, spero faccia rilassare anche voi. :-) Cliccare per leggere!<img src="http://blogs.ugidotnet.org/idamiani/aggbug/54093.aspx" width="1" height="1" /> Igor Damiani http://blogs.ugidotnet.org/idamiani/archive/2006/11/07/54093.aspx Tue, 07 Nov 2006 16:08:00 GMT http://blogs.ugidotnet.org/idamiani/archive/2006/11/07/54093.aspx#feedback 3 http://blogs.ugidotnet.org/idamiani/comments/commentRss/54093.aspx http://blogs.ugidotnet.org/idamiani/services/trackbacks/54093.aspx Una difficile partita di tennis http://blogs.ugidotnet.org/idamiani/archive/2006/10/16/51743.aspx <p>Lo stadio era gremito di gente, che stava in silenzio, rapito dalle performance delle due giocatrici. Il sole era caldo, l'arrivo dell'estate si stava facendo sentire, e parecchi bambini tra il pubblico sorseggiavano una bibita fresca per alleviare la calura. Questo però non impediva loro di disturbare i genitori, ogni tanto.</p> <p>Sul campo, Anna scattò improvvisamente a sinistra, seguendo d'istinto la traettoria della pallina da tennis che si stava spostando verso di lei. Era stanca, l'incontro durava da quasi un'ora ormai, ma non aveva nessuna intenzione di mollare. I primi 2 set si era conclusi a suo favore, ma sapeva perfettamente&nbsp;che la sua avversaria non glieva avrebbe data vinta facilmente. Doveva tenere duro.&nbsp;Distese il braccio e si esibì in un rovescio, che rispedì la palla dall'altra parte del campo. Non riuscì a trattenere un urlo per lo sforzo.&nbsp;Sperava di aver dato alla palla un'inclinazione sufficiente ad ingannare l'altra giocatrice: dopo aver colpito la palla, seguì con lo sguardo il suo colpo, e sorrise debolmente quando la vide viaggiare oltre la rete. Forse - si disse - è dentro, forse.....</p> <p>"<font color="#0000ff">OUT!!!!</font>" - la voce dell'arbitro tuonò imperiosa con il suo dolby-sorround, facendo sussultare i presenti e scatenando un rispettoso applauso.</p> <p>Forse. Anna aveva avuto l'impressione che il suo colpo non fosse perfetto, che finisse fuori, ed in effetti così era stato. Ma ci aveva sperato. Non potè che maledirsi e, stringendo i pugni, ricercò in sè stessa la concentrazione necessaria per continuare il match. Ma la voce dell'arbitro era quasi un incubo, nella sua testa. Per la prima volta, Anna cominciò a dubitare, e ad aver paura di fallire. Camminando lentamente, si portò a fondo campo, preparandosi a ricevere la battuta. Guardò il tabellone digitale che riportava il punteggio: 2 set a zero in suo favore. Un istante dopo Anna si sentì un po' più coraggiosa.</p> <p><em><font color="#808080">"</font><font color="#ff0000">Ah, sei proprio un incapace!</font><font color="#808080">" - disse il ragazzo a suo fratello minore seduto davanti al PC. "</font><font color="#ff0000">Adesso ti faccio vedere io...un attimo prima di colpire la palla, devi premere T sulla tastiera, e poi usi i tasti direzione per direzionare il colpo...altrimenti non fai un tiro potente. Guarda...</font><font color="#808080">"</font></em></p> <p>Alzò la testa, e lasciò che la leggera brezza digitale le accarezzasse i capelli biondi. Sapeva che quel vento era per certi versi finto,&nbsp;ma non potè resistere. Anche il calore del sole era solo una simulazione, ma Anna&nbsp;provò comunque un certo sollievo quando sentì la luce inondarle il volto. I riflessi del sole sul campo da tennis arrivavano&nbsp;veloci con un algoritmo Shader 2.0 implementato nelle DirectX 10.0, e causavano un riverbero su tutto l'ambiente circostante. Gli applausi del pubblico, i rimbalzi della palla e l'impatto con la racchetta, la voce dell'arbitro: tutto veniva realizzato attraverso il protocollo EAX con cui il videogame stava girando.</p> <p>Stringendo i pugni sul manico della racchetta, Anna provocò l'applicazione di un lieve effetto di anti-aliasing 4x, per miscelare correttamente i colori RGB della sua mano e del colore rosso del materiale sintetico della racchetta. Nel prossimo set si sarebbe giocata tutta la sua vita. Sapeva perfettamente che la prossima volta lei sarebbe stata diversa. Oh certo, l'implementazione del suo personaggio sarebbe stata la stessa, ma i bytes che l'avrebbero formata sarebbero stati di sicuro in locazioni diverse della memoria. Voleva vincere quella partita, ma voleva essere lei, non la prossima istanziazione di se stessa. I valori di destrezza, forza ed intelligenza erano più che adeguati per quell'incontro, ma gran parte del lavoro spettava al Creatore che la controllava. Se questi era in gamba, lei avrebbe vinto.</p> <p>Anna strinse gli occhi per filtrare la luce, vide la propria avversaria cominciare il servizio, e si preparò a reagire di conseguenza.</p> <p><em><font color="#808080">Il ragazzo muoveva le dita agilmente sulla tastiera, spostando da una parte all'altra la sua tennista. Roveschio, dritto, sotto rete. Il giocatore non si faceva cogliere impreparato, e gestiva il gioco senza grossi problemi. Cercava il movimento giusto per infilare l'avversario, ma la IA del videogame era piuttosto elevata, e non era affatto semplice. Man mano che passava il tempo, la barra dell'energia della sua tennista&nbsp;diminuiva, rallentandone i riflessi: doveva fare qualcosa. Agì nel momento giusto: l'avversario si sbilanciò, era tutto nella parte destra del campo e non sarebbe riuscito a ribattere alla diagonale che aveva in testa. Premendo il tasto LEFT sul tastierino numerico, premette SPACE ed il colpo partì veloce e sicuro, disegnando una traettoria perfetta.</font></em></p> <p>Anna si muoveva velocemente da una parte all'altra del campo. Reagiva molto velocemente, rispondendo ad ogni colpo della sua avversaria. Tutto ad un tratto, da uno dei layer di servizio arrivò un oggetto che, seguendo il pattern Command, gli ordinò di eseguire un colpo come solo lei sapeva fare. Nonostante la fatica, Anna sorrise, eseguì su se stessa il metodo HitBall(), passando come parametro il Command. L'algoritmo di collisione tra palla e racchetta fece il resto: la palla viaggiò in direzione opposta, con una velocità fulminante. Questa volta non c'erano dubbi: dopo aver sorvolato la rete disegnata da Direct3C, la palla impattò qualche istante dopo sul terreno di terra battuta, sollevando un po' di polvere rossa semi-trasparente.</p> <p>L'arbitro convalidò il punto, e fu allora che lo stadio esplose in un lungo applauso.&nbsp;Sentì le proprie gambe farsi molli, e si lascò cadere in ginocchio, con le lacrime che sgorgavano copiose dagli occhi. Questa azione era solo un'animazione precalcolata, giusto per far divertire il Creatore un po' di più, ma ad Anna non importava nulla. Anna si sentì felice come mai lo era stata. Tutta la gente si alzò in piedi, esultando per la vittoria della loro beniamina che in questo momento stava sollevando al cielo il trofeo tanto agognato. La Coppa era nelle sue mani virtuali, la Coppa che sapeva di poter vincere era finalmente sua.</p> <p>La Coppa era renderizzata sulla memoria AGP, l'audio usciva dalle casse dopo aver subìto processi digitali complessi, il suo comportamente era in parte&nbsp;generato in real-time, in parte precalcolato per migliorare le prestazioni, lo stadio era solo un oggetto 3D matematico, il pubblico non era dettagliato, era solo una texture 2D solo per dar l'illusione della presenza, la racchetta che impugnava non esisteva neppure, così come la palla e la sua avversaria che - tra l'altro - non c'era più.</p> <p>Ma Anna non si era mai sentita così viva. Sperò che quella sensazione durò a lungo, perchè voleva godersela fino in fondo.<br>In realtà, tutto durò fino a quando il giocatore non premette ESC sulla tastiera per tornare al menù principale del videogame.</p><img src="http://blogs.ugidotnet.org/idamiani/aggbug/51743.aspx" width="1" height="1" /> Igor Damiani http://blogs.ugidotnet.org/idamiani/archive/2006/10/16/51743.aspx Mon, 16 Oct 2006 00:08:00 GMT http://blogs.ugidotnet.org/idamiani/archive/2006/10/16/51743.aspx#feedback http://blogs.ugidotnet.org/idamiani/comments/commentRss/51743.aspx http://blogs.ugidotnet.org/idamiani/services/trackbacks/51743.aspx Il byte ed il sogno del "coast-to-coast" http://blogs.ugidotnet.org/idamiani/archive/2006/09/20/48304.aspx <P><EM><FONT color=#ff0000>In un sistema con 1Gb di memoria RAM abbiamo 1.073.741.824 indirizzi di memoria diversi (da 0x00000000 a 0x40000000). Se considerassimo la distanza tra una cella e l'altra pari ad un&nbsp;nostro chilometro,&nbsp;questo range di indirizzi coprirebbe una lunghezza&nbsp;pari a 1.073.741.824 chilometri, equivalenti a ben 26.793 volte la lunghezza dell'equatore terrestre.</FONT></EM></P> <P>Il byte sognava di viaggiare. Era nato qualche&nbsp;centinaia di miliardi di cicli di clock fa in una cella di memoria ai margini del sistema, in una di quelle celle che&nbsp;non erano mai state utilizzate. Il byte sapeva di avere poche speranze di poter partecipare attivamente al lavoro dell'OS: probabilmente sarebbe servito solo se fosse stata caricata in RAM un'immagine digitale da 12Mpixel. Ma il sistema nel quale si trovava era un server Web Windows, e in ambienti come quello tutto doveva essere veloce e&nbsp;performante, allo scopo di&nbsp;seguire la pipeline di IIS nel modo pi&#249; efficiente possibile. Ma in&nbsp;un server Web non ci sono immagini Jpeg&nbsp;da aprire, solo stream di bytes in ingresso ed altrettanti bytes in uscita. Per questo motivo il byte era cosciente del fatto che, se non si fosse trasferito, sarebbe morto di noia.</P> <P>Il byte sognava di viaggiare. Ogni tanto sbirciava fuori dalla sua cella cos&#236; isolata, ma sentiva solo voci lontane provenienti da chiss&#224; quale lontana area di memoria, e le invidiava. Si immaginava di poter essere fuori e&nbsp;di correre insieme a tanti altri byte come lui. Gli risultava che lo spazio di indirizzamento disponibile fosse di ben&nbsp;0x40000000 celle di memorie: non riusciva a capire come conoscesse questa informazione. Dopo un po', era giunto alla conclusione che un byte certe cose lo sapeva d'istinto. Doveva per forza essere cos&#236;, dal momento che sin dalla sua istanziazione il byte non aveva mai incontrato nessun'altro.</P> <P>Per quello che ne sapeva, si poteva spostare da un&nbsp;indirizzo all'altro: l'importante era evitare le celle di memoria coinvolte da qualche processo. Ma doveva stare attento, perch&#232; se fosse entrato in una di queste celle, con buona probabilit&#224; avrebbe causato un qualche malfunzionamento del processo stesso. Se il software&nbsp;correlato fosse stato scritto in modo opportuno, avrebbe banalmente sollevato un'exception, che sarebbe stata gestita - o almeno cos&#236; sperava. Ma in altri casi la situazione poteva degenerare pericolosamente, provocando un crash che avrebbe risalito la chain-of-responsability dell'applicazione, fino ad arrivare&nbsp;a niente-poco-di-meno-che a kernel32.dll. A quel punto, sarebbe stata la catastrofe.</P> <P>Aveva paura di quello che sarebbe potuto accadere, ma era giunto alla conclusione che se ne sarebbe andato. Non importa dove,&nbsp; non gliene importava delle conseguenze. Sarebbe uscito dalla cella e avrebbe percorso tutti gli indirizzi che avrebbe incontrato, avrebbe parlato con chiunque. Voleva crescere, voleva in qualche modo migliorarsi, e rimanendo l&#236; dov'era non ci sarebbe mai riuscito.</P> <P>Viaggiare da 0x00000000 a 0x40000000, ecco quello che voleva fare.<BR>Quasi un coast-to-coast virtuale. Che sogno!<BR>Il byte tir&#242; fuori la testa dalla sua cella,&nbsp;ed&nbsp;un vento freddo gli soffi&#242; in faccia.</P><img src="http://blogs.ugidotnet.org/idamiani/aggbug/48304.aspx" width="1" height="1" /> Igor Damiani http://blogs.ugidotnet.org/idamiani/archive/2006/09/20/48304.aspx Wed, 20 Sep 2006 18:47:00 GMT http://blogs.ugidotnet.org/idamiani/archive/2006/09/20/48304.aspx#feedback http://blogs.ugidotnet.org/idamiani/comments/commentRss/48304.aspx http://blogs.ugidotnet.org/idamiani/services/trackbacks/48304.aspx