Di .NET e di altre amenita'

dicembre 2004 Entries

A minuti arrivano

...e io sono ancora qui che posto. Non sarà una malattia?

powered by IMHO 1.1

Terminal server.

Visto il post di Lorenzo sul file sharing mi è venuto in mente il sito da cui sto attingendo a piene mani per scrivere il gestionale Kos, che appunto funzionerà in Terminal Server.

http://www.brianmadden.com/

E' un vero pozzo di conoscenza. Ve lo assicuro.

powered by IMHO 1.1

Indovina...

Ho finito di preparare la cena, e giusto per gradire rieccomi a scrivere due righe nel mio beneamato blog. Anche io, seduto in divano, sto riposando le mie stanche membra, mentre scrivo. Una navigata, un po' di codice e arriveranno le 18:30 quando con gli amici inizieranno i festeggiamenti.

La cena, dicevo, l'ho preparata io. Al 66% almeno. Ecco il menù:

  • tartine al salmone, tonno e branzino fumè
  • hors d'euvre a base di "cruditè" di pesce, con un raffinato pinzimonio di mandarino, limone e olio.
  • risotto di gamberi con curry
  • branzino da 1,5 kg con patate nostrane cotto in vino bianco
  • contorni di vario tipo
  • vino a fiumi
  • pandoro e panettone
  • frutta secca di vario genere

l'antipasto, le tartine e il piatto forte (branzino da 1,5 kg) sono il mio 66%...

Slurp...

powered by IMHO 1.1

Un sogno MPx

In barba a tutti gli allucinanti telefonini-fotocamera ibridi che circolano in questi mesi, ho appena scoperto un buon candidato a sostituire il mio attuale (ed eccezionale) Nokia 6310i.

Il telefono è il Motorola MPx la cui uscita è prevista per il prossimo anno negli U.S.A. Considerato un po' di rodaggio che va lasciato ai pionieri della telefonia, e il tempo necessario all'uscita dei concorrenti, direi che il mio cellulare attuale può ancora godere di 1-1,5 anni di vita, prima di cedere il passo ad una meraviglia di questo tipo.

Poi magari non ce la faccio a resistere, ma questo è un'altro discorso :-)

powered by IMHO 1.1

I miei auguri #2

Bene, e giunto il momento che io me ne vada a casa.

Vorrei quindi rinnovare a tutti i miei migliori auguri.

Buon 2005 a tutti.

powered by IMHO

Non dimentichiamoci gli altri morti

Ecco un punto di vista che condivido a proposito delle svariate tragedie nel mondo.

Il Blog di jazzer: Disastri di serie A e di serie B

powered by IMHO

IMHO: A proposito di emoticone

Date un'occhiata a questa animazione:

E' la nuova feature di IMHO che verrà.

powered by IMHO 1.1

Web Services: Terra Server

Le segnalazioni fioccano: Mirko Spagnolatti mi ha indicato il web service di Terra Server USA con il quale è possibile ottenere le immagini dettagliate degli U.S.A.

http://terraservice.net/terraService.asmx

E' veramente impressionante provare a sbirciare un po' in giro con l'interfaccia web.

Ma la domanda è: sarà veramente utile?

powered by IMHO 1.1

Web Services: Validare un indirizzo email

Grazie a questo commento di Davide Mauri, la categoria Web Service Utili ha trovato un altro membro.

http://www.webservicex.net/ValidateEmail.asmx

Consente di validare un indirizzo di posta elettronica, ma come dice Davide non è efficace al 100% perchè si basa su una feature che non tutti i server pop3 espongono.

powered by IMHO 1.1

Web Services: Ottenere i dati di un libro dal codice ISBN

Una piccola ricerca in rete ed ecco spuntare un utile web service scritto in ASP.NET

http://www.webservicex.net/isbn.asmx

E con questo parte una nuova categoria: Web Services Utili.

powered by IMHO 1.1

Pretty Cool... No Thank you.

Quest'oggi il blog spamming mi sta massacrando. Sarà circa un'ora che continuo a ricevere il messaggio "Pretty cool, thank you" nei  miei post.

Qualcuno dovrebbe dargli una lezioncina...

powered by IMHO

IMHO: Estensione di Firefox per IMHO

In questo weblog ci sono molti attivisti del mondo di FireFox. Mi chiedevo se non ce ne fosse nemmeno uno che voglia cimentarsi nella realizzazione di una estensione per Firefox, Mozilla, Thunderbird che permetta di postare su IMHO. Qui è possibile trovare una buona spiegazione su come procedere per realizzarla: How to write Firefox extensions .

Solo un requisito: Deve aggiungere le stesse feature che sono già presenti in Internet Explorer. Post Link to IMHO e Quote in IMHO, con il medesimo comportamento, nei limiti del possibile. Se qualcuno si offre otterrà tutto il mio supporto, per sapere come integrarsi facilmente e vedrà il suo plugin aggiunto all'installazione di IMHO.

Simone, se ci sei batti un colpo...

powered by IMHO 1.1

Running ASP.NET on Apache

Una collezione di link per chi volesse tentare questa strada. Ma prima guardatevi bene IIS6!

Apache and ASP.NET

powered by IMHO

New Year's Resolutions

Dei buoni propositi per l'anno venturo?

My New Year's Resolutions

powered by IMHO

IMHO: Come ti faccio emergere il design

Sono un po' di giorni che penso a questo post, ma fino ad ora non ero riuscito a trovare i 30 minuti consecutivi necessari per poterlo redarre. L'intento è quello di presentare un caso reale in cui il Refactoring mi è stato di aiuto nella realizzazione di una delle ultime features di IMHO, per l'appunto il sistema di upload dei file verso l'ftp.

Quando ho iniziato il lavoro, le uniche cose che realmente avevo chiare in testa erano i seguenti presupposti:

  1. L'unico modo veramente valido per implementare la feature era di usare il protocollo FTP. Svariate ricerche in rete mi avevano confermato che l'eterogeneità dei motori di blogging lasciava poco spazio a soluzioni più sfiziose.
  2. In secondo luogo era necessario comunque lasciare aperta la possibilità, in futuro di creare soluzioni ad-hoc per ogni motore di blogging.

