.Idee

Idee, considerazioni e sperimentazioni tecniche del M.rkino

Silverlight e MVVM ma anche asp.net MVC e Partial View

Un post dove parlo un pò di Silverlight e MVVM ma anche asp.net MVC e Partial View... un pò in parallelo un pò li incrocio, un mix insommma.

reCaptcha – localizzazione

In luglio dello scorso anno raccontavo come integrare il controllo reCaptcha. Nel commentare il post risultava come limite la mancanza della localizzazione. Ringrazio oggi il commento che è stato fatto al post in cui si fa notare la possibilità di usare le reCaptcha Client API per applicare una traduzione personalizzata al controllo, in particolare impostando l’opzione custom_translations. (continua)

MS Forums e NNTPBridge (beta aug 09)… perfettibile

MS propone il bridge NNTP installato sulla macchina dell’utente per permettere di consumare i MS forum tramite classico newsreader.

ASP.NET, Css condizionali e Themes

Mi sono voluto scontrare di persona con il problema della compatibilità dei broswer e i css. L'uso dei Microsoft Conditional Comments non è in accordo con l'uso dei Themes. Ecco come ho risolto il problema. (continua)

...di Oracle, Number, ArtitmethicOverflow e anche NH

Vi è mai capitato "Arithmetic operation resulted in an overflow" nella lettura di campi numerici Oracle? Il problema si verifica in fase di lettura di una colonna NUMBER definita senza precisione; tale lettura potrebbe fallire. (continua)

Come ti acchiappo i comandi sql di NH #2

Questo post per approfondire/correggere la soluzione per il grabbing dell'SQL in Nhibernate trattato nel post "Come ti acchiappo i comandi sql in NH". Inoltre il post per ringraziare Claudio che il suo commento mi ha ricordato quanto log4net e nhibernate sono sinergici. (continua)

Come ti acchiappo i comandi sql di NH

Nella configurazionr di NH è possibile tramite l'opzione show_sql indicare al framework di eseguire il tracing dei comandi sql eseguiti sullo standard output (continua)

VS2008, ho perso "XSD Schema Editor"

Uno degli strumenti che ho sempre apprezzato nei Visual Studio passati è l'editor per disegnare/modellare schemi xsd. In VS2008 tale editor è stato sopresso, non volendo usare strumento di terze parti (free e non), ecco come ho risolto. (continua)

SharedView 1.0

Sto trovando ottima la coppiata Skype + SharedView (continua)

UdpPocketTrace su CodePlex

Ho pubblicato UdpPocketTrace su CodePlex, si tratta di un applicazione console che include un TraceListener e relativo monitor che usa il canale multicast upd. Suggerimenti, proposte e critiche? (continua).

ASP.NET, Client-Callback e lo stato dei controlli

Un post in cui appronfondendo le funzioni del cosidetto "Web 2.0" introdotte nel fx 2.0 mi focalizzo sul problema relativo al ripristino dello stato dei controlli in seguito alla callback. Il problema è che l'esigenza ci sia effettivamente ed è troppo limitato l'uso del solo argument per postare lo stato completo della form. Credo che avere come opzione la possibilità di avere l'effettivo stato della form completa sia una cosa interessante e che sopratutto eviterà di far si che la gente prenda i

Quelli che il load lo vogliono lazy ma anche un pò weak ...

A volte mi rendo conto che non solo ci farebbe piacere applicare il lazy load ma ci farebbe anche piacere che quello che carichiamo non occupi permanentemente spazio in memoria. (continua)

Convert con un metodo generico

Qualche riga di codice natalizio proponendo una "Convert con un metodo generico" così come avevo proposto "Casting con un metodo generico".

BinaryStorage diventa Virtual...

L'altro giorno ho parlato/annunciato il BinaryStorage, un progettino che ho reso disponibile su CodePlex. Non sono mai stato davvero soddisfatto del nome perchè BinaryStorage mi sembrava limitasse il concetto con cui ho ideato la libreria... "VirtualStorage" mi sembra un nome molto più fitting :-D

CodePlex e il BinaryStorage

Nonostante il periodo davvero pieno sono riuscito in queste sere a buttar su CodePlex un mio progettino... (continua)

MSSQL, UPDATETEXT e i salvataggi chunked

