Uncategorized

Ma quanti Pianeti ci sono?

Negli ultimi giorni molti di voi se lo saranno chiesti più di una volta
In poche ore siamo passati da <Hanno scoperto due nuovi pianeti!> a <Hanno rubato Plutone!>
In questa entry cercheremo di andare oltre il marasma degli annunci chiassosi e scientificamente insensati dei giornalisti vari per analizzare veramente cosa è successo.
Come prima cosa diciamo che tutto questo gran parlare di pianeti nuovi e vecchi è nato da una delle discussioni tenutasi all’ultima assemblea generale della IAU nella quale si è affrontato nei dettagli e in maniera definitiva che cosa si intenda con la parola ‘pianeta’.

Tre nuovi pianeti?Nonostante la notizia sia recente, la polemica sul termine “pianeta” nasce molto tempo fa. Negli ultimi decenni, grazie ai notevoli progressi tecnici, si è intensificato lo studio delle zone critiche del Sistema Solare che stanno nel suo mezzo – la fascia di asteroidi – e alla sua estrema periferia – la Fascia di Kuiper. Oltre a questa analisi ‘interna’, nuove tecniche di analisi ci permettono di identificare pianeti extrasolari e addirittura di evidenziarne alcune caratteristiche anche su distanze interstellari.
Proprio a causa dei risultati di questi studi, ormai da parecchi anni c’e’ un dibattito aperto su come definire un pianeta e cosa fare rientrare in questa categoria.

Come sa bene anche il grande pubblico, la più grossa disputa in corso era se considerare o meno un pianeta Plutone. In effetti Plutone ha delle caratteristiche orbitali del tutto anomale, oltre a possedere una massa molto piccola e ad avere una luna proporzionalmente troppo grande. In più nella Fascia di Kuiper si sono trovati degli oggetti don caratteristiche del tutto comparabili a quelle di Plutone, sebbene situati a una distanza maggiore del Sole, tanto da far pensare che la scoperta di Plutone e la sua definizione di nono pianeta, siano state solo un ‘accidente’ derivato dal suo essere più vicino di molti altri oggetti simili esistenti nella Fascia

Tre pianeti da vicinoPartendo dal presupposto che Plutone non poteva perdere il suo status di Pianeta, visto il suo valore culturale, in un primo momento si pensava di sistemare le cose estendendo appunto questo status di pianeta ad altri oggetti simili.
Da qui sono partite tutte le chiacchiere a proposito della ‘scoperta’ di tre nuovi pianeti: in realtà non si è scoperto un bel niente, ma semplicemente si è provato a cambiare una definizione.
Per inciso, i tre oggetti da aggiungere all’elenco di pianeti sarebbero stati:

  • 2003 UB313
    un oggetto trans-nettuniano di grandi dimensioni scoperto pochi anni fa
  • Caronte
    la luna di Plutone. L’idea di renderla un pianeta deriva dal fatto di essere tanto grande rispetto a Plutone che il centro di massa del sistema dei due sta quasi a metà strada tra i due oggetti, ben oltre la superficie di Nettuno. Per questo motivo si pensa vi coniare la nuova definizione di ‘pianeta doppio’ da dare a Nettuno e alla sua luna che sarebbero quindi diventati due pianeti facenti parte appunto di un pianeta doppio
  • Cerere
    un oggetto, anche qui di grandi dimensioni, della fascia di asteroidi

Se questa risoluzione fosse passata ai voti, avremmo dovuto non solo aggiungere subito nuovi pianeti, ma tenere d’occhio molti altri oggetti che avrebbero avuto le carte in regola per entrare a loro volta nella grande famiglia del Sistema Solare.
Se siete interessati, potete leggere la bozza della proposta a questo indirizzo, tuttavia la storia si è svolta in maniera molto diversa e la decisione finale si è trasformata nell’esatto opposto a questa proposta iniziale.

