Di .NET e di altre amenita'

novembre 2004 Entries

Napoli è per me un enigma.

Eccomi, reduce di una serata trascorsa in una città che non mi appartiene, che non comprendo ma che rispetto nella sua grandiosa bellezza carica di storia.

Napoli è per me un enigma.

Una città piena di vita, ma così morta, piena di energia ma così scarica. Giri le sue strade e vedi quello che non vorresti fosse la tua città, contornato di splendide bellezza di un valore culturale inestimabile, ma così buttate via. Vedi le strade in decadenza che conducono migliaia di persone lungo i percorsi della loro vita. Vedi la gente che sopravvive a questo stillicidio dei piccoli crimini quotidiani, dal semaforo bruciato alla corsa senza casco, dal borseggio in destrezza a qualcosa di più, senza considerare che il piccolo che ammettono, giustificano e commettono è l'humus per i crimini, quelli veri. Loro la città la vivono, orgogliosi, perchè pensano di averla domata, ma in realtà non la sanno controllare.

Napoli è una splendida città.

L'aria calda a Dicembre, l'odore del mare, lo sporco nelle strade, il disordine, e... La cortesia impagabile della gente, di quella che noi Veneti non riusciamo nemmeno ad immaginare. La veracità delle voci nei cortili e nelle strade, l'amicizia che lega le persone che si salutano dalla macchina. Qui tutti si conoscono, si incontrano pigliano u' cafè, e ne fanno il centro della loro vita che vivono con un'ironia impareggiabile. E poi la grandiosità dei suoi palazzi, che sono sopravvissuti ai secoli. Quasi intuisco l'appartenenza che lega la gente di questo luogo ad esso. 1

Eppure non la capisco.

Probabilmente è perchè mi sento straniero in un luogo che non conosco. Tutto sommato, che c'è di diverso nella medesima sensazione che sento quando vado a Milano. Ma Milano è diversa. E' una città che è plagia i suoi abitanti, per soldi, che li prende per la gola e li stritola. Napoli la fanno i napoletani, loro la spendono, non la comprano, loro se la mangiano e non ne sono divorati.

Vi prego, non prendete sul serio questo post. L'ho scritto all'1:00 di notte, in una camera di albergo dove manca la mia vita e non so nemmeno se riuscirò a postarlo dato che il mio cellulare non ha campo. Ma spero di essere riuscito in queste poche parole a descrivere la gioia e la tristezza che mi dividono. Non chiedetemi se Napoli e Milano mi piacciono. Ho solo tanta nostalgia di casa.

powered by IMHO

DoubleBufferPanel: Da ricordare... e di pubblica utilità

Non mettere mai un GradientPanel della SyncFusion come background di una Form soprattutto se la distribuite in Terminal Server.

Lo scrivo perchè questa cosa mi ha fatto perdere un intero weekend di riposo. Se capita anche a voi, una form che durante il rendering conta tanti flash come si possono trovare solo alla notte degli oscar, per almeno una ventina di secondi consecutivi, ricordatevi di questo:

1) non mettete il GradientPanel di sfondo perchè a quanto pare costringe il contenuto ad essere ridisegnato decine di volte

2) Createvi un panel DoubleBufferPanel come il seguente:

using System;
using System.Windows.Forms;

namespace UI.Controls
{
    
public class DoubleBufferPanel : Panel
    {
        
public DoubleBufferPanel()
        {
            
this.SetStyle( 
                ControlStyles.DoubleBuffer | 
                ControlStyles.AllPaintingInWmPaint, 
                
true );
        }
    }
}

Il flag in questione faranno si che il flickering sia praticamente ridotto a zero:

I ringraziamenti ovviamente al maggico Raffaele.

powered by IMHO

Ma si posta comunque...

La settimana sarà anche di fuoco, ma l'organizzazione è predisposta.

Portatile al seguito, chiavetta bluetooth e cellulare carico...

Nel Weblog si posta lo stesso.

powered by IMHO

Una settimana di fuoco

Quella entrante non si può dire che sarà una settimana tranquilla.

Stasera alle 19:00 si prende il volo diretto a Napoli, dove domattina mi attende la prima demo del prodotto che sto sviluppando. Naturalmente oggi, non poteva essere una giornata di pura routine, ma la sindrome da predemo doveva far sentire il suo imperativo.

Mercoledì, mi aspetto una giornata di full immersion in riunione a trarre le conseguenze

