Di .NET e di altre amenita'

maggio 2006 Blog Posts

ObjectDataSource e conversioni di tipi. Siamo certi che funziona?

Abbiate pazienza, non è mia abitudine lamentarmi, ma stavolta lo sbottare ci sta davvero tutto. Ma prima del fatto è bene che vi racconti l'antefatto. Stasera, io e il collega Andrea Dottor ci siamo scontrati con un comportamento apparentemente inspiegabile. Un pezzo di codice apparentemente perfetto falliva miseramente e inspiegabilmente. In buona sostanza quello che stavamo facendo era tutto sommato semplice; Un campo di tipo Textbox riceveva una stringa in che rappresentava una valuta, per la precisione "0,5" in seguito tale stringa arrivava al validatore serverside che utilizzando decimal.TryParse() verificava che si trattasse effettivamente di un decimal. Questo controllo, applicato sia con la CultureInfo che senza veniva eseguito perfettamente restituendo un chiaro e lampante "true". Tuttavia, pochi millisecondi dopo, quando la datasource tentava di mappare i campi su un oggetto di business, l'operazione miseramente scoppiava, con il seguente errore: "0,5" is not a valid value for Decimal.

Alla fine, solo analizzanto il codice del framework linea per linea con Reflector siamo giunti a capire il motivo per cui questa banale operazione scoppiava:

private static object ConvertType(object value, Type type, string paramName)
{
      
string text1 = value as string;

      
if (text1 != null)
      {
            TypeConverter converter1 = TypeDescriptor.GetConverter(type);

            
if (converter1 == null)
            {
                
return value;
            }
            
try
            
{
                
value = converter1.ConvertFromInvariantString(text1);
            }
            
catch (NotSupportedException)
            {
                
throw new InvalidOperationException(
                    SR.GetString("ObjectDataSourceView_CannotConvertType", 
                        
new object[] { paramName, typeof(string).FullName, type.FullName }));
            }
            
catch (FormatException)
            {
                
throw new InvalidOperationException(
                    SR.GetString("ObjectDataSourceView_CannotConvertType", 
                        
new object[] { paramName, typeof(string).FullName, type.FullName }));
            }
      }
      
return value;
}

Questo codice, estratto dalla classe ObjectDataSourceView è la causa del misfatto e precisamente la riga che chiama il metodo ConvertFromInvariantString() del TypeConverter. La ObjectDataSourceView, per inciso, è l'oggetto che all'interno della ObjectDataSource si incarica di effettuare le operazioni incapsulando al suo interno una rappresentazine dello storage. La chiamata a ConvertFromInvariantString() scritta in questo modo impone che un dato decimal, ma con tutta probabilità anche una data o un double, debba essere formattato con cultura neutra, e cioè nel nostro caso con il punto al posto della virgola. Una chiamata corretta sarebbe stata la seguente:

value = converter1.ConvertFromString(null, CultureInfo.CurrentCulture, text);

In questo modo la datasource avrebbe tenuto conto della cultura corrente e quindi si sarebbe adeguata al contesto del thread, consentendo alla conversione di avvenire correttamente. Ora, purtroppo i metodi in questione sono privati e perciò non è possibile porre rimedio a questo problema cercando di sostituire la ObjectDataSourceView con un oggetto che sia stato patchato. In realtà credo di avere un'idea per una soluzione, che però tenterò domattina, ma lasciatemi dire che un errore del genere non me lo sarei mai aspettato.

powered by IMHO 1.3

 


per leggere il post originale o inviare un commento visita il seguente indirizzo: ObjectDataSource e conversioni di tipi. Siamo certi che funziona?

ARTICOLO: Un HeaderTemplate per la GridView

L'uso di WebControls di tipo Template può dare al nostro codice una flessibilità molto marcata. In questo articolo, cogliendol'occasione di aggiungere una nuova feature alla GridView, si esplora con dovizia di particolari il meccanismo di funzionamento dei Template. Ora è tardi e me ne vado a dormire... (2:49)

Link: http://www.xedotnet.org/blogs/articoli/archive/2006/05/30/gridview_header.aspx

