Latest Posts
Adobe nonostante sia un'azienda che produce prevalentemente prodotti dedicati all'arte grafica elettronica, difetta nel progettare l'interfaccia utente, o meglio la User Experience, dei suoi prodotti: ad esempio il suo prodotto storico Illustrator a detta di molti è meno usabile di Freehand. Potrei fare altri esempi ma è su Adobe Reader, ed in particolare sull'icona che viene obbligatoriamente inserita sul desktop, che voglio sfogarmi....
Ma a che serve? Qualcuno l'ha mai cliccata? Ormai siamo abituati ad aprire i programmi con il doppio clic sul file documento, e a volte partiamo dall'icona del programma per iniziare una nuova sessione di lavoro, un nuovo documento... ma in un reader, in un programma che per definizione non produce nulla da zero, l'icona sul desktop che serve?
Per maggiori info inerenti i nuovi aggiornamenti su BizTalk server 2009 vi rimando a questa interessantissima Q&A con Oliver Sharp, General Manager della Connected System Division.
http://www.microsoft.com/presspass/features/2008/sep08/09-05BizTalk.mspx

Ebbene sì, come prevedevo Microsoft ha cambiato nome alla futura release BizTalk, la R3.
Il nuovo BizTalk si chiamerà BizTalk server 2009
, la trovo una decisione corretta, soprattutto per le pesanti modifiche effettuate alle principali componenti interne.
Chiaramente il cambiare il nome a una piattaforma come questa preclude ragioni di tutto rispetto, alcune delle quali molto interessanti.
L' interfaccia di sviluppo molto più solida e affidabile, chiaramente su piattaforma 2008, framework 3.5, l'architettura interna di interconnessione dei layer di comunicazione in WCF, quest' ultima è, secondo me la cosa migliore che potesse fare Microsoft.
Altrettanto interessante il supporto ad Hyper-V, e finalmente la possibilita di effettuare multi-deploy in ambienti cluster.
RFID rimane una piattaforma a parte ma che presenta interessati nuove possibilità verso il supporto di soluzioni mobile e protocolli industriali (LLRP, TDT, TDS, WS Discovery, EPCIS support)
Supporto su TFS di gran lunga migliorato, il messaging interno rivisto per la parte di interchange di tipo recoverable.
Negli anni a seguire Microsoft ha già annunciato che effettuerà altri interessanti rilasci, in questo ordine:
Supporto di sviluppo per complex mapping, per il B2B inserimento dela possibilità di gestire complex trading partners,
Nuova ESB Guidance e nuova carburazione sulla low latency.
Altri steroidi al BAM, grandissima feature di BizTalk.
Sapete cosa significa BizTalk Server 2009 e non R3?
Significa che a differenza di quello che sapevo, BizTalk non sarà più inglobato internamente a OSLO, come si pensava, ma sarà, giustamente, un una sua estensione.
Sono molto felice di tutto questo, OSLO è veramente interessante e credo rivoluzionerà tante cose ma penso che determinate problematiche architetturali debbano essere focalizzate alle relative piattaforme, ritengo che la "globalizzazione" tecnologica porti solo al caos.
...

