Di .NET e di altre amenita'

gennaio 2005 Entries

Carnevale

Non c'è nulla da fare. Il carnevale proprio non riesco a farmelo piacere. Anche oggi sono stato "vittima" di una sfilata di carri allegorici, che mimavano quelli ben più signiicativi di altri carnevali. Alla fine, l'impressione è proprio quella di cui mi parlava il mio amico Francesco. Questo doversi divertire per forza, dovendo per forza fare "pazzie" a tutti i costi. Tutto questo ha un sapore di falsità che va ben oltre quella insita nel significato stesso del carnevale e delle relative maschere.

Da sempre sono spettatore più che attore in questa "farsa" organizzata. Tempo fa ero abituato a frequentare Piazza S.Marco a Venezia l'ultima domenica di carnevale, per ritrarre le maschere più belle con la mia macchina fotografica. Ma più che un partecipare alla festa aveva il significato di puro esercizio fisico, data la fatica "fisica" che la giornata richiede.

Eppure ammiro per qualche verso coloro che hanno la pazienza di costruirsi una costume, con fantasia per esibirsi in questo grande palcoscenico, ma trovo che per "la solita massa" alla fine non si tratti che di uno stupido rito cui si è obbligati a partecipare.

powered by IMHO 1.2

Ossessione pubblicitaria

Scenario: una tranquilla domenica, all'ora di pranzo mentre sono pronto ad azzannare una splendida orata alla griglia cotta al barbecue. Suona il telefono.

Chi mi conosce di persona sa quanto fastidio mi dia ricevere telefonate mentre sono a tavola, ad un'ora in cui chiunque dovrebbe sapere che se ti chiama al 90% ti disturba. Quest'oggi dall'altra parte della cornetta c'èra una ignara operatrice Telecom che per l'ennesima volta tentava di vendermi una linea ADSL, pur avendo o chiesto più volte ad altre sue colleghe di cancellare il mio nominativo dai loro elenchi dato che l'ADSL ce l'ho già e che comunque se ho bisogno di cambiarla al limite sarei io a chiamare loro.

Mi sono così trovato ad imprecare, nei confronti di una operatrice che probabilmente non fa altro che eseguire degli ordini, ma che in quel momento non era altro che la personificazione di un male dei nostri tempi.

La mia decisione, maturata ormai da alcuni giorni è quella di rifiutare sistematicamente d'ora in avanti qualsasi tipo di tentata vendita telefonica, e probabilmente sarò anche sgarbato. Almeno, i vecchi venditori porta a porta, un tempo dovevano presentarsi catturando l'attenzione e la simpatia del cliente, mentre oggi, tali venditori cornetta a cornetta hanno perfino l'ardire di telefonare alle ore più impensabili, coscienti di disturbare.

Il mio prossimo tentativo sarà quello di registrare la conversazione con un operatore Telecom e nel corso della telefonata informandolo della registrazione chiedergli ufficialmente di rimuovere il mio nominativo dagli elenchi, nella speranza che in una successiva violazione della mia privacy io in qualche modo possa diffidare ufficialmente Telecom da perpetrarne di ulteriori.

powered by IMHO

Microsoft Enterprise Library 1.0

Oggi ho avuto l'occasione di testare la Microsoft Enterprise Library che è stata pubblicata da alcuni giorni, come segnalato da Lorenzo. L'occasione è venuta dal sito web che sto sviluppando e che vedrà la luce tra poche ore (spero).

Visto il post suddetto, e il fatto che per il sito avevo usato il DAAB 3.1, ho deciso di dare una chance alla Enterprise Library di sostituirsi al vecchio ApplicationBlock. Così, dopo una breve e "frugale" letta alla documentazione ho imbracciato il refactoring e ho cominciato l'opera certosina di ritoccare il codice nel modo più efficace.

La sorpresa è stata gradevole. E' davvero bastato sostituire poche righe di codice nello strato di logica dell'applicazione, e il sito è tornato a funzionare alla grande. Il nuove DAAB, astrae il database e si comporta a grandi linee come il vecchio Data Access Application Block, ma nel contempo fornisce un numero elevatissimo di nuove feature.

Prime fra tutte la gestione della configurazione che ora può essere suddivisa in file separati e può essere anche crittata. Inoltre il nuovo Application Block, così come tutti gli altri inclusi nella library crea una serie di Performance Counters che saranno di sicuro utilissimi in fase di debug e di tuning. L'unica accortezza è che nello sviluppo di un sito web si dovrà fare in modo che le chiamate ai Performance Counters non vengano eseguite, pena un errore causato dal tentato accesso al registry.

La MEL include al suo interno il supporto per database SqlServer, Oracle e DB2, la gestione automatica delle stringhe di connessione e una classe DatabaseFactory che leggendo dal file di configurazione "indovina" il provider di cui si ha bisogno.

Davvero un bel lavoro, talmente esteso che il paragone con il vecchio DAAB è davvero impressionante, ma la medesima sensazione la si ha anche sbirciando le altre librerie incluse nel progetto.

powered by IMHO 1.2

Elemosina in rete?

Ecco che la rete sputa fuori l'ennesima curiosità. Si tratta di dropcash, letteralmente un sito dove aprire la propria raccolta fondi, per uno specifico obbiettivo. E quello che più sorprende è che funziona. C'è chi è riuscito a racimolare ben 4000$ per spostare il proprio blog su un nuovo server...

http://www.dropcash.com/

powered by IMHO 1.2

EON Query Language

Trovo una segnalazione interessante al seguente post che illustra una libreria, denominata EON, ch consente di effettuare delle query su una gerarchia di oggetti in-memory, con una sintassi similare a quella di XPath.

Fonte: Sébastien Ros' Weblog - Querying over objects: just say EON

La cosa mi pare davvero interessante, se non altro perchè potrebbe essere un rimo passo nella direzione delo sganciarsi dal SQL.

powered by IMHO

Updater Application Block 2.0 Released

Segnalo che è stata pubblicata una nuova release del Updater Application Block, che Lorenzo aveva sostanzialmente "stroncato" nel workshop dello scorso dicembre. Ora bisogna vedere se i limiti che egli aveva segnalato sono stati in qualche modo superati.

Fonte: Check out latest drop of Updater Application Block!

Workspace GotDotNet: http://www.gotdotnet.com/workspaces/workspace.aspx?id=83c68646-befb-4586-ba9f-fdf1301902f5

powered by IMHO

Blog Software Breakdown

Nell'articolo linkato in coda a questo post è pubblicata una tabella che riassume le principali caratteristiche dei blog engine più conosciuti. A parte l'osservazione che la colonna che riguarda .TEXT è un po' imprecisa, ad esempio dove non indica che questo engine è compatibile con le MetaWeblog API oltre che esporre un proprio set denominato SimpleBlogService, devo rilevare che a quanto leggo IMHO è compatibile con quasi tutti gli engine riportati. Infatti, attraverso l'adapter per Blogger, o il MovableType praticamente tutti gli engine sono supportati.

Source: Blog Software Breakdown

powered by IMHO

Un caso Agile?

Stamane ho avuto una rivelazione. Ero in riunione con un cliente, a proposito di un progetto piuttosto importante, quando quest'ultimo ha fatto un'affermazione che a prima vista potrebbe sembrare banale, ma che ragionandoci sopra mi ha dato una sottile soddisfazione.

L'affermazione è la seguente: "All'inizio abbiamo scritto un documento, poi il modulo è stato realizzato, e ora stiamo riscrivendo il documento per adeguarlo al risultato". Questa frase, buttata li come una battuta, mi è rimasta in testa per tutta la giornata, e rimuginandoci sopra sono arrivato alla conclusione di poter essere contento di quanto è avvenuto.

Infatti, lo sviluppo di questo modulo applicativo, si è svolto proprio come sintetizzato dalla frase. Il documento iniziale era nulla di più che una semplice traccia sulla quale lavorare. Nello scrivere il codice perciò ho scelto di implementare il minimo possibile delle funzionalità e poi di rilasciare una prima versione che a quel punto è diventata il canovaccio sul quale il cliente ha cominciato a provare e a richiedere modifiche.

Così alla fine, il risultato rispetta solo in minima parte ciò che è stato definito nel documento iniziale, ma il feedback del cliente mi fa capire che egli è indubbiamente molto soddisfatto del risultato ottenuto che va molto aldilà delle sue aspettative.

Occorre però segnalare una caso. Il procedere in questo modo ha indubbiamente dilatato i tempi di sviluppo. Questa però è stata una scelta del cliente, che volendo avere l'applicazione il più possibile soddisfacente e completa ha scelto di non considerare il tempo una variabile importante e di posporre così la consegna del modulo.

Meglio non poteva andare: il cliente è contento, l'azienda anche e io ne ho ottenuto una buona dose di soddisfazione. Se questo si può chiamare Agile, allora non c'è dubbio che questa volta si è dimostrato vincente.

powered by IMHO

Internal Coding Guidelines

L'uso di linee guida nella scrittura del codice è da sempre una materia piuttosto dibattuta e aperta a mille interpretazioni. Oggi ho trovato un articolo di Brad Adams che illustra delle linee guida a mio parere ben fatte e motivate. 

Un esempio è relativo alla annosa questione del prefisso per le variabili membro: m_, s_, _ che tipicamente creano molte fazioni, e diciamocelo, sono veramente brutti da vedere nel codice. Brad suggerisce l'uso delle keyword this. o base. per evidenziare che ci si riferisce ad un campo membro.

Fonte: Internal Coding Guidelines

powered by IMHO 1.2

XP Book discussion group

Segnalo che in questo gruppo di discussione vengono affrontati i temi dell'XP programming con un moderatore di eccellenza. A quanto vedo infatti le risposte sono di Kent Beck in persona. Direi che vale la pena di iscriversi al feed perlomeno.

Fonte: Yahoo! Groups : xpbookdiscussiongroup

Nel gruppo Kent Beck affronta una delle pratiche dell'XP ad ogni settimana, con riferimento alla seconda edizione del suo libro che Marco Abis ci ha segnalato in un suo post.

powered by IMHO 1.2

Click of the week: Ghost in the fog.

 
Ghost in the fog. 18/01/2005 - ore 8:55

Microsoft Drops Appeal in EU

