Tip
Condividere una connessione DialUp come HotSpot WiFi con Windows 7 and Virtual Router - How To share a DialUp connection as WiFi HotSpot using Windows 7 and Virtual Router

Era parecchio che volevo togliermi la soddisfazione di convidere la connessione DialUp (Internet Key) attraverso Virtual Router. Per farlo bisogna prima creare la connessione dial-up da Windows 7 come spiegato in questo articolo:


E qui Virtual Router del quale avevo già parlato:
Virtual Router - Wifi Hot Spot for Windows 7 / 2008 R2

Matteo Migliore.

Scrivere codice C# di qualità con Visual Studio e addin - Write C# quality code using Visual Studio and addin

Ultimamente lavoro in un “ambiente validato” dove la qualità del codice è un fattore rilevante, il software sviluppato viene usato dalla società farmaceutica e sottoposto a controlli da parte dell’FDA americana (Foud and Drug Administration), per cui è importante usare strumenti che aiutino in questo processo.

Al momento mi trovo davvero bene con questi:
1. StyleCop (4.3.2.1): verifica che vengano rispettate le naming convention e gli standard
    strutturali del codice (ordine dei metodi static, private, public etc..; nomi dei metodi, proprietà etc…)
Visual Studio 2010 AddIn - StyleCop 
2. ReSharper (5.0 Beta): amato o odiato, dopo un periodo di astio nei suoi confronti poi diventa un tool indispensabile, utile nel TDD, nel refactoring nel rispetto degli standard, nell’uniformare il codice scritto
    dal team 
Visual Studio 2010 AddIn - ReSharper
3. StyleCop For ReSharper (4.5.15.0): consente di avere le notifiche live attraverso ReSharper delle regole impostate in StyleCop
Visual Studio 2010 AddIn - StyleCop For ReSharper
4. AgentSmith (1.4.0): un correttore ortografico, plugin per ReSharper, che controlla le costanti, i nomi dei membri e soprattutto i commenti XML nel codice, per produrre sempre documentazione corretta
 Visual Studio 2010 AddIn - AgentSmith
5. GhostDoc (2.5.09166): crea i commenti XML in automatico per i membri delle classi, utilizzando delle regular expression per tentare di scrivere una frase di senso compiuto, utile per scrivere 
    un commento da usare come infrastruttura base
Visual Studio 2010 AddIn - GhostDoc 

Specialmente in un contesto agile questi tool si dimostrano davvero utili, mantengono costante la qualità del codice che per il ciclo Test-Code-Refactor viene modificato molto frequentemente.

Matteo Migliore.

5 Comments Filed Under [ Tip ]
Esempio di DependencyInjection per gestire la security di ASP.NET usando WCF e Unity

Su CodePlex ho pubblicato un semplice esempio su come rendere l’applicazione “dipendente” dalle DipendencyInjection :-). Bel controsenso. Scherzi a parte l’applicazione (mantenuta come sempre il più semplice possibile) pone il fuoco su come adottare un framework di IoC, wrappandolo, e quindi rendendo trasparente anche quello, e su come risolvere uno dei tanti problemi delle applicazioni web, come ad esempio cambiare i Membership e Role provider. In questo caso ci sono due implementazioni, la più interessante è quella che sfrutta WCF per gestire le credenziali. Intanto la trovate qui. Appena ho un attimo di tempo scriverò un po’ di documentazione e magari ne sviluppo una seconda versione più “real-world”, sfruttando anche Silverlight e il porting Silverlight di Unity.

Eccola qui, DependencyInjection sample to build a security system using-WCF, Unity, ASP.NET.

Se avete domande sparate pure.

Matteo Migliore.

Collezione di Extension Method in C# e VB.NET

Segnalo questo sito che non conoscevo fino a pochi minuti fa :-): http://www.extensionmethod.net/

Come riportato dal sito, si tratta di:
"ExtensionMethod.NET is a database of C# 3.0 and Visual Basic 2008 extension methods. It contains many user-rated extension methods that will expand your code library immediately."

Matteo Migliore.

Add Comment Filed Under [ Tip ]
[ASP.NET] Validare i controlli della pagina dato il ValidationGroup

Posto questi due metodi perchè ho trovato divertente riuscire a rendere il codice così striminzito grazie a C# 3.0 e alla ricorsione:

   1:    private void ValidateByGroup(string validationGroup) {
   2:     List<BaseValidator> validators = new List<BaseValidator>(from validator in FindControlsByType<BaseValidator>(this)
   3:                      where validator.ValidationGroup == validationGroup select validator);
   4:     validators.ForEach(validator => validator.Validate());
   5:    }
   6:   
   7:    private static IList<T> FindControlsByType<T>(Control root) where T: Control {
   8:     List<T> controls = new List<T>();   
   9:     foreach (Control child in root.Controls) {
  10:      Type type = child.GetType().BaseType;
  11:      while(type != typeof(object)){
  12:       if (type == typeof(T))
  13:       {
  14:        controls.Add((T)child);
  15:        break;
  16:       }
  17:       type = type.BaseType;
  18:      }
  19:   
  20:      if (child.HasControls())
  21:       controls.AddRange(FindControl<T>(child));
  22:     }
  23:     return controls;
  24:    }


Perchè funzioni è necessario disabilitare il controllo lato client impostando a False la proprietà EnableClientScript dei validator. Per rendere comunque la pagina reattiva sarebbe bene sfruttare AJAX perchè in questo modo il controllo verrà fatto solo lato server.

Matteo Migliore.

Add Comment Filed Under [ ASP.NET Tip ]
[Tip] Versioning degli Assembly di una stessa solution

Un semplice tip che mi ha consigliato Mauro per il versioning degli assembly a cui non avevo pensato, ma utile per avere un repository comunue delle informazioni relative alla società, nome e versione del prodotto e altre informazioni. In pratica anzichè definire un file AssemblyInfo.cs (o .vb) per ogni progetto, si crea un file condiviso in tutta la soluzione (o più soluzioni) e lo si referenzia in ogni project come link.

In questo modo tutti gli assembly avranno associate le stesse informazioni, potendo ovviamente redefinire quelle specifiche e legate al project.

Qui trovate come fare:
http://weblogs.asp.net/lorenh/archive/2004/09/20/232200.aspx

La condivisione delle informazioni è utile specialmente se utilizzata nella metodologia del Continuous Integration, uno dei pilastri dell'Extreme Programming. Uno dei sostenitori? Il mitico Martin Fowler, amato da Andrea (anche se lui dice di no ).

Un tool che assiste la pratica del Continuos Integration è Cruise Control .NET.

Matteo Migliore.

Add Comment Filed Under [ Tip Architettura ]