Technology Experience

.NET World

Programmazione, libri, snippet di codice, articoli tecnici

.NET World

Aggiornamento – Visual Studio Recent Items Eraser

Tempo fa scrissi una piccola utility che gira dalla command line di Windows e che serve per cancellare dal registro tutte le voci che riguardano i files ed i progetti recenti di Visual Studio 2005. Il progetto non è open-source, ma è liberamente scaricabile dal mio sito Sharepoint a questo indirizzo.

Con l’uscita di Visual Studio 2008 ho rilasciato la versione 2.0, compatibile con l’ultima versione di Visual Studio, così adesso è in grado di eliminare le chiavi dalle seguenti voci di registro:

SoftwareMicrosoftVisualStudio8.0FileMRUList SoftwareMicrosoftVisualStudio8.0ProjectMRUList SoftwareMicrosoftVisualStudio9.0FileMRUList SoftwareMicrosoftVisualStudio9.0ProjectMRUList

Ho aggiunto anche la gestione di eventuali parametri passati dalla command line. In questo momento, l’unico gestito è “/p”, che fa una pausa al termine dell’elaborazione, così potete leggere i risultati, dal momento che l’utility indica quanti valori vengono eliminati per ciascuna delle chiavi elencate sopra. Vi faccio vedere uno screenshot…

L’ho scritto perchè non sopporto di vedere nei progetti recenti voci come “DeviceApplication1”, oppure “ConsoleApplication1”, “ConsoleApplication2”, etc. etc. Non ci crederete, ma mi sono messo uno shortcut alla mia utility sul desktop, e quasi tutte le sere – prima di tornare a casa – la lancio per ripulirmi il registry di tutte le porcate che ci finiscono dentro.

Se serve anche a voi, potete scaricarlo da qua.

Technorati Tags:  

Send to Kindle
.NET World

Visual Studio 2005 insieme a Visual Studio 2008

Non abbiate paura ad installare le ultime due versioni di Visual Studio sulla stessa macchina di sviluppo: convivono perfettamente, l’ho fatto io stamattina senza alcun problema. Perciò non abbiate timore nel farlo, andate tranquilli e sperimentate tutto il nuovo mondo: tra framework, IDE, costrutti e features nuove, di roba da vedere ce n’è.

Come qualcuno di voi sa bene, sviluppo su mobile, e vi posso assicurare che sia con VS2005 che con VS2008 tutto funziona regolarmente. Mi è capitato durante il setup di VS2008 che VS2005 – su cui stavo lavorando – mi dicesse che non avevo i permessi per accedere al Pocket PC, ma è bastato chiudere tutto, aspettare la fine del setup di VS2008, riavviare come mi è stato chiesto e tutto è tornato alla normalità. Me la sono andata a cercare…

La cosa bella è lavorare contemporaneamente con le due versioni, deployare applicazioni con l’una e con l’altra, senza nessun tipo di problema. Non so se è la mia immaginazione, ma mi pare persino un po’ più veloce.

Technorati Tags:  

Technorati Profile

Send to Kindle
.NET World

Windows Live Writer non è *solo* quello che sembra

Avete mai dato un’occhiata alla directory C:Program FilesWindows LiveWriter del vostro PC su cui avete installato Windows Live Writer? Tra i vari assembly contenuti in questa directory c’è quello chiamato WindowsLive.Writer.Api.dll, che è quello che dovete aggiungere alle references della vostra soluzione quando volete sviluppare un plug-in per WLW.

Ma c’è di più, perchè anche gli altri assembly sono molto, molto utili, per esempio, per aggiungere funzionalità di blogging ad applicazioni di terze parti. Ad esempio, attraverso l’assembly WindowsLive.Writer.BlogClient.dll abbiamo a disposizione tutto un object model per accedere ad una miriade di funzionalità da far paura. Oggi pomeriggio mi sono messo a sfogliare le classi per raggiungere un certo scopo – di cui vi parlerò in futuro – ed ho scoperto, per esempio, che con due linee di codice come queste…

1 BlogDescriptor[] bs = BlogSettings.GetBlogs(false); 2 string blogUrl = bs[0].HomepageUrl;

…possiamo ottenere tutti gli account configurati dentro WLW. La seconda riga non fa altro che restituirci l’url del primo blog configurato. Non sono riuscito a capire come ottenere l’url del blog attivo, quello su cui stiamo pubblicando, ma sono al lavoro per capirlo.