Armato di pazienza e di queste labili certezze, il primo passo è stato quello di cercare una libreria per l'FTP. Di certo una cosa da escludere subito era la realizzazione ex-novo di tale libreria, non perchè impossibile, ma perchè la sua implementazione avrebbe fatto lievitare inutilmente i tempi di realizzazione. La libreria trovata come sapete è la' edtFTPnet, che alcuni test comparativi mi hanno confermato essere la più affidabile.

A questo punto avrei potuto mettermi davanti ad un foglio di carta e disegnare la soluzione del problema così come sarebbe dovuta nascere, tuttavia dato il tempo scarso, e la mia ormai grande fiducia nel refactoring, ho invece aperto Visual Studio e cercato il punto migliore per innestare il nuovo codice. Alla fine la scelta è caduta sull'aggiunta di un bel metodo virtuale alla classe base degli adapter con i parametri che sembravano più adeguati e nel farne l'override in un solo engine, cosciente del fatto che il codice che avrei scritto al limite andava copiato in tutti gli altri engine.

Questa era una soluzione evidentemente temporanea, non sia mai che io cada nella trappola mortale del cut&paste, ma che mi permetteva innanzitutto di approfondire la problematica facendo funzionare il sistema velocemente. Inoltre, evidenziava una bella questione, ovvero come fare in modo, dovendo fornire a tutti gli engine il medesimo protocollo, di astrarre l'implementazione del protocollo dall'engine stesso.

Ma tutto ciò era materia per i posteri. Innanzitutto occorreva scrivere il metodo che trasferiva i file. E già questa questione apriva altri problemi. Al termine del lavoro, quando l'engine di .TEXT già pubblicava i post mi sono reso conto che lo faceva in modo logicamente errato. Infatti l'engine apriva e chiudeva la connessione ad ogni file inviato. Con un protocollo come l'FTP questo era un problema dannatamente grave, perchè l'handshake iniziale causava un overhead eccessivo. Ovviamente pensandoci bene avrei anche potuto trovarmi in futuro con protocolli diversi (si pensi ad esempio ad un webservice) che non richiedessero una apertura e chiusura della connessione. A questo punto i metodi da uno sono divenuti tre. Due responsabile di aprire e chiudere la connessione, e il terzo che trasferiva i file uno per uno. Un protocollo non connesso, semplicemente poteva lasciare vuoti i metodi Open() e Close().

Risolto questo problema era giunto il momento di estendere il funzionamento agli altri engine. Escluso a priori il cut&paste, in buona ottica oop non rimaneva che separare le responsabilità e creare una classe che si occupasse del trasferimento. E così è stato ed è nata la classe FtpPublisher. A questo punto tutti gli engine trasferivano immagini per mezzo dell'FTP. Il problema a prima vista era risolto. Ma ancora il requisito di cui al punto 2 non era del tutto soddisfatto. E' vero che è sempre possibile riscrivere un metodo, ma è anche vero che è di gran lunga meglio se non lo si fa. Inoltre, era evidente una duplicazione delle funzionalità. GLi engine così come il publisher ftp aveevano entrambi i metodi Open(), Close() e SendFile().

Quindi l'idea è stata quella di estrapolare completamente la logica di trasferimento dall'engine e semplicemente di consentire ad esso di fornire l'istanza di publisher da utilizzare per la pubblicazione. Perciò ho creato la classe astratta Publisher, e ho migrato i metodi Open(), Close() e SendFile() verso il publisher, in particolare l'ftp. A questo punto non rimaneva altro che fare in modo che l'engine creasse l'istanza di publisher e perciò ho creato una proprietà che lo restituisse a chi lo chiedeva. Tutto ciò adeguando poco a poco anche la logica che usava il publisher.

La soluzione era veramente buona. Ma ancora gli mancava qualcosa. Anche i questo caso, sostituire il publisher costringeva a ricompilare. E' stata la reflection alla fine che mi è corsa in aiuto. Modificare la proprietà degli engine per fare in modo che leggessero la classe publisher da file di configurazione è stato un gioco da ragazzi. E a questo punto ero veramente soddisfatto.

Ecco, a conclusione di questo post, vorrei rilevare come, partendo con poche certezze e armati della affilate spade dell'object-orientation e del refactoring si possa ottenere una soluzione ben congegnata, risparmiando di spremere le meningi su problemi che per ovvie ragioni all'inizio sfuggono. Ovviamente questo è il mio modo di procedere, suppongo che altri avrebbero ottenuto soluzioni differenti, ma ritengo che il succo del discorso sia davvero importante: non conta che riusciate a smontare il problema pezzo per pezzo da subito, è molto più probabile che, comportandovi come le onde del mare sulla roccia, riusciate più facilmente ad eroderlo mano a mano che esso presenta le sue parti più friabili.

powered by IMHO

USB Cup Warmer

Un commento del mio amico Francesco mi ha fatto scoprire l'esistenza di un vero must-to-have per chi come me e Lorenzo ama bere un buon the tra una classe e l'altra.

Gizmos for Geeks | USB Cup Warmer

Lo voglioooooo.....

powered by IMHO

Hocus Pocus

Eccomi, immaginatemi vestito come Otelma, un po' più simpatico spero, che scruto nella mia sfera di cristallo e snocciolo le mie previsioni per l'anno venturo:

  • Visual Studio 2005 non uscirà prima di settembre. Poi non ditemi che porto sfiga, ma non ho mai visto rispettare un appuntamento
  • La gente che prima si lamentava che i SW Microsoft erano troppo permissivi in termini di sicurezza inizierà a lamentarsi perchè sono diventati troppo restrittivi (a dire la verità hanno già cominciato)
  • Quelli di Blackcomb faranno un bel po di ferie, tanto Longhorn continuerà a prendersela comoda
  • Firefox non salverà il mondo, ma non lo faranno nemmeno Java o Linux
  • Il refactoring salverà il mondo
  • Il referendum sulla fecondazione assistita verrà approvato dalla cassazione
  • Visto che il referendum è stato approvato ci saranno le elezioni anticipate e vincerà dinuovo Berlusconi... tanto finchè non esiste opposizione, non lo ferma nessuno.
  • Non sono un esperto di calcio, ma da quello che sento Andrea Saltarello si comprerà l'Inter. Ormai è alla sua portata.
  • IMHO verrà acquistato dalla Microsoft per integrarlo in MSN Messenger

