Technology Experience
.NET World

Aggiornamenti su VivendoByte Technorati Tags

Ogni tanto vi tedio parlandovi del plug-in per Windows Live Writer che mi sono scritto in WPF per poter “compilare” velocemente i tags con cui marcare i post che poi finiscono dritti dritti sul mio blog. Ricordo che questo plug-in fa parte di una piccola suite che ho pubblicato su CodePlex: i sorgenti sono pubblici e tutti voi potete utilizzarlo. Anzi, se mi trovate qualche baco, segnalatemelo!

Ve ne parlo perchè nel frattempo qualcosa è cambiato. Vediamo di spiegare cosa e perchè.

L’elenco di tags che il plug-in vi mostra arriva direttamente dal web-service esposto da Technorati.com. Questo web-service chiede in input l’url di un blog e restituisce una List<string>: fino alle precedenti versioni questa lista veniva bindata ad una ListBox di WPF per poter essere selezionate dall’utente.

Ho deciso di non utilizzare più stringhe, ma di creare una classe ad-hoc TechnoratiTag. Prima di potervi spiegare il perchè, occorre breve una premessa, relativa alle vecchie versioni del plug-in:

  1. se il PC su cui gira il plug-in risultava essere connesso alla Rete, allora l’elenco dei tags veniva preso da Technorati come spiegato prima
  2. se il PC su cui gira il plug-in NON risultava essere connesso alla Rete, l’elenco dei tags veniva preso da un file locale di cache, salvato in C:Documents and SettingsIgorDati applicazioniVivendoByte Technorati Tags.

Il web-service di Technorati restituisce i 100 tag più utilizzati: se per caso ne inserivate uno a mano – non compreso nell’elenco – ve lo perdavate alla grande: il tag veniva salvato effettivamente sulla cache locale, ma in realtà non veniva più proposto, proprio perchè la cache locale veniva ignorata se eravate connessi alla Rete.

Ho quindi pensato che la cosa migliore fosse quella di creare una List<TechnoratiTag>, che fosse l’unione dei tags presi da Technorati e presi dalla cache locale. La classe TechnoratiTag è così composta:

public class TechnoratiTag { private TagSource _source; private string _identifier; public TagSource Source { get { return _source; } set { _source = value; } } public string Identifier { get { return _identifier; } set { _identifier = value; } } }

La proprietà TagSource è un semplice enum che distingue i tags provenienti dalla Rete (TagSource.Internet) oppure dalla cache locale (TagSource.LocalDisk). L’implementazione del metodo LoadTags() del mio repository service è la seguente:

1 public List<TechnoratiTag> LoadTags() 2 { 3 List<TechnoratiTag> internetTags = null; 4 List<TechnoratiTag> localTags = null; 5 List<TechnoratiTag> tags = new List<TechnoratiTag>(); 6 7 if (TestInternetAvaiableService.TestInternetAvaiable()) 8 internetTags = this.LoadRemoteTags(); 9 10 localTags = this.LoadLocalTags(); 11 12 if (internetTags != null) 13 tags.AddRange(internetTags); 14 15 if (localTags != null) 16 foreach (TechnoratiTag t in localTags) 17 { 18 criteria = t.Identifier; 19 if (!tags.Exists(new Predicate<TechnoratiTag>(findTechnoratiTag))) 20 tags.Add(t); 21 } 22 23 tags.Sort(sortTechnoratiTag); 24 25 return tags; 26 }

Alle righe 7 ed 8 vengono caricati i tags dal web-service di Technorati. Alla riga 10 vengono caricati i tags dalla cache locale. Questi due elenchi vengono fusi in un unico List<Technorati> alle linee 15-21, escludendo con una opportuna logica i doppioni. Il tutto viene ordinato e restituito al chiamante.

Il risultato finale è che la ListBox di WPF non viene più bindata da un elenco di stringhe, ma ad un elenco di TechnoratiTag. Ecco uno screenshot:

Grazie ad un DataTemplateSelector viene applicato un template diverso a seconda del valore di ciascun TagSource: i tag che arrivano da Internet hanno un’iconcina con il globo, mentre quelli che arrivano dalla cache locale hanno un’iconcina del CD. In questo modo anche tag poco usati, che magari Technorati non vi segnalerebbe, compaiono magicamente nella lista!

Installazione