Ancora una volta, il vero vantaggio di Microsoft rispetto agli altri è per me il fatto che i loro applicativi non sono fini a loro stessi, non sono chiusi, ma da un sacco di tempo ormai espongono le loro stesse funzionalità al mondo esterno, permettendo così di sviluppare sui loro stessi applicativi, dando un valore aggiunto incredibile. Quando penso al paragone Office Vs. OpenOffice sorrido sempre, perchè secondo me ci si dimentica di tutto questo, ma questa è un’altra storia.

Technorati Tags:   

Send to Kindle
.NET World

Web Development 2008: io ci sarò!

Dopo aver consegnato nelle mani di mio fratello il Flight Simulator X Acceleration Pack per il suo compleanno, mi sono messo a navigare senza avere uno scopo particolare. L’Acceleration Pack comprende nuovi aerei, elicotteri, missioni e comprende un gran numero di ottimizzazioni per rendere il simulatore più fluido, etc. etc. Omar lo cercava da un po’ – con scarso successo – così ci ho pensato io.

La navigata si è trasformata in una breve chattata con il buon Alessandro, che mi ha giustamente ricordato del prossimo evento UGIdotNET, il Web Development 2008, al quale non mi ero ancora registrato. Ho rimediato subito, perciò – lavoro permettendo – ci vedremo il 13 Dicembre prossimo a Segrate, tutti in compagnia ad assistere alle sessioni che gli organizzatori ci stanno preparando. So che molti di voi che mi conoscono bene si stanno chiedendo: “Ma che diavolo va a fare Igor ad un workshop sul Web?“. Sapete cosa vi dico? Avete completamente ragione!!! Però la voglia di passare una giornata con i miei amici, con i miei lettori e soprattutto partecipare alla cena serale surclassano ogni cosa, perciò… Poi – magari – durante le sessioni mi annoierò un pochino, ma non si può avere tutto dalla vita, non vi pare?

Technorati Tags:   

Send to Kindle
.NET World

Bloccare la connessione ad ActiveSync su un Pocket PC 2003

Lo so che quando si tratta di palmari non sono all’avanguardia, ma io lavoro su PPC2003 e di questi posso parlare. Esiste una chiave di registro che abilita o disabilita la connessione automatica ad ActiveSync. Di default, il valore di tale chiave è 1: ciò significa che quando infilate il palmare nel cradle parte la connessione al PC desktop via ActiveSync. Se modificate il valore di questa chiave e la settate a 0, la connessione non parte. Può essere rischioso, lo capirete bene, perchè se la mettete a 0 non avete più la possibilità di connettervi al PC, e quindi non potete più reimpostare il valore ad 1. Siete abbastanza fottuti, a meno che possiate fare un hard-reset che riporti il palmare allo stato di fabbrica.

Avete un’altra possibilità. Scaricare questo piccolo tool che ho scritto questa mattina. E’ un piccolo exe, scritto con il Compact Framework, che vi permette di settare il valore di questa chiave di registro che, per la cronaca, è ControlPanelCommAutoCnct. Vi faccio vedere un bello screenshot per darvi l’idea:

Basta selezionare l’opzione desiderata (connessione on/off) e poi cliccare su Set.
Il tasto Close chiude semplicemente l’applicazione.

Download : http://enjoy.vivendobyte.net/igordamiani.it.reborn/NET%20Download/ActiveSyncAutoConnect.zip

Technorati Tags:   

Send to Kindle
.NET World

Intercettare l’evento PowerUp di un palmare

Probabilmente chi di voi sviluppa su Windows Mobile 5 o 6 può risolvere questo tipo di problema in modo diverso, magari con il meccanismo State and Notification Broker di cui ha parlato Mighell sull’ultimo numero di IoProgrammo.

Ma con Pocket PC 2003 certe cose non sono possibili. Il mio problema era questo (parlo al passato perchè ormai l’ho risolto): la mattina, quando riaccendevo il palmare dopo averlo spento la sera prima, la mia applicazione era ancora aperta, ma Windows si metteva in primo piano, facendo di fatto scomparire l’applicazione. Nel caso in cui si voglia creare un’applicazione blindata, questo comportamento non va bene. In pratica, si vuole evitare il più possibile che l’utente possa utilizzare l’interfaccia di Windows, fare operazioni non consentite e via dicendo. Per raggiungere questo obiettivo, abbiamo disabilitato gli hardware buttons del palmare (che richiamano le applicazioni standard come il calendario, la posta elettronica, etc.), abbiamo fatto uso di alcune API per spostare la barra Start al di fuori dello schermo e così via.