E di quest'oggi la notizia che Microsoft ha rinunciato ad appellarsi al giudizio che l'ha vista perdente nella causa contro l'Antitrust Europeo, in merito al software Windows Media Player.

La soluzione non dovrebbe sorprendere a mio parere. Infatti, è probabile che alla Microsoft abbiano giudicato un'inutile dispendio di energie e soprattutto di denaro, l'affrontare una nuova causa contro il pregiudizio che ha governato tutta questa vicenda fin dall'inizio.

Nella notizia che ho appreso da bink.nu, è riportato anche il seguente trafiletto:

Microsoft spokesman Jim Desler said the company began making Windows without the integrated media player available to computer makers last week at the same price that it charges for full-featured Windows.

Come era prevedibile alla Microsoft hanno accolto la sentenza producendo la versione senza Windows Media Player, ma come altrettanto prevedibile affiancandola alla vesione "full" al medesimo prezzo. Così, a parte i duri e puri che acquisteranno il prodotto WMP-less, tutti gli altri continueranno ad avere WMP come prima.

Fonte: Microsoft Drops Appeal in EU

powered by IMHO 1.2

ASP.NET 2.0: Espressioni <%$...%>

Chi ha provato a scrivere un'applicazione ASP.NET 1.0 globalizzata, ovvero che preleva le risorse testuali per il rendering della pagina da degli appositi file, si sarà reso conto che la questione è tuttaltro che semplice e lineare.

Ho appena scoperto che ASP.NET 2.0 introduce una nuova sintassi nei codeblock che risolve questo genere di problema piuttosto elegantemente.

<asp:Literal Runat="server"
  
Text="<%$ Resources:MyResources, MyText %>"/>

Questa riga è in grado di leggere una stringa dalle risorse ed assegnarla ad un Literal.

L'espressione <%$...%> supporta anche altre "keywords" oltre a resources: ConnectionStrings legge una stringa di connessione dalla configurazione, AppSettings legge una chiave dall'omonima sezione del web.config infine Version legge una parte del numero di versione dell'applicazione.

powered by IMHO 1.2

Google Video Search

Pubblicata la beta del nuovo servizio di Google. Si tratta di Google Video Search che consente la ricerca all'interno di migliaia di programmi televisivi. Ecco come inizia il disclaimer:

Our mission is to organize the world's information, and that includes the thousands of programs that play on our TVs every day. Google Video enables you to search a growing archive of televised content – everything from sports to dinosaur documentaries to news shows

Fonte: http://video.google.com/video_about.html

powered by IMHO 1.2

Strano periodo

Sarà l'inizio dell'anno, sarà che le feste se ne sono andate, sarà che il carnevale è un periodo balordo oppure semplicemente che il lavoro è tanto e il tempo non basta mai, ma da qualche giorno fatico a scrivere più di uno o due post nel mio amato weblog.

Strano periodo, quando mi siedo alla sera davanti al pc e penso a qualcosa, mi sembra che tutto sia inadeguato a essere reso pubblico in queste pagine.

Portate pazienza, ci sono e vi leggo. E' solo uno strano periodo.

Passerà.

powered by IMHO 1.2

Lavoro ingrato

Mi riferisco a quello che mi ha impegnato tutta la giornata di oggi. Si è trattato di una riunione fiume per valutare la mole di lavoro svolta da una azienda fornitrice (di cui ovviamente non farò il nome...) su un modulo applicativo di un software.

La domanda che mi continua a girare per la testa è: ma occorre essere in malafede per sviluppare solo una percentuale infima del lavoro dopo 2 mesi abbondanti oppure esiste qualche giustificazione che mi sfugge.

Lavoro ingrato comunque. Solitamente preferisco non ergermi a giudice del lavoro altrui, non fosse altro perchè umilmente penso: chi sono io per giudicare?

powered by IMHO 1.2

Virtual machine troppo visibili

Trovo assolutamente impagabile il lavorare utilizzando delle virtual machine che ospitano dei servizi che preferisco non installare sul computer ove sto lavorando. Non parlo solo delle versioni beta dei software, ma anche dei "server" un po' troppo pesanti o comunque di utilità temporanea per lo sviluppo di applicazioni ma che poi diverrebbero solo l'ennesima applicazione da disinstallare, con tutti i possibili strascichi cui questo può portare.

Attualmente ad esempio sto lavorando sul mio portatile, sul quale ho Windows XP Home Edition, utilizzando una virtual machine con Windows 2003 per poter sviluppare un sito in ASP.NET su IIS6.0. Tutto funziona veramente a meraviglia e riesco a lavorare veramente bene anche trattandosi di un server virtuale. La cosa che mi da un po' fastidio, è di avere sempre la virtual machine sulla taskbar. A mio parere sarebbe splendido se la macchina, una volta avviata si iconizzasse sula traybar e sparisse alla vista, lasciando libero il poco spazio della taskbar.

Arrivo addirittura ad ipotizzare che la gui della virtual machine non dovrebbe mai vedersi, se non in casi del tutto eccezionali, ma essere accessibile esclusivamente attraverso il protocollo RDP, come se si trattasse di un terminal server. Tanto comunque la gestione di un IIS o di Sql Server si può fare tranquillamente in remoto, senza necessità di usare il desktop della virtual machine.

Non ho ancora provato il Virtual Server, ma mi chiedo se non si comporti proprio così...

powered by IMHO

 

Crisi di gmail...

Mi capita di tanto in tanto, con un criterio che ancora non sono riuscito ad individuare, che quando chiudo Internet Explorer mentre sto su gmail, inizia una crisi pazzesca. Il browser, invece che chiudersi comincia ad aprire nuove istanze a go-go, senza che ogni tentativo di chiudere abbia alcun effetto. L'unica soluzione è di andare nel Task Manager e di killare il processo iexplore.exe.

L'impressione è che sia un comportamento anomalo di gmail, forse amplificato dal poupblocker di internet explorer, ma si tratta appunto solo di una sensazione, non confortata da alcuna prova.

Chissà se sono l'unico ad aver provato l'ebbrezza di gmail impazzito, oppure se la cosa è già di dominio pubblico. A me succede sia sul portatile che sul desktop.

powered by IMHO 1.2

Auguri!!!

Ci sono pochi momenti nella vita che sono carichi della stessa importanza e dello stesso stress di quello che sta vivendo oggi e soprattutto vivrà domani, uno dei blogger di UgiDotNet.

Simone Chiaretta domani si sposa.

A lui e a sua moglie vadano i miei migliori auguri di una felice vita assieme.

Non ho titolo per fare gli auguri a nome della comunità, me credo di essere nel giusto nel dire che l'augurio viene dall'intero mainfeed.

powered by IMHO 1.2

IMHO: Bug della versione 1.2.1846

Ho appena riscontrato un buggetto nella nuova release: nulla di grave, ma è un po' fastidioso perchè rende pressochè inutile la nuova feature di keyword substitution. Il problema risiede nella mancata sostituzione dell'url al path assoluto dei file delle emoticone.

Nulla di grave dive, si tratta di una beta e quindi queste cose possono succedere...

Stasera di patcha!

powered by IMHO 1.2

Entering ASP.NET mode...

Starting IIS 6.0... Starting SQL Server... All Subsystems working...

READY TO NEW PROJECT!

Si comincia con un nuovo progetto che come anticipato sarà sviluppato in ASP.NET. Aria per i miei polmoni informatici. Quindi stamane, pulizia della scrivania e poi via verso la nuova avventura.

powered by IMHO 1.2

IMHO 1.2.1846 with spell checker and...

Sono passati già 29 giorni da quando, in piena settimana Natalizia ho regalato a queste pagine la release 1.1 di IMHO. Oggi, ormai in un 2005 consolidato, eccomi a proporre la versione 1.2, decidendo di saltare a piè pari la precedente. Il motivo è presto detto, come ho già avuto occasione di anticipare in un precedente post, le nuove feature sono talmente tante che non me la sono sentita di rimanere inchiodato su una versione così bassa. Perciò eccomi a illustrare cosa c'è di nuovo nel mio IMHO.

Innanzitutto, il titolo di questo post anticipa che finalmente avremo dei post digitati per bene. Ho deciso di integrare NetSpell 2.1.7, nonostante le critiche che tempo fa avevo sollevato. In effetti a parte un freezing un po' fastidioso, in fase di crawling del dizionario, per il resto NetSpell si rivela molto preciso ed efficace. Perciò in attesa che le prossime versioni migliorino, approfittiamo da subito di questo utile strumento.

L'altra grande novità, è costituita dal sistema di sostituzione delle keyword, che è in grado di rilevare l'introduzione di una di esse mentre si digita e di sostituirla immediatamente. Perciò i pigri che non amavano usare l'ottimo l'emoticon formatter di Simone, ora non hanno più scuse per farcire i loro messaggi di faccine, ma anche per introdurre un numero indeterminato di keyword. L'unico limite è dato dalla potenza del proprio pc, dato che comunque le esse pur se elaborate con una certa intelligenza, vengono valutate ad ogni tasto premuto.

Infine, giusto perchè tre è il numero perfetto, ora i link a file residenti sul proprio pc vengono caricati nell'FTP indicato in configurazione alla stregua delle immagini. Questo mi ha dato l'occasione per migliorare un po' la finestra di gestione dei link dato che quella di default era un po' scarna. Ora è possibile gestire tutti i parametri del link, target, title e name oltre naturalmente all'href. Inoltre, dato che l'eleganza non guasta, IMHO si permette di indicare la dimensione del file caricato nel title, ove servisse.

Molti altri sono i miglioramenti: Il pulsante di save che consente di pubblicare immediatamente, l'allineamento giustificato e l'ottimizzazione cross-post dei file caricati. Quest'ultima la considero una feature davvero potente. il sistema è in grado di riconoscere la presenza di un file sull'ftp uguale a uno di quelli che si stanno caricando e perciò di linkare quello già presente. Questo anche se il nome del file è diverso!!!

Potrei continuare ancora per molto. Chiudo questo interminabile post informando tutti che finalmente questa è l'ultima volta che si sarà costretti a digitare i parametri di configurazione. Essi ora vengono salvati nell'IsolatedStorage e vengono recuperati in caso di reinstallazione.

powered by IMHO

ASP.NET hosting with SQL Server