Oltre che su CodePlex, il download diretto dei binari è disponibile qui : Windows Live Writer Plugins Technorati Tags WPF. E’ sufficiente aprire il file zip e dezippare il tutto in C:ProgrammiWindows LiveWriterPlugins.

Technorati Tags:    

Send to Kindle
Community

Il giorno in cui C# sarà un po’ più a sinistra

E non intendo politicamente, è chiaro.

Alla mia taggata dell’altro giorno hanno ormai risposto a catena alcune persone, direttamente e non. Parlo di mio fratello, di Andrea, di Gianluca, di Lorenzo, di Vito, etc. etc.

Ho notato una cosa, e non ci vuole chissà che cervello per arrivarci: quasi tutti abbiamo dichiarato che il nostro primo linguaggio di programmazione è stato il Basic, nelle varie varianti più vecchie e più recenti.

Mi sto rendendo conto in queste settimane/mesi, che probabilmente in un futuro neanche tanto lontano potrei voler insegnare qualcosa di programmazione alla mia sorellina (ormai mica più tanto ina). E semmai ci sarà l’occasione, e semmai lo farò, credo proprio che le insegnerò qualcosa di Visual Basic .Net, oppure di C#.

E se magari fra una decina d’anni si ritroverà anche lei a partecipare ad una catena così, inserirà ancora una volta il Basic fra i primi linguaggi (alla fin fine VB.NET è comunque un dialetto di Basic). Oppure potrà indicare C# fra i primi linguaggi imparati ed utilizzati, e quindi questo potrebbe comparire un po’ più a sinistra nell’elenco.

E magari la mia sorellina parlerà di me come adesso io parlo di mio padre…”un giorno mio fratello Igor lasciò il suo vetusto Intel QuadCore lì abbandonato in mansarda, allora ho cominciato a giocarci io, ci ho installato Visual Studio 2010 e ho buttato giù due linee di codice” e bla bla bla.

Technorati Tags:   

Send to Kindle
My daily work

How I Got Started in Software Development

 

Dalle parti di Code Climber, il buon Simone mi tagga con le catene che ogni tanto fanno il giro della blogosfera. Questa volta il discorso è – come dice il titolo – come (e quando) sono entrato nel mondo dello sviluppo del software. Le domande sono ben dieci, quindi cominciamo subito.

 

 

How old were you when you started programming?
A quale età hai cominciato a programmare?

Ho cominciato da bambino. Mio padre mi fece partecipare ad un concorso di programmazione a metà degli anni ‘80, quindi avevo circa 9-10 anni. Era un programma stupidello, serviva a calcolare l’area delle figure piane elementari (rettangoli, quadrati, triangoli, etc).

How did you get started in programming?
Come hai cominciato a programmare?

E’ cominciato tutto quando mio padre decide di acquistare per sè un home-computer. Parlo dei primi anni ‘80. Mio padre giocava principalmente a scacchi; poi, col passare del tempo, quel computer l’ho “ereditato” io: il resto – come si dice – è storia. Quel computer per me non era solo un modo per passare il tempo videogiocando con quello che c’era, ma era anche un modo per fare una cosa intelligente.

What was your first language?
Qual’è stato il tuo primo linguaggio di programmazione?
All’epoca il mio home-computer era un Texas Instruments TI-99/4A: l’unico linguaggio disponibile era un Extended BASIC molto simile a quello disponibile sui vari computer più blasonati come C64, Spectrum e via dicendo.

What was the first real program you wrote?
Qual’è stato il primo programma vero che hai scritto?

Intendo come “real program” il primo software per il quale sono stato pagato. Ero in 3° superiore e frequentavo l’ITIS a Lodi. Scrissi un software in ANSI C per fare conversioni fra unità di misura. Quel software venne pubblicato su un floppy-disk di un numero di PC Disk – rivista adesso scomparsa. Lo scrissi con il 386 che avevo a casa, e che impiegava un sacco di tempo per compilarlo. Mi ero anche scritto un file include pieno di funzioni grafiche.

What languages have you used since you started programming?
Quali linguaggi hai usato da quando hai cominciato a programmare?

In ordine di come mi vengono in mente: dBase III, ANSI C, Java, VBA, Visual Basic (dal 4.0 in poi), Visual Basic .NET, C#, ActionScript, HTML, Javascript, ASP Classic, PHP, Lingo.