Rimaneva solo quel problema: capitava a volte, al risveglio del palmare dopo un lungo periodo, che l’applicazione finisse in secondo piano e lo schermo mostrava la schermata iniziale di Windows. Ci sono due soluzioni: o scrivete qualcosa in C++ oppure utilizzate lo OpenNETCF Smart Device Framework 2.1, come ho fatto io, che è disponibile qui.

Con questa libreria la soluzione è molto semplice:

public partial class MainForm : Form { public MainForm() { InitializeComponent(); PowerManagement.PowerUp += new DeviceNotification(PowerManagement_PowerUp); } void PowerManagement_PowerUp() { this.BringToFront(); MessageBox.Show("L'applicazione è stata risvegliata!"); } }

Nel costruttore del form mi sottoscrivo all’evento PowerUp, il cui event handler non fa altro che chiamare il metodo BringToFront() sulla form stessa, che quindi torna davanti a tutto. Piccola note: l’evento viene sollevata più di una volta – non ho ben capito la logica – perciò sconsiglierei di mettere MessageBox.Show() come ho fatto io qui sopra a scopo didattico. E’ bene utilizzare procedure non invasive per l’utente: la BringToFront() è una di queste, perchè se viene eseguita una o due volte ha poca importanza.

Technorati Tags:   

Send to Kindle
.NET World

VivendoByte Technorati Tags plug-in – powered by WCF

Ho apportato alcune divertenti modifiche al mio plug-in per Windows Live Writer per inserire i technorati tags da associare a ciascun post. Vi riporto un vecchio screenshot del plug-in, graficamente è rimasto lo stesso, per cui rende l’idea:

Il mio plug-in utilizza una cache locale dei tags salvata in C:Documents and Settings<username>Dati applicazioniVivendoByte Technorati Tags. La cache in questione è un normalissimo file XML, che viene deserializzato/serializzato ogni volta, e che serve per popolare la ListBox che vedete nella parte sinistra della form che vedete qui sopra. Questo ha principalmente lo scopo di evitare di inserire a mano tutte le volte gli stessi tags, dal momento che è possibile sceglierli dall’elenco. Ma c’è un piccolo problema.

Se utilizzo x computer diversi per bloggare (ad esempio: il mio notebook e due PC fissi) ho n cache diverse, proprio perchè ogni cache è salvata localmente su ciascun PC. E’ davvero scomodo, perchè il PC usato più di frequente ha la cache più popolosa, mentre sugli altri un po’ meno.

La soluzione: salvare tutto in una locazione centralizzata, pur mantenendo la cache locale
La piccola soluzione a cui ho pensato è la seguente: se la connessione ad Internet è disponibile, il caricamento ed il salvataggio dell’elenco dei tags viene effettuato tramite un servizio WCF. Questo servizio lavora con un’interfaccia ITechnoratiTags, definita come segue:

[ServiceContract()] public interface ITechnoratiTags { [OperationContract] IList<string> Load(string username); [OperationContract] bool Save(string username, IList<string> tags); }

Il servizio espone un metodo Load che si occupa di ritornare la lista di tags appartenenti ad un certo utente. Il metodo Save fa l’esatto opposto: salva la lista di tags di un certo utente, indicando se l’operazione è riuscita oppure no.

Quando il plug-in viene aperto, viene controllata l’esistenza e la disponibilità della connessione ad Internet: se la connessione c’è, allora viene utilizzato il servizio WCF si occupa di recuperare l’elenco dei tags. Se la connessione non c’è, l’elenco dei tags viene recuperato dalla cache locale, che è un meccanismo che comunque permane, e serve solamente nel caso in cui la rete non è raggiungibile.

Quando il plug-in viene chiuso, il salvataggio degli eventuali nuovi tags può avvenire in entrambi i modi: sulla cache locale e, se la connessione al Web è disponibile, anche attraverso il servizio WCF.

