Di .NET e di altre amenita'

.NET Framework

Il mio framework del cuore.

Nhibernate... ora vi posso dire qualcosa

Ora che è pubblico il mio ultimo sforzo produttivo, posso fare due cose: la prima è il tornare a bloggare, e la seconda dire due parole con una certa cognizione di causa a proposito di NHibernate e più estensivamente a proposito degli ORM. L'occasione mi è data dall'aver lavorato sul sito di XE.NET utilizzando NHibernate, sul quale è basato cuyahoga che a sua vota è appunto base per il sito. Inutile dire che NHibernate è magico. Mappi una classe e ti dimentichi (quasi) che questa in realtà è persistente su un database, ti dimentichi persino di che database si tratta e questo,...

Tipi, proprietà e reflection

Ho letto il post di Lanny stamattina e ho deciso che probabilmente era il caso di postare un esempietto su come sia preferibile lavorare con la reflection per evitare i problemi più comuni. L'esempio di Lanny funziona ed è utile per capire come funziona la reflection, ma dovendo lavorare con essa è opportuno fare affidamento su una serie di classi belle e pronte che il framework mette a disposizione. Oltre a snellire il lavoro eliminando la necessità di riscrivere del codice che è già perfettamente funzionane, consentono soprattutto di avere un modo affidabile di operare conversioni di tipo senza incorrere...

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...

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...

VS2005: Uno snippet per validare i parametri

Forse non sono in molti che gestiscono la validazione dei parametri di input di un metodo, tuttavia considerato che sarebbe una buona cosa farlo, vi propongo uno snippet che mi sono creato che dovrebbe semplificare questa ripetitiva attività. Lo snippet, che nell'esempio è dedicato al caso delle stringhe, compila per noi una sezione di validazione e ci consente di immettere il nome del parametro e il messaggio che vogliamo dare nell'eccezione. <?xml version="1.0" encoding="utf-8" ?><CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">    <CodeSnippet Format="1.0.0">        <Header>            <Title>param_str</Title>            <Shortcut>param_str</Shortcut>            <Description>Code snippet for string parameter validation</Description>            <Author>Andrea Boschin</Author>            <SnippetTypes>                <SnippetType>Expansion</SnippetType>            </SnippetTypes>        </Header>        <Snippet>            <Declarations>                <Literal>                    <ID>argument</ID>                    <ToolTip>Argument name</ToolTip>                    <Default>name</Default>                </Literal>                <Literal>                    <ID>messageNull</ID>                    <ToolTip>Exception Message for null string</ToolTip>                    <Default>Argument cannot be null</Default>                </Literal>                <Literal>                    <ID>messageEmpty</ID>                    <ToolTip>Exception Message for empty string</ToolTip>                    <Default>Argument cannot be empty</Default>                </Literal>            </Declarations>            <Code Language="csharp">                <![CDATA[if ($argument$ == null)                throw new ArgumentNullException("$argument$", "$messageNull$");                if ($argument$ == string.Empty)                throw new ArgumentException("$argument$", "$messageEmpty$");$end$]]>            </Code>        </Snippet>    </CodeSnippet></CodeSnippets> Alla vostra fantasia tutte le possibili varianti. powered by IMHO 1.3   per leggere il post originale o inviare un commento visita il seguente indirizzo: VS2005: Uno snippet per validare i parametri

Framework .NET 2.0: Convertire tipi con .NET 2.0, Generics e Reflection

Un esperienza pratica di lavoro con WebServices, applicazioni legacy, e Framework .NET mi ha suggerito l'argomento dell'articolo che questa settimana è apparso sulle "colonne" di UgiDotNet. L'articolo dimostra come, sfruttando gli strumenti del framework 2.0 - mi riferisco a reflection e generics - si possa abbattere notevolmente il tempo di sviluppo di una applicazione. Non solo, l'implementazione è anche un bell'esempio di design, che grazie ad alcuni accorgimenti ha reso flessibile ed adattabile a future esigenze il codice.  Tenete presente che questo lavoro ci ha consentito di evitare la realizzazione di una cinquantina di convertitori ad-hoc che avrebbero richiesto un tempo esponenzialmente più elevato. Un...

ASP.NET 2.0: I ResourceProvider

Prosegue con questo post la saga, iniziata quando ho parlato degli ExpressionBuilders, dedicata alle risorse tipicamente utilizzate nelle applicazioni ASP.NET per depositare stringhe, e in genere proprietà da utilizzare nel rendering dell'interfaccia. In quel post spiegavo come realizzare un ExpressionBuilder che permettesse facilmente dei leggere le risorse da un database anziche da un più consueto file resx. Esiste tuttavia un altro metodo, per fare la medesima cosa, che in realtà è quello che il framework indica come quello corretto. Chi avesse provato a realizzare l'ExpressionBuilder forse si sarà reso conto che pur funzionando egregiamente esso ha delle limitazioni fastidiose. Giusto per indicarne una...

Web Services: Usare tipi condivisi tra diversi Web Services

Chiunque abbia sviluppto un'applicazione che si appoggia a diversi web-services si sarà trovato nella condizione di avere una moltitudine di proxy generati che fanno capo a diversi oggetti del dominio applicativo. Molto spesso ci si trova nella condizione di avere dei duplicati in questi oggetti che per il fatto stesso di essere classi diverse, pur avendo le medesime proprietà non sono "compatibili". Perciò, ad esempio avendo un webservice che restituisce un Ordine ed un secondo webservice che lo richiede in input non è possibile passare al secondo direttamente l'oggetto restituito dal primo. Nel framework 2.0 esiste una soluzione a questo...

Simulare il fallback delle Culture

Chi di voi ha mai avuto a che fare con localizzazione e globalizzazione di applicazioni .NET sa bene come funziona il meccanismo del fallback delle culture. In soldoni, per chi non lo sapesse si tratta di quel pricipio per cui se tra le risorse non esiste quella nella cultura che è richiesta, il framework provvedde a trovarne una il più possibile adatta. Quello che forse non è chiaro a tutti è che implementando l'expression builder di cui ho parlato in un post ...

A tu per tu con ADAM: Round #2

Stamane ho avuto nuovamente problemi con la configurazione del AspNetActiveDirectoryMembershipProvider. Mi sono trovato a spostare l'installazione di ADAM dalla mia macchina locale ad un server 2003 configurato come controller di dominio. L'unica differenza apparente nell'installazione risiede nel fatto che data la presenza di Active Directory la porta su cui girerà ADAM deve essere cambiata e di default verrà messa a 50000. In realtà al termine della configurazione seguendo i passi del mio precedente post mi sono reso conto che l'utility di configurazione di ASP.NET continuava a darmi il seguente errore: Logon failure: unknown user name or bad password. Inutile dire che completati...

ASP.NET 2.0: Propagare la CultureIfo a tutte le pagine della WebApplication

Torno ancora sull'uso delle risorse in ASP.NET 2.0 perchè ho scoperto un comportamento che di primo acchito mi ha creato qualche problema. Il problema derivava dal fatto di aver implementato l'ExpressionBuilder di ho parlato in un precedente post ed aver inserito le espressioni all'interno di alcuni Literal nella pagina. Chi avesse provato questo codice si sarà reso conto che la Culture restituita dal Thread corrente è sempre quella di default del sistema e che ogni tentativo per modificarla non ha l'esito sperato. In sostanza quello che accade è che il momento in cui vengono valutate le espressioni nella pagina è...

ASP.NET 2.0: Usare AuthorizationStoreRoleProvider con Windows XP

Se vi dovesse capitare di usare AuthorizationStoreRoleProvider da ASP.NET 2.0 non avrete alcun problema a farlo fintanto che la macchina in cui gira l'applicazione è Windows 2003. Tuttavia tipicamente le applicazioni vengono sviluppate su una macchina Windows XP quale è di solito quella dello sviluppatore. In questo caso sarà necessario installare dapprima il Windows Server 2003 Administration Tools Pack dato che su XP l'AuthorizationManager non è installato. Nell'adminpak, troverete anche uno script vbs che vi consente di sapere la sua versione se per caso fosse già installato. Vale la pena di lanciarlo prima di procedere all'installazione. Questo però non basta. Infatti...

A tu per tu con ADAM

"Ci ho buttato quasi una notte intera, e un pezzetto di questo pomeriggio, ma alla fine ne sono uscito vivo". Così comincia l'articolo che ho appena postato a testimonianza delle difficoltà che ho incontrato per completare la configurazione di ADAM, la versione applicativa di Active Directory e il provider per Active directory di ASP.NET. Ho deciso di mettere tutto assieme in un unico articolo perchè nele ricerche in rete non ho trovato una sola fonte che spiegasse la cosa nella sua interezza. Link: http://blog.boschin.it/articles/aspnetadam.aspx per leggere il post originale o inviare un commento visita il seguente indirizzo: A tu per tu...

Ten Essential Tools: Visual Studio Add-Ins Every Developer Should Download Now

Da un articolo in uscita su MSDN ecco l'aggiornamento del 10 must-have per Visual Studio 2005. Cominque mi sembra che quelli del precedente articolo per VS2003 siano sempre da tenere in considerazione. Ecco l'elenco tratto dall'articolo: TestDriven.NET GhostDoc Paster CodeKeep PInvoke.NET VSWindowManager PowerToy WSContractFirst VSMouseBindings CopySourceAsHTML Cache Visualizer Source: Ten Essential Tools: Visual Studio Add-Ins Every Developer Should Download Now -- MSDN Magazine, December 2005 powered by IMHO 1.3 per leggere il post originale o inviare un commento visita il seguente indirizzo: Ten Essential Tools: Visual Studio Add-Ins Every Developer Should Download Now

C#2.0, Generics, Interfacce e plugins

Ecco un bell'esempio di uso dei generics in una architettura a plugins. Pubblicato dal neo-padre Abhinaba, che si sta scrivendo una piccola applicazione per monitorare la figlioletta in culla. Curioso anche il primo commento, che fa giustamente notare che se un bimbo si muove in culla non c'è nulla di strano ed è inutile sollevare un'alert. Ve lo conferma un ormai consumato (dalle nottate in bianco) padre... I know the answer (its 42) : C# 2.0: Loading plugins at run-time using late binding powered by IMHO 1.3 per leggere il post originale o inviare un commento visita il seguente indirizzo: C#2.0, Generics, Interfacce...

GenerateMember: la qualità delle piccole cose

