Marco Russo

.NET, Business Intelligence e dintorni

News

Microsoft SQL Server & Business Intelligence Conference 2012

Torino Technologies Grou

Corsi

Libri

Miei blog in inglese

Archives

gennaio 2005 - Posts

Win32 vs. Analysis Service vs. altri ancora...

I DevCon OneDay sono eventi da un giorno molto specializzati su argomenti specifici che stiamo provando a proporre quest'anno.

Il primo (tenuto da Paolo su SOA) è andato bene, Roberto si sta dando da fare per un evento su ASP.NET Security. Io sto valutando cosa proporre, e qui chiedo l'aiuto dei lettori per sapere quali argomenti, quale periodo e quale città sarebbe preferibile.

Argomenti:

  • Win32 Internals: una giornata sui fondamentali dell'architettura di Windows, dal kernel alle API Win32 che, si spera, con .NET non sono più necessarie ma che sono e restano la base delle attuali e future versioni di Windows (anche Longhorn sotto avrà ancora molto Win32). Dedicato a chi vorrebbe leggere Richter e Solomon/Russinovich ma non ha il tempo (o il coraggio) di farlo.
  • Analysis Services: una giornata di approfondimento su Analysis Services; ottimizzazione, dimensionamento, analisi del carico, deployment, security, clustering. Dedicata a chi già lo usa ma vorrebbe padroneggiarlo meglio.
  • Modellazione Data Warehouse e cubi OLAP: come si costruisce una soluzione di Business Intelligence basata su cubi OLAP partendo da un database relazionale normalizzato e arrivando ai cubi su Analysis Services, passando per modellazione di uno star schema e trasformazioni con i DTS. Personalmente ritengo sia difficile avere una buona efficacia in un giorno su un argomento così vasto, considerando che normalmente tutti questi concetti richiedono 3 giornate di corso senza esercitazioni e senza arrivare a parlare di Analysis Services. Però i feedback sono sempre graditi.
  • Business Intelligence con SQL Server 2000 lato client. L'idea è che ci sono molte soluzioni per i client già soltanto usando prodotti Microsoft (BI Portal 2 che gira su SharePoint, le Web Parts per Reporting Services sempre per SharePoint, tutta la famiglia di Office, Data Analyzer, MapPoint e Business Scorecard Accelerator) quindi una giornata più rivolta al lato client (mettendoci insieme anche un po' di MDX) avrebbe molto senso per chi ha già investito su Analysis Services e ritiene di non sfruttarne ancora tutte le potenzialità.

Periodo:

  • Aprile 2005
  • Maggio 2005
  • Giugno 2005
  • Altro...

Città:

  • Torino. Non solo perché ci abito, ma perché è la città delle prossime Olimpiadi e se ancora non la conoscete dovete vederla (anche se abbiamo ancora qualche cantiere in giro...). Dedicato agli amanti del cioccolato e delle pasticcerie in generale.
  • Milano. Appare sempre come la scelta più logica. Se tutti gli interessati sono di Milano... niente da dire, avrebbe senso vederci lì.
  • Bologna. Logisticamente perfetta, a portata di auto/treno da tantissime località del Nord e del Centro Italia.
  • Altro.... So che abbiamo molti iscritti da Roma e dintorni, non so quanto questi argomenti siano di interesse. Nel caso, fatevi sentire.

Dunque, se siete interessati scrivetemi (senza alcun impegno, ovviamente!) e datemi il vostro parere.

Con Avalon si scrive meno codice...

Ho appena dato uno sguardo a questo rudimentale Task Manager scritto in Avalon. Ha solo l'indicazione del consumo di CPU ma quello che è interessante è vedere il modo con cui è sviluppato. La parte grafica richiede pochissimo codice, in particolare quella 2D. Per la parte 3D c'è ancora un po' di codice ripetitivo, ma quello che è interessante vedere è la tendenza, e qui faccio una divagazione "da week-end".

