Latest Posts
Gallio ha un buon supporto per NAnt! L'unica pecca è la documentazione a riguardo che attualmente è un po' scarna. Di seguito quindi posto le istruzioni per portare a buon fine l'operazione senza grossi sforzi.
Prima di tutto bisogna caricare i Tasks di
Gallio in
NAnt inserendo la riga nel file di progetto
<loadtasks assembly=".\tools\Gallio\Gallio.NAntTasks.dll" />
Poi grazie a questo frammento di xml possiamo lanciare gli unit tests contenuti in un assembly chiamato Data.Fixture.dll
<target name="test" depends="build">
<gallio
result-property="exitCode"
failonerror="false" >
<runner-extension value="TeamCityExtension,Gallio.TeamCityIntegration" />
<assemblies>
<!-- Specify the tests assemblies -->
<include name="${src.dir}\Data.Fixture\bin\${project.config}\Data.Fixture.dll"/>
</assemblies>
</gallio>
<fail if="${exitCode != '0'}" >One or more tests failed</fail>
</target>
Se avete bisogno di ulteriori informazioni potete controllare la documentazione on-line oppure i sorgenti.
Technorati Tag:
NAnt,
Gallio,
mbunit
Chiunque di voi scriva test unitari per il proprio codice (perché esiste ancora qualcuno che non lo fa??
) consiglio questi brevi video di Google:
Sono sul sito di Mediaworld, sezione “Punti vendita”, seleziono dalla dropdownlist “Seleziona la regione” la mia regione e traaak errore: [IBM][CLI Driver] SQL1042C An unexpected system error occurred. SQLSTATE=58004 SQLCODE=-1042Unable to connect to database!. Con tanto di punto esclamativo :-). Ora mi chiedo, ma come fanno ad arrivare ancora errori del genere all’utente finale? Forse li trovano romantici. Mahhh. Ricollego anche un post su PHP...
Matteo Migliore.
Sul sito MSDN Code Gallery è disponibile la versione 1.1 della Windows 7 Developer Guide, un documento di 44 pagine (in continua evoluzione) che riassume gli aspetti fondamentali del nuovo sistema operativo, da tenere presenti quando si sviluppano applicazioni espressamente progettate per lui. Il download è disponibile qui.
Technorati Tags:
Programming,
Windows
Leggete un mio
articolo, di 3 puntate, su
Programmazione.It relativo a riflessioni e suggerimenti sul bilanciamento tra l’alta coesione e il disaccoppiamento delle classi in fase di design. E siccome mi interessa, fatemi sapere le vostre riflessioni sull’argomento.
Nel realizzare le nostre pagine SharePoint (o le nostre Web Part), alle volte nasce l’esigenza di legare la visibilità di alcuni componenti della pagina, ai permessi che l’utente connesso possiede; un po’ quello che è il comportamento dei componenti standard di SharePoint.
Rendere il nostro controllo “SecurityTrimmed” non è particolarmente complesso, in quanto possiamo utilizzare la classe SPSecurityTrimmedControl messa a disposizione da SharePoint.
|
<Sharepoint:SPSecurityTrimmedControl runat="server" Permissions="ManageLists">
Inserisci qui I tuoi controlli….
</SharePoint:SPSecurityTrimmedControl>
|
La proprietà Permissions ci permette di specificare quali sono i permessi che l’utente deve possedere per visualizzare tutto quello che è stato inserito all’interno del controllo; possiamo chiaramente utilizzare tutto il set di permissions messo a disposizione da SharePoint.
Technorati Tags: SharePoint
Ho notato che da oggi ci sono disponibili queste interessanti guide per gli smanettoni (sviluppatori mi sembra un termine forte in questo ambito) di SharePoint.
Dato che non se ne sai mai abbastanza consiglio di dare una bella lettura...
...per chi ci riesce visto che io finora ho scaricato solo pdf corrotti (colpa del mio pc?!?)
Da molti anni uso Log4Net come strumento di log per le mie applicazioni ora è venuto il momento di integrare il tutto anche con Entity Framework ma come fare ? Mi sono detto, mi piacerebbe molto tenere traccia delle query che genero con Entity, certo il Profiler "SEMPRE ATTIVO" come il Master raccomanda, ma un log delle query in molti casi ti salva la 'vita'.
Lasciando perdere la configurazione di Log4net log4net Manual - Configuration che potete trovare in ogni dove sul web, concentriamoci su come Entity deve essere configurato per il risultato voluto.
Entity ci fornisce questo bel metodo ObjectQuery.ToTraceString per monitorare la query che verrà generata al momento della chiamata. Siamo a cavallo quindi, vediamo alcuni esempi di utilizzo.
EntityCommand.ToTraceString()
1: var _context = new AdventureWorksEntities();
2:
3: var connection = new EntityConnection(_context.Connection.ConnectionString);
4:
5: var query = "SELECT VALUE pro FROM AdventureWorksEntities.Product AS pro " +
6: "WHERE pro.Color = @color";
7:
8: var cmd = new EntityCommand(query, connection);
9:
10: var param = new EntityParameter("color", DbType.String) {Value = "Black"};
11: cmd.Parameters.Add(param);
12:
13: if (cmd.Connection.State != ConnectionState.Open) cmd.Connection.Open();
14: _log.Debug(cmd.ToTraceString());
ObjectQuery.ToTraceString()
1: var sql = "SELECT VALUE pro FROM AdventureWorksEntities.Product AS pro " +
2: "WHERE pro.Color = @color";
3:
4: var query = _context.CreateQuery<Product>(sql);
5: query.Parameters.Add(new ObjectParameter("color", "Black"));
6:
7: if (_context.Connection.State != ConnectionState.Open) _context.Connection.Open();
8: _log.Debug(query.ToTraceString());
LINQ to Entities
1: string color = "Black";
2: var query = from e in _context.Product
3: where e.Color == color
4: select e;
5:
6: if (_context.Connection.State != ConnectionState.Open) _context.Connection.Open();
7: _log.Debug((query as ObjectQuery<Product>).ToTraceString());
facile no?!?! che ne dite?
Il team di Pattern & Practices ha pubblicato una serie di guide inerenti l’archittettura di diverse tipologie di applicazioni:
- Agile Architecture Method Pocket Guide
- Web Architecture Pocket Guide
- Mobile Architecture Pocket Guide
- RIA Architecture Pocket Guide
- Rich Client Architecture Pocket Guide
- Service Architecture Pocket Guide
Da una prima sfogliata sembrano interessanti, le trovate qui
Avete poco meno di 40 minuti liberi e volete farsi delle grasse e sane risate? Non perdetevi il video della sessione organizzata dagli amici dell'XPUG Bologna ripreso all'Italian Agile Day. Nella sessione hanno inscenato un processo al db relazionale con tanto di giudice, pubblica accusa, avvocato difensore, testimoni e giuria popolare:
http://www.agilemovement.it/video/processo-al-database
Se avete poco tempo ora andate almeno al minuto 21 e godetevi la
citazione di quanto Leonardo Da Vinci ha scritto a proposito del'ingegneria del software :-D
Un po' di tempo fa, qui nel mio blog avevo espresso lo stupore di fronte alla prima esperienza con i Dynamic Data del .NET Framework 3.5 SP1. In questi giorni ho avuto l'occasione di fare qualche prova più approfondita; in particolare, mi sono scontrato con la necessità di personalizzare l'interfaccia web fornita di default.
In questa attività sono stato aiutato dal grande Alessandro Del Sole, che si è sempre dimostrato molto disponibile. L'ultima cosa che gli ho chiesto, in ordine di tempo, è stato se fosse possibile escludere alcuni campi dalla GridView con la lista dei record, facendo in modo che apparissero solo quando si visualizzano i dettagli oppure si sceglie di modificare il record stesso. Seguendo il suo consiglio, sono giunto a questo post, che spiega esattamente come fare per ottenere ciò che mi serve, con tanto di esempio di codice disponibile per il download.
Stando a quanto si legge in questo post, in attesa del rilascio di Windows Home Server V2, entro la metà del 2009 sarà rilasciato il Power Pack 2 per l'attuale versione: al pari del primo Power Pack, non conterrà solo bug-fixed, ma aggiungerà anche alcune nuove funzionalità, la cui portata, tuttavia, al momento non è ancora stata comunicata.
Riassunto della precedente puntata:
Il Belkin Network USB sembra non funzionare su XP virtualizzato con Virtual PC 2007, nel senso che l'hub di rete viene visto ma le preficeriche non si installano correttamente.
Nella pausa pranzo ho provato, senza successo, il consglio di Lorenzo, di installare USB@nywhere; l'idea era comunque buona, spulciando proprio nel suo blog ho trovato un vecchio post che fa riferimento a USB over Network il cui client, tra l'altro, è freeware.
Una volta installato sulla macchina virutualizzata il client della FabulaTech Solution (che installa il supporto a USB per XP) anche i device collegati al Belkin Network USB si sono correttamente installati.
E' stato veramente difficile scegliere il titolo del post fra i molti che mi erano venuti in mente. Considerato il mio umore odierno ho scelto quello, per così dire, più "tecnico". :-)
I prossimi passaggi saranno:
Debugging-by-user
e
Fixing-by-user
(Securing-by-user neanche lo nomino in un caso del genere...)
P.S. Si è capito di che umore sono oggi? :-)
Sempre ai TechDays, oltre alla sessione sulla customizzazione del TFS (nella track del prode Lorenzo nazionale), avrò il piacere di condividere in 45 minuti (ci stiamo preparando a dovere) con Ugo Lattanzi, Technical Manager di MTV Italia, un bel case study che racconta il "dietro le quinte" dell'attuale architettura della community di MTV.it, e di come è nata e si è sviluppata con il lavoro congiunto di ObjectWay e tutto il gruppo di MTV.
Per dirla in parole povere: come abbiamo montato assieme WCF, LINQ to SQL, MSMQ, e un pizzico di AOP.
Felice da una parte...triste dall'altra, perchè mi sa che saltiamo il pranzo.
Lorenzo ci tieni da parte qualcosa? :-)
La data è il 4 Dicembre.
Forse questo post sarà banale ma non tutti conoscono e sanno usare le regular expression.
In questi giorni mi sono trovato ad avere una lista di indirizzi mail da convalidare secondo uno schema ben preciso, ho risolto il problema usando il seguente metodo:
1: public bool Convalida (string indirizzo)
2: {
3: string schema =
4: @"^[-a-zA-Z][.a-zA-Z0-9]*@(studenti.unina|)*\.(it)$";
5:
6: Regex controllo = new Regex(schema,
RegexOptions.IgnorePatternWhitespace);
7:
8: bool booleano = false;
9:
10: if (string.IsNullOrEmpty(indirizzo))
11: booleano = false;
12: else
13: booleano = controllo.IsMatch(indirizzo);
14:
15: return booleano;
16: }
ho trovato molto semplice la lettura di un file xml attraverso l'utilizzo di jquery, per riuscirci ho preso spunto da questo
articolo
link
A seguito della mia "call to action", ci sono pervenute alcune proposte per "skinnare" il muro dei blog. Premettendo i doverosi ringraziamenti agli autori... Eccole:
Skin 1