Spesso mi sono sentito chiedere se esista un provider che fornisca hosting per pagine ASP.NET ad un costo accessibile, magari con un piccolo database SqlServer per fare qualche esperimento oppure per appoggiare un sitino personale senza troppe pretese.

Cercando qualcosa di simile, per ospitare il sito di http://imhoproject.org, grazie al caso meterializzatosi per mezzo di un bannerino in http://www.asp.net ho scoperto il provider che risolve (almeno per ora) questa questione.

Si tratta di http://www.dotnetcentral.com dove è possibile affittare uno spazio a partire dalla ridicola cifra di 2,99€ al mese comprendente 5MB di spazio disco e 2 MB di SQL Server. Personalmente ho deciso di provare il pacchetto superiore che con 7,99€ mi fornisce 100MB di disco e 50MB di Sql Server e perfino una casella di posta accessibile per mezzo di OWA.

Non si può dire che il servizio sia eccellente, infatti il completissimo pannello di controllo all'inizio è un po' ostico e lento, ma con il tempo ci si fa l'abitudine e si riesce a gestire veramente tutto. Il controllo è molto esteso. Va dal DNS ai servizi WWW e FTP, alle utenze, comprendendo estensioni di FrontPage (prontamente disabilitate...) e una console di accesso a SqlServer piuttosto efficace, costituita dalla myLittleAdmin.

Personalmente ho trovato questo servizio molto efficace, anche se nonostante vari solleciti al supporto tecnico, per un problema di configurazione, tuttora non ho ricevuto alcuna risposta e ho dovuto "trafficare" svariate ore dalla mia ADSL a consumo per risolvermelo. Chi non è pratico di IIS & co è avvertito!

powered by IMHO

Io non... ma...

Ultimamente sento ripetere spesso questo schema, in riferimento a svariate cose:

Io non ... ma ...

Ad esempio nei primi puntini si può mettere un riferimento a Microsoft, oppure a Berlusconi e nei secondi una presa d'atto che qualcosa di buono ci sia.

Trovo che questa moda sia un segno dei tempi. Se è vero come è vero che oggi la discriminazione miete le sue vittime con facilità, questa forma verbale è una sorta di prima difesa verso essa. Il pregiudizio che è fomentato verso alcuni simboli, eletti come tali dai media o dalla moda, crea delle classi sociali a cui molti sentono il bisogno di non appartenere. Ecco quindi che escono cose di questo tipo.

E tristemente questo è il segno che la classe di cui invece si vuole far parte è quella che discrimina. Altrimenti non ci sarebbe la necessità di fare dei "distinguo".

powered by IMHO

Rilasciato dasBlog 1.7

Gli autori di dasBlog, uno dei popolari engine di blogging realizzati in .NET hanno annunciato che la versione 1.7 del loro engine è stata resa pubblica. Tra le novità vi segnalo che dasBlog supporta nativamente la generazione di immagini CAPTCHA per il filtro dei commenti. Per intenderci la HIP che abbiamo aggiunto da poco al .TEXT di ugidotnet.

newtelligence dasBlog Community Edition 1.7.5016.1 RELEASED!

powered by IMHO

Click of the week: Parco del fiume Sile

 


Parco del fiume Sile. 18/01/2005 - ore 8:45

 

Click of The Week

Ho deciso di aprire una nuova categoria. Il nome, "Click of the Week" tradisce il contenuto che per genere appartiene alla mia passione per la fotografia. Tutte le immagine che posterò in questa categoria sono scattate da me con la mia piccola-grande digitale Nikon Coolpix 880, di cui sono felice possessore da almeno 3 anni.

Spero di riuscire a mantenere il ritmo, determinato dal titolo stesso della categoria, ovvero il post di una immagine a settimana, ma anche se non ci dovessi riuscire sarà solo per mantenere alto lo standard qualitativo delle immagini.

Nel prossimo post, la prima immagine.

powered by IMHO 1.1

Ed è neve!!!

Finalmente, dopo lunga attesa, noi incoscienti amanti della neve che cade siamo stati accontentati. Da un paio d'ore, qui a Treviso nevica. (ma ho notizie simili anche per Mestre). Una neve seria, di quelle che vengono per rimanere un poco. Le macchine in parcheggio si sono improvvisamente trasformate in bianchi e soffici cuscini e il panico si è diffuso.

Ora bisognerà vedere come arriverò a casa, dato che i miei 20 Km d'oro si sono trasformati in 20 Km di ghiaccio. Ma dopo le 9 ore passate tra Bologna e Padova un paio di anni fa, non mi fa più paura nulla. Lo so, l'ho detto sono incosciente, ma che ci volete fare, la mia anima bambina ha bisogno di queste cose.

powered by IMHO

Weatherpixie update

Sono sbigottito dal gadgettino che ho messo in home page al mio weblog. Parlo di Weatherpixie, qull'immaginina che mostra una rappresentazione del tempo atmosferico presente nella località per la quale è configurato.

Sono sbigottito perchè ogni volta che lo guardo mi pare di sbirciare fuori della finestra. In questo momento ad esempio indica nebbia, e se guardo fuori il quartiere è avvolto in una fitta coltre lattiginosa. Sarà forse che quelli testuali non attirano l'attenzione come questo, ma raramente ho trovato una tale precisione.

Bene. Si è meritato un'altra settimana di permanenza...

powered by IMHO 1.1

Forse si rASPira...

Sono contento. Ho da poco saputo che probabilmente i prossimi progetti sui quali dovrà lavorare saranno realizzati in tecnologia ASP.NET.

Ormai sono mesi che non tocco più una pagina ASP, per dedicarmi totalmente allo sviluppo di una applicazione WindowsForms e ormai ne sentivo proprio la mancanza, senza considerare che nel frattempo anche la sete di Sql Server ha raggiunto livelli inenarrabili.

Non è una mania, sono che trovo molto più avvincente lavorare su un prodotto con interfaccia web piuttosto che ad un gestionale classico. Sarà il fascino che il protocollo http regala alla gestione dello stato, oppure la forzata segmentazione della logica in milleeuno programmini (chiamateli pagine, ma programmini rimangono) che complica le cose, ma io sono nato web... e se me lo tolgono mi viene subito una crisi da mancanca di ossigeno.

powered by IMHO

Snow things

Lanciato a valanga, con mia figlia su un bob preso a noleggio, stamane ho trascorso una bella giornata nelle montagne del friuli. Le nevi erano quelle di Piancavallo, una bella cittadina incastonata in una valle ad un tiro di schioppo da Aviano.

Nulla a che vedere con quelle che io chiamo amabilmente "le mie montagne", riferendomi alle irripetibili cime del Cadore, peraltro senza potermi meritare l'aggettivo di "montanaro", ma comunque un bel posto dove passare un domenica con gli amici, e perchè no una vacanza invernale.

Le due ore di macchina che mi sono state necessarie, sono sate ampiamente ripagate dalla mancanza di code cui il sovraffolamento tipicamente costringe in località più blasonate. E per gli amanti dello sci, delle piste con fiocchi, degne dei campionati che spesso vi si tengono.

La giornata è trascorsa così, lontano dal pc, in equilibrio sul ghiaccio delle strade, a folle velocità giù per un pendio, e respirando l'aria sana che solo la montagna di inverno sa regalare. La confusione del noleggio, l'affollamento delle piste, la fatica di arrampicarsi sulla salita per regalare al mia bimba un'altra discesa sono ripagate dal suo sorriso felice per esser riuscita a mettere le mani su questo inconsueto fenomeno atmosferico.

powered by IMHO 1.1

IMHO: Anche su aspitalia.com

Qualcuno si è dilettato ad interfacciare IMHO con la community cugina, AspItalia.com. Me lo ha segnalato Mighell.

http://blogs.aspitalia.com/rickyvr/post849.aspx

Un grazie a Riccardo Golia che ci ha messo l'olio di gomito...

powered by IMHO 1.1

Una questione di Legalità.

Come ormai risaputo, nella giornata di ieri, 13/01/2005, la corte costituzionale ha dichiarato inammissibile il referendum che voleva abolire nella sua interezza la famigerata legge sulla fecondazione assistita, uno dei testi più biechi che l'attuale governo abbia mai promulgato.

Questo fatto, a mio parere pone due questioni; Innanzitutto occorre capire che la dichiarazione di inammissibilità del quesito, non ha alcun fondamento giuridico, ma è al limite resa possibile da un "prassi", che "non è legge", come bene bisogna tenere presente. Il testo costituzionale, all'articolo 75 recita così:

Art. 75 . È indetto referendum popolare per deliberare l'abrogazione, totale o parziale, di una legge o di un atto avente valore di legge, quando lo richiedono cinquecentomila elettori o cinque Consigli regionali.
Non e ammesso il referendum per le leggi tributarie e di bilancio, di amnistia e di indulto, di autorizzazione a ratificare trattati internazionali.
Hanno diritto di partecipare al referendum tutti i cittadini chiamati ad eleggere la Camera dei deputati.
La proposta soggetta a referendum è approvata se ha partecipato alla votazione la maggioranza degli aventi diritto, e se è raggiunta la maggioranza dei voti validamente espressi.
La legge determina le modalità di attuazione del referendum.

Ora è chiaro che il referendum sulla fecondazione assistita, non riguarda la materia tributaria, di amnistia o di indulto e tantomeno un trattato internazionale. Perciò bisogna prendere atto del fatto che la corte costituzionale ha emesso un verdetto incostituzionale.

La prassi che poco fa citavo, apre la strada alla seconda questione. Secondo una prassi, ereditata dai giorni bui della prima repubblica (saranno mai questi giorni luminosi?), la consulta dichiara inammissibile un referendum qualora la sua applicazione porti al cosidetto "vuoto legislativo", ovvero crei una mancanza di legge. Questa argomentazione è confutata da due questioni. Innanzitutto non esiste mai un vuoto legislativo, in quanto perchè un referendum abrogativo abbia effetto esso deve essere confermato da una successiva legge del parlamento che perciò potrà "normare" le eventuali questioni che lo richiedessero, probabilmente accogliendo il volere popolare. Nella precedente citazione, l'ultima riga è chiarissima su questo punto.