Declassati!Proprio per evitare una proliferazione incontrollata di corpi celesti nella famiglia dei Pianeti, la IAU ha preso una posizione coraggiosa che in molti hanno criticato, ma che ha ovviamente una sua logica.
La decisione più radicale è quella che riguarda Plutone: per i motivi discussi qui sopra e per altre considerazioni, si è deciso di rimettere il corpo celeste e la sua luna nel ‘calderone’ di tutti i piccoli oggetti già conosciuti e di quelli ancora sotto analisi. naturalmente questa decisione non è stata presa in modo arbitrario, ma corredata da una linea guida molto pratica.
Secondo le risoluzioni 5 e 6 della IAU un Pianeta (‘Classico’, secondo la correzione della versione b) è definito in base a questi tre parametri:

  1. E’ in orbita intorno al Sole
    Questa caratteristica è abbastanza ovvia e esclude gli oggetti con orbite ‘esotiche’.
    Per completezza ricordiamo che il Sole non è un pianeta ma una stella e la sua definizione è ‘Un corpo celeste in grado di avviare una reazione di fusione termonucleare nel suo nucleo’. La stella più piccola possibile è una Nana Bruna con un massa approssimativamente 12 volte quella di Giove
  2. Ha una massa sufficiente perché la sua gravità superi le forze di corpo rigido e perchè assuma l’equilibro fluidostatico in forma sferica o quasi-sferica
    Anche se il linguaggio è un po’ tecnico, molto semplicemente significa che un pianeta deve essere abbastanza grande perchè la sua gravità sia sufficientemente forte da farlo diventare una sfera. Nell’originale inglese c’e’ l’aggettivo nearly che tiene conto delle piccole anomalie che si scostano dalla sfera geometrica perfetta.
    Secondo alcuni calcoli della Planetary Society possiamo stimare un limite inferiore a questa condizione, come quello di un corpo di raggio 800 Km e massa circa 5,9×1020 Kg, anche se queste cifre sono solo indicative
  3. Ha ripulito la sua orbita da detriti
    Anche se a prima vista potrebbe non sembrare, è una osservazione importante: infatti, in un colpo solo esclude tutti i corpi della fascia di asteroidi e quelli della Cintura di Kuiper. Molto semplicemente, ricordiamo che un pianeta di grande dimensioni, dopo la sua formazione dalla nube primordiale, generalmente assorbe tutti i corpi di piccole dimensioni nei dintorni della suo orbita, oppure con la sua massa li perturba facendoli finire contro altri pianeti o addirittura fuori dal Sistema.
    Tutti i pianeti al di fuori di Nettuno hanno fatto una cosa del del genere e quindi questa ultima condizione condanna irrimediabilmente il fu nono pianeta.
    Vale la pena ricordare che la fascia di asteroidi è da alcune teorie identificata come un ‘pianeta mancato’ in quanto è possibile che le enormi forze mareali generate da Giove abbiano impedito la creazione di un pianeta che altrimenti si sarebbe formato esternamente all’orbita di Marte.

La seconda parte della risoluzione 5 tratta della nuova categoria di Pianeti Nani definiti come i corpi celesti che:

  1. Come la definizione 1 di Pianeta
  2. Come la definizione 2 di Pianeta
  3. Non ha ripulito la sua orbita dai detriti
  4. Non è un satellite

Infatti, la Risoluzione 6 definisce Nettuno come un Pianeta Nano secondo la definizione appena data e lo considera <[…]come il prototipo di un nuova categoria di oggetti trans-Nettuniani>.

L’ultimo punto della Risoluzione 5 categorizza tutto il resto del Sistema Solare con questa sentenza:

  1. Tutti gli altri oggetti che orbitano intorno al Sole, tranne i satelliti, dovranno essere identificati come Piccoli Corpi del Sistema Solare