Lasciatemi spendere due parole per qualche istante su una gradita scoperta che ho fatto in questi giorni usando Visual Studio 2005. Mi riferisco a GenerateMember, una utile proprietà che decora tutti i controls del Framework 2.0. Forse la sua piccolezza non meritava un post nel mio blog, ma per chi ama la pulizia del codice bisogna dire che la sua funzione è irrinunciabile. GenerateMember semplicemente indica con un booleano a Visual Studio se usare una variabile membro della classe per referenziare il controllo oppure se semplicemente utilizzare una variabile locale al metodo InitializeComponents(). Appunto, una piccolezza, ma quante e quante volte mi...

Gli eventi smarriti... ritrovati

Torno sull'argomento degli eventi FormClosed e FormClosing perchè approfondendo la documentazione ho scoperto che essi non sostituiscono Closed e Closing, ma li affiancano fornendo in più la ragione dalla chiusura per mezzo dell'enumeratore CloseReason (utilissimo) che si trova negli argomenti dell'event-handler. Il mio abbaglio è dovuto al fatto che l'intellisense di Visual Studio 2005 non mostra più i vecchi eventi. Questo mi insegna due cose: 1) Non usare Visual Studio per apprendere l'uso del framework 2) Il team di sviluppo sa il fatto suo... Però devo dire che questo fatto che Visual Studio mi nasconda qualcosa...

Gli eventi smarriti

Sempre lavorando con il framework 2.0 ho qualche minuto a scovare due eventi di uso comune che a quanto pare hanno cambiato nome. Si tratta degli utilissimi Closing e Closed della classe System.Windows.Forms.Form che sono stati inopinatamente rinominati in FormClosing l'uno e in FormClosed l'altro. Chissà poi perchè questo cambiamento potenzialmente foriero di noie?? powered by IMHO 1.3 per leggere il post originale o inviare un commento visita il seguente indirizzo: Gli eventi smarriti

C# 2.0: L'operatore ??

Chi come me ama sfrenatamente l'operatore ternario ? .. : che C# eredita dal C, sarà lieto di sapere che un nuovo operatore è entrato a far parte del linguaggio C# 2.0. Si tratta dell'operatore ?? che si comporta ne più ne meno che come l'ISNULL del T-SQL oppure come l'equivalente nvl() del cugino Oracle. Ecco un esempio: string a = null;string b = "andrea";Console.WriteLine( a ?? b ); Questo breve esempio scrive "andrea" dato che la variabile a al primo termine è settata a null. Non mi viene in mente ora un valido esempio d'uso pratico, ma considerata l'utilità dell'ISNULL in T-SQL e l'introduzione dei tipi nullabili in C# 2.0, credo...

NHibernate, sourceforge project of the month.

Ne da notizia il team di Nhibernate con poche parole sul sito ufficiale del progetto. Link: Nhibernate project of the month powered by IMHO 1.3 per leggere il post originale o inviare un commento visita il seguente indirizzo: NHibernate, sourceforge project of the month.

Microsoft patterns & practices for Visual Studio 2005

Una serie di CTP delle nuove Pattern & Practices per VS 2005, tra cui la Enterprise Library 2.0 Link: Microsoft patterns & practices Home: patterns & practices for Visual Studio 2005 powered by IMHO 1.3   per leggere il post originale o inviare un commento visita il seguente indirizzo: Microsoft patterns & practices for Visual Studio 2005

.NET Framework Version 2.0 Redistributable Package (x86)

A questo indirizzo è disponibile il setup redistribuibile per il framework 2.0. Andate e moltiplicatelo Link: .NET Framework Version 2.0 Redistributable Package (x86) powered by IMHO 1.3 per leggere il post originale o inviare un commento visita il seguente indirizzo: .NET Framework Version 2.0 Redistributable Package (x86)

Visual Studio 2005, finalmente dal vero!

Finalmente ho trovato il tempo di installare il nuovo fiammante Visual Studio 2005 sul mio portatile e dopo aver disinstallato un bel po' di spazzatura per fargli spazio (peraltro alla fine ho eliminato anche GoogleDesktop che aveva creato ben 700MB di indici ) ho potuto provare l'ebbrezza "dell'amore non protetto" da una virtual-machine-preservativo. Ora, non vi so dire se la mia è una illusione dovuta all'aver sopportato per lunghi mesi la lentezza allucinante della virtualizzazione, ma la prima impressione che ho avuto è che sia velocissimo!!! Molto più anche del vecchio vs.net 2003 alla cui lentezza ero oramai abituato. Manco a dirlo, la...

ARTICOLO: ASP.NET Membership API

Nel numero di ottobre di Computer Programming sarà pubblicato il primo articolo di una serie dedicata a ASP.NET 2.0. L'argomento della prima puntata saranno le Membership API con un esempio di creazione di Custom Membership Provider e Role Provider. Nei mesi prossimi la serie continuerà toccando altri argomenti di ASP.NET 2.0 come le MasterPages, i Temi, e i nuovi WebControls. Curiosamente in questi giorni è uscito un analogo articolo di Andrea Saltarello, ma per chi non mastica bene l'inglese, oppure, come me, non ama scervellarsi a tentare di comprendere un testo in tale lingua, il mio articolo sarà sicuramente gradito. Buona lettura! powered by...

Composite UI Application Block CTP2

Da un blog su msdn ho notato che è stata rilasciata la CTP2 di un application block che pare davvero interessante. Si tratta di una serie di classi che dovrebbe aiutare a sviluppare interfacce a componenti, consentendo lo sviluppo e il test separato delle varie componenti per poi arrivare ad un assemblamento finale. Ho solo visto qualche spezzone di codice, ma quello che ho visto mi ha parecchio incuriosito. Chissà se sono riusciti a superare la fastidiosa complessità dell UIP. Link: Composite UI Application Block Home powered by IMHO 1.3 per leggere il post originale o inviare un commento visita il seguente indirizzo: Composite...

Non fare oggi quello che è meglio fare domani

Chi ha mai provato a sviluppare una applicazione Localizzata quando addirittura non Globalizzata , si sarà reso conto di quanto sia noioso mano a mano che si sviluppa porre nei file di risorse le stringhe che poi dovranno essere tradotte nelle varie lingue. Mi riferisco soprattutto alle stringhe perchè in realtà sono quelle che riguardano almeno l'80% della fatica necessaria. Personalmente trovo questa attività molto deconcentrante. Tipicamente mentre sto scrivendo una porzione di codice, dover copiare una stringa nel file di risorse per poi referenziarla mi fa perdere il filo...

I numeri del mio lavoro.

Questo pomeriggio, in un minuto di tempo libero, ho avuto l'idea di andare a curiosare in quelli che sono i numeri dell'applicazione gestionale che io e i miei collaboratori stiamo sviluppando. Ho cominciato curiosando con qualche query nel database oracle, e poi preso dalla curiosità ho fatto qualche conteggio anche sul codice realizzato in C#. Ecco i numeri per i curiosi: DATABASE: 304 tabelle 1040 procedure 39 trigger 131 sequenze 4 tablespace SORGENTE: 71 assembly ~1055 classi (a titolo di paragone vale la pena considerare che il framework...

IMHO 2.0: La tray icon

Gli utenti di IMHO, già conoscono e forse apprezzano la caratteristica tray icon con cui il software rivela la sua presenza. Nella versione 2.0 di IMHO, questa icona sarà ancora presente, ma la sua funzione è stata notevolmente potenziata. Essa, oltre che un rapido punto di accesso al programma, ora rivela anche informazioni sullo stato del server cui si è collegati, e fornisce messaggi come quello visibile nello screenshot riportato a fianco, che mostra l'esito di un tentativo di logon ad un server. Personalmente il giorno in cui ho iniziato a scrivere IMHO sono partito immediatamente con una idea precisa...

Boxing con un tipo primitivo...

Stamane a pranzo, una interessante discussione con un collega appartenente al "lato oscuro della forza", ci ha visto scambiarci strali tra un boccone e l'altro di un'ottima pasta con il pesto, pomodori e caciotta. Si è parlato di Ruby, di Linguaggi di programmazione, e poi man a mano la discussione è scesa giù giù fino al boxing/unboxing, ai tipi primitivi, e così via. Una normale discussione insomma, se a parteciparvi fossero stati solo due programmatori, magari al lume di candela, ma è curioso il fatto che in ascolto delle nostre erudite dissertazioni vi era Giulio, il mio collega grafico, che pur essendo...

XML Programming Refactored (XLinq)

Un ottimo articolo da cui cominciare ad approfondire XLinq. Link: XLinq: XML Programming Refactored (The Return Of The Monoids) powered by IMHO 1.2 per leggere il post originale o inviare un commento visita il seguente indirizzo: XML Programming Refactored (XLinq)

Replicator for .TEXT

Ed eccolo infine. La migrazione all'indietro da Community Server verso .TEXT mi ha messo nella necessità di adattare il codice del Replicator per Community Server all'engine di .TEXT. Lo scoglio da superare è stata la mancanza di un sistema di scheduling che consenta di eseguire dei Job ad ogni periodo di tempo determinato. Ne è uscito un bel pezzo di codice, che ovviamente come ormai vi ho abituato metterò a disposizione entro breve, non appena lo avrò testato per bene. Il replicator per .TEXT contiene al suo interno un piccolo scheduler, basato su un HttpModule per evitare di dover ricompilare...

Microsoft Expression Tours &amp;amp; Demos

Una serie di video sulla suite Microsoft Expression... non hanno ancora finito di riempirla. Link: Microsoft Expression Tours & Demos powered by IMHO 1.2 per leggere il post originale o inviare un commento visita il seguente indirizzo: Microsoft Expression Tours &amp;amp; Demos

David Chappell su Windows Workflow Foundation

David Chappell in un articolo su MSDN che parla di Windows Workflow Foundation. Pare sia un documento imperdibile... mi tuffo a leggerlo. Link: Windows Vista Developer Center: Windows Workflow Foundation powered by IMHO 1.2 per leggere il post originale o inviare un commento visita il seguente indirizzo: David Chappell su Windows Workflow Foundation

.NET Future Versions

Arrivano altre novità dal PDC 2005. Ecco un articolo MSDN che parla del futuro del nostro framework del cuore... Link: MSDN .NET Framework Developer Center: Future Versions powered by IMHO 1.2 per leggere il post originale o inviare un commento visita il seguente indirizzo: .NET Future Versions

A proposito di Divelements

Il questi giorni nel mainfeed di UgiDotNet è apparsa una notizia davvero brutta, sottolineata con poche righe da Alessandro nel suo blog. Si tratta del cambi della politica di licensing delle libreria grafiche prodotte dalla divelements, che personalmente uso da un bel po' non essendo mai abbastanza grato all'autore del software. La licenza che dapprima era free per chi realizzava software free (e questo mi ha spinto ad usarle per IMHO), da alcuni giorni è esclusivamente a pagamento. Una brutta notizia merita indagine, soprattutto se la libreria in questione è alla base del software freeware che da più di un anno...