In secondo luogo, bisogna tener presente che la costituzione non cita mai alcun vuoto legislativo, perchè il referendum, nella sua natura di strumento "abrogativo" dovrà per forza di cose creare una mancanza di legge. Poniamo ad esempio che domani il governo promulghi una legge che consente l'omicidio. La prima cosa che verrebbe in mente è di raccogliere le firme per un referendum, salvo che poi la consulta potrebbe dichiararlo inammissibile perchè la sua applicazione creerebbe un "vuoto legislativo". A qualcuno importerebbe qualcosa di questo vuoto?

Ora, la questione è molto semplice. La corte costituzionale si è comportata in modo del tutto incostituzionale, anzi addirittura anticostituzionale ovvero contro la costituzione. Questo a mio parere è gravissimo e foriero di violazioni dei diritti del cittadino sempre più pesanti e totalitarie. E' per questo motivo che si dovrebbe pretendere che i giudici della consulta si dimettano con effetto immediato, perchè ormai il loro lavoro non è più a tutela dei cittadini, ma a tutela dell'establishment e del potere.

powered by IMHO

Uno shortcut per chi usa Oracle

Se vi interessa sapere il significato di uno dei migliaia di codici di errore ORA- di Oracle aggiungete questo shortcut alla toolbar di MSN:

@ora,http://$w.ora-code.com/

basterà digitare "ora" seguito dal codice di errore per avere una pagina esplicativa dal sito http://www.ora-code.com

powered by IMHO

SQL Injection Attacks by Example

Dal blog di Roy Osherove ho scoperto un eccellente articolo sul SQL Injection, la dannosa pratica che permette di prendere possesso del database di siti o applicazioni realizzate male.

Articolo: SQL Injection Attacks by Example

La lettura è caldamente consigliata a chiunque scriva applicazioni web, perchè per la loro natura sono le più esposte a questo tipo di attacchi.

Infine un consiglio: fare uso dei SqlCommands e dei Parametri mette al riparo da gran parte dei possibili attacchi di Sql Injection.

powered by IMHO

Un altro passo contro lo spam

Mighell, con cui ieri sera abbiamo avuto uno scambio intenso al messenger, per risolvere qualche problemino, quest'oggi informa di aver installato con successo la HIP per .TEXT.

Il problema riscontrato deriva dall'ordine di installazione degli Handlers nel web.config. Dato che .TEXT installa già alcuni handlers è opportuno che quello che genera l'immagina CAPTCHA sia registrato prima di tutti gli altri.

Dannati spammers... avrete vita dura!

powered by IMHO

Human Iteraction Proof for .TEXT

Finalmente eccomi a pubblicare il lavoro svolto, e raffinato grazie alla collaborazione preziosa di Stefano Demiliani, che ha messo a disposizione il suo weblog in qualità di vittima sacrificale. Nel file che è possibile scaricare al termine del post, si può trovare tutto il necessario per aggiungere con semplicità un controllo anti-spam molto efficace e molto personalizzabile.

L'installazione è molto semplice e non richiede la ricompilazione di .TEXT:

  1. nello zip è riprodotta la struttura del folder web di dottext perciò è sufficiente porre i file così come vengono estratti nella relativa cartella
  2. occorre modificare il web.config per inserire il riferimento ad un httphandler che genererà l'immagini CAPTCHA. L'handler deve per forza essere il primo della lista tra tutti quelli già installati in .TEXT (grazie a Mighell per la segnalazione)
  3. in seguito bisogna modificare le skin personalizzate per aggiungere lo usercontrol all'interno del file PostComment.ascx, così come è indicato con alcuni commenti nello skin "white"

La licenza di questo controllo è di tipo D.W.Y.W.B.P.A.L.T.T.P. (Do whatever you want but post a link to this post)

E per un po' lo spam ce lo siamo tolti dai piedi.

Download: dottext_hip.zip (72KB)

powered by IMHO 1.1

Bocciato il referendum: Sentenza eversiva.

Purtroppo, la corte costituzionale ha dimostrato ancora una volta la sua incostituzionalità, bocciando il quesito sull'abolizione totale della legge sulla fecondazione assistita. Accolti gli altri 4 quesiti, di cui 3 presentati dai Radicali Italiani per l'abolizione parziale.

http://www.radicali.it/view.php?id=30898

powered by IMHO

Data Access Application Block - Il primo della serie

Su cortese segnalazione di Lorenzo, vi annuncio che è in edicola il primo dei miei articoli appartenenti alla serie sugli Application Blocks, pubblicati da Infomedia su Computer Programming. Questo mese si parla di Data Access, con un utile esempio su come creare un piccolo ORM homemade che fa uso di reflection e stored-procedures oltre che naturalmente dell'Application Block.

Guai a chi non lo compra!

powered by IMHO

Hip, Hip, Hurra!

Quella di ieri è stata una nottata "pregna". Sul filo del telefono, hanno transitato una serie di email tra me e Stefano Demiliani, che alla fine è riuscito ad installare con successo, nonostante alcune mie dimenticanze, il controllo HIP (CAPTCHA) per il suo weblog.

Blog Spamming Fight - Attempt II

Rimane un problemino che spero di poter risolvere, dovuto alla fortissima distorsioni di alcune immagini. La speranza è che smanettando un po' con il sorgente si possano limare un po' i parametri.

powered by IMHO

Gmail Server Error

Ecco come Gmail mi informa che c'è un errore...

Server Error

Gmail is temporarily unavailable. Cross your fingers and try again in a few minutes. We're sorry for the inconvenience

Spiritosi...

powered by IMHO 1.1

I risultati di MSN Search in RSS

Un post nel weblog di MSN Search mi ha rivelato una interessante feature di MSN Search. Inviando un URL appositamente formattato è possibile ottenere i risultati della ricerca in un formato RSS.

Ecco due esempi:

Ricerca in MSN: http://beta.search.msn.com/results.aspx?q=andrea+boschin&format=rss

Ricerca nelle News: http://beta.search.msn.com/news/results.aspx?q=berlusconi&format=rss

Uno strumento interessante per chi vuole aggiungere un piccolo servizio news nel proprio sito.

powered by IMHO

Weatherpixie

The WeatherPixieHo scovato un altro simpatico giocattolino da attaccare nel weblog. Si chiama http://weatherpixie.com/ e si aggiorna mano a mano che scorre il tempo e che le condizioni atmosferiche mutano. Credo sia basato sul tempo degli aeroporti del mondo, perchè nella configurazione sono riuscito a trovare anche Istrana, una località poco nota vicino a casa mia, dove si trova proprio un Aeroporto.

 

 

 

powered by IMHO

Yahoo! Desktop Search Beta

E alla fine anche Yahoo si è aggiunto alla battaglia dei Desktop search, con più di 200 tipi di file indicizzati!!!

Yahoo! Desktop Search Beta

Sotto a chi tocca.

powered by IMHO

BackgroundWorker for Compact Framework 1.0

Daniel Moth, MVP per il Compact Framework, ha pubblicato il BackgroundWorker per Compact Framework 1.0 . Sbirciando nel suo weblog è possibile trovare anche un esempio di come utilizzarlo.

powered by IMHO

.NET Fusion Workshop

Una delle feature di maggior rilievo del Framework .NET è quella che consente di evitare il problema conosciuto sotto il nome di "Dll Hell". Fusion, così si chiama il meccanismo di ricerca e caricamento degli assembly ha introdotto un sistema molto flessibile per la definizione di un assembly e per il suo caricamento e versioning.

Nell'articolo Fusion Workshop, si può trovare una esauriente e dettagliata spiegazione di come funziona questo meccanismo.

powered by IMHO

Hip hip...

Stanotte, fino circa alle 2:00 ho lavorato sul problema della HIP nelle pagine di .TEXT di UgiDotNet. Alla fine ho realizzato una bozza del sistema, che mi pare possa funzionare bene e l'ho passata a d Andrea Saltarello, per avere un suo parere e se la cosa funziona ovviamente installarlo.

La struttura di .TEXT, come segnalato da Davide in un post di stamattina, mi ha convito ad usare il seguente meccanismo per realizzare la protezione:

  1. ho basato il lavoro sul componente descritto in MSDN in questo articolo
  2. ho creato uno UserControl che contiene una Immagine, una textbox e un validatore. Lo usercontrol è del tutto autonomo, nel senso che genera automaticamente la sequenza di lettere e cifre da rendere nell'immagine, valida il contenuto della textbox e visualizza il messaggio di errore quando serve.
  3. la sequenza di lettere e cifre è realizzata prendendo i primi 6 caratteri di un Guid generato con System.Guid.NewGuid()
  4. Sono intervenuto su tutti gli skin di default, inserendo un riferimento al mio usercontrol nella giusta posizione. A questo la form accetta il commento solo se l'immagine e la texbox contengono la medesima stringa, in caso contrario genera una nuova stringa e chiede che la validazione sia effettuata nuovamente, senza perdere il testo del commento imputato.
  5. Alla fine ho passato tutto ad Andrea che quando avrà un po' di tempo gli darà un'occhiata. Lo zip, che al termine del lavoro renderò pubblico per gli altri weblog che usano .TEXT, contiene gli assembly del generatore di HIP, tutte le UI delle skin e quella dello UserControl. Lo UserControl non ha un codebehind, ma usa uno script inserito in calce all'HTML per consentire una facile customizzazione della generazione della stringa di validazione che al momento corrisponde ad una riga di codice.

Spero che tutto funzioni a dovere e che Andrea trovi il tempo di installarlo, perchè i dannati spammer continuano a rompere...

powered by IMHO

.TRAQ: Interventi sul draft

Mi aspettavo qualche commento in più a proposito della bozza di documento che ho pubblicato lo scorso 8 Gennaio, ma è probabile che la data abbia impedito a molti di venire a conoscenza della pubblicazione. Perciò eccomi a segnalare nuovamente l'evento.

I commenti che sono pervenuti sono tutti molto interessanti e non mancherò di integrarli nella prossima release, tuttavia ritengo sia necessario ancora qualche giorno, nella speranza che le segnalazioni si moltiplichino, prima che io mi rimetta a lavorare per integrare le segnalazioni.

Invito chi legge ad approfittare di questi giorni per dare il proprio contributo...

powered by IMHO

IMHO compatibile con MetaWeblog API

Mentre smanettavo sull'installazione di .TEXT, per realizzare la Human Interactive Proof sui commenti, stasera ho scoperto che .TEXT espone anche le MetaWeblog API che in un post di pochi giorni fa avevo citato come possibile sviluppo futuro di IMHO.