Prima di chiudere vale la pena notare che il termine ‘Stella’ delle prime bozze è stato sostituito da ‘Sole’ chiarendo così che queste linee guida valgono per il Sistema Solare ma non (o almeno, non automaticamente e immediatamente) per i pianeti extra-solari, per i quali, evidentemente, la IAU prevede nuove discussioni e votazioni

In chiusura dobbiamo quindi stabilire che, dal 24 Agosto 2006, nel Sistema Solare c’e’ una stella intorno alla quale orbitano otto pianeti: Mercurio, Venere, Terra, Marte, Giove,Saturno, Urano e Nettuno.
Questa decisione della IAU è sicuramente un cambio epocale che infatti non è passato inosservato, pur in tutta l’approssimazione possibile ai mezzi di informazione, tuttavia questa decisione è motivata da ragionamenti seri sulla catalogazione dei corpi celesti, sulla loro nascita ed evoluzione. Per quanto a molti sembri ‘ingiusto’ togliere a Plutone il suo status dopo tanti anni, è innegabile che le due risoluzioni nel loro complesso siano conclusioni del tutto logiche e perfettamente in linea con le usuali necessità di classificazione proprie dell’Astronomia e della Scienza in genere.

Standard
Uncategorized

Collaborazione targata Microsoft: CodePlex

Uno degli ‘effetti collaterali’ dello sviluppo dell’informatica presso il grande pubblico e dei software Open Source in particolare, ha portato alla proliferazione di siti di collaborazione online.
Anche se non ce ne sarebbe bisogno, vi dico che il più noto di questi è SourceForge, il pioniere del software open source per Linux e per Windows. SourceForge prevede praticamente tutto quello che è necessario a un sito di questo tipo: CVS, Forum, feed RSS e molto altro, non ultimo un bacino di utenza estremamente vasto
Molti vedono in SourceForge il paladino dell’open source e di Linux e quindi uno dei ‘nemici’ della Microsoft: nonostante questa equazione sia approssimativa e probabilmente superficiale, alla Microsoft si sono evidentemente sentiti chiamati in causa e quindi hanno risposto.
Come?
Se non puoi batterli, unisciti a loro, ed ecco nato il sito collaborativo targato Microsoft e Visual Studio: CodePlex

Nonostante il nome suoni vagamente Borg, vi assicuro che non si tratta del solito prodotto destinato ad assimilarne i fruitori, in questo caso i programmatori in generale i quelli su .NET in particolare. Vediamo come funziona.
Per prima cosa bisogna dire che il software che gestisce il sito (che almeno per il momento NON è open o shared source, nonostante le molte richieste. Finirà per diventarlo, IMHO) è in fase di beta test, si tratta di una beta piuttosto attiva, infatti è semplice suggerire migliorie e riportare bugs, partecipare a discussioni per migliorare il sito. Ogni tre settimane una nuova versione viene rilasciata per aggiungere nuove funzionalità ed effettuare il bugfix

CodePlex è organizzato basicamente come una Wiki integrata da un sistema di forum e da un Issue Tracker che funziona grossomodo come la task-list di un qualsiasi PIM
Il nucleo di CodePlex è formato da una sezione Help che contiene un forum sullo sviluppo e uno sul supporto e le discussioni per gli utenti. Qui si scambiano idee e spiegazioni sul funzionamento del sistema, mentre il vero sistema di suggerimenti e bug reporting è inserito nel già menzionato Issue Tracker.
Chiude la sezione l’immancabile feed RSS con i cambiamenti recenti e le novità del sito