Ieri sono capitato sull'istruzione TSQL "UPDATETEXT" che permette l'update parziale di TEXT, NTEXTe IMAGE... (continua)

ConsoleSlideShow, la barra di attesa per le applicazioni console

Ancora un pò svogliato nel provare a fare post impegnati... ecco qui a postare il "ConsoleSlideShow" per ingannare i tempi di attesa delle applicazioni console... (continua)

Pensieri a ruota libera sulla modellazione di un archiettura a provider ...

Un provider dovrebbe gestire a 360 gradi un atomico business? Un ragionamento ad alta voce sulle varie possibilità nella modellazione/disegno di un archiettura a provider. (continua)

Strategie di caricamento dei provider

Quali strategie abbiamo per caricare i provider? Caricamento statico, a plugIn, tramite registrazione o mixed... (continua)

L'evoluzione nel disegno di architetture ...

E’ da un pò che sto preparando un post dove volevo parlare e fare un punto della situazione - a grandi linee - dell'evoluzione che ha avuto l'architettura software e in particolare il mio modo di impostare le architetture… fare il punto su quali mode ho seguito - per scelta o imposizione - e dove vorrei andare. (continua)

Ancora sulla lettura dei dati, Casting e DbNull

Tra agosto e settembre del 2004 parlavo di classi di supporto per facilitare la lettura dei dati di un datareader. Nel novembre del 2005 ho parlato di un idea per l'implementazione di una classe per il _supporto_ nelle operazioni di casting. Il mese scorso ... (continua)

Considerazioni su RBS, Ruoli e UserType

Credo che uno degli errori più diffusi e sia quello di confondere e/o unire il concetto di UserType con il concetto di ruolo. La Role Based Security (RBS) si basa sul concetto che un utente è associato a più ruoli e un ruolo identifica uno scope di azioni all’interno del applicazione/sistema. (continua)

Uno "screencast" per l'analisi!

La analisi funzionali e le analisi in generale senza avere il codice davanti sono decisamente quelle che escono meglio. Scrivere una analisi di sole parole a volte però non solo può risultare noioso e lungo ma potrebbe essere - sopratutto se davanti si ha il committente - che persone diverse danno significati diversi alle stessa frase/concetti: qualcuno pensa che alcune cose siano implicite qualcuno no. (continua)

Socket, BeginReceive e idee di utilizzo

Il TcpClient è un interessante wrapper per le connessione con Socket. A me poi piace incapsulare lo stream (vedere GetStream) in StreamReader e StreamWriter per poter facilmente leggere e scrivere sul canale. Questo potrebbe obbligare - a prima vista - a rinunciare alla ricezione asyncrona dei dati ... (continua)

Come ti sommo le pere con le mele #2

Ricordate l'idiomatica soluzione per sommare Pere e Mele descritta in "Come ti sommo le pere con le mele"? Soluzione interessante anche se mi era poco soddisfacente perchè poco pulita ( e poco OOP) e troppo legata a potenzialità del linguaggio. La problematica di trovate qualcosa di soddisfacente era sopratutto legata/limitata ai "limiti dei Generics di C# 2.0". La nuova soluzione è frutto di una più attenta analisi dei requisiti del caso d'uso/funzionalità. [continua]

Generics e i ... presunti "paradossi"

Il polimorfismo e le interfaccie sono senza dubbio una degli aspetti più interssanti della programmazione OOP... sebbene spesso vogliamo dare ai comportamenti di una classe e/o di un interfaccia degli aspetti quasi umani ci dobbiamo convincere che quelli che noi chiamiamo comportamenti sono contratti definiti da tanto di vTable e tecnicismi correlati .... con i generics ecco che l'ovvietà potrebbe essere mal vista e diventare una vera e propria scocciatura!! [continua]

Come ti sommo le pere con le mele

Ecco la mia idiomatica soluzione per sommare le pere con le mele. Cercasi soluzione semplice/pulita ma più ...elegante. [continua]

[ErrataKorrige]: La Cache e oggetti singleton

Piccola modifica al codice che avevo postato in "La Cache e oggetti singleton" perchè non si sa mai che la CacheItemRemovedCallback scatti prima che la funzione sia riuscita a tornare l'istanza statica e quindi vi ritroviate con un bel NullReferenceException. [continua]

