January 2005 - Posts
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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 »