Technology Experience
Software

Una bella lettura su Sharepoint

Una decina di giorni fa mio fratello è andato alla Hoepli qua a Milano ad acquistare alcun libri di Sharepoint, senza un’idea precisa. Ne ha presi due…uno che sta leggendo lui – più orientato ai developer – ed un altro invece che tratta più argomenti rivolti agli user (o power-user) di Sharepoint. Questo secondo mio fratello l’ha scartato, così me lo sono acchiappato io e me lo sto leggendo nel poco tempo libero che mi rimane durante una normale giornata lavorativa.

Sebbene non utilizzi Sharepoint tutti i giorni, lo trovo gradevole da leggere, non molto impegnativo, forse perchè non parla di programmazione pura, quanto di come installare/configurare/utilizzare Sharepoint in modo produttivo.

Technorati Tags:  

Send to Kindle
Software

Un orologio nel vostro blog

Se volete mettere un orologio analogico sul vostro blog, vi consiglio questo sito. Da qui potrete disegnare l’orologio e copiare copiare ed incollare l’HTML risultante. Non che le scelte siano molte…potete dare un colore al bordo, decidere se lo volete a 12 ore oppure a 24 e la larghezza/altezza in pixel. L’HTML contiene una piccola applet in Flash, e funziona davvero bene: basta guardare la parte sinistra delle pagine Web del mio blog per darvi un’idea.

Fonte : http://www.worldtimeserver.com

Technorati Tags:

Send to Kindle
Community

La settimana del troll

Riporto dal link originale…

Parte oggi la settimana dei troll (29.10.2007, ndr): sette giorni dedicati a un concorso molto particolare che premierà i migliori commenti fuori luogo e gli insulti più acuti e divertenti. Infatti, per chi non lo sapesse, il troll nel gergo della rete è colui che si diverte a interferire nelle discussioni in modo provocatorio, superficiale e irritante al solo scopo di dare fastidio e creare magari anche un memorabile litigio fra utenti. L’iniziativa è del popolare sito Mashable e il vincitore sarà premiato con 500 dollari.

Comincio a capire molto cose. Mi devo assolutamente iscrivere.

Fonte : http://www.visionpost.it/index.asp?C=1&I=2590

Send to Kindle
My personal life

Auguri ad Annalisa!

Oggi, 31 Ottobre, compie gli anni un’amica che non vedo e non sento da un sacco di tempo. Forse troppo. Ma la ricordo con piacere, perchè una sera di tanti, tanti, tanti anni fa l’ho tenuta ad aspettarmi un paio d’ore sotto casa – mentre io ero in camera mia a sistemare il mio primo PC “serio” della mia vista.

Annalisa, tanti auguri.

Non dico l’età, altrimenti sollevo una bella YouDontHaveToTalkAboutAgeOfTheWomenException.

Send to Kindle
VivendoByte.ByteAdventure

[Beginning] Il byte in viaggio verso una GeForce

Dedicato a tutti quelli che hanno il PC che swappa, che ogni tanto si blocca, che rallenta, che si inchioda. Ricordatevi sempre che i bytes, ogni tanto, possono tranquillamente farsi i cavoli loro, come chiaccherare e decidere di cominciare un viaggio senza che nessuno gliel’abbia detto.
Buona lettura!

L’algoritmo di anti-aliasing (AA) generava uno strano effetto persino sul byte che tutto tranquillo se ne stava per i fatti suoi. L’entità byte guardò il proprio corpo e notò che parte di esso era nero come la notte, mentre le estremità tendevano ad assumere colorazioni di nero in qualche modo più chiare. Diverse. Si sorprese, sebbene vivesse già da molto tempo all’interno del sistema dual-core che lo ospitava.

Non aveva nulla da fare, e per questo passava il suo tempo libero allocato in una cella di memoria senza far nulla di particolare. Continuava ad osservare gli effetti che AA generava sul suo corpo…le tonalità di nero e di grigio scuro fluttuavano da un punto all’altro…prima erano le sue mani ad essere scure, un ciclo di clock dopo lo erano i piedi. Quando AA renderizzava il colore RGB 0x000000 sulla testa, il byte veniva colpito da un lieve giramento di testa…quasi piacevole…ma…come non gli era mai capitato prima. I colori viaggiavano come onde del mare sul corpo virtuale del byte.