Pant, pant.. che fatica.

powered by IMHO 1.1

Inflazione Gmail

Ok, vediamo un po' se funziona come in borsa.

Io ho 9 inviti Gmail in attesa di un possessore. Le regole le sapete. Fatevi sotto.

powered by IMHO

Anteprima su MSN Search?

Scartabellando nei log di oggi, ho trovato un accesso dal seguente indirizzo:

http://sea.search.msn.it/spresults.aspx?q=ugidotnet&FORM=IE4

Se si lancia la ricerca si vede una pagina che mostra i risultati della ricerca con una piccola anteprima. Che si tratti di un nuovo servizio di MSN che qualcuno sta testando?

powered by IMHO

Logo designer for Google

Un intervista con il designer degli splendidi logo di Google.

Ecco un bel passaggio:

Hwang: Understandably, the "O" and the "L" are the easiest to deal with. The "O" has become a Halloween pumpkin, a Nobel Prize medal, the Korean flag symbol and the planet earth. The "L" has been used as a flagpole, the Olympic flame cauldron or a snow ski. The first "G" is the most difficult to deal with, and I don't think the "E" has gotten much action because of its location.

Dennis Hwang, Logo designer for Google

powered by IMHO

Omertà Birmana sullo Tsunami

A quanto pare le vecchie abitudini dell'Unione Sovietica, che affliggono tutte le dittature, continuano a rimanere.

Il regime dell'ex Birmania nasconde i numeri della catastrofe

powered by IMHO

La simulazione del maremoto

Sul sito del New York Times è presente un filmato flash che mostra una efficace simulazione del Maremoto che si è verificato nell'oceano indiano.

Dal New York Times. La simulazione del maremoto

Un consiglio: Sempre a proposito del "giornalismo macabro", saltate la sezione "photography".

powered by IMHO

To be continued: A quando una bella cena Geek/Bloggers a Milano?

Che fine ha fatto l'idea della cena/pranzo a Milano che Lorenzo aveva proposto in questo post ?

Facciamo così: La mia proposta è Milano, Sabato 15 Gennaio ore 12:30.

Ristorante di carne, perchè mi sa che con il pesce ci spellano.

Mogli/fidanzate al seguito.

La scelta dell'arma (ristorante) la lascio ai Milanesi.

Chi ci sta posti un commento qui.

powered by IMHO

Votate per me?

Il suggerimento del mio precedente post è ora sul Feedback center.

http://lab.msdn.microsoft.com/ProductFeedback/viewFeedback.aspx?feedbackId=FDBK19534

Votate in massa...

powered by IMHO

Un'altro suggerimento per VS 2005

Oggi sono un vulcano. Mi è venuta in mente un'altra bella feature che si potrebbe implementare nella IDE di VS 2005.

Vi è mai capitato di avere aperto contemporaneamente una ventina di file? Il problema sorge quando si deve passare da uno all'altro. Tipicamente la speranza è che CTRL+TAB risolvano la situazione, e per fortuna molte volte questo è vero, tuttavia capita più che spesso di dover scorrere tutti i tab aperti per cercare quello che serve.

E se i tab fossero raggruppati per categoria? Un po come succede per i pulsanti delle applicazione nella TaskBar di Windows XP. Tutte le form in design, tutti i cs delle form, tutti i resx (per che usa ancora VS per editarli) e così via. Di solito so bene cosa cerco e questo potrebbe semplificarmi non poco la ricerca.

Corro a postare al Feedback center. Chissà che abbia più fortuna stavolta.

powered by IMHO

A proposito di media

Sempre per continuare sull'argomento scatenato da questo mio post, vorrei far notare che in questo momento, mentre ascolto una gettonata radio nazionale, la deejay sta disquisendo da circa 30 minuti a proposito del divorzio tra Barbie e Ken.

Ma non hanno veramente nulla di meglio da fare?

powered by IMHO

New Year Skin

Sul mio weblog è apparsa la skin di Capodanno, chissà se piace tutto quel violetto?

Prometto che per la Befana farò di meglio.

powered by IMHO

Solitudine...

Stamane nel blog ci sono solo io?

A parte qualche sporadico commento, di post nemmeno l'ombra.

Se avessi il tempo potrebbe essere un'ottima occasione di recuperare terreno su Lorenzo...

powered by IMHO

Microsoft Anti-Spyware Preview

Ho trovato una buona recensione dell'atteso Anti-Spyware che Microsoft dovrebbe rendere disponibile entro la fine di Gennaio 2005, in seguito all'acquisizione della GIANT avvenuta lo scorso 17 Dicembre.

L'articolo ne parla molto bene, non vedo l'ora di provarlo.

Paul Thurrott's SuperSite for Windows: Microsoft Anti-Spyware Preview

 

 

 

 

 

powered by IMHO

Quando invocare GC.Collect()

Segnalo un articolo che ho trovato molto chiaro sulla spinosa faccenda del GC.Collect().

The perils of GC.Collect (or when to use GC.Collect)

powered by IMHO

ASCII art with C# - ASP.NET

Per chi ama stampare ancora con la stampante ad aghi, ecco un progettino per produrre le immagini ASCII.

ASCII art with C# - ASP.NET

powered by IMHO

Incongruenze dimensionali

E anche quest'oggi i miei 20 km hanno colpito. Mentre tranquillamente transitavo in località Albaredo, e la radio gracchiava il notiziario di Radio Radicale, tra me e me ragionavo su quello che trovo veramente faticoso nella realizzazione di un software. A mia del tutto personale opinione, l'attività di gran lunga più tediosa e densa di sottili problematiche è interrogare il database.

Spesso, anzi, quasi sempre, quando mi trovo nella necessità di scrivere uno spezzone di codice che lanci l'ennesima query sul database, mi vedo costretto a fermarmi e a ragionare su quello che veramente voglio ottenere. Mentre il più delle volte, il design dell'applicazione a livello di logica, nasce quasi spontaneamente, è nel punto di contatto con la base dati che sento il più profondo stridore e che avverto la più gravosa fatica. E non è una questione di ignoranza, perdonate l'immodestia, lavoro da parecchio con le basi dati, e ormai l'SQL ha ben pochi segreti per me.