powered by IMHO 1.3


per leggere il post originale o inviare un commento visita il seguente indirizzo: ARTICOLO: Un HeaderTemplate per la GridView

TFS installato... anche se con qualche inghippo!

Beh, alla fine ci sono riuscito e dopo una giornata densa di attività, partendo da una macchina pulita pulita ho installato nell'ordine Windows 2003, patch varie, Sql Server 2005, altre patch, Sharepoint services, e infine l'agognato Team Foundation Server. Ora tocca configurarlo, ma lasciatemi dire una cosa: bella li, mica la si poteva fare un po' più semplice?

Ora, dopo questo sfogo permettetemi un consiglio. Se intendete ripetere l'epica impresa, prendetevi la guida di installazione, e seguitela passo passo, nel preciso ordine, senza trascurare nemmeno una virgola. Non azzardatevi ad improvvisare nulla, e allenatevi prima su una virtual machine se ne avete la possibilità. E' l'unica speranza che tutto fili liscio e che alla fine, il setup vi saluti con un bonario: "che culo, ti è andata bene!"

Scherzi a parte, prima che qualcuno mi salti alla gola per tentato sacrilegio mi affretterò a dirvi che tutto sommato sono stato favorevolmente impressionato da quello che ho trovato non appena ho aperto il team explorer. A parte il fatto che, qualora non abbiate installato Visual Studio 2005 il setup provvede ad installarne una versione light giusto per potervi mostrare il team explorer, a prima vista l'ambiente è appare veramente semplice e familiare. Voci di menu chiare, una struttura intuitiva e delle schermate davvero semplici ed autoesplicative. Il passo successivo è stato quello di installare il Team Explorer sul mio pc client, e vederlo integrato perfettamente all'interno del mio amato IDE. Le difficoltà si sono presentate quando è venuto il momento di collegarsi al server, semplicemente perchè, quando ho completato l'installazione mi sono illuso di poter chiudere la documentazione e potermela cavare da solo. Invece c'è voluto un po' a capire che TFS usa dei gruppi di sicurezza interni uno dei quali, quello dei licensed users, è quello che consente l'accesso agli utenti al sistema. Coloro che non fanno parte di questo gruppo non possono accedere a TFS e, per inciso, se come me avete la Workgroup Edition dentro questo gruppo non potrete metterci più di 5 utenti, ottenendo così a tutti gli effetti una limitazione nell'uso del server. Dato che la propria identità all'interno di un progetto è a dir poco vitale è evidente che non sarà proprio possibile aggirare in alcun modo il limite.

Per concludere, permettetemi di lasciarvi con un ulteriore consiglio. Lo so che quello che dirò apparirà del tutto ovvio ma credetemi, quando questa cosa mi è successa non era esattamente lampante. Nel gruppo degli utenti con licenza è presente anche l'utente con cui effettuate il setup. Quello che nella documentazione vi viene consigliato di chiamare TFSSETUP e al quale dovrete dare i diritti di amministratore. Ovviamente se il vostro team è composto da esattamente cinque persone vorrete come me garantire l'accesso ai loro utenti di rete, e come me probabilmente vorrete rimuovere l'utente di installazione dal gruppo in questione. Vi dirò, quando ho fatto questo ho sentito per un attimo quel sottile brivido che bene o male tutti conoscete e che viene quando si ha la netta impressione di averla combinata grossa. L'effetto immediato, quando premente OK è quello di essere disconnessi istantaneamente, senza nemmeno darvi la possibilità di tornare sui vostri passi. Ed è proprio la che il brivido acquisirà la consistenza di una terribile certezza. Soprattutto se, prima di compiere l'incauta azione vi sarete dimenticati di concedere al vostro utente di rete i diritti di amministratore su tfs. Ascoltatemi, io ve l'avevo detto di allenarvi su una virtual machine... non prendetevela con me, ma dopo questa furbata vi sarete persi il controllo del server... aaarrrggghhh!!!!!

powered by IMHO 1.3


per leggere il post originale o inviare un commento visita il seguente indirizzo: TFS installato... anche se con qualche inghippo!