Il byte fece per uscire dalla sua cella di allocazione, quando ne vide arrivare un altro sul bus di indirizzamento che correva poco più sotto. Il byte notò subito che il suo simile faceva parte di un array, perchè portava chiara ed evidente sul petto l’offset dell’array a cui apparteneva: 0x130. Il byte lo fermò per chiedergli delucidazioni.

Fermati!” – ordinò il byte, sbarrando il bus. L’array non ci passava più, e fu costretto a fermarsi.
Che vuoi ?” – chiese il byte[130].
Anche a te succede questa cosa ?” – chiese il byte, mostrando al suo interlocutore gli effetti di AA.
Oh, certo, da che parte del sistema arrivi ?” – rispose di rimando byte[130] – “Guarda…anche io sono come te!

Il byte osservò per qualche istante byte[130] e non potè che confermare. Anche il corpo di byte[130] era in continuo movimento, sebbene nel suo caso i colori fossero più vivaci e luminosi. La testa, le braccia e parte del petto erano di un verde brillante, mentre gambe e piedi sfumavano verso un verde scuro più intenso e profondo. Se i bytes conoscessero boschi o alberi, probabilmente associerebbero questi colori a giovani foglie di primavera, cariche di verde brillante. Ma non li conoscono, e dal punto di vista dei bytes tutte le varietà di colori non sono altro che combinazioni di 3 bytes, secondo la codifica RGB. Nulla di particolarmente poetico, tranne che per il byte, che continuava ad esserne attratto.

Il byte diede un’occhiata dietro a byte[130], curioso di vedere quali altri colori avessero i bytes dell’array. Ma non ne trovò altri, byte[130] sembrava essere il primo e l’ultimo byte dell’array. Ma non poteva essere.

Dove sono gli altri elementi dell’array? Sei l’unico elemento che vedo qui!” – domandò byte a byte[130].
La memoria è frammentata. Credo che gli altri 512 bytes siano da qualche parte più avanti. Non posso raggiungerli, ma non devo perdere terreno, altrimenti l’elaborazione del secondo core del sistema subirà pesanti rallentamenti. Devo andare!” – rispose byte[130].
Ok, solo un’ultima cosa: chi causa questo AA ? Chi è il responsabile ?
byte[130] sorrise ingenuamente. Conosceva perfettamente la risposta, e gli piaceva sempre dialogare con gli altri bytes, ma questa volta non aveva davvero tempo: l’OS lo chiamava, sentiva che lo stava chiamando. Si voltò di spalle ed indicò un enorme palazzo lontano, a migliaia e migliaia di offset di distanza. Il byte l’aveva visto anche prima – naturalmente – ma non pensava che fosse così importante.
Cosa diavolo è quel palazzo ?” – chiese il byte.
Quella è, come la chiamerebbero i Creatori, la scheda grafica. Graphics Device, Graphics Unit, insomma…è il componente del sistema che si occupava di renderizzare, cioè di inviare in output tutto quello che il Creatore deve vedere. Senza di lei, probabilmente perderemmo gran parte della nostra efficacia. Tutto quello che il sistema elabora e che deve essere visualizzato, passa dalla scheda grafica.

byte[130] proseguì velocemente nella sua spiegazione.

L’effetto AA, che è quello che ci ritroviamo addosso, è solo uno degli algoritmi che applica, allo scopo di ottimizzare l’immagine finale in output. Per evitare che sul monitor compaiano scalettature, un determinato colore viene sfumato in corrispondenza degli altri colori vicini, così da generare un graduale cambiamento del colore stesso. Ma forse è troppo complicato per te, non è vero? Comunque, normalmente non accade che AA disturbi così tanto noi bytes sui tradizionali bus di trasmissione del sistema. Probabilmente qualche problema sui driver genera qualche disturbo che sinceramente non ti so spiegare. Ora però devo andare davvero.