L'impressione, per intenderci, è quella che si può provare cercando di far entrare un mondo tridimensionale in una immagine bidimensionale. Ecco, questo veramente spiega bene quello che provo. Solitamente sono abituato ad fidarmi parecchio del mio istinto nella creazione della logica. Ormai il mio modo di ragionare è object-oriented e da un po' di tempo trovo sempre con più frequenza casi in cui applicare i mai troppo elogiati Design Pattern. Ma, davvero, credetemi se dico che questo è un mondo tridimensionale, che sempre evidenzia con l'armonia l'applicazione di tali concetti.

E invece scccrrreeeeeeecchhh. Il database! Questa maledettamente piatta rappresentazione dei dati, così efficace, ma così difficile da ricondurre alla terza dimensione. Non spaventatevi, non sto mettendo in discussione la teoria relazionale, me e guardo bene, solo trovo che questo modo di gestire i dati, razionale se volete, ma indiscutibilmente piatto, mal si colloca in una realtà object oriented. Già so che molti di voi diranno che mi serve un buon ORM, che devo astrarre la logica dai dati, e tutte queste belle cose. Ma il problema a mio umilissimo parere è più profondo.

E' davvero un mapping quello che ci serve? Oppure è giunto il momento di ripensare al nostro modo di concepire il database?

powered by IMHO 1.1

I miei 20 km d'oro

Sono quelli che separano il luogo in cui vivo, da quello in cui lavoro. Sono alcuni mesi, dopo il trasloco che mi ha portato ad allontanarmi dall'ufficio, che li affronto tutti i giorni, in mezzo alla tranquillità della campagna del trevigiano.

E, cosa importante, non ne sento il peso. Anzi, spesso e volentieri sono davvero dei chilometri d'oro, perchè, nella tranquillità dell'abitacolo, mentre un po' di musica allieta il fluido percorso, interrotto al massimo di qualche trattore, spesso mi trovo a focalizzare al meglio alcuni problemi che nella foga delle ore d'ufficio spesso non riesco pienamente a comprendere e quindi a risolvere.

Suppongo sarebbe importante per tutti, poter fruire di tale tranquillo tragitto, ma so per certo di essere uno dei pochi fortunati che se lo possono permettere.

powered by IMHO 1.1

What's to come from Microsoft in 2005

Alla Microsoft non si perde tempo. Ecco cosa ci regalerà il 2005.

What's to come from Microsoft in 2005

powered by IMHO

L'ombra dello spreco anche negli U.S.A.

Interessante post che evidnzia come con una corretta politica si possano ottenere degli ottimi risultati spendendo poco. E del ponte sullo stretto di messina che si dice?

Building a bridge in France versus US

powered by IMHO

Soople; easy search in Google.

Per chi non ricorda tutte le feature di Google, ecco un buon punto di partenza.

Soople; easy search in Google.

powered by IMHO

Mi faccio un the.

Pochi lo sanno, ma amo molto prendere il the. Mi sento molto anglosassone, per quanto riguarda l'approccio "politico", ma il the che intendo io no ha nulla a che fare con quello inglese. Mi piacciono i the aromatizzati, specialmente alla frutta, basta che l'aroma non risulti preponderante rispetto l'amarognolo della foglia di the. Per intenderci, il the ai frutti di bosco non lo sopporto, mentre amo molto quello alla pesca, all'arancio, alla mela, etc... ma non datemi il The Java...

Tengo una scatola di bustine a fianco al monitor e sfrutto la macchinetta del caffè che mi elargisce acqua calda gratuita per produrre un buon the, che ultimamente assaporo nella tazza che mi ha regalato l'azienda di Lorenzo all'ultimo workshop.

Vado. L'ora del the è passata da un pezzo.

powered by IMHO

Won't fix? Ma allora qualcosa da correggere c'era!!!

Ho appena scoperto che la mia segnalazione in merito a Define Event & Stay ha ottenuto risposta nel Product feedback center.

Ecco come:

Resolved as Won't Fix by Microsoft on 2004-12-27 at 12:53:07    
Hey there -

I absolutely agree that if you're trying to wire up multiple events at once, our default behavior (of jumping to the event handler) is cumbersome. The experience is optimized for folks working in serial rather than "multi-pass" - that is, dropping a control, naming it, labelling it, hooking up an event and writing code for it, etc. We'll consider ways of addressing this in future versions of the designer, however.

Thanks!
Jeff

Fonte: MSDN Product Feedback Center

Ma voi davvero lavorate così?

powered by IMHO

.TRAQ: Stamane il primo passo

Complice il fatto che stamattina sono rimasto a casa dall'ufficio per accudire a mia figlia, mentre sullo schermo del televisore scorrevano le immagini degli Aristogatti che mi hanno garantito dei brevi momenti di concentrazione, ho dato inizio al documento che descriverà il progetto .TRAQ.

Per ora ho buttato giù l'abstract che contiene una breve descrizione dei contenuti e delle considerazioni sulla metodologia di sviluppo da seguire. Sono abbastanza contento di quanto sta nascendo, e conto di rendere pubblico un draft del documento entro la fine dell'anno.

Per inciso ho scelto di scrivere in Inglese. Questo perchè spero che il progetto possa sconfinare da questo blog verso il resto del mondo. Bisogna sempre essere un po' ambiziosi. Ovviamente spero di non aver scritto qualche strafalcione (ma in cuor mio ne sono certo), perciò non ridete di me quando vi capiterà di leggerlo...

powered by IMHO

Giornalismo macabro

Stamane, ho avuto occasione di seguire un telegiornale all'ora di pranzo e come ci si può attendere, la notizia principe era quella dell'immane tragedia che si è consumata in questi giorni. Rimango sempre sconcertato dal gusto che il giornalismo italiano e suppongo quello internazionale riescono a dimostrare per il macabro.