Un veloce test, mi ha regalato la soddisfazione di sapere che IMHO è già compatibile con tali API per mezzo dell'adapter di Blogger. Infatti le Blogger API sono un subset delle MetaWeblog API e quindi la compatibilità era quasi scontata.

Chi volesse connettersi a .TEXT con le MetaWeblog API non dovrà fare altro che:

Comunque non cambia nulla...

powered by IMHO

Volontario nella guerra allo spam

Visto il post di Lorenzo e considerato la quantità spropositata di SPAM che ho cancellato in questi ultimi 7 giorni, ho deciso di immolarmi nella battaglia al blog-spam.

Perciò se Andrea Saltarello ritiene che non ci siano problemi di sorta, considerati gli impegni che probabilmente impediscono di farlo a lui stesso, mi offro volontario per modificare la form di commenti di .TEXT ed aggiungerci una Human Interactive Proof, così come si può vedere nel post che ho linkato stamattina.

Datemi un moschetto che mi batterò all'ultimo sangue...

powered by IMHO

WebParts and Cross-Page Connections

Le WebParts che faranno parte della prossima versione di ASP.NET 2.0, offrono l'occasione di implementare un framework di connessione cross-page che consenta a delle WebParts Consumer, di condividere informazioni provenienti da un Producer. L'articolo che segnalo è una lettura interessante in merito, con tanto di codice di esempio.

Fonte: WebParts and Cross-Page Connections

Interessante notare che in fondo alla pagina di queso post si può vedere implementato un eccellente metodo anti-spam che fa uso delle HIP.

powered by IMHO

1/2 kilo di sapore

Sono appena tornato, reduce da un'impresa titanica. Ho divorato, letteralmente, una costata da 1/2 Kilogrammo che si è disciolta nelle mie fauci come solo il burro saprebbe fare, ovviamente dopo aver gustato un eccellente antipasto a base di affettati paradisiaci...

Chi mi ha conosciuto si è subito reso conto che imprese di questo tipo non mi sono insolite, ma davvero questa volta il titano che è in me si è dovuto esprimere al meglio della proprie possibilità.

Ora sono sul divano a digerire, con la lacrima di coccodrillo che mi riga la guancia, ma vorrei lasciare un indirizzo, se a qualcuno capitasse di passare dalle parti di Asolo:

Ristorante "Da Vanore"
S.Apollinare - Via Loreggia, 17
Asolo, TV
Tel 0423 952 279

Merita.

powered by IMHO 1.1

IMHO: Come si pronuncia?

Ultimamente mi trovo sempre più spesso a discutere con amici e conoscenti di IMHO e mi è capitato più di una volta di trovarmi in imbarazzo nel pronunciare in modo comprensibile il suo nome. Immancabilmente, quando devo pronunciarlo, mi capita di soffermarmi un istante per capire qual'è la giusta pronuncia.

Quando poi lo dico, 9 volte su 10, la risposta è un "comeeee?", oppure un "immo che?". Ricordo ancora con un lieve imbarazzo quando Luca Minudel, mi ha citato durante una sua sessione riferendosi al programma pronunciandone per esteso il nome, "In my humble opinion", e lasciandomi interdetto per non aver immediatamente compreso che si riferiva a me.

Se il nome del programma, da un punto di vista meramente internet è decisamente indovinato, non credo di poter dire lo stesso dal punto di vista dialettico. Perciò ho pensato di definire per bene, una volta per tutte come si pronuncia, così da sgombrare la strada dal problema.

La mia idea è che le 4 lettere che compongono la sigla si debbano sentire tutte. Perciò credo che IMHO vada pronunciato IM-HO mettendo un lieve accento sulla H in modo da renderla evidente. Completamente bandite tutte le forme del tipo "IMMO" o "IMO".

IM-HO come se si dovesse dire IO-HO ma con la M. E se poi proprio non viene ricordiamoci che "Instant Blogger" va benissimo!

powered by IMHO 1.1

.TRAQ: Disponibile il primo draft

Finalmente, a distanza di 1 mese e mezzo dalle prime schermaglie che hanno dato il via all'idea di un progettone open source italiano fatto in .NET, posso finalmente annunciare che il primo draft, scritto totalmente in lingua Inglese, è disponibile.

Il documento, che si può scaricare qui, in 5 capitoli per un totale di 15 paginette, descrive a grandi linee le idee che sono state discusse nei primi post e si permette anche di descrivere una piccola struttura dell'applicazione.

Oltre alla raccomandazione di lasciare correre tutti gli strafalcioni in inglese che sicuramente vi troverete, prego di darne una breve lettura e di farmi pervenire il numero maggiore di feedback possibili come commenti a questo post. L'idea è quella di aprire una discussione per vedere dove occorre modificare la rotta del progetto e quali sono le idee che non sono state riportate.

Considerate comunque che il documento non entra nel dettaglio delle specificità delle varie componenti del progetto. Il suo scopo è semplicemente di fissare le idee e di permettere di iniziare a strutturarlo.

Buona lettura.

powered by IMHO 1.1

Il blog di Luca Coscioni

Con gioia apprendo che esiste un blog di Luca Coscioni .

Luca è il presidente della omonima associazione ed è tra i promotori del referendum sulla fecondazione assistita di cui spesso ho avuto modo di dissertare in queste pagine. Ho un'enorme stima in questa persona che dimostra come la forza interiore sia di gran lunga più potente di quella fisica. Luca infatti è affetto dalla Sclerosi Laterale Amiotrofica e scrive i suoi post, assieme ai suoi interventi e discorsi aiutato da un computer.

Come sapete sono un fervente sostenitore di questa battaglia e non mancherò di fare eco ai suoi post nel mio "umile" weblog personale. Inutile dire che il link lo trovare anche nel mio blogroll.

powered by IMHO 1.1

NotifyIconAdv Update

La NotifyIcon, che tempo fa avevo rilasciato con un articolo, ha subito la medesima sorte del provider per Isolated Storage che ho rilasciato stamane.

E' possibile scaricare il sorgente completo dal sito di Sourceforge e anch'essa ricade sotto i termini della Common Creative Public License.

Ovviamente chi ne ha ricevuto/scaricato una versione precedente sotto GPL o LGPL continuerà a poterne fruire sotto i termini di quelle licenze.

powered by IMHO 1.1

IsolatedStorage provider per Configuration Management Application Block

Sviluppando le nuove feature di IMHO, mi sono trovato a dover estendere il Configuration Management Application Block di Microsoft. L'estensione che ho creato permette di utilizzare L'IsolatedStorage per rendere persistenti le informazioni di configurazione in formato XML, anche crittato e firmato.

Ho pubblicato la libreria e il relativo sorgente all'interno del progetto IMHO, presso Sourceforge. La libreria consta di una classe IsolatedXmlFileStorage realizzata come un provider di storage per l'application block. Essa può essere facilmente collegata ad una applicazione semplicemente modificandone il file di configurazione.

Ecco uno spezzone di codice:

<applicationConfigurationManagement defaultSection="configFile">
    <configSection 
name="configFile">
        <configProvider 
            
assembly="Elite.ApplicationBlocks.ConfigurationManagement,Version=1.0.1833.0,Culture=neutral,PublicKeyToken=null"
            
type="Elite.ApplicationBlocks.ConfigurationManagement.IsolatedXmlFileStorage"
            
file="app.config"
            
signed="true"
            
encrypted="true"/>
        <protectionProvider
            
assembly="Microsoft.ApplicationBlocks.ConfigurationManagement,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null" 
            
type="Microsoft.ApplicationBlocks.ConfigurationManagement.DataProtection.DPAPIDataProtection"
            
hashKey="Ae5+5644aB=" />
    <
/configSection>
<
/applicationConfigurationManagement>

Non appena il sito http://www.imhoproject.org sarà pronto, questa libreria e le altre saranno spostate in una apposita sezione del sito.

La licenza per la libreria è la Common Creative Public License

powered by IMHO 1.1

IMHO: A presto la prossima release

Lo devo dire. Ho appena concluso l'implementazione di tutte le nuove feature che avevo previsto per la prossima release di IMHO. Se mi avanza un po' di tempo domani ne avrei un'altra che però non è fondamentale.

Ora le novità sono così tante che sono indeciso sulla versione da dare al software. 1.1 mi sembra poco. Passando direttamente alla 1.2 qualcuno se ne avrebbe a male?

Eccoo le novità:

  • Upload automatico dei file oltre che delle immagini
  • Gestione dei link potenziata (gestione del target e del name)
  • Ottimizzazione cross-post dell'upload dei file
  • On-the-fly keyword replacement
  • Gestione completa delle keywords
  • Spell checker con 9 lingue
  • Persistenza della configurazione su IsolatedStorage (multiuser)
  • Mantenimento impostazioni all'upgrade

Pant, pant, ora iniziano i test.

powered by IMHO 1.1

Lo sapevate che: La chiocciola in C#

Quello che mi è successo stamattina mi ha incoraggiato ad iniziare una nuova "rubrica" nel mio weblog, dedicata a tutte quelle cose che, a meno che non ci si legga il manuale fino all'ultima virgola (come peraltro bisognerebbe fare), si arriverà a conoscere per pura coincidenza.

Il primo post riguarda l'uso del carattere chiocciola in C#. Tutti sapranno che quando si scrivono delle stringhe in C#, anteporre la chiocciola consente di adottare una diversa politica di escape.

Così mentre questo non è consentito:

string a = "d:\myfolder";

Con l'uso della chiocciola diventa possibile:

string a = @"d:\myfolder";

Fin qui nulla di nuovo, senonché stamattina stavo facendo qualche test con il DOM del MsHTML control e mi sono imbattuto in un uso curioso ma utilissimo della chiocciola che sinceramente non mi era mai capitato di incontrare.

Digitando la seguente stringa:

int key = this.DOM.parentWindow.event.keyCode;

Mi sono trovato automaticamente una cosa del genere:

int key = this.DOM.parentWindow.@event.keyCode;