I 5 modi peggiori di usare RSS

Questo è proprio divertente:

http://inkblots.markwoodman.com/2006/04/28/top-5-worst-uses-of-rss-and-atom/

Chissa se riesco a convincere mia nonna ad installarsi un Pacemaker Feed.

powered by IMHO 1.3


per leggere il post originale o inviare un commento visita il seguente indirizzo: I 5 modi peggiori di usare RSS

Adj. 1) Impossible to repress or control. Irrepressible!

Mi sono appena iscritto a questo sito che promette bene. Si tratta, di un idea di Amnesty International che con il supporto di The Observer intende portare l'attenzione sulla censura in rete. Ecco come si descrive il sito in home page:

Chat rooms monitored. Blogs deleted. Websites blocked. Search engines restricted. People imprisoned for simply posting and sharing information. The Internet is a new frontier in the struggle for human rights. Governments – with the help of some of the biggest IT companies in the world – are cracking down on freedom of expression. Amnesty International, with the support of The Observer, is launching a campaign to show that online or offline the human voice and human rights are impossible to repress.

Sapete bene quanto mi stiano a cuore questi argomenti e capirete bene perchè ho deciso di aggiungere nella barra laterale del mio weblog l'interessante gadget che fornisce irrepressible . Si tratta di un roller che mostra a rotazione le frasi censurate in varie occasioni da paesi totalitari e non totalitari. La fanno da padrone naturalmente i paesi arabi come Siria, Iran e naturalmente non possono mancare Cina e Cuba.

powered by IMHO 1.3


per leggere il post originale o inviare un commento visita il seguente indirizzo: Adj. 1) Impossible to repress or control. Irrepressible!

ASP.NET 2.0: Uno StaticSiteMapProvider molto flessibile

Su xe.net è apparso il mio secondo articolo che questa volta porta con se un componente riutilizzabile da non perdere. Si tratta di un SiteMapProvider che semplifica enormemente la creazione di provider custom che attingano i dati della mappa da una qualsiasi sorgente. Nell'esempio allegato all'articolo oltre al codice di questo StaticSiteMapProvider che risolve i problemi di concorrenza che affliggono queste implementazioni, anche un semplice provider alimentato da database SqlServer

Link: Uno StaticSiteMapProvider molto flessibile

Con l'occasione ho anche postato il secondo screencast dedicato al pattern singleton

SCREENCAST: Implementare un Sigleton in C#


per leggere il post originale o inviare un commento visita il seguente indirizzo: ASP.NET 2.0: Uno StaticSiteMapProvider molto flessibile

Community Credit: Sono negli "All Time Earners"

Sono lieto di comunicare che sono appena stato inserito nella classifica delle 15 più attive di tutti i tempi all'interno di community credit. Precisamente mi trovo attualmente al 14“ posto in questa classifica, mentre nella classifica mensile mi qualifico secondo (per ora!)

Andrea Boschin (136525)

http://www.community-credit.com


per leggere il post originale o inviare un commento visita il seguente indirizzo: Community Credit: Sono negli "All Time Earners"

ASP.NET 2.0: Collections di ConfigurationElement

Continuo sull'argomento System.Configuration, proponendovi un esempio di come creare una collection di ConfigurationElement custom. Per capire l'applicazione dell'esempiuo che sto per introdurre bisogna una ttimo soffermarsi su una particolare tipologia di elementi di configurazione. Mi riferisco ad esempio al nodo <providers> all'interno di una sezione di configurazione di MembershipProvider piuttosto che magari la sezione dedicata ad httpHandler e httpModules. All'interno di questo tipo di sezioni è possibile aggiungere elementi, ma anche rimuoverne con le seguenti sintatti:

<add />

<remove />

<clear />

Nel framework 2.0 questo tipo di sezioni sono perfettamente definibili da parte dell'utente implementando una ConfigurationElementCollection. Si tratta in breve di estendere una classe del framework, implementando un certo numero di metodi: nell'esempio che riporto qui di seguito ecco come realizzare la versione base che accetterà l'aggiunta di nuovi elementi con <add />