Poi Giovedì arriva il sole, e si parte per Milano (ok, ma il sole lo lascio qui... a Milano sapete ancora cos'è?), dove sarò presente al Workshop dell'UgiDotNet. Nemmeno questa una giornata rilassante, ma è la più attesa.

Forza... non fa male!

powered by IMHO

Error Driven Refactoring

Viste le richieste che mi sono state fatte nei commenti al mio precedente post, ho deciso di dare qualche dettaglio in più sulle tecniche di refactoring che ho utilizzato nella realizzazione di IMHO.

Occorre innanzitutto tenere presente che nelle fasi iniziali di sviluppo ho installato il Resharper. Questo tool, prodotto dalla stessa azienda che ha realizzato uno degli IDE più famosi per Java (IntelliJ IDEA), fornisce un bel po' di strumenti utili per rendere più agevole la scrittura del codice in VS.NET 2003 e per fare del vero e proprio refactoring. Quella che preferisco in assoluto è la possibilità di aggiungere gli using automaticamente quando si inseriscono delle classi che non sono mai state utilizzate. Tuttavia dopo pochi giorni di lavoro mi sono visto costretto a disinstallare il tutto. A quanto pare Resharper ha la brutta abitudine di fagocitare quanto più RAM possibile e rende instabile e inutilizzabile Visual Studio. Questo probabilmente perchè ha la pretesa di sostituire totalmente l'intellisense di VS, invece che semplicemente aggiungere le funzionalità mancanti.

Quindi in breve mi sono trovato nudo. Nessuno strumento per poter fare del refactoring assistito, e la necessità come si suol dire ha aguzzato l'ingegno. La chiave di tutto si chiama CTRL+SHIFT+B. Per i due che non sanno di cosa parlo, questa è la combinazione di tasti che compila la solution. Tutta la tecnica, che nel titolo ho sintetizzato con un pomposo Error Driven Refactoring, si basa sul provocare errori di compilazione. Facciamo qualche esempio:

Cambiare il nome ad una variabile, ad un tipo, oppure a un metodo, è il caso più banale. Si va sul membro che si desidera cambiare, lo si cambia e si compila. A questo punto, nel Task Panel si presenteranno un certo numero di errori, talvolta qualche centinaio. Non sempre serve risolverli tutti, perchè se avete mai fatto caso il compilatore più di qualche volta genera due o tre avvisi per lo stesso errore. La mia tecnica prevede di risolvere al massimo la prima decina e poi ricompilare. E avanti così finche il codice non da più errori. Sembra una attività ingrata, ma una volta che si è presa confidenza è più veloce di quello che si possa immaginare. Non è detto che a questo punto il codice compilato funzioni. Ad esempio se usate la reflection per istanziare un tipo è probabile che in fase di compilazione non ci sia alcun errore, mentre quando lo eseguite ovviamente solleva una eccezione. Una bella ricerca testuale non guasta.

Cambiare la firma di un metodo è un'altra cosa abbastanza facile. Analogamente al caso precedente si provoca l'errore cambiando la firma. Talvolta conviene dapprima cambiare il nome del metodo e completare il primo passaggio. Poi si cambierà il tipo di ritorno oppure i parametri e si procede nuovamente alla compilazione. In questi casi occorre avere la cautela di accorgersi quando si cambia il tipo di un parametro con uno che sia compatibile, ad esempio con una classe padre. Il compilatore in questi casi non ci viene in aiuto, ma se contestualmente create una errore fittizio inserendo un carattere estraneo nel nome del metodo è più facile che si ritrovino tutte le chiamate. Inoltre bisognerà avere la cautela di capire che cosa succede nel corpo del metodo. Anche qui un carattere estraneo nel nome del parametro che occorre modificare aiuterà a trovare tutti gli usi che sono stati fatti e a verificare che non vi siano anche errori logici oltre che sintattici. In questo caso non occorre nemmeno ricompilare perchè sarà l'intellisense a indicarci l'errore con una simpatica sottolineatura.

Accomunare alcune classi con un'unica classe padre. Tipicamente in questi casi, si parte dapprima con la realizzazione della classe base vuota e immediatamente la si sostituisce a object nelle classi che dovranno estenderla. Nessun errore dovrebbe presentarsi. Però se si accomunano pià classi significa che si intende spostare uno o più metodi e proprietà ad un livello più basso. Perciò mano amano si fà cut & paste e si trasportano tali metodi nella nuova classe. Ad ogni spostamento si compila e così si individuano ad esempio i membri privati che sono referenziati da tali metodi e si trasportano anch'essi. In breve la classe dovrebbe cominciare ad indicare che alcuni metodi sono sovrascritti e che occorre l'uso dell'operatore new. Questi sono i metodi che sono rimasti nelle altre classi e vanno del tutto cancellati assieme ai membri privati che sono i più difficili da scovare, perchè non danno errore. Ad accomunare spesso è un'interfaccia o una classe astratta. Ne pimo case non c'è alcun problema perchè quando l'interfaccia è finita la si fa implementare alle classi e nel digitare Visual Studio autonomamente creerà i metodi e ad accorgersi se esistono già. Con le classi astratte è un po' più complesso. Si aggiungono i metodi astrtti e quindi si dovranno aggiungere gli override dove mancano oppure creare i metodi vuoi facendosi aiutare dagli errori e dall'intellisense.

Estrapolare delle classi da un progetto per crearne uno nuovo. Questa è la forma di refactoring che mi piace di più. Occorre tenere presente sempre che alcune classi possono essere usate da altri assembly, e che talvolta il codice che si scrive diventa un buon candidato al riutilizzo. Perciò trasportarlo in un altro assembly è vitale. Quindi si crea il nuovo progetto. Io ho l'abitudine di dare al progetto il medesimo nome del namespace che contiene. Questo è di enorme aiuto ad orientarsi nel trovare quello che si cerca. Tornando al problema a questo punto usando il Drag & Drop si trascinano le classi da un progetto all'altro e contestualmente si aggiunge la nuova reference. I progetto dovrebbe compilare immediatamente perchè nelle classi spostate è rimasto il namespace originale. Quindi occorre un bel replace. Si evidenzia il namespace da cambiare e si premo CTRL+H. Quindi ci si assicura di avere lo scope di progetto e si sostituisce con il namespace nuovo. Finalmente il compilatore comincia a dare errori. Questi potranno essere causati dalla mancanza di una reference oppure da uno using sbagliato. Non resta che aggiungere quello che serve e la solution tornerà a ricompilare.

Quelli che ho indicato sono solo alcuni dei casi da gestire. Indicarli tutti mi sembrava improponibile. Quello che mi interessa far capire è che non serve avere dei tool molto evoluti per potersi dedicare alla tecnica del refactoring. A mio parere nessun tool potrà mai arrivare a fare tutto ciò che ci serve, ma con un po' di fantasia si arriva a trovare una soluzione efficace.

Ora non avete più scuse. Refactor your life.

powered by IMHO

Break Heaven Point!

Oggi le statistiche mi hanno segnalato che per la prima volta da quando le ho attivate, i visitatori affezionati hanno superato quelli nuovi. Senza trascurare il fatto che ho battuto tutti i record di presenza.

Day Date Page Loads Unique Visitors First Time Visitors Returning Visitors
Friday 26th November 2004 348 181 87 94

Un grande grazie a tutti e 181 .

powered by IMHO

Pirateria antipirateria

Ho acquistato da poco il DVD di "The Day After Tomorrow", e tralasciando ogni considerazione sulla bontà della pellicola vorrei far rilevare un atto che io considero di vera pirateria legalizzata.

Quando si inserisce il DVD parte uno spot di 2/3 minuti che invita a non duplicare il DVD per questo e per quel motivo. A prescindere gli argomenti più o meno validi a favore o contro la pirateria che personalmente mi trovano molto dubbioso, trovo veramente pirata il fatto che io debba per forza sorbirmi ogni volta questo spottino perchè il lettore si rifiuta di saltarlo. A ben guardare, il fatto stesso che io veda quello spot è indice che il DVD l'ho comprato e quindi non vedo perchè debba essere penalizzato in questo modo assurdo.

Chi intente fare il mio stesso acquisto tragga le proprie conclusioni.

powered by IMHO

Workshop "Architecture & Management" - Il mio calendario

Ho già avuto modo di esprimere il mio disappunto nel notare che sarò costretto a scegliere tra le sessioni da frequentare al prossimo workshop, ma alla fine ho compreso i problemi che hanno portato a questa soluzione e ritengo che sia stato fatto un buon lavoro.

Perciò ho investito qualche minuto nel ragionare obbiettivamente su quali siano gli argomenti che veramente mi interessano e ho buttato giù il mio personale calendario. Sia chiaro che il calendario deriva esclusivamente dal mio interesse sugli argomenti e non ha nulla a che vedere con le persone che tengono gli interventi.

Ecco quindi il calendario

1) ore 10:00 Agile Methodologies (Marco Abis)

Questa è stata la decisione più sofferta, perchè l'intervanto di Lorenzo era di estremo interesse. Però in questo momento ritengo più utile per me comprendere meglio gli argomenti dell'Agile Development prima di altro.

2) ore 11:15 Refactoring applied (Luca Minudel)

