giovedì 2 settembre 2010
#
Ora che abbiamo passato le votazioni, e abbiamo inviato foto e biografie, possiamo dire ufficialmente che DotDotNet parteciperà al NHibernate Day.
Io e i miei compari Igor e Luca terremo una sessione riguardante la configurazione “smart” di un’applicazione, utilizzando gli Event Listeners di NHibernate per aggiungere funzionalità senza stravolgere la struttura iniziale.
Partecipare ad una conferenza dove sono presenti tanti speaker di rilievo non è da tutti i giorni, ma faremo del nostro meglio.
Per chi si è iscritto, ci vediamo a Bologna il 9 ottobre 2010.
Technorati Tags:
DotDotNet
martedì 24 agosto 2010
#
Giusto ieri è stata rilasciata la nuova versione 2.5 di Castle Windsor; tra le tante novità, il supporto a .NET 4.0 e Silverlight.
Bene; supponiamo di voler aggiornare un progetto esistente basato su NHibernate, in modo che usi anche l’ultima versione di Castle Windsor.
Prima della versione 2.1.x di NHibernate, la cosa non era semplicissima, dato che era presente una reference diretta agli assembly Castle.Core e Castle.DynamicProxy, quindi l’unica strada percorribile era::
- Scaricare il codice sorgente di NHibernate.
- Scaricare la versione di Castle Windsor desiderata.
- Copiare gli assembly Castle.Core e Castle.DynamicProxy nelle cartelle di build di NH sostituendo gli assembly esistenti.
- Ricompilare NHibernate.
Dalla versione 2.1.x di NHibernate, le cose si sono semplificate, visto che è stata rimossa la dipendenza diretta da Castle. In questo caso quindi, basta ricompilare la ProxyFactory per Castle, in questo modo:
- Scaricare il codice sorgente di NHibernate.
- Cambiare le references a Castle nel progetto NHibernate.ByteCode.Castle e ricompilarlo.
- Fare il deploy di NHibernate.ByteCode.Castle con le references aggiornate.
Visto che NHibernate non ha la reference diretta all’assembly della ProxyFactory, ma viene caricata quella indicata nella proprietà proxyfactory.factory_class, è abbastanza facile gestire la cosa semplicemente copiando nella cartella di output del progetto i files della versione di ProxyFactory desiderata.
venerdì 25 giugno 2010
#
Chi usa CommunityServer, almeno nella versione Express 2008.5 SP1, avrà notato la mancanza di un qualcosa che impedisca il proliferare di utenti spammer tra le registrazioni al sito.
Sul sito DotDotNet abbiamo adottato la soluzione del controllo Captcha nella pagina di registrazione degli utenti, utilizzando il componente CommunityServerExtensions presente su CodePlex.
L’integrazione è davvero molto semplice, e la documentazione spiega come procedere passo passo.
L’unica cosa da tenere d’occhio è che, se si vuole usare il provider per il servizio Recaptcha di Google, bisogna modificare il codice sorgente, come ho segnalato sulla discussions list del progetto.
Lo posto qui: magari può essere utile a chi ha lo stesso problema con CommunityServer.
martedì 15 giugno 2010
#
Su consiglio di Davide, ho iniziato ad utilizzare gli script di manutenzione di Ola Hallengren che si trovano a questo indirizzo.
Questi scripts permettono di gestire ed automatizzare molte attività di manutezione dei database, tipo piani di backup, ricostruzione/riorganizzazione degli indici, e check di consistenza.
Ben fatti ed anche ben documentati, rendono la vita del “povero dba” un po’ più semplice. :)
Technorati Tags:
SQL Server,
Scripts
lunedì 14 giugno 2010
#
La suite CastleProject si arricchisce di un nuovo componente: Castle Scheduler.
Si tratta di un Job Scheduler simile al forse più famoso Quartz.NET, porting della omonima libreria Java.
Ovviamente, l’integrazione con Castle Windsor è piuttosto semplice.
Merita un’occhiata.
Technorati Tags:
.NET,
Castle
domenica 13 giugno 2010
#
Il boot time di Windows 7 è di tutto rispetto, ma se non fosse sufficiente, ecco un bell’articolo che spiega come analizzare la fase di boot del sistema operativo ed, eventualmente, migliorarne i tempi.
Buona lettura
Technorati Tags:
Windows 7,
boot
domenica 9 maggio 2010
#
E’ noto che per installare un Windows Service bisogna ricorrere al tool InstallUtil, che si occupa di eseguire tutte le configurazioni necessarie affinche il nostro eseguibile possa essere gestito come servizio di sistema.
Spesso si trovano eseguibili che possono operare come servizi di sistema semplicemente invocandoli con particolari parametri sulla linea di comando, ad esempio:
- MyService.exe –installservice
- MyService.exe -uninstallservice
Per aggiungere una funzionalità simile al nostro Windows Service, basta andare a curiosare all’interno di InstallUtil.exe con il fido Reflector, per accorgersi che in realtà il tool non fa altro che passare gli argomenti in ingresso sulla riga di comando alla classe ManagedInstallerClass:
Nulla ci vieta di fare la stessa cosa all’interno del nostro codice, quindi, dopo aver aggiunto la reference all’Assembly System.Configuration.Install, possiamo aggiungere due metodi che si occupano di installare o disinstallare il servizio:
using System.Reflection;
using System.Configuration.Install;
private readonly string _serviceExe = Assembly.GetExecutingAssembly().Location;
private void InstallService()
{
ManagedInstallerClass.InstallHelper(new string[] { _serviceExe });
}
private void UninstallService()
{
ManagedInstallerClass.InstallHelper(new string[] { "/u", _serviceExe });
}
Fatto questo, basta controllare quali parametri sono stati specificati sulla linea di comando ed agire di conseguenza:
if (args.Length > 0 && (args[0].StartsWith('-') || args[0].StartsWith('/')))
{
switch (args[0].Substring(1).ToLower())
{
case "installservice":
InstallService();
break;
case "uninstallservice":
UninstallService();
break;
}
}
In questo modo, possiamo fare il deploy del nostro servizio senza essere dipendenti da InstallUtil.
martedì 23 febbraio 2010
#
Dopo aver lavorato per un po’ di tempo su VMware ESX, sono riuscito anche a dare un’occhiata a Hyper-V Server R2, evoluzione naturale (e gratuita) in caso di aggiornamento di un Virtual Server 2005.
La migrazione delle macchine virtuali è semplice: visto che il formato dei dischi virtuali è il solito VHD, alla fine basta:
- Riconfigurare la macchina virtuale dicendo ad Hyper-V di usare dischi già esistenti.
- Disinstallare le VM Additions di Virtual Server 2005.
- Installare gli Hyper-V Integration Services.
L’unica cosa strana che si nota, è un servizio che all’avvio va sempre in errore, e, guardando l’event viewer, è il driver della porta parallela; sembra infatti che, a differenza di Virtual Server 2005, la LPT non sia tra i device virtualizzabili da Hyper-V.
Poco male: basta impedirne l’avvio tramite questa procedura:
- Eseguire Regedit.
- Cercare la chiave HKLM/System/CurrentControlSet/Services/ParPort.
- Modificare il valore Start a 4
- Riavviare la VM.
giovedì 10 dicembre 2009
#
Ho sempre notato che la maggior parte degli esempi e della documentazione che si trova in rete su NHibernate riguarda applicazioni web, e per me che ho sempre dato precedenza ad applicazioni Smart Client, è stato un problema, almeno all’inizio.
Fortunatamente, il solito Ayende è corso in nostro aiuto: su MSDN magazine è stato pubblicato un suo articolo che tratta l’utilizzo di NHibernate in un’applicazione WPF, spiegando con quali tecniche gestire la concorrenza, il databinding e la Session in un contesto molto diverso da quello web quale è l’applicazione desktop.
Articolo interessante che merita una lettura: lo trovate qui.
Technorati Tags:
.NET,
NHibernate
domenica 15 novembre 2009
#
Tempo fa avevo scritto un post che mostrava come ricavare l’elenco del software installato tramite WMI, con la limitazione, però, di poter avere solo l’elenco di tutto cio che è stato installato tramite Windows Installer.
Ho trovato metodi alternativi per ottenere lo stesso risultato, che sfruttano la potenza di PowerShell e permettono anche di scegliere il formato di output che più ci piace:
- Foglio di Excel
- GridView
- File di testo:
PS> gp HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*
| Select DisplayName, DisplayVersion, Publisher, InstallDate, UninstallString
| Out-File 'installed-sw.txt'