Marker Interfaces

Non ho mai sentito parlare su UgiDotNet di markers interfaces, non so se dipenda dal fatto che vi sono iscritto da relativamente poco tempo, o se proprio l'argomento non è mai stato toccato. Stasera, durante una sessione di sviluppo di IMHO 2.0 mi sono trovato di fronte all'esigenza di usarle per risolvere con eleganza un problema che mi si è presentato, perciò ho deciso di proporvi in questo breve post qualche spezzone di codice per illustrarvene l'utilità. Innanzitutto vediamo di spiegare in due parole che cosa intendo quando parlo di markers interfaces. Chiunque abbia un po' di dimestichezza con la programmazione ad...

Enterprise Library 1.0 in edicola

E' in edicola il numero di giugno 2005 di Computer Programming su quale appare l'ultimo mio articolo della serie dedicata agli ApplicationBlocks. L'argomento conclusivo della serie è uno sguardo al futuro, con l'analisi della nuova Enterprise Library. powered by IMHO 1.2 per leggere il post originale o inviare un commento visita il seguente indirizzo: Enterprise Library 1.0 in edicola

Realizzare uno scheduler in ASP.NET

In seguito alla pubblicazione del Replicator for Community Server, e alla conseguente domanda legittima che mi ha posto Stefano Demiliani in merito alla possibilità adattare il replicator anche a .TEXT, ho deciso di approfondire un po' la questione e di studiarmi meglio il codice sorgente del Community Server per capire come funziona lo scheduler di Job che ho sfruttato con successo per replicare il mio blog. Ne è uscito un interessante articolo la cui lettura non vi impegnerà più di pochi minuti, ma che sicuramente sarà utile a più di qualcuno. Articolo: http://www.boschin.it/blogs/radicalmente/articles/aspnet_scheduler.aspx per leggere il post originale o inviare un commento visita il seguente indirizzo:...

Profilers for the CLR

Brad Abrams, segnala in un post i Profiles attualmente in sviluppo e rilasciati per il framework .NET Link: Profilers for the CLR powered by IMHO 1.2

Come installare assieme il Framework 1.1 e la service pack

Attraverso bink.nu ho scovato un post sui blog MSDN che spiega come sia possibile creare un setup che installi il framework e la relativa Service Pack in un solo colpo. Link: Creating a combined install point with the .NET Framework and a service pack powered by IMHO 1.2  

DateTime in Whidbey

Nel nuovo Framework .NET 2.0 molte cose hanno subito una revisione anche laddove a prima vista può essere meno evidente. E' questo il caso ad esempio del tipo DateTime che dal prossimo frameword disporrà di nuove caratteristiche quali ad esempio il supporto per l'ora legale e parzialmente per la timezone. Nel link che propongo in questo post, si trova una dettagliata spiegazione di queste novità, dei motivi che hanno spinto alla loro adozione ed un buon numero di link di approfondimento. Link: What are the New DateTime Features in Whidbey [Anthony Moore] powered by IMHO 1.2

.NET 2.0: SettingsProvider

Proseguendo l'indagine nella configurazione dell'applicazione del Framework 2.0, sono finalmente venuto a capo del SettingsProvider. Il SettingsProvider è una classe, che si occupa della serializzazione/deserializzazione delle informazioni di configurazione, di una classe derivata da ApplicationSettingsBase. Un SettingsProvider si compone di un metodo GetPropertyValues() che riceve in input l'elenco delle proprietà della classe da deserializzare che sono marcate con un attributo di scope come UserScopedSettings o ApplicationScopedSetting e di uno speculare metodo SetPropertyValues() che invece riceve i valori da serializzare, corrispondenti alle suddette proprietà. L'uso classico di un SettingsProvider potrebbe essere ad esempio quello di serializzare e deserializzare le informazioni di configurazione su...

Visual Studio 2005 beta 2 ad Aprile

PC World conferma. La Beta 2 di Visual Studio 2005 arriverà a fine marzo. Che poi sia inizio Aprile o fine Marzo, questo è solo una questione di punti di vista... Fonte: Visual Studio 2005 beta 2 delayed to April powered by IMHO 1.2

Un framework con i numeri

Curiosi di sapere quanti sono i PC nei quali sia installato il framework .NET attualmente? Il post collegato, riferisce una serie di numeri, suppongo riguardanti il mercato americano. A parte il titolo un po' ambiguo, nel post si trova la incredibile cifra di 120.000.000 di download del runtime dal sito Microsoft. Link: .NET Framework penetration powered by IMHO  

Sugli ASCX e sui WebControls

Spesso, leggendo i newsgroups vedo che c'è una diffusa confusione sull'argomento UserControls e WebControls, non tanto in merito alla creazione dell'uno o dell'altro, ma soprattutto nell'utilizzo che hanno le due tipologie di controlli. E' mia abitudine considerare in modo sostanzialmente diverso gli UserControl dai WebControl, e nel distinguerli ho adottato la seguente logica: 1) Lo UserControl è alla stessa stregua di una pagina. Questo non implica esclusivamente che vada "editato" in modo analogo, ma che esso possa fare accessi al database "diretti", ovvero senza dover esporre una proprietà datasource e acquisire i dati da visualizzare dalla pagina che lo contiene. Per questioni...

ApplicationSettingsBase

La passeggiata odierna nel framework 2.0 è stata allietata da un bell'incontro: la classe ApplicationSettingsBase. Considero bello l'incontro perchè in questa classe ho ritrovato formalizzato quello che ormai è il mio abituale modo di incapsulare in una classe il file di configurazione dell'applicazione. Sono stato parecchio in giro, per il namespace System.Configuration, alla ricerca delle novità che lo riguardano, per decidere come comportarmi per la configurazione di .TRAQ. Da quello che vedo, le novità non sono poche, ma in gran parte si concentrano attorno a questa classe ed ai SettingsProvider che la supportano. ApplicationSettingsBase in sostanza consente di esporre come istanza di...

Corso di ASP.NET 2.0 gratuito

Microsoft ha pubblicato un corso  gratuito, realizzato da AppDev, per chi voglia imparare ASP.NET in C#. Il download è un file ISO da 280MB. powered by IMHO

Of Enums and IL.

Certo che quando si desidera che il C# compilato in IL subisca delle ottimizzazioni, difficilmente si potrebbe pensare di arrivare a tanto. Eppure... Link: Of Enums and IL. powered by IMHO 1.2

Microsoft Enterprise Library 1.0

Oggi ho avuto l'occasione di testare la Microsoft Enterprise Library che è stata pubblicata da alcuni giorni, come segnalato da Lorenzo. L'occasione è venuta dal sito web che sto sviluppando e che vedrà la luce tra poche ore (spero). Visto il post suddetto, e il fatto che per il sito avevo usato il DAAB 3.1, ho deciso di dare una chance alla Enterprise Library di sostituirsi al vecchio ApplicationBlock. Così, dopo una breve e "frugale" letta alla documentazione ho imbracciato il refactoring e ho cominciato l'opera certosina di ritoccare il codice nel modo più efficace. La sorpresa è stata gradevole. E' davvero...

SQL Injection Attacks by Example

Dal blog di Roy Osherove ho scoperto un eccellente articolo sul SQL Injection, la dannosa pratica che permette di prendere possesso del database di siti o applicazioni realizzate male. Articolo: SQL Injection Attacks by Example La lettura è caldamente consigliata a chiunque scriva applicazioni web, perchè per la loro natura sono le più esposte a questo tipo di attacchi. Infine un consiglio: fare uso dei SqlCommands e dei Parametri mette al riparo da gran parte dei possibili attacchi di Sql Injection. powered by IMHO

Human Iteraction Proof for .TEXT

Finalmente eccomi a pubblicare il lavoro svolto, e raffinato grazie alla collaborazione preziosa di Stefano Demiliani, che ha messo a disposizione il suo weblog in qualità di vittima sacrificale. Nel file che è possibile scaricare al termine del post, si può trovare tutto il necessario per aggiungere con semplicità un controllo anti-spam molto efficace e molto personalizzabile. L'installazione è molto semplice e non richiede la ricompilazione di .TEXT: nello zip è riprodotta la struttura del folder web di dottext perciò è sufficiente porre i file così come vengono estratti nella relativa cartella occorre modificare il web.config per inserire il riferimento ad un httphandler...

Data Access Application Block - Il primo della serie

Su cortese segnalazione di Lorenzo, vi annuncio che è in edicola il primo dei miei articoli appartenenti alla serie sugli Application Blocks, pubblicati da Infomedia su Computer Programming. Questo mese si parla di Data Access, con un utile esempio su come creare un piccolo ORM homemade che fa uso di reflection e stored-procedures oltre che naturalmente dell'Application Block. Guai a chi non lo compra! powered by IMHO

BackgroundWorker for Compact Framework 1.0

Daniel Moth, MVP per il Compact Framework, ha pubblicato il BackgroundWorker per Compact Framework 1.0 . Sbirciando nel suo weblog è possibile trovare anche un esempio di come utilizzarlo. powered by IMHO

.NET Fusion Workshop

Una delle feature di maggior rilievo del Framework .NET è quella che consente di evitare il problema conosciuto sotto il nome di "Dll Hell". Fusion, così si chiama il meccanismo di ricerca e caricamento degli assembly ha introdotto un sistema molto flessibile per la definizione di un assembly e per il suo caricamento e versioning. Nell'articolo Fusion Workshop, si può trovare una esauriente e dettagliata spiegazione di come funziona questo meccanismo. powered by IMHO

WebParts and Cross-Page Connections

Le WebParts che faranno parte della prossima versione di ASP.NET 2.0, offrono l'occasione di implementare un framework di connessione cross-page che consenta a delle WebParts Consumer, di condividere informazioni provenienti da un Producer. L'articolo che segnalo è una lettura interessante in merito, con tanto di codice di esempio. Fonte: WebParts and Cross-Page Connections Interessante notare che in fondo alla pagina di queso post si può vedere implementato un eccellente metodo anti-spam che fa uso delle HIP. powered by IMHO

NotifyIconAdv Update

La NotifyIcon, che tempo fa avevo rilasciato con un articolo, ha subito la medesima sorte del provider per Isolated Storage che ho rilasciato stamane. E' possibile scaricare il sorgente completo dal sito di Sourceforge e anch'essa ricade sotto i termini della Common Creative Public License. Ovviamente chi ne ha ricevuto/scaricato una versione precedente sotto GPL o LGPL continuerà a poterne fruire sotto i termini di quelle licenze. powered by IMHO 1.1