Di primo acchito ho creduto di aver digitato male, non sono esattamente un dattilografo, alla tastiera. Ma rimuovendo la chiocciola evidentemente la parola chiave "event" è stata sottolineata evidenziando l'errore. Personalmente sono abituato a evitare come il male l'uso delle parole chiave nella nomenclatura del mio codice, ma riconosco che, accedendo ad esempio al DOM dell'HTML che è fatto per il Javascript sarebbe impossibile farlo senza questa scappatoia.

Naturalmente non pago ho fatto un po' di prove:

myObject.@public
myObject.@fixed
myObject.@protected
...

Consiglio: non chiamate mai public, fixed o protected un membro di una vostra classe. Non occorre dirlo, ma magari è utile ricordarlo.

Curiosità nella curiosità, il Syntax Highlighter di SharpDeveloper non riconosce la chiocciola come carattere di escape valido. Infatti, mentre VS.NET indica le keyword in nero quando viene preposta la chiocciola, per l'IDE di SharpDeveloper (che come molti sapranno è il fulcro del Code Snipped Editor di IMHO), la lascia in blu. Sarebbe interessante sapere se si tratta di una dimenticanza oppure se anche agli sviluppatori di questo ambiente di sviluppo sia sfuggita questa utile feature.

Sono ovviamente andato a vedermi l'SDK, ma non sono riuscito a trovare alcun riferimento a questo uso della chiocciola. Appena ho un attimo approfondirò le specifiche di C#, a meno che non ci sia già qualcuno che mi segnala dove trovare questo argomento.

powered by IMHO 1.1

CodeDom #1

Mi sono spesso chiesto quale dei due modi di scrivere fosse migliore:

// codice 1

if ( a == 0 )
    
return "OK";
else
    return 
"KO";
    
// codice 2

if ( a == 0 )
    
return "OK";

return "KO";

In realtà poi a intuito mi sono abituato ad usare il modo 2.

Oggi, lavorando un po con il CodeDom ho scoperto una cosa interessante: se si usa il modo 1 il compilatore automaticamente lo trasforma in 2. Probabilmente questo deriva dal fatto che l'IL generato è comunque il medesimo, ma potrebbe anche essere che si tratti di una ottimizzazione. A questo non so dare risposta, dato che non conosco bene l'IL.

powered by IMHO

Open source dumping.

Interessante discussione, si è svolta pochi minuti fa, attorno alle scrivanie dello sviluppo. La domanda che ne è emersa è proprio la seguente:

Che differenza c'è tra l'open source e la pratica del dumping?

Per chi non lo sapesse, il dumping è quella pratica, tipicamente messa in atto dai grossi centri commerciali, che mettono in vendita merci ad un prezzo inferiore a quello cui esse stesse lo acquistano. L'obbiettivo finale del dumping è quello di ammazzare la concorrenza per ottenere una posizione dominante nel mercato.

Un po' la stessa cosa che sta succedendo con l'open source. Dato che esiste un prodotto "gratuito", molte aziende preferiscono scegliere questo invece che la controparte "remunerata", causando così un fenomeno simile a quello del dumping, ove imprese fiorenti si trovano in difficoltà perchè non riescono a battere la concorrenza nemmeno con prodotti obbiettivamente di migliore qualità.

Forse sarebbe il caso che qualcuno ci pensasse. Se un giorno ci trovereme tutti a scrivere codice "aggratis" oppure a fare barcamenarci facendo assistenza al cliente, sarà meglio che non si lamenti di aver lavorato a sbafo sulle spalle di ottimi programmatori open-source che non hanno mai visto il becco di un quattrino per le spremute di menigi cui si sono sottoposti.

Ed è anche questo uno dei motivi per cui vorrei dare ai miei lavori opensource una licenza che consenta l'uso e l'approfondimento del prodotto al privato cittadino che non può permettersi l'acquisto di un equivalente commerciale, ma che obblighi una iniziativa commerciale a sottostare a delle precise regole di mercato che passano immancabilmente dal riconoscimento del lavoro svolto al progettista e sviluppatore di un software.

A mio parere occorre tenere ben presente questi concetti quando si parla di opensource, perchè spesso dietro la bandiera della libertà, si nascondono le mire monopolistiche di grossi nomi dell'informatica che hanno buon gioco sfruttando ilpregiudizio che fomentano nella gente.

powered by IMHO

Tutta colpa di Microsoft!

Leggo con piacere questo post  di Gabriele e colgo l'occasione per dire la mia sull'argomento. La colpa a mio parere è proprio di Microsoft, ma non nel senso di aver dato modo a virus e hacker di imperare nella rete grazie al falle nella sicurezza dei suoi prodotti, ma semplicemente di aver consentito anche agli sprovveduti di accedervi.

Se i pc di oggi fossero ancora alla stregua di una workstation Unix, sono certo che di virus non ce ne sarebbe l'ombra, o comunque non sarebbe possibile dare loro una così vasta diffusione. I sistemi operativi Microsoft hanno avuto certamente il pregio di consentire alla massa l'utilizzo di tecnologie che tempo fa erano riservate ad una casta ristretta, perciò oggi, le cellule esposte al contagio sono decisamente molte e molto fertili.

Per non parlare poi del fenomeno del phishing. Rimango davvero sconcertato nel sapere che sono così tante le persone che ci cascano, ma se poi penso a fenomeni mediatici quali Vanna Marchi, allora mi sembra che Internet ancora una volta sia additata inopinatamente. Come per la pedofilia, anche in questo caso bisogna riconoscere alla rete la capacità di far venire allo scoperto un problema che esisteva già da tempo, e magari consentirne un più facile controllo.

powered by IMHO

...But I have to admit, so far IMHO is looking very cool!

Attendo con ansia la recensione che Dene Schonknecht ha promesso di preparare confrontando w:bloggar e IMHO...

Blog Authoring Tool search gets interesting....

Cosciente del fatto che a IMHO manca ancora qualcosa...

powered by IMHO 1.1

La Bonino coordinatrice per gli aiuti al sudest asiatico?

Ecco l'ennesima proposta di un incarico a Emma Bonino, che poi immancabilmente verrà dimenticata per questioni di opportunità politica, in un articolo uscito su repubblica stamane.

Peccato, perchè sarebbe una bella garanzia per quelli che stanno soffrendo laggiù.

powered by IMHO 1.1

Sourceforge sulla CCPL

Dopo il mio recente post, sulla Creative Common Public License, mi sono premurato di interpellare il supporto di SourceForge che come al solito in un tempo brevissimo mi ha fatto avere la sua opinione.

Eccola:

That license is not allowed, as it bars certain commercial
usages. You should review the Open Source Definition as
provided at: 
http://opensource.org

Questo però mi lascia preda del disappunto. Capisco l'open source, ma per quale motivo devo lasciare che qualcuno guadagni sul mio lavoro? Se un privato decide di usare il mio codice per realizzare qualcosa o a scopo didattico (come spesso ho fatto io) non ci vedo nulla di male, ma che una azienda ci faccia la cresta mi pare proprio inverosimile.

Comunque per ora IMHO rimarrà GPL. Più avanti deciderò sul da farsi.

powered by IMHO 1.1

Creative Common License

Valutando un prodottino, ho scoperto che esiste una licenza CCPL (Creative Common Public License) che è quanto di più vicino ho finora trovato alla mia idea di Licenza Open Source ideale.

Il testo completo: http://creativecommons.org/licenses/by-nc-nd/2.0/legalcode

E un breve e chiarissimo riassunto: http://creativecommons.org/licenses/by-nc-nd/2.0/

Esattamente quello che intendevo io, salvo per il punto 3, ovvero la possibilità di alterare, trasformare e sviluppare un prodotto, che a mio parere dovrebbero essere sempre garantiti fermi restando i due punti precedenti.

Peccato che non è una licenza approvata dall'OSI.

powered by IMHO

Banished Words 2005

Alla Lake Superior State University hanno nientemeno che una lista delle parole bandite. Tra esse assieme a cose tipo "ERECTILE DYSFUNCTION" e "IMPROVISED EXPLOSIVE DEVICE" si può trovare anche "BLOG".

BLOG – and its variations, including blogger, blogged, blogging, blogosphere. Many who nominated it were unsure of the meaning. Sounds like something your mother would slap you for saying.
“Sounds like a Viking’s drink that’s better than grog, or a technique to kill a frog.” Teri Vaughn, Anaheim, Calif.
“Maybe it’s something that would be stuck in my toilet.” – Adrian Whittaker, Dundalk, Ontario. “I think the words ‘journal’ and ‘diary’ need to come back.” – T. J. Allen, Shreveport, La.

Ora, mi chiedo per quale motivo mia madre mi dovrebbe mollare un ceffone quando lo pronuncio, ma questo probabilmente deriva dalla mia scarsa conoscenza dell'inglese. In merito al significato poi, quello è evidente a ogni programmatore, ma probabilmente non vale lo stesso per i profani del log.

La lista completa la si può trovare al seguente indirizzo: Banished Words List :: 2005

Fonte: http://blogs.msdn.com/jhoward/archive/2005/01/04/346204.aspx

powered by IMHO

Monad Lisa?

Il gioco di parole è d'obbligo. Leggo volentieri un bel sunto delle potenzialità della nuova Microsoft Shell, che però non vedremo prima di Longhorn, sempre che qualche buon'anima non decida che l'attesa è troppo lunga e magari non ci regali una release per XP.

Fonte: MSH aka MONAD

Tra le varie potenzialità, cito quella che mi da il brivido più profondo:

Un differente meccanismo di pipe (la facoltà di ridirigere l'output di un comando verso l'input di un altro). Tale meccanismo si è rivelato decisamente valido, ma è vincolato a lavorare su stringhe di caratteri, dal momento che input e output dei comandi sono stream di testo. MSH, invece, convoglia letteralmente oggetti da un comando all'altro: gli oggetti sono, ovviamente, istanze di tipi .NET che il motore di MSH si preoccupa di serializzare e trasferire. Le potenzialità, in questo caso, mi sembrano veramente enormi.

Bash, comincia a tremare!

powered by IMHO

A volte ritornano

In questi giorni sto tentando invano di finire il libro della Fallaci, "La forza della Ragione". Mi secca sempre non arrivare in fondo ad un libro, nonostante quello che vi può essere scritto. Ma non voglio ora entrare nel merito dei contenuti, magari questo sarà oggetto di un mio prossimo post, piuttosto vorrei narrare una storia, riportata in un capitolo di tale libro della quale ero già a conoscenza e che mi stupisce aver ritrovato all'interno di una pubblicazione.