Frasi del tipo "gli ha staccato la testa", oppure domande sulla falsariga di "che sensazione le ha dato vedere tutti questi morti?", sono ormai all'ordine del giorno. Trovo irrinuciabile, che arrivino aggiornamenti pressochè ogni minuto, ma il balletto di cifre intorno al numero di morti che si sviscera in una classifica dell'orrore quasi i poveretti stessero cercando di entrare nel guinness dei primati mi sembra davvero troppo. Cosa cambia, nell'economia delle cose, che lo Sri Lanka abbia 20000 morti, 53 in più della Thailandia?

E per non parlare delle immagini. Ormai la televisione è un apparecchio da tenere spento il più possibile, dato che mi riesce difficile spiegare a mia figlia per quale motivo una gamba mozza sbuchi da un cumulo di macerie all'ora di pranzo, e per quale motivo tutte quelle persone "dormano" in mezzo alla strada.

Daccordo, c'è stata una tragedia, credo che nessuno di noi ne sia all'oscuro e che nessuno cerchi in qualche misura di sminuirla. Sono il primo ad essere rattristato di quanto è avvenuto, e spero per quanto mi sarà possibile di poter fare qualcosa per le vittime e soprattutto per i soppravissuti. Ma questo comportamento dei media, non fa altro che rendere il dolore un'abitudine e perciostesso una cosa da "gustare" tra una forchettata di spaghetti e l'altra e da dimenticare quando si spegne la televisione.

powered by IMHO

Un blogger da Phuket

Uno dei blogger di asp.net si trovava a Phuket nel momento in cui o tsunami si è abbattuto sulla spiaggia. Se l'è cavata per puro miracolo. Ecco come racconta la storia: Earthquake in Indonesia, just happened I am there :-(

powered by IMHO

IMHO: Creare e configurare un publisher custom

Come promesso svariati post fa, eccomi finalmente a spiegare come si può creare e soprattutto configurare un publisher custom per il proprio repository di immagini. Questa tecnica ad esempio consente di pubblicare i file attraverso un web service piuttosto che agganciandosi alle schermate di .TEXT per farne l'upload direttamente nelle gallery, per chi ha il coraggio di cimentarsi in tale arte.

Innanzitutto occorre avere ben presente che un Publisher non è un plugin, ovvero non eredita direttamente dalla classe plugin che è presente negli assembly di IMHO. Questo significa due cose: non è sufficiente aggiungere l'assembly in una cartella, e non si configura direttamente dal pannello dei plugin. Un Publisher è semplicemente una classe di supporto al plugin Engine Adapter per cui esso è configurato.

Detto questo, creare un Publisher comporta innanzitutto estendere la classe Elite.IMHO.Engines.Publishers.Publisher. Questa classe ha una serie di metodi, che devono essere obbligatoriamente estesi, dato che si tratta di una classe astratta, ma che non devono necessariamente fare qualcosa. Ad esempio, per un publisher che si connetta ad un WebService, i metodi Open() e Close() potrebbero anche non servire, perciò andranno semplicemente lasciati vuoti. Alla fine dei conti, quello che veramente conta è il metodo SendFile() che riceve in ingresso il path del file da trasferire e deve restituire l'url presso cui si troverà il file per mezzo del protocollo http.

Anche il publisher ha un metodo Configure(). Esso viene chiamato dal runtime di IMHO, quando, dal pannello dei plugin o da quello degli account, si accede alle impostazioni di un Adapter. Ad esso viene passata una HashTable che può essere gestita in proprio per immettere e leggere delle coppie nome-valore che sono i parametri di configurazione.

Infine volendo (e potendo) gestire il progresso dell'upload dei file sarà necessario invocare il metodo OnTransferProgressUpdate() cui va passato un TransferProgressUpdateEventArgs che contiene la percentuale di avanzamento. Tale metodo non fa altro che invocare un evento della classe publisher cui i runtime si aggancia.

Compilato e testato il Publisher, rimane solo da agganciarlo ad IMHO. Per farlo è necessario copiare l'assembly nella cartella di installazione di IMHO, e aggiungere una chiave al file di configurazione imho.exe.config. Il nome di questa chiave è legato all'adapter che si vuole usare. Nulla vieta ovviamente di usare lo stesso Publisher per tutti gli adapter. Per .TEXT la chiave si chiama DotTextFilePublisher. Gli altri adapter hanno una chiave che si compone sempre del nome dell'engine e della desinenza "FilePublisher". Nel valore dovrà essere riportato il nome completo dell'assembly, composto dal nome della classe comprendente il namespace, una virgola e il nome dell'assembly senza l'estensione, così come è consueto per i tipi che vengono istanziati per mezzo di Type.GetType().

Chi riuscisse a creare qualche publisher particolare può contattarmi per valutare l'inclusione del suo assembly nell'installer della prossima versione di IMHO. Buon lavoro.

powered by IMHO

Burp!

Scrivo, mentre cerco di digerire e il titolo tradisce il problema. Questo Natale è giunto solo a metà, e già mi sto chiedendo se il mio stomaco ce la farà. Vigilia di pesce, e pranzo natalizio interminabile. E poi domani ancora pesce dai miei. Non che io non sia allenato, ma questi tour de force gastronomici mi mettono a dura prova... burp.

Vado. Il caffè mi attende.

Auguri.

powered by IMHO 1.1

"Take back" de chè?

Saremmo anche sotto Natale e tutti dovremmo essere più buoni, ma oggi è la vigilia e consentitemi di essere un po' acido. Lo spunto me lo da il post di auguri di Simone, che mostra una bella cartolina con su scritto "Take back the web". Ecco, quello che mi viene da esclamare è proprio: Take back de chè?

Ok, Firefox sarà anche un buon browser, lo ammetto volentieri, probabilmente più sicuro, anche se la prova l'avremo con il tempo, belle funzionalità, tabbed browsing, etc etc...

Ma quello che mi fa "girare" è questo clima da crociata. Che nessuno mi venga a raccontare che firefox e chi gli sta dietro vuole restituimi il web, io me lo sono già preso. Sono proprio curioso di vedere, se mai firefox arriverà al 51%, se davvero mi vorrà restituire il web oppure se in fondo, giocando sui sentimenti della gente in realtà non voglia appropriarsene.

Ecco, mi sono sfogato. E' la vigilia, ma buono non mi sento.