public class ApplicationInfoCollection : ConfigurationElementCollection
{
    
protected override ConfigurationElement CreateNewElement()
    {
        
return new ApplicationInfo();
    }

    
protected override object GetElementKey(ConfigurationElement element)
    {
        
return ((ApplicationInfo)element).Name;
    }
}

Con queste poche righe di codice avremo definito una sezione di configurazione che accetta tutte le chiavi che abbiamo elencato poco fa, attribuendo loro la funzionalità che ci aspetteremo. In particolare i due metodi si occupano di creare una nuova istanza di elemento per la collection e di restituire il valore della proprietà considerata chiave all'interno di esso. Questo consente oltre che creare gli elementi con <add /> anche di rimuoverli specificando a quale di essis ci si riferisce. Non rimane ora che esporre una proprietà in una classe:

/// <summary>
/// 
Applicazioni registrate
/// </summary>
[ConfigurationProperty("applications", IsDefaultCollection = false)]
[ConfigurationCollection(
typeof(ApplicationInfo))]
public ApplicationInfoCollection Applications
{
    
get return (ApplicationInfoCollection)this["applications"]; }
    
set this["applications"] = value; }
}

Il primo attributo informa che ci stiamo riferendo ad una proprietà di configurazione che quindi avrà un corrispondente elemento nel file di configurazione. L'elemento in questo caso si chiamerà <applications>. Il secondo attributo invece consente di dire quale tipo di di elemento contiene la collection; Questo in effetti può sembrare ridondante... ma di questo non prendetevela con me.

powered by IMHO 1.3


per leggere il post originale o inviare un commento visita il seguente indirizzo: ASP.NET 2.0: Collections di ConfigurationElement

ASP.NET 2.0: Leggere gli attributi sconosciuti da un ConfigurationElement

Se avete provato ad usare i nuovi strumenti per la gestione della configurazione in .NET 2.0, sicuramente ne sarete rimasti affascinati come è successo a me, che oramai cerco di usarli ovunque possibile. Vi sarà forse capitato anche di dover gestire delle configurazioni dinamiche sul tipo di quelle che adottano i vari provider di ASP.NET. Il MembershipProvider ad esempio - ma anche tutti gli altri in realtà - tipicamente espongono una serie di parametri di configurazione che si possono suddividere in parametri "generali", cioè che si applicano indistintamente a tutti i MembershipProvider e in parametri "specifici" che invece variano in base a che tipo di provider dobbiamo configurare. Il SqlMembershipProvider ad esempio richiede una serie di parametri aggiuntivi - uno per tutti, il nome della stringa di connessione - che non necessariamente si applicano ad altri tipi di provider. In effetti qualunque provider deve derivare da ProviderBase che espone un metodo Initialize() tra i cui argomenti troviamo una NameValueCollection che contiene i parametri "sconosciuti" che verranno gestiti direttamente dall'implementazione che stiamo realizzando.

Se vi trovare perciò a dover creare un vostro sistema di provider, ma anche nel caso in cui vogliate scrivere un sistema pluggabile, in cui i moduli aggiuntivi possano godere di parametri di configurazione propri espressi all'interno dell'xml nel web.config dovrete gestire tali parametri in nel ConfigurationElement che li prevede. Ecco un esempio di come realizzare questo meccanismo:

public class ApplicationInfo : ConfigurationElement
{
    
private NameValueCollection attributes = new NameValueCollection();

    [ConfigurationProperty("name")]
    
public string Name
    {
        
get return (string)this["name"]; }
        
set this["name"] = value; }
    }

    
//
    // TODO: definire le altre proprietà di default
    //

    
public NameValueCollection Attributes
    {
        
get return attributes; }
    }

    
protected override bool OnDeserializeUnrecognizedAttribute(string name, string value)
    {
        attributes.Add(name, 
value);
        
return true;
    }
}