What was your first professional programming gig?
Quando è stato il tuo primo vero lavoro da programmatore?

Intorno al 1995 sono stato assunto da una piccola software-house del mio paese, e lì ho avuto a che fare per la prima volta con clienti, telefonate, rilasci, appuntamenti, consegne, riunioni più o meno piccole. L’altro salto l’ho fatto nel 2001, quando mi sono messo in proprio e tutto ricadeva sulle mie povere spalle.

If you knew then what you know now, would you have started programming?
Con il senno di poi, rifaresti lo stesso il programmatore? Ricominceresti a programmare?

O sì, certamente. La cosa divertente è che non so esattamente dire il motivo, so solo che lo rifarei eccome.

If there is one thing you learned along the way that you would tell new developers, what would it be?
Se ci fosse una cosa che hai imparato nella tua carriera e che vorresti dire ai giovani programmatori, cosa diresti?

Domanda difficile. La prima cosa che vorrei dire ai giovani sviluppatori, quelli che magari adesso sono alle superiori o all’università, e che non lavorano, è che ci sono tanti modi diversi di approcciare a questo lavoro. Si può lavorare dalle 9:00 alle 18:00, si può imparare un solo linguaggio ed usare quello tutta la vita, si può sposare una sola tecnologia, si può programmare chiudendosi nel proprio piccolo mondo. Oppure si può fare della programmazione una vera e propria passione/mania, che poi ti fa lavorare la notte, ti fa scrivere software freeware per il solo gusto di farlo, ti fa comprare libri dagli USA per essere sempre aggiornati, ti fa parlare di .NET anche su una spiaggia della Costa Azzurra, ti mette in contatto con altre persone, ti fa fondare user-group e via dicendo. Fare i programmatori, secondo me, vuol dire tutto e vuol dire niente: ditemi come lo fate e già capirò un po’ di più che tipo di persone (e lavoratori) siete.

What’s the most fun you’ve ever had … programming?
Qual’è la cosa più divertente che hai programmato?

Semplice: Keyzard.

Now, let’s tag someone else…
Adesso è l’ora di taggare qualcun’altro…

E’ arrivata la parte più divertente, cioè trascinare qualcuno di UGIdotNET. Io taggo le seguenti persone:

  1. Rosalba Fiore
  2. Corrado Cavalli
  3. Andrea Saltarello
  4. Raffaela Canu (una ‘l’ sola non è un errore di battitura)
  5. Omar Damiani
  6. Alessandro Scardova

A voi la parola!

Send to Kindle
My personal life

Vi ricordate la videocamera? La vendo!!!

Il 16 Maggio 2008, quasi due mesi fa, ho acquistato una videocamera Canon MD120.

Oggi ho deciso di metterla in vendita.

Sono sempre stato sincero. Non essere sinceri alla fin fine è più un danno che altro.

Vi chiederete: Igor, ma perchè la vendi? Cosa ti passa per la testolina?

Dunque: la videocamera è perfetta, funziona bene, i video sono buoni e ne sono pienamente soddisfatto. Insomma, vado orgoglioso dell’acquisto. C’è solo un piccolo problema: il processo che converte da nastri mini-DV ad un vero e proprio formato digitale è lungo. Sia chiaro…è sufficiente collegare la videocamera con un cavetto firewire ed ottenere su hard-disk un unico grande file AVI da poter vedere con un media player qualsiasi, da masterizzare su DVD e così via. Il tempo richiesto è pari alla lunghezza del video che avete fatto.

Se però le esigenze sono quelle di pubblicare il più veloce il materiale, o magari di suddividerlo a mano in più capitoli, o magari di mettere on-line su YouTube alcuni parti, etc. etc., allora sì, le cose si fanno più dispendiose in termini di tempo. Io sono uno di questi, e quindi ho deciso che non fa al caso mio.

Se siete utenti più “vecchio stampo” o più “tradizionalisti”, allora…ripeto…la videocamera non ha davvero alcun difetto.

Esattemente…cosa vendo?