Nel 1991, vedendo Fino alla fine del Mondo di Wim Wenders, rimasi colpito da alcune caratteristiche assolutamente futuristiche, per allora. Il film era ambientato nel 1999 e si vedono:

  • navigatore con indicazioni vocali e segnalazione di incidenti e ingorghi (oggi c'è);
  • assistenti animati che parlano e interagiscono con gli utenti del PC (visti su Office qualche anno dopo);
  • animazioni estese e in 3D dei risultati presentati da interrogazioni fatte su PC vari
  • gadget tecnologici vari (qui direi che già solo con i telefonini di oggi siamo andati più avanti...)

Certo esistono innumerevoli film di fantascienza con effetti speciali straordinari, ma questo è particolarmente curato nel realismo e nella fattibilità degli stessi, tanto che (con pochi anni di ritardo) praticamente è quasi tutto disponibile (non  tutto - chi conosce il film capirà).

Cosa c'entra questo con Avalon? Semplice: perché certi effetti e certe tecologie non restino soltanto delle demo a sé stanti ma entrino a far parte della "vita quotidiana", è necessario abbattere i costi di realizzazione e disponibilità delle tecnologie stesse. Oggi è già possibile fare interfacce animate 3D assolutamente mozzafiato, solo che è molto costoso e richiede competenze molto specifiche; con Avalon questo costo viene ridotto moltissimo, tanto che diventa più importante avere un certo "gusto estetico" piuttosto che essere degli smanettoni di codice.

Stupisce comunque pensare quanto questo percorso evolutivo degli strumenti tecnologici sia in realtà piuttosto lineare, mentre se osservato dall'esterno può apparire molto più discontinuo, perché si percepisce un'innovazione come tale solo quando diventa parte delle cose di tutti i giorni.

powered by IMHO 1.2

Motoola MPx - non saranno più prodotti a Taiwan

Inizio a pensare di aver fatto bene a non aspettare il Motorola MPx. La notizia di oggi è che Motorola non produrrà più i suoi telefoni con Windows Mobile a Taiwan (parliamo di MPx 200, MPx 220 e MPx), spostando la produzione nei suoi stabilimenti. Si tratta di una buona notizia per chi vorrà acquistare un Motorola in futuro, ma di una cattiva notizia per chi vuole acquistarlo presto: immagino ci vorrà ancora qualche mese per allestire le linee di produzione (o l'avranno già fatto?). Nel frattempo continuo a tenermi stretto il mio Qtek 9090...

powered by IMHO

Nuova versione BI Portal

Questa nuova versione di BI Portal disponibile da Microsoft è integrata con SharePoint e Reporting Services. Non c'è ancora in italiano anche se supporta diverse lingue. Appena riuscirò a provarla meglio fornirò una relazione più completa.

powered by IMHO

Il ritorno dell'asterisco: C-Omega

Questo articolo introduttivo su C-Omega di Dare Obasanjo illustra in due pagine le caratteristiche principali di C-Omega. Circa due anni fa ho avuto il privilegio di vedere l'antenato di questo linguaggio presentato all'Università di Pisa da Erik Meijer. Già allora erano chiare le potenzialità di un linguaggio simile e il fatto che queste siano alcune funzionalità che potremmo vedere in futuro in C# 3.0 è un segnale molto importante: i frutti della ricerca (Meijer lavora in Microsoft Research) possono avere un impatto importante e diretto nel mondo "produttivo".

Ora però devo spiegare il titolo del post: dopo alcune righe pensavo che l'autore avesse confuso C# e C++ in un esempio di codice... invece * is back ed ecco che ricominciamo ad avere chiarissime linee di codice come:

int* values = z...int::*[it > 8];

Finalmente un linguaggio... serio... :-)

powered by IMHO

Jet engine forever...

Ho appena letto questo: From a technical standpoint, E12 will continue to use the Jet database engine and won't use new database technology, as had been previously expected with Kodiak (fonte: newsletter di Paul Thurrot).

Ora, come si fa poi a spiegare che per un database enterprise non si deve usare Access ma SQL Server? Uno potrebbe dire che se lo fa anche la prossima versione di Exchange, non c'è motivo di pensare che non lo si possa fare anche per applicativi meno impegnativi.

Certo, Exchange usa poi quel file in modo esclusivo e le funzionalità sono diverse da un db relazionale tradizionale... però vallo a spiegare...

powered by IMHO

Gli sviluppatori Microsoft vanno dai loro clienti

Brad Abrams è uno dei PM del CLR di .NET e in questo post annuncia il suo programma per febbraio : prendere contatto con la realtà di chi usa .NET (servizi di supporto Microsoft, ISV e clienti finali che sviluppano soluzioni personalizzate).

L'iniziativa non dovrebbe essere sporadica ma riguarda molte persone dei team di sviluppo di Microsoft. Se fatta con lo spirito giusto da parte degli sviluppatori Microsoft (che non devono prenderla come una vacanza pagata...) è un'iniziativa lodevole.

powered by IMHO

Mobilità totale

Forse una soluzione al problema di tutti (PDA o Smartphone? PC grande o piccolo?) è questa:

  • Telefono Windows Mobile (un Qtek8010)
  • Micronotebook OQO (WinXP grande come un palmare ma a 800x480 per un peso di 400 grammi)
  • Notebook da 3kg per lavorare

Non è che sia veramente convinto, ma OQO è proprio piccolo,  anche e non pesa pochissimo (ma la tastiera sembra quasi utilizzabile).

powered by IMHO

Qtek 9090: prime impressioni

Alla fine ho preso una palla al balzo e mi sono dotato di un Qtek 9090.

Le prime impressioni sono positive: la batteria ha una buona durata (ma l'ho usato ancora poco), la tastiera è piccola ma comunque più veloce che scrivere con la penna, almeno per me. Buona RAM, prestazioni per me accettabili. Non ho ancora installato un po' di software personalizzato, prima di tutto devo sostituire l'agenda standard con qualcosa di meglio. Magari la prossima settimana cercherò di trarre conclusioni più ponderate.

powered by IMHO

Per chi proprio non vuole usare un utente non amministratore

Grazie a una segnalazione di Cristian Civera, ho scoperto che Valery Pryaikov ha scritto un'interessante estensione alla shell di Windows che in meno di un mese ha avuto un grande successo ed è già su SourceForge.

In pratica, pur avendo un utente amministratore locale della macchina, la shell di explorer parte con un access token ristretto e con lo stesso token vengono eseguiti tutti i programmi "figli"; un'icona nella tray area consente di avviare qualsiasi processo con un access token diverso, più ristretto o "libero", in pratica lo stesso access token dell'utente amministratore (Windows consente di restringere i diritti su un access token ma non di ampliarli).

Come dice Valery, questa soluzione è più sicura rispetto a eseguire tutte le applicazioni con un utente amministratore. Non è però una soluzione affidabile al 100% in termini di sicurezza: l'esecuzione di un'applicazione che richieda un nuovo logon avrebbe comunque diritti di amministratore; un'applicazione potrebbe tentare un attacco a questa utility con un po' di SendMessage (anche se su questo stanno lavorando); probabilmente altro ancora.

Però l'autore e chi vi collabora dimostra una certa sensibilità a tutti questi problemi e i piani di sviluppo che ho letto (per es. un file XML opportunamente protetto con la configurazione delle applicazioni che vanno eseguite sempre come amministratore) fanno intravedere una strada che è molto simile a una funzionalità che esordirà in Longhorn (che si basa in effetti sulle stesse API già disponibili, e quindi perché non farlo già oggi?). La differenza è che, implementata a livello di sistema operativo, questa tecnica si rivela probabilmente più sicura.

Dirò la verità: sarei tentato di installarlo, ma preferisco essere prudente. Probabilmente lo metterò su una vecchia macchina XP che ancora uso di tanto in tanto e che uso ancora con un utente amministratore.

powered by IMHO

Notebook: non esiste solo Dell

Negli ultimi mesi (ma potrei dire anni) molte delle persone che conosco, quando si trattava di prendere un notebook, alla fine hanno scelto un Dell. I motivi sono molteplici ma una delle cose più importanti è che si può fare tutto, ma veramente tutto, on-line. Anche da un punto di vista tecnico i Dell non sono male, soprattutto hanno un onesto rapporto qualità/prezzo.

Forse per pigrizia mentale, però, siamo arrivati a non considerare tutto quello che fanno gli altri produttori. Ultimamente sto considerando di cambiare decisamente rotta rispetto al passato e di passare dalla politica "un notebook per fare tutto" a quella "un notebook da portare ovunque", dotato magari di un secondo notebook con funzionalità e peso idoneo da portare in giro in corsi e conferenze.

Senza alcuna fretta, ho cominciato a dare un po' un'occhiata a quello che c'è in giro. Prima di tutto, se volete comprare un notebook, vi consiglio di leggere quest'ottimo post di Cameron Purdy (segnalato da Chris Anderson) che elenca magistralmente tutte le cose da considerare per scegliere un notebook.

Incuriosito dalla scelta dei Fujitsu (un tempo non cari, carissimi...), ho scoperto che esistono modelli ultraleggeri come il LifeBook P7000; la mia idea però sarebbe quella di prendere un Tablet PC convertibile e oggi come oggi il meglio sembra il Toshiba Portégé M200, appena sopra i 2kg. La parte migliore è che ha una risoluzione di 1.400x1.050, con un display che non farebbe rimpiangere troppo il mio attuale 1.680x.1050 (Dell Inspiron 8500, predecessore dell'attuale 8600) facendomi però dimenticare i suoi circa 3,5kg di peso. Certo, quando poi uno vede il Toshiba Portégé R100 che pesa soltanto 1,1 kg si chiede se si può fare a meno del Tablet... però la risoluzione torna al canonico 1.024x768.

L'idea è che con il notebook "leggero" si farebbe la parte di "comunicazione" tradizionale: mail, blog, navigazione internet, messenger, Office (da utente e non da sviluppatore). Con quello "pesante" l'attività di sviluppo/consulenza/formazione. Con un desktop "spinto" lo sviluppo vero e proprio (in ufficio/casa, insomma).

Il problema (costi a parte...) è che temo poi la sindrome del viaggiatore che si porta dietro il doppio dei ricambi necessari rispetto al periodo in cui è in giro, per cui raddoppia (inutilmente) il peso della valigia. Non è che poi si andrebbe in giro sempre con due notebook, uno leggero e l'altro "pesante" ma per un peso totale comunque doppio dell'attuale?

Bisogna poi considerare che qualsiasi notebook uno compri, tra un anno è poco attuale, tra due anni è vecchio, tra tre anni è obsoleto e non ci si può installare (per usarlo) quasi nulla di quello che esce di nuovo. Quando non ci fosse il fattore "evoluzione tecnologica", il notebook è soggetto a usura molto più di un desktop, che regge il peso degli anni molto meglio di un notebook (anche se adesso con l'avvento dei processori a 64 bit è difficile pensare che non ci sarà un divario, da qui a 3 anni, molto più grande di quello esistente tra un PC attuale e uno di 3 anni fa).

Per tornare all'inizio del discorso... non esiste solo Dell. Ormai è possibile comprare on-line praticamente di tutto. Il grosso vantaggio che Dell mantiene (in Italia, per lo meno) è la totale configurabilità dell'acquisto on-line. Molti altri produttori non hanno un servizio di vendita diretta on-line e preferiscono mantenere integra la loro rete commerciale "fisica". Questione di tempo, ma dovranno adeguarsi.

powered by IMHO

Quando chiamare Dispose

Dopo infinite discussioni sento il bisogno di scrivere nel blog (un po' come scolpire nella pietra) quando è necessario chiamare Dispose.

Regola semplice:

  • Se una classe implementa IDisposable, se si crea e si usa un'istanza di tale classe alla fine bisogna chiamare Dispose

Regola più completa (le cose non sono mai così semplici):

  • Per ogni oggetto di una classe che implementa IDisposable è opportuno chiamare Dispose non appena l'oggetto non è più utilizzato
  • Il responsabile della chiamata a Dispose è l'owner dell'oggetto
  • L'owner iniziale di un oggetto è colui che lo crea, e normalmente rimane tale
  • In circostanze particolari l'ownership cambia; un caso comune è quello di una class factory, un caso meno tipico (ma che capita abitualmente) è quello di una struttura dati (es. una collection) in cui la struttura (o una classe che la contiene) diventa owner degli oggetti che terze parti (altri oggetti) allocano e vi inseriscono

Spiego un po' il motivo del post: diverse volte mi è stato riferito che per alcuni oggetti, che pur implementano IDisposable, non è necessario chiamare Dispose. Uno di questi, per esempio, è SqlCommand. A conforto di tale affermazione venivano portati codici di esempio trovati su MSDN e listati disassemblati con Reflector.

Sorry, non è così.

Se una classe implementa IDisposable, la Dispose va chiamata da qualcuno (sempre che si voglia scrivere del codice efficiente). La classe SqlCommand implementa IDisposable perché deriva da System.ComponentModel.Component, la quale definisce originariamente l'implementazione di IDisposable (che quindi viene ereditata da tutte le classi derivate). Purtroppo non esiste un modo per dire a una classe che IDisposable non è più necessaria ed è presente solo a causa di una classe base... insomma si potrebbe pensare a una ICancelDisposable per tale scopo, ma pensandoci bene non sarebbe una cosa sensata perché se la classe base in una versione successiva sfrutta diversamente IDisposable (e fa qualcosa in Dispose a differenza di quanto fa la classe Component) ecco che le classi derivate non potrebbero più esonerarsi dall'obbligo di seguire il pattern di utilizzo necessario.

E poi... indovinate un po'... con ADO.NET 2.0 ecco che la chiamata a Dispose su SqlCommand diventa necessaria!

All'interno di un assembly è "tollerabile" fare alcune assunzioni sulle classi che vi sono contenute, ma se si usa una classe contenuta in un assembly diverso direi che è d'obbligo seguire i pattern d'uso lasciando perdere vere o presunte ottimizzazioni. L'ottimizzazione è una cosa che si comincia a fare dopo aver fatto delle misure e le modifiche al codice restano solo se le misure successive all'ottimizzazione dimostrano un reale guadagno.

Nel 2005 le mail che mi chiederanno lumi in proposito avranno come risposta un link al mio blog!

powered by IMHO

Bug di Analysis Services 2000 nell'uso di commenti in MDX

Ieri ho trovato un fastidiosissimo bug di Analysis Services 2000: se all'interno di un commento in un'espressione MDX si usano dei simboli come ', ", (, ) e probabilmente altri ancora, il parsing dell'espressione MDX può fallire. Ho messo una descrizione più completa e dei riferimenti a post nei newsgroup nel mio blog su SqlJunkies per spiegare meglio il problema, che affligge in particolare chi usa formule di custom rollup.

powered by IMHO

Garbage Collector e object pooling

Diverse volte ho letto articoli, blog e libri che cercano di mostrare tecniche di object pooling per migliorare le prestazioni del garbage collector. Quasi sempre sono stato un po' irritato dagli esempi perché erano troppo forzati e non vicini a uno scenario reale; in altre parole, difficilmente in una condizione reale la tecnica di object pooling si sarebbe dimostrata ugualmente efficace e, anzi, potrebbe essere controproducente. Esistono dei casi in cui tecniche simili danno dei vantaggi, ma sono decisamente delle eccezioni e non la regola.

Finalmente una voce autorevole dice la sua sull'argomento e chiarisce che il garbage collector spesso è la soluzione migliore anche da un punto di vista prestazionale. Rico Mariani dedica un post alla definizione dello scenario e un altro post in cui spiega la soluzione (in cui vince chi usa il garbage collector puro e semplice senza fare object pooling).

Chi ha già fatto delle misure in scenari reali sarà già arrivato a conclusioni simili, ma una conferma in più male non fa.

powered by IMHO

Libri e traduzioni: un problema di numeri e costi

Ho scritto un commento al post di Claudio Brotto su Libri e traduzioni ; credo che l'argomento possa essere di interesse generale e lo ripubblico anche nel mio blog.

Claudio si lamenta della qualità della traduzione dei libri di informatica in Italia. Avendo fatto sia il traduttore che il revisore tecnico che l'autore di libri, credo di avere qualche nozione sull'argomento.

Il problema più grande è di tipo economico. Il mercato italiano per i libri di informatica è troppo piccolo. Quando un editore acquista i diritti per la traduzione di un testo, sostiene poi una serie di costi fissi che deve ammortizzare con le vendite del libro. Questi costi includono la traduzione, l'impaginazione, gli impianti, a volte la copertina. Mediamente un titolo "normale" viene stampato in poche migliaia di copie (a volte meno di 2.000). Raramente si superano le 10.000 copie vendute, i casi che vanno oltre le 20.000 copie sono pochissimi e costituiscono veri e propri eventi. I numeri non si fanno poi con i libri "avanzati" ma con quelli base (testi destinati ai novizi più che agli esperti, insomma).

Ecco quindi che, paradossalmente, un libro tradotto con molte pagine costa di più che l'originale americano. Si tratta, semplicemente, di un problema di costi che non si riescono a ripartire su volumi di vendita significativi.

Per contenere i costi e avere tempi di traduzione veloci, poi, si ricorre spesso a società che fanno questo di mestiere e che, a loro volta, si avvalgono di una miriade di collaboratori che conoscono le lingue e si avvalgono di software che "automatizzano" parte della traduzione (individuano frasi ricorrenti e propongono la trauzione precedente); tali traduttori possono passare dalle istruzioni del videoregistratore al libro di Windows Internals nella stessa settimana. In teoria dovrebbe esserci un controllo qualitativo a valle, ma non sempre viene fatto rispettare (qui è l'editore quello che ci rimette di più, perché la faccia è la sua e lui la traduzione comunque l'ha pagata per buona).
Infine, metteteci dentro anche Microsoft. Esiste un glossario Microsoft per le traduzioni, per cui un termine viene tradotto in modo uniforme in tutti i prodotti. Mi sembra anche giusto. Peccato però che non si facciano le dovute eccezioni e così una "checkbox" diventa una "casella di selezione" e una combobox una "casella di scelta" (o è il contrario, non mi ricordo più). Sostituite in un libro di Windows Forms tutte le occorrenze di combo e checkbox ed ecco che il testo risulta incomprensibile. Fortunatamente a volte il codice di esempio (che non può essere tradotto) fa capire di che si tratta. Non avete bisogno di andare a prendere un libro: basta aprire l'help di un Visual Studio in italiano.

Per chiudere, è giusto citare le dovute eccezioni: la collana "La voce degli esperti" di Mondadori Informatica contiene titoli tradotti da professionisti dell'informatica. Personalmente ho tradotto "Introduzione a C# - seconda edizione" di Eric Gunnerson e conosco direttamente alcuni dei traduttori degli altri titolo della collana. In questi testi si usa la lingua "reale" degli informatici italiani, ma purtroppo stiamo parlando di una rosa di titoli non molto estesa che costituisce un'eccezione e non la regola nel panorama dei testi di informatica in Italia.

powered by IMHO

More Posts Next page »