Dal primo principio del Lean Software Development degli esempi di spreco per ogniuna delle principali categorie di sprechi
- Eliminare gli sprechi
Quando si raccolgono dei requisiti che poi restano accantonati per un bel po a prendere polvere è spreco (Partially done work)
Quando viene implementata una funzionalità che servirà dopo ma non subito è spreco (Extra features)
Quando due gruppi si rimpallano un lavoro o un problema da risolvere è spreco (Motion)
Quando si comincia lo sviluppo di una funzionalità e ci si ferma per un po prima di finire senza consegnare niente al cliente è spreco (Partially done work)
Quando si resta ad aspettare qualcosa o qualcuno per poter poter continuare il proprio lavoro è spreco (Waiting)
Un bug del software che rallenta il lavoro dell'utente per settimane prima di essere scoperto e risolto è uno spreco (Defects)
Quando bisogna tracciare o compilare documenti che nessuno vuole leggere o leggerà è spreco (Extra Process)
Quando si passa dalla feature che si stà implementando ad un problema urgente da risolvere per tornare alla implementazione e poi passare a sistemare una cosa avanzata dalla implementazione precedente è uno spreco (Task Switching)
Qualche altro esempio di spreco di una di queste 7 categorie dal lavoro di ogni giorno?
Tags : Team Work | Lean Agile | Leadership |
Durante la fase di sviluppo di Elenoire io e Federico Degrandis abbiamo deciso di utilizzare MS Office Outlook per il salvataggio di note da Live Messenger, per risolvere il problema abbiamo utilizzato la seguente dll "Microsoft.Office.Interop.Outlook" e quindi abbiamo scritto il seguente codice per utilizzare l'istanza di Outlook :
1: private static Application app;
2:
3: // Metodo per la creazione di una nuova istanza
4: // della classe application
5: static ManageOutlook()
6: {
7: // se non e' gia' stata creata creo una nuova istanza della classe App
8: // questa mi permette di accedere alla funzioni di Outlook
9: if (app == null)
10: app = new Application();
11: }
fatto ciò abbiamo creato un metodo per l'aggiunta delle note
1: public static void AddNote(string body)
2: {
3: // creo un nuovo oggetto di tipo NoteItem usando il metodo CreateItem
4: // non e' possibile istanziare la class NoteItem
5: NoteItem note = (NoteItem)app.CreateItem(OlItemType.olNoteItem);
6:
7: // setto i vari campi con i valori passati dall'utente
8: note.Body = body;
9:
10: // salvo la nota
11: note.Save();
12: }
Il codice è completamente funzionante è testao, durante i test c'è stato solo un problema che continua a perseguitare il nostro progetto, le note in qualche caso vengono inserite con ritardo di ore dal momento dell'inserimento, per il momento credo che siano problemi nella dll.
Bellissimo articolo dove viene illustrato in nove lezioni come affrontare lo stesso argomento in flash e come in silverlight.
E si va... finalmente una settimana di ferie per ricaricare le batterie dopo il cambio di lavoro della fine dello scorso anno.
Una buona possibilità di mettere alla prova la mia "nuova" (per me lo è anche se l'ho comprata di seconda mano) Nikon D70.
E chissà che al mio ritorno non privi anche Flickr per condividerne un po'.
A presto!!!
Technorati Tag:
My personal Life
Questo post viene pubblicato come introduzione al progetto Elenoire ,come guida all'installazione e come complemento a questo post. Inizio con la descrizione del progetto Elenoire.

Problema
Si desidera progettare un sistema software che interagisca con Windows Live Messenger quando l’utente amministratore non è al computer o impossibilitato alla gestione di Windows Live Messenger.
Il sistema dovrà interagire con gli utenti Live che contattano l’amministratore fornendo servizi di segreteria, quali:
· Aggiunta di note in Microsoft Office Outlook 07
· Aggiunta di appuntamenti al calendario di Microsoft Office Outlook 07
Il progetto
Attualmente il progetto è completo delle funzionalità descritte in precedenza ed è scaricabile gratuitamente dal sito.
Installazione
L'analisi dell'installazione di un componente aggiuntivo parte dalla considerazione che, nella configurazione predefinita di Windows Live Messenger, i componenti aggiuntivi non sono supportati. Assicuriamoci che Messenger non sia in esecuzione, attiviamo l'editor del registro di sistema e selezioniamo la chiave HKEY_CURRENT_USER\Software\Microsoft\MSNMessenger. A questo punto dobbiamo aggiungere un valore dword 32 che chiameremo AddInFeatureEnabled ed a cui assegneremo il valore 1.
Una volta effettuata questa operazione apriamo messenger e spostiamoci nelle opzioni, vedremo che una nuova voce "Componenti aggiuntivi" comparirà tra le schede.
Prima di sincronizzare Elenoire con Messenger dobbiamo necessariamente registrare gli assembly nella global cache di Windows. Per installare gli assembly ci sono vari metodi :
- utilizzo del tool di gestione "Microsoft .NET Framework 2.0 Configuration"
- utilizzo del prompt dei comandi
Iniziamo con il tool, se sul pc che state usando non è presente il .net framework installatelo al seguente link e utilizziamo il tool di configurazione che troviamo all'interno della cartella strumenti di amministrazione. Utilizziamo l'interfaccia grafica per aggiungere i file dll che troviamo nella cartella di Elenoire.
Vediamo adesso come fare per installare gli assembly con il prompt, apriamo il prompt digitiamo "gacutil/i [spazio] nomedll.dll" per ogni dll del progetto, e automaticamente gli assembly verranno installati nella cache, il metodo consigliato è sicuramente il tool grafico, molto intuitivo e veloce da utilizzare.
Adesso non ci rimane che sincronizzare Elenoire con Messenger, apriamo messenger e torniamo nella scheda dei componenti aggiuntivi, da li selezionare la voce "aggiungi a messenger" e selezionare "MessengerAddin.Elenoire.dll" dalla cartella di Elenoire, fatto ciò dovete solo abilitare Elenoire (vedi Immagine).
Il template ASP .NET Dynamic Data crea un sito web completo di tutto... Però con l'interfaccia localizzata nella lingua di Visual Studio. Il problema è che, sviluppando siti per clienti "locali", tipicamente ci si aspetta che le stringhe siano in italiano. Per evitare di ridefinirsi a mano tutti i messaggi nella nostra lingua, l'unico modo è avere a disposizione una copia di Visual Studio in italiano, quindi creare il sito con essa.
Mi rendo conto che è molto più facile ricercare e apprendere nuove soluzioni orientate al maintenance che istruire al loro uso... (continua)
Come anticipato ieri, volevo dare un'occhiata alla feature ASP .NET Dynamic Data. Ebbene... Ho creato una nuova Web Application, utilizzando l'apposito template, ho aggiunto una classe di tipo LINQ-To-SQL al progetto, ho scommentato UNA (1) riga di codice nel file Global.asax, ho premuto F5 e... L'applicazione era già lì, bella e pronta all'uso!!!! Mi ci sono voluti meno di 5 minuti per creare una completa interfaccia web per l'accesso e la modifica del database. Che dire... LA COSA MI HA LASCIATO COMPLETAMENTE SENZA PAROLE...
Uno degli scenari in cui risulta spesso comod(issim)o ricorrere a LINQ to DataSet è l'elaborazione di dati in formato tabellare provenienti da datasheet Excel 97-2003 (.xls).
Supponiamo di voler processare, tramite il nostro applicativo, un datasheet come il seguente:
Alternativamente ai soliti statement di interrogazione dei DataSet, ora possiamo utilizzare LINQ to DataSet per accedere ai dati in maniera molto più potente ed espressiva, magari per effettuare operazioni complesse (magari difficilmente riproducibili con ADO.NET 2.0) o semplicemente per rendere il nostro codice maggiormente leggibile/manutenibile. A riguardo, riporto un semplice esempio di come poter sfruttare LINQ to DataSet in scenari come questo:
string filename = @"C:\Sample.xls";
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + filename + ";" + "Extended Properties=Excel 8.0;";
OleDbDataAdapter dataAdapter = new OleDbDataAdapter("SELECT * FROM [SampleData$]", connectionString);
DataTable dataTable_products = new DataTable("Products");
dataAdapter.Fill(dataTable_products);
// Es. 1: Calcolo spese totali per prodotto
var grouped_products = from row in dataTable_products.AsEnumerable()
group row by new { ProductName = row.Field<string>("ProductName") }
into productGroup
select new {
ProductName = productGroup.Key.ProductName,
TotalCost = productGroup.Sum(row => (double)row.Field<decimal>("UnitPrice") * row.Field<double>("Qty"))
};
foreach (var product in grouped_products)
{
Console.Write("{0} ", product.ProductName);
Console.WriteLine(product.TotalCost.ToString("C"));
}
// Es. 2: Calcolo spese totali
double total = dataTable_products.AsEnumerable().Sum(row => (double)row.Field<decimal>("UnitPrice") * row.Field<double>("Qty"));
Console.WriteLine("Total: {0}", total.ToString("C"));
Facile, rapido, LEGGIBILE... Grazie LINQ!!!
N.B.: Ovviamente il funzionamento dell'esempio riportato presuppone che la prima riga del datasheet contenga i nomi delle colonne.
Technorati Tag:
Excel,
LINQ,
DataSet
World Names Profiler
Se siete curiosi di conoscere la diffusione del vostro cognome nel mondo, visitate questo sito.
Vacanze
Finalmente domani inizieranno le mie vere vacanze estive (o quasi dato che siamo a settembre), staccando la spina da tutto prima dell'inizio del nuovo anno accademico e l'inizio dei nuovi progetti. Una pausa rigenerante. Alla prossima settimana.
Buon week-end a tutti
Ho notato solo oggi un comportamento "curioso" di SQL Server Management Studio 2008. Dovevo cambiare il tipo di dato di un campo in una tabella, quindi seleziono il Database, seleziono la tabella, vado in modalità "design", cambio il tipo di dato, salvo e...
Saving changes is not permitted. The changes you have made require the following tables to be dropped and re-created. You have either made changes to a table that can't be re-created or enabled the option Prevent saving changes that require the table to be re-created.
In pratica in SQL Server 2008, qualsiasi operazione su una tabella che comporta una DROP e una CREATE della stessa, di default è inibita. Per riavere il comportamento "classico" di SQL Server 2005, basta andare in Tools / Options / Designers e togliere la spunta su Prevent saving changes that require table re-creation:
Le operazioni che comportano DROP+CREATE di una tabella sono:
- Aggiunta di nuove colonne nel mezzo della tabella.
- Eliminazione di una colonna.
- Cambio del tipo di dato di una colonna o della sua nullability.
- Cambio dell'ordine delle colonne nella tabella.
Riferimento: http://msdn.microsoft.com/en-us/li