Al momento i progetti non sono ancora accettati on-the-fly, ma, dopo aver fatto richiesta, il team sottopone il progetto e revisione e ricontatta il richiedente per comunicare la respinta oppure per chiedere più informazioni se il progetto è accettato.
Io sono passato attraverso il progetto, per pubblicare il mio software ASP.net System Information e devo onestamente dire che il procedimento è piuttosto rapido e preciso, l’unica pecca è che ho scoperto con molti giorni di ritardo e in maniera del tutto casuale che il mio software era stato accettato e già pubblicato, non so se per un problema alla mia mail in particolare o se per un qualche errore organizzativo di CodePlex. Ma questa è solo una piccolezza, dopo tutto.
Una volta accettato, al software viene dedicata una sezione del sito, fondamentalmente di nuovo basata su Wiki, una pagina su cui pubblicare un feed RSS del progetto (se già esiste), un area discussioni, di nuovo basata su forum e completa e personalizzabile, un Issue Tracker del tutto equivalente a quello del progetto di cui ho scritto prima e infine la gestione dei rilasci software e del codice sorgente.
I rilasci sono semplicemente gestiti come files (normalmente archivi compressi, come un file ZIP, per esempio) caratterizzati da una descrizione e da altri dati fondamentali come la versione o la data di pubblicazione.
Molto interessante la funzionalità di gestione del codice sorgente che è basata sulla tecnologia Team Foundation Server di Visual studio. In pratica la gestione del codice sorgente può essere effettuata direttamente dal Visual Studio Team Edition, se siete in possesso di questa edizione di VS. Altrimenti, è disponibile un prodotto chiamato Team Explorer che, con una interfaccia integrata nel VS permette di effettuare operazioni di base (come caricare e scaricare dal sito, per esempio) da un’altra versione di Visual Studio, o anche in modalità stand-alone. In questo modo può essere in pratica utilizzato anche con le versioni Express dell’IDE.
Per maggiori informazioni su questo ultimo software, disponibile gratuitamente per il download, potete leggere una FAQ introduttiva in questa pagina della Wiki, altre informazioni sono disponibili a partire da quella pagina, non è escluso che il Team Explorer diventi oggetto di una delle prossime entry di questo Blog

Per chi volesse sapere altro su CodePlex è anche disponibile un video con una intervista al team che segue il progetto su Channel9, non è molto tecnico, ma vi da una introduzione al sistema e vi permette di vedere dal vivo le persone che stanno dietro al sito.

In conclusione, dopo qualche settimana di utilizzo, non posso dire altro che CodePlex è un progetto interessante a cui bisogna dedicare sicuramente del tempo. E’ piuttosto lineare nel suo funzionamento e non ha mostrato problemi di stabilità. La sua semplicità e immaturità, tuttavia, sono anche degli svantaggi. Al momento le funzionalità sono pochine e la flessibilità quasi zero, ogni progetto è incasellato nelle poche aree a disposizione e c’e’ poco spazio per la fantasia – o, più prosaicamente, per qualche necessità particolare – e per le personalizzazioni.
Per quanto mi riguarda, CodePlex sarà sicuramente il punto di riferimento, in quanto, per software che sto sviluppando ora, è più che sufficiente, per progetti più sofisticati, la sua adeguatezza è tutta da vedere.
Non dimentichiamoci comunque che CodePlex paga ancora la sua estrema giovinezza, ma il suo sviluppo, visto il supporter e le tecnologie su cui è sviluppato, è virtualmente illimitato.

Standard
Uncategorized

Versioning degli Assemblies con ASP.net 2.0

L’avvento di .NET 2.0 ha portato innegabili benefici, ma una delle poche cose che mi ha lasciato un po’ perplesso è il sistema di versioning usato in ASP.net 2.0.
E’ un po’ macchinoso e, a mio avviso, non è spiegato in maniera appropriata nelle pagine del MSDN, per capire come farlo funzionare bene ho dovuto fare un po’ ricerche.
Adesso che è in funzione a dovere, vorrei condividere con voi il risultato della mia analisi.

Come sa bene chi di voi è già pratico della piattaforma .NET e del Visual Studio in particolare, tutte le informazioni sull’assembly, comprese quelle sua a versione, sono sempre state contenute nel file AssemblyInfo.[vb|cs], un file che era creato in maniera assistita da Visual Studio.
Bene, dalla versione 2.0, questo meccanismo funziona in una maniera un po’ diversa, e a mio avviso meno lineare.

