Welcome

This is the generic homepage (aka Aggregate Blog) for a Subtext community website. It aggregates posts from every blog installed in this server. To modify this page, edit the default.aspx page in your Subtext installation.

To learn more about the application, check out the Subtext Project Website.

Powered By:

Blog Stats

  • Blogs - 688
  • Posts - 27582
  • Articles - 298
  • Comments - 62948
  • Trackbacks - 445193

Bloggers (posts, last update)

Latest Posts

[Umbraco] umbraco.DataLayer.SqlHelperException not marked as Serializable

Visto che, ultimamente, la maggior parte dei miei Weekly (Daily? Hourly?) Issue sono dovuti principalmente a questo CMS, ho deciso di creare una sezione apposta :)

Iniziamo con uno degli errori più comuni che mi sono capitati in questi ultimi giorni: non si sa per quale motivo, l’applicativo in produzione ha iniziato a crashare prima ancora di avviarsi, tirandosi dietro tutto il W3WP.exe. L’errore, abbastnza criptico, era:

Type 'umbraco.DataLayer.SqlHelperException' in Assembly 'umbraco.DataLayer, Version=0.3.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable.

Dopo parecchi giri, discussioni via MSN con alcune persone del core team, e ricerche dovunque, si è scoperto che questo problema è dovuto ad una stringa di connessione sbagliata.
Lo so, è abbastanza ridicolo, e non ho ancora controllato i meccanismi di base per cui una stringa di connessione possa far crashare tutto l’applicativo invece di notificare l’errore. Ma vi assicuro che è assolutamente quello il problema: controllate bene il server, la password, qualsiasi problema di spelling o di mancanze (nel mio caso, lo script nant si era “mangiato” la keyword “Data Source”….).

posted @ 09/02/2010 17.25 by Alessandro Ghizzardi

Silverlight MVVM e Preview Data a Design Time in Expression Blend

Expression Blend usa il namespace d per assegnare comportamenti a design time, ad esempio in uno UserControl SilverLight:

<UserControl ...
xmlns:vm="clr-namespace:DocumentViewer.ViewModel"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
d:DesignWidth="640" d:DesignHeight="480">
<UserControl.Resources>
<vm:DocumentVM x:Key="viewmodel" />
</UserControl.Resources>


possiamo sfruttare la proprietà d:DesignInstance insieme a d:DataContext per istruire Blend a creare una istanza della classe indicata:

<Grid x:Name="LayoutRoot" DataContext="{StaticResource viewmodel}" d:DataContext="{d:DesignInstance vm:DocumentVMMock, IsDesignTimeCreatable=True}">

l’aspetto interessante è che a run time il data context è assegnato alla view model DocumentVM, mentre a design time è assegnata a DocumentVMMock, che dai nomi potete immaginare cosa fanno :D, senza necessita di if(IsDesignTime) nel code behind!

 

la figu da Expresion Blend:

 image

 

l’esempio l’ho preso qui che parla di SilverLight 4.0, ma questo funziona anche col 3.0

posted @ 09/02/2010 15.48 by Davide Cuppone

[Weekly Issue] Pre/Post build Events, la sintassi

Mi capita spessissimo di lavorare con i Build Events sulle solution, soprattutto usando Umbraco (seguiranno infatti una serie di post su questo CMS. Che è il motivo principale per cui sono sparito in questi mesi :)).

Il problema principale che ho avuto è trovare una vera reference della sintassi. Le macro ci sono quasi tutte, ma spesso non si sa bene che cosa si può fare e che cosa no. Girando un pò, sul sito msdn si spiega che la sintassi dei Pre/Post build event in realtà è la medesima dei “vecchi” comandi MS-DOS. Quindi, potete agilmente trovare la reference sul sito technet. Probabilmente molti lo sapevano già, ma a me ha salvato un pò di ricerche inutili :)

posted @ 09/02/2010 12.07 by Alessandro Ghizzardi

LOB WPF applications style (2)

Avevo postato qualche tempo fa qui su degli esempi di user interface diversi dal solito.

