Custom webpart vs. SharePoint Designer + XSLT

venerdì, 29 agosto 2008 18.49 by Marco Bellinaso

Nel progetto SharePoint al quale sto lavorando in questi giorni è uscita la necessità di mostrare l'elenco delle attività (presenti all'interno di una list Tasks normale) con delle formattazioni particolari. Ad esempio si volevano marcare con dei colori diversi le attività non completate ma già scadute o in procinto di scadere, le attività con scadenza entro 15 giorni, e così via. Una cosa tipo quello che rappresenta lo screenshot seguente:

Dopo una breve ricerca via web, ho trovato un attimo post -- Filtering and Formatting with Date Values -- presente nientemeno che sul blog del team di SharePoint Designer. L'esempio che propongono è proprio sulla colorazione di celle/righe in base alla differenza tra date; perfetto quindi. La soluzione si basa sull'utilizzo di SharePoint Designer (ovvio, visto dove si trova il post) per trasformare la ListView webpart standard in una DataView webpart e poi modificare pesantemente l'XSLT che renderizza la griglia con le attività, sfruttando dei template per calcolare la differenza tra le date e condizionalmente applicare stili custom.

Sebbene sembrasse perfettamente funzionante, dopo un po' di riflessioni ho deciso di abbandonare quella strada. Un po' per il fatto che sebbene lo comprenda l'XSLT non è il mio pane quotidiano, ma più che altro perchè questa soluzione non è particolarmente manutenibile, flessibile e riutilizzabile. Cosa accade infatti se voglio applicare lo stesso rendering custom su altre webpart delle attività (perchè magari ho più viste della stessa lista in homepage, con filtri diversi)? Dovrei rifare tutto lo stesso procedimento con SharePoint Designer. O perlomeno dovrei esportare l'XSLT modificato dalla prima webpart, applicarlo sulle altre e poi a mano correggere una serie di cose. Se dovesse saltare fuori un bug ovviamente la pezza andrebbe riapplicata ovunque. Se si dovesse fare un'ulteriore customizzazione, stesso discorso. Fino magari ad arrivare ad un punto dove la customizzazione non è neanche possibile (che so, la creazione di voci di menu contestuale personalizzate, il mix di dati provenienti da un'altra fonte, ecc.).

La soluzione verso la quale mi sono orientato è quindi stata quella di crearmi una webpart custom che mi permettesse di fare quello che volevo con il massimo della flessibilità e capacità di debugging. Per semplificarmi la vita ho usato la mitica SmartPart, una webpart "generica" che fa da contenitore di normali UserControl ASP.NET. Ho anche fatto riferimento ai seguenti 2 articoli che mostrano per bene come utilizzare il controllo SPGridView di SharePoint per creare una griglia con l'aspetto e tutte le caratteristiche delle griglie standard di SharePoint, ma caricate e gestite con una logica e dei dati custom:

- Displaying Data by Using the SPGridView Control in Windows SharePoint Services 3.0
- SPGridView and SPMenuField: Displaying custom data through SharePoint list

SPGridView eredita dalla classica GridView di ASP.NET, quindi c'è davvero poco da imparare per poterla usare. Si configurano le sue colonne, si ricava in qualche modo una DataTable (o un altro insieme di dati che implementa IListSource o IEnumerable), la si associa alla proprietà DataSource della griglia, si chiama DataBind, e il gioco è fatto. I dati potrebbero essere tranquillamente presi da un DB esterno, in tutto o in parte.

Nel mio caso volevo semplicemente mostrare il contenuto di una lista standard di SharePoint: una volta ottenuta una collezione SPListItemCollection la si può facilmente usare per creare una DataTable corrispondente grazie al suo metodo GetDataTable. Ricreata con poche righe la griglia dall'aspetto standard, per applicare le formattazioni custom basta intercettare l'evento OnRowCreated e modificare le proprietà dell'intera riga corrente o di una sua cella (BackColor o CssClass, ad esempio) in base alle proprie "regole di business".