Non fosse altro per capire se la mia interpretazione di refactoring come l'ho spiegata in un mio recente post, ho l'obbligo morale di seguire questa sessione. Mi spiace per i Design Pattern che amo estremamente, ma Andrea mi vedrà comunque nel suo successivo intevento

3) ore 12:30 Pranzo

LOL... potrei mancare?

4) ore 14:00 .NET e lo Unit Testing (Andrea Saltarello)

Lo unit testing è un altro obbligo morale. Ho parecchi dubbi su questa materia, e sono sicuro che Andrea saprà chiarirmeli tutti. Nulla contro Adrian, ma il suo intervento esce del filone che ho deciso di seguire per scegliere gli interventi.

5) ore 15:15 Pattern and Practice & Application Blocks: cosa sono e come si usano (Lorenzo Barbieri)

Questa sessione non me la perdo per nulla al mondo, anche perchè sto lavorando da svariati mesi ad una serie di articoli che probabilmente vedranno la luce il prossimo gennaio, sulle pagine di una nota rivista e che riguarda proprio gli application blocks. Pazienza per l'UML, soprattuto quello real world che è di sicuro interesse.

6) ore 16:30 Coffee Break

Sempre che le discussioni con gli oratori non mi impegnino troppo.

7) ore 17:00 Visual Studio 2005 Team System (Francesco Albano)

Parteciperò almeno alla fase iniziale dell'intervento, anche se temo che ad un certo punto dovrò andarmene per non arrivare a casa (350km più a est) troppo tardi. Spero almeno di arrivare alla fine dell'intervento e allontanarmi durante il q&a.

Questo mio calendario ha il solo scopo di far sapere ai partecipanti dove mi potranno trovare, se mi cercheranno, e non esprime in alcun modo un giudizio sugli oratori ne tantomeno un suggerimento. Spero vivamente che il materiale delle sessioni sia reso pubblico così da poterlo leggere con comodo, anche se la mancanza dell'oratore si farà sicuramente sentire.

Mi raccomando, venite in massa. A presto

powered by IMHO

Quiz

Non credo propio di riuscire a raggiungere il livello dei Quiz# di Adrian Florea, ma voglio provare anche io a proporre il mio quiz.

Eccolo di Seguito:

Data una variabile inputValue che può assumere i seguenti valori: 1, 2, 128, 256, 4096, realizzare una formula che converta in una sola volta tale valore in una sequenza di questo tipo: 1 diventa 0, 2 diventa 1, 128 diventa 2, 256 diventa 3, 4096 diventa 4. In particolare a me questa formula è servita per convertire un dato che proviene dal database in un indice di un array che contiene i dati peculiari di ogni valore. Ho dovuto usare una formula perchè essa viene eseguita in una colonna calcolata di un DataTable.

Sono ammessi tutti gli operatori ammessi in una espressione C# ad esclusione dei costrutti ternari ( condizione ) ? vero : falso. Fate attenzione che si tratta di formula e non di algoritmo, perciò for, if, while, switch qui non contano

Usare pure i commenti per le risposte.

powered by IMHO

Un dubbio mi affligge

Ho appena terminato di scrivere un post per il weblog che elenca le sessioni cui parteciperò e i motivi delle scelte. Non so se postarlo subito, o attendere dopo il workshop, perchè non vorrei che qualcuno se la prendesse a male.

Che fare?

powered by IMHO

IMHO: I sorgenti su sourceforge

Visti gli svariati problemi che mi sono stati segnalati con il CVS di sourceforge, ieri sera ho provveduto a rilasciare uno zip contenente tutti i sorgenti di IMHO.

powered by IMHO

Workshop "Architecture & Management"

Sono lieto di annunciare che sono appena riuscito a sistemare le cose per fare in modo di essere presente il 2 dicembre al workshop dell'UgiDotNet. Mi interessa talmente tanto che temo di essermi iscritto addirittura due volte.

Non vedo l'ora.

powered by IMHO

Linkato dall'Italian Agile Movement

Sono onorato di rilevare che sono linkato dal sito dell'Italian Agile Movement di Marco Abis.

Link:Apoteosi del refactoring in un approccio agile

powered by IMHO

Ancora statistiche e sourceforge

Mentre finalmente i download di IMHO stanno decollando, passando dalla media di 5/10 ai 45 di Martedì scorso, sono ancora a caccia di un modo per capire da dove vengono queste visite (430 sempre martedì) e chi sono quelli che scaricano.

Però c'è un'altro particolare che non riesco a comprendere del tutto. Il Rank era decisamente più elevato quando i PageView e i download erano di molto inferiori. Attualmente mi trovo al 1248° posto, mentre tempo fa avevo raggiunto il 178°. Non parliamo poi della percentuale, un vero dogma.

Sourceforge è un ottimo posto dove alloggiare i propri progetti opensource, ma se riuscisse a fare chiarezza su questi punti sarebbe davvero inarrivabile.

powered by IMHO

IMHO: Apoteosi del refactoring in un approccio agile

Chi ha seguito l'evolversi del progetto IMHO probabilmente avrà avuto modo di notare come le feature del software siano andate crescendo mano a mano che passavano i giorni, talvolta le ore. Il motivo è presto detto, per la prima volta, sono riuscito ad applicare una metodologia di sviluppo agile e cercando di focalizzare lo sviluppo delle varie caratteristiche del mio progettino, su quelle che erano le cose essenziali perchè si potesse dire che il software funzionasse.

Questo ha significato ad esempio, non solo pubblicare nella primissima release un prodottino che si limitava a postare nel weblog di un singolo engine, senza alcun supporto per le categorie e per una moltitudine di altre funzionalità, ma anche approcciarsi nello sviluppo prerelease nello stesso modo. Qualcuno avrebbe dovuto vedere cos'era IMHO prima di essere pubblicato, per rendersi conto di cosa sto parlando. Basti pensare che il software è nato da una serie di esperimenti condotti per vedere come funzionava .TEXT e il componente DHTMLEdit. Mano a mano questi esperimenti sono diventati un software, raffinando il codice e trasformandolo da un'ottica semplicemente strutturata ad una propriamente object oriented.

Per ottenere questo, la massima parte del merito va al refactoring. Sono rimasto molto stupito da quello che si può ottenere applicando bene in refactoring al codice. Spesso, tempo fa ho ragionato su quella che chiamavo l'entropia del codice, quando una serie di modifiche ripetute nel tempo allo stesso programma causa una complessità tale da richiedere il rifacimento totale del software. Come mi sbagliavo, questo non è il risultato della modifica del codice, ma solo della sua incauta modifica, solitamente per false questioni di economicità. 