Questo permette di avere la cache locale sempre aggiornata, proprio perchè quando è possibile viene continuamente sincronizzata con il database centralizzato tramite WCF. Con la nuova versione del plug-in, che non ho ancora reso pubblica, posso tranquillamente utilizzare più di un PC ed avere su tutti la stessa medesima cache e, soprattutto, posso taggare in tutta libertà anche se sono in auto, treno, aereo, monopattino oppure, più semplicemente, non ho il cavo RJ45 connesso alla scheda di rete.

Perchè non l’ho ancora resa pubblica?

Se rendessi pubblico il plug-in così com’è, tutti (compreso me) utilizzeremmo gli stessi tags, perchè il servizio WCF adesso non è predisposto per memorizzare i technorati tags di tutti voi, e non vuole essere di certo un repository globale di tutti gli utenti. Se dovessi, o volessi, farlo, dovrei quanto meno ripensare ad un po’ di roba che va sotto il nome di sicurezza: dati protetti da privacy, più sicuri, trasmissione con un protocollo sicuro, autenticazione, etc. etc.

Technorati Tags:   

Send to Kindle
.NET World

News dal TechEd – software e blog

Chi di voi legge il Muro di UGIdotNET le saprà già, quindi potete saltare tranquillamente questo post.

Visual Studio 2008 ed il .NET Framework 3.5 usciranno entro fine mese. Questa data di uscita è valida per tutti gli MSDN Subscriber (compreso me), mentre l’uscita al pubblico vera e propria è prevista per l’anno prossimo, a gennaio/febbraio.

La seconda novità è che gli sviluppatori di Microsoft Italia hanno aperto un nuovo blog, MSDN Italia. Lo scopo è quello di fornire informazioni a tutti gli sviluppatori ed architetti del nostro piccolo mondo IT italiano. Non vi resta che sottoscriverlo.

Un mio ex-collega, Davide, ha aperto un nuovo blog, ed è raggiungibile qui. Non ho mai lavorato con lui, ma nel grande palazzo dove lavoravo prima io ero al quarto piano, lui al piano terra ed ogni tanto ci incontravamo per bere un caffè assieme. Adesso siamo in luoghi differenti, ma grazie ai nostri blog rimarremo in contatto.

Technorati Tags:   

Send to Kindle
.NET World

Grazie ragazzi per la cronaca del TechEd!

Grazie a Andrea, Claudio, Janky, Lorenzo, Mauro, Mighell e Raffele (in rigoroso ordine alfabetico). E chissà di chi altro mi sono dimenticato…perdonatemi!

Grazie a tutti questi amici – mi piace chiamarli veri amici perchè la stra-grande-maggioranza li conosco di persona e hanno tutti migliorato in qualche modo la mia persona – perchè ci stanno facendo una cronaca appassionata e precisa di quello che sta succedendo al TechEd Europe, che si sta tenendo in questi giorni a Barcellona. E’ davvero troppo bello leggere le recensioni delle varie sessioni che si sussegguono una dopo l’altra.

Mi fa piacere sentir parlare di speaker i cui nomi sono gli stessi dei libri che ho letto e che leggerò in futuro, e sapere che le persone di cui sopra se li possono vedere con i loro occhi è qualcosa davvero di evocativo.

So che lo fareste comunque, ma se può servire a qualcosa, Continuate Così Perchè Siete I Migliori!

Technorati Tags:   

Send to Kindle
.NET World

Windows Vista User Experience Guidelines

Il buon amico Marco Minerva ci informa che Microsoft ha rilasciato la versione definitiva delle guidelines da seguire per sviluppare applicazioni sotto Windows Vista. Sicuramente interessante, perchè si parla di come sfruttare WPF per aderire a queste convenzioni, di come disegnare l’interfaccia utente, quali font utilizzare, etc. etc.

Secondo me è utilissimo, almeno per me, nel senso che la maggior parte delle volte rimango bloccato su come disegnare un’interfaccia, ma non dal punto di vista tecnico, quando dal punto di vista estetico e funzionale. Anni fa lavoravo con un grafico che mi disegnava le interfacce, poi io le realizzavo fisicamente all’interno del software, e da questo punto di vista rendevo mooolto di più rispetto ad oggi, dove invece devo “perdere” tempo ad inventarmi finestre/dialog/wizard magari meno efficaci e meno amichevoli rispetto al lavoro fatto da una persona dedicata e più competente nel settore.

Fonte : http://msdn2.microsoft.com/en-us/library/aa511258.aspx

Technorati Tags:    

Send to Kindle