Durante la spiegazione, il byte teneva gli occhi inchiodati sul palazzo che byte[130] gli aveva indicato. Voleva andarci. Voleva entrarci, farci un giro, capire cos’è un algoritmo di anti-aliasing, una texture, di cui aveva sempre sentito parlate. L’aveva capito fin da subito. Guardò meglio il palazzo. Era altissimo, più di 0x4C2A8 piani, scintillava da innumerevoli punti luminosi che coprivano l’intera superficie: probabilmente – si disse il byte – erano endpoint, porte di comunicazione verso l’esterno. Adesso che osservava meglio, gli sembrava di notare giganteschi stream di bytes che entravano nel palazzo, ininterrottamente, senza perdere un solo ciclo di clock. Si immaginava l’interno. Enormi stanze, ciascuna adibita ad elaborazioni diverse. Una stanza dedicata alle texture, un’altra al bump-mapping, un’altra ancora al cacolo del frae-rate ottimale.

E come faccio ad arrivarci ?” – chiese di nuovo ansioso il byte.

Ma non gli arrivò mai risposta. Solo silenzio. byte[130] se ne era andato di soppiatto, di nascosto, senza attirare l’attenzione. La domanda cadde nel vuoto. Il byte rimase lì, solo, sul bus, con in testa una sola piccola ed ossessionante idea: quella di raggiungere subito la GeForce, godersela, ed uscire il più tardi possibile. Lasciò la cella di allocazione che gli era stata assegnata e se ne andò tranquillo per il sistema, rischiando di generare instabilità e, forse, qualche blue-screen del sistema operativo. Ma ne valeva la pena. Oh sì, ne era sicuro: ne valeva proprio la pena.

Send to Kindle
Community

C’è una passione per l’analisi grammaticale?

Non so se ve la ricordate. L’analisi grammaticale – alle elementari – era la mia preferita. In pratica, si scriveva una frase indicando ogni parola su una riga separata, e di fianco si andava ad specificare che tipo di costrutto fosse quella determinata parola. Per dire, il verbo ‘mangiavo‘ veniva espresso come ‘voce del verbo mangiare, prima coniugazione, tempo imperfetto, prima persona singolare‘. Oppure – chessò – ‘patate‘ veniva espresso come ‘nome comune di cosa, femminile plurale‘. Basta googlare su Internet per avere maggiori dettagli.

C’è una passione per l’analisi grammaticale, dicevo.

Ci sono post che vengono vivisezionati, alla ricerca di imprecisioni, imperfezioni, parole che possono essere equivocate e fraintese. Ci sono interventi sui forum di mezza Internet che pur di essere bersagliati subiscono decine e decine di riletture, al solo scopo di andare a beccare quella frase che – tirata fuori dal contesto – possa mettere nei guai la persona che l’ha scritta.

Ovviamente, non posso essere d’accordo con questa pratica, anche perchè – lo ammetto e ci mancherebbe – in passato questa cosa l’ho subìta in prima persona, e le conseguenze sono visibili tuttora, e risponde al nome di VivendoByte. Scrivere un post su un blog o su un forum, una home-page, un articolo è difficilissimo e l’ho detto anche in passato: per quanto uno possa tentare di essere chiaro nello scrivere, ci sarà sempre qualcuno che non capirà fino in fondo quello che si cercava di dire. Questo stesso post – magari messo sul buon vecchio Muro di UGIdotNET, scatenerebbe chissà quali polemiche. Per fortuna non ci sono più. Bisognerebbe – forse – non star lì a leggere ogni fottuta e maledetta singola parola, ma percepire le linee principali che stanno alla base di un’idea e di una proposta.

Che ne dite, lo facciamo uno sforzo?

Send to Kindle
Hardware

Non vi piace il cavalletto della vostra digital camera?

