Welcome

This is the generic homepage (aka Aggregate Blog) for a Subtext community website. It aggregates posts from every blog installed in this server. To modify this page, edit the default.aspx page in your Subtext installation.

To learn more about the application, check out the Subtext Project Website.

Powered By:

Blog Stats

  • Blogs - 689
  • Posts - 27814
  • Articles - 299
  • Comments - 64125
  • Trackbacks - 520287

Bloggers (posts, last update)

Latest Posts

GAX e GAT per VS 2010 RC rilasciate !!!!!

Finalmente ! Dopo mesi di attesa sono state rilasciate GAX e GAT per VS 2010 RC ! Finalmente si può lavorare sulle software factories !

GAX: http://visualstudiogallery.msdn.microsoft.com/en-us/25e4b5e9-65e4-4950-967d-5f1e6a9dcbeb?lc=1033 

GAT: http://visualstudiogallery.msdn.microsoft.com/en-us/eb473a01-7582-4f25-bde9-cc5b2b9d4cdb 

Istruzioni su come migrare le software factories sviluppate su VS 2008: http://social.msdn.microsoft.com/Forums/en-US/vsgatk/thread/ef16bb9a-a86c-41b3-963b-b9fdf727e668

posted @ 20/03/2010 23.35 by Ivan Fioravanti

Lab Management

Una delle novità più succose del TFS2010 sono i Lab Management. Per chi ancora non sapesse di cosa si stia parlando qui potete trovare una serie di video (sono brevi di circa 5 min l’uno e si guardano in un attimo) che fanno una overview di cosa sia e come si possa usare Lab Management.

Vale la pena darci uno sguardino, anche solo per vedere di cosa si tratta. Per chi poi avesse voglia di provarli “live”, qui trovate una bella macchina virtuale già pronta, ma attenzione, non è di quelle che apri il Virtual PC, la lanci e va :) necessitate di avere una macchina Hyper-V, per cui magari se avete Windows 7 utilizzate il boot from VHD, installatevi un bel Server 2008 R2 e partite da questo tutorial.

alk.

DotNetKicks Image

posted @ 20/03/2010 9.53 by Gian Maria Ricci

WPF e Silverlight – Sempre sul Binding

Abbiamo quindi diversi Binding:

·         Simple bind, è la semplice associazione tra oggetto e percorso

·         Element Bind  è il bind tra un elemento e l’altro , ad esempio tra uno slider e una label che visualizzerà il valore dello slider

Abbiamo poi diverse modalità di binding che determinano il comportamento:

  • OneWay
  • TwoWay
  • OneTime OneWayToSource
Un’altra componente molto importante sui binding sono i converter:

http://www.winfxitalia.com/script/29/StringFormatConverter-Binding-WPF.aspx

http://blogs.msdn.com/bencon/archive/2006/05/10/594886.aspx

http://dotnetside.org/blogs/vito/archive/2007/07/03/ValueConverter-per-la-formattazione-in-WPF.aspx

 

Altri elementi molto importanti è l’implementazione e l’utilizzo dell’INotifyPropertyChanged che consente di notificare alla UI il cambio di valore delle property dell’oggetto in datacontext, e ObservableCollection.

http://www.visual-basic.it/articoli/adsWPF_DataBinding.htm

http://www.winfxitalia.com/script/25/Creare-Collezioni-Utilizzabili-Binding-WPF.aspx

posted @ 19/02/2010 9.26 by Alberto

Tool per gestire i JS

Un mio collega mi ha segnalato questo interessante link ad un tool che semplifica la gestione, i caricamenti in parallelo e le dipendenze tra i vari js : http://labjs.com

posted @ 19/03/2010 12.28 by Andrea Canegrati

WCF 4.0 Routing Service in IIS7

Interessante articolo sulla nuova feature di WCF.

http://seroter.wordpress.com/2010/03/09/simpler-way-of-hosting-the-wcf-4-0-routing-service-in-iis7/

Massimiliano

 

posted @ 19/03/2010 11.32 by Massimiliano Bellisario

Protestare fa bene

Sembra che finalmente i problemi di connessioni abbiano raggiunto una soluzione, dopo che l’anno scorso hanno cambiato il cavo mangiato dai topi, ieri il mio buon amico Marcello ed il suo collega della Telco hanno ricontrollato tutto il cavo dalla centralina a me, e sembra che la presa principale fosse difettosa.