Speriamo domani sia meglio.

Auguri... anche a Firefox.

powered by IMHO 1.1

Quando si dice semplificare per agevolare

Ecco un bell'esempio. Se si vuole che un servizio sia usato più frequentemente non c'è altro da fare che semplificarlo. E così hanno fatto quelli di Google.

Sembra una cosa banale, ma pochi sanno farlo veramente. In internet sicuramente, ma anche nelle applicazioni classiche, riuscire a togliere anche un solo click è un traguardo che bisogna cercare di raggiungere.

E quelli di Google su questo hanno molto da insegnare.

powered by IMHO 1.1

Tempo di beta: Yahoo! Video Search

Ormai i motori di ricerca stanno combattendo una dura guerra fratricida...

Yahoo! Video Search

powered by IMHO

Ecco gli auguri

Dato che probabilmente non tutti sono come me, che per evitare una crisi di astinenza da blog dovrò collegarmi anche alla mezzanotte dell'ultimo dell'anno, posto adesso i miei auguri.

E quindi:

A tutti un grande augurio di Buon Natale e un Felice Whidbey (ops... 2005).

powered by IMHO

IMHO: Perchè quando reinstallo IMHO perdo le impostazioni?

E' una domanda che mi è stata posta da Lorenzo in un post, ma naturalmente il problema me lo ero già posto prima di mettere online la nuova versione.

Attualmente IMHO utilizza il Configuration Management Application Block per mantenere in forma crittata le impostazioni che vengono immesse nel pannello delle preferenze. Per fare questo ho dovuto realizzare un "classone" che incapsula tutte le informazioni e il CMAB semplicemente opera serializzando e deserializzando questa classe in un file xml crittato.

Purtroppo, quando modifico la classe per aggiungere nuove impostazioni, la deserializzazione da un'eccezione perchè il tipo vecchio e quello nuovo non corrispondono più. Per risolvere questo problema probabilmente dovrò implementare l'interfaccia ISerializable e gestire le proprietà nuove "saltandole". In questa occasione ho però preferito pubblicare comunque la beta, anche in considerazione del fatto che la quantità di impostazioni è decisamente limitata.

Un altro problema è dato dal database access che contiene i post in sospeso. Qui il problema è addirittura più complesso perchè modificando il database dovrei crearmi una procedura di esportazione/importazione che gestisca tutti i possibili casi (qualcuno potrebbe avere installato ancora la versione 1777 invece che la 1787). Probabilmente questa parte del problema non la risolverò mai a meno che non mi venga un colpo di genio... o che non venga a voi.

Questo giusto per farvi capire in che razza di ginepraio mi sono cacciato!

powered by IMHO

IMHO: Per chi usa il proxy server.

Un commento di un possibile utente di IMHO mi ha fatto ricordare una piccola limitazione di cui soffre attualmente il publisher FTP. Se lo usate dietro un proxy server, l'upload non andrà a buon fine. Purtroppo non sono riuscito a trovare una libreria FTP che consenta di usare un proxy server perciò per il momento mi sono dovuto accontentare.

Naturalmente l'intenzione è quella di modificare la ottima classe edtFTPnet per supportare anche il proxy server, ma come potete immaginare non si tratta di una passeggiata.

Portate pazienza.

powered by IMHO

Consigli su Adobe Reader 7.0

Molti si sono lamentati della lentezza di Adobe Reader. In questo post ci sono degli utili suggerimenti per fare in modo che si apra più velocemente. Chissà se funzionano anche con Acrobat 6?

How to make Adobe Reader 7.0 load faster

powered by IMHO

Un modello da seguire...

Non sono molti quelli che sarebbero riusciti a prendere una decisione come quella che è riportata in questo post: Ch-ch-ch-changes...

Soprattutto, non sono molte le donne italiane (e gli uomini) che possono farlo!

powered by IMHO

Logotipi di Google

In questa pagine si possono trovare alcuni dei logotipi che Google ha prodotto negli ultimi 6 anni di attività. E' curioso ripercorrere la storia degli ultimi mesi, attraverso questi logo, che davvero sono molto ben fatti. Complimenti ai grafici per la fantasia!

Logotipi di Google

powered by IMHO

IMHO 1.1.1817 - Transparent Image Management

Finalmente, dopo esattamente 30 giorni dal rilascio della versione 1.0 sono lieto di annunciare che è disponibile la prima beta di IMHO 1.1, la build 1817, che come più volte ho avuto occasione di anticipare su queste pagine introduce la gestione automatica delle immagini.

La versione attuale consente la pubblicazione esclusivamente su un server FTP, perchè questo era l'unico modo che accomunava tutti i tipi di engine attualmente supportati. Ancora una volta ho scelto di rendere il programma facilmente espandibile. Infatti, la pubblicazione delle immagini avviene per mezzo di una classe Publisher che nella sua versione FTP, incapsula tutte le funzionalità di questo protocollo.

Saranno oggetto di un mio prossimo post, le modalità di implementazione di questo publisher, che può essere sostituito configurando opportunamente l'applicazione.

Come già detto, le immagini verranno gestite autonomamente dal programma che si incarica anche di individuare duplicati all'interno di uno stesso post e di ottimizzare l'upload. Senza alcun intervento, le immagini verranno spostate dapprima in una cartella temporanea locale ed in seguito, all'atto della pubblicazione verranno caricare nell'ftp e l'url corretto sarà inserito all'interno dell'html. Una prossima release consentirà di trattare allo stesso modo anche qualsiasi altro file linkato nell'editor, e adotterà una politica di ottimizzazione dei file cross-post.

Ma come si può vedere dall'immagine allegata, anche l'editor ha subito una piccola revisione. Grazie ai magnifici componenti sandDock e sandBar, che non finirò mai di lodare per qualità e semplicità d'uso, le categorie e i formatter sono diventati dei pannelli che possono essere spostati a piacimento sull'area dell'editor e collassati così come fanno everett e whidbey. Anche i più pigri troveranno così più facile inserire uno snippet o un'emoticona nell'HTML. Inoltre un nuovo look&feel più colorato e i pulsanti 3d, lo rendono più piacevole.