Occorre tenere presente che spesso, quello che si può capire, leggendo e soprattuto scrivendo qualche decina di righe di codice, è infinitamente superiore a quello che una seppur approfondita analisi e progettazione potranno mai raggiungere. E questo apre le porte al refactoring. Non voglio ora presentarmi come un estremista del refactoring, ma ritengo che utilizzandolo bene, si possa tranquillamente scrivere una ottima applicazione partendo quasi senza aver definito alcun design, per il semplice fatto che mentre si scrive il codice questo design emergerà automaticamente (sempre che lo si voglia fare naturalmente). L'importante è avere ben chiaro in testa, quali sono gli obbiettivi che si devono raggiungere e soprattutto averli organizzati bene in ordine di apparizione. Un esempio che vale per tutti in IMHO è ad esempio la differenza che esiste tra la prima release e l'attuale implementazione dei pluggable engines. Inizialmente gli engine non esistevano proprio. Vi era semplicemente una serie di metodi, inseriti nello strato di logica che incapsulavano le chiamate al webservice di .TEXT.

Scrivendo questo codice però mi sono reso conto che tali metodi potevano tranquillamente incapsulare qualsiasi engine di weblogging e perciò ho deciso di estrapolarli dallo strato di logica e di includerli in una classe che in quel momento rappresentava esclusivamente l'engine di .TEXT. Il passo successivo è stato quasi automatico. Data l'esigenza di interfacciarsi con un numero imprecisato di engines, ecco nascere una EngineFactory, e la classe astratta EngineAdapter. Ecco quindi implementati assieme un pattern AbstractFactory e un Adapter a collaborare per rendere IMHO poliglotta.

Far diventare plugin un adapter ha comportato semplicemente la modifica della factory. Ancora una volta pochi colpi di refactoring e il gioco è fatto. Però a questo punto, è nata l'esigenza di rendere più adeguata a questo compito l'interfaccia dell'adapter. fino a questo momento esso aveva dei metodi che rispecchiavano i parametri richiesti dalle chiamate a .TEXT, ma altri engine necessitavano di altri parametri. Anche questa volta il refactoring è stato la chiave. Una riorganizzazione della classe Post e i parametri dei metodi sono stati raggruppati tutti in una istanza di Post.

Ho già avuto modo di dissertare sulla propedeuticità dei commenti, nel provocare sessioni di refactoring dagli eccellenti risultati. Questo dimostra se ce ne fosse bisogno, non solo la positività del commentare, ma anche che è la presa di coscienza del codice che causa la sua revisione e riorganizzazione e quindi anche la sua qualità. Commentare è un'attività che richiede di ripensare ai motivi per cui si è scritto del codice, al perchè si sono adottate determinate soluzioni e quindi spinge a chiedersi se esse siano quelle giuste, se non si poteva fare meglio e di riflesso porta a realizzare questi pensieri.

Ora trovo queste metodologie indispensabili, non fosse altro perchè sono incredibilmente foriere di buoni risultati e stimolano la creatività, dato che suggeriscono la direzione verso la quale focalizzarla senza disperdere le energie nel creare cose che non saranno mai utilizzate.

powered by IMHO

Il cestino e la sua anticamera

Mi succede spesso di produrre un numero imprecisato di files durante il normale lavoro, che poi puntualmente affollano il mio desktop, e non so mai se sia il caso di buttare. Oggi la svolta... ho deciso di risolvere così:

ROTFL

powered by IMHO

Whitehorse and Yukon

Ecco cosa erano Whitehorse e Yukon prima di diventare nomi in codice si progetti Microsoft...

Source: On product code names...

Quasi quasi mi piacevano di più prima.

powered by IMHO

Firefox odia i riquadri alla Boschin... ho sistemato

In questo post mi è stato segnalato un problema nel mainfeed di UgiDotNet: Firefox odia i riquadri alla Boschin... :)

Ora ho sistemato il post, ma volevo segnalare che in questo caso non è colpa di IMHO, ma di uno strano "mix" di post da IMHO, cut&paste e ripubblicazione. Pare che durante questo processo i code comments dell'esempio siano stati tradotti in veri tag html con le conseguenze che avete visto.

Chiedo scusa, avrei dovuto controllare i post online prima di chiudere per andare a dormire. Comunque stavolta firefox è stato meno efficace del solito...

powered by IMHO

IMHO: Creare un formatter custom

IMHO Instant Blogger è stato realizzato cercando di conferirgli la massima estensibilità, per consentire ai "volonterosi" di customizzare il funzionamento del software e di aggiungere nuove funzionalità. Oltre ai pluggable engine, che consentono la comunicazione con qualsiasi sistema di weblogging, nella versione #1787 sono stati introdotti i Formatters.

Le potenzialità dei formatters è ampiamente dimostrata dal Code Snippet Editor, ma dando uno sguardo ravvicinato al funzionamento di un formatter è evidente che le possibilità offerte da questa tecnica sono innumerevoli. Creare un formatter è un'operazione accessibile a chiunque disponga di un compilatore .NET qualsiasi e comporta semplicemente l'estensione di una classe astratta e l'assegnazione di un attributo all'assembly.

Chi desiderasse cimentarsi in questa attività deve innanzitutto reperire gli assembly Elite.IMHO.Data.dll e Elite.IMHO.Formatters.dll, che contengono tutto ciò che è necessario per la comunicazione con IMHO e l'implementazione dei formatters. In particolare la prima cosa da fare è estendere la classe Elite.IMHO.Formatters.Formatter, riportata nel riquadro:

//////////////////////////////////////////////////////////////////////////////
//
// File: Elite.IMHO.Formatters.cs
// 

using System;
using System.Windows.Forms;

using Elite.IMHO.Formatters;
using Elite.IMHO.Data.Extension;

namespace Elite.IMHO.Formatters
{
    
// Rappresenta un plugin di tipo formatter
    
public abstract class Formatter : Plugin
    {
        
// costruttore
        
public Formatter()
        {
        }

        
// formatta l'oggetto fornito in input
        
public abstract object Format( object inputData );
        
// formato dei dati in input
        
public abstract string InputDataFormat { get; }
        
// formato dei dati in output
        
public abstract string OutputDataFormat { get; }
    }
}

//////////////////////////////////////////////////////////////////////////////
//
// File: Elite.IMHO.Data.Extension.cs
//

using System;
using System.Collections;

namespace Elite.IMHO.Data.Extension
{
    
// Rappresenta un plugin di IMHO
    
public abstract class Plugin
    {
        
// Nome del plugin
        
public abstract string Name { get; }
        
// Autore del plugin
        
public abstract string Author { get; }
        
// Guid univoco del plugin
        
public abstract Guid PluginGuid { get; }
        
// configura il plugin
        
public abstract void Configure();
        
// Dati di configurazione
        
public abstract Hashtable ConfigurationData { getset; }
        
// Informa il runtime se il plugin ha una configurazione
        
public abstract bool HasConfiguration { get; }
    }
}

