orm comments edit

Era già nell’aria (maggiori info qui), ed infatti è disponibile la versione RTM di FluentNHibernate 1.0 come annunciato dal blog di NHibernate qui.

Tutti i changeset del FluentMapping, AutoMapping e Conventions le trovate qui, mentre a questo indirizzo trovate il download.

Buon Mapping :)

various comments edit

Twitter sta prendendo sempre più piede e, seguire i continui aggiornamenti delle persone con cui sei in contatto, diventa sempre più impegnativo.

Fortunatamente è disponibile un Feed RSS con gli aggiornamenti di tutti i tuoi contatti; tale feed, per motivi di privacy, è visibile solo tramite autenticazione che, per chi usa come me GoogleReader, può risultare un problema.

Di fatto, GoogleReader non gestisce l’autenticazione per i feed, ma esistono servizi esterni che ripubblicano il feed sotto autenticazione in un feed free (ovviamente sta nel buon senso della persona non rendere pubblico il feed, altrimenti la tanto agognata privacy è da dimenticare).
Uno di questi siti è FreeMyFeed, semplice e con pochi click ti permette di avere a disposizione il tuo feed nel newsaggregator.

Una soluzione alternativa può essere un client come TweetDec (multipiattaforma compreso IPhone) che oltre a Twitter ti permette di seguire ed interagire anche con Facebook.

various comments edit

L’altro giorno mi sono deciso a comprare un orologio per le mie scalate/sciate in montagna quindi, da bravo tecnologico, mi sono messo a fare una ricerca in rete su quale prodotto scegliere.

Personalmente ero orientato su un prodotto della SUUNTO, società specializzata in questo tipo di apparecchiature.
Oggi, a distanza di tre giorni dalla ricerca mi ritrovo banner mirati in moltissimi site della rete (tra cui anche Facebook) come mostrano gli screenshot seguenti.

26-Aug-09 18-53-19

26-Aug-09 18-53-59

26-Aug-09 18-52-58

Ora la domanda è:

Chi ha fornito le informazioni riguardanti le mie ricerche alle società di ADV?

.net comments edit

Personalmente trovo comodissime le partial class, sia perchè facilitano il lavoro in team, sia perchè mermettono di suddividere la stessa classe in più file, fornendo così una maggiore leggibilità e pulizia del codice.
Per definire una classe come “parziale”, basta aggiungere la keyword partial prima della parola chiave class (vale anche per gli struct ovviamente) come mostrato di seguito.

public partial class MyClass

I suoi vantaggi ovviamente non si fermano qui. Visual studio offre la possibilità di raggruppare le partial class in una struttura ad albero un po’ come avviene per i codefile delle pagine web, come mostrato dallo screenshot seguente:

 

25-Aug-09 1-12-28

Qui, è possibile trovare un ottimo addon (VsCommands) per Visual Studio che ci permette di annidare le partial classe semplicemente selezionandole e cliccando con tasto destro del mouse come mostrato di seguito.

image2

Ciauz

.net comments edit

Nikhil Kothari, tramite il proprio blog, ha annunciato un provider Linq che si appoggia alle ottime API di Bing per poter effettuare delle ricerche nelle proprie applicazioni.
Nello specifico le API di Bing (ulteriori informazioni sono disponibili qui) permettono di effettuare ricerche anche per tipologie di contenuti, come Web, Images, InstantAnswer, Phonebook, RelatedSearch, ecc, il tutto in comunicazione con diversi protocolli, JSON, XML e SOAP.

Gli snippet seguenti mostrano la comodità di Linq e l’integrazione con Bing.

//Pages
BingContext bing = new BingContext(appKey);
IQueryable<PageSearchResult> pagesQuery =
    from p in bing.Pages
    where p.Query == "nikhil"
    select p;

//Pages
IQueryable<PageSearchResult> pagesQuery =
    from p in bing.Pages.LocalResults("Redmond")
    where p.Query == "pizza"
    select p;

