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.

Full General programming Archive