Qua c’è una bella (ed economica) alternativa. Invece del classico cavalletto, potete usare questa base per appoggiare la macchina digitale: potete ruotarla in tutti i sensi, potete appoggiarla per terra, potete usarla per fare gli autoscatti, etc. etc. In questa pagina c’è un video che spiega le caratteristiche principali.

L’oggetto è in vendita solo on-line in due colori diversi al prezzo di Euro 14,99 tutto compreso.

P.S. : io non c’entro nulla, ed ovviamente non ci guadagno nulla. So però che molti di noi hanno una fotocamera digitale e magari potrebbe interessarvi. Se non vi piace o se avrete problemi, non prendetevela con me! 🙂

Technorati Tags:

Send to Kindle
.NET World

Windows Vista User Experience Guidelines

Il buon amico Marco Minerva ci informa che Microsoft ha rilasciato la versione definitiva delle guidelines da seguire per sviluppare applicazioni sotto Windows Vista. Sicuramente interessante, perchè si parla di come sfruttare WPF per aderire a queste convenzioni, di come disegnare l’interfaccia utente, quali font utilizzare, etc. etc.

Secondo me è utilissimo, almeno per me, nel senso che la maggior parte delle volte rimango bloccato su come disegnare un’interfaccia, ma non dal punto di vista tecnico, quando dal punto di vista estetico e funzionale. Anni fa lavoravo con un grafico che mi disegnava le interfacce, poi io le realizzavo fisicamente all’interno del software, e da questo punto di vista rendevo mooolto di più rispetto ad oggi, dove invece devo “perdere” tempo ad inventarmi finestre/dialog/wizard magari meno efficaci e meno amichevoli rispetto al lavoro fatto da una persona dedicata e più competente nel settore.

Fonte : http://msdn2.microsoft.com/en-us/library/aa511258.aspx

Technorati Tags:    

Send to Kindle
My personal life

Ma cosa passa per la testa a ragazze così?

Sinceramente, non capisco proprio. Per fortuna alla fine ha confessato e la verità è saltata fuori. L’altra tristezza è di-non-so-bene-chi delle Forze dellOrdine di Milano, probabilmente chi si è occupato delle indagini, che stasera al TG1 ha dichiarato: “E’ una ragazza che va capita e va perdonata…“. Ma dico…perdonare cosa??? Certe ragazze, e certi ragazzi, dovrebbero capire meglio le conseguenze delle proprie dichiarazioni ed azioni. Perchè, altrimenti, mi chiedo…come sarebbe finite senza che le telecamere rivelassero che effettivamente non era successo nulla? Non so proprio…

Ed il bello che l’altra sera, sempre al TG, la stessa persona avevo fatto un appello, chiedendo al signore che aveva soccorso la ragazza di presentarsi ad una stazione dei carabinieri per aiutare il corso delle indagini. Ovviamente, non si è presentato nessuno, perchè non c’è mai stata alcuna vera aggressione. Tristezza.

Fonte : http://www.corriere.it/vivimilano/cronache/articoli/2007/10_Ottobre/29/aggressione_inventata.shtml

Send to Kindle
.NET World

Un domain-model con WCF (oggetti DTO e dintorni)

Qualche giorno fa ho proposto sul mio blog l’implementazione di due interfacce diverse da utilizzare con WCF.

La prima implementazione di IFatturazione espone due metodi che ritornano l’XML che rappresentano i tipi:

[ServiceContract()] public interface IFatturazione { [OperationContract] string GetXmlArticolo(string Codice); [OperationContract] string GetXmlCliente(string Codice); }

Il primo GetXmlArticolo prende in input il codice dell’articolo e ritorna l’XML dell’istanza di Articolo ottenuta – in pratica, la serializzazione dell’istanza dell’oggetto. Sul client del servizio WCF, la stringa viene deserializzata per ottenere l’istanza dell’oggetto stesso. In questo caso non ho bisogno di oggetti DTO, perchè l’unica cosa che viaggia avanti ed indietro su WCF sono stringhe, o comunque tipi semplici.

La seconda implementazione di IFatturazione è un po’ più forte dal punto di vista del domain-model. Vediamola:

