di Francesco Balena
 |
Fino a pochi anni fa per generare o modificare un file Word o Excel era necessario operare sul modello a oggetti della stessa applicazione (e quindi avere a disposizione una licenza di Office), oppure acquistare un componente di terze parti in grado di generare tali file. In entrambi i casi si tratta di opzioni che hanno un costo, e inoltre la prima opzione era improponibile per le applicazioni lato-server (che generano file da inviare ai browser sul client) per i problemi di scalabilità che comporta.
La soluzione è arrivata con Office 2007 e il suo formato Open XML, che permette quindi di salvare, rileggere, modificare e interrogare un file Word o Excel come se fosse un semplice file di testo XML. Se lavorate in .NET, alla fine si riduce a saper usare la classe XmlDocument per leggere/scrivere, conoscere la grammatica di XPath per le query, e poco altro. Quello che realmente occorre è comprendere la sintassi e le sottigliezze di Open XML, ma per quello da qualche tempo c'è un bel libro (in italiano!): Open XML Guida allo Sviluppo. L'autore Gianni Giaccagliani è una vecchia conoscenza per chi lavora in questo settore da tempo nonchè un mio amico dai tempi delle gloriose riviste BIT (che non esiste più già da un paio di decenni) e PC Magazine.
In questo agile libretto (250 pagine) Gianni introduce il DOM di Open XML e mostra come manipolarlo usando direttamente il VBA degli stessi Word o Excel, quindi il libro è alla portata anche di coloro che non hanno installato Visual Studio, anche se la conversione in VB.NET è immediata, tanto più se si utilizza VSTO. Ci sono esempi approfonditi sia con Word che Excel, e una buona introduzione a XPath, il tutto nello stile semplice e "fluido" di Gianni, che ben conoscono i suoi lettori (incluso il sottoscritto). Che volete di più?
|
di Marco Bellinaso
Da quando ho pubblicato lo Starter Kit TheBeerHouse -- il sito web sviluppato come esempio per il mio libro "ASP.NET 2.0 Website Programming" -- su CodePlex, il sorgente ha già avuto più di 50.000 download. Niente male direi, anche considerando che se dovessi fare una stima per i download fatti direttamente dal sito di Wrox da molti lettori, e quelli fatti da .Net2TheMax prima che creassi l'account su CodePlex, i download sarebbero almeno 60-65.000.
Il sito implementa un mini CMS, una sezione di e-commerce, newsletter, sondaggi, forum gestione account, feature di personalizzazione e localizzazione, e qualcos'altro. Quindi se sviluppate in ASP.NET 2.0 e non l'avete ancora scaricato, magari lo potreste troverare interessante, anche come punto di partenza per qualche vostro sito content-based.
Questo post però non è solo a scopo pubblicitario, ma anche e soprattutto un tentativo di coinvolgere qualcuno a collaborare e far crescere questo progetto, implementando nuove funzionalità come la ricerca, un modulo per il conteggio e l'analisi di accessi e pagine viste, una vera photo gallery (ora si possono pubblicare foto, ma sotto forma di articoli all'interno del CMS), e magari qualcos'altro. Se avete qualche idea e vi piacerebbe collaborare, contattatemi!
di Marco BellinasoGià, proprio così, qualche giorno fa nientemeno che Scott Guthrie ha pubblicato su Amazon una recensione a 5 stelle del mio libro, dicendo tra le altre cose:
"I am very impressed with this book, and have worked with a number of customers who have also found it extremely useful..." "The result is a very readable book that provides a great deal of context about how ASP.NET 2.0 works, and how the different features integrate together..." "I'd definitely recommend this book to anyone who understands the basics of how ASP.NET works already, and is looking for a good book to take them to the next level and really start to build applications with it." <clicca qui per l'intera recensione>
Non posso credere di aver ricevuto l'onore di tali parole da colui che è universalmente conosciuto come il padre di ASP.NET (e non è solo questo...Scott dirige anche i team di CLR, IIS, Atlas, WinForms, Compact Framework, Commerce Server, WPF, VWD...). Sembra anche che questa sia la prima recensione che Sctott ha scritto su Amazon, il che ai miei occhi fa diventare la cosa ancora più importante 
Quindi wow, grazie mille Scott, parole come le tue -- e quelle dei molti altri lettori che mi hanno contattato per esprimere il loro apprezzamento -- sono veramente la più grande soddisfazione dopo aver investito così tanto tempo ed energie a scrivere il libro!
di Marco Bellinaso
Al ritorno dalle vacanze ho avuto la graditissima sorpresa di scoprire che TheBeerHouse, il sito web che ho sviluppato come esempio per il libro "ASP.NET 2.0 Website Programming / Problem - Design - Solution" è stato ritenuto da Microsoft come degno di essere pubblicato sulla loro pagina ufficiale degli Starter Kit! Il link al download del codice sorgente punta a CodePlex: ho deciso di aprire li un account in modo da poter condividere fix e modifiche non appena correggo il codice in locale e faccio il check in nel loro sistema di source control.
Un'altra notizia che dovrebbe far parecchio piacere a molti lettori è che finalmente è disponibile anche una versione in VB.NET del codice! Il porting non è ufficialmente supportato, perchè eseguito da Darren J Kindberg, un lettore pieno di buona volontà che non potrò mai ringrazia abbastanza per l'impegno e il supporto dimostrato, anche nel forum ufficiale di Wrox. Buon divertimento 
di Francesco BalenaRiprendo un po’ a scrivere sul blog, approfittando di una mattina oziosa di vacanza. Lo spunto me lo offrono un paio di commenti al mio post precedente, che oramai data un mese e mezzo fa. (Forse tra qualche settimana vi svelerò a cosa ho lavorato in tutto questo tempo...)
Ogni tanto su questo blog e sui vari forum qualcuno si lamenta che i libri tecnici in italiano costano troppo, e si avanzano spesso ipotesi sulla presunta ingordigia degli editori italiani. Il ragionamento è che se un libro in originale costa, supponiamo, 50$ dovrebbe costare l’equivalente anche in italiano, ossia circa 40 euro, anzichè 50 o 60 euro come spesso accade.
Anche se suggestivo, questo ragionamento è un po’ troppo semplicistico e non tiene conto di quello che accade quando un editore italiano decide di tradurre un libro dall’inglese. Io non voglio fare il “difensore d’ufficio” di aziende come Mondadori o Apogeo, che proprio non hanno bisogno di qualcuno come me che le difenda, però credo sia giusto sgombrare il campo da tutta una serie di falsi miti, che evidentemente derivano dalla scarsa conoscenza dei meccanismi editoriali. Visto che lavore con case editrici da oltre vent’anni dovrei avere qualcosa di interessante da raccontare.
Prima di cominciare, ci tengo a precisare che questa “difesa d’ufficio” degli editori italiani per me è persino controproducente. Se devo dirla tutta, a me farebbe molto più comodo che i miei lettori comprassero direttamente i libri in inglese, per un semplice motivo: io ho un contratto con Microsoft Press e non con l’editore che traduce in italiano i miei libri (Mondadori, nella fattispecie), e per contratto il guadagno sulle copie in inglese è quasi doppio di quello sulle copie tradotte in altre lingue, italiano incluso. In altre parole: convincervi a comprare i libri in italiano va persino contro i miei interessi.
Allora, ragioniamo per assurdo e supponiamo che un editore italiano decida di tradurre un libro tecnico dall'inglese e di venderlo allo stesso prezzo dell'originale. Vediamo come se la caverebbe questo editore con evidenti tendenze suicide...
Il primo costo da sostenere sono i diritti di traduzione. Non ho modo di sapere a quanto ammontano questi diritti, ma di certo non sono irrisori. A titolo puramente di esempio, diciamo che per un libro di medio successo potrebbero essere sugli 6-8 mila euro. La cifra esatta dipende anche dal numero di copie vendute, e comunque questi dati non sono pubblici, quindi la mia è una stima ipotetica ma tutto sommato realistica.
A questo punto scatta il processo di traduzione. I costi di traduzione per un libro di 700 pagine costa non sono meno di 7-8mila euro, o anche più se si tratta di un argomento specialistico. Occorre poi correggere e impaginare le bozze, e sommando questi costi di editing ai costi di traduzione arriviamo a 10-12mila euro, solo per avere i file PDF pronti per la stampa.
I costi per la stampa sono quelli che pesano maggiormente in percentuale per le tirature piccole come quelle italiane. Quanto sono piccole le tirature in Italia? Non posso darvi i numeri esatti delle vendite dei miei libri, che non sarebbero indicativi per un discorso generale in quanto “viziati” dal fatto che io sono un autore italiano con un buon grado di visibilità in patria, però posso fornire qualche numero su cui riflettere.
Un libro di programmazione “mediamente di successo” vende nel mercato mondiale 25-30mila copie, e questo mercato comprende gli USA, il Canada, il Regno Unito e tutti gli altri paesi anglofoni, più tutti i paesi in cui comunque i libri tecnici non sono tradotti (ad esempio, i paesi scandinavi e i paesi dell’Europa dell’Est). È facile vedere che parliamo di un bacino di utenza almeno 20 volte maggiore di quello italiano. Anche abbondando, potremmo dire che la traduzione dello stesso libro “mediamente di successo” non dovrebbe vendere in Italia più di 2-3mila copie.
In realtà la situazione è persino peggiore di quanto ho descritto, poichè molti sviluppatori italiani preferiscono comunque comprare i libri in lingua originale, sia perchè non hanno errori di traduzione sia perchè sono disponibili alcuni mesi prima delle traduzioni. Una stima più attendibile è quindi non oltre le duemila copie per un libro di medio successo. Molti si stupiscono di questi volumi così piccoli, ma tenete presente che stiamo parlando di una nicchia molto specialistica: ad esempio, un libro su Windows o Office vende tipicamente molto più di tanto, anche perchè la maggior parte degli utenti finali proprio non ne vuole sapere di comprare i libri in lingua originale.
I costi di stampa per singola copia aumentano se il numero di copie stampate diminuisce, anche se non in modo proporzionale. Per una tiratura 10-15 volte inferiore i costi di stampa sono sicuramente almeno tre volte superiori. Davvero non conosco le cifre reali, ma mi stupirei se la stampa e la rilegatura di un libro di 700 pagine con una tiratura di 2mila copie e una copertina in cartoncino e a colori possa costare meno di 8-10 euro per copia. Occorre considerare, infatti, è che se anche un libro di successo venderà qualche migliaia di copie nel lungo periodo, inizialmente si stampano un numero inferiore di copie, per vedere come va in libreria e anche per ridurre i costi di magazzino (o forse credete che lo spazio in un magazzino sia gratuito?). Purtroppo, tirature inferiori significano costi per copia superiori, quindi 8-10 euro non è una stima irragionevole. Forse esagero, forse no. Se avessi tempo farei qualche indagine presso una tipografia, ma sono in vacanza e ho altro di meglio a cui pensare. E comunque non credo che qualche euro in meno cambierebbe la sostanza del ragionamento.
A questo punto il libro può essere spedito dalla tipografia al distributore, o meglio i distributori disseminati nelle varie regioni. Per fortuna questi costi di spedizione assommano a qualche frazione di euro per ciascuna copia, per cui possiamo trascurarli in questa analisi di massima.
Ovviamente, non tutti i 40 euro del prezzo di copertina vanno nelle casse dell’editore, perchè occorre considerare il guadagno delle librerie e dei distributori. Negli USA all’editore va il 52% del prezzo di copertina. In Italia non so bene, ma è ipotizzabile una percentuale simile. Allora siamo pronti a tirare le somme.
- 2000 copie a 40 euro l’una fanno 80mila euro lordi
- Il 52% di questa cifra lorda va all’editore, quindi 41.600 euro.
- Togliamo 8mila euro per i diritti di traduzione, e arriviamo a 33.600 euro.
- Sottraendo i costi di traduzione e impaginazione arriviamo a 21.600 euro.
- Ipotizzando 8 euro per la stampa di una copia, arriviamo a 16mila euro di costi di stampa, il che porta il margine per l’editore a circa 8.000 euro.
Per guadagnare questi 8.000 euro, l’editore deve mettere in moto un meccanismo complesso che richiede la presenza di numerose figure di alto profilo professionale, tra cui, i consulenti che decidono quali libri tradurre, gli uffici legali che stilano i contratti, i manager che tengono i contatti con la casa editrice americana, ecc. Oltre agli stipendi di queste persone, occorre considerare i costi della struttura e tutto il resto. Non ho neanche una vaga idea dell’ammontare di questi costi, ma di sicuro non sono trascurabili.
Quando il libro è finalmente stampato occorre provvedere alla sua distribuzione e alla promozione. Come forse potete immaginare, la pubblicità sulle riviste non viene regalata, e anche semplicemente gestire un sito e mandare una newsletter ha dei costi. Ma il costo principale è quello del personale umano, ad esempio gli agenti di vendita. Questi signori (di solito ve ne è uno per regione) girano costantemente per tutte le librerie della penisola, proponendo le novità e raccogliendo gli ordini per i libri che devono essere ancora stampati. Se queste persone non esistessero, nelle librerie trovereste soltanto i libri di Dan Brown, Grisham, e pochi altri, perchè pochi librai capiscono la differenza tra SQL Server e Paint, tanto per fare un esempio.
Attenzione, però, perchè i costi per l’editore non sono terminati. Infatti, i libri tecnici sono soggetti a veloce obsolescenza, quindi tutte le librerie prendono i libri tecnici in conto vendita, il che significa che in qualsiasi momento possono restituire all’editore le copie invendute. Il reso può essere richiesto anche dopo uno o due anni, e questo pesa come una spada di Damocle sui conti economici. Basta un reso del 20% per azzerare o quasi il margine che abbiamo ipotizzato per il nostro editore, perchè al mancato guadagno occorre considerare i costi di spedizione, i costi del macero e dello smaltimento. (Persino buttare via i libri costa...)
Se il 20% di reso vi sembra una stima esageratamente alta, considerate che la maggior parte delle riviste tecniche ha un reso in edicola intorno al 35-40 percento. (...e questo spiega perchè tutte le riviste inisitono così tanto per fare abbonare i loro lettori.) Del resto, basta andare in una qualsiasi libreria e contare il numero di copie impolverate di libri su Access 2000 o Visual Basic 6 per capire che si tratta di stime assolutamente ragionevoli.
Ancora: tenete presente che tutto il discorso fatto finora si riferisce a un libro “mediamente di successo”. In realtà, la stragrande maggioranza dei libri tecnici in inglese vende molto meno di quelle 30mila copie ipotizzate inizialmente, in particolare i libri su tecnologie di nicchia come SharePoint o BizTalk. Ad esempio, un libro su VB o C# “generico” vende anche il doppio di un libro su ASP.NET, che a sua volta vende due-tre volte più di un libro su Windows Forms o quattro-cinque volte più di un libro su ADO.NET.
Ultima considerazione: il nostro libro di esempio non ha un CD-ROM a corredo. Infatti, con un CD i costi salirebbero notevolmente, non solo per la creazione del CD vero e proprio ma anche per il fatto che i CD tendono a rompersi durante il trasporto o persino l’esposizione in libreria. Se un lettore trova un CD rotto o illeggibile, chiede il rimborso all’editore (e non al tipografo, al libraio o al trasportatore, che spesso sono i reali responsabili). La spedizione di un CD praticamente azzera il guadagno per quella particolare copia del libro. Per questi motivi, la presenza di un CD può fare levitare il prezzo di copertina anche di 4-5 euro, visto che occorre considerare il margine del 52% e dei libri restituiti destinati al macero.
Siamo arrivati alla fine del mio ragionamento, che è forzatamente approssimativo perchè si basa su alcuni dati non noti e di cui posso solo stimare il valore. Ma se vi armate di una calcolatrice, vedrete che anche diminuendo l’impatto di qualche voce dubbia – ad esempio i costi di traduzione e di stampa – la sostanza del ragionamento non cambia di molto.
La morale è semplice: i libri tecnici in italiano tradotti dall’inglese non potranno mai costare quanto le versioni originali. Forse nel futuro alcuni costi potranno essere eliminati o ridotti fortemente – ad esempio se si diffondesse il print on demand e si procedesse con la stampa di singole copie a costi bassissimi solo quando un acquirente prenota la sua copia via Internet – ma fino a quando le librerie rimarranno il principale mezzo di diffusione dei libri tecnici questa regola continuerà a valere. Quindi, o vi rassegnate a spedere qualche euro di più per le copie in italiano o vi decidete a imparare l’inglese, che sarebbe una decisione che avrebbe un impatto positivo per molti aspetti ben più importanti 
NOTA: Ho volutamente trascurato la possibilità di evitare i costi di stampa e saltare tutti i livelli della distribuzione pubblicando degli e-book scaricabili da Internet. Purtroppo, gli e-book hanno la simpatica (per il lettore) ma fastidiosa (per l’autore) caratteristica di essere facilmente duplicabili e scambiabili con gli amici e colleghi. Microsoft Press mi ha chiesto in passato di pubblicare degli e-book, ma mi sono sempre rifiutato, come si sono rifiutati praticamente tutti gli autori di una certa rilevanza. Forse le cose cambierebbero se esistesse un meccanismo anti-duplicazione sicuro e che allo stesso tempo non complichi la vita ai legittimi acquirenti, ma per il momento le cose stanno in questo modo, quindi gli e-book non sono una alternativa plausibile.
Se avete osservazioni da fare ma soprattutto se pensate che il ragionamento abbia qualche falla, fatevi sotto con i commenti.
di Francesco BalenaIl mio libro su C# è stato pubblicato oramai da qualche mese, ma solo ora sono riuscito a mettere da parte un po' di tempo per preparare la sua home page sul nostro sito americano e uploadare due capitoli in PDF, ovvero il capitolo 5 "Arrays and Collections" e il capitolo 10 "Custom Attributes". Dalla home page potete anche scaricare il sorgente di tutti gli esempi di codice e un file doc con gli errata. Occorre registrarsi al sito, ma la registrazione è gratuita.
di Francesco BalenaFinalmente ho trovato il tempo per controllare una a una tutte le segnalazioni dei lettori su errori tipografici riscontrati nel mio ultimo libro su Visual Basic. Il risultato è un nuovo documento di errata corrige, che potete scaricare dalla home page del libro. I numeri di pagina si riferiscono alla versione inglese del libro, ma i numeri di pagina nella versione italiana sono spesso identici o comunque molto vicini.
Per la comodità di chi ha già downloadato questo documento, ho marcato con "New" tutte le aggiunte recenti. Da notare che quasi tutte le correzioni ai sorgenti non impattano sul funzionamento del codice, ad eccezione di un fix che serve a correggere un errore nella routine Evaluate del capitolo sulle regular expression.
di Francesco Balena
|
Senza che me ne rendessi conto, da una decina di giorni è disponibile su Amazon, e quindi in tutte le librerie americane, il mio nuovo libro Programming Microsoft Visual C# 2005: The Base Class Library, l'ennesimo lunghissimo titolo per un libro di "sole" 600 pagine, di fatto il libro più piccolo dei sette che ho scritto per Microsoft Press.
Oltre ad essere il libro più corto è stato anche quello che ha richiesto meno tempo, in quanto i suoi 13 capitoli non sono che una "traduzione" in C# di altrettanti capitoli presi dal mio Programming Microsoft Visual Basic 2005: The Language, ovvero tutti i capitoli che hanno a che fare più con le classi del Framework che con il linguaggio C#. Ma non si tratta di una traduzione letterale, poichè sia il codice che il testo è stato rivisto a fondo per sfruttare al meglio le nuove feature di C# 2005. Ecco il sommario:
1. .NET Framework Basic Types 2. Object Lifetime 3. Interfaces 4. Generics 5. Arrays and Collections 6. Regular Expressions 7. Files, Directories, and Streams 8. Assemblies and Resources 9. Reflection 10. Custom Attributes 11. Threads 12. Object Serialization 13. PInvoke and COM Interop | Anche se il linguaggio C# non è il focus principale del libro, il capitolo 4 (oltre 40 pagine) contiene davvero tutto quello che vi serve sapere su questa nuova feature, mentre il capitolo 3 mostra come utilizzare gli iterators, e il capitolo 5 contiene numerosi esempi di anonymous methods, quindi il libro copre le tre principali novità della versione 2005 del linguaggio. Ma ovviamente la parte interessante è quella che riguarda la BCL, con numerosi esempi pratici su come utilizzare in pratica feature come reflection, regular expression, e custom attributes.
di Marco Bellinaso Proprio così, finalmente il mio libro (finito di scrivere ormai quasi 3 mesi fa!) è disponibile su Amazon per spedizione immediata, al bassissimo costo di 25,19$ (20€)...un ottimo prezzo direi, considerando che la versione precedente (un po' più breve e con un sito di esempio certamente meno professionale e completo di questa edizione) aveva un prezzo di copertina di 50$...
Ultimamente ho pubblicato sul mio blog in inglese degli estratti da alcuni capitoli, che vi elenco di seguito:
- An excerpt from Chapter 2: Enter the Master Page Model - An excerpt from Chapter 3: Caching Data for Better Performance - A 2nd excerpt from Chapter 3: Transaction Management - An excerpt from Chapter 4: Setting Up and Using User Profiles - An excerpt from Chapter 5: Final Touches - Friendly URLs with URL mappings - An excerpt from Chapter 7: Creating and Sending E-mails - An excerpt from Chapter 10: Developing Web Parts - An excerpt from Chapter 11: Using Page Level Resources
A breve pubblicherò anche l'ultimo estratto, riguardante il deployment del sito, e in particolare sulla precompilazione di pagine e codice, tramite gli strumenti built-in del framework e tramite l'add-in Web Deployment Projects.
NOTA1: una cosa che vorrei far notare riguardo questi estratti è che sono stati presi dalla prima parte della sezione Design dei capitoli, ovvero dove introduco le varie novità di ASP.NET 2.0 che servono per lo sviluppo di un certo modulo (membership, gestione articoli, e-commerce, sondaggi, newsletter ecc. ecc.) Ad essere completamente onesto io credo che questa sia la parte un po' più "tipica" e meno "speciale" del libro, perchè molte di queste informazioni si trovano anche in tanti altri libri, e in modo più dettagliato. Come dicevo, infatti, in ciascun capitolo ci sono solo una decina di pagine dedicate all'introduzione dei nuovi controlli e funzionalità...il resto del capitolo è la parte che ritengo decisamente più interessante, essendo dedicata al design e all'implementazione vera e propria, ed è quella che distingue questo libro dai classici reference (che ovviamente non ritengo assolutamente inutili, anzi sono un perfetto e necessario complento a questo libro, da leggere prima, durante e dopo). Le sezioni di Design e Solution però dovrebbero essere lette nella loro completezza per assumere un senso compiuto e riuscire veramente ad insegnare qualcosa, pertanto non avrebbe avuto un gran senso prendere da li degli estratti. Con questo non intendo sminuire il valore di quanto pubblicato, credo che quegli estratti abbiano il loro perchè, soprattutto per chi non conosce ancora le novità di ASP.NET 2.0 e vuole farsene una buona idea leggendo qualcosa di conciso e che va dritto al punto (non essendo per questo superficiale però); solo che non sono realmente rappresentativi del valore che credo il libro abbia.
NOTA2: per il momento Wrox non sembra intenzionata a fare una versione per VB.NET, come invece era stato fatto per la versione precedente. Almeno non inizialmente...ma immagino che potrebbero riconsiderare l'ipotesi se fossero tanti i lettori a richiederla. Quindi, se il libro vi interessa ma C# non è il vostro linguaggio e non siete disposti a leggere nient'altro che VB, fatelo presente a Wrox, o lasciate un commento a questo post.
NOTA3: per il momento non ci sarà un'edizione italiana.
di Marco BellinasoNegli ultimi tempi sono stato così occupato che il blog purtroppo è dovuto rimanere in fondo alla lista :-(. Oggi però ho trovato un paio d'ore per aggiornare sul sito americano la pagina del mio libro, e lo dovevo segnalare! Ci trovate una descrizione dettagliata capitolo per capitolo, la mia introduzione, e le foreword di Francesco Balena! Ma soprattutto potete scaricare l'intero sorgente ASP.NET 2.0 / C# del sito TheBeerHouse, usato come progetto di esempio per tutto il libro! Sul sito della Wrox ancora non c'è, ma sono stati così gentili da permettermi di pubblicarlo prima di loro Lo potete quindi scaricare, installare in locale, studiare, modificare ecc. ecc. Tutto gratis ovviamente, in perfetto stile Wrox.
Inoltre, nel blog inglese ho cominciato a pubblicare degli estratti presi dalla sezione Design di alcuni capitoli. Per ora ho pubblicato un post sulle master page, e un altro sul nuovo caching con dipendenze SQL (sia per SQL Server 2000 che 2005, con le dovute differenze). Nei prossimi tempi pubblicherò altri estratti riguardanti la gestione delle transazioni (con ADO.NET, con COM+ o SWC, o con il nuovo namespace System.Transactions), i profili, url remapping, invio di e-mail, webpart e altro ancora.
di Francesco BalenaQualche minuto fa ho caricato tutti gli esempi a corredo di Programming Microsoft Visual Basic 2005: The Language sulla home page del libro. E' uno zippone di 7.5M, che contiene migliaia di righe di codice riutilizzabile, accuratamente scritte, testate e ottimizzate a manina. Tra le tante cose che potete trovare:
- una classe VB che lavora con le frazioni
- un form base per semplificare il data entry
- una classe per il caching dei file di testo
- alcuni custom iterator per scrivere dei For Each migliori
- dozzine di esempi con i generics
- due valutatori di espressioni, il primo basato sui regex, il secondo implementato tramite compilazione on-the-fly
- una utlity per mostrare le statistiche di un progetto VB (è una demo per le regex)
- RegexTester, una utility stand-alone per aiutarvi a costruire, testare, e compilare le regular expression
- un esempio di custom provider per My.Settings
- un esempio di come intercettare qualsiasi evento da qualsiasi controllo su un form
- benchmark basati su attributi custom
- una completa infrastruttura per scrivere applicazioni Windows Forms estendibili via plug-in
- attributi e DLL per scrivere applicazioni N-tier data-centriche
- numerose macro per Visual Studio
- visualizer per mostrare il contenuto di file, regex, e immagini durante il debug
- .... e molto altro.
Sulla stessa pagina ho caricato un document di errata per gli errori trovati dopo che il libro è andato in stampa, e alcuni capitoli di esempio. Per accedere alla pagina occorre registrarsi.
Divertitevi con il codice ( ... e comprate il libro se lo trovate interessante! )
di Francesco Balena
|
Ottime notizie dagli USA per Giuseppe Dimauro e il sottoscritto.
Il libro Practical Guidelines and Best Practices for Visual Basic and Visual C# Developers ha vinto un Excellence Award dalla Society of Technical Communication, un prestigioso ente che ogni anno individua i migliori libri, articoli, siti, e courseware nell'ambito della editoria tecnica internazionale. Non solo l'editoria che riguarda la programmazione o i computer, ma l'editoria tecnica in generale. Infatti, tra i premiati ci sono solo una decina pubblicazioni che hanno a che fare con il software. Il nostro è l'unico libro di Microsoft Press ad aver vinto il premio, quindi abbiamo di che essere soddisfatti. 
E' un riconoscimento davvero importante, e mi fa particolarmente piacere perchè si tratta del primo (e unico) libro che ho scritto al di fuori della serie "Programming Visual Basic" e di un libro con una impostazione molto originale, la prima e attualmente l'unica raccolta organica di guideline per sviluppatori .NET in circolazione.
Una nota a margine:
La soddisfazione è ancora maggiore se penso al fatto che questo è stato l'unico mio libro ad avere avuto una recensione davvero negativo, sul blog di un farneticante Alex Papadimoulis, che ha pure postato le sue stupidaggini su Amazon. (Se vi interessa la storia, trovate le mie risposte su Amazon.) E approfitto della occasione per ringraziare Stefano Demiliani, Luca Minudel, Adrian Florea, e Andrea Adami, che hanno dedicato qualche minuto del loro tempo per sottolineare la faziosità di quelle affermazioni.
La cosa simpatica è che alcuni lettori mi hanno scritto (e lo hanno dichiarato su Amazon) per farmi sapere di essere stati spinti all'acquisto del libro proprio dalla recensione negativa del nostro Alex. Per fortuna non tutti scambiano per "autorevolezza" la furia compulsiva con cui alcuni blogger senza curriculum degni di nota inondano la rete delle loro opinioni. |
di Francesco BalenaFinalmente il mio ultimo librone è fisicamente disponibile su Amazon, e in un solo giorno è risalito di 8 mila posizioni in classifica: al momento in cui scrivo è alla posizione 1171, che è un ottimo piazzamento. Vi ricordo che sono disponibili altre informazioni sul libro, incluso un paio di capitoli di esempio in PDF, sulla home page che gestisco sul sito americano di dot-net-2-the-max.
Speriamo che anche l'analogo libro su C# e le classi base del Framework, di cui in questi giorni sto completando la revisione, abbia eguale fortuna...
Nel frattempo, il mio ultimo quizzettone è ancora insoluto, cosa insolita (ma non troppo, visto che questa volta era davvero tosto). Magari un aiutino ve lo posso dare: la mia soluzione in otto istruzioni si basa sulle regular expression e appare proprio nel capitolo sulle regex del libro in questione.
di Francesco BalenaTra qualche giorno dovrebbe uscire in America il mio librone su VB2005, così sono andato a cercare la sua home page su Amazon, scoprendo con grande sorpresa che il suo Sale Rank è 6,974 e che ieri era addirittura 5,414. Per chi non lo sapesse, il sales rank di Amazon indica la posizione nella classifica dei libri più venduti. Considerando che questa classifica include anche romanzi come Da Vinci Code, i libri di Stephen King e altri di quel livello, e considerando appunto che il libro non è ancora uscito, è un risultato di tutto rispetto e fa ben sperare per il successo del librone a cui ho dedicato oltre sei mesi di lavoro.
Ma la cosa ancora più interessante dal mio punto di vista è che il mio Programming è il attualmente quarto libro più venduto su Visual Basic, segno che molti lo stanno comprando "a scatola chiusa" Nei primi 50 libri in questa classifica, è l'unico libro non ancora pubblicato. Per la cronaca, il mio Programming VB.NET 2003 è al 12° posto in classifica, il che non è male per un libro di 2.5 anni di vita...
di Francesco BalenaSe potessi fare una survey istantanea, proverei a fare le seguenti due domande:
- Il programma che usate più frequentemente è Visual Studio?
- Avete mai usato le regular expression con il comando Find di Visual Studio?
Scommetterei che l'80% di voi risponderebbe SI alla prima domanda, ma che il 99% risponderebbe NO alla domanda successiva. Il che è alquanto bizzarro: stiamo parlando di una delle feature più potenzialmente utili dell'IDE eppure pochissimi la utilizzano o sanno addirittura che esiste.
Il vero problema è che la sintassi delle regular expression di Visual Studio è completamente differente da quella della classe Regex, quindi per usare questa feature occorrerebbe imparare un altro dialetto per le regular expression, e questo è troppo per la maggior parte degli sviluppatori. Microsoft dovrebbe usare le regex standard anche per questo comando: potrebbero farlo facilmente e in poco tempo, e senza creare problemi di compatibilità con i progetti esistenti.
In attesa che Microsoft si decida a fare questo piccola-grande innovazione, potete divertirvi con quello che avete a disposizione. Ecco alcuni esempi, tratti dal mio nuovo libro Programming Microsoft Visual Basic 2005: The Language:
:i = :z Cerca nel codice le assegnazioni di un intero a una variabile. (:i sta per un qualsiasi identificativo, :z rappresenta una costante intera). In VB (ma non in C#) trova però anche dei false match, quando una espressione contiene un operatore di uguaglianza.
:i = :q Cerca le assignazioni di una costante stringa (:q) a una variabile.
(Dim|Private|Public) :i As String Cerca le dichiarazioni di variabili e field di tipo stringa (solo VB). E' facile adattarla ad altri tipi di dati.
Dim <(:Lu(:Ll)*)+> As Cerca le dichiarazioni di variabili VB locali che usano un nome in PascalCase e che quindi violano le coding guideline di Microsoft (le variabli locali dovrebbero essere in camelCase)
^:b*'.+\n Cerca le righe di commento in VB, ossia le righe che cominciano con apostrofo. (Non considera la keyword REM.) Sostituendo l'apostrofo con // si può usare questo pattern anche in C#
Dim {:i} As (.|\n)#<\1> Evidenzia la porzione di codice tra la dichiarazione di una variabile locale e la prima occorrenza della variabile nel codice. Ripetendo questa ricerca in modo da matchare tutte le variabili locali in un metodo, si puo' controllare se vale la pena spostare la dichiarazione della variabile in modo da avvicinarla al suo primo utilizzo nel codice. (Vedi l'effetto in figura)

di Marco BellinasoHo appena pubblicato qui la versione aggiornata e feature-complete di TheBeerHouse, il sito di esempio per il libro ASP.NET Website Programming di cui ho parlato nell'ultimo post. L'ultima parte è stata implementare il modulo di commercio elettronico. Anche qui non ho voluto fare un esempio sempliciotto, ma ho inserito il supporto per categorie, stati dell'ordine, metodi di spedizione e valute multiple, vari attributi per i prodotti (percentuale di sconto, descrizioni formattate in HTML, immagine piccola e grande, elementi in magazzino ecc.), rating da parte dell'utente, shopping cart persistente anche per utenti anonimi (il login è richiesto solo in fase di completamento dell'ordine), storico ordini personali per controllarne lo stato, pagamento real-time con PayPal, ricerca e amministrazione completa degli ordini da parte di specifici utenti, gestione della disponibilità dei prodotti, e altro ancora.
L'implementazione di questo modulo ha richiesto 4 giorni di lavoro full-time (non proprio 8 ore al giorno...), che ritengo essere abbastanza pochi...soprattutto considerando che comunque non sono stati utilizzati DataSet/DataAdapter e tutti gli aiuti del designer di VS, ma è anche stato sviluppato un completo wrapping dei dati tramite classi DAL e BLL. Dove ASP.NET 2.0 veramente ha aiutato è stato nella gestione della UI però (oltre che nei servizi tipo Membership e Profile, che erano già stati configurati a dovere in precedenza, e che quindi qui non considero): sviluppare tutte le pagine dell'amministrazione, del catalogo e dello shpping cart avrebbero richiesto più di 2 giorni in ASP.NET, senza l'aiuto di controlli come GridView/DetailsView e l'ObjectDataSource di accompagnamento, che riducono drasticamente il codice C# nelle classi di code-beside. Non riesco neanche a pensare poi al confronto con ASP / PHP (che pure molti usando ancora per applicazioni nuove cominciate da zero).
Tirando qualche somma, il progetto completo è composto da 14 tabelle di DB (oltre a quelle usate da ASP.NET ovviamente), 98 stored procedure che incapsulano il 99% del codice SQL necessario, circa 130 classi C# per un totale di circa 15.000 righe, 50 pagine .aspx (di cui 20 di back-end, per amministrare praticamente tutto), 13 user control, 1 master page e 2 temi interscambiabili anche a runtime. Dal momento che ho dovuto lavorare parecchio in fretta è probabile che in giro siano rimasti dei bug...ed è per questo che rinnovo l'invito a provare il sito online, in attesa di poter scaricare tutto il codice e di provarlo in locale. Ora passerò i prossimi 4 gionri a scrivere il capitolo...ormai stò cominciando a pensare che potrei riuscire a sopravvivere 
Dato che mi è stato chiesto privatamente da più di qualcuno, dico anche qui che il libro in inglese dovrebbe essere disponibile a febbraio o giù di li. Per la versione italiana non so ancora se e quando...
di Francesco BalenaCome un attento lettore ha notato (e ha fatto notare in un commento al mio precedente post), nella home page del mio libro Programming Microsoft Visual Basic 2005: The Language, spiego che il libro si limita al linguaggio e NON copre argomenti come Windows Forms, ADO.NET, o ASP.NET, rimandando a libri specializzati su questi argomenti. La domanda è quindi: ci saranno altri libri della serie "Programming VB" ?
Anche se le trattative con Microsoft Press sono ancora in corso, a questo punto la risposta più probabile è che, in effetti, non ci saranno altri libri in questa serie, perlomeno non a cura del sottoscritto. E' stata una decisione davvero molto difficile, anche perchè tutti i miei libri della serie "Programming VB" sono stati un successo dal punto di vista sia commerciale che di immagine. Però ero pronto a un cambiamento di rotta e avevo voglia di sperimentare cose nuove.
Sono completamente d'accordo con quello che molti miei colleghi e amici americani affermano, ossia che non si scrivono i libri con l'obbiettivo di fare soldi. Però la mia esperienza è che se i libri sono scritti bene e affrontano argomenti davvero importanti e vasti, si vendono tanto bene da rendere l'impresa economicamente interessante. Ovviamente, dipende tutto da quante copie si vendono. Ad esempio, Programming VB6 è di gran lunga il libro su VB6 più venduto e dopo sei anni continua a vendere in maniera sorprendente: solo in Italia ha venduto oltre 60mila copie (sommando la versione completa e quella pocket), praticamente quanto un romanzo di medio successo e di gran lunga più di qualsiasi altro libro di programmazione. Da quello che so "ufficiosamente", Programming VB.NET è invece "soltanto" il secondo libro più venduto di Microsoft Press tra i titoli per programmatori, dopo il mitico testo di Jeffrey Richter. Tutti questi libri sono stati tra i "top ten" di Amazon per mesi, e scusate se è poco 
Insomma, se ho deciso di abbandonare la serie non è certo perchè i libri non rendano abbastanza. Anzi. La spiegazione è un po' più articolata e penso sia interessante soprattutto per coloro che non si rendono conto di quanto lavoro c'è dietro un libro acquistato per poche decine di euro.
Quando mi chiedono il "segreto" del successo dei miei libri, la mia risposta è semplice. A differenza di molti autori americani, che scrivono libri tanto per farsi un curriculum da spendere in altro modo - tipicamente come consulenti o insegnanti - io ho sempre considerato i miei libri come veri e propri prodotti, da curare in ogni dettaglio, prima durante e dopo la fase di scrittura. Prima perchè cerco di trovare aree inesplorate da altri autori. Durante perchè passo ore e ore a cercare gli esempi più adatti per spiegare i concetti. Dopo perchè offro la massima assistenza possibile ai lettori (e questo blog ne è una prova indiretta). Ecco perchè ciascun libro della serie mi ha tenuto impegnato per non meno di 9 mesi. E se mi si chiede come mai serve tanto tempo, la risposta è che un libro - a differenza di un software - non può essere corretto in seguito con patch e nuove versioni: un libro deve essere "perfetto" (per quanto possibile) fin dalla prima edizione, altrimenti si sparge la notizia che è inaffidabile e non lo compra più nessuno.
Dopo sei libri con Microsoft Press e una dozzina di libri con Mondadori, sono arrivato al punto che anche un lavoro bellissimo come scrivere un libro non mi soddisfa più come un tempo. Scrivere un libro costa una enorme fatica, persino più che scrivere un programma complesso. Ad esempio, un pezzo di codice si scrive e si testa, e se va bene non lo si tocca più. Al contrario, io ho dovuto rileggere ogni pagina di ciascuno dei miei libri non meno di 5 volte o 6. La parte creativa di questo lavoro è significativa, ma è comunque una frazione del tempo che si perde a ricontrollare tutti i dettagli.
Il secondo motivo per cui ho deciso di non estendere la serie "Programming VB" con altri titoli è che oramai gli sviluppatori .NET, per la maggior parte, si sono evoluti e specializzati a seconda delle loro necessità e inclinazioni. Ad esempio, conosco molti programmatori ASP.NET che non sanno neanche come è fatto un Windows Forms, e viceversa. Difficilmente questi sviluppatori leggerebbero un libro che tratta, in qualche centinaio di pagine, tutto quello che si può fare con VB. Molto più probabilmente, comprerebbero un testo specializzato nella propria area di interesse. Certo, potrei scrivere anche io un libro solo su Windows Forms (che mi interessa maggiormente di ASP.NET), però arriverebbe molto tardi nelle librerie, quando oramai i giochi sono fatti e magari già si comincia a parlare della prossima versione di Visual Studio. Sarebbe un piccolo suicidio editoriale.
Invece di scrivere altri libri "a 360 gradi", ho deciso di focalizzare l'interesse sulle cose che conosco meglio, ossia il linguaggio, le tecniche di programmazione a oggetti, l'ottimizzazione del codice e gli internals del .NET Framework. Proprio in questi giorni sto completando il mio successivo (e ultimo, per il momento) libro per Microsoft Press, dal titolo provvisorio Programming Microsoft Visual C#: The Base Class Library, che è poi la versione C# della seconda parte del librone su VB2005. Posterò a breve i dettagli sul blog.
Dopo questo libro mi fermerò per un po' e potrò dedicarmi a quello che, dopo oltre 25 anni, continua ad essere la cosa che mi piace di più: scrivere codice. Con Code Architects abbiamo tanti progetti in cantiere, ad esempio CodeWall.NET, che al momento mi intrigano molto più di fare un ennesimo libro.
di Francesco Balena
 |
In una settimana o due il mio nuovo libro Programming Microsoft Visual Basic 2005: The Language sarà disponibile su Amazon e altri negozi online.
Attualmente Mondadori è a buon punto nella traduzione in italiano dei file .doc, affidata anche questa (come i miei libri più recenti) a Natale Fino, che molti di voi conosceranno come uno dei soci di Infomedia. La versione in italiano dovrebbe essere disponibile entro febbraio.
Nel frattempo, potete avere un assaggio di quello che potrete trovare nel libro leggendo due capitoli (in inglese): il capitolo 11, "Generics", e il capitolo 18, "Reflection". Per leggere i due capitoli occorre essere utenti registrati della versione US del nostro sito dotnet2themax. |
di Francesco Balena
 |
Nel mio precedente post annunciavo il lancio ufficiale di dotnet2themax.com, la versione in lingua inglese di questo sito e spiegavo che in linea di massima i due siti avrebbero ospitato molti articoli ma non sarebbero stati uno la traduzione dell'altro. In particolare, il sito punto-com ospiterà la home page dei nostri libri e dei nostri prodotti.
Per inaugurare in bellezza, la prima cosa che ho messo online è la lista di 700+ best practice per applicazioni .NET. Si tratta di un documento Word di oltre 30 pagine che riassume di tutte le regole contenuto nel libro cho ho scritto insieme a Giuseppe Dimauro, ovvero Practical Guidelines and Best Practices for Microsoft Visual Basic .NET and Visual C# Developers. Il documento è formattato come una checklist, in modo da poter "spuntare" i vari elementi quando si esegue il code review di un progetto particolarmente complesso. Noi lo usiamo regolarmente per i progetti interni e spero che lo troviate anche voi utile. Se poi lo troverete davvero utile, potete sempre comprare il libro per trovare esempi e tutto il resto. 
Oltre alla lista delle guideline, sul nuovo sito americano è disponibile il codice sorgente degli esempi del libro e ben tre capitoli del libro: il capitolo 6, "Types", il capitolo 23, "Memory Usage", e il capitolo 31, "Serviced Components." I capitoli sono in formato PDF e pronti ad essere stampati. E' la prima volta che questo materiale è disponibile online.
Sul sito sono disponibili altri capitoli mai apparsi prima online, tratti dal mio Programming Microsoft Visual Basic .NET 2003, ovvero il capitolo 18, "Windows Forms Custom Controls.", il capitolo 12, "Regular Expressions", e il capitolo 21, "ADO.NET in Disconnected Mode" che era già disponibile sul sito MSPress. Si tratta di oltre 100 pagine di reference che continua ad essere valido anche per VB2005 e .NET 2.0, in particolare nel caso delle regular expression.
NOTA: Per accedere a questi contenuti occorre registrarsi, con nome e email, e iscriversi alla newsletter del sito. Se poi volete davvero farci un piccolo regalo, dedicato un paio di minuti per rispondere alle domande del nostro questionario, che ci permette di capire davvero qual è il nostro pubblico. Noi in compenso vi promettiamo solennemente (e ovviamente) che non faremo mai spamming e che useremo la newsletter (che ha una cadenza mensile) solo per comunicare nuove iniziative e prodotti che vi possono davvero interessare. |
di Francesco BalenaCome anticipavo in un precedente post, ecco il sommario definitivo del librone. Anzi del "libretto", visto che con solo 800 pagine è decisamente al di sotto dei miei standard
Part I : The Basics 1. Introducing the .NET Framework (30 pag.): una veloce carrellata dei concetti più importanti della programmazione per .NET 2. Basic Language Concepts (64 pag.): moduli, classi, variabili, array, operatori, ecc. con il minimo che serve sapere sulla ereditarietà e gli attributi per comprendere i capitoli che seguono prima del cap. 8 e 19. 3. Control Flow and Error Handling (36 pag.): istruzioni base come If, Select, For, For Each, ecc. e gestione degli errori, con numerose tecniche poco note per migliorare l'efficienza del codice e il proprio stile di programmazione. 4. Using Visual Studio 2005 (50 pag.): le tantissime novità dell'IDE e anche molte vecchie feature che non tutti conoscono; come scrivere un code snippet per VS2005, i template, le funzioni di refactoring, e soprattutto un breve ma "succoso" tutorial sulle macro. 5. Debugging and Testing (46 pag.): breakpoint e tracepoint, data tip, scrivere un visualizer, le funzioni di trace e relativi trace listeners (incluso custom listeners), benchmark e profiling, unit testing e code coverage, ecc.
Part II : Object-Oriented Programming 6. Class Fundamentals (36 pag.): la "solita storia" su classi, metodi, proprietà, ecc. ma anche le nuove partial class e l'overloading degli operatori, il tutto condito da alcune tecniche di programmazione meno diffuse. 7. Delegates and Events (24 pag.): un capitolo piccolo con numerosi dettagli su come sfruttare al meglio, nei programmi "reali", queste due feature di VB, incluso i nuovi eventi custom 8. Inheritance (32 pag.): l'ereditarietà spiegata come meglio non potrei, inclusa l'ereditarietà visuale dei form, con numerosi esempi reali. 9. Object Lifetime (26 pag.): tutto quello che potreste voler sapere su garbage collection, Dispose e Finalize, weak reference, generation, object resurrection, e altre tecniche in grado di moltiplicare le prestazioni delle applicazioni .NET che usano (male) la memoria. 10. Interfaces (26 pag.): costruire una interfaccia custom e soprattutto usare al meglio quelle che fornisce .NET, incluso IComparer e IEnumerable. 11. Generics (30 pag.): metà di quello che c'è da sapere su questa grande feature di .NET 2.0 (l'altra metà nel capitolo 13), incluso constraints e nullable types e soprattutto tanti esempi e tecniche di programmazione basate sui generics
Part III : Working with the .NET Framework 12. .NET Basic Types (44 pag.): lavorare al meglio con stringhe, numeri e date, incluso alcune piccole/grandi novità introdotte con .NET 2.0 13. Arrays and Collections (48 pag.): array, jagged array, collection "tradizionali" e collection generics, con tanti piccoli tricks in grado di ridurre la quantità di codice a aumentare le prestazioni. 14. Regular Expressions (40 pag.): tutta la sintassi ma anche tantissimi esempi pratici, su come validare i dati, eseguire il parsing di file di testo e persino del codice. Se non conoscete le regex vi perdete innumerevoli possibilità di scrivere codice più compatto e veloce... 15. Files and Streams (38 pag.): una carrellata sui tipi in System.IO e le nuove (tante) feature in .NET 2.0, tra cui il supporto per ACL e la classe TextFieldParser. 16. The My Namespace (40 pag.): come usare questa feature VB-only per scrivere codice in modo più semplice, ma anche come estendere il namespace My a proprio piacimento 17. Assemblies and Resources (44 pag.): nonostante la loro importanza, le risorse (localizzabili o meno) sono usate poco e male dalla maggioranza dei programmatori; il capitolo include anche una completa descrizione delle nuove importantissime feature di NGEN
Parti IV : Advanced Topics 18. Reflection (54 pag.): su reflection c'è tantissimo da dire, mi viene quasi voglia di scriverci un libro. Tra gli esempi ce n'è uno che genera codice "al volo", uno scheduler di azioni (con tanto di undo), e un comparer universale. 19. Custom Attributes (42 pag.): contiene alcuni esempi anche complessi di come un custom attribute può semplificare i propri programmi, ad es. per creare plug-in per Windows Forms e un framework per applicazioni n-tier. 20. Threads (48 pag.): l'oggetto Thread, i delegate asincroni, il thread pool, l'istruzione SyncLock, tutte le classi per la sincronizzazione, incluso i nuovi Semaphore, i problemi del multithreading nella applicazioni Windows Forms. Insomma, come scrivere applicazioni che usano thread multipli senza pentirsi di averci provato... 21. Object Serialization (30 pag.): serializzazione binaria, la serializazzione version-tolerant di .NET 2.0, i nuovi attributi per la serializzazione, serializzazione custom, i serialization surrogate, l'interfaccia IObjectReference, e altro ancora
Appendix A: Migrating from Visual Basic 6 (24 pag.) a beneficio di chi arriva a VB2005 direttamente da VB6, un riassunto di tutte differenze tra i due linguaggi e dei controlli per la interfaccia utente (ovviamente solo WinForm, visto che in VB6 non esiste un analogo di asp.net).
I numeri delle pagine in ciascun capitolo sono ovviamente indicativi. Per queste stime ho costruito un foglio Excel che calcola il numero stimato di pagine partendo dalla dimensione dei file word, il numero di tabelle e figure, ecc.
La cifra caratteristica del libro è che, a dispetto del titolo, non è un semplice reference sul Visual Basic 2005. O meglio, oltre ad essere un completissimo reference, è un vero e proprio manuale di tecniche di programmazione basate sulle feature sia del linguaggio che del .NET Framework, tra cui i generics, multi-threading, reflection, custom attribute, serializzazione, delegate, regular expression, ed altro ancora. Il tutto con un occhio alla flessibilità e alla robustezza del codice, e ovviamente alla sua efficienza. Non credo di esagerare nel dire che non ho mai trovato qualcosa del genere in giro e che ho davvero scritto il libro che ho sempre desiderato scrivere, che rende finalmente giustizia a Visual Basic e alle feature di basso livello di .NET più in generale.
E' stato un bel tour de force, visto che ci lavoro da Maggio, estate compresa. Al momento sto completando gli ultimi capitoli, poi farò un'ultima revisione con la RTM per controllare che non ci siano sorprese, visto che tra Beta 2 e RC ce ne sono state un bel po'. (Un consiglio interessato: non fidatevi dei libri su .NET 2.0 che trovate in libreria a novembre, non possono essere aggiornati neanche alla RC, figuriamoci al prodotto finale...)
Poi finalmente si va in stampa! Se tutto va bene, dovrebbe essere nelle librerie americane a Dicembre o i primi di Gennaio. Ottimo regalo da chiedere a Babbo Natale, o al più tardi alla Befana 
di Francesco BalenaUno dei segreti di un buon libro tecnico è preparare il miglior sommario possibile, che comprenda tutti gli argomenti che ci si aspetta che il libro debba coprire e soprattutto che permetta di evitare i cosiddetti forward reference, ossia la necessità di fare riferimento ad argomenti che sono trattati nei capitoli successivi a quello corrente. I capitoli devono essere ben bilanciati come numero di pagine e avere un approccio omogeneo. A volte un sommario fatto male pregiudica l'intero libro. Chi non ha mai scritto un libro tende a sottovalutare fortemente questo aspetto.
La prima volta che ho scritto un libro in inglese è stato nel '96 come coautore di un libro per QUE, intitolato Using Visual Basic 5 Platinum Edition, uno di quei libroni di oltre mille pagine dove la maggioranza degli autori fa due o tre capitoli, mentre un autore principale provvede alla stesura del sommario e si occupa della coerenza del tutto. Uno dei capitoli che mi era stato assegnato era sugli add-in, ma la cosa assurda era che nel TOC (ovvero Table Of Contents, il sommario appunto) il capitolo sugli add-in precedeva - e di parecchio - quello sui componenti COM. La cosa era ridicola, in quanto per scrivere un add-in in VB5 (come del resto in VB.NET) occorre saper scrivere un componente COM, e lo feci notare al responsabile. Quel particolare errore fu corretto ma il libro usci con tante altre assurdità e non è un caso che non citi mai questo libro nel mio curriculum La cosa positiva è che quell'episodio mi convinse ancor più che avrei dovuto scrivere un libro da solo, per avere il controllo completo sui contenuti. Ed è così che venne l'idea di proporre un libro tutto mio a Microsoft Press, che è stata la cosa più intelligente che ho fatto in tutta la mia carriera...
Organizzare il sommario di Programming Visual Basic 6 fu un compito davvero semplice, perchè il VB "classico" si era evoluto nel corso degli anni, partendo dai primi semplici controlli di VB1 fino ad arrivare al supporto delle classi, poi dei componenti COM, poi di ADO per l'accesso ai dati, e così via. Quindi nel TOC era sufficiente, in un certo senso, mantenere l'ordine storico con cui le varie feature erano state aggiunte al linguaggio per presentare gli argomenti in modo naturale e senza contraddizioni.
I problemi sono arrivati quando ho dovuto preparare il sommario di Programming Visual Basic .NET, perchè in .NET ci sono degli argomenti occorre assolutamente conoscere fin dai primi capitoli e che però non possono essere trattati per primi: penso ad esempio alla ereditarietà, alle interfacce, al trattamento delle eccezioni, alla conoscenza delle classi più importanti del Framework, e così via. E' praticamente impossibile scrivere un libro su un linguaggio .NET che sia buon reference - e quindi copra in ogni capitolo tutto quello che c'è da dire su quel determinato argomento - e allo stesso tempo non contenga troppi "salti logici" e spiegazioni incomplete.
Anche se scrivere il sommario "perfetto" è impossibile, occorre comunque sforzarsi di farlo nei migliore dei modi. Ero già a metà della stesura del mio primo libro su VB.NET quando decisi che il TOC che avevo usato fino a quel momento non andava bene, quindi fermai tutto e riorganizzai tutto il materiale prodotto fino a quel momento (ben 800 pagine!). Ci vollero due settimane a spostare pezzi di testo da una parte all'alttra, a rinumerare figure e cross-reference, ecc., ma alla fine ero davvero soddisfatto del risultato. Mi piace pensare che la cosa migliore del mio librone su VB.NET è proprio il sommario. Una prova indiretta di ciò è che quando ho poi scritto Programming Visual Basic .NET 2003 non ho dovuto ritoccare nulla della struttura esistente: ho semplicemente scritto cinque nuovi capitoli e li ho messi in coda a quelli esistenti.
I problemi si sono invece ripresentati in questi mesi per il mio prossimo libro, Programming Visual Basic 2005: The Language and .NET Framework Base Classes (il titolo è provvisorio). A differenza dei precedenti, questo libro NON copre tutti gli aspetti del linguaggio, e in particolare non copre Windows Forms, ASP.NET e ADO.NET che saranno oggetto del secondo volume. Per questo motivo preparare un "buon" sommario è stato ancora più complicato e ha comportato numerose modifiche in corso d'opera. L'ultima è stata di un paio di giorni fa, in pratica a libro completato, quando ho deciso di spezzare un capitolo in due, una modifica che ha ovviamente comportato la rinumerazione di tutti i capitoli successivi, ma anche la rinumerazione delle figure e dei cross-reference. Una giornata di lavoro persa per qualcosa di cui nessuno si accorgerà mai! Di positivo c'è che finalmente adesso il sommario è davvero de-fi-ni-ti-vo e lo pubblicherò in un prossimo post.
di Enrico SabbadinHo finito di leggere un libro che mi ha consigliato Eugenio LaMesa “Alla ricerca della stupidità: 20 anni di disastri hi-tech”. Molto bello, lo consiglio a tutti. Una delle cose che mi ha più colpito è stata l’intervista ad un certo Joel Spolsky che è stato tra l’altro Program Manager di Excel ed altre cosette del genere. Vi riporto la parte dell’intervista che mi ha fatto molto pensare, mi ha colpito come un fulmine a ciel sereno. SoftwareMarketSolution: Joel qual è il più grande errore che possa fare un’azienda produttrice di software? Joel Spolsky: Decidere di riscrivere da zero il codice di un prodotto basandosi sulla solita teoria che tutto quel codice è un casino, è tendenzialemente bacato ed è ingestibile e che, di conseguenza, va completamente ripensato e riscritto. SMS: Uh, e cosa c’è di sbagliato in questo ? JS: Perchè non è quasi mai vero ... Secondo me questo accade perchè è molto più difficile leggere il codice piuttosto che scriverlo. Un programmatore arriverà sul punto di piangere per una funzione che secondo lui è un casino. Si tratta di una funzione molto semplice per aprire una finestra, ma per qualche motivo c’è bisogno di due pagine di codice, di tutte quelle parentesi e freccette delle quali nessuno capisce niente, per farla funzionare. OK TE LO DICO IO A COSA SERVE TUTTA QUELLA ROBA. Si tratta di bug-fixing. Un pezzo serve per risolvere un baco che tizio ha individuato quando ha provato a installare il prodotto su un computer che non aveva IE. Un altro pezzo serve a fixare un baco che capita quando il sistema non ha sufficiente memoria. Un altro pezzo serve per fixare un baco che capita quando il file si trova sul floppy disc e l’utente lo tira fuori per errore metre il file è ancora aperto. Tutte queste cose sono certamente orribili a vedersi ma fanno si che il codice possa funzionare anche su windows 95. Se decidi di buttare quella funzione e di riscriverla da zero, butti via tutta quest’esperienza, anni di lavoro.
Mio commento : Come si può fare frenare i programmatori dalla continua tentazione di riscrivere il codice di altri? Come si può fare evitare che i capi progetto tecnici vadano dal management a dire che bisogna riscrivere tutto il prodotto? COMMENTATE IL CODICE !!! così chi lo vedrà capirà perchè ci sono quelle venti righe un pò contorte invece che quella singola riga che sembra essere sufficiente (che poi a volte capita anche che chi legge il vostro codice e non ne capisce niente siete sempre voi qualche mese dopo). Ogni mattina prima di cominciare a programmare ripetete come un mantra per tre volte “devo commentare il mio codice, devo commentare il mio codice, devo commentare il mio codice”.
Enrico Sabbadin
di Francesco BalenaOggi sul Corriere ho trovato un articolo davvero interessante, riguardante il sito www.lulu.com.
In breve, questi signori di Lulu hanno avuto una idea davvero geniale: sono degli editori (molto poco tradizionali) che non pongono alcuna barriera a chi vuole diventare un autore di libri (ma non solo libri), neanche barriere di tipo economico. Ecco come funziona il processo:
1) un autore spedisce un documento word e decide come deve essere la copertina, la rilegatura, ecc. 2) mentre l’autore aspetta al browser, loro creano in automatico il PDF e calcolano i costi vivi di stampa 3) quando l’autore conosce il costo, può decidere il margine e quindi il costo di copertina, oppure può decidere di venderlo solo in formato elettronico 4) il libro diventa quindi parte del catalogo di Lulu, che lo può vendere sul suo sito ma può anche venderlo tramite altre librerie che glielo richiedono, incluso librerie online come Amazon 5) a differenza di quello che fanno tanti piccoli editori locali, NON CI SONO COSTI DI SETUP nè ordini minimi di un certo numero di copie: la stampa avviene infatti on-demand. I costi di stampa sono pero' ridotti se si ordinano un certo numero di pezzi. 6) i ricavi vengono divisi in questo modo : 80% all’autore, 20% a Lulu
La divisione delle royalties è davvero notevole, se si pensa che un autore "medio" (ossia che non fa di cognome Grisham o King) non riesce a spuntare più del 12-15% del margine, che poi normalmente è l'8-10% del prezzo di copertina.
Non sto (ovviamente) pensando di scrivere il mio prossimo manuale su .NET con un editore come Lulu, nè penso che qualche altro autore affermato sceglierà mai questo editore per i propri libri, perchè non dà l'autorevolezza di un libro Microsoft Press o Addison Wesley. Però l'iniziativa è davvero molto interessante ed è indicativa di come Internet sta modificando il mondo dell'editoria tradizionale.
E comunque, anche un autore "di professione" potrebbe trovare utile questo meccanismo almeno in un paio di casi: a) per scrivere un libriccino di poche pagine che nessun grande editore ci vuole comprare b) per rendere disponibile al pubblico un "instant book" in pochi giorni, senza aspettare i 3-4 mesi richiesti dal solito iter necessario con editori normali.
Ovviamente, tutto questo discorso ha un senso per chi scrive in inglese, perchè farsi spedire i libri dall'america costa molto più che stamparseli uno per uno a casa con una inkjet. Però, se siete italiani e scrivete in inglese, un editore/rivenditore come Lula offre un vantaggio notevole: se volete vendere un libro o un CD autoprodotto dall’italia al pubblico americano, i costi di spedizione sono talmente alti che nessun americano lo comprerà mai. Se però lo vendete tramite Lula, i costi di spedizioni sono acccettabili, e inoltre non avete le rogne di dover stampare, masterizzzare, ecc.
di Francesco BalenaLavoro con Microsoft Press dal 1998 e ho scritto per loro la bellezza di 5 libri (a cui si sommeranno presto altri tre volumi). Ogni tre mesi mi arriva puntualmente un bell'assegno con i diritti d'autore delle vendite dei libri in lingua inglese, a cui si sommano i diritti di traduzione per le versioni in altre lingue. (Per la cronaca, per tutti questi libri eccetto l'ultimo, i proventi delle vendite in Italia arrivano solo dopo aver fatto il giro da Redmond). Da sette anni mi arrivano quindi questi fogli dove si quantificano questi diritti di traduzione, ma non si specifica da quali nazioni arrivano.
Ogni volta mi ripromettevo di chiedere al mio acquisition editor in Microsoft Press di farmi un elenco delle lingue in cui i miei libri erano stati tradotti, ma per un motivo o per l'altro mi passava di mente subito dopo. In qualche caso avevo comunque dei riscontri, ad esempio il mio traduttore giapponese mi aveva chiesto qualche chiarimento e un lettore messicano mi aveva fatto sapere che stava leggendo la versione in spagnolo. Insomma, sono un tipo curioso, ma evidentemente non abbastanza curioso.
L'altro giorno mi ritorna in mente la questione e finalmente scrivo al mio caro editor, che ci mette un po' a raccogliere le informazioni che seguono (stranamente, non esiste neanche in MSPress un repository pubblico dove si possono leggere queste info). Ecco quello che ho appreso solo qualche ora fa:
Programming Visual Basic 6: English, Italian, Japanese, Korean, Spanish, Chinese (simplified, China), Chinese (traditional, Taiwan) + local English-language version in India.
Programming Visual Basic .NET: English, Italian, French, Arabic, Japanese, Korean, Spanish, Chinese (simplified), Chinese (traditional) + local English-language versions in China and India.
Applied Microsoft .NET Framework in Visual Basic (con Jeffrey Richter): English, Italian, Korean, Chinese (simplified), Chinese (traditional) + local English-language in China. Programming Visual Basic .NET 2003: English, Italian. Practical Guidelines and Best Practice: English, Russian + local English-language in China. (Più in italiano, anche se appare con un titolo differente.)
Devo ammettere che sapere di essere tradotto in una decina di lingue mi fa un certo effetto. Devo cercare di ricordarmelo, la prossima volta che dovrò passare una nottata in bianco per consegnare le bozze in tempo 
di Francesco BalenaIo e Giuseppe Dimauro saremo a Milano il 15 giugno per la presentazione del nostro libro Microsoft .NET Framework: Regole di stile e Best Practice, presso il Mondadori Multicenter di via Marghera 28. Sarà una bella occasione per discutere di guideline, naming convention e best practice nel mondo .NET. Potete leggere maggiori informazioni qui.
|
|
Feed di Blog2theMax
Cerca nel blog
Archivio
| | Sun | Mon | Tue | Wed | Thu | Fri | Sat | | 28 | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 8 | 9 | 10 | 11 | 12 | 13 | | 14 | 15 | 16 | 17 | 18 | 19 | 20 | | 21 | 22 | 23 | 24 | 25 | 26 | 27 | | 28 | 29 | 30 | 31 | 1 | 2 | 3 | | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
Categorie
Powered by: newtelligence dasBlog 1.7.5016.2
|