IsolatedStorage provider per Configuration Management Application Block

Sviluppando le nuove feature di IMHO, mi sono trovato a dover estendere il Configuration Management Application Block di Microsoft. L'estensione che ho creato permette di utilizzare L'IsolatedStorage per rendere persistenti le informazioni di configurazione in formato XML, anche crittato e firmato. Ho pubblicato la libreria e il relativo sorgente all'interno del progetto IMHO, presso Sourceforge. La libreria consta di una classe IsolatedXmlFileStorage realizzata come un provider di storage per l'application block. Essa può essere facilmente collegata ad una applicazione semplicemente modificandone il file di configurazione. Ecco uno spezzone di codice: <applicationConfigurationManagement defaultSection="configFile">    <configSection name="configFile">        <configProvider             assembly="Elite.ApplicationBlocks.ConfigurationManagement,Version=1.0.1833.0,Culture=neutral,PublicKeyToken=null"            type="Elite.ApplicationBlocks.ConfigurationManagement.IsolatedXmlFileStorage"            file="app.config"            signed="true"            encrypted="true"/>        <protectionProvider            assembly="Microsoft.ApplicationBlocks.ConfigurationManagement,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null"             type="Microsoft.ApplicationBlocks.ConfigurationManagement.DataProtection.DPAPIDataProtection"            hashKey="Ae5+5644aB=" />    </configSection></applicationConfigurationManagement> Non appena il sito http://www.imhoproject.org sarà pronto, questa libreria e le altre...

Lo sapevate che: La chiocciola in C#

Quello che mi è successo stamattina mi ha incoraggiato ad iniziare una nuova "rubrica" nel mio weblog, dedicata a tutte quelle cose che, a meno che non ci si legga il manuale fino all'ultima virgola (come peraltro bisognerebbe fare), si arriverà a conoscere per pura coincidenza. Il primo post riguarda l'uso del carattere chiocciola in C#. Tutti sapranno che quando si scrivono delle stringhe in C#, anteporre la chiocciola consente di adottare una diversa politica di escape. Così mentre questo non è consentito: string a = "d:\myfolder"; Con l'uso della chiocciola diventa possibile: string a = @"d:\myfolder"; Fin qui nulla di nuovo, senonché stamattina stavo facendo qualche test con il DOM del MsHTML...

CodeDom #1

Mi sono spesso chiesto quale dei due modi di scrivere fosse migliore: // codice 1if ( a == 0 )    return "OK";else    return "KO";    // codice 2if ( a == 0 )    return "OK";return "KO"; In realtà poi a intuito mi sono abituato ad usare il modo 2. Oggi, lavorando un po con il CodeDom ho scoperto una cosa interessante: se si usa il modo 1 il compilatore automaticamente lo trasforma in 2. Probabilmente questo deriva dal fatto che l'IL generato è comunque il medesimo, ma potrebbe anche essere che si tratti di una ottimizzazione. A questo non so dare risposta, dato che non conosco bene l'IL. powered by IMHO

Memory issues

Ieri sera mi sono letto un articolo di MSDN che ho considerato illuminante rispetto le problematiche di gestione della memoria in ambiente managed. Mi hanno molto impressionato i benefici che una attenta applicazione di alcune regole può portare in termini di utilizzo della memoria. Vorrei riportare un esempio limpido di questo, direttamente tratto dall'articolo in questione: // Struttura 1 ****struct BadValueType{    char c1;    int i;    char c2;}// Struttura 2 ****struct GoodValueType{    int i;    char c1;    char c2;} Le due strutture riportate nel riquadro possono apparire del tutto uguali, se non fosse per il diverso ordine dei membri. Andando ad analizzare però la dimensione fisica in memoria ci si renderà conto che mentre la prima, occupa 12 bytes, la seconda si accontenta di...

Model View Presenter in .NET

Leggendo gli articoli che sono linkati dal post di Pierre sono rimasto fortemente impressionato da quanto facile potrebbe essere implementare questo pattern in .NET, specialmente in ambiente Windows Forms. Quello che avviene normalmente in una applicazione è che la form (a.k.a view) interroga il database, tipicamente attraverso una serie di strati intermedi e popola ad uno ad uno i controlli in essa contenuti. Ques'ultima operazione avviene per mezzo del Databinding che consente al programmatore di "dimenticarsi" del dato dopo che lo ha affidato al controllo fintanto che non se lo andra a "riprendere" direttamente nell'oggetto di business cui esso è...

Running ASP.NET on Apache

Una collezione di link per chi volesse tentare questa strada. Ma prima guardatevi bene IIS6! Apache and ASP.NET powered by IMHO

Quando invocare GC.Collect()

Segnalo un articolo che ho trovato molto chiaro sulla spinosa faccenda del GC.Collect(). The perils of GC.Collect (or when to use GC.Collect) powered by IMHO

ASCII art with C# - ASP.NET

Per chi ama stampare ancora con la stampante ad aghi, ecco un progettino per produrre le immagini ASCII. ASCII art with C# - ASP.NET powered by IMHO

Won't fix? Ma allora qualcosa da correggere c'era!!!

Ho appena scoperto che la mia segnalazione in merito a Define Event & Stay ha ottenuto risposta nel Product feedback center. Ecco come: Resolved as Won't Fix by Microsoft on 2004-12-27 at 12:53:07     Hey there - I absolutely agree that if you're trying to wire up multiple events at once, our default behavior (of jumping to the event handler) is cumbersome. The experience is optimized for folks working in serial rather than "multi-pass" - that is, dropping a control, naming it, labelling it, hooking up an event and writing code for it, etc. We'll consider ways of addressing this in future...

double.TryParse()

Stamane mi sono accorto di una cosa strana, che non riesco a spiegare. Il seguente codice ritorna true: 1  public void Main()2  {3      string test = "1.0.....2";4      5      double doubleResult;6      7      Console.WriteLine( 8          double.TryParse( test, NumberStyles.Any, CultureInfo.CurrentCulture, out doubleValue ) );9  } Ma con tutta la buona volontà non riesco a capire come "1.0.....2" possa essere un double valido. Va detto per inciso che sul mio pc il punto è considerato il separatore delle migliaia, tuttavia questo non va certo a migliorare la situazione. powered by IMHO

ASP.NET: Community Server disponibile

Sembra sia stato rilasciato il Community Server: ASP.NET : Control Gallery Fonte: http://dotnetjunkies.com/WebLog/richard.dudley/archive/2004/12/22/38213.aspx powered by IMHO

Ottimizzazione della memoria in ambiente managed

Questo è da leggere assolutamente, visti anche i 30MB usati da IMHO che mi sono stati segnalati. Rediscover the Lost Art of Memory Optimization in Your Managed Code powered by IMHO

Umile suggerimento

Vorrei esprimere un piccolo suggerimento, rivolto nientepopodimenochè ai progettisti di Visual Studio.NET 2005, nella speranza che qualcuno che mi legge e che ha conoscenze "altolocate" sia in grado di farlo arrivare a destinazione, sempre se lo considera fondato ovviamente. Il problema è questo: Quando si è in design di una form, spesso e volentieri si definisce l'evento di default di un controllo semplicemente facendo doppio click su di esso. Questo causa uno "spostamento" sul codice, esattamente all'interno dell'evento appena creato. Comodissimo, in alcuni casi, ma talvolta ci si trova nella necessità di definire più di un evento alla volta, perciò si...

Pattern & Practices - Articoli in uscita

Sta diventando una piacevole abitudine. Grazie alla collaborazione con la Infomedia, ho partorito una serie di 5 articoli che usciranno su Computer Programming a partire da Gennaio. La serie avrà come tema le Pattern & Practices di Microsoft che già sono state affrontate nella sessione di Lorenzo Barbieri lo scorso 2 dicembre. Gli articoli riguardano in particolare: Data Access Application Block Exception Management Application Block Caching Application Block Configuration Management Application Block User Interface Process Application Block E' anche possibile che alla serie si aggiunga all'ultimo momento una altro articolo su Smart Client Offline Application Block. Tutti sono...

Date, formati e timezone

So che uno degli argomenti più ostici è il trattamento delle date. Qui c'è un buon post che riassume un po' lo stato dell'arte. DateTime Parsing and Formatting with Time Zones [Anthony Moore] powered by IMHO

Usare ENTER al posto di TAB

Questo me lo segno. Anche un problema semplice talvolta non è di soluzione immediata. Enter Instead of Tab powered by IMHO

.NET Security: Lessons Learned and Missed from Java

Un documento sulle differenze nell'applicazione della security tra .NET e Java, pubblicato da Brad Abrams. Ne ho letto solo un pezzetto (il tempo è tiranno quest'oggi), ma sembra decisamente interessante. .NET Security: Lessons Learned and Missed from Java (PDF) powered by IMHO

Generare un feed RSS con l'XmlSerializer, ASP.NET e C#

Un utile post e un interessante controllo per ASP.NET che è in grado di generare un feed a partire da una istruzione SQL. Source: Generating an RSS feed with XmlSerializer, ASP.NET and C# powered by IMHO

Microsoft ASP.NET v1.1 Member Management Component Prototype

Le Membership API di ASP.NET 2.0 per ASP.NET 1.1, le trovate qui powered by IMHO

Google Suggest in ASP.NET 2.0

Ma anche ASP.NET può farlo... How to create the Google Suggest feature with ASP.NET 2.0 powered by IMHO

Come Visual Studio istanzia una form in design

So che questo è un problema su cui molti dibattono. Ho trovato questo interessante post che spiega piuttosto bene quello che succede. How does the Windows Forms designer in Visual Studio load a Form? powered by IMHO

Interoperabilità .net - java

Un post interessante sull'argomento con tanto di codice di esempio. Java Serialization and .NET - There Really *is* a Santa Claus powered by IMHO

Installare Sql 2005 Express e il Framework 2.0

Stasera ho deciso di installare un virtual pc, con il framework 2.0 e Sql Server 2005 Express, per fare qualche esperimento e predisporre l'ambiente di sviluppo per .TRAQ. Probabilmente molti di voi lo avranno già fatto, ma ecco lo stesso alcune indicazioni per chi volesse provarci. tanto per cominciare, occorre installare la giusta versione di framework 2.0 in base alla versione di Sql Server 2005 che si intende utilizzare. Personalmente ho scelto di installare la CTP di Ottobre perchè è l'unica che consente di utilizzare il Sql Express Manager che è stato rilasciato da poco. Le versioni scaricabili del framework sono...

