All These Things That I've Done

Apply the programming model to everyday programming problems
posts - 83, comments - 71, trackbacks - 4

My Links

News


View Gianluca Carucci's profile on LinkedIn

Tag Cloud

Archives

Post Categories

Image Galleries

Blogs

Links

C#

Il rename refactoring sulle query Linq da Visual Studio

L'Entity Framework e Linq To Sql avranno i suoi (grossi) limiti, ma vedere che da: IEnumerable<CategoryView> views = from d in categories select new CategoryView() { Id = d.Id, Name = d.Name, ImageUrl = d.ImageUrl, ImageIconUrl = d.ImageIconUrl }; con un semplice CNTRL-R-R il risultato è questo:   IEnumerable<CategoryView> views = from e in categories select new CategoryView() { Id...

posted @ giovedì 27 marzo 2008 19:26 | Feedback (0) | Filed Under [ C# ]

Linq To *

Il solito Scott segnala un post che contiene la lista aggiornata al 28 febbraio, dei providers Linq ufficiali e non. Lo stesso Charlie pubblicherà qui i futuri aggiornamenti. Technorati Tag: Linq,Providers

posted @ venerdì 14 marzo 2008 09:20 | Feedback (0) | Filed Under [ C# ]

Pensate come sarebbe brutto C# se...

il compilatore restituisse un errore nel caso in cui non gli piaccia l'ordine dei namespace dichiarati a inizio file. Oppure se... il compilatore restituisse un errore nel caso in cui non gli piaccia l'ordine delle classi/delegati/enumerazioni all'interno di un file. O ancora peggio se... il compilatore restituisse un errore nel caso in cui non gli piaccia l'ordine dei file da compilare. Ma anche se... con tanta fatica (e fortuna) riusciamo a trovare la giusta combinazione, ma un piccolo flag - fondamentale per la buona riuscita della compilazione - all'interno della configurazione del nostro progetto,...

posted @ martedì 30 ottobre 2007 16:11 | Feedback (2) | Filed Under [ C++ C# ]

Assert multipli all'interno di un singolo unit test

Roy Osherove fornisce in questo post, alcuni validi motivi del perchè secondo lui non dovrebbe essere possibile permettere di fallire più assert nell'esecuzione di un singolo unit test. Il post è in contrapposizione con un'altro post di James Avery dove viene spiegato invece, il perchè questa feature potrebbe essere utile.  Un piccolo assaggio che quoto in pieno: "Even if we assume that all the asserts are run, you're essentially running multiple tests on code that has "dirty" state. For example, asserting on the result of a method call may actually change the state of the object under test so that the next call to that method may...

posted @ mercoledì 4 ottobre 2006 10:48 | Feedback (1) | Filed Under [ Design Guidelines C# ]

Nuovo ma già obsoleto?!?!?

Ogni tanto, leggendo l'msdn, escono cose simpatiche:) Tratto dalla documentazione del metodo CppCodeProvider.CreateCompiler su MSDN Library:   " .NET Framework Class Library  CppCodeProvider.CreateCompiler Method  Note: This method is new in the .NET Framework version 2.0. NOTE: This method is now obsolete. Creates an instance of the C++ code compiler. Namespace: Microsoft.VisualCAssembly: CppCodeProvider (in cppcodeprovider.dll) " Non bastasse, l'implementazione del metodo restituisce un NotImplementedException....Technorati tags: Msdn, Codedom

posted @ giovedì 31 agosto 2006 11:07 | Feedback (0) | Filed Under [ C++ C# ]

Generics e alias

In c++, quando utilizziamo un template (prendiamo ad esempio il tipo std::vector), è pratica abbastanza diffusa definire un nuovo tipo del template specializzato. Qualcosa di questo tipo per intenderci: typedef std::vector  IntVector; Come sappiamo  usare un template (o un tipo generico del framework) allunga incredibilmente il nome del tipo e risulta molto scomodo dover ripetere lo stesso nome per intero ad ogni cast, istanziazione etc etc. Esiste qualcosa di simile al tipedef anche in C#? La risposta è si, ma tenendo ben presente l'aggettivo SIMILE. In C# possiamo definire un alias utilizzando la key using. La "dichiarazione duale del tipo IntVector di c++, in c# sarebbe: using IntList = System.Collection.Generic.List; Leggere...

posted @ venerdì 23 dicembre 2005 12:41 | Feedback (0) | Filed Under [ C++ C# ]

Testare classi che utilizzano Remoting

Problema: dobbiamo scrivere una serie di unit test che testano le funzionalità di un singleton pubblicato con Remoting. Perchè è un problema? Perchè se specifico la porta usata dall'HttpChannel ed eseguo due test consecuitivi che registrano il nostro oggetto mediante l'httpchannel, il secondo test fallirà sempre. Il problema è dovuto al fatto che il socket del canale viene chiuso in maniera non determinstica (quando ne ha voglia il GC), quindi, quando viene eseguita (indirettamente dall'httpchannel) la bind per la seconda volta, viene lanciata un'eccezione che ci avverte che la porta tcp è già in uso ("only one usage of each socket address (protocol/IP address/port)...

posted @ martedì 20 dicembre 2005 16:24 | Feedback (4) | Filed Under [ C# ]

Convertire un array di byte in stringa esadecimale

Visto che ne ho avuto bisogno, pubblico un piccolo snippet per risolvere il problema:private static string ConvertToHex(string msg) {   if (msg == null || msg == string.Empty)   {   return string.Empty;   }    System.Text.StringBuilder sb = new StringBuilder();    byte[] bmsgs = ASCIIEncoding.ASCII.GetBytes(msg);    foreach (byte inByte in bmsgs)   {     sb.Append(String.Format("{0:X2} ",inByte).Trim());   }   return sb.ToString(); }

posted @ venerdì 29 aprile 2005 14:48 | Feedback (0) | Filed Under [ C# ]

AOP NET la parola a Don Box....

Riprendo il post di Lorenzo riguardo l'AOP e Net fornendo uno stralcio dell'intervista a Don Box (per la quanle nn finirò mai di ringraziare il nostro caro presidente :) che esprime il suo parere proprio sull'AOP e sulle tecniche di interception. Personally, I think there are a lot of interesting programming paradigms out there, and I think that the industry has beaten the "attributes+interception" style of AOP to death.  Personally, I've been much more inspired by the ideas that sprang from functional programming and think that Whidbey brings several of those ideas to the masses. Specifically, C#'s anonymous methods (closures) and iterators are...

posted @ venerdì 15 aprile 2005 12:29 | Feedback (2) | Filed Under [ C# OOP ]

DavsGen Prima Versione

Il codedom si sa è una delle parti più interessanti del framework. Visto che c'è, perchè non usarlo? DavsGen è la prima versione versione di una serie di wizard integrati nel visual studio. Quando si aggiunge una classe ad un progetto di vs (sia esso in csharp che in vb) potrebbe essere utile avere una GUI  per dichiarare i membri della classe e  associargli automaticamente le propietà  senza doversele scrivere ogni volta a mano. Il wizard è liberamente scaricabile dal sito. DavsGen è distribuito sotto forma di file di installazione per semplificare il deploy del wizard. Ovviamente ogni feedback, idea o...

posted @ venerdì 25 febbraio 2005 13:06 | Feedback (1) | Filed Under [ Community C# Pubblications ]

Per chi pensa che C# sia un mostro cattivo...

... e voglia portarsi via tutte le nostre vecchie e robuste applicazioni unmanaged, una frase (e un articolo) che chiarifica alcuni preconcetti: "Some have speculated that C# is a replacement for C++, but it most certainly is not. C# is a language that is easier to learn than C++, and provides access to the functionality of the CLR. For those who already know C++, there's no need to learn anything to gain access to the functionality of the CLR, and C++ has features that are not in C#, so moving would actually involve giving up some power." La frase è presa dall'articolo...

posted @ lunedì 25 ottobre 2004 11:49 | Feedback (0) | Filed Under [ Links C++ C# ]

Nuovamente un Quiz Sharp

Prendiamo questo Snippet di codice: using System; using System.Runtime.Remoting; using System.Reflection; using System.Threading; namespace AppDomTest {   public class InvokeMethod   {     public static void Main( String[] argv )     {       AppDomainSetup info = new AppDomainSetup();       AppDomain dom = AppDomain.CreateDomain("RemoteDomain", null, info);       Foo f = dom.CreateInstance("AppDomTest", "AppDomTest.Foo").Unwrap() as Foo;       Foo f2 = new Foo();       Foo f3 = new Foo();       f3.PrintCounter();       AppDomain.Unload(dom);      Console.Read();     }   }   public class Foo : MarshalByRefObject   {     private static int _ci = 0;     public Foo()    {      _ci++;    }    public void...

posted @ mercoledì 20 ottobre 2004 18:46 | Feedback (3) | Filed Under [ C# Inside .NET ]

Initializer nei costruttori: C++ Vs C#

Spesso, programmando in c++, mi scontro con diversità nell'interpretazione (ed effettiva implementazione) della programmazione a oggetti rispetto al c#. Quando mi trovo in queste situazioni mi viene da pensare il motivo di questa differenza e perchè in fase di progettazione dei due linguaggi Straustrup e Hejlsberg sono arrivati a due conclusioni differenti. L'esempio più eclatante riguarda sicuramente la diatriba sull'ereditarietà multipla. In questo post invece mi volevo soffermare su un problema molto meno rilevante dell'esempio appena citato: l'initializer nei costruttori e in particolare richiamare nell'initializer un'altra versione del costruttore della classe. In entrambi i linguaggi l'initializer è opzionale e in c# accetta solo costruttori,...

posted @ venerdì 3 settembre 2004 17:51 | Feedback (1) | Filed Under [ C++ C# OOP ]

Enumeration bug?

Oggi mi sono imbattuto in una possibile anomalia delle enumerazioni. Consideriamo una enum dichiarata così: public enum MyEnum { Val0 = 0, Val10 = 10, Val2, Val3 = 7, Val11 = 11} Un possible frammento di codice che usa l'enum può essere il seguente:.....MyEnum p = MyEnum .Val11;int i = (int) p;Console.WriteLine("MyEnum : {0}, i: {1}", p, i);p = MyEnum .Val2; i = (int)p; Console.WriteLine("MyEnum : {0}, i: {1}", p, i); Cosa viene visualizzato a video? E' naturale aspettarsi di trovare le seguenti righe: "MyEnum : Val11, i: 11""MyEnum : Val2, i: 2"Invece inaspettatamente a video sarà stampato:"MyEnum : Val11, i: 11""MyEnum...

posted @ mercoledì 28 luglio 2004 23:48 | Feedback (0) | Filed Under [ C# Inside .NET ]

IPEndPoint.Create(SocketAddress), perchè è un Instance Method????

Evidentemente non sono l'unico a essermi fatto questa domanda....  Dando un'occhiata al codice di Mono, nell'implementazione della proprietà LocalEndPoint e RemoteEndPoint si può notare il seguente codice (e i commenti) : "... if(sa.Family==AddressFamily.InterNetwork || sa.Family==AddressFamily.InterNetworkV6 ) { // Stupidly, EndPoint.Create() is an // instance method return new IPEndPoint(0, 0).Create(sa); } ..." Chissà se chi ha progettato (o implementato) la classe IPEndPoint lavora ancora in Microsoft:P

posted @ martedì 27 luglio 2004 16:28 | Feedback (0) | Filed Under [ Design Guidelines C# Inside .NET ]

Perchè C# non supporta AOP?

La motivazione viene data direttamente da Eric Gunnerson in questo post. Sono interessanti anche i commenti....

posted @ mercoledì 30 giugno 2004 15:27 | Feedback (0) | Filed Under [ Links C# ]

Quiz Sharp 10 (contribuisco alla saga di Adrian....)

Mi inserisco nella simpaticissima saga di Adrian dando il mio piccolo contributo....:) using System; static void Main(string[] args) {   Foo.Test();   Console.Read(); }public static void Test() {  try   {     Console.WriteLine("Step Try");     return;   }   finally   {     Console.WriteLine("Step Finally");   }   Console.WriteLine("Step Exit");   return; } Cosa viene visualizzato a console? A) Step Try B) Step Try Step Finally C) Step Try Step Finally Step Exit   Gianluca

posted @ giovedì 27 maggio 2004 17:09 | Feedback (0) | Filed Under [ C# ]

Qualche linea guida di design di librerie

Segnalo qualche post del blog di Brad Abrams in cui vengono elencate alcune (OTTIME) regole da tenere presente nella costruzione delle classi. Da stampare e attaccare sopra il monitor:) On Designing Good Libraries -- Part I On Designing Good Libraries -- Part II On Designing Good Libraries -- Part III On Designing Good Libraries -- Part IV E se non vi bastasse.... c'è sempre questa serie di articoli sull'MSDN... Buon Refactoring....:)

posted @ mercoledì 21 aprile 2004 12:37 | Feedback (0) | Filed Under [ Design Guidelines Links C# ]

Design Pattern&Reflection

Volevo fare i complimenti ad Adrian per il bellissimo articolo sulla ricerca del pattern Singleton. Oltre ad essere molto interessante lo trovo scritto veramente bene. Complimenti Adrian! A quanto il prossimo numero?:)

posted @ venerdì 2 aprile 2004 10:37 | Feedback (0) | Filed Under [ Links C# OOP ]

Come faccio a inglobare nelle mie applicazioni il QueryDesigner che si trova nell'Enterprise Manager

La risposta è non si può. O almeno questa è la risposta che mi è stata data da tutti gli sviluppatori a cui ho rivolto questa domanda... La soluzione?   L'unica soluzione che mi è venuta in mente è stata farselo... Armato solo di QueryDOM e Visual Studio mi sono messo sotto un paio di settimane e il risultato prodotto si chiama QueryBuilder... Sicuramente seguiranno altre versioni (mancano ancora da implementare un po' di feature) ma il risultato mi sembrava carino è voluto proporvelo. Come al solito sono ben accette critiche e feedback:)

posted @ lunedì 8 marzo 2004 18:36 | Feedback (0) | Filed Under [ C# Pubblications ]

MonoDevelop 0.1

Ora anche mono ha il suo IDE!!! Si chiama MonoDevelop ed è il portinig di SharpDevelop per GTK#... c'è ancora molto lavoro da fare ma come si dice, è sempre meglio di....:)

posted @ venerdì 5 marzo 2004 11:26 | Feedback (0) | Filed Under [ Links C# Pubblications ]

QueryDOM versione 0.3

Dopo molto lavoro e dopo un ultimo refactoring lampo, è con piacere che sottopongo al critico giudizio del pubblico QueryDOM. Query Document Object Model (QueryDOM) è una libreria open source che espone un modello ad oggetti per manipolare query sql. Tra le altre cose la libreria espone una serie di interfaccie per aggangiare tools di parsing al QueryDOM. Attualmente è stato sviluppato un wrapper per il parser GParser. Home Page: http://qdom.sourceforge.net Project Page: http://sourceforge.net/projects/qdom

posted @ mercoledì 11 febbraio 2004 01:14 | Feedback (0) | Filed Under [ Links C# Pubblications ]

Wow! Sono uscite le specifiche c#2.0!!!!ma....

In questi giorni si parla molto delle nuove specifiche che saranno introdotte nella prossima release del c#. Volevo segnalare questo blog che mette in risalto alcune conseguenze delle specifiche che a prima vista possono sfuggire... Questo è il link... http://weblogs.asp.net/fbouma/posts/33462.aspx

posted @ domenica 26 ottobre 2003 11:35 | Feedback (0) | Filed Under [ Links C# ]

Non ci posso credere!!!Il mio parser preferito!!!

Vorrei svezzare il mio Blog (colgo l'occasione per ringraziare UGI per averci messo a disposizione questo strumento!!) segnalandovi ANTLR. ANTLR è l'acronimo di ANother Tool for Language Recognition e altro non è che un tools che permette di parsare stringhe formattate secondo una specifica grammatica. La versione 2.7.2 (l'ultima per ora rilasciata) è particolarmente interessante perchè offre la possibilità di generare, partendo da una grammatica, codice in linguaggio c# oltre a Java e c++ già presenti nelle precedenti versioni. Segnalo anche che sul sito sono presenti diverse grammatiche già pronte per l'uso come ad esempio quella sql e html. Sperando...

posted @ sabato 20 settembre 2003 20:34 | Feedback (1) | Filed Under [ Links C++ C# ]

Powered by:
Powered By Subtext Powered By ASP.NET