//Images
IQueryable<ImageSearchResult> imagesQuery =
    from img in bing.Images.SafeResults()
    where img.Query == "Yellowstone"
    select img;
var imagesPage1 = imagesQuery.Take(10).ToList();
var imagesPage2 = imagesQuery.Skip(10).Take(10).ToList();

Al momento non tutte le tipologie di ricerche sono supportate dal provider ma, lo stesso Nikhil, fa sapere che nel TODO sono presenti numerose novità, come le ricerche correlate, ads, Spell, ecc.
Non ci resta che provare questa versione ed attendere le novità future.

Il download qui.
Ciauz

orm comments edit

NHibernateFluent è una valida alternativa al metodo classico (XML Based) di mappare le entity con con NHibernate.
Nello specifico, il mapping non avviene più tramite la costruzione di un XML da embeddare nel progetto, ma scrivendo semplice codice C#. Anche se tramite gli appositi XSD si può disporre dell’intellisense durante la stesura dell’XML, l’approccio Fluent offre ulteriori vantaggi.

La cosa più interessante è che, nel caso di renaming di alcune proprietà, si ha già il mapping aggiornato, cosa che precedentemente al fluent era fattibile solo tramite l’uso di appositi plugin come Resharper: nel caso non si avesse avuto a disposizione questo addon spesso ci si imbatteva in alcuni problemi (come l’errata scrittura di una proprietà) solo a runtime, mentre ora l’errore si avrebbe a compile time, con un vantaggio notevole per lo sviluppatore.
Oltre a ciò, grazie alle lambda, la scrittura del mapping è molto più fluente (non a caso si chiama Fluent), come dimostra lo snippet seguente:

public class CatMap : ClassMap<Cat>
{
  public CatMap()
  {
    Id(x => x.Id);
    Map(x => x.Name)
      .Length(16)
      .Not.Nullable();
    Map(x => x.Sex);
    References(x => x.Mate);
    HasMany(x => x.Kittens);
  }
}

Personalmente ho iniziato ad usare il Fluent già dalla versione 0.1 - praticamente la prima versione - con non pochi problemi relativamente alle composite unique key, ma ora che è alla versione 1.0 RC (dal 16 di agosto), confido che i problemi siano risolti e che sia già utilizzabile alla grande.

Inoltre credo (qualcuno me lo ha detto, ma non ricordo chi) che il Fluent sia già presente nella trunk di NHibernate 3, ma questa notizia prendetela con le pinze :)

Ciauz

Maggiori info sul Fluent le trovate qui e qui.

various comments edit

Questa notte, causa insonnia, ho deciso di effettuare il deploy della nuova versione di Dexter.
Una parte delle novità l’avevo già annunciata qui, ma si sono aggiunte una serie di nuove features e fix che rendono il prodotto ancor più interessante.
Come potete vedere/provare ora la ricerca è di tipo full-text e, nel permalink di ogni post, è presente una lista di contenuti correlati.
Ora il tutto gira su di una Membership proprietaria (precedentemente mi appoggiavo ad un progetto esterno) e, ovviamente, rimane la possibilità di utilizzare un Membership Provider e un Role Provider esterno qualora si decida di utilizzare Dexter all’interno di un’applicazione che integra già la parte di autenticazione e ruoli.

Rimanendo in ambito di providers, ne ho aggiunto uno custom per l’HealthMonitoring dell’applicazione, che fornisce alcune informazioni in più e si integra con qualsiasi tipo di database supportato da NHibernate. Ora mi rimane da unificare il tutto con il Log e realizzare le pagine di visualizzazione nel backoffice.

Inoltre, anche l’utilizzo di NHibernate è stato migliorato e la cache è ora presente in tutte le query; infatti, dopo la prima navigazione, non vengono più effettuate chiamate verso il database :) e grazie a Lucene, anche per le ricerche il Database non viene interrogato.