Il buon Karl Shifflett, ispirato anche lui da Billy Hollis  e dal video che ho segnalato nel post, ha realizzato BBQ Shack, un'applicazione basata sul suo framework Ocean e che riproduce quanto fatto da Billy Hollis, lo trovate qui.

posted @ 09/02/2010 10.10 by Antonio Budano

Visual Studio 2010 Release Candidate is here!

E’ disponibile sul sito MSDN Subscribers per gli abbonati, da domani per chi non ha un abbonamento.

 http://blogs.msdn.com/jasonz/archive/2010/02/09/announcing-vs2010-net-framework-4-release-candidate-rc.aspx

Technorati Tags:

posted @ 09/02/2010 6.37 by Corrado Cavalli

Disponibile la RC di Visual Studio 2010!

Al momento solo per gli abbonati MSDN, ma tutti gli altri devono semplicemente attendere domani (o forse di più se le richieste intaseranno i server…):

http://blogs.msdn.com/jasonz/archive/2010/02/09/announcing-vs2010-net-framework-4-release-candidate-rc.aspx

Per chi come me ha cominciato ad usarlo in produzione (fortunatamente interna…) è sicuramente una splendida notizia!

posted @ 08/02/2010 18.07 by Michele Aponte

NHibernate : cache di 2° livello e connessione manuale

Dopo aver superato i piccoli problemi tecnici che mi impedivano di "postare" (grazie al buon Andrea) eccomi nuovamente operativo .
Ecco una casistica che abbiamo affrontato ultimamente all'interno del team di sviluppo, ovvero l'utilizzo di cache di 2° livello e connessione manuale con NHibernate (purtroppo utilizziamo ancora la 1.2.1).
Come da post del buon Ayende, nel momento in cui si utilizza una connesione manuale la cache di 2° livello non funziona più correttamente. Dopo le prime ricerche siamo giunti alla soluzione che utilizziamo attualmente, ovvero realizzare un ConnectionProvider personalizzato.
Nel nostro caso abbiamo bisogno di utilizzare la connessione ad un DB A o un DB B in base a delle particolari condizioni (ovviamente sono strutture identitche) e quindi abbiamo realizzato una soluzione di questo tipo (prendete con le molle lo "pseudocodice") :

public class CustomConnectionDriver : NHibernate.Connection.ConnectionProvider
{
    public override IDbConnection GetConnection()
    {
        IDbConnection currentConnection;
        //Selezione della connessione in base ai criteri
        if (....)
        {
            currentConnection = ConnessioneA;
        }
        else
        {
            currentConnection = ConnessioneB;
        }
        currentConnection.Open();
        return currentConnection;
    }
}


Successivamente andrà configurato nel file di NHibernate il nostro nuovo connection provider:

<property name="connection.provider">CustomConnectionDriver </property>

Ora basta avviare il progetto e provare a verificare il corretto funzionamento della cache di 2° livello.

posted @ 08/02/2010 13.56 by Andrea Canegrati

Una feauture C# 4.0 non ha e invidio a VB.NET 10

In VB.NET 10 sono stati introdotti le property ed event template.
Qui viene spiegato il funzionamento.

posted @ 07/02/2010 17.13 by Giuseppe Lippolis

Import, Export, Lazy<T> & PartCreationPolicy

Eravamo rimasti con l’avere un qualcosa di semplice ma funzionante ed in questa parte vedremo piu’ in dettaglio come utilizzare gli Export e gli Import, a cosa serve la classe Lazy<T> e l’attributo PartCreationPolicy.

Exports
Finora abbiamo visto che una ComposablePart puo’ esportare properties, fields oppure se stessa (come nel caso del MainViewModel).

Se invece avessimo l’esigenza di esportare un metodo, MEF lo vedrebbe come un delegate per cui è necessario specificare il delegate che stiamo esportando (in questo caso un Action<string>)

clip_image002

e di conseguenza l’import dovrà avere lo stesso contratto

clip_image004

Imports
Se volessimo passare le dipendenze tramite costruttore come fa un IoC container? Niente di piu’ facile :) MEF ci offre l’attributo ImportingConstructor

clip_image006