Skin 2
Skin 3
Per "votare", inviatemi un messaggio utilizzando il form dei "contatti". Le "regole" sono semplicissime:
-
Può votare ogni socio UGIdotNET, esprimendo una singola preferenza
-
La preferenza va espressa con un semplice: "Skin XXX" senza ulteriori commenti o richieste e, soprattutto, senza esternazioni pubbliche.
-
Le skin sono anonime per evitare (improbabili ma) spiacevoli campagne promozionali. Ergo, la comparsa di dinamiche di queso tipo avrà come unico effetto quello di mantenere la skin attuale. Il concetto è: "non è una competizione; si tratta di scegliere quale sarà la 'faccia' del muro della nostra community".
-
Le preferenze saranno raccolte fino al 31/12
Technorati Tag:
UGIdotNET
...Io darei una occhiata qui.
Technorati Tag:
subtext,
ugidotnet
Credo che il 99% dei siti sviluppati con ASP .NET, a partire dalla versione 2.0, facciano uso delle pagine Master. Tra le altre cose, esse possono essere utilizzate per aggiungere il riferimento a file Javascript (*.js) in modo da renderli automaticamente disponibili a tutte le pagine. Il problema di questo approccio è che il percorso del file Javascript (quello indicato nell'attributo src del tag script) è relativo alla posizione della Master page: ad esempio, se la master page è nella root del sito e il file javascript si trova nella directory Js, il tag script avrà la seguente forma:
<script src="js/functions.js" type="text/javascript"
language="javascript"></script>
Tuttavia, se il sito contiene file ASPX in altre directory, questo percorso non è più valido, poiché la loro posizione relativa rispetto al file javascript è diverso (ad esempio, dovrebbe essere del tipo "../js/functions"). Purtroppo con il tag script non si può usare il carattere speciale ~ per indicare la root del sito. La soluzione al problema consiste nell'usare il metodo ResolveUrl per determinare dinamicamente il percorso corretto del file:
<script src="<%= ResolveUrl("~/js/functions.js")%>"
type="text/javascript" language="javascript"></script>
Così facendo, il runtime di ASP .NET di volta in volta inserirà nel tag script il percorso del file corretto, in base alla posizione della pagina ASPX.
Lo stesso "trucco" permette di indicare un'immagine di sfondo nel tag body della Master page, in modo che sia visualizzata correttamente da tutte le altre pagine del sito, indipendentemente dalla loro posizione.