Stringa, Casting implicito e la leggibilità degli assegnamenti

A volte i comuni costruttori di classe potrebbero risultare limitativi ai fini della comprensione dell'inizializzazione di istanze complesse. In queti giorni stavo - per puro diletto - rimettendo mano ad alcune mie librerie di Math nelle quali implementavo esempi di calcoli matriciali... disegnare entità matematiche a volte è un buon esercizio di modellazione di oggetti. Le matrici sono fondamentalmente classi che incapsulano array multidimensionali di numeri. Nella fase di unit test è utile istanziare staticamente matrici: come potrebbe essere utile inizializzarle in modo comprensibile alla lettura? Domanda che i più catalogheranno come banale e/o superflua e/o da perditempo :-p La mia idea era arrivare a poter scrivere qualcosa come...

Indicizzazione, keywords e il MetaKeywordsControl

Nella lotta a guadagnare posizione sui motori di ricerca intervengono due fattori: 1) il sito deve essere indicizzabile 2) il sito deve fare traffico, essere quanto più referenziato e altri fattori socio-politico-commerciali. Diciamo il punto (2) NON riguarda direttamente un tecnico ma riguarda più un consulente marketing/commerciale mentre il punto (1) - condizione necessaria (ma non sufficiente) - per l'indicizzazione è direttamente correlata ad una figura tecnica. Avevo già parlato in "Datagrid, paginazione e indicizzazione dei dati", come nella realizzazione di siti che necessitano di buon piazzamento nei mototi di ricerca è necessario l'eliminazione di alcune barriere architetturali. Avevo preso...

