Di .NET e di altre amenita'

settembre 2006 Entries

MovableTypeProvider: Un regalo per le community

Vorrei segnalare il mio ultimo articolo, sul sito web di XeDotNet, che parla dell'implementazione di un MovableTypeProvider sfruttando il Provider Model introdotto da ASP.NET 2.0. L'articolo illustra la recente esperienza che ho fatto per interfacciare Windows Live Writer con il la parte redazionale del sito di cui ho già ampiamente detto negli ultimi post.

Oltre ad essermi divertito parecchio a comprendere bene il Provider Model e l'uso delle MovableType, ho colto l'occasione per regalare questo lavoro al mondo delle community online, che partendo dal codice pubblicato potrebbero rapidamente esporre una analoga interfaccia sui propri siti web, facilitando in questo modo l'interazione con i propri iscritti. 

L'unica cosa che chiedo, a chi decida di utilizzare questo codice è un link all'articolo pubblicato sul sito web di XeDotNet da parte del sito che sfrutterà la libreria per fare in modo che essa possa essere adottata da un numero sempre maggiore di user groups e community.

Se qualcuno avesse bisogno di supporto per l'implementazione, non ha che da cercarmi via email all'indirizzo  e sarò a sua disposizione per qualunque consiglio o segnalazione vorrà farmi.


per leggere il post originale o inviare un commento visita il seguente indirizzo: MovableTypeProvider: Un regalo per le community

Computer Programming: Non uno... ma ben due!

Questo mi dovrebbe far intuire che è giunta l'ora di dare una sfoltita ai miei impegni (tanto so che non lo faccio lo stesso), ora che sto sperimentando anche la "carenza di vita privata" spesso evidenziata anche da Andrea in alcuni suoi post. L'occasione per questa riflessione mi è data dall'aver completamente dimenticato che questo mese sono in uscita su Computer Programming non un articolo a mia firma, ma ben due! Sapevo che qualcosa doveva uscire, ma fino a stamattina non ero mai andato a leggere il sommario perciò solo oggi mi sono accorto che i titoli in uscita sono due.

Pattern & Practices: Microsoft Enterprise Library 2.0

Un cocktail speciale: ASP .NET, BuildProvider e un pizzico di Nhibernate

Il primo è una overview ragionata degli strumenti della ENTLIB 2.0, ma la parte bella (leggi: quella di cui vado più orgoglioso) è nel secondo articolo. Chi mi legge regolarmente sa che ultimamente sto spostando la mia preferenza dall'uso massiccio di SQL nei suoi vari dialetti, verso un uso più "meditato" di un cocktail di ORM/SQL. In questo articolo propongo una soluzione decisamente smart dell'uso di NHibernate sfruttando una delle finezze di ASP.NET 2.0. Per chiarire in termini pratici, considerate che mentre scrivete il file di mappatura di NHibernate in realtà state descrivendo assieme la vostra base dati e la classe mappata su di essa. La mia idea è perciò quella di partire dalla mappatura per generare automaticamente (ad ogni minima modifica) la classe di business. ASP.NET 2.0 questo lo fa in modo trasparente già in molti casi... e se leggete il mio articolo capirete come e perchè lo può fare anche a supporto di NHibernate.

Visto che ci sono fatemi rilavare anche un paio di cose che fino ad oggi non avevo esplicitato: devo ringraziare infintamente la Infomedia, per due motivi. Il primo è i supporto che sta dando al concorso di XeDotNet, mettendo in palio dei premi e addirittura la possibilità di ripubblicare su una rivista a carattere nazionale i più bei articoli che scaturiranno da questo concorso. In secondo luogo, un ringraziamento personale lo debbo spendere per la sempre più marcata considerazione che deputano alle mie elucubrazioni letterarie. Scrivere mi piace, penso lo si sia capito, ma mai avrei pensato che fosse anche piacevole leggermi.

Buona Lettura!

powered by IMHO 1.3


