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.
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'
mercoledì 11 novembre 2009
#
In SQL Server ci sono due modi per creare una tabella temporanea:
- Appoggiarsi al tempdb:
CREATE TABLE #TempTable(Field1 int, Field2 varchar(10))
INSERT INTO #TempTable(Field1, Field2) VALUES (42, 'Alberto')
SELECT * FROM #TempTable
- Utilizzare una variabile di tipo TABLE:
DECLARE @TempTable TABLE (Field1 int, Field2 varchar(10))
INSERT INTO @TempTable(Field1, Field2) VALUES(42, 'Alberto')
SELECT * FROM @TempTable
Sebbene i due modi si assomiglino molto, in realtà alcune differenze ci sono, e sono ben riassunte in questo post.
giovedì 17 settembre 2009
#
Ecco gli argomenti che tratterò al workshop:
- IoC e Dependency Injection
- Di cosa si tratta.
- StructureMap e Unity.
- Pattern “Service Locator”.
- O/RM e persistenza
- Pattern “Repository”.
- Pattern “Unit of Work”
- Persistenza con NHibernate.
Per chi volesse fare un salto, ci vediamo là.
martedì 8 settembre 2009
#
Dal 24 al 26 novembre 2009 si svolgeranno a Milano i TechDays-WPC, la maggiore conferenza ICT italiana dedicata al mondo Microsoft.
Per i soci DotDotNet è previsto uno sconto di 50 € sul prezzo di iscrizione; chi fosse interessato alla cosa, può inviare una mail a info@dotdotnet.org per sapere come usufruire del benefit.
lunedì 17 agosto 2009
#
Quando si aggiorna il sistema operativo, oppure si dà una “sana rinfrescata” (cioè si pialla l’hard disk…
) alla propria installazione, ci tocca poi dover reinstallare tutta quella montagna di software che abbiamo installato nel tempo, e che è sempre difficile da ricordare. WMI ci può dare una mano; tramite il comando:
wmic product
otteniamo un pratico elenco di tutto il sotware installato tramite Windows Installer, da poter utilizzare in seguito come promemoria. E' vero, non è la totalità del software, ma è comunque utile.
Sì, è vero, sto per installare Windows 7… 
mercoledì 5 agosto 2009
#
Tutti conosciamo i Dire Straits, vero? Bene.
La miglior formazione dei Dire Straits, a mio avviso, è stata quella composta da:
Se provassimo a mappare il tutto in un Domain Model, potremmo scrivere:
public class Band
{
public int BandId { get; set; }
public IList<Player> Members { get; set; }
}
public class Player
{
public int PlayerId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public Band Band { get; set; }
}
E ora che abbiamo Linq2NHibernate possiamo scrivere una cosa del tipo:
using (ISession session = SessionHelper.OpenSession())
{
Band myBand = session.Linq<Band>().Expand("Members")
.Where<Band>(bnd => bnd.BandId == 1)
.FirstOrDefault<Band>();
Console.WriteLine("Nome band: {0}, numero di componenti: {1}",
myBand.Name,
myBand.Members.Count);
}
L'output però non è quello che ci aspettiamo:
Nome band: Dire Straits, numero di componenti: 1
La causa è nel codice SQL generato da Linq2NHibernate, che, da Profiler, risulta essere questo:
exec sp_executesql N'SELECT top 1 this_.BandId as BandId4_1_,
this_.Name as Name4_1_, members2_.BandId as BandId3_,
members2_.PlayerId as PlayerId3_, members2_.PlayerId as PlayerId2_0_,
members2_.FirstName as FirstName2_0_, members2_.LastName as LastName2_0_,
members2_.BandId as BandId2_0_
FROM dbo.Band this_
left outer join dbo.Player members2_ on
this_.BandId=members2_.BandId
WHERE this_.BandId = @p0',N'@p0 int',@p0=1
In pratica, la chiamata a FirstOrDefault() aggiunge quel TOP 1 all’SQL generato, che fa sì che venga ritornata solo una riga ritornata dal DB, falsando il conteggio.
I modi per risolvere la questione sono due:
- Tornare ad usare la Criteria API :).
- Sostituire FirstOrDefault<Band>() con ToList<Band>()[0].
In questo modo, la clausola TOP sparisce e i Dire Straits tornano ad essere cinque:
Nome band: Dire Straits, numero di componenti: 5
lunedì 20 luglio 2009
#
E’ stata rilasciata la versione 2.1.0 di NHibernate. Qualche novità:
1. Supporto diretto a SQL Server 2008 (MSSql2008Dialect); NHibernate può usare i tipi di dato Date, Time, DateTime2, DateTimeOffset.
2. Nuovi ID Generators.
3. Executable HQL. E’ possibile scrivere una cosa del tipo:
using (ISession session = GetSession())
{
using (ITransaction tx = session.BeginTransaction())
{
session.CreateQuery("delete from MyEntity").ExecuteUpdate();
tx.Commit();
}
}
4. Rimozione della dipendenza da Castle.DynamicProxy2 (informazioni qui e qui).
In ogni modo, la lettura del file releasenotes.txt è sempre consigliata.
giovedì 30 aprile 2009
#
Sono andato su MSDN Subscriptions per scaricare la RC di Windows 7, ma qui c’è anche qualcos’altro…
Let’s download!