OnDeserializeUnrecognizedAttribute e il complementare OnDeserializeUnrecognizedElement sono una coppia di metodi virtuali che verranno chiamati dal runtime durante la fase di deserializzazione della configurazione e consentono di gestire eventuali attributi o elementi imprevisti. Nel caso concreto il metodo non fa altro che aggiungere i valori ad una NameValueCollection e ritornare "true" per ogni attributo sconosciuto, informando il runtime che non se ne deve ulteriormente occupare. Se invece volessimo gestire una serie specifica di attributi potremmo ritornare "false" qualora quello trovato non ci competa e in questo caso il runtime solleverà una eccezione che informa dell'errore di configurazione.

powered by IMHO 1.3


per leggere il post originale o inviare un commento visita il seguente indirizzo: ASP.NET 2.0: Leggere gli attributi sconosciuti da un ConfigurationElement

ASP.NET 2.0: Ottenere il VirtualItemCount dalla GridView

Ho scritto una articoletto su come ottenere dalla GridView un dato di cui è gelosa custode. Si tratta di VirtualItemCount che chi ha utilizzato la vecchia DataGrid conosce bene. L'articolo, che esplora mediante Reflector il meccanismo di paging della GridView è molto interessante anche per capire le limitazioni del controllo in alcuni casi.

link: ASP.NET 2.0: Ottenere il VirtualItemCount dalla GridView


per leggere il post originale o inviare un commento visita il seguente indirizzo: ASP.NET 2.0: Ottenere il VirtualItemCount dalla GridView

Paint .NET gira su Mono

Le schermate pubblicate da Miguel de Icaza parlano chiaro. Oramai Mono sta diventando una realtà che può consentire di lavorare con gli strumenti di .NET sulle piattaforme Linux. A chi ha sempre detto che su Mono girano bene solo le pagine ASP.NET, ecco la risposta di Miguel che è riuscito nell'intento di far girare nientemeno che Paint.NET, ben 70000 righe di codice C# in ambiente Windows Forms, e ci tiene a precisare "senza l'ausilio di Wine".

Nel post linkato Miguel descrive nei dettagli le difficoltà che ha dovuto affrontare dallo scorso Ottobre  per compiere questa impresa a dir poco epica. Paint .NET in effetti è un'applicazione molto complessa che sfrutta molto a fondo le caratteristiche del sistema operativo. La speranza è che per il lavoro di tutti i giorni si riesca a fare tutto in modo più semplice...

Link: http://tirania.org/blog/archive/2006/May-19.html

powered by IMHO 1.3


per leggere il post originale o inviare un commento visita il seguente indirizzo: Paint .NET gira su Mono

39,2° nel delirio..

Avevo intenzione davvero di esserci quest'oggi, ma una dannata tonsillite mi ha inchiodato nel letto a smaltire 39,2° di febbre... ora, uscito dal delirio per qualche minuto mi sono goduto i post di Simone che raccontano gli interventi all'Architect Forum, cui purtroppo non sono potuto venire. Ci avrei tenuto davvero in particolare a conoscere Ingo Rammer, di cui da sempre apprezzo il lavoro. Pazienza, sara per la prossima volta, ma chissa quando mi ricapiterà un'occasione del genere...

powered by IMHO 1.3


per leggere il post originale o inviare un commento visita il seguente indirizzo: 39,2° nel delirio..

IMHO wants you!

Mi sono finalmente deciso a trovare una soluzione per la mia prolungata inattività sul mio progetto opensource. Da quando ho cambiato lavoro lo scorso dicembre, e a causa di una grossa mole di attività correlate allo user-group xe.net non sono più riuscito a trovare la giusta continuità per scrivere un po' di codice per il software. Consigliato da più parti, ho deciso infine di avviare una fase di ricerca collaboratori, allo scopo di portare alla conclusione questo progetto che mi sembra nonostante il lungo tempo trascorso dal suo ultimo aggiornamento ancora molto apprezzato.

Con questo non voglio dire che rinuncio a scrivere codice, anzi, ma la mia speranza è di poter delegare alcuni moduli vitali ad altre persone interessate, meglio se italiane così almeno parliamo la stessa lingua, per arrivare entro il prossimo settembre ad un rilascio della versione beta.