NB: per discussioni riguardo all'uso di MEF come IoC container date un’occhiata a questi post di Glenn Block
http://codebetter.com/blogs/glenn.block/archive/2009/08/16/should-i-use-mef-for-my-general-ioc-needs.aspx
http://codebetter.com/blogs/glenn.block/archive/2009/10/31/should-i-use-mef-with-an-ioc-container.aspx

Una chicca offerta da MEF è l’attributo ImportMany che ci permette di importare piu’ plugin (nel nostro caso) con lo stesso contratto

clip_image008

modificando leggermente la view ed aggiungendo qualche plugin all’interno del progetto otteniamo un risultato di questo tipo

clip_image010

Ma come facciamo a sapere se gli imports di una nostra classe sono stati eseguiti correttamente? In questo caso ci viene incontro l’interfaccia IPartImportsSatisfiedNotification con il suo unico metodo OnImportsSatisfied che verrà chiamato quando tutti gli imports che possono essere soddisfatti verranno eseguiti.

Lazy:
Quando il container inizia a fare il suo sporco lavoro (cioè comporre le varie parti) e trova un Import, questo Import comporterà la creazione di una o piu’ istanze della parte che lo soddisfa. Questo potrebbe essere un fattore da considerare nel caso della creazione di grossi grafi di oggetti. Proprio per questo all’interno di MEF è presente la classe Lazy<T> che si occuperà di creare l’istanza della classe specificata al primo utilizzo.

clip_image012

La prima volta che si andrà ad utilizzare la proprietà Plugin MEF creerà l’istanza del relativo export e potremo accedervi semplicemente scrivendo Plugin.Value (la proprietà Value ritornerà sempre la stessa istanza).

Quando il container cerca di comporre tutto “l’ambaradan” e non trova un export che per ogni import definito lancerà un’eccezione, ma per evitare tutto ciò è possibile settare la proprietà AllowDefault della classe ImportAttribute a true. In tal modo il container darà all’import non soddisfatto il valore di default.

Ora mettiamo il caso che scriviamo un qualcosa del genere…o meglio creiamo due o piu’ proprietà che hanno lo stesso contratto. La domanda che sorge spontanea è: il container come reagirà? Creerà due istanze diverse oppure Plugin e Plugin2 punteranno alla stessa istanza?

clip_image014

Debuggando il tutto si puo’ notare che entrambe le proprietà puntano alla stessa istanza (hanno Object ID uguale). E se volessimo avere istanze diverse?

E’ sufficiente decorare l’export con l’attributo PartCreationPolicy e passargli CreationPolicy.NonShared

clip_image016

Nel prossimo post vedremo i Catalog messi a disposizione da MEF (Preview 8) e l’implementazione di un catalogo personalizzato.

Stay tuned…

posted @ 07/02/2010 12.36 by Federico Degrandis

Malattia nel Contratto del Commercio

Un'altra di quelle cose che mi ha sconcertato...

Nel Contratto del Commercio (e parlo di quello nazionale) la malattia viene retribuita in maniera davvero singolare:

Per i primi 3 giorni viene corrisposto il 100% dello stipendio (periodo di carenza) ed è carico del datore di lavoro.

Dal 4° al 20° giorno è previsto il 75% (!) della paga: 50% a carico dell'INPS e 25% a carico del datore di lavoro.

Dal 21° giorno in poi (fino al limite di 180 giorni) è previsto nuovamente il 100% ma suddiviso tra: 66,66% INPS, 33,34% a carico del datore di lavoro.

Rinvio a un secondo post il calcolo perchè è davvero complicato.

posted @ 07/02/2010 10.55 by Emanuele Prato

Cercasi tecnica disperatamente <cit.>

Premessa: forse questo post sarebbe più da “forum” che da “muro” ma lo posto qui sperando che il problema non sia solo mio. Sempre pronto, comunque a toglierlo dal muro se lo ritenete necessario. Wink