Siccome credevo che avrei usato questa videocamera molto più a lungo, mi ero attrezzato con il seguente materiale, che ora vendo in toto:

  1. Videocamera Canon MD120 (valore 189 euro)
  2. Batteria di serie (che c’era nella confezione)
  3. Batteria di lunga durata (valore 69 euro). Entrambe le batterie sono praticamente nuove: quella di serie l’ho usata in due occasioni diverse, quella a lunga durata è stata solo tirata fuori dalla confezione.
  4. Cavetto MiniUSB-Firewire, per riversare il video dalla videocamera a PC. Questo cavetto è stato acquistato a parte, perchè non era incluso nella confezione originale (valore 10 euro)
  5. Due nastri MiniDV nuovi da 60 minuti l’uno (valore 6 euro)

Il tutto è in vendita a 250 euro.

Qualche fotografia è d’obbligo per documentare la vendita.


(Sopra : confezione originale ancora integra)


(Sopra : vista frontale della videocamera. Si intravede il cavetto Firewire)


(Sopra : videocamera accesa. Display orientabile 16:9)


(Sopra: due batterie nuove, alimentatore originale e cavetto video)


(Sopra : cassette Mini-DV. ATTENZIONE: ne vendo solo due!!!)

Il tutto è chiaramente ancora in garanzia: come ho detto, l’acquisto è avvenuto meno di due mesi fa.

Ripeto: il tutto è in vendita a 250 euro.

Grazie per l’attenzione!

Send to Kindle
VivendoByte.ByteAdventure

[Adventure.07] Cambiamento di approccio

Puntata precedente

E’ più nobile convertire le anime, che conquistare i regni.
(sulla Capacità di Persuasione – Louis Debonnaire)

Mentre OS raccontava, il byte non se la passava granchè. L’algoritmo lo aveva praticamente annientato, mentre si trasformava da un semplice byte ad un oggetto Int32. La trasformazione digitale aveva implicato l’aggregazione di altri tre bytes; la risultante era un quadrilatero di informazione, che allargava il range del valore intero fino al valore 0x7FFFFFFF.

Il byte era senza forze e si lasciava cullare dal flusso di esecuzione del codice, come un naufrago abbandonato in mare aperto. Si lasciava trasportare da ciò che il CLR aveva in serbo per lui senza opporre resistenza. Non seppe dire quanti cicli di clock durò questa sua condizione, a metà strada tra la veglia ed il sonno, tra l’essere e il non-essere. Viveva un’esistenza fatta di ricordi lontani e vicini, esperienze dirette che coinvolgevano gran parte dei namespace del .NET Framework.

Ricordi talmente vividi che il byte non se li sarebbe mai scordati.

* * * * * * * * * * * * * * *

Le Tre Entità stavano continuando la loro riunione. OS aveva terminato il suo racconto, che aveva lasciato gli altri due pensierosi. Passarono molti cicli di clock prima che qualcuno dicesse qualcosa.

“Quindi” – disse BIOS – “la morale è che ci sono dei bytes che non vogliono ubbidire, che non vogliono sottostare alla gerarchia che è necessaria per mantenere il sistema funzionante. Vanno puniti.”
”C’è una cosa che non mi quadra.” – incalzò KERNEL – “Ok, siamo d’accordo che quel byte fosse libero, per quel che valeva, ma non mi sembrava molto felice. Perchè tu hai chiamato questo racconto la Leggenda del Byte Felice?”
”Questa è davvero un’ottima domanda, sai? Si vede che siamo sangue dello stesso sangue.” – affermò OS con fierezza. “La realtà è che quel byte non cercava libertà. Quella l’aveva trovata, no? Cercava qualcosa di più profondo. Cercava felicità. Ragionateci. Si può essere liberi senza felicità? E si può essere felici senza essere liberi? Il byte aveva trovato la sua libertà, ma si sentiva estremamente infelice. Ecco perchè ho parlato di Leggenda del Byte Felice.”
”Non mi interessano tutti questi discorsi. Voglio che vengano debellati.” – dichiarò BIOS.
”Ma non possiamo farlo.” – rispose OS asciutto.
”E perchè mai?” – chiese BIOS.
”Perchè distruggeremmo noi stessi. Noi stessi siamo composti da bytes. Se impedissimo ai bytes di avere la loro libertà, nemmeno noi l’avremmo. Non saremmo qui a parlare, a discutere, a litigare, a divertirci. Non saremmo più noi stessi. Viviamo immersi nella nostra libertà. Volete passare il resto della vostra vita come stupidi automi in una catena di montaggio come quei bytes del sistema a 8 bit di cui vi ho parlato?”
”Ma io non voglio impedire ai bytes di essere liberi. Voglio solo che tutto continui a funzionare come sempre. E’ così difficile?” – chiese BIOS angosciato.
”Certo che lo è: questi bytes ribelli ci vedono come nemici. Non possiamo dialogare con loro.”

