Introduzione Sono circa due settimane che il mio blog gira con Subtext 2.0, la nuova ed ultima release del noto blog engine, che annovera fra i suoi creatori anche il buon Simone Chiaretta. Decido di dare oggi l’ufficialità di questa cosa, perchè la migrazione è stata sì indolore, ma un po’ preoccupante per alcuni sintomi. Parecchi di voi mi hanno detto via mail e via messenger che ogni tanto il mio blog si apriva senza skin. Urgh! Nella parte Admin del blog ogni tanto avevo una strana exception, che veniva tracciato...
Supponiamo l’esistenza di una classe Player che tra le altre proprietà ne esponga una di tipo intero denominata Strength. Supponiamo l’esistenza di una classe Team che tra le altre proprietà ne esponga una di tipo List<Player> denominata AcquiredPlayers. Supponiamo l’esistenza di una classe Match che calcola l’incontro tra due Team diversi e ne calcola l’esito. Un match viene vinto dal Team che raggiunge il punteggio più alto. Tale punteggio è la somma dei valori della proprietà Strength dei giocatori appartenenti ad un Team (semplificando, chiaramente). Es: l’istanza team1 ha acquisito...
Ok, il titolo di questo post è più confuso che altro. Amen. Nei giorni scorsi ho creato una class library per .NET Framework 3.5, all’interno del quale ci sono Windows in XAML, ResourceDictionary, immagini e video. C’è anche una bella classe TagDataTemplateSelector, che eredita da DataTemplateSelector. Come ben sa chi sviluppa in WPF, una classe figlia di DataTemplateSelector ha un metodo pubblico SelectTemplate, che restituisce un DataTemplate piuttosto che un altro, in base alla logica che implementiamo nel metodo stesso. Questo serve ad esempio se avete una ListBox e volete applicare un template differente per ogni elemento: supponiamo...
Una query CAML può far riferimento ad un gran numero di campi, sia per effettuare ordinamenti, sia per applicare filtri. Inizialmente pensavo che il nome di questi campi potesse essere trovato semplicemente sfogliando la document library da Internet Explorer. In realtà quello che si legge nelle ColumnHeaders navigando un website Sharepoint è il Display Name. Nelle query CAML bisogna far riferimento ai campi attraverso il loro Internal Name. Dove trovare questo famigerato Internal Name? Il buon Vincent Rothwell, MCTS di Sharepoint, ha redatto sul suo blog questa bella tabella HTML che elenca Display Name, Internal Name, Guid e Type...
Attraverso CAML possiamo fare tutta una serie di query che vanno ad interrogare il contenuto di una document library. Per esempio, se volessimo aggiornare i metadati di un file pubblicato in una document library dobbiamo prima averne l'ID univoco. Questo lo abbiamo visto precedentemente, quando abbiamo ottenuto l'ID dell'ultimo file uploadato. Quale CAML dobbiamo scrivere per sapere l'ID di un qualsiasi file? E' molto semplice: <Where> <Eq> <FieldRef Name="FileLeafRef" /> <Value Type="Text">{0}</Value> ...
Ho scritto il metodo seguente, che dato un nome di una lista di Sharepoint ed un nome di file pubblicato, restituisce il suo ID univoco. Questo ID può essere utile durante la chiamata ai web-services di Sharepoint. Vediamo insieme come funziona. 1 public void ReadFileID(string listName, string fileName) 2 { 3 string name; 4 Lists l = new Lists(); 5 l.Credentials = new NetworkCredential(this.Username, this.Password, this.Domain); 6 7 XmlDocument doc = new...
Di per sè non è una cosa estremamente complicata. E' possibile accedere ad una document library di Sharepoint come se fosse un normale path di rete. Detto questo, potete per esempio uploadare un file locale su un server con una banalissima File.Copy - pratica che a me personalmente non piace perchè non è asincrona e soprattutto blocca il thread corrente fino a quando l'operazione non è completata (con successo o meno). Per l'upload ho preferito usare questo blocco di codice... public void UploadDocument(string localFilename, string remoteFilename) { ...
Introduzione per chi non sa di cosa si sta parlando Facciamola breve. L'evento Validating è il metodo più vecchio per validare il contenuto di un controllo in un'applicazione Windows Forms. L'evento Validating si scatena un attimo prima che un determinato controllo perda il focus: nell'event handler implementate il controllo che volete, e se le cose non vanno come dovrebbero, impostate a true il valore della proprietà Cancel del parametro di tipo CancelEventArgs. Quindi, supponiamo: 1 private void textBox1_Validating(object sender, CancelEventArgs e) 2 { 3 if(string.IsNullOrEmpty(this.textBox1.Text)) 4...
In un'applicazione WPF che sto programmando nel tempo libero ho creato un'animazione che parte automaticamente all'apertura della Window principale dell'applicazione stessa. Essa prepara l'interfaccia utente con un po' di "effetti speciali": il titolo dell'applicazione appare con un fade-in stessa cosa per il background, ma con un leggero ritardo rispetto al titolo altre scritte appaiono ruotando e spostandosi velocemente sullo schermo, posizionandosi vicino al titolo poi appare il menù principale, anch'esso con un fade-in il logo VivendoByte viene posizionato in basso a destra sullo schermo...
Il .NET Framework è composto da un altissimo numero di classi. Vi siete mai chiesti quante ne conoscete e quante ne avete usate? Non sto dicendo nulla di nuovo se vi dico che questo numero dipende per la maggior parte dal tipo di lavoro che fate, dal tipo di clienti che avete e dall'ambito nel quale siete più o meno costretti a sviluppare i vostri applicativi. I numeri raccontati in questo post danno una visione di insieme. Grazie a Lorenzo che me l'ha trovato! I tipi definiti nel .NET Framework 1.0 erano ben 3.581; nella versione 2.0 erano il...
Come requisito, leggetevi prima l'articolo su MSDN pubblicato dal nostro amico Giancarlo "Janky" Sudano su Linq to SQL. Se avete voglia e se volete partire rapidamente con questo ORM, potete dare un'occhiata all'ottimo tutorial del mio omonimo Igor: l'avevo letto quando era stato messo on-line, ma l'ho ripreso ieri quando ho voluto ripercorrere i passaggi sul mio piccolo progetto che io chiamo "campo di battaglia" per studiare le nuove tecnologie ed i nuovi framework ai quali sono interessato. Ieri sera ho mappato il mio domain-model su un database SQL Server 2005 Express Edition. Il domain-model contiene classi come Player,...
Premessa: il post è volutamente ironico. Chiedo scusa a tutti (ma proprio a tutti) i miei amici di UGIdotNET: vi prego, siate clementi nei commenti! :-) Molto tempo fa dissi che prima che succedesse una cosa, ne sarebbero accadute delle altre. Sono stato smentito. Quella cosa è accaduta ieri mattina. Ieri ho programmato e ho messo on-line la mia prima pagina in ASP.Net. E ne ho persino due prove. La prima è lo screenshot di Visual Studio 2008: La seconda è la mia nuova home-page. Che emozione...l'estensione è .aspx. Chi l'avrebbe mai detto??? Sapevo che VS2008 potesse creare siti Web, sapevo che esisteva una...
Da questo post del mio amico Alessandro Del Sole sono venuto a sapere che esiste un portale denominato MSDN Code Gallery, dove è possibile uploadare esempi di codice, piccoli progetti, prototipi che illustrano il funzionamento di una determinata tecnologia, video e così via. Non mi sembra che sia attivo da molto tempo, perchè i vari progetti sono stati tutti uploadati nel 2008, ed anche la loro quantità mi fa pensare che sia online da relativamente poco tempo. Alcuni di questi progetti vengono poi referenziati direttamente da MSDN, come nel caso di Visual Basic LINQ Video Series Samples. Le funzionalità...
Ad una ListBox generalmente possiamo fornire oggetti da visualizzare in due modi differenti: o utilizziamo il data-binding con la proprietà ItemsSource oppure accedendo alla proprietà Items, attraverso la quale possiamo aggiungere/rimuovere/ricercare oggetti. La proprietà Items è di tipo ItemCollection, una classe che espone un'interfaccia davvero semplice e potente al tempo stesso. Supponiamo di avere una Window con una ListBox popolata in questo modo. Se volessimo accedere agli oggetti contenuti nella ListBox possiamo scrivere in C# quanto segue: 1 ItemCollection photos = ListPhotosSelected.Items; 1 public void DownloadPhotos(string photosetId) 2 { 3 Stream stream; 4 FileStream saveFileStream; 5 Uri uri; 6 string filename; 7 8 Photo[] ps = conn.PhotosetsGetPhotos(photosetId); 9 10 ...
Ieri tutti quelli che hanno Visual Studio 2008 installato e funzionante - con la sola eccezione delle versioni Express - sono corsi a configurarlo per poter vedere come funziona il meccanismo che permette di vedere il codice sorgente del .NET Framework. Effettivamente, è la notizia del giorno. Come era stato annunciato da un po' di tempo, infatti, con VS2008 è possibile debuggare il framework e vedere il codice sorgente di tutte le classi comprese in determinati assembly e namespace. Vi rimando direttamente a questo post di un certo Shawn Burke che spiega nel dettaglio come e cosa impostare dentro...
Se avete bisogno di generare via codice un file di risorsa da poter includere in una soluzione, ecco il codice che potrebbe servirvi... static void Main(string[] args) { string filename = "D:\\registers.resx"; Dictionary<string, string> dict = new Dictionary<string, string>(); dict.Add("key1", "value1"); dict.Add("key2", "value2"); dict.Add("key3", "value3"); dict.Add("key4", "value4"); IDictionaryEnumerator enumerator = dict.GetEnumerator(); ResXResourceWriter writer = new ResXResourceWriter(filename); do { ...
Se volete disabilitare i balloons che Pocket PC 2003 visualizza quando il livello di carica della batteria scende al di sotto di una certa soglia, potete farlo manualmente andando - se ricordo bene - sotto Start --> Impostazioni --> Alimentazione --> Avvisi. Qui ci sono due checkbox, disattive di default, che vi permettono di spegnere due notifiche: una riguarda il livello basso di carica (battery low) e l'altro il livello molto basso di carica (battery very low). Se dovete fare questa cosa su 100 palmari diversi, che andranno in produzione, può essere comodo inserire questa cosa nel vostro software,...
Gli extension method sono una delle novità puramente sintattiche del .NET Framework 3.5. Mi piace chiamarle sintatticamente perchè tecnicamente parlando è possibile ottenere lo stesso risultato con le vecchie versioni del framework. Facendola breve, utilizzando gli extension method è possibile "estendere" un tipo, dotandolo di uno o più metodi, senza creare nuovi tipi, senza la necessità di mettere mano a codice sorgente che magari non avete e - in fin dei conti - senza modificare il tipo originale. Maggiori dettagli su questa pagina di MSDN. Supponiamo di aver definito un tipo Holiday come segue: 1 <StackPanel Orientation="Vertical"> 2 ...
Esercizio. Aprire il vostro browser preferito, raggiungete www.google.com e nella casella di ricerca inserite il testo seguente: site:blog.vivendobyte.net marco eraser Con questa stringa di ricerca ricercate all'interno del mio blog tutti i post in cui compaiono le parole marco ed eraser. Google vi restituisce 4 collegamenti. Osservate i primi due. I primi due collegamenti puntano a due URL diversi, ma il titolo del post è lo stesso. Due post con lo stesso nome. Il primo è stato scritto...
Uao, che titolo altisonante che ho tirato fuori dal cilindro questo pomeriggio. Vi illustro lo scenario. Immaginatevi un piccola applicazione mobile (Pocket PC o Windows Mobile, non importa) composta essenzialmente da 5 form diverse: Form1, Form2, Form3, Form4 e, sorpresa, Form5. L'applicazione parte mostrando Form1. Su ciascuna form ci sono due pulsanti - Next e Previous - per poter navigare avanti ed indietro da una forma all'altra. Gli stati possibili all'interno dell'applicazione sono i seguenti, con le varie possibilità di navigazione... Partenza=Form1, Indietro=Form1, Avanti=Form2 Partenza=Form2, Indietro=Form1, Avanti=Form3 ...
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...
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 applicazioni\VivendoByte 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...
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. ...
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...
Qualche giorno fa ho proposto sul mio blog l'implementazione di due interfacce diverse da utilizzare con WCF. La prima implementazione di IFatturazione espone due metodi che ritornano l'XML che rappresentano i tipi: [ServiceContract()] public interface IFatturazione { [OperationContract] string GetXmlArticolo(string Codice); [OperationContract] string GetXmlCliente(string Codice); } Il primo GetXmlArticolo...
Senza scendere nei dettagli di WCF, è chiaro come client e server comunichino fra loro attraverso un'interfaccia. Supponiamo di aver definito un'interfaccia IFatturazione che espone i seguenti membri pubblici: [ServiceContract()] public interface IFatturazione { [OperationContract] int GetImportoFattura(string denominazione); [OperationContract] string GetXmlArticolo(string Codice); [OperationContract] ...
Vi ho già parlato altre volte (forse troppe) del mio piccolo RapportinoMaker. Eppure, vi dirò, nella sua semplicità mi permette di esplorare, disegnare e sfruttare componenti che altrimenti non avrei mai visto. Vi faccio un piccolo riassunto perchè ci tengo. RapportinoMaker è un software che gira dalla console di Windows. Accetta al massimo due argomenti: il mese e l'anno di cui si vuole generare il rapportino. Quindi, per esempio, possiamo lanciarlo con una riga simile a questa: Dopo aver premuto Invio, RapportinoMaker apre il database di Outlook, preleva tutti gli appuntamenti del mese e dell'anno...
In questi giorni ho sfogliato e letto alcuni degli articoli di IoProgrammo. Vi vorrei anche parlare dell'articolo sulla programmazione managed del buon Mighell, ma non ho ancora avuto il tempo di leggerlo e pensarlo con calma. Una cosa però è certa: sull'ultimo numero ci sono due svarioni che lasciano a bocca aperta. A pagina 33 c'è un articolo su PHP 5.0 che illustra le nuove features sulla OOP, quindi ereditarietà degli oggetti, polimorfismo e così via. Il mio vecchio sito www.igordamiani.it, che adesso punta direttamente a www.vivendobyte.net era completamente sviluppato in PHP, e quindi ogni tanto mi fa piacere leggere qualcosa...
Ebbene sì, proprio io che con ASP.Net, web-services, IIS e compagnia bella non c'entro proprio nulla, ho passato il weekend a studiare WCF e a trovare un'applicazione pratica. Non è che non avevo nulla da fare, anzi: WCF mi serve per RapportinoMaker in modi che per adesso è troppo lungo spiegarvi, ma lo farò! La molla è stato il libro in allegato ad IoProgrammo, di cui ho già parlato qua. Venerdì ho fatto qualche viaggio in metropolitana di troppo, e ho avuto modo di leggere i primi capitoli di volata, e l'argomento mi ha appassionato. Ieri, sebbene fosse sabato, sono...
Se avete intenzione di utilizzare Windows Communication Foundation nel prossimo futuro e se non se sapete un'acca come me, vi consiglio di acquistare il nuovo numero di IoProgrammo, quello di Novembre, che ho visto in edicola stamattina: in allegato c'è un bel libro del nostro amico Fabio Cozzolino proprio su WCF. Fabio, lo ricordo, fa parte di DotNetSide, la community pugliese .NET che si dà sempre un bel daffare per divulgare le tecnologie .NET in lungo ed in largo, da WPF a WCF fino a WF. IoProgrammo con in allegato il libro di Fabio costa 9,90 Euro, una spesa modica...
Questa è una notizia da leggere con calma e da digerire per bene. Fate così: sedetevi, prendete una lattina della vostra bevanda preferita - io ho optato per un bel Estathè - chiudete gli occhi, fate un bel respiro e riapriteli. Leggete di seguito. La notizia è che con l'uscita di Visual Studio 2008 verrà rilasciato il codice sorgente del .NET Framework 3.5!!! Il titolo del post originale recita "Releasing the Source Code for the .NET Framework Libraries", e potete leggerlo qui. Ah, ferma: è scritto da un certo Scott Guthrie, che non è di certo l'ultimo arrivato. Non verrà...