Problema: sono l’unico sviluppatore nella mia azienda (che ovviamente non produce SW). Come in molte altre situazioni come la mia non solo programmo ma faccio diversi altri lavori “informatici” (acquisto del nuovo HW, query e report vari, seguire  progetti legati a connettività, telecomunicazioni, ecc.). Oltre a questo ho sulla scrivania tutti i famosi capelli (analista, sviluppatore, tester, ecc.) e probabilmente non vesto perfettamente nessuno di questi. Smile

Con il crescere dei progetti (in numerosità e quantità) mi trovo sempre più spesso a lavorare tutta la gionata e a fine giornata chiedermi, mentre torno a casa: “ma oggi non dovevo fare…, ma cosa ho fatto tutto il giorno?” Sarcastic

Domanda: Al momento ho scovato solo una tecnica che mi possa aiutare nella soluzione del problema (quella del pomodoro di cui ho disquisito “poco tempo fa” con Nicolò). Avete delle best practice per “portar fuori la pellaccia”?

Technorati Tags:

posted @ 06/02/2010 8.52 by Nazareno

UK ALM User Group!

E’ nato il primo User Group d’Europa dedicato all’ALM! Si tratta dello UK ALM User Group :) Se vi capita, giovedì hanno il loro primo meeting, in piena Greater London (sede Microsoft a Cardinal Place, Victoria Station Tube stop).

Dai che una birra, in un pub a Londra, non può non starci se siete in zona…ve lo dice uno che è INNAMORATO della City :D

posted @ 06/02/2010 0.45 by Matteo Emili

Rimborsi chilometrici

Buono a sapersi...

In caso di trasferta al dipendente è dovuto il rimborso delle spese che ha sostenuto in base alle tabella ACI. Ma attenzione ne esistono di due tipi:

1. Costi chilometrici (Per calcolare i rimborsi al dipendente (o al professionista) che faccia uso del proprio veicolo svolgendo attività a favore del datore di lavoro.) 

http://www.aci.it/index.php?id=1850

2. Fringe benefit (Per calcolare la retribuzione in natura derivante dalla concessione di veicoli aziendali in uso ai dipendenti, per esigenze di lavoro e per esigenze private.) 

http://www.aci.it/index.php?id=93

I servizi sono accessibili direttamente dal sito dell'ACI (dove viene spiegata chiaramente la differenza): 

http://www.aci.it/index.php?id=86

 

Attenzione che i secondi sono più bassi nei primi (almeno nei casi che ho verificato). Per la mia auto addirittura si dimezzano!

posted @ 05/02/2010 19.54 by Emanuele Prato

Javascript Regular Expression per il controllo di numeri di carte di credito

    * Visa: ^4[0-9]{12}(?:[0-9]{3})?$ All Visa card numbers start with a 4. New cards have 16 digits. Old cards have 13.
    * MasterCard: ^5[1-5][0-9]{14}$ All MasterCard numbers start with the numbers 51 through 55. All have 16 digits.
    * American Express: ^3[47][0-9]{13}$ American Express card numbers start with 34 or 37 and have 15 digits.
    * Diners Club: ^3(?:0[0-5]|[68][0-9])[0-9]{11}$ Diners Club card numbers begin with 300 through 305, 36 or 38. All have 14 digits. There are Diners Club cards that begin with 5 and have 16 digits. These are a joint venture between Diners Club and MasterCard, and should be processed like a MasterCard.
    * Discover: ^6(?:011|5[0-9]{2})[0-9]{12}$ Discover card numbers begin with 6011 or 65. All have 16 digits.
    * JCB: ^(?:2131|1800|35\d{3})\d{11}$ JCB cards beginning with 2131 or 1800 have 15 digits. JCB cards beginning with 35 have 16 digits.
 

posted @ 05/02/2010 12.31 by Alessandro Gervasoni

[DotNetMarche] Pubblicato il materiale del 13° workshop ‘WPF + M-V-VM’

Abbiamo pubblicato il materiale del workshop "Tra presente e futuro delle interfacce utente con WPF e MVVM", e questa volta oltre a codice e slide siamo riusciti a fare anche i video!

Probabilmente a livello di qualità delle riprese si può fare di meglio… ma direi non male come prima volta da cameraman :)!