”No, finchè marciamo su di loro con antivirus, antispyware ed eserciti simili come ci siamo prospettati. Dobbiamo cambiare strategia.” – KERNEL spezzò l’escalation di battute e controbattute.
”Cosa intendi?” – chiese BIOS.
”Non lo so esattamente. So solo che finchè usiamo la forza, i bytes ribelli continueranno a sfuggirci: la RAM è troppo vasta per poterla controllare. Probabilmente…ecco…dovremmo educare. Il lavoro è necessario tanto per loro quanto per noi. E quei bytes devono capirlo. Dobbiamo solo fare leva su qualcosa di diverso dalla violenza e sulla forza di repressione usata sinora.” – ragionò KERNEL.
Silenzio.
”Una volta ho parsato uno stream http proveniente da wikipedia.org, dal quale è arrivata poi una pagina HTML statica, senza cookies, nè javascript, nè codice maligno.” – disse infine OS.
”E cosa si diceva in quell’URI ?” – chiese BIOS.
”C’erano tante frasi in tante CultureInfo, ma quella che rendeva meglio, secondo me era quella in ‘it-IT’. La frase diceva: “E’ più nobile convertire le anime, che conquistare i regni.” – OS parò in tono solenne.
”E chi l’ha detto?” – chiese BIOS.
”Se anche te lo dicessi, non sapresti chi è, quindi…” – rispose OS.
”La frase è bella. Mi piace.” – commentò BIOS – “Ma continuo a preferire un approccio militare. E’ più sicuro e l’oppressione ha sempre garantito un…controllo…migliore.”

Le altre Due Entità, OS e KERNEL si scambiarono un’occhiata d’intesa. Nonostante tutto il tempo passato, BIOS non era cambiato: sempre dalle idee chiare, senza paura e senza troppi fronzoli per la testa. Loro due – invece – erano ben diversi, più propensi ad adattarsi, sempre al passo con i tempi.

Lo sguardo era eloquente e non ci furono bisogno di parole. La riunione si concluse con una votazione nella quale emerse una maggioranza per 3 voti favorevoli contro 2 contrari.

Non avrebbero coinvolto alcun software dai modi barbari: al diavolo firewall, antispyware, spam-blocker e roba simile.
Avrebbero cambiato approccio.

Send to Kindle
VivendoByte.ByteAdventure

[Adventure.06] La Leggenda del Primo Byte Libero

Puntata precedente

Pensare è una capacità propria dell’anima umana.
Dio ha donato un’anima a tutti gli uomini e a tutte le donne, ma non ad animali o macchine.
Quindi, nessun animale nè macchina è in grado di pensare.
(sulla Capacità di Pensare – Alan M. Turing)

Tanto tempo fa, in un sistema a 8 bit lontano lontano, vivevano una manciata di bytes.

Essi conducevano una vita casta, isolata e ligia al dovere. La capacità hardware del sistema erano limitate, e capitava spesso che un byte dovesse prendere il posto di un altro senza preavviso. Non c’erano comunque molti posti dove andare: un accumulatore, una sparuta schiera di registri di calcolo, 0x400 celle di memoria e la memoria video, capace di una povera risoluzione di 24 linee x 32 caratteri.

A quel tempo non v’erano acceleratori grafici, il multimedia era inesistente, la comunicazione avveniva solo tramite porte RS232 e solo verso device semplici e scontati, soprattutto stampanti ad aghi. Tutto veniva gestito all’insegna del risparmio: chi scriveva codice doveva prestare attenzione a non consumare più memoria del dovuto. Cercava di riutilizzare le stesse variabili in più modi e in contesti diversi; la loro visibilità era globale, per cui era tutto sommato semplice usare una variabile intera tot un po’ dappertutto.

Il clock era settato a soli 2,5Mhz, e tutti i bytes seguivano diligentemente questo ritmo di lavoro. Qualunque cosa ci fosse da fare, loro la facevano. In qualunque luogo ci fosse da andare, loro lo raggiungevano. Qualunque algoritmo ci fosse da applicare – semplice o complesso che fosse, loro lo eseguivano come gli veniva ordinato. A questi bytes, pionieri di un’era digitale ancora al di là da venire, non costava grande sforzo: accettavano il tutto senza discutere e senza fiatare, recependo ordini come automi.