Il mio dovere è compiuto. Ora mi aspettano altre fatiche, sia con IMHO che con .TRAQ. Rimanete connessi, perchè presto altri post chiariranno meglio le nuove feature e i nuovi progetti per l'immediato futuro.

powered by IMHO

double.TryParse()

Stamane mi sono accorto di una cosa strana, che non riesco a spiegare.

Il seguente codice ritorna true:

 public void Main()
 {
     
string test = "1.0.....2";
     
     
double doubleResult;
     
     Console.WriteLine( 
         
double.TryParse( test, NumberStyles.Any, CultureInfo.CurrentCulture, out doubleValue ) );
 }

Ma con tutta la buona volontà non riesco a capire come "1.0.....2" possa essere un double valido. Va detto per inciso che sul mio pc il punto è considerato il separatore delle migliaia, tuttavia questo non va certo a migliorare la situazione.

powered by IMHO

Arrivano i primi auguri...

 A
chi
ama
dormire
ma si sveglia
sempre di buon
umore. A chi saluta
ancora con un bacio. A
chi lavora molto e si diverte di
più. A chi va in fretta in auto, ma
non suona ai semafori. A chi arriva
in ritardo ma non cerca scuse. A chi spegne
la televisione per fare due chiacchiere. A chi è
felice il doppio quando fa a metà. A chi si alza presto
per aiutare un amico. A chi ha l'entusiasmo di un bambino
ma pensieri da uomo. A chi vede nero solo quando è buio.
A chi non aspetta Natale
per essere
più buono.
Auguri
BUON NATALE e FELICE 2005

powered by IMHO

Portable Firefox 1.0

Per i maniaci di Firefox, ecco come fare a farlo stare in una chiavetta USB.

Portable Firefox 1.0 (USB Drive-Friendly)

powered by IMHO

A proposito di FTP

Se qualcuno cercasse un servizio FTP gratuito da usare con IMHO, io ho provato questo: http://www.0catch.com/

Mi sembra abbastanza buono. Ovviamente sarà meglio affiancargli un DNS alias per poter spostare le proprie immagini in caso di necessità senza dover riscrivere tutti i post. Meglio se vi comprate un dominio comunque.

powered by IMHO

Ottimizzazione della memoria in ambiente managed

Questo è da leggere assolutamente, visti anche i 30MB usati da IMHO che mi sono stati segnalati.

Rediscover the Lost Art of Memory Optimization in Your Managed Code

powered by IMHO

IMHO: Rilascio imminente della 1.1 beta

Ci siamo, se tutto va bene, stanotte rilascerò la prima beta della versione 1.1 di IMHO che comprende la gestione delle immagini automatica.

Assieme a questa attesa feature, ci sarà anche una bella sorpresa... per i più pigri.

Intanto cominciate a scaldare l'FTP!

powered by IMHO

Uno shortcut per il DLL Hell

Preso direttamente dal suggerimento di Raffaele, ecco un altro shortcut per la MSN Toolbar che ho appena ideato.

@dll,http://support.microsoft.com/dllhelp/default.aspx?dlltype=file&l=55&alpha=$w&S=1&x=14&y=15

provate con:

dll advapi32.dll

Comincia davvero a piacermi questa toolbar!

powered by IMHO

Microsoft contro il problema dello Spam sui Weblog

La Microsoft sta cercando delle misure contro il problema dello spam sui weblog, che affligge i suoi 1200 bloggers attuali. Personalmente non credo che la moderazione sia la soluzione, piuttosto mi muoverei verso una Human Interactive Proof nella form di invio dei commenti.

Fonte: Microsoft Bloggers Face Search Spam Pinch

powered by IMHO

Ieri più di 500 visite

Ieri, per la prima volta il mio weblog ha superato le 500 visite (Page View) in un solo giorno.

Ovviamente le mie non si contano...

Day

Date Page Loads Unique Visitors First Time Visitors Returning Visitors
Tuesday 21st December 2004 501 239 127 112

Ancora grazie e tutti.

powered by IMHO

Il mio suggerimento segnalato su MSDN Lab

Come mi ha consigliato Lorenzo, ho postato su MSDN Lab il mio suggerimento per l'IDE di Visual Studio .NET 2005.

Chi volesse votarlo può farlo al seguente indirizzo:
http://lab.msdn.microsoft.com/ProductFeedback/viewfeedback.aspx?feedbackid=73b88439-eebb-4a44-8123-8defe3863697

powered by IMHO

Umile suggerimento

Vorrei esprimere un piccolo suggerimento, rivolto nientepopodimenochè ai progettisti di Visual Studio.NET 2005, nella speranza che qualcuno che mi legge e che ha conoscenze "altolocate" sia in grado di farlo arrivare a destinazione, sempre se lo considera fondato ovviamente.

Il problema è questo: Quando si è in design di una form, spesso e volentieri si definisce l'evento di default di un controllo semplicemente facendo doppio click su di esso. Questo causa uno "spostamento" sul codice, esattamente all'interno dell'evento appena creato. Comodissimo, in alcuni casi, ma talvolta ci si trova nella necessità di definire più di un evento alla volta, perciò si è costretti a "palleggiare" tra design e codice.

Perchè allora non aggiungere un menù di contesto "Define Event & Stay" (o comecavolovipare), che permetta di definire l'evento e rimanere in design? Magari con un submenù che contiene tutti gli eventi definibili. (o i più frequenti)

Boh. Forse sarà una stupidaggine, ma a me sarebbe molto comodo.

Chissà se si può fare con un add-in per VS.NET 2003?

powered by IMHO

Pattern & Practices - Articoli in uscita

Sta diventando una piacevole abitudine. Grazie alla collaborazione con la Infomedia, ho partorito una serie di 5 articoli che usciranno su Computer Programming a partire da Gennaio.

La serie avrà come tema le Pattern & Practices di Microsoft che già sono state affrontate nella sessione di Lorenzo Barbieri lo scorso 2 dicembre. Gli articoli riguardano in particolare:

  • Data Access Application Block
  • Exception Management Application Block
  • Caching Application Block
  • Configuration Management Application Block
  • User Interface Process Application Block

E' anche possibile che alla serie si aggiunga all'ultimo momento una altro articolo su Smart Client Offline Application Block.