DoubleBufferPanel: Da ricordare... e di pubblica utilità

Non mettere mai un GradientPanel della SyncFusion come background di una Form soprattutto se la distribuite in Terminal Server. Lo scrivo perchè questa cosa mi ha fatto perdere un intero weekend di riposo. Se capita anche a voi, una form che durante il rendering conta tanti flash come si possono trovare solo alla notte degli oscar, per almeno una ventina di secondi consecutivi, ricordatevi di questo: 1) non mettete il GradientPanel di sfondo perchè a quanto pare costringe il contenuto ad essere ridisegnato decine di volte 2) Createvi un panel DoubleBufferPanel come il seguente: using System;using System.Windows.Forms;namespace UI.Controls{    public class DoubleBufferPanel : Panel    {        public DoubleBufferPanel()        {            this.SetStyle(                 ControlStyles.DoubleBuffer |                 ControlStyles.AllPaintingInWmPaint,                 true );        }    }} Il flag in questione faranno si che il flickering sia...

Dynamically Generates CAPTCHA™ Style Images

Un controllo gratuito per generare immagini HIP New Control - FormShield - Dynamically Generates CAPTCHA™ Style Images powered by IMHO

Cutting Edge: Implications of Script Callbacks in ASP.NET

E poteva mancare il mitico Dino? Cutting Edge: Implications of Script Callbacks in ASP.NET powered by IMHO

Run ASMX Without IIS

Et voilà. Un altro interessantissimo articolo di MSDN. Service Station: Run ASMX Without IIS -- MSDN Magazine, December 2004 powered by IMHO

ASP.NET: 10 Tips for Writing High-Performance Web Applications

Un buon articolo per chi programma in ASP.NET ASP.NET: 10 Tips for Writing High-Performance Web Applications powered by IMHO

Feature nascoste di Visual Studio 2005

Ecco come attivare le linee guida nel Text editor di Visual Studio 2005 Guidelines – a hidden feature for the Visual Studio Editor powered by IMHO

IPC con Remoting

Chi ha provato a utilizzare .NET Remoting per risolvere problemi di Interprocess Communication, se sarà trovato nella ovvia necessità di impedire l'accesso alle porte esposte da computer diversi da localhost. In questo breve spezzone di codice viene impostata la proprietà rejectRemoteRequests che ha proprio questo scopo. La stessa proprietà la si può settare anche da file di configurazione, ma nel caso dell'IPC, io ho preferito farlo da codice. /// <summary>/// Run a remoting server/// </summary>private static void StartRemoting(){    // Accettiamo connessioni solo dal pc locale 127.0.0.1    IDictionary props = new Hashtable();    props["rejectRemoteRequests"] = true;    props["port"] = AppSettings.Current.RemotingPort;    TcpChannel channel = new TcpChannel(...

C# 2.0 Evoluzione della specie... è in edicola

Sono lieto di fare compagnia a Corrado con un mio articolo su Computer Programming di Novembre dal titolo C# 2.0 Evoluzione della specie. Nell'articolo un excursus sulle novità di C# senza tralasciare qualche paragone con il linguaggio concorrente Java 1.5 Buona lettura.

Perchè è vietato il return in un blocco finally

Incuriosito dal post di Michele che legittimamente si chiede per quale motivo è vietato usare return in un finally , sono andato in rete a caccia di un valido motivo. Assodato che l'uso di return in un blocco finally è perfettamente inutile, rimane da spiegare perchè sia anche vietato. Impossibile e inutile sono due cose ben diverse. Mi sono alla fine imbattuto in un articoletto, dal quale ho tratto l'esempio che segue, che parla dell'uso di return nel finally in Java e ho scoperto che in tale linguaggio questa cosa è perfettamente legale, pur se sconsigliata. Purtroppo non ho il compilatore Java installato (ehm......

Path.InvalidPathChars

Chi ha usato la classe Path si sarà accorto che contiene una serie di metodi e proprietà statiche davvero utili. Oggi mi sono imbattuto in una mancanza... A fianco alla proprietà InvalidPathChars che restituisce l'array di caratteri che non sono ammessi in un path ci starebbe bene anche la InvalidFilenameChars che restituisca i caratteri che pur potendo far parte di un path, non possono entrare in un filename, come ad esempio ":" e "/". Ovviamente ho risolto creando un array in questo modo: char [] invalidFileNameChars = new char[] {   '\\', '/',':', '*', '?', '"', '<', '>', '|'}; Ma volendo proprio fare i...

Sui pericoli nascosti degli iterators

Ormai anche i sassi sanno che una delle importanti feature che sono introdotte dal framework .NET 2.0 sono gli Iterators. GLi iterators sono in soldoni un modo alternativo agli enumeratori per iterare, appunto, all'interno di collections, o più genericamente di insiemi. Ma la potenza che viene messa in campo dagli Iterators è talmente elevata, che già da un po' si possono trovare nella rete degli esempi molto belli nei quali essi sono usati anche in modi un po' più creativo, ad esempio come generatori di numeri primi, oppure come iteratori del filesystem. Questo ultimo caso, che si potrebbe riassumere nel traversare ricorsivamente un albero, in realtà...

VB Features in whidbey beta 2

In questo post del team Visual Basic, si descivono alcune nuove feature che saranno disponibili dalla beta 2 di VB.NET 2005. In particolare il supporto a ClickOnce sarà esteso anche alle versioni express e i code-snippets saranno migliorati (i dettagli nel post). Quello che mi suona strano è quello che si legge fra le righe, in particolare in questa frase: "One thing you should know—the changes that I’m describing here were made after beta 1, so the first “big” release that you’ll see them in is the Visual Studio beta 2 release, some time early next year. They’ll also show up...

Ancora Oracle

A proposito ancora dell'argomento Oracle, ecco un altro articolo (anche questo un po' vecchiotto) che andrebbe tenuto presente http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnadonet/html/msdnorsps.asp

Oracle Data Provider vs Microsoft Data Provider for Oracle

Visto il post di Alessandro, ecco un altro link che completa quello da lui proposto per aiutare nella scelta del data provider per Oracle http://msdn.microsoft.com/data/default.aspx?pull=/library/en-us/dnadonet/html/ODPvsMSDP.asp

Quiz.

Anche Brad Adams si cimenta nell'arte del quiz. Quello che viene qui proposto fa riferimento ad una nuova feature del framework 2.0 rispetto il catching delle eccezioni.

Un blog su remoting

...direttamente dallo sviluppatore di .NET Remoting http://blogs.msdn.com/manishg/ Per inciso: Sapevate che Ingo Rammer è diventato MVP? Complimenti Ingo, te lo meritavi proprio...

Un compilatore Z#

A questo link è possibile scaricare un completo case study su come creare un compilatore per il CLR. Si tratta in questo caso di un linguaggio Z#, ovvero di un subset di C#. http://dotnet.jku.at/courses/CC/

Add Reference Dialog Tip.

Sempre dal team di C# un tip che trovo invece molto utile. http://blogs.msdn.com/csharpfaq/archive/2004/10/20/245239.aspx

Overload di operatori

Il team di C# sottolinea che l'uso di overload di operatori non genera codice che non sia CLS-Compliant e perciò suggerisce di usare questa tecnica liberamente. http://blogs.msdn.com/csharpfaq/archive/2004/10/20/245226.aspx In realtà non è certo per questo motivo che normalmente io non uso overload di operatori. Quello che mi spaventa non è la CLS-Compliancy, ma il fatto che un operatore rende il codice più criptico e meno leggibile di un buon vecchio metodo.

Usare Edit & Continue in C#2.0

E' di poche ore fa l'annuncio dell'introduzione di E&C in C#2.0 e già su MSDN si può leggere un articolo sull'argomento http://msdn.microsoft.com/vcsharp/default.aspx?pull=/library/en-us/dnvs05/html/edit_continue.asp

Java 1.5 vs C#

Un articoletto che evidenzia le differenze tra Java 1.5 (amo chiamare le cose col loro nome) e C# 2.0 http://it.slashdot.org/it/04/10/11/1454220.shtml?tid=108&tid=8 La conclusione finale che ne trae l'estensore è quantomeno interessante: At this point (even before Whidbey) the deciding factor (as always) for Enterprise work, when choosing a language platform, should be the support it has behind it, in terms of IDE, tools, api, and longevity of the vendor pushing it (forget the OpenSource crap argument, those guys are too in love with Perl, Python, and Ruby - Java could become the child nobody wants to talk about if Sun dies) - right now...

Interception Framework?

Roy Osherove propone un'idea a mio parere molto interessante. Nei commenti vengono sollevate delle obiezioni anche piuttosto significative rispetto a performances e manutenibilità del codice, mi sembra però che valga la pena di approfondire l'idea che si trova ancora ad uno stato embrionale. http://weblogs.asp.net/rosherove/archive/2004/10/12/241068.aspx

Un tool per Coding Standards

Chi come me ama accertarsi che le regole di coding siano rispettate da tutto il team di sviluppo, dovrebbe apprezzare questo tool recensito anche da DataGrid Girl. http://www.ssw.com.au/SSW/codeauditor/?HideLeftNav=True

[ARTICOLO] Creare una NotifyIcon avanzata

Il lavoro che sto facendo per migliorare costantemente IMHO, si sta rivelando foriero di nuovi componenti per la programmazione. Uno di questi è una NotifyIcon che gestisce anche i balloon diversamente da quanto succede per quella standard. Non si tratta di un lavoro del tutto nuovo, ma in realtà è il sunto del miglioramento di una classe già esistente trovata su codeproject, e dello studio della classe del framework con il Reflector. Articolo: http://blogs.ugidotnet.org/penpal/articles/4180.aspx Il codice sorgente è disponibile nel CVS del progetto IMHO al seguente indirizzo: http://cvs.sourceforge.net/viewcvs.py/imho10/Elite.Windows.TrayBar/ Buona lettura.

Un apice e via...

E impressionante notare quanti sono i siti web, anche quelli più importanti che cadono dopo pochi rapidi tentativi di violarne i segreti. La cosa più semplice, che immancabilmente non manca di regalare soddisfazioni è quella di inserire un apice in una casella di ricerca, se non in una ghiotta casellina di autenticazione. Sono ormai innumerevoli le volte in cui questa che per me è diventata una consumata abitudine, mi premia con un simpatico "500 Internal Server Error", che teoricamente apre un mondo davanti ai miei occhi. Non sono uno a cui piaccia rovinare il lavoro degli altri, e normalmente mi...