per leggere il post originale o inviare un commento visita il seguente indirizzo: Computer Programming: Non uno... ma ben due!

Usare gli Adapter di Live Writer

Da qualche giorno su XeDotNet ho realizzato una interessante funzionalità che consente di postare i propri articoli tecnici direttamente da Windows Live Writer. In realtà quello che ho fatto è di implementare le MovableType API ritagliandone una versione ad-hoc per il sito web. Assodato che mi sono divertito parecchio (con questo tipo di lavoretti mi sento proprio a mio agio) ho avuto l'occasione di mettere il naso negli assembly di Live Writer. Sono così riuscito a scoprire come fare per istanziare uno degli Adapter (vi ricordate IMHO?). Ecco l'esempio.

using System;
using System.Collections.Generic;
using System.Text;
using WindowsLive.Writer.BlogClient.Clients;
using WindowsLive.Writer.BlogClient;
using WindowsLive.Writer.CoreServices.Settings;
using Microsoft.Win32;
using WindowsLive.Writer.Extensibility.BlogClient;
using WindowsLive.Writer.CoreServices;

namespace TestWriter
{
    
class Program
    {
        
static void Main(string[] args)
        {
            ApplicationEnvironment.Initialize();
            WebProxySettings.ProxyEnabled = 
false;

            ISettingsPersister persister = 
               new RegistrySettingsPersister(Registry.CurrentUser, @"Software\Windows Live Writer");
            IBlogCredentials credentials = 
              
new BlogCredentials(new SettingsPersisterHelper(persister));
            IBlogCredentialsAccessor credentialsAccessor = 
              
new BlogCredentialsAccessor("dummy-value", credentials);

            credentials.Username = "username";
            credentials.Password = "password";

            MovableTypeClient client = 
new MovableTypeClient(
                
new Uri("http://localhost/services/movabletype.aspx"),
                credentialsAccessor,
                PostFormatOptions.Unknown);

            
try
            
{
                BlogPost[] posts = client.GetRecentPosts("0", 5);
                Console.WriteLine(posts.Length);
            }
            
catch (BlogClientInvalidServerResponseException ex)
            {
                Console.WriteLine(ex.Message);
                Console.WriteLine(ex.ErrorMessage);
            }
        }
    }
}

A cosa serve? Ad esempio come nel mio caso a testare le API implementate, ma sono convinto che qualche altro utilizzo si possa trovare facilmente.

powered by IMHO 1.3


per leggere il post originale o inviare un commento visita il seguente indirizzo: Usare gli Adapter di Live Writer

Le congratulazioni di Martijn Boland

Stamane ho ricevuto una mail che mi ha fatto molto piacere da parte di Martijn Boland, l'ideatore di Cuyahoga. La riporto qui per intero:

Hi guys

I was just looking through the referrer list of the Cuyahoga site stats
and noticed a new entry with quite few hits. I visited your site and
couldn't tell it was Cuyahoga site at first look :).

Very well done!

Un grazie a Martijn, per il suo ottimo lavoro.

XE.NET: SCRIVI E VINCI!

Giusto ieri accennavo a nuove "entusiasmanti" iniziative. Date un'occhiata alla home del sito http://www.xedotnet.org e sono certo sarete daccordo con me...

Vi aspettiamo!

powered by IMHO 1.3


per leggere il post originale o inviare un commento visita il seguente indirizzo: XE.NET: SCRIVI E VINCI!

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, a mio parere, è sia il suo maggior pregio che il suo peggior difetto.

Il fatto è che a me fa anche piacere non dover scrivere SQL (che per inciso adoro), però poi ho il timore che il dimenticarmi che sto lavorando con un database mi porti ad abusarne. Mi spiego meglio: quando scrivo una stored procedure che elabora qualcosa e restituisce dei risultati so sempre esattamente quante volte questa verrà chiamata e addirittura posso decidere di scrivere delle procedure studiate appositamente per evitare troppi roundtrip. Con nhibernate questa sensazione si perde. Sai che stai prelevando o scrivendo dati su un database, ma non sai mai esattamente quanto lo stai impegnando e questo a mio parere è un grave problema che deve essere considerato attentamente. Lo so, Nhibernate ha i meccanismi di cache per evitare troppe chiamate al database, ma sapete bene quanto me che la cache per quanto ben fatta, ha comunque un limite e non può essere considerata panacea di tutti i mali.

