General programming

Origini dell'Agile Development

Sapevate che le tecniche di sviluppo agile si sono ispirate, almeno all’inizio, al sistema produttivo che Toyota aveva adottato già negli anni '50? Io no, lo apprendo ora: -          http://martinfowler.com/bliki/AgileVersusLean.html -          http://it.wikipedia.org/wiki/Toyotismo

Flickr Uploadr e Proxy

L'uploader ufficiale di Flickr è Flickr Uploadr. Questo tool può smettere di funzionare quando lo si utilizza dietro ad un proxy. In questo caso è necessario aprire il file <folder di installazione di Flickr>\defaults\preferences\prefs.js ed aggiungere le seguenti linee di codice: pref( 'network.proxy.http', 'your.proxy.org' ); pref( 'network.proxy.http_port', port ); pref( 'network.proxy.type', 1 ); Ovviamente il tutto a tool non avviato. Al suo riavvio, l'uploader dovrebbe funzionare correttamente.

Error Reporting in Windows XP/2003

Windows XP/2003 hanno la prerogativa di poter visualizzare una finestra riassuntiva degli errori che si sono verificati durante un determinato periodo. Questo articolo contiene una breve guida su come gestirne la configurazione.

A volte anche i Guru sbarellano (IMHO)

Mi trovo in leggero disaccordo con quanto espresso da Joel Spolsky nel suo post Don't hide or disable menu items. Secondo me non è corretto lasciare tutti i comandi abilitati, in alcuni casi si rischia davvero di sovraffolare la GUI. Sì, indicare all'utente il motivo dell'impossibilità di portare a termine un'operazione può essere un modo per rendere il software accattivante ma alla lunga rischia di stufare gli utenti esperti. Si potrebbe rendere configurabile un simile comportamento, una modalità novice che preveda i messaggi ed una expert che nasconda/disattivi i comandi non permessi. In generale, se dovessi visualizzare un messaggio di spiegazione non userei una...

WF e Workflow Simultanei

Le seguenti osservazioni sono valide per WF 3.0, non ho ancora fatto prove sul 3.5. Una notizia interessante riportata da MSDN a proposito della proprietà MaxSimultaneousWorkflows della classe DefaultWorkflowSchedulerService è la sequente: "The default value for this method is 5 for a single-processor machine, and (int)(5 * Environment.ProcessorCount * .8) for a multiple-processor machine...". Questo significa che, se non diversamente specificato, il WF Runtime è in grado di eseguire 5 workflow concorrenti su una macchina mono-processore, che diventano 8 con un processore Hyper-Threading. Cosa fare se si vuole scavalcare questo limite e non si può/vuole aumentare il numero di...

WF e Serializzazione

Una classe normalmente contiene uno o più campi i cui valori determinano lo stato delle sue istanze. Nel caso in cui la classe in esame fosse una WF Activity occorre fare un po' d'attenzione. Infatti, durante la vita di una WF Instance può capitare che si debba salvarne lo stato per poterlo recuperare in un secondo momento, anche molto avanti nel tempo e magari su una macchina diversa da quella su cui l'istanza era in esecuzione. Questa operazione, che prende il nome di Passivation,...

Spostare una WF Activity da un assembly

Facendo refactoring di una Solution VS 2005, ho deciso di spostare alcune WF Activity da un assembly ad un altro. Il primo assembly era stato creato come Workflow Activity Library, mentre il secondo come semplice Class Library. La sorpresa è arrivata al momento della visualizzazzione in VS dell'Activity portata sul secondo assembly, quando mi sono imbattuto in questo errore: "The service 'System.Workflow.ComponentModel.Design.IIdentifierCreationService' must be installed for this operation to succeed. Ensure that this service is available." Dopo una breve indagine ho scoperto che un file di progetto .csproj destinato a contenere Activity e/o Workflow deve assolutamente contenere alcune linee che istruiscano VS a caricare le estensioni per WF. Ovviamente...

Una macro per generare i GUID

Lavorando spesso con file WiX e Visual Studio, mi trovo nella situazione di dover generare molti GUID. Esiste l'applicazione Create GUID accessibile tramite il menù Tools di VS, ma è scomoda quando i GUID da generare sono molti. Inoltre, per motivi che non sto ad elencare, non mi è sempre possibile utilizzare strumenti come WixEdit che generano gli ID in automatico.Per questo ho aggiunto una semplicissima macro all'IDE: mi risparmia noiosissime operazioni di cut & paste:Sub ReplaceSelectionWithGuid()  DirectCast(DTE.ActiveDocument.Selection, TextSelection).Insert( "{" + System.Guid.NewGuid.ToString + "}")End Sub

Le specifiche di Orcas