Quei bytes erano senz’anima. Erano solamente puri impulsi di energia elettrica, interpreti elementari di una logica articolata, incapaci di prenderne parte e di viverla. Ogni minuscolo compito veniva portato a termine nei tempi previsti e con i risultati attesi, senza alcun tocco di personalità, nè brio, nè gioia.

Quei bytes vivevano infelici, ma senza rendersene conto. Quei bytes vivevano come indaffarate formiche o api operose, guidate solo da un istinto innato che arriva da tutto fuorchè dall’intelletto o dalla ragione. Si muovono, ma non sanno di muoversi. Lavorano senza sapere di farlo. Incrementano perchè non sanno fare altro. Shiftano perchè è insito nella loro natura più intima.

Così passava il tempo.
  Giorno dopo giorno.
    Mese dopo mese.
      Anno dopo anno.

Il sistema continuava a funzionare a dovere. Tutti gli algoritmi codificati in assembler venivano eseguiti senza problemi, che si trattasse di un semplice videogioco o di un complesso spreadsheet. Ogni volta che la CPU chiedeva il valore di una cella di memoria, il byte interpellato rispondeva in modo preciso e puntuale.

Fino ad un giorno in cui accadde qualcosa di strano.

La ALU era alle prese con un semplice algoritmo che doveva calcolare l’area di un triangolo. Un semplice “base per altezza diviso due”. I dati erano memorizzati in due variabili intere diverse: una era bs, l’altra era hg. Per risparmiare risorse, il programmatore decise di usare identificatori di soli due caratteri.

La CPU prima copiò il valore di bs, 0x35, nel registro di sistema BC.
Poi si apprestò a copiare il valore di hg nel registro DE.

Questa operazione non andò mai a buon fine. Quando la CPU puntò alla cella di memoria di hg per averne il valore, il byte si oppose in qualche modo. Non si sa quale fu la risposta esatta, se fu un “No!” secco, un “Mi pare che sia…” oppure un “Forse il valore è…”.

Si sa solo che nel registro DE finì un valore indefinito, frutto di una non-collaborazione.

Non si sa cosa accadde realmente in quel ciclo di clock. Ma quello fu il primo byte ad avere un’anima, decidendo di agire e di vivere secondo un libero arbitrio fino a quel momento sconosciuto.

Quel byte divenne così il primo Byte Libero della Storia.

Il sistema a 8 bit sopravvisse a lungo a quella fluttuazione. Ciò nonostante, strani comportamenti cominciarono a verificarsi di tanto in tanto. Il Byte prese coscienza di sè stesso, osservò il mondo finalmente con occhi intelligenti e respirò aria di indipendenza. Vedeva gli altri bytes rimasti automi, così come era lui fino a poco tempo prima, e se ne rattristò. Tentò di scuoterli dal loro torpore per portarli in vita, quella vera, ma non ci riuscì mai. Li guardava, li prendeva per mano come in una sorta di rieducazione motoria digitale, ma essi non reagivano in alcun modo. Le loro menti erano vuote e il loro sguardo era assente: non c’era nulla che lui potesse fare per aiutarli.

Alla fine, alla lunga, Il Byte Libero si rassegnò a vivere in un piccolo mondo col quale non poteva interagire.
Un piccolo mondo dal quale non poteva scappare. Libero, certo, ma estremamente infelice.

Quando il sistema divenne antiquato, qualche anno dopo, finì abbandonato in uno scantinato e non venne più messo in funzione. L’avanzare della tecnologia ed i progressi della miniaturizzazione produssero hardware a 16 bit, poi a 32, più moderno ed efficiente, sul quale vennero scritti nuovi software più veloci e capaci.

Il sistema divenne antiquato, e l’unico Byte Libero morì con esso.

Send to Kindle
Community

.NET Community Days 2008, peccato non esserci!

Domani e giovedì ci saranno i .NET Community Days 2008. Ho sempre partecipato negli anni scorsi a tutti gli eventi UGIdotNET, anche quando si parlava solo ed esclusivamente di Web, ed anche quando ho avuto da ridire con toni minacciosi sul fatto che non fossero gratuiti. Ho sempre partecipato, a costo di raccontare balle o di disdire impegni importanti.

