domenica 27 aprile 2008

Una promessa: stackoverflow.com

Il mercato dei libri di programmazione, dice Joel Spolsky, è praticamente morto. I programmatori si documentano on line e raramente leggono un libro di programmazione. E giustamente, aggiungo io. I libri sono estremamente cari, incomprensibilmente prolissi e pretendono di essere così generici da soddisfare dal 14 enne che affronta la programmazione per la prima volta all'esperto programmatore che ha bisogno di una reference su una nuova tecnologia che deve apprendere.
I libri di programmazione tendono ad adattarsi ad una curva di apprendimento che è una sorta d'interpolazione di tutte le possibili curve d'apprendimento della fascia di mercato che l'editore vuole raggiungere. Il risultato è che non servono assolutamente a nulla, se non alcune rare eccezioni.

D'altra parte questo ha favorito un meccanismo di apprendimento della programmazione per tentativi ed errori, dove l'errore si corregge cercando su google il codice restituito e si tentano le varie soluzioni proposte da altri programmatori, della cui esperienza e capacità tecnica non si sa nulla. A volte dice bene alla prima botta, altre volte bisogna provare diverse soluzioni delle quali si capisce ben poco. Affinché tutto questi processi di correzioni producano qualcosa che sedimenti e si possa chiamare conoscenza, ci vuole molto tempo e molta costanza. Alla fine, pur avendo all'attivo una serie di progetti andati a buon fine perché bene o male i prodotti funzionano, molti programmatori non sanno cosa hanno fatto veramente. Per questo ci sono in giro milioni di programmatori mediocri o scarsi e pochissimi (ma veramente rari) bravi programmatori.

Un po' meglio va con le comunità semichiuse, tipo The Code Project, fonte alla quale anche io attingo spesso, perché almeno si può valutare lo spessore di chi fornisce soluzioni ed ha un taglio più didattico, cercando di insegnare una tecnica, invece di fornire una semplice ricetta risolutiva di un dato bug. Ma sono comunità che crescono in modo enorme e disordinato e non scalano bene. Rischiano spesso di diventare molto dispersive.

StackOverflow.com è una promessa che viene da Joel Spolsky e Jeff Atwood. Un sito per programmatori, per fare domande ed avere risposte. Semplice e funzionale e senza scopi di lucro nascosti. Così descritto da Joel:


We're starting to build a programming Q&A site that's free. Free to ask questions, free to answer questions, free to read, free to index, built with plain old HTML, no fake rot13 text on the home page, no scammy google-cloaking tactics, no salespeople, no JavaScript windows dropping down in front of the answer asking for $12.95 to go away. You can register if you want to collect karma and win valuable flair that will appear next to your name, but otherwise, it's just free.


Non vedo l'ora che sia on line per vedere se mantiene la promessa. Nel frattempo è possibile seguirne il blog e ascoltare i pdocast delle conversazioni telefoniche tra Joel e Jeff.

venerdì 25 aprile 2008

Server Virtuale WSUS 3.0 - parte 1

Nella rete dell’organizzazione di cui mi occupo di patch managment c’è la necessità di installare dei server WSUS in vari uffici decentralizzati per prendere finalmente il controllo dello stato delle patch dei client. Sebbene gli uffici siano piccoli, vogliamo minimizzare il traffico lungo la WAN e per questo si è scelto di installare un server di patch managment direttamente in ogni ufficio.

L’idea è di avere dei server WSUS configurati come replica server, in modo da ereditare gruppi e stato di approvazione delle patch dal server centrale, ma scaricare la patch direttamente da Microsoft Update, in modo da non occupare la WAN per questo genere di traffico. Così avremmo il controllo centralizzato, ma la distribuzione decentralizzata.

Tuttavia in molti di questi piccoli uffici c’è scarsa disponibilità di mezzi, quindi capita spesso che un’unica macchina debba ospitare diversi servizi: nel nostro caso, ad esempio, un unico desktop deve fare sia da server Antivirus che da server WSUS. Qui nasce il problema: fare coesistere il nuovo Symantec Endopoint Protection Server e WSUS non è cosa banale. Entrambi usano IIS e uno dei due va configurato per utilizzare una porta diversa dalla 80. Ma non basta. Entrambi usano una cartella virtual Content e l’ultimo installato sovrascrive l’altra. La soluzione suggerita da Symantec è di installare WSUS in un sito diverso, seguendo la procedura indicata nella guida di Microsoft: Step-by-Step Guide to Getting Started with Microsoft Windows Server Update Services 3.0 a pagina 12. Tuttavia abbiamo preferito tentare la via del server virtuale, per un completo isolamento del servizio WSUS da ogni altro potenziale conflitto.

Poiché una tale situazione si ripeterà in più di un ufficio, cerchiamo di standardizzare la procedura e creare una sorta di Kit per il deployment di un Server WSUS Virtuale.

Windows 2003 Server Sysprep VHD

Per prima cosa prepariamo un hard disk virtuale con un sistema operativo server gia predisposto per l’installazione di WSUS, vale a dire con IIS e gli altri prerequisiti installati. Soprattutto è importante preinstallare tutte le patch di sicurezza disponibili al momento della creazione, in modo da ridurre il più possibile il tempo necessario al deployment.

Nel nostro caso abbiamo creato una macchina virtuale in Virtual Server 2005 SP1, con 256Mb di RAM (se ha come unico scopo quello di fare da server WSUS per poche macchine, dovrebbe bastare poca memoria, in ogni caso sottoporremo a verifica questo parametro), un hard disk SCSI espandibile dinamicamente a 127Gb e collegato alla scheda di rete fisica.

A questo punto avviamo la macchina virtuale facendo leggere dal CD direttamente il CD di setup di Windows 2003 Server (meglio se con SP2 incluso) e installiamo il sistema operativo come normale member server in Workgroup. Finita l’installazione, installiamo IIS e poi aggiorniamo il sistema operativo tramite Microsoft Update. Una volta aggiornato il sistema operativo all’ultima patch installiamo anche l’antivirus e poi colleghiamo i prerequisiti per WSUS, che al momento in cui scrivo sono solamente due:

in quanto MMC 3.0 è gia incluso nel Service Pack 2 di WIndows 2003 Server.

Poiché preferisco mantenere l’immagine del sistema operativo abbastanza piccola, ma allo stesso tempo minimizzare il lavoro d’installazione nei successivi deployment, mi fermo qui e non scarico o installo né SQL Server 2005 Express né tantomeno WSUS stesso. Preferisco farlo direttamente da internet una volta che il server virtuale è stato consegnato e installato a destinazione.

A questo punto bisogna preparare l’immagine del disco virtuale in modo da generalizzarla tramite sysprep e compattarla per ridurne le dimensioni e rendere il trasporto presso gli uffici decentralizzati più agevole. Per fare questo i passi sono:

  1. Copiare Sysprep sul server virtuale e lanciare la generalizzazione
  2. Deframmentare il disco virtuale con un deframmentatore potente (capace cioè di deframmentare anche lo spazio vuoto)
  3. Pre-compattare il disco virtuale con l’utility Precompact di Virtual Server 2005
  4. Compattare il disco virtuale
  5. (Opzionale) Catturare l’immagine con un software di Imaging (Ghost o ImageX)