Ora ho capito di essere sfortunato, perchè effettivamente avere i cavi rovinati, su una zona dove l’armadio è pieno ed infine avere anche la presa principale difettosa è un po una cosa da “malocchio”, :).

L’aspetto importante, è che bisogna sempre protestare con educazione. Evitando la tentazione di aggredire l’operatore, che non ha nessuna colpa, ogni volta che una grande azienda, sia essa la Telecom o chiunque altro, evitate la tentazione di dire “inutile protestare, tanto non serve a nulla”. Ve lo dico io… Serve. Oltre a telefonare al 187 numerose volte, ho scritto a vari ministeri, anche al ministero delle attività produttive, denunciando il fatto che senza connessione non lavoro e che ultimamente i problemi erano continui.

La mia lettera è stata protocollata, il ministero ha richiesto un controllo sul cavo, e finalmente la situazione sembra risolta. Inoltre ieri pomeriggio e stamattina mi hanno contattato dalla TElecom e Telco per sapere se è tutto ok, se il problema fosse risolto etc etc e mi hanno invitato a richiamare per ogni  eventuale ulteriore problema.

La morale è che, se i problemi persistono, una sana protesta a 360° solitamente smuove qualche cosa.

alk.

DotNetKicks Image

posted @ 19/03/2010 9.52 by Gian Maria Ricci

Novità del Mix2010

Per chi fosse interessato a conoscere le novità presentate al mix2010, il 23 marzo verrà fatta una chat live per discutere di questo argomento. Qui trovate tutti i dettagli.

alk.

DotNetKicks Image

posted @ 19/03/2010 9.44 by Gian Maria Ricci

Pubblicata intervista su DotNetCenter

Su DotNetCenter è stata pubblicata una mia breve intervista rilasciata in occasione dell’immenente basta italia:

http://dotnetcenter.it/news/10/Intervista-a-Michele-Aponte-speaker-di-BASTA-Italia-2010.html

Mi è stato chiesto anche come è nata la nostra community e che obiettivi si pone… magari chi è curioso di sapere come è nata questa fantastica avventura vedrà soddisfatta la propria curiosità. Ne approfitto per ringraziare ancora una volta tutti gli iscritti e i miei 4 amici cofondatori:

Antonio Liccardi

Alessandro Forte

Carmine Alfano

Marco Savarese

Come direbbe un mio amico (Marcello): siete fottissimi (senza r)…

Michele

posted @ 19/03/2010 6.42 by Michele Aponte

Principio K.I.S.S. verifica se lo applichi davvero

Translate into ENGLISH >>>





Guardando i numeri, diresti che il tuo team pratica realmente il principio K.I.S.S. o diresti che segue la legge di Parkinson ?



  •  .NET Framework 2.0 il nucleo é composto in tutto da soli 12 Assembly per piú di 12.000 classi (una media di 800 per progetto) e 2.800.000 istruzioni IL (190.000 per progetto)
    Fonte: Analyzing the .NET Framework 2.0 with NDepend
  •  Google ha un singolo source code repository che é completamente accessibile a tutti i 10.000 sviluppatori. Sebbene tutti i sistemi vengono rilasciati indipendentemente l'uno dall'altro (con cicli di rilascio che variano da una settimana a un mese), tutto viene  compilato dalla HEAD senza l'uso di binari precompilati, il repository accetta diverse migliaia di modifiche al giorno con picchi di 20+ modifiche per minuto.
    Fonte:  Mark Striebeck engineering manager a Google, al suo speech al  XPDay London 2009 (guarda anche il report da questo post)

  • Flickr riceve 40.000 nuove foto per secondo e ha ne archivia piú di 3 miliardi di foto al giorno, vengono eseguiti piú di 10 nuovi rilasci al giorno.  Due fattori abilitanti per queste prestazioni tra i molti citati: un unico version control condiviso e no branching.
    Fonte:
    Dev and Ops Cooperation at Flickr