Trovate tutto il materiale qui!

PS: anche se in futuro cercheremo di fare le riprese, purtroppo non possiamo garantire di avere sempre a disposizione gli strumenti, come tra l’altro già successo per il workshop precedente :(, per cui se potete vi consigliamo sempre di partecipare di persona per non rischiare di perdervi i contenuti… e soprattutto per avere delle possibilità di “fare networking” che con i video sicuramente vi perdereste (vedi il ragazzo che durante l’ultima sessione è stato sempre a parlare con Mauro per chiedergli approfondimenti)!

PS2: purtroppo non ci sono i video della “cena”… che come ha detto qualcuno, più che una cena è stata “un’esperienza”, con un personaggio unico a fare da cuoco/intrattenitore!

posted @ 05/02/2010 10.39 by Stefano Ottaviani

[Blend] Extract Template from a Style

Quando si usa la funzionalità Edit Template->Edit a Copy di Blend

image

Blend in realtà crea uno style che applica il template appena estratto.
Personalmente mi piace organizzare le risorse all’interno di resource dictionaries (styles.xaml, templates.xaml…) e, sebbene Blend permetta di specificare dove posizionare lo style il risultato è che style e template sono tutt’uno e spesso finisco per spostare il template nel relativo resource dictionary e linkarlo nello style via {StaticResource} manualmente.
Oggi, Laurent, mi ha indicato come fare il tutto direttamente da Blend: Mentre si è in modalità di editing del template, selezionate il simbolo dello style nell’elenco superiore:

image

dopodichè selezionate il property peg della proprietà Template e selezionate Convert to new resource

image

e decidete dove memorizzare il template. smile_regular

Technorati Tags:

posted @ 04/02/2010 23.30 by Corrado Cavalli

Ria Services Enterprise Business Application

Segnalo questi tre video sul come creare una applicazione Silverlight di tipo enteprise.

se avete installato RIA Services, quando create un nuovo progetto tra le varie opzioni c’ anche WCF RIA Services Class Library, se qualcuno di voi, come me, avete provato a creare tale progetto, e l’avete quindi cancellato perchè non avete capito come utilizzarlo, ebbene in questi tre video ci sono i passaggi:

 

Part One: http://www.screencast.com/t/NGNiZjg3ZjY

Part Two: http://www.screencast.com/t/NGJkYTEw

Part Three: http://www.screencast.com/t/MWQ2MjdiYTct

 

Presi dal blog : http://www.riaservicesblog.net/Blog/

posted @ 04/02/2010 18.52 by Alberto

Silverlight – Applicazioni d’esempio

Segnalo a questo link una bella applicazione silverlight d’esempio per quanto riguarda lo stile.

Applicazione silverlight

Guardate anche la gestione dei PDF e del calendario, bellissimo!!!!

 

Per chi avesse ancora dubbi su silverlight…

posted @ 04/02/2010 18.47 by Alberto

jshashtable 2.0 : Hashtable in Javascript

http://www.timdown.co.uk/jshashtable/#setup

   1:  <script type="text/javascript" src="jshashtable.js"></script>
   2:  <script type="text/javascript">
   3:      var typesHash = new Hashtable();
   4:   
   5:      typesHash.put("A string", "string");
   6:      typesHash.put(1, "number");
   7:   
   8:      var o = new Object();
   9:      typesHash.put(o, "object");
  10:   
  11:      alert( typesHash.get(o) ); // "object"
  12:  </script>

posted @ 04/02/2010 17.29 by Alessandro Gervasoni

Recuperare l’icona associata ad un file eseguibile

Il .NET Framework fornisce un semplicissimo metodo per recuperare l’icona associata ad un file eseguibile, System.Drawing.Icon.ExtractAssociatedIcon. E’ possibile utilizzarlo, ad esempio, per impostare automaticamente l’icona della form principale della nostra applicazione sull’immagine specificata nelle proprietà del progetto:

Me.Icon = Drawing.Icon.ExtractAssociatedIcon(Application.ExecutablePath)

Semplice e veloce :-)

posted @ 04/02/2010 11.53 by Marco Minerva