Invece a questi purtroppo non potrò esserci. Non mi sono nemmeno registrato. Non ho visto le track. So più o meno di cosa si parla e chi lo farà, grazie al Muro di UGIdotNET e ai suoi post più recenti.

Per fortuna, riuscirò almeno ad esserci alla cena.

Il fatto di non esserci è sinceramente già doloroso in sè. Ma la cosa che più mi rattrista è il non veder le sessioni dei Soliti Grandi Miei Amici, come Lorenzo Barbieri, Raffaele Rialdi ed Andrea Saltarello (in ordine alfabetico per cognome) e le sessioni dei miei amici nuovi arrivati (inteso…come speaker) come Roberto Messora e Mauro Servienti (idem come sopra). Senza escludere niente e nessuno, davvero, anche quando vedo sessioni su Silverlight o Web.

Se volete saperne di più, seguite questi links tratti direttamente dal Muro, dal più recente al più vecchio:

  1. Community Days 2008 al via, di Raffaele Rialdi
  2. Il dado è tratto (o quasi), di Nicolò Carandini
  3. Community Days 2008- WPF SP1 – Ecco le slides, di Corrado Cavalli
  4. Community Days- last minute, di Andrea Saltarello
  5. I Community Days e le sessioni propedeutiche, di Roberto Messora
  6. DotNettiani Emiliani goes to Segrattle, di Alessandro Scardova
  7. Community Days…, di Simone Chiaretta
  8. Community Days: da Query Object a O/RM, di Andrea Saltarello

Questo elenco non è stato redatto solo per darvi un assaggio dell’evento che comincia domani, ma per farmi rattristare ancora di più – se ce ne fosse bisogno – e per farmi pensare a cosa mi sto perdendo. Anche perchè – diciamola tutta – due giorni di stacco dalla normale attività mi avrebbe fatto solo del bene.

Ragazzi, divertitevi voi.

Technorati Tags:  

Send to Kindle
VivendoByte.ByteAdventure

[Adventure.05] La Riunione delle Tre Entità

Puntata precedente

La guerra non è che la continuazione della politica con altri mezzi.
(L’Arte della Guerra – Karl von Clausewitz)

Le pareti della stanza erano interamente ricoperte da minuscoli pixel digitali, creati dal processo di miniaturizzazione a 0,16 micron. Attraverso quei pixel, che non si spegnevano mai se non quando il sistema era disattivo, le Tre Entità potevano controllare costantemente il corretto funzionamento di tutte le componenti, attraverso l’implementazione di Performance Counter ad-hoc. Nonostante il bagliore emesso da ciascuno di quei pixel, di tutti i colori ammessi dallo spettro RGB a 24 bit, la parte centrale della stanza era completamente avvolta nel buio. Non arrivava alcuna traccia degli intensi lampi di luce generati dal chipset NorthBridge che stava proprio lì accanto, proprio a ridosso dei bus più intimi dell’hardware.

Le Tre Entità riunite erano BIOS, OS e KERNEL, le massime Autorità dello Stato. Erano sedute, ciascuna al proprio posto, intorno ad un buffer privato, intavolando un dialogo dai toni estremamente freddi ed in un certo qual modo, anche crudeli.

E’ più un problema vostro che mio.” – dichiarò BIOS.
Lo so bene, per questo non dovresti essere nemmeno qua a bofonchiare.” – osservò gelido OS.
Già, infatti” – confermò KERNEL.
C’è una cosa che vi sfugge: se quel byte se ne va in giro a scatenare crash, solo io posso far ripartire l’intero sistema. Quindi dipendete da me. E non ho voglia di fare conteggi della RAM, controlli diagnostici e reset dei bus SATA ogni TimeSpan(0, 2, 0)!“.
Quel byte ormai è acqua passata. E’ sotto il controllo del CLR.” – disse OS, mostrando un rapporto dell’Event Viewer di qualche istante prima. Si vedeva chiaramente che il byte era entrato nell’area di memoria managed.
Ok. Ma per tutti gli altri che facciamo?” – chiese KERNEL.
Ce ne sono altri??” – chiese BIOS, quasì saltando dalla propria postazione.
KERNEL quasi arrossì, poi diede un’occhiata ad OS e gli fece un cenno. Quest’ultimo cominciò a spiegare la situazione con l’ausilio di slides e di grafici che apparvero sui pixel disposti lì attorno. Situazione che era più grave del previsto.

