Fabio Santini's WebLog

  • DevLeap Round Up 2007

    Come ogni anno il gruppo Devleap si riunisce con la becera scusa di business ma con l'intento di divertirsi e di mangiare tutti insieme appassionatamente. Quest'anno ho avuto l'onore di partecipare alle attività ludiche che hanno visto intorno alle 8 di sera un gruppo di fenomeni intutati su kart elettrici sfidarsi sul circuito di franciacorta (http://www.autodromodifranciacorta.it/). Perchè questo post quindi ???? Perchè ho vinto la coppa e la medaglia e quindi mi sembrava giusto condividere con voi questo momento importante della mia vita, considerando soprattutto che il pluripilota di rally Silvano Coriani è arrivato 4° :-)

     Un grazie a Paolo, Roberto, Marco, Alberto e Cristian per avermi fatto vincere !!!

    IMAGE_148

  • Community Day 2.0

    Venerdì scorso (21 Giungo) dopo non so quanto tempo ho fatto una sessione per sviluppatori....lo so detto da me è strano ma in questo ultimo anno mi sono occupato solo di infrastruttura, Active Directory, Echange 2007 e Office Communication Services, Forefront, Business Intelligence, Sharepoint e Office  System, MOM e SMS, System Center e chi più ne ha più ne metta.
    Accogliendo l'invito di Andrea sono tornato a fare quello che mi piace di più e devo dire che mi sono divertito molto. Certo l'argomento è sempre quello :-) ma le sensazioni sono sempre le stesse e ringrazio tutti quelli che invece di andare a seguire la presentazione di Corrado (non puoi fare vedere la partita del cuore - aka la mia sessione - su rete quatto quando dall'altra parte - aka sessione di Corrado - danno la finale di champions , non vale :-)) hanno scelto di partecipare alla mia.
    Parlare di sviluppo davanti a sviluppatori è sicuramente il mestiere più bello e affascinante che esista e quindi grazie ad Andrea e a Daniele che per compassione mi hanno permesso di tornare in comunità :-)

    Ho messo le slide sul mio sito.

    Grazie a tutti.

  • Ricky sei un fenomeno !!!!

    Ecco che ritorna il papà orgoglioso del suo bambino ma io una pagella così non l'avevo mai vista.
    Come ci si sente ? Bene direi ....con qualche dubbio in più :-)

    Materia

    Voto

    Matematica

    Ottimo

    Italiano

    Ottimo

    Storia

    Ottimo

    Geografia

    Ottimo

    Inglese

    Ottimo

    Informatica

    Ottimo

    Religione

    Ottimo

    Attività motoria

    Ottimo

    Musica

    Ottimo

    Scienze

    Ottimo

    Attività espressive

    Ottimo

    Geometria

    Ottimo

    Comportamento

    Ottimo

  • .NET Community Day 2

    Il 21 e il 22 giugno si terrà in MS il secondo community day. Si parlerà di tante cose interessanti e conoscendo gli speaker è un evento da non perdere se siete appassionati di sviluppo. Andrea Saltarello (lo conoscete immagino, altrimenti meglio così :-)) mi ha invitato a partecipare e non ho potuto rifiutare e quindi terrò una sessione su .NET CF 3.0. Andrea mi ha chiesto un abstract della mia sessione e ieri (in ritardo come sempre)  gliene ho mandato uno che per il momento si rifiuta di pubblicare :-), ecco il testo :

    ORC07-302 - .NET Compact Framework 3 (Orcas Edition)

    Dopo 10 mesi di duro lavoro nel lato oscuro della forza ho deciso che era arrivato il tempo di ascoltare il mio amico Oby Wan Kanobbee e di tornare per un attimo nel mondo degli Jedi (Junior Embededd Developer Italiani) e mi sono chiesto di cosa avrei dovuto parlare. Naturalmente di Windows Mobile e Compact Framework.In questa sessione vedremo le caratteristiche di Windows Mobile 6.0, daremo uno sguardo a come sarà il nuovo ambiente di sviluppo e quali funzionalità verranno introdotte nella versione 3.0 del .NET Compact Framework. Inoltre cercheremo di capire come sopravvivere nel lato oscuro della forza

  • Microsoft blogger

    Ci sono colleghi in Microsoft che a differenza di come faccio io aggiornano il blog spesso e sempre con notizie interessanti. Vincenzo ha pubblicato sul suo blog la lista e ha creato internamente una sorta di setta dei blogger (con tanto di riti particolari, tipo danzare tutto intorno ad un rss feed o cose del genere) che di notte, si incontra segretamente nel parcheggio Microsoft per discutere su questo fantastico mondo che io uso praticamente una volta ogni sei mesi :-)

     

  • Il tempo passa, le emozioni crescono

    Ci guardiamo indietro e ci rendiamo conto che il tempo passa, poi si scatta una foto che ricorda qualcosa, un emozione ritorna, più forte di prima.

    Prima

     

  • La mia prima pagella....come papà

    Ieri mi hanno consegnato la pagella di Riccardo, 7 anni, il bimbo più bello del mondo (www.fsantini.net per chi non ci crede :-)).
    Mi ricordo le mie pagelle, non erano malissimo, alti e bassi come tanti bambini, ma non male nel complesso (e non c'era informatica altrimenti...)
    Sapete quando non ero ancora un papà sentivo gli altri che parlano dei loro figli e sembrava che veramente i loro fossero sempre i più belli, i più intelligenti, i più tutto insomma. Dentro di me mi dicevo che il giorno in cui sarei diventato padre mi sarei comportato diversamente... sbagliavo :-), faccio come loro !!!
    L'orgoglio di padre è una cosa tremenda, è come la malattia da debug, non ci si stacca più !!!
    E allora , da buon padre informatico bloggo la pagella del mio bambino, il mio angelo:

    Materia

    Voto

    Matematica

    Distinto

    Italiano

    Distinto

    Storia

    Distinto

    Geografia

    Distinto

    Inglese

    Distinto

    Informatica

    Distinto

    Religione

    Distinto

    Attività motoria

    Distinto

    Musica

    Distinto

    Scienze

    Distinto

    Attività espressive

    Distinto

    Geometria

    Distinto

    Comportamento

    Ottimo

     

    Questa cosa mi fa pensare che un esame del DNA mi converebbe farlo :-), e per essere sicuro ho preparato una pagella mia:

    Materia

    Voto

    Com Interop

     

    WPF

     

    WCF

     

    WF

     

    ASP.NET

     

    .NET CF

     

    Ajax

     

    Vediamo come se la cava !!!!!

  • No more Evangelist (se non di nascosto :-)) - Prima parte

    Sono passati 6 mesi da quando ho cambiato lavoro, ebbene si, non faccio più l'evangelista (almeno non mi prenderanno più in giro) e faccio un altro mestiere che per il momento mi è ancora ignoto, ma che spero col tempo si faccia capire. Ci ho messo un pò a scrivere questo post (l'aggiornamento del mio blog è pari a quello dei dieci comandamenti) ma finalmente per il nuovo anno mi ero proposto di farlo ed eccomi qui a scriverlo. Adesso da dove comincio non lo so, perchè sicuramente mi dimenticherò di ringraziare qualcuno, e quindi chiedo scusa in anticipo a tutti. Detto così sembra un post di addio (e voi dite a me cosa me ne frega giustamente) ed infatti non lo è (fregati :-)) ma quando uno cambia lavoro normalmente perde il contatto (non l'amicizia e la stima che rimane) con le persone che poi rendono ogni mestiere importante.

    Allora inizio descrivendovi il mio primo giorno in MS, assunto come .NET Developer Evangelist grazie all'aiuto (dicesi raccomandazione, conoscevo Francesco da tanto tempo e loro cercavano una persona che portasse un pò di allegria e mi ha fatto fare il primo colloquio - ho dato la spiegazione di raccomandazione perchè una mia collega, Sara Augugliaro che alcuni di voi conoscono, mi ha detto che non le piaceva la parola :-)) di Francesco Albano, uno dei professionisti più professionisti che io conosca. Ovviamente mi ero spacciato come esperto di .NET che non avevo neanche mai installato (lavorato tanto come programmatore ma in C++, VB 6, Java .... urca Java... questo non glielo avevo detto però) e il primo giorno mi mettono su un aereo per catania perchè l'indomani ci sarebbe stata una giornata di introduzione su .NET. Quel giorno lo speaker fu Francesco (ineccepibile come sempre) davanti a 200 persone. Finito l'evento Francesco si avvicina e mi dice che le date successive le avrei fatte io (tanto conoscevo .NET ..... si come no). La giornata successiva fu a Napoli due giorni dopo e io passai 48 ore a studiare e capire .NET. A Napoli fu divertente, avevo già parlato davanti ad un pò di persone ma che erano di solito parenti e amici. Insomma fu divertente e da quel momento quello fu il mio mestiere per 4 anni.

    Non mi dimenticherò mai la giornata di Bologna, non tanto per l'evento in se che ormai andava avanti da solo (12 date tutte uguali, una meraviglia :-()), ma perchè conobbi dei loschi figuri presenti in prima fila (che tentavano di masterizzare un prodotto non ancora uscito :-)). A cominciare da Gianluca Cannalire (webmaster di Visual Basic Tips & Trick) e da tutta la banda di fuori di testa che parteciparono all'evento. Fu il primo contatto con una comunità (all'inizio pensai di recupero ma poi capii) e loro furono gentilissimi e disponibilissimi con me e dopo tanti anni li ringrazio perchè a Bologna mi divertii molto (miiii non ho mai scritto così tanto al passato , mi scoppia la testa!!!!).

    Un giorno il mio capo, Pierluigi Mazzuca, mi disse che sarei diventato il community manager di MS per gli sviluppatori. Ci misi due anni per capire cosa volesse dire. In quei giorni si aggirava in MS un altro losco figuro (forse il più losco di tutti), capelli lunghi, giubbotto di pelle, sembrava una rock star. Mi ricordava qualcuno e dopo qualche giorno capii, lo avevo incontrato (guarda il destino) ad un corso su DNA il cui docente era proprio Francesco Albano. Parlai cinque minuti con Andrea...come quale Andrea....dai è chiaro...giubbotto di pelle, capelli lunghi, interista, quello che dorme insieme ai Design Pattern...ecco bravi..proprio lui...Saltarello, ma fu una cosa rapidissima. Pochi giorni dopo mi dissero che c'era una comunità di sviluppatori (li avevo capito bene, una comunità di recupero sul serio) che era nata da poco (a quel tempo aveva 3000 iscritti) e che si chiamava Ugidotnet. Microsoft aveva capito (tardi probabilmente) quale fosse il valore delle comunità e degli user group (che sono diversi, ma questa è un altra storia vero Andrea e Daniele !!!! :-)) per trasferire e supportare gli sviluppatori. Mi dissero che avre dovuto parlare con il webmaster (parola che mi ricordava i giochi di ruolo) e allora mi informai. Non ci potevo credere, ancora una volta, il destino (anni dopo combatto sull'uso della parola destino al posto della parola sfiga) , il webmaster era Andrea. Da quel giorno iniziai un lungo rapporto (il primo che pensa male gli converto tutti i software in Modula 2) con Andrea.

     fine prima parte.

     

  • Gestire la memoria in Windows Mobile 5.0

    Articolo interessante su come gestire la memoria da applicazioni native e managed in Windows Mobile 5.0.

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnppcgen/html/effective_memory_storage_power_mgmt_wm5.asp

     

  • Articoli su sviluppo per Windows Mobile

    Ecco alcuni link interessanti a nuovi articoli sullo sviluppo di applicazioni per Windows Mobile.

    Northwind Pocket Analyze: Decision Support for Windows Mobile-based Pocket PCs

    Christian Forsberg

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnppcgen/html/nw_pocket_analyze_decision_support_wm2k3_ppc.asp?frame=true

    Summary: Learn about mobile decision support and how to design and develop solutions for Windows Mobile 2003–based Pocket PCs using Visual Studio .NET and the .NET Compact Framework. The download code sample for this article implements a server XML Web service, database, and a Pocket PC client.


    Northwind Pocket Analyze: Decision Support for Windows Mobile-based Smartphones
    Christian Forsberg
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnppcgen/html/nw_pocket_analyze_decision_support_wm2k3_sp.asp?frame=true

    Summary: Learn about mobile decision support and how to design and develop solutions for Windows Mobile 2003–based Smartphones using Visual Studio .NET and the .NET Compact Framework. The download code sample for this article implements a server XML Web service, a database, and a Smartphone client.


    Northwind Pocket Delivery: Transportation for Windows Mobile-based Pocket PCs
    Christian Forsberg
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnppcgen/html/nw_pocket_transport_wm2k3.asp?frame=true

    Summary: Learn about mobile transportation and how to design and develop solutions by using Visual Studio .NET and the .NET Compact Framework for Pocket PCs based on Windows Mobile 2003 software. The source code in this article implements a server Web application, an XML Web service, a database, and a Pocket PC client.


    Northwind Pocket Delivery: Transportation for Windows Mobile-based Smartphones
    Christian Forsberg
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnppcgen/html/nw_pocket_transport_wm2k3_sp.asp?frame=true

    Summary: Learn how to develop mobile enterprise transportation applications for Windows Mobile 2003–based Smartphones by using Visual Studio .NET, the .NET Compact Framework, and the Windows Mobile 2003 software development kit (SDK). The source code in this article implements server components, a database, and a Windows Mobile 2003–based Smartphone client.


    Effective Memory, Storage, and Power Management in Windows Mobile 5.0
    Christian Forsberg
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnppcgen/html/effective_memory_storage_power_mgmt_wm5.asp?frame=true

    Summary: Learn about how to manage memory, storage, and power in your native and managed applications running on a Windows Mobile 5.0–based device. This article gives you an overview about the memory, storage model, and device hardware. It gives concrete advice and best practices to help your applications make the best use of the limited resources on devices like Pocket PCs and Smartphones.


    Serial Communication with the .NET Compact Framework
    Christian Forsberg
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetcomp/html/serial_com_netcf.asp?frame=true

    Summary: Learn how to make your applications communicate over a serial port and how to handle common issues when implementing serial solutions. After a general discussion about serial communication and a common serial communication standard, this article demonstrates a practical use of the technologies through sample source code written in C#.


    Interprocess Communication with the .NET Compact Framework 1.0
    Christian Forsberg
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetcomp/html/inter_process_comm_netcf.asp?frame=true


    Summary: Learn about the ways an application can communicate with another application on a Pocket PC. After a general discussion about interprocess communication, the article's download code sample, which is written in C#, demonstrates the available options for implementing IPC.


    Bar Code Scanners with the .NET Compact Framework
    Christian Forsberg
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetcomp/html/barcode_scanners_netcf.asp?frame=true


    Summary: Learn how to make your applications use bar code scanners in a generic way—ndependent of the specific bar code scanners that are used on different devices. Using the design patterns Façade and Factory, the implementation not only supports multiple bar code scanners, but it also makes it easy to add support for other bar code scanners. After a brief discussion about bar code scanners and the bar code scanner pattern, a download code sample, written in C#, demonstrates the use of the pattern and technologies.

     

     

     

  • Se non funziona l'aggiornamento del database c'è solo una possibilità...

    Rilassarsi
    Non ci credo ma è bellissimo :-)
  • Notifications Broker di Windows Mobile

    Interessante articolo su come funziona il Notification Broker presente in Windows Mobile 5.0 che permette di monitorare tutto quello che accade nel sistema operativo e non solo :-)

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dntake/html/yctiwy_snapi_part1.asp

     

  • Buon Anno e scripting :-)

    Stavo per bloggare auguri di buon anno e felice anno nuovo a tutti quando ho pensato che tutto sommato non volevo "sprecare" un blog solo per gli auguri :-) e allora ho deciso di scrivere anche qualcosa di tecnico.
    L '' idea mi ? venuta grazie ad una mail che mi chiedeva come fare ad aggiungere al proprio software un sistema di automatizzazione alla VBA.
    In pratica, l''idea che il proprio programma potesse essere governato da un linguaggio che lo stesso cliente poteva scrivere come avviene con le macro di Excel.
    La richiesta era quella che il cliente attraverso un editor qualunque (notepad) potesse modificare alcune regole che il programma invocava in maniera dinamica. 

    Allora ho pensato ad un vecchio progetto che avevo fatto e che ho convertito in VS 2005.

    Ovviamente l'idea ? quella di utilizzare il CodeDom di .NET per fare in modo di compilare al volo delle classi C# alle quali passare eventualmente degli oggetti dell'applicazione.  
    Ho creato una piccola applicazione che potete scaricare qui che mostra come si pu? ottenere con poche righe di codice quello che la mail richiedeva.
    Partendo da un file di testo scritto in c# il programma deve: 

    1) Caricare in memoria il file
    2) Compilare il file in un assembly in memoria tramite le classi messe a disposizione dal framework
    3) Creare gli oggetti presenti nello script caricato e invocare i metodi al suo interno

    Il passo uno ? semplice , usiamo un reader qualunque :-)

    Il codice per il passo due ? il seguente

    // Creo un oggetto di tipo CSharpProvider

    Microsoft.CSharp.CSharpCodeProvider n=new CSharpCodeProvider(); 

    // Creo un istanza di parametri da passare al compilatore

    CompilerParameters p=new CompilerParameters();

    p.GenerateInMemory =true;

    // Imposto le reference al framework ed eventualmente ad altre dll

    p.ReferencedAssemblies.Add("System.dll");

    p.ReferencedAssemblies.Add("System.Windows.Forms.dll");

    p.ReferencedAssemblies.Add("System.Data.dll");

    p.ReferencedAssemblies.Add(Assembly.GetExecutingAssembly().Location);

    p.GenerateExecutable=false;

    p.OutputAssembly="test" 

    // Passo i parametri la metodo CompileAssembluFromSource dove in Script c'? il file cs caricato

    // La versione 1.0 richiedeva di passare ad una interfaccia ICompile

    // r ritorna una collezione di valori di ritorno

    CompilerResults r= n.CompileAssemblyFromSource(p,Script);

    // Rappresenta l'assembly compilato

    CompiledAssembly = r.CompiledAssembly; 

    Il passo tre è più semplice

    // Creo un istanza di una classe presente nel file cs che ha generato l'assembly

    // All'interno di Class c'? il nome della classe da creare

    object obj=CompiledAssembly.CreateInstance(Class);

    Type t=obj.GetType(); 

    // Recupero un oggetto MethodInfo per invocare il metodo passato

    // All'interno di Method c'? il nome del metodo da invocare

    MethodInfo m=t.GetMethod(Method);

    if (ascParams.Count > 0)

    {

       object[] par = new object[ascParams.Count];