E ora chiediti:
- In quanti Project/Assembly  é scomposta la code-base?
- Da quanti code repository distinti (server o trunk) devi fare il get dei sorgenti per compilare la code-base?
- Quante Solution distinte devi compilare per compilare la code-base?
- Oltre al trunk su quanti altri branch sviluppa il team?


La legge di Parkinson applicata alla complessitá della code-base dice che la complessitá della code-base tende ad espandersi sino alla massima capacitá del team e della azienda di gestire la complessitá, invece di limitarsi alla complessitá minima richiesta dai problemi affrontati.





Tags :   |  |  |  |  |

posted @ 18/03/2010 21.02 by Luca Minudel

IE9 provare per credere

Dal Mix spuntano mirabolanti soprese ma per provarle?

image

La versione di prova non ha nemmeno la barra degli indirizzi e i menu di navigazione ma si puo’ usare tranquillamente per i propri test attraverso delle scorciatoie da tastiera oppure navigando sui menu del programma.

Ecco gli shorcuts disponibili:

Ctrl + O:  Apre una pagina web
F5: Refresh
F10: Home
F12: Developer Toolbar
Alt + 5: Forza in modalità di rendering IE5
Alt + 7: Forza in modalità di rendering IE7
Alt + 8: Forza in modalità di rendering IE8
Alt + 9: Forza in modalità di rendering IE9
Alt + 0: Resetta al default
Ctrl +/-: zoom in e out
Alt + ?: Help
Ctrl + S: Salva la pagina web come…
Alt + /: Informazioni su…

Dai che si va ;)

S.

posted @ 18/03/2010 12.38 by Sonny

Una scelta importante…

 

Riavviata la macchina…bisogna prendere una decisione…

image

image

posted @ 18/03/2010 11.14 by Pietro Libro

Il 23 Marzo si parla del Mix

Martedì 23 Marzo, dalle 15 alle 16, Microsoft Italia terrà una sessione di chat dedicata alla novità del Mix 2010 (Silverlight 4 RC, Windows Phone 7 Series, IE9 e HTML 5, jQuery, OData). Per partecipare, è sufficiente collegarsi a questo link il giorno dell’evento.

posted @ 18/03/2010 9.56 by Marco Minerva

Mix2010 Spettacolo !!

Per tutti quelli che amano lo Spettacolo lascio il link dei video.

Video Gallery e qui

image

posted @ 18/03/2010 9.23 by Sonny

Safari e IE9 a confronto sul 3D in HTML5

image

Senza parole…

posted @ 18/03/2010 8.48 by Alessandro Scardova

Open Data Control



nuovo protocollo xml per lo scambio dati via internet.

http://www.odata.org

posted @ 18/03/2010 0.42 by Alessandro Gervasoni

Rilasciato Open XML SDK 2.0 for Microsoft Office

Da questo link potete accedere a tutte le risorse dell’SDK finalmente in RTM, utile per produrre diettamente dai vostri software Documenti in formato Open XML. Office automation adieu!

posted @ 17/03/2010 22.13 by Alessandro Scardova

God Mode: Cartelle speciali in Windows 7

Windows 7 permette di creare cartelle denominate Good Mode in cui troveremo organizzati tutte le principali funzionalità di gestione del nostro sistemo operativo.

L’operazione è banale; la sintassi per creare queste cartelle sarà:

NOMECARTELLA.{codice del good mode}

per esempio

Windows 7 reti sicurezza tecniche avanzate.{ED7BA470-8E54-465E-825C-99712043E01C}1Ad operazione completata troveremo all’interno di questa cartella tutta una serie di funzionalità, organizzate per categorie, per la gestione di Windows 7.

2