Chi fosse interessato non ha che da contattarmi mediante l'indirizzo che appare sul weblog. Tenete presente che non si tratta di una attività "riposante" chi si vorrà assume l'onere deve garantirmi che il modulo a lui affidato non rimarra solo un buon proposito, ma si concretizzerà in un bel po' di codice...

Grazie in anticipo.

powered by IMHO 1.3


per leggere il post originale o inviare un commento visita il seguente indirizzo: IMHO wants you!

Hyperactive

Date un'occhiata a questo tizio che cosa si è inventato. Ci deve aver perso un bel po' di tempo...

Link: http://video.google.com/videoplay?docid=-3564441495710007579&q=lasse

Fonte: glob

powered by IMHO 1.3


per leggere il post originale o inviare un commento visita il seguente indirizzo: Hyperactive

Anche io nella developer community

Stamane sono stato un po' impegnato, e ho mancato di segnalare che anche io sono stato incluso nella developer community di community-credit. Non solo, per la durata della mattina ho avuto l'onore di raggiungere la primaposizione della classifica, per poi tornare in seconda posizione, ma la gara è ancora lunga. Per il momento mi allieta notare che da 4 italiani su 13 posizioni siamo passati a 4 su 9. Dateci dentro che il quartetto è alla nostra portata!!!

Se volete leggere la mia biografia recatevi qui... sono subito dopo Lorenzo. E io che credevo di avere scritto troppo...

powered by IMHO 1.3


per leggere il post originale o inviare un commento visita il seguente indirizzo: Anche io nella developer community

Google rilascera un toolkit per sviluppo AJAX

Google ha pubblicato pubblicato il Google Web Toolkit dedicato appunto allo sviluppo con tecniche AJAX. Purtroppo questo toolkit è disponibile solo per le piattaforme Java quindi la community .NET dovrà attendere l'uscita definitiva di Atlas per godere ampiamente di strumenti analoghi.

Link: http://code.google.com/webtoolkit/

Source: http://googleblog.blogspot.com/2006/05/making-ajax-development-easier.html

powered by IMHO 1.3


per leggere il post originale o inviare un commento visita il seguente indirizzo: Google rilascera un toolkit per sviluppo AJAX

Community credit news

Stamane all'arrivo in ufficio ho avuto una piacevole sorpresa. Credo quasi tutti oramai sappiate della sfida che si sta svolgendo su www.community-credit.com che vede ben 4 italiani nelle primissime posizioni di classifica. Al mio arrivo ho scoperto che il mio punteggio ora è il secondo della classifica portandomi ad un soffio dalla prima posizione.

Forza ragazzi che facciamo un en-plein azzurro, altro che mondiali di calcio!

powered by IMHO 1.3


per leggere il post originale o inviare un commento visita il seguente indirizzo: Community credit news

ASP.NET 2.0: Creare una ObjectDataSource gerarchica

Il mio ultimo sforzo letterario stavolta appare sulle "colonne" del sito di xe.net. Si tratta di un articolo - che segue a ruota il mio primo screencast pubblicato ieri - nel quale finalmente torno a parlare della parte del framework .NET che preferisco. Mi riferisco naturalmente ad ASP.NET sulla quale non scrivevo da un po' di tempo. L'inaugurazione della sezione articoli dello user group xe.net è stata l'occasione per tornare a scrivere un articolo dedicandomi stavolta alle datasource gerarchiche, una delle novità meno conosciute di ASP.NET 2.0.

Link: Creare una ObjectDataSource gerarchica

powered by IMHO 1.3


per leggere il post originale o inviare un commento visita il seguente indirizzo: ASP.NET 2.0: Creare una ObjectDataSource gerarchica

SCREENCAST: Implementare una Abstract Factory in C#

Il primo screencast di XE.NET è stato pubblicato sul sito della community. Chiunque voglia contribuire con un proprio screencast è il benvenuto. E' sufficiente leggere le istruzioni pubblicate in questa pagina, trovare un argomento e darsi da fare.

Link: SCREENCAST: Implementare una Abstract Factory in C#

