Uncategorized

HyperTrek, un po’ meno NG

Una volta completata la conversione e la
pubblicazione di HyperTrek NG, si presentava il problema di come accedere
offline a questa risorsa. Nonostante le connessioni a banda larga always-on
siano ormai una realtà economica e diffusa, il nostro obiettivo è sempre stato
quello di fornire HT anche come un pacchetto scaricabile, per varie ragioni di
ordine pratico. Da un certo punto di vista, e per certi versi paradossalmente,
si poneva il problema inverso del precedente: trasformare la versione dinamica
di HT in una statica, questa volta però con la complicazione di dover fare tutto
questo periodicamente (all’incirca una volta alla settimana) e ovviamente in
maniera il più possibile automatica.

Apparentemente nessun prodotto commerciale era
adatto allo scopo, c’è stata una discussione sulla possibilità di fare
installare mySQL e PHP agli utenti per eseguire in locale il sito dinamico, ma è
stata scartata per la troppa complessità. Nell’autunno del 2006, dopo varie
discussioni, mi sono avvicinato al problema in maniera analoga al caso di
HTSpider: poco più di esperimento limitato per mettermi alla prova.

Dopo aver fatto il lavoro preliminare su un
sistema di compilazione HTML basato su XMLWriter
scrivevo una prima bozza del software che prelevava le informazioni dal database
di produzione e scriveva qualche pagina. Dopo un po’ di prove, avevo fatto
funzionare i menù superiori e qualche altra pagina sparsa. Dopo qualche ora mi
sono ritrovato a ragionare su vari problemi che si sarebbero posti continuando a
sviluppare, per esempio la creazione dei menù delle sezioni, la compilazione
delle varie parti delle pagine degli episodi e via dicendo. Insomma, di nuovo ci
ero dentro fino al collo.

Poco dopo,
scrivevo in lista e mi assumevo l’onere di andare avanti con questo progetto. Il
24 Settembre 2006 nasceva The Stator
il software destinato a ‘staticizzare’ tutto HyperTrek. Il suo nome è un ovvio
gioco di parole e il suo logo un gioco con le immagini, partorito dalla mia
mente malata e realizzato dall’artista ufficiale dei progetti di HyperTrek,
ovvero Sat’Rain. Ci siamo anche inventati un acrostico ‘a posteriori’, così
STATOR adesso significa (anche) STAtic Trekkers’ Offline Resource.

La prima sfida
tecnica era quella di stabilire la modalità di accesso ai dati: diversamente da
SpiderHT, questo software doveva necessariamente leggere le informazioni dal
database online perché trasferire e copiare il DB in locale tutte le volte
sarebbe stato uno spreco di tempo e risorse, quindi la prima scelta logica era
quella di lavorare in modalità connessa. Dopo le prime prove, però, questo
approccio si rivelava sbagliato: la mole di dati che deve essere scaricato dal
sito è tale che la modalità connessa introduceva un ritardo nel continuo
collegamento remoto, esecuzione di query e scollegamento. Oltre a questo si
manifestava anche un fastidioso errore di
periodica di connessione. Dopo
pochi giorni, quindi, prendevo la decisione di modificare tutto in modalità
disconnessa: questo necessitava un accurato lavoro di preparazione. Le query
andavano studiate accuratamente per ridurre il numero dei risultati al minimo,
senza però creare troppe tabelle locali che poi sarebbero state memorizzate in
oggetti DataSet del framework
all’inizio del processo. Dopo questa modifica, l’elaborazione richiedeva molto
tempo nella parte iniziale, ma di seguito la creazione di pagine viaggiava al
ritmo di oltre una pagina al secondo, una prestazione irraggiungibile con la
modalità connessa.

Mentre il corpo principale
delle pagine non rappresentava un problema nell’elaborazione, i menù si
preannunciavano il primo scoglio serio. Dopo alcuni tentativi per buona parte
falliti, decidevamo di comune accordo una modifica alla struttura del DB che
semplificava molto la creazione dei menù di livelli inferiori al primo.
Eseguita questa modifica, lo stadio successivo di elaborazione era la creazione
della tabella superiore delle schede degli episodi, quella che contiene gli
attori, i personaggi e tutti di dati dell’episodio. Tutti questi dati dovevano
essere ricavati da tabelle diverse, andavano inseriti i collegamenti necessari
solo nei casi in cui erano previsti e, come ultima cosa raggruppare tutte le
varie categorie.
L’ultimo scoglio alla conclusione della parte grossa del lavoro era
l’elaborazione del navigatore nella tabella a destra delle pagine. I
collegamenti in questa area vengono da riferimenti diretti e inversi che
dovevano essere raccolti da tabelle diverse, raggruppati e ordinati.
Un ultima aggiunta al software era il sistema che seleziona tutte le immagini
dalla apposita tabella del DB e le scarica di internet. Una modifica successiva
a questa procedura permette ora di scaricare solo le immagini modificate,
discriminandole confrontando il timestamp dei file già esistente con una
richiesta dell’header del file da internet. Il software supporta anche le
immagini rotanti
anche se ovviamente il
cambiamento avviene solo una volta ogni generazione del pacchetto.

Nell’estate del 2007, Stator è
sostanzialmente completato: tutti i dati sono estratti e inseriti nelle apposite
pagine, dopo una revisione del file CSS l’aspetto grafico ha cominciato a
migliorare e ora rimane l’unico elemento su cui intervenire prima di avere una
versione gradevole, oltre che funzionale. Dall’inizio di Settembre il pacchetto
è nella fase Release Candidate.

A oggi The Stator comprende quasi 2500 righe di
codice e impiega circa 30 minuti per eseguire una generazione completa.
The Stator è un progetto in continua evoluzione e quindi ha un minisito
dedicato, che potete trovare all’indirizzo

http://www.lucamauri.com/htoffline/
.

Annunci
Standard

One thought on “HyperTrek, un po’ meno NG

  1. Pingback: HyperTrek, un grande passo in avanti | Luca Mauri Blog

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...