In pratica si tratta di nuovo di usare le stesse meta informazioni che prima erano nel AssemblyInfo, ma di organizzarle in maniera diversa. Come esempio, questa volta vi faccio vedere le informazioni sull’assembly del xCMS, il CMS che sta facendo girare questo sito.

 #Region "AssemblyInfo"

<Assembly: AssemblyTitle("xCMS")>
 <Assembly: AssemblyDescription("xCMS running lucamauri.com")>
 <Assembly: AssemblyCompany("Luca Mauri")>
 <Assembly: AssemblyProduct("eXperimental Content Management System")>
 <Assembly: AssemblyCopyright("Copyright (C) 2005-2006, Luca Mauri")>
 <Assembly: AssemblyTrademark("")>
 <Assembly: CLSCompliant(True)>

<Assembly: Guid("18677A5B-1EB1-4D66-A5D8-55A1353AFAEB")>

<Assembly: AssemblyVersion("1.1.0.*")>
 #End Region

Ho inserito questo blocco di codice (notate la #Region impostata per separare questo codice dal resto della classe) in una delle classi del Core del xCMS. In questa maniera, queste informazioni caratterizzano la classe appena citata e, per mia convenzione, tutto il xCMS, quindi ora è sufficiente richiamare queste informazioni per utilizzarle all’interno del codice della Master Page che sottende all’interfaccia del xCMS.

</pre>
<blockquote>
<p class="inlinecode">xcmsVersion = GetType(<i><b>NomeClasse</b></i>).Assembly.GetName.Version.ToString</p>
<p class="inlinecode">

Sostituendo al segnaposto NomeClasse il nome della classe (non il nome di una sua istanza!), si possono ottenere le sue diverse proprietà e, nell’esempio appena mostrato, ho estratto la versione e poi l’ho trasformata in una stringa.
Questa stringa viene poi passata alla pagina Master e integrata in tutte le pagine del sito: si tratta del testo nel piedino di ogni pagina che recita eXperimental Content Management System version 1.1.0.23499.

Standard
Uncategorized

Formattazione con il XmlTextWriter

Tutti voi sicuramente già conoscete la classe XmlTextWriter del .NET Framework, classe che consente una rapida e logica scrittura dei file XML.
Data la sua diffusione, vi sarà capitato di usarla e avrete forse notato un problema: una volta scritto il XML e aperto in un editor di testo, tutto il codice XML risulta scritto su una sola riga (ovvero senza ritorni a capo) e senza indentazione.
Bene, questo non è un bug, ma un comportamento che può essere semplicemente modificato.

Infatti, il ritorno a capo e le impostazioni dell’indentazione sono caratteristiche che vengono impostate attraverso alcuni parametri dell’oggetto XmlTextWriter. Nel frammento di codice qui di seguito – tratto dal modulo RSS di xCMS che, tra l’altro, genera anche i feed di questo sito – si può vedere la dichiarazione e l’impostazione delle proprietà.

<blockquote>
<p class="inlinecode">Dim sw As New StringWriter()
Dim writer As New XmlTextWriter(sw)</p>
With writer
.Formatting = Formatting.Indented
.IndentChar = " "
.Indentation = 4
End With

La proprietà Formatting dice all’oggetto se deve effettuare o meno l’indentazione, mentre IndentChar e Indentation sono rispettivamente il carattere da usare come spaziatore (ovviamente lo spazio singolo è la scelta usuale) e il numero di volte che questo carattere deve essere ripetuto.
Diversamente da quello che potrebbe sembrare, la proprietà Formatting.Indented controlla anche il ritorno a capo in maniera implicita: per ottenere un a capo puro, naturalmente si può impostare a 0 il numero dei caratteri per l’indentazione.

Standard