Ora la domanda è: ok, hai duplicato la griglia standard e ci hai personalizzato l'aspetto...ma l'hai fatto in modo specifico per una singola vista con dei filtri prefissati...che succede se la vuoi applicare a viste diverse della stessa lista? E' semplice anche questo: è bastato aggiungere alla webpart una proprietà custom che permetta all'utente di specificare il nome di una delle viste di SharePoint create per la lista sorgente (ad esempio "Attività personali", "Attività in scadenza oggi" ecc.), e usare il modello ad oggetti di SharePoint per recuperare solo i dati di quella vista. Questo articolo che ho scritto ormai ben 3 anni fa spiega come fare (l'articolo richiede una registrazione gratuita al sito). Quindi non occorre neanche gestire N proprietà per specificare in modo complesso una serie predefinita di filtri, cercando di fornire una qualche flessibilità alla vista; basta solo scrivere quelle 5 righe per definire questa singola proprietà e poi lasciare a SharePoint il compito di ricavarsi i dati filtrati esattamente come avrebbe fatto per la sua UI standard, nonchè lasciare all'utente la possibilità di creare nuove viste (o di modificare quelle esistenti) con gli strumenti standard di SharePoint che già conosce.

Per la cronaca, lo screenshot in alto raffigura proprio la webpart custom creata. Non si sarebbe detto, visto che replica addirittura il menu contestuale, vero? (menu che è comunque possibile personalizzare con le proprie voci)

La webpart creata mi permetterà di aggiungere velocemente funzionalità a tutte le istanze sparse per il sito(i), correggere bug o modificare anche pesantemete l'aspetto della griglia...modificando, compilando e ri-deployando solo 2 file (il .ascx dello UserControl e il relativo assembly .dll). Seguendo la soluzione SharePoint Designer + XSLT le cose non sarebbero certamente state altrettanto semplici. In casi simili a questo, dove la flessibilità e il riutilizzo sono importanti, direi proprio che vale la pena affrontare il maggiore investimento iniziale (comunque molto contenuto).

Correntemente valutato 5.0 da 1 utenti

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Segnala:  
Tags:   , , ,
Categorie:   Sviluppo software | Windows
Azioni:   E-mail | Permalink | Commenti (0) | RSS CommentiRSS comment feed

Recensione Samsung i900 Omnia: un successo mancato

mercoledì, 13 agosto 2008 09.52 by Marco Bellinaso

Faccio una premessa per chi non avesse tempo o voglia di leggersi l'intera recensione: ho ritirato l'Omnia sabato 9 agosto (dopo averlo prenotato il 19 luglio, prima dell'uscita ufficiale, per sfruttare la fantastica promozione che includeva nientemeno che una Xbox 360 in regalo!), e domenica 10 avevo già messo online un annuncio per venderlo. L'ho effettivamente venduto il lunedì successivo, nemmeno 48 ore dopo averlo ritirato!

Perchè, mi si chiederà?! Non è pur vero che l'Omnia ha delle specifiche fantastiche, che includono Wi-fi, Bluetooth, A-GPS, fotocamera da ben 5mpx con flash e autofocus, un ampio display, radio FM, 8gb di memoria integrata e uno slot di espansione microSD, TV-Out, batteria di ottima capacità (stimata attorno al doppio del popolare HTC Diamond) il software Opera 9.5 già installato, ecc. ecc.? Si, tutto vero, ma purtroppo non è bastato...In questo post cercherò di spiegare perchè.

Il device è equipaggiato con Windows Mobile 6.1 Professional, e come si vedrà è da qui che partono tutti i problemi...
Sull'onda del successo dell'innovativa interfaccia utente di iPhone però, anche Samsung (come già HTC) ha cercato di rendere la shell del dispositivo più amichevole, intuitiva ed usabile rispetto alla shell fornita di default da WM. Ecco quindi che acceso il telefono ci si trova difronte un Today Screen completamente custom...e veramente particolare: sulla sinistra è infatti presente una specie di "sidebar" alla Windows Vista, con gadget che possono essere trascinati sul "desktop" e posizionati come si desidera. Ad esempio c'è il gadget che mostra l'ora, quello per attivare/disattivare suoni e vibrazione, quello per utilizzare la radio, ecc. Peccato che la risoluzione (insolita) di 240x400 non sia poi tanto grande, e i gadget che si possono mettere senza sovrapporli sono al massimo 2 o 3. A conti fatti, per quanto appariscente sia questa feature, dopo pochi istanti ci si rende conto che è completamente inutile, e che non verrà mai usata nell'uso quotidiano. Meglio quindi rimpiazzarla con un altro Today Screen, sempre sviluppato da Samsung, che mostra in modo ordinato le informazioni di base (data e ora, connessione ecc.) e le icone che portano alle applicazioni più utilizzate (messaggi, mail, rubrica, calendario, internet, media player ecc.).

   

Questa shell è decisamente "più realistica" della precedente, ed è stata la mia scelta. Una delle icone porta ad un secondo menu, che elenca gran parte delle applicazioni custom sviluppate o integrate da Samsung: c'è un media player, il link ad Internet che apre Opera Mobile 9.5, la radio, la fotocamera e altro ancora. In realtà, molti link in questo menù sono ridondanti, essendo di fatto presenti anche nel Today Screen - probabilmente questa schermata è più utile nel caso si sia scelto un Today Screen diverso (se siete masochisti). Non è tutto però, perchè per lanciare le applicazioni è anche presente una schermata customizzabile di "shortcut", e un'altra schermata scrollabile con (finalmente) l'intero elenco delle applicazioni disponibili (ad esempio Excel, Word, PowerPoint ecc.).

   

Dimenticavo...alcune applicazioni possono ovviamente anche apprire nel menu Start del device, come da WM classico. In tutto le applicazioni possono essere trovate in 5 posti diversi. Se forse nelle intenzioni del produttore questo doveva essere un pro, io lo considero solo inutile complessità in più; molto meglio sarebbe stato creare un'unica schermata scrollabile con le icone di tutti i programmi, da attivare tramite un tasto.

Samsung ha personalizzato vari altri aspetti di WM, oltre al Today Screen e al menu delle applicazioni. Ad esempio la lista dei contatti, che è stata realizzata in (non perfetto) stile iPhone. Dico "non perfetto" perchè sebbene nelle intenzioni di Samsung questa schermata dovrebbe essere facilmente scrollbile con le dita appoggiate in qualsiasi parte dello schermo, in realtà lo scrolling risulta assolutamente impreciso (oltre che lento), tanto che almeno una volta su tre, al termine dello scrolling e al sollevamento del dito, mi veniva erroneamente rilevata la "pressione" su un contatto, con conseguente passaggio alla schermata di dettaglio (anch'essa custom, e molto comoda, per la realtà).

 

Il problema è molto più grave di quanto possa sembrare, perchè spesso capita di dover scrollare un po' di volte prima di arrivare al punto desiderato dell'elenco, e personalmente quasi mai sono riuscito ad arrivare fino in fondo senza che almeno ad uno dei rilasci venisse rilevata una pressione...ogni volta passavo quindi sulla schermata di dettaglio, dovevo tornare indietro e ricominciare da capo. Un po' troppo difficile, per un'operazione tanto semplice ed essenziale quale la selezione di un contatto no? Per inciso, lo stesso identico problema si riscontra anche nella lista scrollabile delle applicazioni raffigurata sopra.

In pratica Samsung ha cercato di copiare lo scrolling a tutto schermo dell'iPhone, ma gli è uscito male. Inoltre, tale scrolling è presente solo nella shell e in qualcuna delle applicazioni custom, ma appena si arriva ad un'applicazione "normale" per WM ecco che riceviamo il benvenuto dalle classiche scrollbar, quasi impossibili da usare senza il pennino (che tra parentesi non è neppure integrato nel device, ma è esterno, unito tramite un laccetto, che di fatto rende scomodissima la sua estrazione ed inserimento nel suo "cappuccio"). Il problema si fa particolarmente sentito quando la scrollbar è molto corta, e i bottoncini risultano troppo piccoli e vicini ad altri controlli di input per essere usati "a mano". Si veda ad esempio Excel, oppure l'applicazione di messaggistica:

 

Non sembra molto facile premere le freccette della scrollbar senza premere altro lì attorno, vero? E le cose peggiorano quando ad esempio nell'applicazione di messaggistica si mette il device in orizzontale facendo cambiare l'orientamento dello schermo (cosa che tra l'altro risulta parecchio lenta, circa 2 secondi...troppo quando lo si ruota per sbaglio e poi lo si deve riportare allo stato normale):

Nella schermata precedente si può vedere come le freccette della scrollbar siano quasi attaccate, e quindi scomode. Ma si vede anche un'altra cosa, ovvero che c'è un campo Oggetto, totalmente inutile dal momento che stavo scrivendo un SMS, che si mangia un bel po' di spazio, mentre il campo Body (dove dovrei effettivamente scrivere il testo) è così piccolo che non si vede neanche la prima riga!!! In pratica, la UI è progettata in modo da confondere l'utente (dove scrivo il testo? cosa devo mettere nell'Oggetto di un SMS??) ed è quasi impraticabile. Non certo un esempio di usabilità....

Negli screenshot precedenti si vede anche un'altra delle personalizzazioni di Samsung, ovvero la tastiera: molto più grande di quella standard di WM, dovrebbe essere intesa per un uso senza pennino. Purtroppo però la tastiera non offre alcun feedback sul tasto premuto, ad esempio un effetto del tasto che si abbassa, o un popup che mostra sopra al dito la lettera premuta, come invece avviene sull'iPhone. Anche qui quindi si poteva fare di meglio.

Passando all'analisi di alcune applicazioni "non di sistema", la prima che ho sperimentato è stata Opera Mobile 9.5, un browser che sicuramente è molto migliore dell' Internet Explorer Mobile integrato in WM. Opera ha un supporto esteso per JavaScript, supporta lo scrolling e lo zoom alla iPhone, e in teoria anche Flash. Peccato che il supporto per Flash sia così limitato da risultare inutile nella maggior parte dei siti che ne fanno uso, peccato che lo scrolling sia impreciso come nella lista di contatti e applicazioni, peccato che lo zoom tramite doppio tap non sia perfetto al 100% e che manchi il multi-touch per perfezionare l'area di zoom (ma questa ovviamente è anche una mancanza hardware)...e peccato anche che il rendering non sembri veloce come avrei sperato:

 

In ogni caso, Opera risulta essere un buon browser seppure non eccellente, e Samsung ha fatto un'ottima scelta decidendo di pre-installarlo sul suo dispositivo.

La prossima applicazione è il Touch Player, anche in questo caso realizzato custom per simulare quello dell'iPhone (il browsing per categoria, autore ecc., nonchè lo scrolling, sono quasi uguali). L'effetto comunque è riuscito (nonostante non siamo ai livelli di iPod/iPhone con Touch Flow), e il player dell'Omnia può anche vantare il supporto per video DivX e XviD. Mica male (qui Apple potrebbe imparare...)!

   

Una delle caratteristiche di punta dell'Omnia è il GPS integrato, ormai sempre più diffuso su smartphone e PDA di questa fascia. Non ho avuto modo di provarlo con TomTom o altri software di navigazione (non forniti ovviamente), ma solo con l'applicazione Google Maps presente di default. Il GPS si è agganciato ai satelliti in un tempo ridottissimo (qualche secondo) anche durante il primo test, ed è risultato molto preciso (nell'immagine seguente sono stato io a ridurre volontariamente lo zoom, ovviamente). Voto positivo alle prestazioni del GPS quindi, sono sicuro che con un software di navigazione professionale farebbe benissimo il suo lavoro.

Proseguendo nell'esporazione delle applicazioni aggiuntive si trova un lettore di feed RSS. Niente di spettacolare (si trova di meglio volendo nel mercato freeware/shareware), ma fa il suo dovere:

 

Non manca anche uno player per podcast, che si integra con il Touch Player per la riproduzione dei brani:

   

Sempre all'interno della parte multimediale si trova anche l'applicazione Radio FM. Questa necessita che gli auricolari siano inseriti, dato che il cavo fa da antena, ma la riproduzione può anche avvenire tramite gli speaker esterni. L'applicazione si occupa di rilevare automaticamente le stazioni (oltre che supportare la registrazione manuale), permette di salvare le frequenze preferite, e gestisce la riproduzione. Molto semplice da utilizzare e di buona qualità generale.

 

Sempre nel reparto multimediale c'è la possibilità di registrare filmati (tramite l'applicazione che gestisce anche le foto), e addirittura un'applicazione che permette l'editing video! Questa permette di ritagliare pezzi di video, unirli e fare altre operazioni piuttosto semplici. A dir la verità è stata la cosa che ho esplorato meno a fondo di tutto...chi si metterà mai a fare anche il più semplice editing video su un device del genere, quando è molto più facile scaricare il filmato su computer e usare comodamente strumenti ben più consoni allo scopo? Vi capita davvero la necessità impellente di fare un filmato, editarlo, e spedirlo in tempo reale a qualcuno, senza il tempo di passare per casa per aggiustarlo un po' se necessario? Se fosse tanto essenziale immagino che andrebbe bene anche con qualche difetto. (questa è una mia opinione più "filosofica" che altro, però...)

Tra le applicazioni aggiunte da Samsung si trova anche un convertitore di unità di misura: pesi, lunghezze e qualcos'altro.

 

Peccato che manchi la possibilità di convertire tra valute (richiedendo una connessione Internet la prima volta per scaricarsi i fattori di conversione, da cachare in seguito per tot giorni), e peccato che anche nella conversione delle lunghezze (per esempio) sia possibile convertire da metri a piedi, iarde e miglia...ma non sia possibile ad esempio convertire da miglia a km! Quanto difficile sarebbe stato rendere questa applicazione un po' più completa e utile? Ben poco immagino, ma niente da fare...

Oltre a tutto ciò, il device ha ovviamente tutto quello che ci si aspetta di trovare in un PDA con WM Professional, quindi l'intera suite di Office Mobile (Word, Excel, PowerPoint, OneNote), il registratore vocale, la possibilità di configurare la condivisione internet ecc. ecc. Come in tutti i vari WM, le applicazioni che si aprono spesso restano in esecuzione "all'infinito", o almeno finchè non le si "killa" esplicitamente, causando molto presto problemi di memoria esaurita! Per mitigare un po' il problema c'è una mini applicazione che appare tenendo premuto il tasto fisico del menu, che consente di chiudere (una alla volta o tutte in un sol colpo) le applicazioni in esecuzione. 

 

Sebbene funzionante, non sarebbe stato meglio aggiungere (in aggiunta a questa, magari), una di quelle applicazioni che modificano la title bar standard delle applicazioni, aggiungendo un bottoncino che chiuda definitivamente l'applicazione? Credo che sarebbe stata più utile e apprezzata dell'editor video, anche se forse non avrebbe fatto altrettanta scena...

Conclusioni

Avrete notato che in questo post ho commentato e spesso criticato solo la parte software del telefono. E' stato volontario. Per la parte hardware infatti non c'è molto da dire: il Samsung Omnia è un device piccolo, leggero, elegante, fatto di materiali di buona qualità, con tutte le connessioni, moduli ed espansioni che si possono desiderare da un device di ultima generazione (multi-touch a parte). Peccato che tutto questo non sia sufficiente quando poi, una volta acceso, il telefono si dimostra lento e assolutamente poco pratico da utilizzare, soprattutto se si intende farlo senza il supporto di un pennino.

La colpa è anche di Samsung, che ha cercato di estendere WM  non riuscendo però a farlo per bene, ovvero lasciando lacune gravi (ad esempio lasciando inalterata l'inadeguata applicazione di messaggistica standard, nonostante sia l'applicazione che probabilmente sarà la più usata) e lasciando parecchi difetti anche nelle customizzazioni (scrolling "difettoso", varie feature mancanti).

A dire il vero però non si può biasimare solo Samsung: per fare davvero un ottimo lavoro avrebbe di fatto dovuto riscrivere tutte le applicazioni di default di WM...è pretendere un po' troppo da un produttore hardware, no? Il problema è che WM ha un'interfaccia utente sorpassata (è rimasta quasi identica da 2000, dall'uscita dei primi Pocket PC!), non pensata per essere utilizzata solo con le mani, e che cerca a tutti i costi di riprodurre su uno schermo di pochi centimetri quadrati gli stessi controlli di input proposti nella versione desktop del sistema operativo: scrollbar, tab, checkbox, combobox ecc. sono di fatto identifici a Windows non-mobile, il che onestamente mi pare del tutto assurdo.

L'Omnia ha addirittura una specie di piccolo trackpad, che di default serve per scrollare una pagina o il focus sulle icone, passando sopra il dito. E' però possibile attivare un vero e proprio cursore di mouse, tramite il quale si andrà a cliccare sui controlli (bottoni, scrollbar, dropdown...). Il cursore del mouse su un telefono tascabile?! E la cosa più drammatica è che, se non volete usare il pennino, è davvero necessario!

Il fatto che Samsung e HTC cerchino di crearsi la loro shell e le loro applicazioni ne è la prova. Il fatto che Samsung abbia preso pesantemente spunto da iPhone per varie cose suggerisce qual è il modello di riferimento attuale in termini di UI e usabilità...a raggion veduta aggiungerei.

WM offre tantissime applicazioni, non impone praticamente limiti a quello che si può fare e a come farlo...ma purtroppo tutto questo non necessariamene si traduce in maggiore produttività, anzi. Ad esempio, che senso ha avere delle applicazioni che scrivono fogli Excel e documenti Word, se poi il loro utilizzo è troppo scomodo su un device touch screen di questo tipo?

In definitiva, l'Omnia è sicuramente un ottimo telefono in quanto a funzionalità e possibilità "teoriche", ma abbastanza scadente in quanto a praticità di utilizzo. Per questo motivo non mi è ben chiaro quale sia il target di riferimento: l'utente business ha bisogno di lavorare su file, scambiare dati e fare altre mille cose...ma se poi non riesce a farle velocemente, non ha senso; l'utente consumer d'altra parte ha bisogno di meno cose (messaggi, internet, giochi, multimedialità) ma che funzionino alla perfezione, siano veloci e anche "belle" da vedere. L'Omnia non mi pare soddisfare appieno nessuna delle due necessità. A voi stabilire se soddisfa le vostre.

Correntemente valutato 5.0 da 7 utenti

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Segnala:  
Tags:   , , ,
Categorie:   Business | Tecnologia | Windows
Azioni:   E-mail | Permalink | Commenti (14) | RSS CommentiRSS comment feed

Cambiare velocemente le impostazioni di rete con NetSetMan

venerdì, 30 maggio 2008 19.07 by Marco Bellinaso

Lavorando come consulente mi trovo spesso a cambiare le impostazioni di rete del mio MacBook: IP e DNS dinamico a casa, un qualche IP e DNS da un cliente, un qualche altro IP, DNS e gateway da un altro, ecc. Può capitare di cambiare le impostazioni 3 volte in un giorno (mattina da una parte, pomeriggio da un'altra, e qualcosa fatto da casa)...farlo a mano ogni volta, magari copiando le impostazioni da un file di testo, non è proprio il massimo della vita. Quei 2 minuti che si spendono ogni volta potrebbero essere spesi meglio leggendo qualche blog, ad esempio Wink.

NetSetMan è una piccola utility che ci viene in soccorso in queste situazioni, permettendo di definire dei profili con tutte le impostazioni di rete necessarie, e di attivarme uno o l'altro con un semplice click. La versione freeware supporta fino a 6 profili (sufficienti in molti casi), ma la licenza non consente di usarla sul notebook di lavoro. La licenza Pro (che supporta profili illimitati, e non ha ovviamente limiti di utilizzo) comunque costa solo 12€, un prezzo del tutto ragionevole.

Correntemente valutato 5.0 da 1 utenti

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Segnala:  
Tags:   , ,
Categorie:   Windows
Azioni:   E-mail | Permalink | Commenti (0) | RSS CommentiRSS comment feed

VB Migration Partner è disponibile!

lunedì, 26 maggio 2008 09.24 by Marco Bellinaso

Dopo più di 2 anni di lavoro super intenso, Code Architects ha rilasciato la versione 1.0 di VB Migration Partner, il miglior strumento attualmente esistente per la conversione di codice VB6 in VB.NET. Ok, io sono di parte, avendo anch'io lavorato al progetto sotto la guida di Francesco Balena, ma questo beta tester non lo è:

After 15 years of developing our application in VB3, VB4-16 bit and VB6, I was disappointed to discover that we could not move to VB.Net. Our application was too large to rewrite into the new syntax. In spite of edits made to follow the new rules, such as omitting the lower bound on Dim statements, the migration tool available (NDR: quello incluso di default con Visual Studio) ran for 5 hours and gave 1947 errors to fix; and that was just on our main application program. Using VB Migration Partner, we converted that same code to .Net in 9 minutes and had 3 compilation errors to fix, all having to do with a third-party OCX. After commenting out those lines, the application started up and ran just fine, displaying dialogs that invoke our VB6 COM servers to perform calculations and print reports. Amazing! We need to keep developing our code in VB6 for our current clients, but the batch processing and code-test-fix methodology will allow us to convert a changing code base without making the same changes twice, once in VB6 and again in VB.Net.

ASC has been providing this application to businesses for over 25 years and we have successfully migrated from the mini-computer platform in the past. A rewrite would be impossible with an application such as ours that has evolved over so many years. Our client base has grown steadily during that time, and now includes 100’s of small to midsized firms with networks of 5 to 30 concurrent users of our application, and 20 of the top financial institutions in the nation, two of which have over 100 concurrent users of our application. With this tool, we will be able to support our existing platform and roll out a VB.Net version with minimal disruption to our clients. 

Brian Olson
Actuarial Systems Corporation, USA

Sembra "abbastanza" buona come prima recensione, no? Wink Del resto Francesco e i ragazzi in ufficio a Santeramo hanno fatto beta testing per mesi e mesi, lavorando su applicazioni VB6 reali, di clienti reali, con milioni di righe di codice VB6. Al confronto, applicazioni "più tipiche" (molte applicazioni non superano le 5-10.000 righe di codice...anche se poi magari ci sono decine o centinaia di queste piccole app a formare la mega app completa) dovrebbero essere quasi uno scherzo. Le righe di codice VB6 in circolazione sono ancora miliardi, e un tool efficace può essere la soluzione a molti problemi.

So (sappiamo) benissimo che gli sviluppatori vedono con molto scetticismo i tool di migrazione in generale...e questo scetticismo è perfettamente giustificato dai risultati mediocri che i tool attuali ci hanno abituati ad aspettarci. Ma questo non è il "solito" tool di migrazione, e mi auguro che se vorrete approfondire l'argomento ve ne renderete conto. 

Maggiori informazioni sul prodotto (nonchè un sacco di informazioni sulla migrazione in generale, utilissime anche a prescindere dall'utilizzo di questo tool) le potete trovare sul sito ufficiale, o sul blog dove Francesco posta le ultime novità (e i successi).  

Correntemente valutato 5.0 da 2 utenti

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Segnala:  
Tags:   , , ,
Categorie:   Business | Sviluppo software | Windows
Azioni:   E-mail | Permalink | Commenti (0) | RSS CommentiRSS comment feed

Fix per ExpGroupBy di WSS3 su FireFox

mercoledì, 7 maggio 2008 09.35 by Marco Bellinaso

Quando da SharePoint Designer si crea una DataView webpart con un qualche raggruppamento, il codice auto-generato fa uso della funzione ExpGroupBy per l'effetto di apertura/chiusura dei gruppi. Sfortunatamente tale feature non funziona in FireFox, alla faccia del tanto propagandato supporto cross-browser. La cosa simpatica (si fa per dire) è che il raggruppamento all'interno delle liste standard di WSS funziona bene anche in FireFox invece -- ma in quel caso la funzione usata è ExpCollGroup.

Sono andato a vedermi il codice della funzione ExpGroupBy, presente nel file Core.js, scoprendo che semplicemente la funzione termina subito se il browser è FF! Surprised Ma perchè? Non c'è nessun limite tecnico, è una cosa semplice tutto sommato. Togliendo tale condizione e provando il codice si scopre però che effettivamente la funzione non va su FF...ma, di nuovo, non per limiti tecnici, quanto perchè tale funzione è stata scritta abbastanza da schifo usando javascript non standard! (le variabili non sono dichiarate, gli array sono acceduti tramite (x) invece di [x], e qualcos'altro ancora). Pur non essendo assolutamente un esperto di javascript mi sono armato di FireBug sono riuscito a metterla un po' a posto in modo da farla funzionare sia su IE che su FF. Di seguito potete scaricare il risultato:

Download ExpGroupBy.txt (2,34 kb)

Il nuovo codice lo potete sostituire al codice originale all'interno di Core.js, oppure (soluzione preferita e da me adottata) inserire all'interno di un file .js custom da referenziare nella masterpage *dopo* Core.js (in modo che ne faccia l'override). 

Il problema si è risolto con uno sforzo relativamente basso, ma:
1) Era proprio necessario far codificare due funzioni molti simili a due persone diverse?
2) Possibile che chi ha implementato ExpGroupBy non sia andato a vedersi come era stata codificata (correttamente) ExpCollGroup?
3) Possibile che l'autore di ExpGroupBy non si sia posto il problema di come rendere cross-browser una funzione così semplice, invece di escludere a priori FF?
4) Possibile che nessuno abbia testato una funziona che è sicuramente usata in un mare di webpart create da SharePoint Designer, e abbia sollevato ua bandierina alla scoperta del problema? (soprattutto considerato che nelle liste standard la funzione sorella non ha problemi...almeno per coerenza fatele o non fatele funzionare entrambe!)

Tutto questo mostra come anche in MS non tutti gli sviluppatori siano dei fenomeni (e si presume che chi ha codificato quella funzione sia anche un esperto di JS, altrimeni si sarebbe occupato di codice di back-end o di altra roba) 

Correntemente valutato 5.0 da 1 utenti

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Segnala:  
Tags:   , , ,
Categorie:   Sviluppo software | Windows
Azioni:   E-mail | Permalink | Commenti (0) | RSS CommentiRSS comment feed

Due screensaver per amanti degli animali

giovedì, 3 aprile 2008 13.03 by Marco Bellinaso

Se vi piacciono gli animali dovete provare i due screensaver che linko di seguito. Sono rispettivamente un gatto e un cane (un Carlino per la precisione) che vi leccano lo schermo "dall'interno", lasciando anche le tracce delle leccate. Molto realistico...se il monitor fosse incassato in un muro sembrerebbe che un gatto/cane vi stia leccando la finestra per davvero Laughing.
Se gli animali non vi piacciono...mi spiace per voi.

Correntemente valutato 5.0 da 1 utenti

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Segnala:  
Tags:   ,
Categorie:   Windows
Azioni:   E-mail | Permalink | Commenti (0) | RSS CommentiRSS comment feed

Aggiungere la copertina a tutti gli album di iTunes in un passo

venerdì, 28 marzo 2008 23.10 by Marco Bellinaso

Da qualche giorno possiedo un iPhone e oggi ho cominciato a copiarci sopra un po' dei miei album musicali preferiti, per usare le sue funzioni di iPod. Una delle cose più carine dal punto di vista grafico è il browing degli album tramite l'interfaccia Cover Flow, che permette di navigare tra le varie copertine mostrate in prospettiva 3D. Quando poi si ascolta una canzone viene ovviamente mostrata la copertina dell'album relativo. Tutto bello, ma io non mi sono mai preoccupato di trovare le copertine in JPEG dei CD rippati...quindi niente di tutto questo per me. iTunes ha una funzione che permette di scaricare automaticamente la copertina di un album, peccato che per poterla sfruttare bisogni avere un account su iTunes Store...e peccato che per avere un account su iTunes Store bisogni per forza fornire una carta di credito. Queste, btw, sono proprio le cose che odio di Apple: mi sta pure bene dovermi registrare per avere un servizio, ma perchè devo fornire il numero di CC se non intendo acquistare nulla? Non sarebbe più corretto chiedere il numero solo al momento del primo *eventuale* acquisto? Perchè non proporre una registrazione "più leggera" che consenta solo di sfruttare le funzioni gratuite?

Cercando velocemente un qualche software alternativo che mi scaricasse automaticamente le cover, ho trovato iArtwork. Questa utility recupera direttamente dalla libreria di iTunes installato localmente l'elenco dei propri album, scarica da vari siti web le copertine per quelli che ne sono sprovvisti, e sempre automaticamente aggiorna l'informazione relativa su iTunes. Perfetto, non potevo chiedere di meglio! Avrei potuto chiedere che il tool costasse poco...ma è addirittura gratuito! (le donazioni sono bene accette però)

 

Volendo cercare il pelo nell'uovo si potrebbe dire che sarebbe stato utile poter annullare o mettere in pausa il procedimento di download e update delle cover...ma come lamentarsi di un software che a parte questo dettaglio svolge perfettamente la sua funzione, è gratuito ed è talmente semplice che richiede un singolo click per fare tutto il lavoro? 

Correntemente valutato 5.0 da 1 utenti

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Segnala:  
Tags:   , , ,
Categorie:   Windows
Azioni:   E-mail | Permalink | Commenti (6) | RSS CommentiRSS comment feed

Avvio rapido di applicazioni anche su XP con Launchy

mercoledì, 12 marzo 2008 11.00 by Marco Bellinaso

Sul MacBook che uso presso i clienti ho installato XP anzichè Vista, per avere un sistema più leggero che mi consenta di far girare le varie virtual machine configurate con i diversi sistemi operativi. Dopo più di un anno di utilizzo praticamente esclusivo di Vista, una delle cose di cui ho sentito di più la mancanza tornando a XP (a parte le feature developer-oriented tipo IIS7, che tanto uso solo all'interno delle VM ove necessario) è una feature semplice e banale quanto ormai indispensabile per me: la ricerca veloce all'interno del menu Start, che mi consente di trovare e lanciare un'applicazione in un attimo (senza doverla cercare tra una marea di icone sul desktop o sotto il menu Programs), o di trovare e aprire un folder magari nidificato all'inverosimile. 

Il mio collega Andrea mi ha prontamente segnalato Launchy (che in realtà esiste da ben 2 anni, ma a me solo ora è sorta la necessità...:), eccezionale utility open-source (scritta in C++) che risolve ottimamente il problema. Una volta installata e avviata questa resta in background fino alla pressione della combinazione (configurabile) Alt+Space, che rende visibile in finestrella dove digitare qualche lettera del programma / file / cartella / indirizzo web desiderato, e ottenere uno o più risultati da lanciare al volo. Non è necessario cominciare a scrivere il nome dall'inizio, vanno bene anche lettere interne (tipo "fox" per lanciare "Firefox"). L'interfaccia utente è skinnabile, e le skin di default certo non fanno brutta figura:



Se non vi dovessero soddisfare, su deviantART trovate molte skin alternative da applicare. Una delle cose particolarmente interessanti in Launchy è la possibilità di creare dei plugin per estendere le sue funzionalità e il numero di comandi che supporta. Uno tra i più comodi (che infatti è installato di default) si chiama Weby, e permette di eseguire una ricerca web sui più famosi motori di ricerca digitando Nome_Search_Engine {Tab} Parole_da_cercare {Invio}

E' importante notare una differenza sostanziale tra Launchy e la funzione di Quick Search di Vista. Launchy cerca file, folder ecc. in base al nome parziale digitato, ed effettua la ricerca solo all'interno di un elenco configurabile di folder (di default cerca tra i link sotto Start / Programs, nella cartella Program Files, nella cartella dei documenti dell'utente, e in altri posti tipici); non è però una ricerca basata su un indice dell'intero hard-disk e non è basata sul contenuto dei file. Questa "limitazione" però permette di produrre i/il risultato/i in maniera veramente istantanea. Visto che spessissimo uso la Quick Search di Vista come application launcher e non per eseguire una vera ricerca sul contenuto dei file, Launchy risulta forse anche migliore allo scopo, trasformando la limitazione in vantaggio! Magari solo personalizzando un po' la lista di folder in cui cerca, aggiungendo alcune directory di sistema, folder per i propri progetti e documenti ecc.

Vota questo post per primo

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Segnala:  
Tags:   ,
Categorie:   Windows
Azioni:   E-mail | Permalink | Commenti (2) | RSS CommentiRSS comment feed

Installare Linux Ubuntu su Windows o Mac OS X, in 5 minuti

giovedì, 6 marzo 2008 11.02 by Marco Bellinaso

Anche se usate regolarmente e con soddisfazione Windows per lavorare, giocare, navigare ecc. ecc., avere un'installazione Linux può essere comodo per vari motivi. I primi che mi vengono in mente sono:

  • Testare i propri siti su altri browser: FireFox per Win ha comportamenti un po' diversi da FireFox per Mac, quindi non mi fido più di nulla...
  • Testare una applicazione .NET su Mono
  • Usare un software (grafica, editing audio, source version, project management ecc.) open-source che non trovate per Windows se non a pagamento
  • Usare un servizio open-source sviluppato su Linux...che funzionerebbe anche in Windows, ma solo dopo aver installato Pyton, MySQL, Apache ecc. ecc. Dato che questi pacchetti, e i software che li usano, sono fatti principalmente per Linux, forse tanto vale eseguire la loro installazione "nativa"...
  • Studiate Informatica all'università e Linux vi serve e basta...
  • Siete semplicemente curiosi di vedere come funziona un SO alternativo a Windows e capirne pregi e debolezze...in modo da parlare con cognizione di causa quando vi trovate in una discussione "Win vs. Linux" o "OSX vs. Linux". 

Stabilito quindi che installarsi una copia di Linux può avere un senso, avete fondamentalmente 3 strade: (1) lo installate in una partizione dedicata e configurate un dual boot (2) installate da zero una virtual machine (3) usate una virtual machine già pronta!

Per chi scegliesse la strada (2), un'ottima guida passo-per-passo la trovate qui. Se invece siete pigri (o più semplicemente non ve ne frega nulla di sperimentare anche il wizard di installazione, ma volete subito andare al sodo), è possibile scaricare un'immagine di Ubuntu da far girare tramite VMWare Player (distribuito gratuitamente per Windows...per Mac dovrete invece comprare VMWare Parallels) ed essere pronti appena finito il download.

Io ho scaricato l'immagine di un disco con installata l'ultima versione (7.10) di Ubuntu Workstation (pesa circa 750 MB zippati), ma altre immagini sono disponibili per altre versioni, comprese quelle server. Una volta estratti i file dallo zip, basta fare doppio click sul file Ubuntu-7.10-desktop-i386.vmx. Il risultato lo vedete di seguito:

Correntemente valutato 5.0 da 1 utenti

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Segnala:  
Tags:   , , , ,
Categorie:   Linux | Mac OS X | Windows
Azioni:   E-mail | Permalink | Commenti (2) | RSS CommentiRSS comment feed

Cooliris Previews: preview immediata dei link in FireFox

martedì, 4 marzo 2008 11.12 by Marco Bellinaso

Dopo l'ottima PicLens è ora il momento di un'altra estensione per FireFox sviluppata dal Cooliris Team. Si tratta di Cooliris Previews, il cui scopo è aprire i link presenti sulla pagina all'interno di un popup (di dimensione configurabili) all'interno della pagina stessa, in modo da fornirne una preview immediata. Di default il popup viene aperto al passaggio del puntatore del mouse sopra l'iconcina con la lente che Previews mostra quando si passa sopra un qualsiasi link:

 

(il rettangolo rosso attorno all'icona è stato aggiunto da me) Il popup che si apre in realtà non offre solo una preview, ma carica effettivamente la pagina linkata, permettendo di leggerla nella sua interezza e di navigarla seguendo i link interni come si farebbe normalmente. Se la pagina dovesse risultare interessante sarà poi possibile aprirla in un tab dedicato di primo livello (in modo da poterla leggere più agevolmente, o di eseguire su di essa uno dei vari comandi del browser [stampa, ricerca di testo ecc.]) tramite uno dei bottoni presenti sulla toolbar della finestra di popup:

All'uscita del cursore del mouse dall'area del popup questo verrà chiuso automaticamente. L'estensione è configurabile e permette di specificare, tra le altre cose, se il popup deve essere aperto al passaggio del cursore sopra l'iconcina di Previews, al passaggio sopra il link stesso, al click dell'iconcina o del link.

Correntemente valutato 5.0 da 1 utenti

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Segnala:  
Tags:  
Categorie:   Linux | Mac OS X | Windows
Azioni:   E-mail | Permalink | Commenti (0) | RSS CommentiRSS comment feed