[ServiceContract()] public interface IFatturazione { [OperationContract] ArticoloDTO GetArticolo(string Codice); [OperationContract] ClienteDTO GetCliente(string Codice); }

Questa interfaccia non passa da XML, ma ritorna direttamente le istanze degli oggetti. Il buon Fabio, autore del libro in allegato ad IoProgrammo, mi ha lasciato un commento che dal punto di vista teorico mi sembra assolutamente incontestabile. Dal punto di vista pratico, invece, ho trovato notevoli perplessità ed un certo complicarsi delle cose. Vi voglio dire dove per arrivare assieme ad una soluzione.

Giustamente, Fabio dice che occorre creare DTO per ogni tipo che voglio utilizzare con WCF. Nel semplice esempio qui sopra, devo creare ArticoloDTO e ClienteDTO. Praticamente, il numero delle classi raddoppia. Non solo: devo decorare ogni classe con l’attributo [DataContract], ed ogni proprietà con l’attributo [DataMember]. Ma questo è il lato semplice della cosa. Sebbene avessi già chiaro il concetto di oggetto DTO, ho preso spunto dai post di Emanuele sul Muro di UGIdotNET, che spiega due metodi diversi (uno e due) su come implementare oggetti DTO.

Nel primo metodo, ed applicandolo al mio semplice caso, la classe ClienteDTO eredita direttamente da Cliente. Sarà la classe ClienteDTO che decorerò con [DataContract]. Peccato però che WCF obbliga anche la classe base ad essere decorata con questo attributo, rendendo di fatto la cosa impossibile se non si dispone del codice sorgente del domain-model. Ma non solo in questo: se volessi mantenere il più possibile il mio domain-model, dovrei evitare di sporcarlo con attributi specifici di una certa particolare tecnologia. Sarà anche una mia fissa, ma il mio domain-model non lo tocco: così l’ho fatto due anni fa, così lo voglio mantenere. Quindi, di fatto realizzare oggetti DTO con l’ereditarietà mi trova contrario.

Nel secondo metodo, la classe ClienteDTO incapsula al suo interno un membro privato di tipo Cliente. Il costruttore di ClienteDTO si preoccupa di prendere in input un’istanza di Cliente con la quale settare il membro privato. Poi, è sufficiente implementare ogni proprietà pubblica che voglio esporre all’esterno. Ancora una volta, la classe DTO deve essere decorata con [DataContract], mentre ogni proprietà con [DataMamber]. Qui è doppiamente scomodo, perchè sono costretto ad implementare una ad una ogni proprietà. Ma la cosa più grave, a mio avviso, è che con l’incapsulamento non posso castare ClienteDTO a Cliente. Quindi, il client di WCF riceve un’istanza di ClienteDTO, che non sa come trasformare in Cliente e di conseguenza, non può più utilizzare in modo naturale il domain-model. Piccola nota: la classe ClienteDTO potrebbe esporre una proprietà pubblica di tipo Cliente, che serva a tirar fuori il membro privato. In questo modo, sarebbe possibile scrivere una linea di codice come questa:

Cliente cl = clienteDTOfromWCF.Cliente;

Cioè, posso ottenere l’istanza di Cliente chiedendola direttamente ad un’istanza di ClienteDTO. Ma anche questa strada non è percorribile, perchè significa decorare con [DataMember] la proprietà pubblica Cliente della classe ClienteDTO. E, di nuovo, torniamo al punto di partenza…cioè…devo mettere mano al sorgente del domain-model, perchè in fase di compilazione mi viene giustamente detto che anche la classe Cliente deve essere decorata con [DataContract].

Stasera finisco qua. Ho appena finito un paio d’ore di sviluppo su WCF, e questo post rappresenta un po’ di punti critici che ho incontrato e che sinceramente non so come risolvere. La prima implementazione di IFatturazione è l’unica che riesco ad utilizzare con produttività, proprio perchè viaggiano solo stringhe, generate dalla serializzazione di oggetti, che subiscono l’operazione inversa lato client.

Technorati Tags:   

Send to Kindle