Leggendo questo post di Marco Russo, ho rintracciato le specifiche interne di alcune funzionalità di Orcas.Per chi (quanti?) desiderasse sapere che fine abbia fatto STL.NET, c'è un link che punta alla relativa documentazione in formato xps.In pratica, STL.NET (o sarebbe meglio chiamarla STL/CLR?) sarà un tramite tra le classiche strutture ed algoritmi di STL ed il mondo managed; per questo motivo sarà disponibile solo per C++/CLI.Il documento riporta numerosi esempi di codice, con parallelismi tra C++ e C#.

Estendere i Ribbon di Office 2007

Non sono un cultore di Office, nel senso che lo utilizzo per lo stretto indispensabile e neppure sviluppo applicazioni ad esso verticali, ma trovo interessante la strada scelta da Microsoft per personalizzarne i ribbon.Sul numero di febbraio 2007 di MSDN Magazine viene presentata la RibbonX API, ossia la libreria che permette di estendere i ribbon di Office. Secondo me è un'ottima lettura, anche per chi non deve intervenire su Office, perché mostra un esempio di design di estendibilità della GUI.Segnalo anche questo post, per chi fosse interessato all'estendibilità tramite la "vecchia" accoppiata C++/ATL.

Evil is in the details

Design is choice. Most often, the struggle is not that there is no way to solve a design problem, but that there are too many ways that apparently solve the problem. You must know which collection of solutions solves the problem in a satisfactory manner. The need to choose propagates from the largest architectural levels down to the smallest unit of code. Furthermore, choices can be combined, which confers on design an evil multiplicity. - Andrei Alexandrescu powered by IMHO 1.3

Libri sul C++

Per chi, come me, si ostina a credere che il C++ rimanga un linguaggio affascinante e sempre pieno di sorprese, consiglio i libri che sto leggendo (alcuni per la terza volta): Effective C++ (io ho la seconda edizione ma è uscita la terza) More Effective C++ C++ Coding Standards Exceptional C++ Style Modern C++ Design Che cosa hanno per me questi libri di così speciale?Propongono questioni di utilizzo del linguaggio che mai mi sarebbero venute in mente, anche passando anni sulla tastiera. Le persone per cui lavoro mi hanno chiesto di redigere un documento di C++ Best...

Tool per la configurazione di CruiseControl.NET

Segnalo CCNetConfig, un tool ancora in beta che facilita la configurazione di CruiseControl.NET. powered by IMHO 1.3

MSDN Wiki

Ho appreso oggi di MSDN Wiki, ammetto che prima non ne avevo mai sentito parlare.Penso che sia un'iniziativa interessante, che vale la pena seguire e supportare...se capita. powered by IMHO 1.3

Continuous Integration: modifichiamo CruiseControl.NET

Come anticipato in uno dei miei recenti post, vorrei parlare di alcune modifiche fatte sui sorgenti di CruiseControl.NET per adattarlo ad una nostra particolare esigenza: la possibilità di determinare la label da attribuire ad una build dopo che i sorgenti di un progetto sono stati scaricati e compilati sulla build-machine. Non è mia intenzione spiegare l'architettura di CC.NET, servirebbe un libro intero, quindi vado al sodo. La versione "ufficiale" di CC.NET esige che il contenuto di...

Sandcastle: gioie e dolori

Come molti ormai sapranno, Sandcastle è il tool per fare documentazione che Microsoft ha deciso di distribuire: saggia decisione dopo la triste scomparsa di NDoc.Chi ci si è dedicato un po' ha scoperto che l'immediatezza, per ora, non è il suo forte e da questo punto di vista il confronto con il suddetto NDoc è impietoso.Se proprio non volete aspettare che Microsoft rilasci una GUI per facilitarne l'utilizzo, andate sul Wiki dedicato a Sandcastle: esiste una bella sezione chiamata Sandcastle GUIs...indovinate di cosa parla Partendo da qui, ho scaricato il progetto SandcastleBuilder e devo dire che mi ha dato una bella...

Continuous Integration

In un suo recente post, Wasp ha parlato dell'utilizzo/adattamento di NUnit nell'ambito di un'attività che lui ed io stiamo portando avanti in azienda.Circa un mese fa, abbiamo deciso di mettere in piedi un sistema di continuous integration, prendendo come spunto la nascita di un nuovo progetto.Pattern: a problemi noti e ricorrenti si applicano soluzioni che si sa essere funzionanti, così abbiamo scaricato CruiseControl.NET e ci abbiamo lavorato un po' su.Nei miei prossimi post non vorrei dilungarmi troppo sulla configurazione di questo strumento, perché esistono molte pagine che già lo fanno egregiamente. Vorrei piuttosto parlare dei problemi che abbiamo avuto e...

Microsoft Research rilascia Accelerator

In un mio vecchio post parlavo di Accelerator, una libreria per programmare GPU.Ora Microsoft Research ha deciso di renderne disponibile il download powered by IMHO 1.3