Ovviamente ci sono molte altre migliorie di minor rilevanza ma, appena sistemato il backoffice, si può parlare della prima relase ufficiale; proprio da settembre un paio di persone di nostra conoscenza dovrebbero passare a Dexter.
Infatti con il deploy sarà presente anche uno script di migrazione contenuti da SubText e si avrà la possibilità di conservare le vecchie url, in modo da non perdere posizioni nei motori di ricerca.

Come potete vedere dagli screenshots seguenti, nel BackOffice c’è ancora molto da lavorare :(:

8-16-2009 11-39-51 AM 8-16-2009 11-41-32 AM

Stay tuned!

.net comments edit

Quando si parla delle novità introdotte dalla prossima versione di Windows Communication Foundation 4.0, non si può fare a meno di menzionare il WS-Discovery protocol (le specifiche le trovate qui) ed il Routing.
Mentre il WS-Discovery protocol ci permette di usufruire di servizi senza conoscerne l’esatto endpoint, ma tramite degli appositi criteri, il Routing ci viene in aiuto in tutti quei contesti in cui si ha la necessità di avere un sistema di Load Balancing dei servizi, gestione del versiong o si deve separare la security tramite uno layer intermedio, tra il client ed il servizio.

Su Channel 9 sono disponibili due video introduttivi che spiegano e dimostrano queste due importanti feature presenti nella prossima release di WCF.
Ulteriori novità su WCF 4.0 sono disponibili qui, mentre sotto potete trovare i due video di Channel9.

continue...

various comments edit

La settimana scorsa parlavo con Simone (qui trovate un suo post a riguardo) della possibilità di integrare il motore di Lucence.Net come search provier per il proprio blog engine (sia io che Simone siamo dev su due progetti differenti di BlogEngine).
Per chi non lo conoscesse Lucence.Net è il porting di un già ben noto Framework, presente nel mondo Java da diversi anni, che permette di effettuare ricerche full-text su un database proprietario basato su filesystem qiundi senza la necessità di dover installare nulla sul server.
Già in passato avevo avuto modo di utilizzarlo (vedi qui e qui), ma devo dire che l’ultima versione è parecchio migliorata in stabilità (la versione precedente al subentro di JBoss lamentava problemi di integrità del database).
La cosa brillante di questo Framework risiede nella sua velocità di ricerca a dir poco impressionate, come mostrato dallo screenshot seguente:

8-9-2009 1-32-16 PM

Oltre alla velocità di ricerca, ci sono diverse features che lo rendono appetibile, come la possibilità di avere un “Did you mean” stile google, gli Analyzer personalizzati per la lingua (es: cercando persona vengono cercati anche i termini comuni tipo persone) e la possibilità di effettuare ricerche per similarità, ossia creare una correlazione tra i contenuti.

8-10-2009 6-10-37 PM

Come potete vedere dagli screenshot precedenti, la prossima build di Dexter implementa già Lucence.Net v.2.4 sia come search engine che come correlatore di contenuti.

Purtroppo questo Framework è molto scarso dal lato della documentazione, sia per il porting .NET che per la versione Java, il che mi fa apprezzare ancor di più gli sforzi realizzati da Microsoft e da tutte le altre organizzazioni, che compiono per fornire agli sviluppatori una documentazione adeguata.
Speriamo che anche per Lucence si sforzino un po’ di più.

Ciauz

silverlight comments edit

La settimana scorsa avevo pubblicato un elenco di link che spiegavano cosa sono e come si utilizzano i .NET Ria Services.
Tutti i link erano basati su un percorso di Brad Abrams, che ovviamente non si è fermato ed ha pubblicato nuovi interessantissimi articoli.
Proprio per questo motivo ho aggiornato il post precedente in modo da avere in un unico repository tutti gli articoli di Brad Abrams riguardanti i .NET Ria Services.

Il post.

Ciauz