La storia è ambientata nel periodo del sequestro Moro. Durante il sequestro, una personalità politica che oggi potremmo definire di spicco, ancora non si era affacciata in politica. I suoi primi vagiti politici ebbero luogo proprio durante questo sequestro allorquando egli suggerì alla polizia che l'onorevole Aldo Moro, si doveva trovare in un luogo chiamato "Gradoli". Fu così che la polizia mise sostanzialmente a ferro e fuoco il paesino del viterbese, ovviamente senza trovare assolutamente nulla.

Grande fu la sorpresa però quando si scopri, dopo il ritrovamento del cadavere di Moro, che egli era stato detenuto per un periodo, più o meno in corrispondenza delle rivelazioni del neopolitico, in un covo situato in Via Gradoli.

A chi legge come a me sorge subito un dubbio legittimo. Come faceva costui a sapere dove fosse detenuto Moro? E soprattutto per quale motivo non ha detto tutta la verità consenteno la liberazione dello statista? La sua risposta rimane incisa tuttora nella pietra. Le rivelazioni rispetto Gradoli sono avvenute durante una "Seduta Spiritica". Per quanto credito si possa dare allo spiritismo, e per parte mia assicuro che questo è molto scarso, il dubbio di prima si amplifica oltremisura. Tant'è però, che i commissari di polizia e il mondo politico italiano, hanno chinato la testa e ammesso che gli "spiriti" dei brigatisti probabilmente si stavano pentendo.

Ora rimane la curiosità, immagino, di sapere chi fosse questa eminente personalità politica. Si tratta di Romano Prodi.

powered by IMHO 1.1

Postponed...

E' arrivata la soluzione alla mia ultima segnlazione sul Microsoft Product Feedback center

Resolved as Postponed by Microsoft on 2005-01-03 at 15:03:11    
Thanks for the feedback on this feature! I don't believe we will have time during the Whidbey release to add any more functionality into the file tab channel, but we will definitely look into enhancing its functionality during the next product cycle.

Cheers,
Aaron Brethorst
User Experience Program Manager
Visual Studio Core - Platform Team

Fonte: MSDN Product Feedback Center

Significa che non ce n'è prima di Orcas. Speriamo bene.

powered by IMHO 1.1

IMHO: Nucleus & Metaweblog API

Provo ancora una volta a gettare il sasso nello stagno. Chissà che non ci sia qualcuno che mi legge che conosce questo engine e mi sa consigliare dove potrei testare un Adapter per IMHO.

Mi risulta che Nucleus supporti le MetaWeblog API, che sono un'estensione delle Blogger API.

powered by IMHO 1.1

Un dubbio sorge spontaneo...

Ascoltando la radio sono venuto a conoscenza del risultato di un sondaggio annuale che presenta la classifica degli uomini migliori e peggiori dell'anno scorso. Tralasciando gli uomini migliori, quello che più mi ha colpito è che al primo posto della classifica degli uomini peggiori c'è George W. Bush.

Ora, non che io nutra una ammirazione smisurata per tale persona, ma quello che più mi lascia interdetto è che le percentuali sommate di Saddam Hussein e Osama Bin Laden, raggiungono a mala pena il 50% della percentuale che Bush realizza da solo. E' evidente che c'è qualcosa che non va, se il presidente del paese Democratico per antonomasia viene considerato alla stregua se non peggio di due sanguinari, dittatore l'uno e terrorista l'altro.

Ancora una volta temo, ci ha messo lo zampino l'informazione deviata, che al solito costruisce a suo piacere miti e leggende, eroi e antieroi.

powered by IMHO

Propagazione lampo!!!

Ricordo ai tempi in cui mi occupavo di gestire il server DNS dell'azienda presso cui lavoravo. La registrazione di un dominio, oltre alla necessità di compilare un numero imprecisato di form, poneva soprattutto di fronte alla necessità di domare il cliente per due giorni buoni, quando pur avendo dato l'ordine di attivare il dominio, continuava inesorabilmente a non vederlo per 48 ore se non di più.

Lo spettro allora si chiamava "propagazione", ovvero il tempo necessario per cui tutti i dns si ricaricassero e iniziassero a risolvere il nome del dominio registrato

Oggi ho attivato il dominio http://www.imhoproject.org, e nonostante i canonici 2 giorni siano indicati comunque nel contratto, sono stupito di vedere che già dopo 1 ora dalla registrazione il dominio viene già correttamente risolto, almeno nel nord Italia. Ecco perciò che grazie alla segnalazione del prode Lorenzo, il domino è per ora un alias della home page del progetto su sourceforge.net.

Tempo permettendo verrà anche il sito. Idee per la grafica?

powered by IMHO

IMHO: Registrato il nuovo dominio - http://www.imhoproject.org

Visto che ormai il mio progetto IMHO sta cominciando a raggiungere un numero abbastanza elevato di utenti, ho deciso di investire qualche euro nella registrazione di un dominio ad-hoc.

Perciò tra qualche giorno sarà disponibile il sito http://www.imhoproject.org il cui dominio è stato registrato da pochi minuti.

Naturalmente dovrò realizzare un piccolo sito web, dove intendo pubblicare la categoria di post di IMHO sul mio weblog assieme ad una sezione dedicata ai TODO e ai plugin di terze parti.

powered by IMHO

IMHO: Bug nella configurazione dell'FTP

Grazie alla collaborazione di Stefano Demiliani ho appena trovato la causa di un errore di configurazione di IMHO e anche il relativo workaround. Si tratta di una dimenticanza nel codice che inizializza la configurazione la prima volta che il programma viene lanciato. In questa occasione non viene creata l'istamza di default della Hashtable che contiene i parametri dell'FTP.

questo fa sì che la prima volta che si tenta di postare senza aver specificato l'FTP il programma da l'errore "Object not set to an instance of an object" perchè testando il valore di IsActive trova l'oggetto a null.

Il workaround consiste nell'immettere dei dati fittizi nella configurazione dell'FTP, salvandoli premendo OK anche sulla form di impostazioni e poi riaprendo le impostazioni e disabilitando nuovamente l'FTP. In questo modo viene creata l'istanza di default dell'oggetto e l'errore non si presenterà più.

Naturalmente nella prossima release il bug sarà risolto.

Mille grazie a Stefano.

powered by IMHO

Memory issues

Ieri sera mi sono letto un articolo di MSDN che ho considerato illuminante rispetto le problematiche di gestione della memoria in ambiente managed. Mi hanno molto impressionato i benefici che una attenta applicazione di alcune regole può portare in termini di utilizzo della memoria. Vorrei riportare un esempio limpido di questo, direttamente tratto dall'articolo in questione:

// Struttura 1 ****

struct BadValueType
{
    
char c1;
    
int i;
    
char c2;
}

// Struttura 2 ****

struct GoodValueType
{
    
int i;
    
char c1;
    
char c2;
}

Le due strutture riportate nel riquadro possono apparire del tutto uguali, se non fosse per il diverso ordine dei membri. Andando ad analizzare però la dimensione fisica in memoria ci si renderà conto che mentre la prima, occupa 12 bytes, la seconda si accontenta di 8.

La soluzione del mistero sta nel problema dell'allineamento in memoria dei bytes. La struttura 1, avrà 2 bytes per il char, due bytes di padding a 4° byte, 4 byte per l'int, altri due bytes per il secondo char e infine un altro padding al 4° byte. In totale 12 bytes. Nel secondo caso invece avremmo 4 byte per l'int, e consecutivamente 2+2 bytes contigui per i char che tra loro non necessitano di padding.

Se il risparmio di 4 bytes può risultare una banalità, proviamo ad immaginare cosa succederebbe se questa struct facesse parte di una collection di centinaia di elementi. Il risparmio ammonta a 1KB ogni 256 elementi. Non male per aver solo invertito due membri in una struct.

L'articolo completo lo si può trovare a: http://msdn.microsoft.com/msdnmag/issues/05/01/MemoryOptimization/default.aspx

powered by IMHO

L'impenitente convinto.

Leggo con dispiacere questo post di Adrian a la risposta di Lorenzo. Non che io abbia mai avuto dubbi in merito all'opinione che qualcuno può avere sui miei post, ma da questo ad essere "pentiti" ne corre parecchio. Nessuno creda che quello che ho voluto esprimere nel mio post "Q o Q" sia in qualche modo un pentirsi di quanto ho detto o fatto. E spero che nessuno abbia frainteso il mio post nel senso inverso, come un proclama, orientato a scoraggiare la libera pratica, ripeto libera, del blogging.

Chi mi conosce sa che la mia considerazione per il fenomeno del blogging è troppo alta perchè io stesso mi permetta di giudicarla. D'altra parte non mi sognerei mai di criticare il linkaholismo, piuttosto che la blogorroicità o la quizzomania, che per qualcuno potrebbe rientrare nella stessa categoria. Ognuno faccia quello che crede. Siamo blogger. E un blog è l'espressione unica e irripetibile di una singola persona e pertanto deve essere unico e irripetibile.

Nessun "pentimento" quindi, ne mio ne di chicchessia. Non è mia abitudine offendermi per le opinioni altrui, ma questo termine è quanto di più vicino all'offensivo io abbia mai sentito. Davvero Adrian pensa di poter liquidare così, con una sola parola tutto ciò che faticosamente ho scritto e fatto e assieme anche le centinaia di commenti che i lettori hanno avuto la bontà di lasciare? Mi sembra che questo sia quantomeno indelicato, ma lungi ancora una volta da me la volontà di criticare la piena libertà di opinione di ognuno.

E il mio proposito, nel senso di migliorare il mio weblog è una analisi personale e senza alcun condizionamento e soprattutto senza alcun rimpianto verso il miei 497 post passati. Se li rimpiangessi probabilmente li avrei cancellati. Non ho alcun timore di farlo. Desidero migliorare il mio weblog, nel senso che darò più spazio a contenuti di mia estensione, piuttosto che linkare quelli degli altri, perchè ritengo di avere molto da dire di mio anche se non pretendo di avere nelle mie mani le tavole della legge, e finora mi sono limitato molto perchè in qualche modo avevo una sorta di ostacolo morale, costituito dalla tecnicità intrinseca di questo usergroup. Ma l'ho già detto tempo fa che non voglio farmi influenzare da questo. Il mio blog sono io, e ringrazio in primis Andrea Saltarello che non ha mai avuto nulla da obiettare in questo nonostante in qualità di presidente avrebbe avuto tutto il diritto di farlo, e tutti quanti mi hanno seguito, con i loro commenti con la loro voglia di confrontarsi premiandomi con un numero di visite che mai avrei immaginato.