powered by IMHO 1.3


per leggere il post originale o inviare un commento visita il seguente indirizzo: SCREENCAST: Implementare una Abstract Factory in C#

Lorem Ipsum Add-in: Ecco il codice e...

Ci ho messo un pò di più di quello che avevo promesso, ma alla fine eccomi a postare il codice del plugin Lorem Ipsum per Live Messenger 8.0. Il motivo del ritardo è presto detto: mi sono soffermato a cpire come realizzare una feature che mi interessava parecchio, almeno quanto so alletterà i maniaci del messaggino-sul-messenger. ora è possibile immettere i propri messaggi e farli ruotare al posto di quelli generati da Lorem Ipsum.

Giusto per smentire quello che avevo detto qualche post fa, ho scoperto che valorizzando la proprietà SavedState dell'istanza di messenger è possibile salvare delle impostazioni che possano essere riutilizzate dal plugin. Alla fine la soluzione è stata quella di utilizzare il Serializzatore XML dato che le regole di Code Access Security impediscono l'uso finanche di quello binario.

Chi lo voglia scaricare non ha che da cliccare il link riportato qui sotto ed in seguito copiare le due dll che troverà nella cartella bin in un luogo sicuro e poi aggiungerlo per mezzo del pannello diu impostazioni.

Link: http://www.boschin.it/imho/Elite.MSN.LoremIpsum.zip

powered by IMHO 1.3


per leggere il post originale o inviare un commento visita il seguente indirizzo: Lorem Ipsum Add-in: Ecco il codice e...

Live Messenger Add-in: Lorem Ipsum

Stanotte, preso dalla voglia di fare qualcosa di "pazzesco" (o forse dalla voglia di far nulla...) ho rispolverato un post di Giorgio Sardo a proposito dei plugin per Live Messenger. In breve, come mi capita spesso ho buttato giù un po' di codice unendo cose che apparentemente non hanno nulla a che vedere le une con le altre e ne è uscito un Lorem Ipsum Add-in per Live Messenger.

A che serve? Beh, visto che c'è la moda di postare ogni genere di cosa nel messaggio personale di Live Messenger e che io in questo difetto di attenzione e non lo cambio così spesso, ho fatto un generatore causuale di messaggi in latino che lo cambia ogni 60 secondi... provate a starmi dietro ora...

Link: LoremIpsumMsn.zip (37 KB)

Per installarlo dovete dapprima attivare gli add-in di live messenger 8.0 ed in seguito caricare l'assembly LoremIpsumPlugin.dll dal pannello delle opzioni. Apparirà una voce in coda agli stati che serve per attivare il plugin.

Il sorgente a stasera...

powered by IMHO 1.3


per leggere il post originale o inviare un commento visita il seguente indirizzo: Live Messenger Add-in: Lorem Ipsum

Lipsum Add-in per Visual Studio 2005

Ecco un utile plugin per Visual Studio 2003 e 2005. Avete presente quei generatori di testi "riempitivi" che producono delle stringhe in latino? Ora ne esiste una versione add-in per l'IDE di casa Microsoft...

Sed sem nibh, posuere in, sollicitudin a, cursus at, libero.

Ops... lo trovate qui: http://hackingpsp.com/LoremIpsum.aspx

powered by IMHO 1.3


per leggere il post originale o inviare un commento visita il seguente indirizzo: Lipsum Add-in per Visual Studio 2005

Io speaker... e chi l'avrebbe mai detto

Beh, è giunto il momento che io vi narri della bellissima esperienza che venerdì scorso ho avuto in occasione del meeting di xe.net quando, per la prima volta in vita mia ho tenuto una sessione a proposito di Design Patterns. Tanto per cominciare non voglio fare il falso modesto. Ritengo di aver fatto un buon lavoro, e lo penso perchè ho avuto la sensazione che le parole fluissero facilmente e senza intoppi. Poi magari mi sbaglio, ma l'aver arringato la folla (beh, ok 35 persone non sono una folla, ma a per me era come essere allo stadio con 65535 spettatori), per quasi 90 minuti riuscendo anche a strappare qualche risata per me è stata un successo senza precedenti.