Esistono altri parametri per creare cartelle simili aventi funzionalità specifiche,ad esempio:

  • {0142e4d0-fb7a-11dc-ba4a-000ffe7ab428} – (Dispositivi biometrici)
  • {025A5937-A6BE-4686-A844-36FE4BEC8B6D} – (Impostazioni risparmio energia)
  • {05d7b0f4-2121-4eff-bf6b-ed3f69b894d9} – (Impostazioni icone e notifiche nella barra delle applicazioni)
  • {1206F5F1-0569-412C-8FEC-3204630DFB70} – (Credenziali per l’accesso automatico)
  • {15eae92e-f17a-4431-9f28-805e482dafd4} – (Installa un programma dalla rete)
  • {17cd9488-1228-4b2f-88ce-4298e93e0966} – (Impostazioni dei programmi predefiniti)
  • {1D2680C9-0E2A-469d-B787-065558BC7D43} – (Assembly)
  • {1FA9085F-25A2-489B-85D4-86326EEDCD87} – (Gestione reti wireless)
  • {208D2C60-3AEA-1069-A2D7-08002B30309D} – (Rete)
  • {20D04FE0-3AEA-1069-A2D8-08002B30309D} – (Esplora risorse, cartella “Computer”)
  • {2227A280-3AEA-1069-A2DE-08002B30309D} – (Stampanti e dispositivi)
  • {241D7C96-F8BF-4F85-B01F-E2B043341A4B} – (Connessione a desktop e stampanti in rete)
  • {4026492F-2F69-46B8-B9BF-5654FC07E423} – (Windows Firewall)
  • {78F3955E-3B90-4184-BD14-5397C15F1EFC} – (Prestazioni del computer)
  •  

    WINDOWS7_LIBRO

    Windows 7 reti sicurezza tecniche avanzate : tutto quello che devi sapere su Windows 7, ogni trucco e configurazioni avanzate. IL LIBRO SU WINDOWS 7

    posted @ 17/03/2010 17.43 by Marco Maltraversi

    Schermi ad alta risoluzione? Hot fix di Microsoft per Windows 7

    Se avete un monitor ad alta risoluzione 96 DPI o maggiore, se il vostro Pc ha installato una versione di  Windows 7 o di Windows Server 2008 R2 e se riscontrate lentezza al boot di Windows; questa Fix risolverà i vostri problemi (… almeno si spera).

    Per prima cosa per individuare, se il vostro Monitor ha una risoluzione in cui è necessario applicare questa FIX andiamo in Start\Pannello di controllo\Aspetto e personalizzazione\Schermo come mostra la seguente figura:

    schermo

    Se è selezionata l’opzione 125% o 150% o superiore il nostro Pc è nella cerchia di quelli che potrebbero ottenere benefici da questa patch.

    Quindi non ci resta che scaricarla dal link:http://support.microsoft.com/kb/977419/en-us

    ed installarla.

    17-03-2010 15-26-15

    Ad installazione completata dovremo poter beneficiare di questa Fix

    WINDOWS7_LIBRO

    Windows 7 reti sicurezza tecniche avanzate : tutto quello che devi sapere su Windows 7.Il libro di 784 pagine è edito da FAG Milano e viene veduto anche online sul sito della casa editrice e nelle migliori librerie .

    posted @ 17/03/2010 15.31 by Marco Maltraversi

    MEF ed i Metadata

    Alcune volte può capitare di dover associare delle informazioni agli export, per esempio specificare cosa ci offre una determinata implementazione di un contratto. Questo permette agli imports di sapere cosa offre un determinato componente/plugin e di utilizzare solo quelli che risolvono le nostre esigenze. MEF supporta due tipi di metadata: typed e non typed. Il post tratterà solo i metadata typed; per vedere un esempio di utilizzo dei non typed potete dare un’occhiata alla MEF Programming Guide.

    Ok ora possiamo partire a vedere qualcosa di concreto!

    Supponiamo di dover creare un plugin manager che ci permette di accedere ai plugins installati. Elenchiamo un paio di specifiche:

    1. I plugin implementano l’interfaccia IPlugin
    2. Un plugin può offrire funzionalità diverse, a seconda della funzionalità implementa una specifica interfaccia
    3. Il plugin manager deve implementare l’interfaccia IPluginManager
    4. Tramite il plugin manager possiamo ottenere uno o più plugins che offrono una determinata funzionalità


    Iniziamo col definire l’interfaccia IPluginManager

    public interface IPluginManager
    {
        event EventHandler PluginsChanged;
     
        IEnumerable<Lazy<IPlugin, IPluginMetadata>> Plugins { get; set; }
     
        T GetPlugin<T>() where T : class;
        IEnumerable<T> GetPlugins<T>() where T : class;
    }

    Supponiamo di avere due interfacce che specificano due diverse funzionalità:

    1. IFilter: filtra una collezione di dati (chiamiamolo segnale)
    2. IFeature: da un segnale estrae una particolare caratteristica
    public interface IFilter
    {
        IList<double> Filter(IList<double> values);
    }
    public interface IFeature
    {
        double Extract(IList<double> values);
    }
    Ora che abbiamo tutto il necessario per costruire il nostro sistema passiamo a giocare con i metadata. Come ho accennato all’inizio i metadata sono delle informazioni aggiuntive che associamo agli export. L’unica informazione di cui noi abbiamo bisogno è il tipo di funzionalità che espone il nostro plugin. Queste informazioni vengono “aggiunte” tramite l’attributo MetadataAttribute, ma visto che stiamo usando i metadata typed le nostre informazioni verranno associate ai vari export tramite l’attributo ExportPluginAttribute
    [MetadataAttribute]
    [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
    public class ExportPluginAttribute : ExportAttribute, IPluginMetadata
    {
        public ExportPluginAttribute()
            : base(typeof(IPlugin))
        {
        }
     
        public Type PluginType { get; set; }
    }
    Dal codice possiamo notare tre cose fondamentali dell’attributo ExportPluginAttribute
    • E’ decorato con l’attributo MetadataAttribute che permette di segnalare al CompositionContainer (a dire il vero la classe che si occupa di recuperare le informazioni aggiuntive è un’altra) che contiene delle informazioni aggiuntive
    • Deriva da ExportAttribute così nelle implementazioni di IPlugin evitiamo di specificare ogni volta che il contratto è IPlugin (lo specifichiamo richiamando il costruttore di ExportAttribute)
    • Implementa l’interfaccia IPluginMetadata che contiene le informazioni aggiuntive (in questo caso solo il tipo del plugin, cioè il tipo di funzionalità: IFilter o IFeature)
    public interface IPluginMetadata
    {
        Type PluginType { get; }
    }

    Finalmente possiamo passare alla parte più importante della nostra piccola applicazione, il Plugin Manager!

    [Export(typeof(IPluginManager))]
    public class PluginManager : IPluginManager
    {
        private IEnumerable<Lazy<IPlugin, IPluginMetadata>> plugins;
     
        #region IPluginManager Members
     
        public event EventHandler PluginsChanged;
     
        [ImportMany(AllowRecomposition = true)]
        public IEnumerable<Lazy<IPlugin, IPluginMetadata>> Plugins
        {
            get
            {
                return plugins;
            }
     
            set
            {
                if (plugins == value)
                    return;
     
                plugins = value;
                OnPluginsChanged();
            }
        }
     
        public T GetPlugin<T>() where T : class
        {
            return GetPlugins<T>().FirstOrDefault();
        }
     
        public IEnumerable<T> GetPlugins<T>() where T : class
        {
            return (from p in this.Plugins
                    where p.Metadata.PluginType == typeof(T)
                    select p.Value).Cast<T>();
        }
     
        #endregion
     
        protected virtual void OnPluginsChanged()
        {
            EventHandler pc = PluginsChanged;
     
            if (pc != null)
                PluginsChanged(this, EventArgs.Empty);
        }
    }

    Le parti fondamentali di questo codice sono la proprietà Plugins ed il metodo GetPlugins<T>

    La proprietà Plugins è già stata vista nel post precedente e l’unica cosa da notare è l’utilizzo della classe Lazy<T, TMetadata> in maniera tale da poter accedere alle informazioni aggiuntive tramite la proprietà Metadata.

    Il compito del metodo GetPlugins<T> è molto semplice: recupera tutti i plugins che hanno la proprietà PluginType uguale al tipo di plugin che vogliamo :)

    Continuiamo con il mettere insieme i cocci…
    Il PluginManager verrà utilizzato dal ViewModel della MainWindow.xaml

    [Export(typeof(MainViewModel))]
    public class MainViewModel
    {
        private IPluginManager pluginManager;
     
        [ImportingConstructor]
        public MainViewModel(IPluginManager pluginManager)
        {
            this.pluginManager = pluginManager;
     
            this.FilterPlugins = new ThreadSafeObservableCollection<IFilter>();
            this.FeaturePlugins = new ThreadSafeObservableCollection<IFeature>();
     
            this.pluginManager.PluginsChanged += new EventHandler(pluginManager_PluginsChanged);
     
            this.LoadPlugins();
        }
     
        public ObservableCollection<IFilter> FilterPlugins { get; set; }
     
        public ObservableCollection<IFeature> FeaturePlugins { get; set; }
     
        private void pluginManager_PluginsChanged(object sender, EventArgs e)
        {
            LoadPlugins();
        }
     
        private void LoadPlugins()
        {
            this.FilterPlugins.Clear();
            this.FeaturePlugins.Clear();
     
            foreach (IFilter filter in pluginManager.GetPlugins<IFilter>())
                this.FilterPlugins.Add(filter);
     
            foreach (IFeature feature in pluginManager.GetPlugins<IFeature>())
                this.FeaturePlugins.Add(feature);
        }
    }

    Il PluginManager verrà passato al costruttore del MainViewModel grazie all’attributo ImportingConstructor e per caricare i plugins utilizziamo il metodo GetPlugins spiegato precedentemente.

    Cosa da notare è l’utilizzo della classe ThreadSafeObservableCollection<T>, caduta proprio a “faggiuolo” (termine tecnico) se guardate la data dell’articolo, al posto della classica ObservableCollection<T> in quanto se utilizziamo quest’ultima otteniamo un exception dove il Message è

    The composition produced a single composition error. The root cause is provided below. Review the CompositionException.Errors property for more detailed information.

    1) This type of CollectionView does not support changes to its SourceCollection from a thread different from the Dispatcher thread.

    Resulting in: An exception occurred while trying to set the value of property 'PluginManager.PluginManager.Plugins'.

    Resulting in: Cannot activate part 'PluginManager.PluginManager'.
    Element: PluginManager.PluginManager -->  PluginManager.PluginManager -->  AssemblyCatalog (Assembly="PluginManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null")

    Questo perchè il metodo base.Refresh() del DirectoryWatcherCatalog viene chiamato su un thread diverso da quello della UI.

    Ora è restata solo la MainWindow, ed è proprio lei che si occupa di creare il CompositionContainer ed i Catalogs

    public MainWindow()
    {
        CompositionContainer compositionContainer;
        DirectoryWatcherCatalog directoryCatalog;
        AggregateCatalog aggregateCatalog;
     
        InitializeComponent();
     
        if (string.IsNullOrEmpty(Settings.Default.PluginsDirectory))
        {
            Settings.Default.PluginsDirectory = Path.Combine(Directory.GetCurrentDirectory(), "Plugins");
     
            if (!Directory.Exists(Settings.Default.PluginsDirectory))
                Directory.CreateDirectory(Settings.Default.PluginsDirectory);
     
            Settings.Default.Save();
        }
     
        directoryCatalog = new DirectoryWatcherCatalog(Settings.Default.PluginsDirectory);
        aggregateCatalog = new AggregateCatalog(directoryCatalog, new AssemblyCatalog(Assembly.GetExecutingAssembly()));
        compositionContainer = new CompositionContainer(aggregateCatalog);
     
        compositionContainer.ComposeParts(this);
    }
     
    [Import(typeof(MainViewModel))]
    public MainViewModel ViewModel
    {
        get
        {
            return (MainViewModel)this.DataContext;
        }
     
        set
        {
            this.DataContext = value;
        }
    }

    All’interno della solution trovate un progetto chiamato MyPlugins (contiene 3 plugins che non fanno nulla :) ), una volta avviato il progetto PluginManager potete copiare MyPlugins.dll all’interno di ..\PluginManager\bin\Debug\Plugins e dovreste vedere due plugin Feature ed un plugin Filter.

    [Download Code]

    Buon MEF a tutti :D

    posted @ 17/03/2010 15.19 by Federico Degrandis

    Windows Live Writer & Joomla!

    Ho scoperto questa mattina, e con un considerevole ritardo che però devo ammettere, in altri “ambiti” sono facilmente tollerati, che è possibile postare articoli su Joomla! tramite Windows Live Writer.

    Finalmente non dovrò perdere quarti d’ora preziosi quando devo inserire una news, un articolo o quant’altro per PVI.

    Se avete bisogno anche voi di liberarvi del tempo libero, potete seguire queste semplici istruzioni.

    posted @ 17/03/2010 14.27 by Omar Damiani