Occorre tenere presente che questa classe estende a sua volta Elite.IMHO.Data.Extension.Plugin (anch'essa riportata nel riquadro), quindi sarà necessario implementare anche alcuni metodi e proprietà ereditate da essa. Nella scrittura del codice sono degni di particolare rilievo i metodi Configure() e Format(), responsabili rispettivamente della configurazione del plugin e della formattazione vera e propria del testo. Le altre proprietà sono autoesplicative e riguardano molto la determinazione delle caratteristiche del plugin, per la visualizzazione nell'interfaccia e per la comunicazione con esso.

Per formattare un testo occorre definire nella proprietà InputDataFormat e OutputDataFormat, rispettivamente il formato con cui il plugin si attende che gli vengano forniti i dati e quello che restituisce. Per assegnare queste proprietà si possono usare le costanti definite nella classe System.Windows.Forms.DataFormats, relativa la ClipBoard. I dati saranno cosìforniti al metodo format sotto forma di object e da esso dovranno essere restituiti dopo la formattazione.

Il medoto Configure() dal canto suo si aspetta di trovare nella proprietà ConfigurationData una Hashtable che contiene le coppie nome-valore che rappresentano la configurazione del plugin. Questo metodo viene chiamato esclusivamente se la proprietà HasConfiguration restituisce true.

Una volta che il plugin è completo, l'installazione comporta la creazione di una cartella nella directory formatters. In tale cartella verranno depositati gli assembly e i file che compongono il plugin, ad esclusione degli eventuali assembly satellite che invece dovranno essere installati nella apposita cartella nella root dell'installazione.

Ho in mente svariati tipi di formatters e probabilmente da qui a pochi giorni potrò rilasciarne qualcuno (non prima di aver risolto la gestione delle immagini). I formatters comunque sono un buon punto di partenza per integrare IMHO con altre applicazioni. Ad esempio si potrebbe creare un plugin che si connetta ad una base dati dalla quale prelevare informazioni da postare in un weblog di un portale.

Ma forse sto sognando ad occhi aperti...

powered by IMHO

IMHO: Aggiungere il supporto ad un nuovo linguaggio

Il Code Snippet Editor, introdotto con la versione #1787 di IMHO viene fornito del supporto al Syntax Highlighting per 5 linguaggi predefiniti (C#, VB.NET, ILASM, XML e HTML). Il supporto alla colorazione del codice è ottenuto mediante una stretta integrazione con l'editor ICSharpCode.TextEditor, cui l'algoritmo di trasformazione in HTML si aggancia per leggere le informazioni sulla formattazione, sui colori e sui font. Questo significa che potendo aggiungere una nuova definizione di Syntax Highlighting per l'editor, automaticamente questa sarà ereditata anche dall'HTML prodotto per essere immesso nella pagina del weblog.

Il supporto alla colorazione in IMHO è realizzato esponendo all'esterno i file che contengono le regole di colorazione e quindi quanto detto finora, non solo è possibile, ma è anche auspicabile. Creare una nuova sintassi colorata non è una cosa semplicissima, ma nemmeno impossibile. Occorre innanzitutto trovare la cartella \formatters\CodeSnippet\styles nella directory di installazione. In questa cartella è presente un file SyntaxModes.xml che funge da indice dei file di regole.

<SyntaxModes version="1.0">
    <Mode 
file       = "CSharp-Mode.xshd"
          
name       = "C#"
          
extensions = ".cs;"/>
    <Mode 
file       = "VBNET-Mode.xshd"
          
name       = "VisualBasic.NET"
          
extensions = ".vb;"/>
    <Mode 
file       = "VBNET-Mode.xshd"
          
name       = "IL Asm"
          
extensions = ".il;"/>
    <Mode 
file       = "HTML-Mode.xshd"
          
name       = "HTML"
          
extensions = ".html;.html;"/>
    <Mode 
file       = "HTML-Mode.xshd"
          
name       = "XML"
          
extensions = ".xml;"/>
<
/SyntaxModes>

In questo file è possibile aggiungere tutti gli elementi <mode> necessari. Essi dovranno fare riferimento ad un file con estensione .xshd che contiene la definizione delle regole di colorazione del linguaggio. Per la spiegazione della sintassi del file di definizione, vi rimando al sito di ICSharpDevelop nel cui forum si può trovare molto materiale in merito.

powered by IMHO

Animazioni in XAML

Un po di codice XAML per un'animazione che mi riporta ai vecchi tempi di Amiga.

Bouncing Back...

powered by IMHO

IMHO: Installare il plugin per RssBandit e SharpReader

Dalla versione #1769 di IMHO è disponibile il plugin IBlogExtension che consente di collegare l'instant blogger agli aggregators che supportano questo tipo di interfaccia. Tra di essi si annoverano RssBandit (nella figura a fianco) e SharpReader, ma anche NewsGator .

Mentre la configurazione di NewsGator mi è ancora oscura, l'installazione del plugin negli altri due è piuttosto semplice. Innanzitutto occorre trovare la cartella che contiene il file imho.exe e al suo interno reperire il folder IBlogExtension. A questo punto è sufficiente copiare i file contenuti nella cartella, compresa la directory che contiene gli assembly satellite nel folder plugin che si trova nella directory di installazione del vostro reader preferito.

Attenzione che occorre copiare i file e non la cartella. Ora, riavviando il reader, apparirano le voci "Crea una citazione con IMHO" e "Crea un link con IMHO". E' importante notare che questi link sfruttano un eseguibile imhoie.exe, originariamente creato per estendere Internet Explorer, che adotta .NET Remoting per comunicare i dati dalla citazione o del link ad IMHO. E' obbligatorio che IMHO sia già in esecuzione, anche se minimizzato, perchè esso possa ricevere i dati e aprire la corrispondente finesta di edit.

L'eseguibile imhoie.exe è un buon punto di partenza per creare le proprie estensioni, infatti esso accetta dei parametri da riga di comando che trasmette a IMHO. Essi sono:

imhoie.exe -l link title

imhoie.exe -s tempfile link title 

Lo switch -l causerà la comparsa di un link con il title specificato, mentre -s inserirà nell'editor anche il testo salvato nel file tempfile.

Buon divertimento.

powered by IMHO

Google love #2

Sono letteralmente basito. Da quando ho attivato un po' di statistiche decenti sul mio weblog mi sto rendendo conto sempre più spesso della potenza di Google. Notizie pubblicate meno di 4 giorni fa, sono già in prima pagina su Google, con chiavi di ricerca decisamente efficaci.

Non so se sia Google ad amare me... ma se così fosse l'amore è ricambiato.

powered by IMHO

.TRAQ: Il progetto è su Sourceforge

Ho appena ricevuto la notizia che il progetto .TRAQ è stato accettato da www.sourceforge.net

L'indirizzo della pagina summary è: http://sourceforge.net/projects/dottraq. Ovviamente lo stato del progetto è "Planning".

powered by IMHO

IMHO 1.0.1787 con Code Snippet Editor

Ci siamo. Come promesso in un precedente post, la nuova versione di IMHO è finalmente realtà, e per la prima volta da quando è nato, non è più una beta. La decisione di farlo finalmente diventare una release stabile non significa necessariamente che lo sviluppo sia finito. Molte altre novità sono in cantiere, ma vedranno la luce nella versione 1.1.

Ma ecco quali sono le novità della release #1787:

  1. Introduzione dei plugin di tipo formatter. Nella finesta di edit vede la luce un nuovo menù, denominato "Formatters". Esso è popolato con dei plugin che hanno la capacità di ricevere in input il testo selezionato, di formattarlo e in seguito di inserirlo nuovamente nell'HTML della pagina. Trattandosi di plugin è molto facile implementare i propri, per svolgere formattazioni che si usano comunemente. Ad esempio, Luca Minudel non avrà alcuna difficoltà a crearsi un plugin che formatti le maiuscole come è solito fare.
  2. Il Code Snippet Formatter la cui immagine è visibile a fianco, è il primo dei formatter che ho realizzato. E' un editor testuale con Syntax Highlighting, che sfrutta l'editor ICSharpCode.TextEditor , per consentire la realizzazione semplice di brevi spezzoni di codice che poi verranno inseriti nella pagina mantenendo la colorazione propria del linguaggio prescelto. Sono attualmente disponibili C#, VB.NET, IL, XML e HTML ed entro breve conto di rilasciare anche il formato J#/Java e probabilmente anche un formato HTML/ASP.NET che comprenda la colorazione dei codeblocks. Il codice può essere inserito nella pagina in vari modi, tra i quali anche un "riquadro scrollabile". L'HTML generato è pienamente compatibile con Internet Explorer e Firefox. L'editor è configurabile per mezzo del pannello di preferenze, per definire i colori dei riquadri nella pagina. Ecco un piccolo esempio:

    /// 
    /// The main entry point for the application.
    /// 

    [STAThread]
    static void Main()
    {
        Console.ReadLine();
    }

  3. Supporto alla configurabilità dei plugins. I vari tipi di plugin sono stati accumunati da una unica classe astratta da cui essi ereditano. Grazie a questo, nel pannello delle preferenze è ora presente una sezione dedicata ai plugin, che permette di configurare singolarmente i plugin che supportano tale funzionalità. Questo in realtà è anche il primo passo verso la piena gestione delle immagini, necessario data la diversa natura dei protocolli supportati da IMHO. La gestione delle immagini sarà la prima feature della release 1.1.
  4. Supporto al draft. Dato che mi avanzava un'oretta di tempo ho introdotto la possibilità di postare solo parte dei post creati. Per mezzo di una checkbox è possibile scegliere quali post inviare. Inoltre ora quando si salva un post e si clicca sul relativo balloon viene pubblicato unicamente il post appena salvato.
  5. Visualizzazione delle categorie nella barra di stato della finestra di edit. Per facilitare la lettura, le categorie selezionate vengono evidenziate nella barra di stato.
  6. Gli errori segnalati sulla release #1777 sono stati tutti corretti . In particolare ora al titolo viene applicata una codifica di tipo HTML e viene nuovamente estratto il contenuto dei tag invece che inviare tutta la pagina. Chi avesse difficoltà ad editare post inviati con la versione 1777 consiglio di usare firefox, che diversamente da Internet Explorer riesce a visualizzare correttamente i post anche se contengono questi errori.

Spero che la nuova versione sia gradita a tutti. Vorrei ringraziare tutti coloro che hanno avuto il coraggio in queste settimane di installare le versioni beta e di indicarmi i miglioramenti necessari. Senza di loro IMHO sarebbe notevolmente meno usabile e completo.

Chiunque trovasse altri bugs, o semplicemente avesse nuovi suggerimenti può scrivermi per mezzo della form in questo weblog oppure (meglio) usando il sistema di bugtracking di SourceForge.net

Ancora grazie.

powered by IMHO

L'esplosione dei PageView

Come evidenziato dal grafico qui sotto, il progetto IMHO sta vivendo una vera e propria esplosione dei PageView, nelle sue pagine su SourceForge. Questo sta probabilmente ad indicare che la pagina ha raggiunto un buon livello in Google. Negli ultimi 4 giorni ho avuto una media di 423 visite/giorno.

Purtroppo però non è dato sapere da dove vengono i visitatori e per quale tipo di ricerche. Questo mi potrebbe consentire di capire qual'è l'interesse suscitato, e magari trovare un modo per incrementare i downloads, che invece come si può vedere rimangono sempre piuttosto bassi, anche se tutto sommato non sono proprio deludenti.

Non so dove sbattere la testa per conoscere queste informazioni, spero ci sia qualcuno che conosca meglio Sourceforge, che mi possa dare un'indicazione, ma ad oggi mi sembra di poter dire che purtroppo questa funzionalità non è implementata. Peccato.

powered by IMHO

Progetto web cercasi: chiamiamolo .TRAQ

Il dado è tratto. Dato che non vi sono più commenti in merito ritengo di poter sintetizzare le varie segnalazioni giunte nel seguente nome:

.TRAQ (si legge dot Track)

Il nome è un po' ambizioso, ma il progetto non è da meno...

Inoltre direi che è sostanzialmente accolta la proposta di Adrian per la parte relativa ai bugs, che se applicabile si chiamerà BugsBanny (con la "a"). Ho predisposto una categoria nel mio blog per chi volesse rimanere aggiornato sulle novità del progetto sul quale a breve comincerò a lavorare.

powered by IMHO

IMHO: Lo stato dell'arte.

Forse qualcuno, spero molti, si staranno domandando che fine ha fatto IMHO. Sono passati un bel po' di giorni dall'ultima release, invero un po' sfigata. Attualmente sto lavorando tutte le sere ad una pesante ristrutturazione dei Plugin, per dare la possibilità di avere configurazioni perculiari di ogni singolo modulo aggiuntivo. Inoltre ho terminato e sto testando quella che spero sarà una gradita feature: Il Code Snippet Editor.

Si tratta di un plugin che permette di prelevare degli spezzoni di testo e di editarli e formattarli come se si trattasse di un pezzo di codice, scritto nei più svariati linguaggi, con tanto di Syntax Highlighting e di qualche altro gadgettino. C#, VB.NET, ILDASM, XML e HTML sono quelli che saranno supportati da subito, ma probabilmente poi toccherà anche a Java.

Portate pazienza, spero di rilasciare il tutto per l'inizio della prossima settimana. Ovviamente opportunamente debuggato!

powered by IMHO

Una cosa che mi piace di Firefox

Nessuno creda che dicendo questo voglia sminuire FireFox, ma c'è una cosa che mi piace davvero molto.

L'icona.

Sembrerà strano, ma la trovo molto bella ed efficace. Finalmente un po' di colore in questo mondo bluastro...

powered by IMHO

Un tartufo per la pace...

Apprendo stamattina da un noto quotidiano che "le due Simone" (ve le ricordate ancora vero?), quest'oggi saranno ospiti di un paesello nel senese, che conferirà loro il premio "tartufo per la pace", una sorta di Nobel culinario per la pace.

La cosa mi ha regalato un sorriso, derivante dal fatto che qualcuno in tempi non sospetti aveva detto che avrebbero finito per aprire un ristorante. Mi sembra un bel passo in questa direzione...

"Tartufo per la pace", suona davvero ilare. LOL.

powered by IMHO

A 24 ore dal voto su clonazione invita 5 persone a scrivere

Sono già 1.379 le persone che hanno inviato la richiesta, rivolta agli ambasciatori dei
paesi incerti presso l'Onu, di fermare qualsiasi risoluzione volta ad impedire la libertà
di ricerca scientifica sulle cellule staminali embrionali e di evitare la equiparazione
tra la clonazione riproduttiva e quella terapeutica.

In questo momento, a poche ore dal voto finale, si sta dibattendo se rinviare la
decisione o arrivare all'approvazione di un testo meramente dichiarativo, in cui non si
faccia menzione di un mandato Onu di preparazione di una convenzione per la messa al bando
della clonazione terapeutica.

Sono dunque ore decisive, ore in cui è necessario moltiplicare al massimo lo sforzo e le
voci di chi difende le ragioni della libertà di ricerca.

Per questo ti chiediamo un ulteriore sforzo. Gira il messaggio qui sotto a quante più
persone possibili.

Invia questa email cancellando questo messaggio introduttivo.

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

Il 19 Novembre 2004, il Comitato degli affari legali presso l’Assemblea Generale delle
Nazioni Unite prenderà la decisione finale sulla proposta, avanzata fra gli altri dal
Costa Rica, dagli Stati Uniti, dall’Italia, dal Portogallo, con il supporto della Santa
Sede, di bando di ogni forma di “clonazione umana", inclusa la “clonazione terapeutica”
(tecnicamente chiamata “trasferimento nucleare”)

Per mandare un messaggio alle delegazioni presso le Nazioni Unite degli Stati indecisi
clicca qui (http://www.radicalparty.org/stemcells/onu.php?lang=it)

La decisione di questa settimana sarà presa senza aver affrontato gli aspetti scientifici
della questione, che avrebbe consentito di chiarire la differenza fra clonazione
riproduttiva e clonazione terapeutica.

La ricerca sulla clonazione terapeutica è sicura, etica e può condurre a trattamenti o
cure per patologie come l’Alzheimer, il diabete giovanile, il Parkinson, la Sclerosi
multipla, la Sclerosi laterale amiotrofica, le patologie cardiovascolari, le lesioni del
midollo osseo, la paralisi, il cancro e l’HIV/Aids.

Ti chiediamo di inviare urgentemente un messaggio agli Ambasciatori dei paesi indecisi
per chiedergli di non adottare qualsiasi risoluzione che chiudesse il dibattito sulla
“clonazione umana” stabilendo una serie di proibizioni che potrebbero avere un impatto
disastroso sulla vita di milioni di persone e più in generale sulla libertà di ricerca
scientifica.

Per mandare un messaggio alle delegazioni presso le Nazioni Unite degli Stati indecisi
clicca qui (http://www.radicalparty.org/stemcells/onu.php?lang=it)

Source: http://www.radicalparty.org

powered by IMHO

Bill Gates parla a Milano: "Il futuro è nella scienza"

Ecco per chi non è potuto andare ad Assago, un breve sunto del discorso di Bill Gates.

Source: Repubblica.it

Tanto per cambiare Repubblica ha fatto casino... Qualcuno dovrebbe dirglielo che non c'è nessun FuturShow a Milano!

powered by IMHO

Salutatemi Bill

Purtroppo, per esigenze di lavoro, nemmeno questa volta potrò essere presente ad una manifestazione che mi interessa davvero molto. La mia speranza è quella di riuscire a ritagliare una giornata per il 2 Dicembre.

Perciò chi avrà occasione di incontrarlo, porti i miei saluti a Bill, ma anche a tutti gli altri oratori che terranno sicuramente delle sessioni di enorme interesse.

piangente

powered by IMHO

Progetto web cercasi: diamogli un nome...

So già che mi sarà detto che cominciare dal nome non è una buona idea, però io sono abituato a chiamare le cose con il loro nome, e se queste non ce l'hanno diventa un problema. Quindi anche per "esigenze editoriali", vorrei provare a trovarlo subito.

Ecco in due parole di cosa si dovrebbe occupare il software, sintetizzando le idee che sono state proposte nei commenti al mio precedente post :

  1. Tracking dei bugs in un progetto. Per estensione suggerirei che il tracking sia esteso a tutte le fasi di sviluppo e non solo al debugging.
  2. Gestione della knowledge base aziendale relativa ai progetti
  3. Integrazione con software di versioning per collegare le attività di manutenzione con quelle di commit dei progetti
  4. Supporto alle attività di raccolta dei requisiti e alla gestione dell'avanzamento del processo produttivo
  5. Supporto alle attività di testing (funzionale e unit testing)
  6. Supporto alle attività di documentazione

Si tratta solo di una piccola scaletta per aiutare nell'invenzione del nome. Mi riservo di definire meglio i punti sopraelencati in un documento apposito che poi renderò pubblico attraverso il mio blog.

Il nome che propongo io è "Traq ". Breve, conciso, efficace e significativo.

Vi piace? Altre proposte?

powered by IMHO

Una simpatica barzelletta...

Today, I came across something interesting.

Event : An insect falls into a mug of beer...

Reactions:
Englishman: Throws his mug away and walks out.
American: Takes the insect out and drinks the beer.
Chinese: Eats the insect and throws the beer away
Japanese: Drinks the beer with insect as it is coming free

Indian: Sells the beer to the American and insect to the Chinese and gets a new mug of beer. ......INTELLIGENT!!...

Pakistani: Accuses the Indian for throwing insect into his beer -Relates the issue to Kashmir -Asks the Chinese for Military aid -Takes a loan from the American to buy one more mug of beer.

Source: I love my country

Aggiungerei:

Italiano: Cerca di scambiare la birra con un tedesco facendogli credere che sia aromatizzata con una speciale tecnica.

powered by IMHO

ONU: azione urgente sulla Clonazione Terapeutica

Il 19 Novembre 2004, il Comitato degli affari legali presso l’Assemblea Generale delle Nazioni Unite prenderà la decisione finale sulla proposta, avanzata fra gli altri dal Costa Rica, dagli Stati Uniti, dall’Italia, dal Portogallo, con il supporto della Santa Sede, di bando di ogni forma di “clonazione umana", inclusa la “clonazione terapeutica” (tecnicamente chiamata “trasferimento nucleare”)

La decisione di questa settimana sarà presa senza aver affrontato gli aspetti scientifici della questione, che avrebbe consentito di chiarire la differenza fra clonazione riproduttiva e clonazione terapeutica.

La ricerca sulla clonazione terapeutica è sicura, etica e può condurre a trattamenti o cure per patologie come l’Alzheimer, il diabete giovanile, il Parkinson, la Sclerosi multipla, la Sclerosi laterale amiotrofica, le patologie cardiovascolari, le lesioni del midollo osseo, la paralisi, il cancro e l’HIV/Aids.

Ti chiediamo di inviare urgentemente un messaggio agli Ambasciatori dei paesi indecisi per chiedergli di non adottare qualsiasi risoluzione che chiudesse il dibattito sulla “clonazione umana” stabilendo una serie di proibizioni che potrebbero avere un impatto disastroso sulla vita di milioni di persone e più in generale sulla libertà di ricerca scientifica.

Per mandare un messaggio alle delegazioni presso le Nazioni Unite degli Stati indecisi clicca qui

Source: http://www.radicalparty.org

powered by IMHO

Donate cicli di CPU in beneficenza...

Chi ha un pc che rimane acceso 24 ore su 24, può donare i cicli di CPU che vengono sprecati durante la notte a questo progetto che si propone di creare una Computing Grid su scala mondiale per scopi bnefici.

World Community Grid - Home

powered by IMHO

ASP.NET 2.0 and Visual Web Developer hit ZBB

ZBB = Zero Bug Bounce.

Purtroppo a quanto pare la BETA 2 comunque non sarà pubblicata prima di Gennaio.

ASP.NET 2.0 and Visual Web Developer hit ZBB

powered by IMHO

R'N'B Radio SNJ

Sto ascoltando da un po' di giorni radio SNJ. Ottima musica, vi invito a provarla, ma permettetimi un appunto. Gli intermezzi tra un brano e l'altro ti spaccano i timpani!!! Io lo ascolto in cuffia a assicuro che sono una tortura.

powered by IMHO

Gmail Image Viewer

Stefano Demiliani nel suo blog segnala un add-on per gmail su Internet Explorer

Gmail Image Viewer

powered by IMHO

TIP: Eliminare il web services di associazione file da XP

Me lo sono chiesto almeno un milione di volte. Ma si potrà togliere questo inutile popup che fa perdere solo tempo... ecco la risposta

Stop the Windows XP file association web service

powered by IMHO

Feed Burner

Ho trovato questo simpatico servizio che permette di creare un bannerino con i post più recenti del proprio blog.

Di .NET e di altre amenita'

http://www.feedburner.com/

powered by IMHO

Progetto Web cercasi

Sto pensando di unire l'utile al dilettevole, e da qualche giorno ho in mente di cominciare a lavorare su un progetto ASP.NET utilizzando il Framework 2.0. allo scopo di fare pratica sul campo. Il fatto è che ho molti dubbi su che pprogetto affrontare. Inizialmente mi era venuto in mente di fare un porting di BugZilla per .NET, ma non sono del tutto certo di riuscire a fare meglio di quello che già c'è.

Infatti l'idea non è quella di fare un progettino fine a se stesso, ma di creare un vero e proprio progetto OpenSource, che possa avere qualche riscontro.

Qualche idea?

powered by IMHO

ASP.NET 2.0: annunciate modifiche a Directory Naming e Compilation Model

In questo post si riportano delle modifiche, già presenti nella CTP di novembre al modello di compilazione di ASP.NET e al naming delle directory. Le modifiche vanno nella direzione di quanto suggerito dai membri della comunità degli sviluppatori.

Source: ASP.NET 2.0 product design changes between Beta 1 and Beta 2

powered by IMHO

Un home Computer del 2004

Ecco come nel 1950 si pensava sarebbe stato un home computer del 2004. Quello che più mi lascia perplesso è il "timone" che si vede sulla sinistra.

Saurabh's Believe It Or Not : Home Computer for 2004

Curiosamente questo mi ha fatto pensare a come noi pensiamo saranno gli home computer nel 2058 e a come invece saranno realmente.

powered by IMHO

Chiamata all'azione

Venerdì 19 Novembre il Sesto Comitato dell'Assemblea Generale delle Nazioni Unite voterà sulla proposta del Costa Rica per la messa al bando della tecnica del "Trasferimento Nucleare", detta anche "clonazione terapeutica". Per opporti a questa proposta proibizionista, puoi non solo firmare l'appello sottoscritto da 71 Premi Nobel, ma anche contattare direttamente (con un unico click) le ambasciate e i ministeri dei Paesi ancora incerti.

powered by IMHO

MSDN Web Developer Kit

Per gli sviluppatori ASP.NET un kit da Microsoft.

MSDN Web Developer Kit

powered by IMHO

Non sono superstizioso ma...

Chi mi ha seguito nello sviluppo di IMHO, si sarà reso conto che nell'ultima release si sono verificati più problemi che in tutte le altre messe assieme. Non sono superstizioso, ma devo rilevare che si tratta della build 1777.

Che significhi qualcosa?

powered by IMHO

IMHO: problema di titolo

Quello che è successo nel mainfeed di UgiDotNet mi ha portato a conoscenza di un bug di IMHO. Vi prego di non mettere tag HTML nel titolo del post perchè non vengono correttamente codificati. Appena posso correggo l'errore.

Vogliate accogliere le mie scuse.

powered by IMHO

IMHO... la prossima release

Ci sto lavorando in ogni minuto libero. Non ci vuole ancora molto...

[ImhoFeature( Feature.New )]
private string DoIt()
{
    
return "pochi giorni ancora e...";
}

Qualcuno ha indovinato quale sarà la prossima novità?

powered by IMHO

Buon Natale

La visita al centro commerciale odierna mi ha messo di buon umore.

Luci scintillanti, opulenti scaffali, Pandori e Panettoni, strenne di ogni genere e per ogni tasca, ma...

...da quando hanno anticipato il Natale al 25 Novembre?

powered by IMHO

Un blog o un'opera d'arte?

Dal weblog del mio amico Francesco, ho conosciuto il più bel blog che abbia mai visto.

InTreno è un'esercizio di immaginazione. Con poche e semplici parole da vita ad una foto, dipinge un personaggio, e ne rivela l'essenza.

Quante volte involontariamente l'abbiamo fatto?

powered by IMHO

IMHO 1.0.1777 - Problemi di installazione

In molti mi hanno segnalato che ci sono dei