Xamlon 1.0

Da un post di Scott Water vengo a sapere che XAMLON è uscito nella versione 1.0 http://www.xamlon.com/ C'è anche una demo da vedere

Nuove icone con Whidbey

Se pensate che ci sia bisogno di avere un po' di nuove icone fornite con whidbey, votate per questa segnalazione sul MSDN Product FeedBack Center Deploy updated/new icon sets with Visual Studio

Shit Happens... ma solo di qua!

La lettura di uno degli ultimi post di Lorenzo, mi ha stuzzicato, anche perchè, uno dei delusi sono io... Shit Happens, è vero. Dal'tra parte come diceva qualcun'altro "l'omo è omo..." e non c'è alcun dubbio che in quanto tale è fallibile. Perciò è naturale che ci sia un bug il ASP.NET come ce ne sono in molte altre tecnologie. Però come dice il titolo, pare che questo sia una esclusiva nostra. La sovraeposizione ed il pregiudizio che regnano rispetto le tacnologie di casa MS fanno sì che un bug di ASP.NET sia infinitamente sopravvalutato rispetto ad uno equivalente in...

Query Notifications in ADO.NET 2.0

Uscito un interessante articolo su MSDN che parla di Query Notificationhttp://msdn.microsoft.com/data/default.aspx?pull=/library/en-us/dnvs05/html/querynotification.asp Ci sono anche degli esempi di codice T-SQL e in C# sull'uso del SqlDependency.

Come impostare .TEXT per funzionare con IMHO 1.0

Il client IMHO che ho rilasciato stanotte richiede che venga attivato il supporto ai WebServices di .TEXT. Perciò dovete andare in amministrazione di .TEXT, entrare nelle configurazioni, scegliere Options > Configure e attivare il checkbox "Allow Web Service Access". L'url da immettere nelle impostazioni per collegare IMHO al servizio varia in base a chi fornisce il blog engine. Per UgiDotNet dovete immettere il seguente: http://blogs.ugidotnet.org/[il tuo blog]/services/simpleblogservice.asmx  

IMHO 1.0 Instant Blogger Technology Preview

Alla fine ce l'ho fatta!!! Dopo un bel po' di tempo che ci lavoro, togliendo prezioso tempo ad altre attività serali, come studio e riposo, finalmente ho pubblicato un progetto che credo possa interessare tutti i "malati di blog" che ci sono in questa comunità e spero su tutta la rete. Si tratta di un tool che permette di postare offline sul vostro blog e di pubblicare tutti i post in un solo momento quando più lo ritente opportuno. Il progetto è scaricabile in form di Technology Preview da questo workspace di GotDotNet http://workspaces.gotdotnet.com/imho(update: il progetto è stato spostato su sourceforge: http://sourceforge.net/projects/imho10) Attualmente...

.NET Book Club

Per tutti quelli che non sanno come scegliere un libro su .NET ecco un sito espressamente dedicato all'editoria sul framework http://www.dotnetbookclub.org/

Human Interactive Proof

Ottimo articolo con codice sull'argomento. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/hip_aspnet.asp da leggere, spero di trovarne il tempo!

Compilatore distratto?

Provate anche voi: public int Property{   get { return Property;  }   set { Property = value; }} Come ovvio il runtime va in loop, ma la domanda è: perchè il compilatore non ci da almeno un Warning? fonte: http://blogs.msdn.com/sebby1234/archive/2004/09/23/233608.aspx

Eric Gunnerson su Java/c# Generics

In questo post Eric Gunnerson parla del'implentazione "Type Erasure" dei generics in Java. http://blogs.msdn.com/ericgu/archive/2004/09/23/233438.aspx Importante notare che Gunnerson dice in termini più approfonditi più o meno la stessa cosa che io avevo rilevato qui e qui "This means that Java generics doesn't give you the performance benefit that .NET generics do - not only do you not have the ability to create generics on value types (not that surprising given that Java has previously not had boxing), but you still have typecasts in your"

Trovare l'ApplicationPool dal PID

Può capitare di aver bisogno di capire a quale dei processi w3wp.exe che vediamo nel task manager è associata un ApplicationPool. A partire da IIS 6.0 è possibile organizzare le WebApp in ApplicationPool ottenendone la suddivisione in diversi processi. In questo post si descrive come utilizzare l'utility iisapp.vbs da riga di comando per queto scopo http://weblogs.asp.net/owscott/archive/2004/09/21/232628.aspx

ASP.NET 2.0 - Rinominati i folder

Questo post informa che i folder "di sistema" di ASP.NET 2.0 cambieranno nome acquistando un prefisso "Application_" http://www.asp.net/Forums/ShowPost.aspx?tabindex=1&PostID=691250 Perciò Code diventa Application_Code, etc.... Tutto ciò per evitare che si possano avere omonimi nei folder creati dall'utente. Io preferivo i nomi corti, non mi è mai venuto in mente di chiamare "bin" un mio folder...

Bocciato Resharper

Ho appena disinstallato Resharper. Purtroppo l'ennesimo tentativo di usarlo è fallito, perchè ancora una volta si è rivelato uno strumento che appesantisce enormemente l'ambiente di sviluppo. Tenete presente che il mio PC è un Pentium III 1.1 GHz con 512 MB RAM perciò dovrebbe essere piuttosto veloce. E' un peccato perchè le funzionalità di refactoring che da Resharper sono molto interessanti ed in parte anticipano quelle che troveremo in Visual Studio 2005. Ma un'IDE lenta è peggio che un'IDE povera (se Visual Studio 2003 si può considerare povero). Non resta che attendere...

ASP.NET e Struts

E' uscito un articolo su MSDN che compara l'architettura di Struts con quella di ASP.NET. Non l'ho ancora letto, ma mi pare fatto bene. Interessante anche il paragrafo dedicato alla migrazione di sistemi struts-based verso ASP.NET http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/ASPNet-ASPNet-J2EE-Struts.asp

Bugmenot

Spinto dal post del buon Lorenzo Barbieri ho dato un'occhiata a http://www.bugmenot.com Okkio a questo: http://www.bugmenot.com/view.php?url=http%3A%2F%2Fwww.ugidotnet.org

Internet Information Server 7.0

In questo post si parla delle feature di IIS7.0 e si da anche una possibile previsione per l'uscita. http://www.pluralsight.com/blogs/fritz/archive/2004/09/14/2262.aspx

Skin per .TEXT

Ho scoperto che esiste una splendida skin per .TEXT disponibile al seguente indirizzo http://mixtaper.com/blogs/gosatango/articles/221.aspx Andrea, se trovi 5 minuti, riesci ad installarla?

Oracle 9i e 10g incompatibile con .NET

Nel link sottostante viene descritto un comportamento che abbiamo riscontrato anche qui in azienda. Pare che un processo di Oracle, tale nmupm.exe occupi il 100% delle risorse del computer quando nello stesso è installato anche il Framework .NET http://forums.oracle.com/forums/thread.jsp?forum=46&thread=179892&message=480046#480046 Mi pare che la soluzione di disinstallare il Framework .NET, proposta nel forum non sia percorribile (non nel mio caso ad esempio). D'altra parte non mi sognerei mai di consigliare la disinstallazione di Oracle... Qualcuno ne ha una migliore?

Un sito dedicato alle regular expressions

Da un post del weblog Microsoft ho scoperto che esiste un bellissimo sito dedicato alle RegEx http://www.regexlib.com/ Da una semplice casellina di ricerca potete accedere a un libreria molto fornita di expression già pronte all'uso. Da vedere.

Threading con Singleton Pattern

Mi sono spesso trovato di fronte al conflitto tra la programmazione Object Oriented e la necessità di usare le caratteristiche multithreading del sistema operativo. Alla fine si tratta di scrivere una procedura, sotto forma di metodo, e pur esistendo delle classi che lo fanno, in se la cosa non si presta bene ad essere racchiusa in un'ottica object oriented. Qui sotto vi propongo una classe che usa il pattern Singleton per incapsulare un thread e tutto ciò che serve per controllarlo. Io l'ho realizzata per racchiudere i vari thread che lavorano all'interno di un Windows Service che ho creato, e l'ho trovata molto...

C#2.0 Evoluzione della specie