Detto questo comunque la mia sensazione è del tutto positiva. Credo di dover trovare il mio modo di usare NHibernate, inventandomi qualche cosa che mi restituisca almeno in parte la padronanza di un mezzo di cui non vorrei perdere il controllo. Però è assodato che prossimamente i miei progetti (ne ho uno in cantiere da un po'... ) godranno di questo strumento.

Il mio consiglio quindi è di provarlo perchè se tra i requisiti di una applicazione c'è (e quando non è così?) anche un tempo di sviluppo ridotto, allora NHibernate è il vostro migliore amico.

powered by IMHO 1.3


per leggere il post originale o inviare un commento visita il seguente indirizzo: Nhibernate... ora vi posso dire qualcosa

XE.NET: Fuoco alle polveri

E' un po' di tempo che non scrivo nel blog. A causa di svariate attività che hanno preso il sopravvento, ho dovuto trascurare qualcosa per privilegiare altro. Oggi però arrivano finalmente i primi frutti di questo intenso lavoro che vedrà un prolifico autunno per lo usergroup XE.NET di cui faccio parte.

Non è ancora il momento di anticiparvi tutte le novità entusiasmanti che verranno nei prossimi giorni - e vi assicuro che l'aggettivo non è affatto sprecato - ma stamane posso finalmente annunciare il primo passo, propedeutico a tutto ciò che verrà, cioè la pubblicazione del nuovo sito web di XE.NET. Giusto per rispettare fino in fondo la giusta scaletta, prima di illustrarvi brevemente alcune peculiarità del nuovo sito è bene che ringrazi chi di dovere: Marco Trova, per la pazienza dimostrata del supportarmi con cuyahoga e nhibernate; Andrea Dottor per l'impagabile supporto sistemistico che mi è stato vitale dato che a casa non ho connettività; Davide Vernole per la consulenza "editoriale" e per i consigli grafici.

Credo che noi tutti abbiamo fatto un ottimo lavoro, mettendo le basi per un sito prolifico di contenuti. Infatti la parte migliore di tutto il lavoro è proprio la sezione che ospiterà i contenuti, Articoli, Tips e Screencasts che è stata dotata di uno strumento che dovrebbe rendere molto facile la proposta dei propri contenuti. Si tratta di un "Centro Pubblicazione" ove chiunque potrà scrivere i propri articoli giovandosi di un editor online basato su fckeditor e verificare il gradimento di quanto pubblicato direttamente nello stesso pannello di gestione. Il sistema prevede un piccolo iter di approvazione che intendiamo mantenere il più possibile leggero che deve avere il solo scopo di ottenere dei contenuti in linea con lo stile del sito e possibilmente corretti dal punto di vista grammaticale.

Altro elemento fondamentale, la possibilità di raccogliere i feedback dei lettori e il loro gradimento. Ogni articolo infatti è dotato di una scala di valutazione da 0 a 100 cui ogni utente registrato può ricorrere per far sapere cosa ne pensa di quanto sta leggendo. Nulla di nuovo in effetti, ma se si considera questa feature nel'ambito delle iniziative dei prossimi giorni...

Ora comunque non ci sono più scuse. Prima il sito era una vera "schifezza" (l'ho fatto io e posso dirlo), ora invece i contenuti hanno il risalto che meritano, sono facili da proporre ed è possibile anche capire cosa ne pensano i lettori. Tutti limiti di cui molti si lamentavano e che ora non esistono più.

Accorrete e scrivete...

powered by IMHO 1.3


per leggere il post originale o inviare un commento visita il seguente indirizzo: XE.NET: Fuoco alle polveri