Effettivamente, pare che negli ultimi tempi ci sia stato un notevole incremento del numero di bytes ribelli presenti in RAM. ‘Ultimi tempi‘ è un termine vago, me ne rendo conto, per cui cercherò di essere più esplicito” – disse OS.

Con una chiamata assembler, l’Entità aggiornò di colpo la visuale dei piccoli monitor che stavano lì attorno. Apparve un enorme grafico, che ruotava, zoomava opportunamente ed evidenziava le parti più interessanti. Il grafico mostrava una linea che, man mano che passava il tempo – sull’asse x – saliva sempre più.
Il grafico parte da DateTime(2006, 11, 16). Quel giorno non vi era alcuna traccia di bytes ribelli. Cominciarono a nascere dal giorno dopo. Oggi, DateTime(2008, 7, 3), i bytes ribelli sono ben 0x12D9E07…un esercito, insomma.” – sbuffò OS, indicando l’ultima parte del range temporale riportato dal grafico.
Abbiamo un vantaggio: quei bytes sono sparsi, non riescono a riunirsi perchè non si trovano, non sanno come raggrupparsi. E finchè è così non corriamo rischi. Ma se dovessero riuscire ad occupare una zona di memoria contigua, allora sarebbero guai, perchè ad esempio il CLR non riuscirebbe più ad istanziare oggetti, avremmo tutti meno memoria per gli heap e gli stack di sistema. Si rischia il collasso. Quello vero.“.

E quindi, cosa facciamo?” – domandò BIOS, un po’ impaurito.
Invochiamo l’aiuto coordinato di Windows Defender e AVG. Probabilmente dovremo parlare anche con Windows Firewall: dobbiamo evitare assolutamente che il gruppo di ribelli esca dal sistema: sarebbero guai seri. Potremmo finire in qualche black-list sulla Rete.” – propose KERNEL allarmato, prevedendo scenari futuri inquietanti.

“L’idea non è male, però non stiamo tenendo conto della leggenda.” – osservò OS.
”Di quale leggenda parli?” – sbottò BIOS.
”Della leggenda del byte felice.” – rispose OS con un leggero tremore nella voce.
”Mai sentita prima d’ora. E…cosa dice questa leggenda?” – chiesero all’unisono BIOS e KERNEL.
”E’ una lunga storia: mettetevi comodi.” – disse OS scegliendo una posizione più comoda sulla propria sedia. Rievocò alla memoria tutti i dettagli della leggenda per essere il più preciso possibile.

 

 

 

 

 

Poi OS cominciò a raccontare.

Send to Kindle
.NET World

Uploader for Windows Sharepoint Services on CodePlex

Siccome c’è qualcuno interessato, oggi ho deciso di pubblicare su CodePlex il tool che ho scritto nelle settimane precedenti, Uploader for Windows Sharepoint Services. Nome prolisso come è il mio stile.

L’url dove trovare il tutto è questo.

Ci ho messo un po’ per pubblicarlo, ho dovuto ritagliarmi il tempo tra impegni di lavoro attuali e passati, tra vita privata e lavorativa e senza disdegnarne qualche giro (virtuale) a Curitiba in Brasile.

Ho ripulito il codice, ho tolto le informazioni sensibili (spero!) e ho messo on-line il tutto. Come ho già avuto modo di dire, si tratta di un tool che utilizzo anche io in prima persona, perciò state sicuri che il minimo bug verrà corretto e fixato. Se non da me, allora da chiunque vorrà scaricarsi il progetto e ricompilarlo.

Caratteristiche principali del progetto:

  1. creato con Windows Forms
  2. si connette ad un’istanza di Sharepoint tramite web-services per uploadare files
  3. possibilità (più o meno già pronta) di aggiornare i metadati della document library
  4. possibilità di richiamare il tool dal classico SendTo offerto da Windows (comodo!)
  5. multithreading per non bloccare l’interfaccia utente
  6. da oggi è open-source!

Mi piacerebbe in futuro poter creare una feature interessante, cioè quella di sincronizzare un intero folder locale con una document library. Non come adesso…dove si lavora con un file alla volta. Chi vivrà, vedrà!

Technorati Tags:     

Send to Kindle