Ho iniziato in modo un po' inconsueto; ho letto l'incertezza sulle facce dei presenti quando ho esordito dicendo: "vorrei parlarvi di cosa succede la mattina quando mi sveglio...". Un esordio lo confesso scelto volutamente per sollecitare l'interesse del pubblico che ha risposto scrutandomi come a chiedersi se fossi del tutto sano di mente. Poi dopo qualche minuto ecco l'aggancio all'argomento e le parole, gli esempi hanno iniziato a fluire. La sera prima, avevo provato in solitudine lo speech registrandomi con un microfono e vi devo dire che il riascolto di questo tentativo mi aveva messo addosso un po' di inquietudine. Ero davvero pessimo ma ho sottovalutato l'importanza della presenza di un pubblico vivo che ti sostiene con i piccoli gesti, con dei brevi assensi come penso avrebbe potuto tranquillamente smontarmi un pezzo alla volta se non fossi riuscito a trovare la giusta chiave di lettura.

L'unico cruccio, quello di aver compresso involontariamente sia la sessione di luka, sia giocoforza anche il tempo che avrei preferito fosse dedicato ad un dibattito sul tema dell'incontro. Alla fine, dopo che il tempo è letteralmente volato sono arrivato all'ultima slide con un'impeto che non mi sarei mai riconosciuto. I feedback alla fine hanno confermato le mie sensazioni; la sessione è piaciuta, è stata considerata molto interessante e chiara. Ora che ho ricevuto il battesimo è venuto il momento di continuare su questa strada e

Consentitemi di ringraziare tutti per la bella esperienza. E' anche grazie a chi mi ha seguito con tanta attenzione.

Dimenticavo: forse qualcuno si è chiesto cosa centri con il meeting la salsa rosa... Ve lo spiego più avanti.

powered by IMHO 1.3


per leggere il post originale o inviare un commento visita il seguente indirizzo: Io speaker... e chi l'avrebbe mai detto

E la salsa rosa che fine ha fatto?

Meeting concluso. Sono appena tornato, ho visionato le foto e meditato sulla splendida serata, smaltito l'adrenalina che mi avrebbe impedito di dormire, e ora al termine del post me ne andrò a dormire felice per la eccezionale riuscita di un incontro veramente molto atteso. Io e Luca abbiamo intrattenuto i convenuti parlando dei nostri amati Pattern, sforando come prevedibile i tempi. E' stata una bella esperienza, soprattutto perchè l'essere riusciti a riempire ogni millimetro quadro della sala a nostra disposizione con un buon 60% di facce nuove è stata la conferma che ci stiamo muovendo nella giusta direzione. L'impressione è che le 35 persone convenute siano rimaste soddisfatte del lavoro svolto e spero anche che siano rimaste coinvolte tanto da iniziare a portare il proprio contributo attivo di contenuti.

Ora vado a dormire, l'adrenalina è stata riassorbita e la palpebra inizia a scendere. Ma non prima di dire a tutti un immenso GRAZIE!!!

Ah, Poi magari domani con calma scrivo della mia prima esperienza da oratore.

 

 

 

 

powered by IMHO 1.3


per leggere il post originale o inviare un commento visita il seguente indirizzo: E la salsa rosa che fine ha fatto?

IIS 7.0: DirectoryListingHandler

Il nuovo Internet information Server 7.0 disporrà di un nuovo handler denominato DirectoryListingHandler (se ho ben compreso la pronuncia americana) facendo l'override del quale sarà possibile customizzare la presentazione del contenuto di una directory virtuale. Una bella feature ad esempio per chi desidera creare una gallery di immagini. Sarà infatti sufficiente implementare un HttpModule che agganciato ad una directory di immagini ne mostri il contenuto come più ci piace...

Questo giusto per darvi la sensazione di quella che sarà l'intergrazione molto stretta tra IIS7 e ASP.NET...

powered by IMHO 1.3


per leggere il post originale o inviare un commento visita il seguente indirizzo: IIS 7.0: DirectoryListingHandler