D'altra parte non siamo fatti di soli bit. Se così fosse, non saremmo molto diversi dagli automi che pretendiamo di governare, inchiodati ad una serie di stati finiti. Penso di aver dato un contributo anche tecnico a questo usergroup, soprattutto nelle direzioni che più mi affascinano e mi interessano, ma se c'è un merito che vorrei fosse riconosciuto a me e al mio amico Lorenzo, è quello di aver contagiato più di qualcuno con questa bella "malattia", e di aver dato vita al mainfeed con le nostre idee e probilmente anche con le nostre stronzate. Perdonami Lorenzo... con le mie stronzate.

Perciò quanto ho detto nei miei propositi rimane, anche se difficilmente qualcuno dovrà aspettarsi che questo avvenga dall'oggi al domani. E potrebbe anche non succedere mai che essi si avverino, ma intanto ci sono e per me sono un impegno verso chi mi legge. Chi vorrà seguirmi vedrà ancora IMHO, vedrà il mio impegno su .TRAQ, un progetto che mi appare tuttora colossale, che piano piano sto cercando di far crescere, facendolo ritardare piuttosto che impoverire, ma immancabilmente vedrà anche le mie dannamente forti e orientate idee politiche, e con molta probabilità anche lo sfogo di poche righe che spesso mi ha aiutato a superare momenti difficili grazie alla solidarietà che qui ho sempre trovato.

E con tutta probabilità vedrà anche dei link, verso qualcosa che ho trovato veramente interessante e che spero possa aiutare qualcun'altro come ha fatto con me, ma sono certamente cosciente che contestualmente altri non ne avranno bisogno. Chi non mi vorrà leggere non farà fatica. In fondo al post c'è scritto il mio nome.

E se disturbo non avete che da dirlo.

powered by IMHO 1.1

IMHO - WMP Now Playing Formatter

L'architettura di IMHO sta cominciando a dare i suoi frutti. Ecco un post di Armand du Plessis che presenta il formatter da lui creato. Si tratta di una feature attesissima, ovvero la possibilità di inserire in un post il titolo del brano che si sta ascoltando nel Windows Media Player (fatti sotto Lorenzo).

Armand a quanto pare è un fan di IMHO al punto che nel suo blog ho letto ben tre post, parecchio recenti, sul mio Instant Blogger.

Come non ringraziarlo.

powered by IMHO 1.1

Due parole di MVP su IMHO

Il post è un po' vecchiotto, ma googleggiando l'ho trovato proprio oggi. Laurent Kempè, Microsoft .NET MVP, fondatore di Tech Head Brother, un portale francese su .NET, in un suo post nomina IMHO. Si tratta solo di una piccola citazione, ma la ritengo molto importante.

A parte i ringraziamenti sul commento, è curioso considerare che nel creare IMHO il primo requisito che mi sono posto era proprio la semplicità.

powered by IMHO 1.1

Model View Presenter in .NET

Leggendo gli articoli che sono linkati dal post di Pierre sono rimasto fortemente impressionato da quanto facile potrebbe essere implementare questo pattern in .NET, specialmente in ambiente Windows Forms. Quello che avviene normalmente in una applicazione è che la form (a.k.a view) interroga il database, tipicamente attraverso una serie di strati intermedi e popola ad uno ad uno i controlli in essa contenuti. Ques'ultima operazione avviene per mezzo del Databinding che consente al programmatore di "dimenticarsi" del dato dopo che lo ha affidato al controllo fintanto che non se lo andra a "riprendere" direttamente nell'oggetto di business cui esso è collegato.

Nel codice di Fowler, questa parte è rappresentata da una serie di metodi set() e get() che non fanno altro che scrivere e leggere i "controlli" in risposta alla loro modifica. In .NET tutto ciò si potrebbe tranquillamente realizzare esponendo all'esterno le proprietà dei controlli e "bindando" gli oggetti di business a queste ultime piuttosto che ai controlli stessi. In questo modo tutto il codice di set() e get() è semplicemente "inutile". Non resta altro che da agganciarsi agli eventi dei pulsanti Ok e Cancel e leggere/scrivere gli oggetti di business nel supporto di persistenza.

Poniamo ad esempio di avere una form che espone la checkbox dell'esempio di Fowler:

public class AlbumForm : Form
{
    
private CheckBox chkIsClassical;

    
public AlbumForm()
    {
        
// inizializzazione controlli
    
}
    
    
public bool IsClassical
    {
        
get return chkIsClassical.Checked;  }
        
set { chkIsClassical.Checked = value; }
    }
}

La nostra classe Presenter non dovrà fare altro che istanziare la View e poi fare il bind dell'oggetto di business (model)

public class AlbumPresenter
{
    
public void LoadViewFromModel( Form form, Album album )
    {        
        Binding binding = 
            form.DataBindings.Add( "IsClassical", album, "IsClassical" );
    }
    
    
public void LoadModelFromView( Form form, Album album )
    {    
        form.BindingContext[ album ].EndCurrentEdit();
        UpdateModel( album );
    }

    
public void EditAlbum( Album album )
    {
        AlbumForm form = 
new AlbumForm();

        LoadViewFromModel( form, album );
        
        
if ( DialogResult.Ok == form.ShowDialog() )
            LoadModelFromView( form, album );
    }
}

Il codice l'ho buttato giù direttamente nel post, senza verificare che compili, ma direi che di primo acchito la cosa può funzionare. Sarebbe interessante capire se ci sono delle responsabilità che possono essere accomunate da una classe astratta Presenter oppure da una View.

Naturalmente la domanda che mi sorge è: è davvero così semplice oppure ho scordato di considerare qualcosa?

powered by IMHO 1.1

Q o Q? (sottotitolo: buoni propositi per quest'anno)

Q o Q... questo è il dilemma che da un po' di settimane mi rode.

Le due Q in questione sono quelle di "Qualità" e "Quantità". Ovvero la necessaria riflessione sui contenuti del mio weblog. E quale momento migliore che il pomeriggio di questo Capodanno, mentre tutti sono a letto a riposare, per riflettere appunto su quale sia il taglio che voglio dare a questo mio weblog per il prossimo anno.

Il 2004 mi ha dato molte soddisfazioni. Più di 950 commenti sui miei quasi 500 post sono una bella soddisfazione, ma se vado a vedere bene mi accorgo che la maggior parte dei post non ha nemmeno un commento. Allora è necessario chiedersi se sia meglio privilegiare la Quantità di post alla Qualità.

E non è nemmeno una questione di argomenti. Quando vedo che il post che ha ricevuto più commenti in assoluto è uno nel quale si parla di religione, comprendo che non importa parlare sempre e solo di .NET, per fortuna gli argomenti possono essere molto eterogenei. Anzi a mio parere devono esserlo. Quello che probabilmente non va sono quei post di soli "link", o quelli che io chiamo "di vita vissuta".

Intendiamoci, ci vogliono anche quelli perchè è importante guardarsi attorno e "annotare" quello che si trova in giro oppure sfogare la propria ira perchè due righe di codice non ne vogliono proprio sapere di andare. Ma non possono essere preponderanti.

Perciò ecco il mio buon proposito per il 2005. Migliorare il mio weblog. Puntare più sui trackback che sulla vetta della classifica. Più articoli, post più estesi, argomenti meglio esposti e sui quali maggiore possa essere la discussione. Meno link, e quelli che non potranno non esserci, almeno siano accompagnati da due righe di impressioni e di raccomandazioni. Meno puntini di sospensione e più approfontimento.

IMHO è stato un gran bel progetto e continuerà ad esserlo e a regalarmi soddisfazioni ogni giorno. Ma il 2005 sarà, come qualcuno ha già rilevato, l'anno di .TRAQ. Ed esso sarà una delle leve che vorrei mi aiutassero in questa operazione.

La costruzione dell'impalcatura del weblog ormai è completa. La sabbia è pronta, l'acqua scorre, la gru funziona. Il cantiere è operativo. Ora bisogna rimboccarsi le maniche e mettere giù i mattoni e gli architravi dell'edificio.

La parte difficile viene adesso.

powered by IMHO 1.1

Give peace an hand.

Stanotte il brindisi. E credo che a voi come a me sia capitato di sentire qualcuno che iniziava il nuovo anno con l'augurio che la Pace torni su questo mondo.

Nulla da eccepire sulle buone intenzioni di tale augurio, se non il fatto che non mi pare che la Pace sia mai stata da queste parti. E c'è poco da augurare, finchè non saremmo noi i primi a fare qualcosa per questa Pace, invece che attendere passivi che questa trovi la strada per visitare il nostro pianeta.

Quindi, va bene l'augurio, ma cerchiamo di ricordarlo la prossima volta che andremo a comprare uno splendido prodotto della Cina o di qualche paese illiberale e antidemocratico. Probabilmente i 5€ che abbiamo risparmiato sull'acquisto sono costati il lavoro di un bambino. E nessuno mi venga a chiedere che cosa centra questo con la guerra.

Se non riusciamo a tutelare i diritti di un innocente bambino che passa le sue giornate a lavorare per fare risparmiare noi e per far guadagnare il suo aguzzino, come possiamo pensare che il pianeta sia avvolto dal velo della Pace piuttosto che dal sudario della violenza?

Ehm... buon anno.

powered by IMHO 1.1

Il 2005 inizia col piede giusto...

A parte il fatto che stamattina durante le consuete pulizie per raccogliere il residui della festa di ieri sera, sono riuscito a rompere un paio di bicchieri, e ad ammaccare il frigorifero di acciaio, poco fa aprendo Rss Bandit sono venuto a conoscenza di un fatto che mi ha fatto molto piacere.

Sfogliando trai i vari post ho notato che Jon Galloway, usa IMHO per postare nel suo interessantissimo blog: [code snippet] Dynamic copyright year

Ok, rompere qualcosa a Capodanno porta fortuna...

powered by IMHO 1.1