IConfiguartionSectionHandler... in lista per la deprecazione! :(

IConfiguartionSectionHandler e la possibilità di customizzare sezioni del file di configurazione è una della cose che mi sono sempre piaciute! Con la nuova versione del framework e i generics è/sarebbe possibile scrivere devvero velocemente un IConfiguartionSectionHandler, ecco come faccio ... [segui link per leggere l'intero post]

Come mi piace implementare il Lazy Load con un pizzico di polimorfismo...

Ogni layer può parlare solo con quello direttamente sotto di lui, tutti i layer conoscono il modello e ovviamente le entità di business non conoscono nessuno ... La modalità di caricamento dei dati in fondo è - a mio avviso - una questione unicamente del DAL che sa meglio di chiunque altro cosa è conveniente relativamente alla base dati da lui gestita. Come implementare un lazy load? Leggete il post per vedere come la penso!

SQL, paginazione con tabelle temporanee e campi IDENTITY

Recentemente sto adottando query che si basano sulla creazione di tabelle temporanee per la paginazione dei dati con MSSQL (anche versione 2000) ispirato da articoli che descrivono dettagliatamente (pro/contro e alternative) la tecnica. Per maggiori informazioni rimando a "Over the TOP" di Itzik Ben-Gan. Un esempio è quella che segue, una query che tornerà i dati dall'elemento 21 al 40.SELECT TOP 40 IDENTITY(int, 1, 1) as pageIndex, *INTO #tPaging FROM Products  WHERE productTypeId = 1ORDER BY Name ASC; SELECT * FROM #tPaging WHERE pageIndex >= 21; DROP TABLE #tPaging La filosofia della query è quella di caricare una tabella temporanea con un subset di dati contrassegnati...

BLL e i processi di validazione

I think it's much more useful to think of validation as something that's bound to a context - typically an action that you want to do. ContextualValidation di Martin Fowler. Parole sante, legare la validazione al contesto è un concetto che sto appoggiando da un pò (per le stesse consiederazioni fatte da martin Fowler), abbandonando la validazione _generica_ degli oggetti e indipendetemente dal contesto. Tale modalità di operarare è quella che su cui si basa la validazione per attributi come suggerito in un vecchio (anno 2003) ma brillante tip di Pierre: "Creare un Attributo per implementare Constraint". Ultimanete sto quindi implementato sistemi di validazione non più basati...

Non tutto oro quello che è System.Transactions

Nell'ultimo mio post "Alla scoperta di System.Transactions ... " avevo illustrato un HelloWorld del namespace "System.Transactions". L'impressione che forse dava il post e l'impressione - forse errata - con cui ho approcciato l'argomento era quella di poter introdurre sistemi transazionali con leggeranza come semplici e usuabili appaio le classi del nuovo namespace. Seguendo il link avrete illustrati i miei test, osservazioni e considerazioni sull'argomento.

Alla scoperta di System.Transactions ...

Nel WE ho preso a guardare uno dei nuovi namespace introdotti nella versione 2.0 del Framework: System.Transaction. (vedi "Introducing System.Transactions in the .NET Framework 2.0") Il namespace premette di _creare_ interessanti contesti transazionali. Visita il link per vedere un esempio di applicazione pratica.

La Cache e oggetti singleton

In alcuni nostri progetti potrebbe apparire del codice come quello che segue.class C { public static C Current { C c_currentInstance = (C) HttpContext.Current.Cache["c_currentInstance"]; if(c_currentInstance == null) { c_currentInstance = new C(); HttpContext.Current.Cache.Add("c_currentInstance", c_currentInstance, [cut]); } return c_currentInstance; } } Ogni chiamata a C.Current implica una ricerca per chiave ed un cast. Ma tutta questa burocraziona algoritmica...

Archietture a plugIn, pensieri e considerazioni

Uno dei modelli architetturali che più mi piace adottare per garantirmi sistemi aperti e personlaizzabili senza toccare il core applicativo è l'architettura a plugIn. Questo Week end ho fatto un paio di riflessioni: meglio avere un interfaccia che i plug devono implentare o una classe base che devono estendere? La questione credo che sia interessante perchè ognuno in merito ha i suoi pro e i suoi contro.

Continua seguendo il link.

WebService, Serializzazione, dati nullabili e interop 1.x e 2.0

[English version] Finalmente con la versione 2.0 del Framework la serializzaione ci darà la possibilità di inserire nei nostri xml dati nulli secondo gli standard xml, xsi:nil.Tale possibilità ci viene offerta dai nullable types. L'xml è ad oggi considerato il re dei formati di interoperazione tra sistemi eterogenei per tecnologia. Un possibile scenario del prossimo futuro potrebbe essere quello di avere il sistema server che espone servizi web implementati con la 2.0 e client implementati con la 1.x.  Ovviamente la cosa è possibilissima. Ma cosa succede se il server espone un nullable type? Client-side interpreta il wsdl correttamente e genera quindi senza problemi la classe proxy.. ovviamente non...

[Errata Corrige] Implementare IXmlSerializable

Come sempre dico "mai usare quello che non è documentato", ma a volte non mi ascolto :(. E infatti questo post per segnalare un _bug_/imprecisione quando ho parlato di CDATA e implementaizone dell'interfaccia IXmlSerializable: "Come ti serializzo in CDATA", e il tip  "Serializzare elementi CData implementando IXmlSerializable" (che provvederò a correggere dopo qualche ulteriore accertamento). Il problema sta nell'implementazione del metodo di lettura "void IXmlSerializable.ReadXml(System.Xml.XmlReader reader)". Sembra essere infatti necessario portare il reader sul prossimo nodo prima che il metodo si concluda. Se avete seguito il mio tip e il campo CDATA lo avete usato come ultimo elmento del vostro schema allora...

Google Desktop Search e la classe proxy

Google Desktop Search non espone un web service classico/standard ma semplicemente aggiungendo il parametro format=xml alla richiesta verrà tornato il risultato in formato xml. Ho postato sul blog - tra gli articoli - un esempio di implementaizone veloce di una classe proxy per cosumare tale servizio: Una classe proxy per consumare Google Desktop Search .

Oggi mi sento un pò Wiki! :-D

Era ora che anche io mi buttassi nel magico mondo del Wiki... grazie a Luka e ai sui manuali pratici di Wiki, eccomi qui a comporre la mia Home Page :-D Perchè anche il wiki? Il mondo della rete ci dà ogni giorno modo di comunicare con forme sempre diverse e innovative e questo da la possibilità di ampliare e divulgare la conoscenza... il bello del wiki - a mio avviso - è quello di avere argomenti sempre under construction arricchiti di giorno in giorno dell'esperienza di ognuno dei partecipanti... il blog come la radio, il forum come la piazza, il portale...

ADO.NET, i parameter e l'importanza dei tipi precisi.

Solitamente sono abituato a usare i parameter ma spesso lascio che sia ADO.NET a decidere per me quale sia il DataType da associare, decisione che poi si riflette - ovviamente - nella chiamata al database. La stringa viene per cui passata di default come NVARCHAR poichè in .NET la stringa è unicode. Sotto segue l'effetto che fa sul database filtrare su una colonna usando un tipo che non coincide con la colonna stessa, nel caso specifico dell'esempio qui sotto ID della tabella MyTable è di tipo CHAR. exec sp_executesql N'SELECT * FROM [MyTable] WHERE ID = @ID', N'@ID nvarchar(12)', @ID = N'0123456789AB' (1 row(s) affected) Table 'MyTable'....

Implementare un Contesto a livello di Thread

Settembre... ora di rimettersi in moto, anche se quest'anno con un pò di fatica in più :o In queste sere di ripresa sto facendo qualche gioco non tanto sulle archietture quanto sulle tecnologie analizzando alcune possibilità date dal Framework _conosciute_ ma mai davvero approfonfite. In questi giorni ho avuto la necessità di avere contesti a livello di Thread per poter condividere dati tra funzioni senza aggiungere parametri nelle varie firme. Attenzione il contesto a livello di Therad non è da confondere con il contesto del Thread (quello in cui gira) in quanto in esso potrebbero girare altri Thread. Ho quindi approndito Thread.AllocateNamedDataSlot (e...

Lady bug e le segnalazione del M.rkino :-D

Ricordate qualche giorno fa quando dicevo che avevo avuto problemi con la configurazione dei tool esterni con VS2005, http://blogs.ugidotnet.org/markino/archive/2005/07/26/24281.aspx? Postato il problema su lady bug, non avevo molta fiducia nella cosa perchè non mi sembrava che le risposte fossero tempestive... e invece sembra ce il bug sia stato risolto, "A fix for this issue has been submitted to the VSCore checkin system. Thanks!", http://lab.msdn.microsoft.com/productfeedback/viewfeedback.aspx?feedbackid=74843b88-6133-4693-8185-0a292e9871cb! :-D La cosa più piacevole è stata invece che tempo fa avevo proposto un metodo per facilitare la lettura dei DbNull, pensiero esposto un po grezamente qui sul blog, "Lettura dei dati e DbNull", e ancor più grezzamente su lady...

Xsd.exe a portata di menù

xsd.exe è un tool che sarebbe comodo avere sempre a portata di mano per chi è abitauato a creare l'XSD da cui poi generare le classi per la serializzazione. Ecco come potete fare. Tools/External Tools.../Add Configurare come illustrato in figura un nuovo elemento. Aprire il file xsd e richiamare da Tools la voce che abbiamo aggiunto. dal menù contestuale del progetto usate la funzionalita "Show All Files" (come mostrato in "Visualizzare file e cartelle nascoste in Visual Studio .NET") intregrate nel progetto il file creato. Attenzione di default le classi vengono generate in c#, aggiungete quindi argomenti quanto basta per meglio...

CollectionBase e OnValidate

Quando codifico mi piace usare le collezioni tipizzate, il metodo più veloce è usare "STC Generator" di Pierre oppure andare su MSDN alla voce "CollectionBase class",  http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemcollectionscollectionbaseclasstopic.asp, copiare e incollare la classe di esempio (una collectionBase di Int16) e fare replace di Int16 con il tipo di cui voglio creare la collezione. Ma è sufficiente? No, a mio parere occorre sistemare anche il metodo OnValidate. L'esempio MSDN inviterebbe a scrive:   protected override void OnValidate( Object value )  {      if ( value.GetType() != Type.GetType("MyNamspace.MyType") )         throw new ArgumentException( "value must be of type MyType.", "value" );   } Che bruttura dico io! :( Io prefesisco scrivere:   protected override void OnValidate( Object value ) ...

CruiseControl.NET e Nunit

Ieri mi sono ritrovato a valutare CruiseControl.NET per usarlo nel processo di sviluppo di un medio/grosso progetto. Del tool se ne parla anche su alcuni blog amaricani e anche sui blog di UGI e a tal proposito rimando alla categoria di articoli "CruiseControl.NET e NAnt" di  FoxyBlog . Il tool è davvero interessante ancora se in _beta_ (siamo ad oggi alla release 0.91, se non ricordo male). Esso si basa sul principio dell'"integrazione continua" . Periodicamente contriolla nel repository del codice, esempio CVS o VSS sono integrabili velocemennte,  se ci sono stati cambiamenti e quindi ricompila. Eventualmente lancia lo unit test, nunit, se vogliamo fa un giro...

E se lo String.Format fosse verboso?

La capacità della stringa di formattare un insieme di dati, grazie anche alla definizione di formattabilità dei campi, è una delle funzionalità che più mi piaciono della stringa... anche se poi String.Format mi capita a volte di usarla anche fin troppo... che in fondo non sempre è necessaria :-p Tuttavia una _limitazione_ della funzione è il fatto che va per indice a recuperare i dati da un array di oggetti. Beh dire limite è una paraola grossa in fondo pattern di formattazione e la definizione dell'array di oggetti sono tutti definiti dal programmatore hardcoded per cui un possibile errore è dovuto...

NUnit e .config

Quando uscirà VS2005 forse NUnit verrà sostituito da quello integrato nel tool di sviluppo. In questi giorni mi sono trovato a mettere in piedi lo unit test di un progetto su Framework 1.1, VS2003. Il solo problema che avevo con NUnit era come e dove impostare un eventuale .config. Tra i blog di UGI c'è un po letteratura in merito. "App.config e NUnit"http://blogs.ugidotnet.org/adrian/archive/2004/09/17/2851.aspx "NUnit e file di configurazione"http://blogs.ugidotnet.org/penpal/archive/2004/06/15/1125.aspx Ho visto che in giro se ne parla comunque poco... i casi sono che o tutti hanno trovato la soluzione oppure nessuno o pochi usano NUnit (e/o in generale praticano lo Unit Testing). Posto qui la soluzione che ho trovato...

[.whidbey] Casting con un metodo generico

Grazie all'arrivo dei generics (classi e metodi), http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvs05/html/vb2005_generics.asp, potremo fare un sacco di cose relative alla tipizzazione senza troppo effeort di implementazione... ma questa è una storia che ormai è trita e ritrita di cui ne parlano tutti. Quello che voglio fare qui è presentare una possibile classe casting... perchè nonostante i generics ql volta il casting dovrà essere ancora usato (anke se forse un pò meno). static class Casting { public static bool Try<T>(object o, out T t) { ...

Web e menù basato sui ruoli

In whidbey, VS 2005, sarà possibile usare un componente che si modellerà in base ai ruoli dell'utente connesso. Con un po di codice è possibile ovviamente fare la stessa cosa anche usando gli strumenti odierni. In questi giorno mi sono ritrovato a preparare una demo di un possibile menù configuarbile in base ai ruoli dell'utente. Ecco qui il codice... certo richiede qualche modifica sul lato presentation, quello che ho fatto è proprio una bozza che serve per capire il flusso :-p

Giocando con l'interoperabilità, le parte 2 e 3

Per chi aveva seguito l'articolo Giocando con l'interoperabilità (parte 1), ecco pubblicati anche il seguito: Giocando con l'interoperabilità (parte 2)  e Giocando con l'interoperabilità (parte 3) .  

UDPClient e Multicast

Nel corso dell'implementazione dell'archiettura di esempio che ho iniziato a descrivere qui mi sono trovato a combattare con i problemi legati a UdpClient e Multicast. 2 UdpClient  sulla stessa macchina proprio non se la sentono di ascoltare lo stesso gruppo multicast... beh questo bel problema :o Ho cercato in rete per vedere se qualcuno aveva stesso problema.... ma poca roba e anche l'esempio di MSDN, http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconusingudpservices.asp, non vuole proprio funzionare. Ho chiesto in ufficio e un collega - un grazie a Paolo - mi ha girato del codice per fare quello che volevo che però usava esplicitamente le Socket e non usava UdpClient... beh mi son...

Giocando a integrare e interoperare

Proprio la sera non ce la faccio a vedere la TV... anche i giochi al PC non è che mi attirano molto - eccezion fatta per Civilization III e pochi altri. Insomma ognuno si diverte un pò come meglio crede e in queste sere di fiacca uggiosa primavera mi sono rilassato/divertito costruendo questo, che pian pianino - per ql ke posso - commetterò.

Wrappare il testo ad una certa lunghezza

Quando si spedisce la posta in formato testuale o si posta sui NG è importante impostare il proprio client in modo che wrappi il testo ad una certa lunghezza (in OE occorre impostare alcune opzioni dell'invio di posta). Wrappare il testo è importante al fine di rendere più leggibile il testo al destinatario. Se si spedisce la posta da codice l'opzioni di wrapping non esiste per cui occorre implementarne una propria. Ecco quella che uso io nata quando ho implementato il sync tra forum e NG,  "Wrappare i testi ad una certa lunghezza di caratteri" , che mi fa piacere condividere. Nonostante...

ButtonColumn e Command Argument

Alle righe della datagrid sono associabili bottoni/linkbutton ai quali è associabile un comando, ma le ButtomColumn hanno il CommandName ma non il CommandArgument. L'evento di ItemCommand,  associato al _click_ di una ButtonColumn, nasce per avere sia CommandName sia CommandArgument. Sarebbe comodo usare il CommandArgument per avere l'identificativo del record associato all'Item selezionato ma tutti gli esempi dell'MSDN portano il caso in cui tale identificativo è mappato su una colonna della griglia... ma mica è sempre così! Se l'identificativo è - esempio - un Guid cosa gli frega all'utente di avere una colonna tanto lunga e tanto incomprensibile? Io faccio come segue: private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e){ DataRowView drv...

Cosa hanno in comune IDataReader e DataRow e DataRowView?

Cosa hanno in comune IDataReader e DataRow e DataRowView? Sicuramente il fatto che in modo o nell'altro rimappano un record... sia esso recuperato da db sia esso caricato da altra fonte dati. Mi sono smepre chiesto come mai solo il Datareader implementa IDataRecord... cosa che per altro non ho mai capito. Questa mancanza di interfaccie comuni tra gli oggetti elencati a volta ci porta a dover implementare mappature doppie tra sorgente dati e custom object, che non sempre potrebbero arrivare da un DataReader. Qualche settimana fa eccomi allora tornato alla carica sul problema cerando di trovare una soluzione... e quella sera...

MutuallyExclusiveRadioButton, una possibile soluzione

Un problema tristemente noto è quello legate ai RadioButton in elementi di  controlli ripetitivi, datagrid, datalist, etc... Sul support di MSDN è presente  anche un articolo "BUG: Radio Buttons Are Not Mutually Exclusive When Used in a  Repeater Server Control", http://support.microsoft.com/kb/316495/EN-US/  , con tanto di spiegazione dle problema ma senza nessuna soluzione proposta di  soluzione alla cosa. In questi giorni mi sono trovato a ripondere ad un  post sul forum... e ho decisono di perderci qualche ora per vedere di trovare  una possibile solzuione. Senza fare il maleducato che si ruba come al solito tutto il muro del blog comune vi rimando al post che pubblicato nella sezione...

Come ti serializzo in CDATA

A volte fa comodo avere deio campi con dei CDATA sopratutto quando il contenuto del testo di un nodo deve essere in documento HTML o documento XML. (continua)

Errata Corrige: Creare una pagina per il download di file

Nel mio ultimo articolo Creare una pagina per il download di file, ripreso nel blog qui, indicavo il seguente codice per determinare il Content-Type data l'estensione del file.Response.ContentType = Registry.ClassesRoot.OpenSubKey(TheFile.Extension). GetValue("Content Type", @"application\octet-stream") as string;Qualche giorno fa Raffaele mi faceva notare che sarebbe buona cosa chiudere le chiavi del registro una volta aperte... non mi sono infatti accorto che Microsoft.Win32.RegistryKey è una classe IDisposable. Ecco quindi il codice rivisto:using(RegistryKey rKey = Registry.ClassesRoot.OpenSubKey(TheFile.Extension)){ Response.ContentType = rKey.GetValue("Content Type", @"application\octet-stream") as string; //rKey.Close(); }La chiusura esplicita della chiave (chiamata...

Accrocchi per risolvere espressioni matematiche

Qualche tempo fa mi ero soffermato sul problema della risoluzione di espresioni matematiche.

«aprile»
domlunmarmergiovensab
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011