3D Engine

E' stata rilasciata la versione 1.0.7 di Ogre.Da segnalare inoltre IrrLua, ossia un front-end Lua per Irrlicht.Ho avuto modo di lavorare con Lua e devo dire che è una valida alternativa a molti ambienti di scripting.E' facile da usare, molto leggero e velocissimo, in più c'è la possibilità di interfacciarlo con il Framework .NET. powered by IMHO 1.3

Microsoft Research e le GPU

Sul sito Microsoft Research si parla di Accelerator, una libreria C# che facilita la programmazione delle GPU.Sinceramente credo molto in questo campo, anche se per ora è solo una nicchia rispetto alla programmazione "tradizionale" che ha come target le CPU.In effetti, escludendo i videogiochi, alcuni tipi di applicazioni (image processing, statistica, simulazione, ecc.) possono trarre enormi vantaggi nell'utilizzo di una GPU: tanta potenza di calcolo a bassissimo costo.Il problema è che oggi i linguaggi non sono di così alto livello, o forse i programmatori di CPU si sono stati abituati troppo bene , quindi ci vuole un certo sforzo per...

Ricerche veloci nel Registry

Per chi, come me, lavora spesso con il Registry segnalo Registry Crawler, un tool per fare ricerche ed altro ancora.Se qualcuno di voi usasse tool analoghi me lo segnali per favore. powered by IMHO 1.3

STL.NET

Dato che mi è stata giustamente chiesta la fonte del mio post precendente, eccola qui: http://www.hightechtalks.com/t2286609-where-is-the-stlnet.html. powered by IMHO 1.3

STL.NET

A quanto pare la versione di STL.NET compatibile con la release di VS 2005 non sarà disponibile ancora per un po' di tempo, si parla di un mese o due.Sembra anche che la distribuzione della libreria con la Beta 2 di VS sia stato un errore, infatti non avrebbe dovuto comparire neanche in quell'occasione.Aspetterò... powered by IMHO 1.3

VS 2005: Object Test Bench

Questa sera sono un po' malato, quindi ho deciso di starmene a casa, così ho continuato a guardarmi VS 2005 dato che con le beta non ho praticamente mai lavorato.Tra le varie novità ho trovato molto interessante l'Object Test Bench, ossia uno strumento per creare al volo istanze di classi, chiamarne i metodi ed eventualmente memorizzarne il risultato - come oggetto - all'interno dell'IDE. In pratica serve a testare in maniera rudimentale le classi che scriviamo.Microsoft aveva già prodotto una sistema simile con l'ActiveX Control Test Container; ora naturalmente il contesto è diverso e tutto è più raffinato, evoluto ed integrato, ma...

Must-Have Add-ins

Ecco una pagina su MSDN Magazine che riporta l'elenco degli add-in di VS che ogni developer dovrebbe avere: http://msdn.microsoft.com/msdnmag/issues/04/07/MustHaveTools/. powered by IMHO 1.3

Refactoring to Patterns

Vorrei segnalarvi questo libro, che sicuramente molti di voi conosceranno, ma alcuni ancora no: "Refactoring to Patterns" di Joshua Kerievsky.Mi è arrivato la scorsa settimana e, dopo averne letto alcuni capitoli, devo riconoscere l'enorme lavoro fatto dall'autore. Questo libro è veramente una miniera di informazioni utili e si può dire che rappresenti l'anello mancante tra "Refactoring: Improving the Design of Existing Code" di Martin Fowler ed il mitico "Design Patterns: Elements of Reusable Object-Oriented Software" della GoF. powered by IMHO 1.3

Google Web Part per SharePoint

Sul blog di Mark Wagner c'è un articolo che mostra una web part in grado di utilizzare Google per fare ricerche. Mi piace il fatto che la web part possa essere configurata per "confinare" le ricerche all'interno del sito. Sinceramente non l'ho ancora provata, me la scarico... powered by IMHO 1.2

Parsing e valutazione di espressioni in .NET

Questa sera sono tornato su un progetto di qualche mese fa relativo all'interpretazione ed alla valutazione di espressioni. La cosa interessante al momento della progettazione fu l'assoluta mancanza di specifiche e vincoli puntuali riguardo al tipo di espressioni. Mi spiego meglio: le espressioni sono contenute all'interno di un DB e possono evolvere in base ai "desideri" del cliente. In pratica si va dalla banale (ed inutile) (8 + 4) / 2 alla più elaborata GeoAvg( GetMinInterestRate(), GetMaxInterestRate() ) e così via. Il problema quindi si scompone in: parsing valutazione Per il primo problema mi sono affidato al GOLD parser di Devin Cook. Le cose belle di questo parser sono la modularità, la flessibilità e la disponibilità di engine...