Mi è stato appena confermato che sul numero di Novembre di Computer Programming (#140) uscirà un articolo a mia firma che porta lo stesso titolo di questo post. L'articolo che fa parte dello speciale linguaggi, fornisce una panoramica abbastanza approfondita delle nuove feature del compilatore C# nel Framework 2.0. Spero sia un buon punto di partenza per iniziare a prendere confidenza con il linguaggio, con il più il vantaggio di essere scritto in italiano. Non mancherò di postare un avviso il giorno stesso in cui uscirà la rivista, giusto per rinfrescarvi la memoria. Buona lettura. 

MSDN Library

Da oggi, se avete bisogno di accedere alla documentazione del framework, potete semplicemente usare questo link http://msdn2.microsoft.com/library/<namespace>.aspx Sostituendo <namespace> con System ad esempio si accede alla documentazione del namespace System.

Why C#?

Come promesso, in un mio precedente post, sono finalmente a spiegare i motivi per cui personalmente ho eletto C# a mio linguaggio di riferimento. Badate, questo non significa che io mi rifiuti di sviluppare in altri linguaggi, ma semplicemente che potendo scegliere, a ragion veduta abbraccio C#. Il primo motivo è di carattere puramente affettivo. Le mie prime esperienze di programmazione seria le ho fatte in Ansi "C", e poi in C++ e C# ha il pregio di ricordarmelo. Certo, non è la stessa cosa in fatto di sintesi ma talvolta mi piace scrivere la chiamata ad un metodo, e il test del risultato...

Tigre o Micetto?

Continuando a leggere l'articolo di cui ho parlato nel mio ultimo post, ho scoperto una cosa inquietante: Il compilato generato da Java 1.5 "Tiger", sarà perfettamente eseguibile su una virtual machine precedente a questo compilatore. Questo si traduce nel seguente ragionamento rispetto i Generics: Nessuna modifica è stata introdotta nel bytecode di Java, quindi i generics sono una mera traduzione del codice Java 1.5 in Java 1.4 oggetto della compilazione finale. Questo significa che per effettuare una traduzione vengono introdotti un'infinità di cast e dei metodi bridge per consentire le conversioni. (leggete l'articolo, è tutto nero su bianco) Ora, se mettiamo assieme le...

Generics in C# e in Java

Mentre facevo una piccola ricerca di materiale per un mio prossimo articolo, mi sono imbattuto nel seguente paragrafo che spiega molto bene le differenze di implementazione dei Generics in Java e C#. Esso è tratto da Java Generics - Introduction - Angelika Langer Translation of Generics A compiler that must translate a parameterized type or method (in any language) has in principle two choices: Code specialization . The compiler generates a new representation for every instantiation of a parameterized type or method. For instance, the compiler would generate code for a list of integers and additional, different code for a list of...

Documentum Prima giornata

Quest'oggi ho affrontato la prima giornata di corso su "Documentum". Per chi non lo conoscesse, "Documentum" è il software di Content Management che attualmente ha il maggior credito nel mercato dei CMS. Si tratta di una piattaforma nata prima dell'avvento del web e giunta a tutt'oggi alla versione 5.2. "Documentum" è basato su Oracle 9.2 e Verity per l'indicizzazione full-text dei contenuti. Il software quindi si basa su due repository distinti per metadata e documenti, il primo è Oracle mentre il secondo è il filesystem.  Documentum nell'affacciarsi al mondo web si è avvicinata alle tecnologie Java che sposavano sicuramente meglio l'approccio...

Miglioramenti alla sicurezza di .NET

La Service Pack 1 di .NET 1.1 introduce molti miglioramenti relativi la sicurezza. Ecco un post che ne sottolinea uno molto importante. http://blogs.msdn.com/gzunino/archive/2004/09/05/225881.aspx

PInvoke Addin per VS.NET

Molto probabilmente molti di voi già lo conoscono, ma io lo posto lo stesso, perchè senza questo tool, il mio post #100 avrebbe sicuramente tardato un bel po' http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=75122f62-5459-4364-b9ba-7b5e6a4754fe

Ruler

Jeff Key, l'autore di SnipperCompiler, ci regala un altro tool completo di codice sorgente. http://weblogs.asp.net/jkey/archive/2004/09/01/224433.aspx

Ho fatto 100!!!

Mi sembra ieri che mi sono affacciato al "blogging", con un timido chi sono consapevole che l'onere che mi stavo assumendo era comunque sottovalutato, ed oggi, a distanza di alcuni mesi, 4 per l'esattezza, mi ritrovo a festeggiare il 100esimo post. Lo so, spesso e volentieri vi ho tediato con i miei sfoghi radicali, ma guardando ora nella console dello spendido tool che ci ha regalato l'ugi, mi rendo conto che comunque la maggioranza dei miei post sono dedicati a .NET. Perciò, per festeggiare il numero 100, ho deciso di trovare qualcosa di succulento, che spero vi faccia piacere. Per tutta la...

Today Popular News

Un articolo che stamane spopola tra i blogger microsoft... http://www.forbes.com/2004/08/31/cz_dl_0831msft.html

x+=x++;

Ecco un interessante post (suggerito anche da Eric Gunnerson) che aiuta anche a comprendere come il runtime valuta le espressioni http://blogs.msdn.com/lucabol/archive/2004/08/31/223580.aspx Il consiglio finale è: NON SCRIVETE QUESTO CODICE.

Complimenti e fulminacci!!!

Ormai tutti vi siete accorti del nuovo (splendido) motore di blog, ma pochi sanno l'ora esatta in cui è stato messo online... Stanotte tra le 0:30 e le 1:30, minuto più, minuto meno. Volete sapere perchè lo so? Ieri notte verso l'una ho deciso di postare un blog sulle ferie, da cui sono appena tornato. Mi sono collegato, ho scaricato la pagina dell'editor, mi sono scollegato e ho scritto il post... infine ricollegatomi ho ricevuto un bellissimo errore, dato che nel frattempo il motore di blog mi era cambiato sotto il naso!!! Naturalmente vista l'ora ho lasciato perdere, e suppongo che...

Sulle ali di C#

Alla Cornell University, hanno realizzato un interessante prototipo che utilizza un software scritto in C#. Si tratta di un aeroplano pilotato completamente via software. Il sistema è basato su Windows XP Embedded gira su quello che pare essere a tutti gli effetti un "thin client" con 512 MB di flash ram. http://research.microsoft.com/displayArticle.aspx?id=685

MS 70-315

Ieri pomeriggio, infine, ho affrontato (e superato) il primo dei 5 esami che mi separano dalla certificazione Microsoft. Finalmente ho avuto l'occasione di risolvere definitivamente alcuni dei dubbi che sono rimasti sospesi fino all'ultimo, quindi, sperando di fare una cosa buona nei confronti di quelli che lo dovranno fare dopo di me, ecco alcuni consigli: 1) I libri I libri consigliati dalla Microsoft nel sito delle certificazioni, non sono sufficienti. Considerateli semplicemente degli "indici analitici" di quello che dovrete studiare. Io ho acquistato il cofanetto .NET Core Requirements e gli ho dato una rapida letta. Per ognuno dei capitoli dovete perlomeno andare...

Scarsi programmatori e Ottimi Javisti

Chiacchierando nel weekend con un amico, un ottimo programmatore, molto esperto di Oracle e Java, mi sono trovato per l'ennesima volta di fronte ad una situazione ricorrente. Mi capita da un po' di tempo, anche a causa del mio nuovo impiego, di confrontarmi con programmatori dell'altro lato del modo, bravi programmatori che hanno scelto di lavorare con Sun piuttosto che con Microsoft. Sempre, quando iniziamo a discutere, avverto questa "sensazione" di essere guardato dall'alto in basso, come se lo scettro della buona programmazione fosse nelle loro mani. Tra una chiacchiera e l'altra ho avvertito, nel mio amico, una simile convinzione, che...

code-inline vs code-behind

In questo blog Paschal solleva un problema che già mi ero posto. Per quale orrido motivo in Visual Studio 2005 il modello code-inline è il default? Come giustamente chiosa, i nuovi utenti di questo sistema saranno per forza di cose portati ad utilizzare il codice nella pagina aspx, invece che in un file .cs o .vb a parte. http://weblogs.asp.net/pleloup/archive/2004/07/28/199718.aspx

Data programming in C# 3.0

Anders Hejlsberg parla di una nuova feature di C# 3.0 che consentirà di trattare i dati con una sintassi Object Oriented. mms://wm.microsoft.com/ms/msnse/0406/22899/Vision_of_Future.wmv  

Migrare ASP.NET 1.1 verso il 2.0

Interessante articolo sull'argomento

Resharper 1.0

Un add-in per Visual Studio .NET 2003, consigliato da Eric Gunnerson, che aggiunge capacità di refactoring e altro. http://www.jetbrains.com/forms/resharper/download/evaluate

Naming dei generics

Vi siete mai chiesti perchè per convenzione i generics usano una sola lettera per indicare i tipi da utilizzare? public class Item {} invece che public class Item {} Ecco come la pensa Eric Gunnerson (e trovo non abbia torto...) http://blogs.msdn.com/ericgu/archive/2004/07/16/185538.aspx

X#

E disponibile una preview del compilatore X# che ora si chiama COmega. http://www.research.microsoft.com/research/downloads/default.aspx

HTTP Pipeline Secrets #4

Ricordate come si chiamava ASP.NET prima della beta2 del framework 1.0? Questo pezzetto di codice che si trova nella AppDomainFactory del Framework 2.0 (e 1.0) vi può aiutare: if ((strUrlOfAppOrigin == null) || (strUrlOfAppOrigin.Length < 1)){    strUrlOfAppOrigin = "http://localhost/ASP_Plus";} Ricordate ora?

Cosa Volete nella prossima versione di C# (i risultati)

Cyrus' Blather ha pubblicato i risultati del suo sondaggio. http://blogs.msdn.com/cyrusn/archive/2004/07/06/173822.aspx

Web Services Tools

Un utile elenco di tools per WebServices da Beat Schwegler http://weblogs.asp.net/beatsch/archive/2004/02/12/71782.aspx

HTTP Pipeline Secrets #3

Ieri sera, proseguendo nella mia operazione di speleologia informatica ho incontrato una cosa piuttosto strana che vi propongo: Stavo valutando la classe ISAPIRuntime, una delle classi che funge da interfaccia tra la parte unmanaged e quella managed della pipeline di ASP.NET. In realtà questa classe è il primissimo stadio della parte managed, e viene evocata per mezzo di COM Interop. La classe ISAPIRuntime ha un metodo DoCGCollect() che suppongo venga chiamato dal runtime unmanaged per liberare le risorse. Qui ve lo propongo: public void DoGCCollect(){      int num1;      for (num1 = 10; (num1 > 0); num1 -= 1)      {            GC.Collect();      }} In sostanza questo metodo...

HTTP Pipeline Secrets #2

La mia avventura nella pipeline continua. E finalmente ho incontrato un'altra novità del framework. l'urlMapping. L'urlMapping, è completamente assente dalla documentazione della beta ma nonostante questo sono riuscito a comprenderne il funzionamento con solamente un paio di tentativi andati a vuoto.      enabled="true">     Questa sezione nel web.config fa in modo che se nella barra degli indirizzi del broswer digitiamo http://www.mysite.com/notexists.aspx in realtà mandiamo in esecuzione la pagina http://www.mysite.com/exists.aspx Tutto molto semplice. Una cosa di questo tipo con il framework 1.1 comportava lo scrivere una bel po di codice per fare il path rewriting. Tipicamente un HttpModule. Ora nel framework viene aggiuunto un UrlMappingExecutionStep in...

Un'importante sciocchezza!

Scusate un attimo, fermi tutti... voglio sperare che io mi stia sbagliando, che abbia preso un abbaglio, che una svista non mi abbia fatto vedere la giusta strada... Ma Visual Web Developer Express non compila le classi? Lo so, dopo quasi un'intera giornata che lo uso avrei dovuto accorgermene, ma in realtà quest'oggi per testare il fw2.0 in velocità ho sempre scritto il codice direttamente nella pagina. Ora però, che sono arrivato al provare un HttpModule e quando mi sono trovato a scrivere il type nel web.config, mi sono reso conto che non sapevo cosa scrivere. Un breve sguardo e...niente namespace, niente...

Ecco come funzionano i Tracepoint

In questo post una semplice spiegazione, con tanto di screenshots di come impostare un Tracepoint in VS.2005 http://blogs.msdn.com/ms_joc/archive/2004/07/02/171960.aspx

Paint.NET con codice sorgente

Al seguente link è possibile scaricare il setup e il sorgente di Paint.NET, un programma per l'editing di immagini scritto interamente in .NET; Ecco come descrivono il progetto gli autori: "Paint.NET is a senior design project aided by a mentor at Microsoft.  It is a paint program designed entirely by students and written using Microsoft's .NET Framework.  The program makes it easier to create and edit photos. It maintains some of the best features of the original MS-Paint application and includes new, powerful tools. Such new tools include a history storage for undos and redos, and powerful multi-layering which is often...

Utilizzo della memoria "un po' allegro"

Voglio sperare che quello che sto per dire sia motivato solo ed esclusivamente dalla beta version. Tuttavia devo segnalare che quando apro Visual Web Developer Express e assieme attivo Sql Server 2005 Express, immancabilmente dopo alcuni minuti mi si presenta il balloon che mi informa che la mia Virtual Memory scarseggia. Ecco cosa dice il task manager poco dopo aver iniziato a lavorare con i nuovissimi strumenti. Notate che VS 2003 aperto contemporaneamente usa solo 6.5 MB contro il 53 MB di VWD.2005 e i 72!! di Sql Server. Totale 125 MB. sarà anche una beta, ma mi pare un po' eccessivo. blog[at]boschin.it

John Kennedy usa C#?

Ovviamente non JFK... http://blogs.msdn.com/johnkenn/archive/2004/06/30/169854.aspx

Eric Gunnerson su "static"

In questo blog Eric Gunnerson spiega perchè non usare gli static imports. C'è molto da imparare. http://blogs.msdn.com/ericgu/archive/2004/06/30/169861.aspx

.NET Framework 2.0 SDK

E' disponibile l'SDK del Framework .NET 2.0 al seguente indirizzo .NET Framework 2.0 SDK (229 MB)

Impressioni di "guida"

La prima impressione usando VS 2005 è di allegria. E' tutto molto più colorato; Tra il testo è i numeri di linea, ad esempio, c'è una linea giallo-verde che evidenzia le modifiche apportate al sorgente.  L'intellisense è "diverso"... la combinazione di tasti CTRL+Barra spaziatrice non funziona più, ma in compenso basta digitare un carattere perchè appaia immediatamente la tendina che suggerisce come completare la digitazione. Spero tra le opzioni di trovarne una che mi ripristini la suddetta combinazione; Sono un po' abitudinario. E' apparso un nuovo menu, che ho apprezzato molto. Quando fate un refactor VS vi presenta anche la preview del codice modificato. Qualche problemino deve...

New File Dialog

Ecco la finestra di dialogo per la creazione di un nuovo file...ops di progetti nemmeno l'ombra. In bella vista "Master Page" e "Image Generator".

VS 2005 Express Setup Tip

Chi ha già provato ad installare una delle beta dei prodotti express, si sarà accorto che i setup scaricati da internet a loro volta fanno il download di vari componenti, tra cui la beta del Framework 2.0. Se vi interessa mettere da parte i file scaaricati, per installarli nelle vostre decine di PC ;-) li trovate qui: C:\Documents and Settings\[USERNAME]\Local Settings\Temp\VSESETUP Chi invece non ha ancora provato... che cosa aspetta!!! Sarà una lunga notte...