Tutti sono corredati da degli esempi di uso scritti da me (a parte l'UIPAB). Vi segnalo un password manager che usa il Configuration Management Application Block e un mini ORM che usa il Data Access Application Block.

Mi raccomando, tutti in edicola!

powered by IMHO

Un silenzio preoccupante

Ieri sera ho scritto un post che supponevo avrebbe scatenato le ire di molti, magari puristi dell'object orientation che "speravo" si sarebbero scagliati, sciabola alla mano, contro le questioni che ho posto, magari aiutandomi a risolverle.

Invece nulla. A parte due, graditissimi commenti, null'altro.

Ora, la cosa mi preoccupa, perchè attribuisco ad essa due possibili significati:

  1. Non c'è soluzione alla questione perciò non vale la pena di rispondere
  2. Questo non ha capito nulla... non perdo nemmeno il tempo a rispondergli.

Spero vivamente che il punto 1 sia smentito, e vi invito a dirmi chiaramente se il punto 2 è vero. Meglio saperlo!

powered by IMHO

Una fix per Google Desktop Search

Il team di Google ha rilasciato un'aggiornamento per un problema di sicurezza del Desktop Search.

FONTE: WindowsBeta.Net - Google Fixes Desktop Search Flaw

powered by IMHO

Date, formati e timezone

So che uno degli argomenti più ostici è il trattamento delle date. Qui c'è un buon post che riassume un po' lo stato dell'arte.

DateTime Parsing and Formatting with Time Zones [Anthony Moore]

powered by IMHO

Radical Feeds

Ho scovato sul sito di Radio Radicale il link ai Radical Feeds . A quanto pare ci sono finito dentro durante l'ultima campagna dei Radicali per il referendum. Inutile dire che sono lieto che le mie parole giungano anche ai miei compagni Radicali.

powered by IMHO

L'insistenza di Windows

Ma per quale motivo se ti ho detto che voglio riavviare più tardi continui ad insistere a chiedermelo???

(N.B. Questo è il primo post con l'immagine caricata automaticamente)

powered by IMHO

Commenti in lingue sconosciute

Sono stato costretto a rimuovere un commento in portoghese dal mio weblog, perchè nonostante avessi tentato di tradurne il contenuto con Google, il suo contenuto mi rimaneva oscuro. Mi spiace di dover operare in questo modo, ma accetto solo i commenti che posso comprendere fino in fondo, non vorrei che dal mio weblog possano essere divulgate ingiurie o spamming.

powered by IMHO

Una nuova moda interrogativa?

Perdonatemi, ma guardando i post di quest'oggi mi sono reso conto che ben quattro sono posti come una domanda. E' solo la giornata che è interrogativa.

Domani cercherò di usare solo punti esclamativi, giusto per compensare.

powered by IMHO

Una buona notizia...

Vengo a sapere che (finalmente), dopo 25 anni di attività chiude il Maurizio Costanzo Show. Non posso che esserne felice, non sono mai riuscito a sopportare quella trasmissione, ma ultimamente era diventata veramente inguardabile e suppongo che gli ascolti mi abbiano dato ragione. Non ho mai sopportato la selettività delle presenze, sempre "ben scelte" dal presentatore, ma ultimamente maghi e maghetti, star e starlette hanno proprio rovinato tutto.

Maurizio Costanzo davvero non sentirà la differenza. Non passa giorno senza che non lo si veda in televisione per una nuova trasmissione, lui o sua moglie.

powered by IMHO

I limiti dell'OOP?

Giornataccia quest'oggi. Nulla di male, bel tempo, un bel po' di lavoro, e non fosse altro che le attese ferie natalizie sono sfumate, si potrebbe dire che la giornata è nata bene. Però stamane credo di aver sfiorato e superato i limiti della programmazione Object Oriented.

Sto realizzando un sistema per l'editing di referti medici, con la creazione on-the-fly di un numero spropositato di controlli, che mappano una mole esagerata di dati, gestendo regole di tipizzazione dei dati (numerici, testuali, enumeratori), formule di calcolo cross-field, e addirittura i matching delle tipologie di pazienti per gestire i possibili valori normali.

Il problema è che, realizzato in pura logica object oriented, mappando i dati su oggetti, semplicemente questo sistema barcolla. La mole di dati da gestire è tale che usando un ORM mi trovo nela condizione di effettuare decine di chiamate al database, che in una logica di accesso concorrente (sono previsti picchi di 50 utenti contemporanei), rischiano di abbattere le performances.

La soluzione alla fine è stata quella di ricondurre il tutto a un DataSet che descrive la struttura dei dati e ad un paio di DataTable caricati in un secondo momento che contengono i dati veri e propri, abbattendo notevolmente la durata e la quantità di accessi al database, nella speranza di lasciarlo respirare.

Questo però mi inquieta. Che l'adozione di logiche fortemente orientate agli oggetti avesse un impatto sulle performances è risaputo, ma che questo impedisse ad una applicazione di funzionare correttamente non lo avrei mai immaginato. Però è da un po' che ci penso. L'adozione dell'OOP, nella logica applicativa,da sempre è stata una carta vincente, per flessibilità e manutenibilità, ma spostandoci ai dati gestiti da una applicazione, spesso mi sono trovato a chiedermi se il gioco valga la candela.

So che con queste poche righe scatenerò i puristi della programmazione, ma ritengo di dovermi assumere questo rischio perchè due sono le cose, o c'è qualcosa di veramente sbagliato e dobbiamo discuterne, oppure, più probabilmente c'è qualcosa che non ho capito, e allora è il caso che ci sbatta il naso, se non altro per migliorare in futuro.

A voi l'accetta. Colpite duro!

powered by IMHO

Qualcuno sa il portoghese?

Mi è giunto questo commento su un post. A naso direi che il commento è calzante, ma dato che non conosco il portoghese non so decidere se si tratti di spam oppure no.

Qualcuno mi aiuta?

powered by IMHO

Sondaggio: chi lavora durante le ferie?

Indovinate un po': le mie ferie natalizie sono saltate... perciò sono curioso di sapere chi mi farà compagnia sul weblog.

powered by IMHO