Questo mi mancava...

Visual Studio 2005 Beta Documentation http://lab.msdn.microsoft.com/library/default.asp

Eccolo!!!

Alla fine ce l'ho fatta! Ecco a voi il primo screenshot di Visual C# 2005 Beta1 http://www.boschin.it/imho/vcsharp2005.png  

Debutta il "Product Feedback Center"

"By submitting suggestions and reporting bugs on the latest builds of Visual Studio 2005 and other technologies, you're talking directly to Microsoft development teams. You can collaborate with Microsoft developers, MVPs, and beta testers to identify problems and workarounds, and then track feedback online. You also get notifications of changes and fixes. Note: This site is a work in progress; we welcome your feedback on it." Era da un po' che si sentiva la mancanza di una cosa del genere. Senza nulla togliere ai favolosi newsgroups naturalmente! Peccato che abbia cominciato male... fino a poco fa era irraggiungibile! http://lab.msdn.microsoft.com/productfeedback/

Ragionamenti "Express"

Cominciando a digerire la mole di informazioni che sta giungendo dal TechEd di Amsterdam, vorrei accennarvi ad un ragionamento che ho fatto poco fa con un collega di lavoro. Sql 2005 Express, e più estensivamente parlando tutta la linea "Express" mi sembrano nati esclusivamente per contrastare il mercato crescente del freeware e dell'opensource. In effetti di certo non sarà Oracle a fare le spese di questi prodotti, ma database come MySql e Postgres, che per quanto vecchi e consolidati, trovano ora un concorrente che li può mettere in discussione. La mancanza ad esempio del Query Governor, ma fa pensare che la strada scelta...

Visual Studio 2005 Developer Center

Ecco il link al sito per gli sviluppatori VS.2005 http://lab.msdn.microsoft.com/VS2005/Default.aspx E il blog sulle news. http://lab.msdn.microsoft.com/vs2005/rss.xml

Qualche altra novità sulle Express Editions

This morning at TechEd Europe, we announced the introduction of "Express" editions of a number of Visual Studio tools and SQL Server. The Express products are lightweight, easy to use, easy to learn tools for hobbyists, enthusiasts, and students who want to build dynamic Windows applications and Web sites. We also announced the release of Visual Studio 2005 Beta 1. The Express products consist of: Visual Web Developer 2005 Express Edition, a lightweight tool for building dynamic Web sites and Web services Visual Basic 2005 Express Edition, a streamlined programming tool for beginning programmers to learn how to build exciting Windows...

Visual Studio 2005 Team System Blog

Un blog fresco fresco per VS.2005 http://blogs.msdn.com/AskBurton/archive/2004/06/29/168474.aspx

Visual Studio 2005 Express

Chi volesse può nel frattempo deliziarsi con la versione express di Visual Studio; Vi segnalo in particolare: Visual Web Dev 2005 e Sql Server 2005 Express! http://lab.msdn.microsoft.com/express/

E' proprio vero...

Ecco la pagina che testimonia la disponibilità della beta. http://lab.msdn.microsoft.com/vs2005/welcome/default.aspx

La beta di VS.2005 disponibile in pochi giorni

In questo post di Brian Johnson si legge una notiziona... http://blogs.msdn.com/brianjo/archive/2004/06/29/168431.aspx

La mia buona azione

Ragazzi, questo è il mio quarto d'ora di gloria. Sono reduce da uno scambio di email con Jeff Key, l'autore di Snippet Compiler, uno dei più bei tool per dotnet. (vedi post precedente) Sono orgoglioso di poter dire di averlo aiutato a risolvere un piccolo buggetto in cui sono incappato. Provate ad impostare i Regional Settings del vostro pc in modo che la data appaia così: 27.06.2004 (con i punti al posto delle barre). Beh lanciando SC in questo modo si incontra un bell'errore che impedisce di usare il programma. Nulla di grave intendiamoci. Praticamente una bazzecola, ma a quanto pare sono...

Tools Top-Ten

Forse voi li conoscete già tutti, ma io vi segnalo lo stesso questo appetitoso articolo uscito su MSDN Magazine. Ten Must-Have Tools Every Developer Should Download Now Tra gli altri vi segnalo lo "Snippet Compiler", "Regulator" e "CodeSmith". Impossibile non averli! blog[at]boschin.it

Temi e Compilazione a runtime

A chi non lo avesse già fatto consiglio la lettura di questo articolo del grande Dino Esposito apparso su MSDN Magazine, ed ora pubblicato sul sito MSDN.1ma Parte 2da Parte Gli argomenti principe sono: l'applicazione di temi ai controlli ASP.NET 1.1 e la compilazione a runtime dei temi stessi. blog[at]boschin.it

NUnit e file di configurazione

Recentemente sto usando parecchio NUnit e ho riscontrato una grave difficoltà. Quando da NUnit c'è la necessità di accedere alle informazioni dell'app.config non c'è speranza... semplicemente non lo trova, e ogni tentativo (anche quelli suggeriti in internet) è stato vano. L'unica valida soluzione è stata quella di scaricare NUnit Add-in che integra le funzionalità di NUnit all'interno di VS.NET e risolve questa problematica. Tra l'altro bisogna dire che l'add-in è molto comodo perchè consente anche di fare il debug delle librerie senza dover creare necessariamente un progetto che le utilizzi. Per scaricare NUnit Add-In andate a: http://sourceforge.net/projects/nunitaddin/ blog[at]boschin.it

Uso di MappingName nei TableStyles di una DataGrid

Giusto ieril'altro stavo raffinando la mia libreria di classi per l'accesso ai dati quando mi sono scontrato con una stranezza del framework. Il contesto: Stavo creando una collection specializzata per la gestione di oggetti dato e tentavo invano di customizzare le colonne di una DataGrid cui passavo questa collection come DataSource. Il problema era che continuavano a venirmi visualizzate tutte le proprietà degli oggetti nella collection invece che quelle che specificavo come DataGridColumStyles Alla fine nell'SDK ho scovato questo trafiletto: When binding to an ArrayList, set the MappingName of the DataGridTableStyle to "ArrayList" (the type name) Così ho fatto e ho settato la...

Query di Excel con ADO.NET

Recentemente nei gruppi di microsoft si è presentato il seguente problema: Una collega ha un foglio excel con delle colonne in formato testo, le quali contengono dei valori. Con una query SQL per mezzo di ADO.NET estre i valori dal foglio excel e sorprendentemente ottiene dei valori NULL per delle celle che contengono effettivamenteun dato. Ecco la risposta di Microsoft: To understand this problem, you must understand 2 things:1) The Excel driver must "guess" the datatype of each column. To do this, itreads (by default) the first 8 rows of data. You can change this value inthe Registry.2) After the Excel driver guesses the...

WSE 2.0 is here!

E' la notizia del giorno.. I Web Services Enhancements 2.0 sono stati rilasciati. Ne parlano tutti, e probabilmente avrete già ricevuto la news di ugidotnet Per fare qualcosa di utile ecco una serie di link sull'argomento: 1) download2) What News on WSE 2.03) Programming with WSE 2.04) un po di video su devleap

Catastrophic Failure

Sto lavorando con il DHTML Editor di Internet Explorer. Non è la prima volta che lo uso, e anche questa volta confermo che si tratta di uno strumento comodo, ma i programmatori Microsoft potevano graziarci con dei messaggi di errore un po' più significativi? Che significa "Catastrophic Failure"? E' uscito tentando di leggere la proprietà DocumentHTML, un attimo dopo averla valorizzata. Non ci vuole tanto a comprendere che probabilmente c'è un istante nel quale il componente sta elaborando l'html appena inviato, durante il quale non è possibile leggerne il contenuto, ma cosa c'è di tanto catastrofico? M'è sembrato di sentire un brontolio...