Il Pesa-Nervi per tutti: ecco il codice sorgente
Il link per scaricare gratuitamente l'applicazione e le informazioni di base per utilizzarla subito e nel modo corretto: tutto ciò nell'ottica di una filosofia della libera condivisione del software (e delle opere dell'ingegno in generale).
Sommario
C'è stato un periodo in cui pensavo di poter utilizzare per scopi commerciali l'applicazione per blog accessibili, che ho chiamato "Il Pesa-Nervi". Ma mi sono reso conto ben presto che non avevo voglia di perdere tempo a limarne i difetti (non molti per la verità) e inoltre non avrei saputo da che parte cominciare per cercare di venderla. Non sapevo soprattutto se, una volta messa in commercio, qualcuno sarebbe stato interessato ad acquistarla. Tutte queste riflessioni sono state a poco a poco cancellate da un'altra idea, che ora sto mettendo in pratica: distribuire liberamente il codice del Pesa-Nervi, ma con la limitazione che non possa essere usato, neppure parzialmente, per scopi commerciali. Ciò con la speranza di aggregare una comunità di sviluppatori, interessati a migliorare l'applicazione e a condividere altrettanto liberamente i risultati raggiunti.
Scarica l'applicazione in formato ZIP
Quest'opera è pubblicata sotto una Licenza Creative Commons. Siete liberi di modificarla ma non di usarla per scopi commerciali.
![[Creative Commons License]](img/somerights20.gif)
L'AUTORE E DISTRIBUTORE DELL'OPERA NON E' REPONSABILE PER QUALSIASI DANNO DERIVATO DALL'USO DELL'APPLICAZIONE PER BLOG ACCESSIBILI, CHIAMATA IL PESA-NERVI" E DISTRIBUITA CON QUESTA LICENZA. SCARICANDO SUL PROPRIO COMPUTER IL FILE "PESANERVI.ZIP" SI ACCETTANO I TERMINI DI LICENZA QUI SOPRA SPECIFICATI.
(un file ZIP da 221 Kb)
Impostazioni preliminari, indispensabili per un utilizzo corretto
Chi ha fretta di lavorare col blog accessibile e non vuole leggere le istruzioni contenute nei titoli successivi, deve però applicare almeno le poche procedure descritte qui di seguito:
- Per accedere all'area di amministrazione, digitare nella barra degli indirizzi del browser, subito dopo il nome del file index.asp, la stringa di query
?privato=tuocodice e poi dare INVIO. Si apre una finestra di accesso, nel cui campo testo va digitata la password dell'amministratore. Le tre password predefinite sono amministratore1, amministratore2 e amministratore3. Se si possiede un indirizzo IP statico, dopo averlo registrato nel file index.asp, sarà possibile accedere più rapidamente alla pagina di login dell'amministratore, cliccando sui quattro rombi grigi che si trovano subito sotto la testata del blog (se invece non si ha un indirizzo statico registrato, il link sui quattro rombi grigi porta all'articolo numero 1 archiviato nel database).
- Non si potranno aggiornare i file RSS e si otterranno errori ASP in fase di archiviazione di articoli e commenti, finché non verranno inseriti, all'interno del codice ASP del file index.asp, rispettivamente alle righe 3332 e 3590, i percorsi esatti che hanno, sul vostro computer, i file articolirss.xml e commentirss.xml (i percorsi preimpostati sono C:/blog/rss/articolirss.xml e C:/blog/rss/commentirss.xml).
- Dopo aver impostato i percorsi corretti dei due file XML (oppure se si utilizzano quelli preimpostati), occorre togliere il carattere ' (apostrofo) di commento all'inizio delle righe 3307, 3505 e 3565 del file index.asp. In tal modo verranno attivate le routine che aggiornano i due file RSS 2.0, scrivendovi rispettivamente gli ultimi 10 articoli e gli ultimi 10 commenti pubblicati.
- Si otterranno errori quando si spediscono file sul server, se non si dispone di privilegi di scrittura per la cartella DOC in cui vengono archiviati i file spediti.
- Si otterranno errori quando si cerca di aprire il file modstili.asp (richiamato dalla funzione "Modifica stili" descritta più sotto), finché non si imposterà nel suddetto file il percorso corretto del file stili.css, che contiene gli stili personalizzabili per gli articoli e i commenti. Il percorso va impostato alle righe 34, 121 e 146 di modstili.asp. Il percorso preimpostato è C:/blog/css/stili.css: se corrisponde al percorso reale (cioè se tutti i file dell'applicazione sono stati scompattati in una cartella del disco C: chiamata blog), non è necessario fare alcuna modifica.
- Quest'applicazione è scritta in linguaggio ASP e può funzionare solo su server web IIS (Internet Information Server).
- Le chiamate ai database usano il sistema DSN (esempio:
conn.Open "DSN=dati"). A meno di non cambiare manualmente tutte le stringhe di connessione presenti nei file ASP, occorre impostare preliminarmente due connessioni ODBC tramite gli strumenti di amministrazione del server (lo si fa dal pannello di controllo di Windows, se si ha un accesso diretto al server). La prima deve creare un'associazione tra il database dati.mdb e la stringa di connessione "dati" (da digitare senza apici); la seconda deve creare un'associazione tra il database statistiche.mdb e la stringa di connessione "statistiche" (da digitare senza apici). I due codici di accesso possono naturalmente essere cambiati a piacere dall'utente, ma devono essere cambiate di conseguenza anche tutte le stringhe di connessione DSN presenti nei file ASP.
- Le date di articoli e commenti vengono archiviate secondo le regole del server (cioè con il formato anglosassone, con il mese prima del giorno, o con il formato italiano, con il giorno prima del mese). Il sistema di visualizzazione del blog mostra le date con il sistema italiano (giorno, mese e anno), ma fa conto che siano state archiviate con il sistema anglosassone: ciò perché Il Pesa-Nervi, da cui nasce l'applicazione distribuita, è ospitato su un server che usa il sistema anglosassone ma è letto da italiani. La conseguenza di questa particolarità è che, se il blog è ospitato su un server che usa le regole di datazione italiane, la visualizzazione delle date non sarà più quella corretta. Un'altra conseguenza è che, in un caso simile, il caricamento della home page del blog non visualizza alcun articolo (in condizioni normali viene visualizzato invece l'ultimo articolo pubblicato) e i link dell'archivio mensile producono pagine vuote. Per risolvere questo problema, è necessario avere conoscenze di programmazione e intervenire manualmente sul codice ASP del file index.asp.
- Il codice di marcatura usato nel blog è XHTML 1.0 strict. Le pagine vengono di conseguenza servite come
application/xhtml+xml ai browser nativamente conformi e come text/html a browser come Internet Explorer. E' possibile, dunque, che occasionali errori di malformazione di contenuti immessi dagli autori (per es. caratteri incompatibili con XML, derivanti da testi troncati) generino il blocco del caricamento delle pagine servite come application/xhtml+xml.
- Se si vogliono escludere dal calcolo delle statistiche gli accessi effettuati dall'amministratore e se l'amministratore dispone di un IP statico, occorre intervenire sul codice di index.asp, sostituendo a tutte le occorrenze della stringa 0.0.0.0 l'indirizzo IP statico usato dall'amministratore.
Nome e descrizione dei file che compongono il pacchetto
Il file ZIP che avete scaricato contiene i seguenti elementi, di ciascuno dei quali viene indicata a fianco la funzione:
- adovbs.inc - le costanti VBSCRIPT, inserite come inclusione nei file ASP;
- carica.asp - scrive sul server, precisamente nella cartella DOC, i documenti (immagini o altro) che si vogliono archiviare per essere poi richiamati dall'interno degli articoli, per esempio come immagini di corredo;
- diritti.html - IMPORTANTE: è la licenza con cui è distribuita quest'applicazione;
- elenco.asp - l'elenco dei documenti archiviati nella cartella DOC;
- favicon.ico - l'iconcina del Pesa-Nervi, visualizzata nella barra degli indirizzi dai browser che supportano questo formato (può essere cambiata con qualsiasi altra);
- index.asp - è il blog vero e proprio. Contiene tutte le funzioni principali;
- istruzioni.html - questo stesso documento, realizzato in formato HTML statico;
- marcatori.html - l'elenco dei marcatori utilizzabili nei commenti inviati al blog: è un sottoinsieme dei marcatori validi per gli articoli. In realtà possono essere utilizzati per i commenti gli stessi marcatori usati per gli articoli. Fornire un insieme ridotto ha il solo scopo di semplificare l'apprendimento ai lettori interessati ad utilizzare questo sistema;
- marcatoriarticolo.html - l'insieme completo dei marcatori utilizzabili per strutturare gli articoli (e i commenti);
- modstili.asp - fornisce l'anteprima degli stili utilizzabili negli articoli e nei commenti e consente di modificare gli stili esistenti o di crearne di nuovi, agendo sul file stili.css;
- css/stampa.css - contiene alcuni stili utilizzati per stampare gli articoli;
- css/stili.css - contiene gli stili, personalizzabili dall'amministratore, utilizzati per strutturare gli articoli (e i commenti);
- db/dati.mdb - Il database di Access che contiene tutti i dati sugli articoli e i commenti;
- db/statistiche.mdb - Il database di Access che contiene tutti i dati statistici su browser e referenti (referrers); contiene inoltre tutti i dati necessari alla gestione dei sondaggi;
- doc/ - la cartella che serve per archiviare tutti i documenti accessori, relativi agli articoli pubblicati o da pubblicare sul blog;
- img/ - la cartella che serve per archiviare tutte le immagini decorative e funzionali utilizzate per la grafica del blog;
- js/funzioni.js - uno dei javascript necessari a gestire le funzionalità dinamiche del blog, valido per la modalità application/xhtml+xml;
- js/funzioni_n.js - uno dei javascript necessari a gestire le funzionalità dinamiche del blog, valido per la modalità text/html;
- js/menu.js - uno dei javascript necessari a gestire le funzionalità dinamiche del blog, valido per la modalità application/xhtml+xml;
- js/menu_n.js - uno dei javascript necessari a gestire le funzionalità dinamiche del blog, valido per la modalità text/html;
- rss/articolirss.xml - il file RSS 2.0 (inizialmente vuoto) che viene aggiornato alla pubblicazione o alla modifica di ogni articolo, riportando titolo, link, testo, autore e data dei 10 articoli pubblici più recenti;
- rss/commentirss.xml - il file RSS 2.0 (inizialmente vuoto) che viene aggiornato alla pubblicazione (o alla modifica da parte dell'amministratore) di ogni commento, riportando articolo di riferimento, link, testo, autore e data dei 10 commenti pubblici più recenti.
Nome e descrizione delle tabelle usate nei due database
Il database DATI.MDB
- accesso - contiene inizialmente tre codici di accesso (password), che sono utilizzati per entrare nel sistema come amministratore. Le tre parole sono: amministratore1, amministratore2, amministratore3. Possono essere modificate - anzi devono - dall'utente amministratore (lavorando però a livello di database: non esiste una maschera di modifica dei codici di accesso a livello del blog);
- altrisiti - gestisce l'archivio "Altri siti", composto da una serie di collegamenti ad altri siti web, suddivisi per categoria. Viene fornita inizialmente con 339 siti di pubblica utilità già memorizzati. Il contenuto della tabella può essere cancellato o modificato mediante apposita interfaccia web di amministrazione;
- artico - gestisce l'archivio chiamato "Articolario", composto da una serie di collegamenti a risorse disponibili sul Web, suddivisi per categorie. Viene fornita inizialmente, a titolo di esempio, con 9 rimandi ad articoli suddivisi in altrettante categorie. Il contenuto della tabella può essere cancellato o modificato mediante apposita interfaccia web di amministrazione;
- bloccati - vengono memorizzati in questa tabella i tentativi falliti di accedere come amministratore (avviene quando si immette una password sbagliata). Al terzo tentativo fallito proveniente da un medesimo indirizzo IP, viene inibito all'utente proveniente da quell'IP ogni ulteriore tentativo di accesso al sistema; anche questa tabella, così come accesso, può essere amministrata solo lavorando a livello di database;
- commenti - contiene tutte le informazioni necessarie a visualizzare e gestire i commenti inviati dai lettori; è amministrabile tramite interfaccia web;
- dati - contiene il lancio e il testo di ciascun articolo pubblico o privato; è amministrabile tramite interfaccia web;
- evidenza - contiene l'ID (identificativo) di ciascun articolo evidenziato dall'amministratore. Gli articoli evidenziati sono quelli che compaiono all'interno del menu "Da leggere"; la gestione dell'evidenza di un articolo avviene tramite interfaccia web;
- generale - contiene tutte le informazioni necessarie a gestire gli articoli (ad eccezione del lancio e del testo, contenuti nella tabella dati); amministrabile tramite interfaccia web;
- pagina - contiene il numero massimo di elementi visualizzati in ciascuno degli elenchi generabili nel blog. E' divisa in pubblico e privato: il primo valore si riferisce agli elenchi visualizzabili dagli utenti, il secondo a quelli visualizzabili solo dall'amministratore; entrambi i valori sono impostati inizialmente a 30 e possono essere modificati tramite interfaccia web;
- ricerca - l'elenco delle parole ricercabili contenute negli articoli; l'elenco è amministrabile tramite interfaccia web;
- ricecommenti - l'elenco delle parole ricercabili contenute nei commenti; l'elenco è amministrabile tramite interfaccia web;
- ricestringhe - l'elenco delle stringhe di ricerca utilizzate dagli utenti. E' visibile solo all'amministratore e serve per capire il tipo di contenuti che gli utenti del blog si aspettano di trovare;
- visitatori - l'elenco dei visitatori unici del sito, con il numero di accessi per ciascun visitatore;
- visite - Il numero di visite ricevuto da ciascun articolo e da ciascuna pagina di commenti (gli articoli sono sempre unici; i commenti sono raggruppati per articolo di riferimento);
- visitealtro - il numero di visite ottenuto da ciascuna sezione del blog, diversa da articoli e commenti. Le sezioni per cui avviene il calcolo sono le seguenti (i risultati sono riportati nella pagina statistiche):
- l'elenco dei risultati di una ricerca;
- l'elenco degli autori di articoli;
- l'elenco degli argomenti;
- l'elenco mensile degli articoli pubblicati;
- la pagina d'inserimento di un commento;
- l'elenco suddiviso per categorie della sezione "Altri siti";
- le pagine dell'Articolario;
- le pagine dei sondaggi (votazione e risultati);
- la pagina delle statistiche;
Il database STATISTICHE.MDB
- log - contiene la stringa di identificazione di ciascun programma utente (robot e motori di ricerca) che si collega al blog, con il numero di accessi per ciascuno di essi; i risultati sono visibili solo all'amministratore;
- logref - contiene l'elenco dei referenti (referrers), cioè delle ultime pagine visitate da chiunque si colleghi a una qualsiasi pagina del blog. I risultati sono visibili solo all'amministratore e sono utili per vari scopi: risalire ai motori e alle stringhe di ricerca che rimandano al proprio blog; scoprire quali sono gli articoli e le sezioni del sito che generano più visite verso altri articoli e altre sezioni; scoprire quali siti contengono link al proprio blog;
- elesonda - tutte le voci inserite nei sondaggi; è amministrabile tramite interfaccia web;
- sondaggi - contiene il titolo e la descrizione di ciascun sondaggio, con la data di apertura e di chiusura e il marcatore della visibilità; è amministrabile tramite interfaccia web;
- votanti - l'elenco degli IP dei votanti che hanno partecipato a un sondaggio. Serve per impedire che uno stesso utente voti più di una volta.
Le funzioni di amministrazione
Chi accede come amministratore, noterà che subito dopo il titolo del blog è presente un menu a scomparsa, comandato via javascript, chiamato "Funzioni di amministrazione". Ecco cosa contiene:
- Scrivi un nuovo articolo - apre il modulo di composizione degli articoli;
- Spedisci documenti sul server - apre il modulo che permette di spedire contemporaneamente fino a un massimo di cinque documenti (immagini o altro), che verranno archiviati sul server nella cartella DOC;
- Modifica stili - apre la pagina che consente di vedere l'anteprima degli stili utilizzabili negli articoli, nonché di modificare direttamente il foglio di stile stili.css;
- Elenco documenti in archivio - apre l'elenco dei documenti archiviati sul server nella cartella DOC;
- Crea / modifica sondaggio - apre l'interfaccia di amministrazione dei sondaggi;
- pulsante bonifica - corregge eventuali errori rimasti nelle tabelle ricerca e ricecommenti del database dati.mdb;
- Articolario - apre l'interfaccia di amministrazione della sezione "Articolario", che consente di inserire rimandi a risorse disponibili sul Web, completi di titolo, link, categoria, autore, data e breve descrizione del contenuto della risorsa;
- Altri siti - apre l'interfaccia di amministrazione della sezione "Altri siti", che consente di creare un archivio di siti segnalati, suddivisi per categoria;
- Termini indicizzati - apre la tabella che contiene i termini ricercabili, archiviati nella tabella ricerca; per ciascun termine vengono riportate le occorrenze totali e può essere singolarmente eliminato dall'archivio; la sezione contiene altre funzioni contestuali:
- Ordina stringhe per data decrescente
- Ordina stringhe alfabeticamente
- Ordina stringhe per IP dell'utente
- Termini indicizzati nei commenti
- Accessi agli articoli - apre la tabella che consente di vedere il numero di visite totalizzato da ciascun articolo pubblicato. la sezione contiene altre funzioni contestuali:
- Ordina per data
- Ordina per argomento
- Ordina per autore
- Ordina per mese
- Ordina per anno
- Accessi ai commenti - apre la tabella che mostra il numero di commenti presenti per ciascun articolo e il numero di accessi per ciascuna pagina dei commenti. Contiene altre funzioni contestuali:
- Ordina per numero di commenti
- Ordina per autore in base ai commenti inviati
- Ordina per autore alfabeticamente
- Ricerche - apre la tabella che mostra tutte le ricerche effettuate dagli utenti sia tra gli articoli sia tra i commenti. Contiene altre funzioni contestuali:
- Ordina stringhe alfabeticamente
- Ordina stringhe per IP dell'utente
- Programmi utente - apre la tabella che contiene l'elenco di tutti i programmi utente usati per collegarsi al blog, con indicazione, per ciascuno di essi, del numero complessivo di accessi e della percentuale relativa. Le funzioni contestuali sono:
- Indicizzatori di motori di ricerca - a sua volta suddiviso in: Yahoo! | MSNbot | Googlebot
- Sistemi operativi - a sua volta suddiviso in: Windows 98 | Windows 2000 | Windows XP | Windows Server 2003 | Windows Longhorn | Linux | Macintosh pre-OS X | Macintosh OS X
- Browser - a sua volta suddiviso in: Internet Explorer 5.xx | Internet Explorer 6.0 | Gecko | Firefox | Netscape | Opera | Safari
- Referenti - apre la tabella dei referrers che consente di restringere il campo dei risultati ai referenti provenienti: Solo da Google | Solo da Yahoo! | Solo da Virgilio | Solo da Arianna | Solo da MSN | Solo da Kataweb. E' presente inoltre una casella di input che permette di fare selezioni complesse, usando l'operatore di esclusione - (esempio: -yahoo -google vuol dire: mostra tutti i referenti che non provengono né da Yahoo! né da Google);
- Visitatori unici - apre l'elenco degli IP dei visitatori unici, con il numero di accessi proveniente da ciascun IP;
- Cambia risultati privati e risultati pubblici - consente di cambiare selettivamente il numero di risultati generati per gli elenchi privati (visibili solo dall'amministratore) e per gli elenchi pubblici. Il valore predefinito è 30 per entrambi;
- Pulsante Termina gestione - Chiude una sessione di amministrazione.
Elementi di accessibilità e di usabilità
Il codice XHTML e CSS di tutti i file dell'applicazione è rilasciato a 0 errori, secondo quanto richiede il primo requisito tecnico della legge 04/2004 sull'accessibilità.
Un complesso meccanismo di controllo automatico dei testi inseriti da autori e commentatori impedisce l'archiviazione di qualsiasi articolo o commento contenente errori di codifica. In caso di errori viene presentato all'utente un messaggio di avviso che elenca gli errori riscontrati. Solo dopo aver corretto tutti gli errori di marcatura, sarà possibile archiviare articoli e commenti. Ciò preserva nel tempo la validità del codice.
Articoli e commenti possono essere altamente strutturati mediante l'inserimento di titoli, paragrafi, DIV, SPAN, tabelle, liste e immagini (a titoli, paragrafi, DIV e SPAN possono essere applicati anche classi CSS). Tutto ciò per mezzo di appositi marcatori stenografici: l'equivalente sintetico del codice HTML. I marcatori possono essere applicati al testo selezionato degli articoli o mediante pulsanti o mediante scorciatoie da tastiera. Entrambi i metodi usano javascript. In mancanza di supporto per javascript, la funzionalità è interamente preservata: si tratterà di scrivere a mano ciascun marcatore.
Grazie all'uso di appositi JavaScript, il menu di navigazione, posto sulla destra della pagina, può essere fatto comparire e scomparire a piacere. Chi ha bisogno dello schermo occupato solo dai contenuti (gli ipovedenti per esempio, che usano basse risoluzioni e caratteri ingranditi), potrà trovare comodo nascondere il menu non appena ha finito di usarlo.
Un altro script adatta la larghezza del testo degli articoli alla larghezza della finestra del browser. Quando la finestra è molto stretta (come nei palmari), i margini destro e sinistro sono ridotti al minimo; quando invece la finestra del browser si allarga, i margini crescono progressivamente. Ciò consente di non avere mai, alle alte risoluzioni, una colonna di testo larga quanto tutto lo schermo, effetto giudicato da alcuni lettori estremamente fastidioso.
Un potenziale difetto di usabilità di moltissimi siti è costituito dall'enorme allungarsi verso il basso delle colonne laterali, che di solito contengono lunghe serie di link e di menu. Nel menu di navigazione di questo blog, il problema di evitare l'eccessivo allungamento è stato risolto con il ricorso a uno script che apre ciascun sottomenu chiudendo contemporaneamente tutti gli altri: ciò riduce notevolmente l'allungamento della colonna verso il basso.
Il menu di navigazione segue nel codice i contenuti principali. In tal modo chi ascolta la pagina con un sintetizzatore vocale trova i contenuti prima del menu, con grande risparmio di tempo nella ricerca dei punti di interesse nel testo.
Il primo contenuto della pagina - nascosto in modalità grafica e visibile solo a CSS disabilitati - è un brevissimo menu di scelte rapide: consente di arrivare in un colpo solo all'inizio del testo o all'inizio del menu di navigazione.
Un lavoro notevole è stato fatto per consentire una degradazione della pagina senza perdite d'informazione, nel passaggio da un browser grafico con supporto attivo per JavaScript e fogli di stile ad un browser testuale, nel quale manchino uno o entrambi i supporti.
A quanto detto fin qui si aggiungono alcuni consueti accorgimenti di accessibilità:
- Tasti di accesso rapido per le funzioni principali:
- tasto 5
per il salto all'inizio dei contenuti;
- tasto 6
per il salto all'inizio del menu di navigazione (se visualizzato);
- tasto -
per posizionare il cursore nella casella di ricerca, se il menu di navigazione è visualizzato;
- tasto 8
per avviare la ricerca (pulsante Cerca), se il menu di navigazione è visualizzato;
- tasto ù
per posizionare il cursore all'inizio della finestra Testo, nella pagina che contiene il modulo per inviare commenti;
- tasto à
per posizionare il cursore nella casella Autore, nella pagina che contiene il modulo per inviare commenti;
- tasto ò
per posizionare il cursore nella casella Sito web o e-mail, nella pagina che contiene il modulo per inviare commenti;
- tasto \
per attivare o disattivare la casella di spunta Ricorda autore e sito/e-mail, nella pagina che contiene il modulo per inviare commenti;
- tasto , (virgola)
per attivare il pulsante Invia, nella pagina che contiene il modulo per inviare commenti.
- Etichette (elemento label) associate ai campi modulo; uso di fieldset e legend per racchiudere e definire campi modulo omogenei.
- Caselle di spunta e radiobutton autoevidenziati alla selezione: il cambio di colore rende più facile agli utenti ipovedenti capire quale campo è in un certo momento attivo per la compilazione (non funziona su Internet Explorer).
- Colori che soddisfano i requisiti di contrasto cromatico e di luminosità previsti dal W3C (a meno che l'amministratore del blog non personalizzi diversamente i colori).
- Misure del testo definite in percentuale ed in em, per consentire la ridimensionabilità con tutti i browser; grandezza predefinita del testo degli articoli uguale al 100%, per consentire un'agevole lettura a chi non abbia una vista d'aquila.
- Blocchi di testo che si adattano alla finestra del browser, evitando per quanto possibile la comparsa della barra di scorrimento orizzontale.
Spirito di comunità e condivisione dei risultati
Questo blog non è certo un prodotto perfetto. L'autore ne conosce bene pregi e difetti. Tra i limiti attuali - non risolti sia per mancanza di tempo sia per mancanza di adeguate conoscenze - vanno considerati:
- la commistione del codice javascript al codice XHTML strutturale. Sarebbe opportuno che programmatori esperti bonificassero innanzitutto il codice javascript dalle ridondanze sicuramente presenti e poi che procedessero alla separazione dei contenuti dai comportamenti, spostando tutto il codice javascript in appositi file JS esterni (attualmente utilizzati solo parzialmente). Naturalmente ciò dovrebbe essere fatto preservando al 100% le funzionalità disponibili e tenendo conto che alcune funzioni javascript sono modificate dal codice ASP e dunque non possono stare in file JS esterni.
- Un lunghissimo elemento STYLE posto all'interno di index.asp. Sarebbe preferibile spostare questo codice presentazionale in un file CSS esterno. Ciò non è stato fatto finora perché i risultati ottenuti non erano soddisfacenti, soprattutto per quanto riguarda la resa delle pagine con il browser Opera. Non è escluso che perdendo un po' di tempo in prove e aggiustamenti, si riesca ad ottenere una maggiore separazione tra contenuti e presentazione.
- Mancanza di vera ottimizzazione dei fogli di stile per la stampa ed i palmari.
- Problemi di visualizzazione con il browser Opera.
- Nella composizione o modifica di un articolo, impossibilità di applicare con Internet Explorer i marcatori usando le previste scorciatoie da tastiera, come è invece possibile fare adoperando Firefox e Opera. Per risolvere questo problema occorre modificare in qualche modo il javascript che permette di applicare da tastiera i marcatori al testo selezionato nel TEXTAREA.
- Mancanza di un sistema WYSIWYG (cioè visuale e interattivo) per la strutturazione dei contenuti degli articoli e dei commenti, sul modello di Xstandard o di altri prodotti simili. La difficoltà sta nel preservare l'uso dei marcatori stenografici applicabili all'attuale TEXTAREA, a fianco del codice XHTML prodotto dall'editor WYSIWYG eventualmente utilizzato.
- Un baco che si genera solo con Firefox 1.5, in virtù del quale scompaiono dal TEXTAREA gli indirizzi inseriti dagli autori degli articoli in un elemento A, dopo una modifica (vengono mantenuti invece nel codice archiviato nel database).
- Avvisi di errore troppo generici: viene indicato il tipo di errore, per esempio la presenza di un marcatore di paragrafo aperto e non chiuso, o viceversa, ma non c'è un sistema per indicare la riga precisa in cui si è verificato l'errore. Ciò comporta la necessità di riesaminare attentamente l'intero contenuto del TEXTAREA alla ricerca del punto da correggere (il problema si risolve archiviando ripetutamente il lavoro in fase di scrittura, in modo che sia possibile risalire facilmente all'ultimo blocco inserito, che sarà quello contenente l'errore).
- Mancanza di livelli scalari di amministrazione: al momento chiunque acceda come amministratore ha privilegi di modifica e pubblicazione completi.
Rendere pubblico il codice de Il Pesa-Nervi vuole essere, tra le altre cose, un tentativo di creare una comunità di sviluppatori che voglia collaborare per condividere - in modo libero e gratuito - i miglioramenti che ognuno vorrà e saprà apportare a quest'applicazione, che già adesso è comunque sufficientemente potente e robusta da consentire la pubblicazione di un blog ricco di funzionalità e contenuti articolati [1].
I commenti a questo articolo e il forum Universo mondo possono essere, almeno inizialmente, le sedi opportune per condividere i progressi fatti dagli sviluppatori che intendono collaborare per accrescere le funzionalità dell'applicazione. Tra i progressi che mi piacerebbe vedere ci sono il trasporto su piattaforma PHP e MySQL e la traduzione in inglese.
Buon lavoro (o divertimento) a tutti quelli che vorranno usare questo blog.
[1] Il Pesa-Nervi, padre dell'applicazione qui distribuita, ha superato i dieci mesi di vita. In questo tempo ha servito oltre 360.000 pagine a più di 82.000 utenti unici e contiene attualmente oltre 250 articoli e 375 commenti. Nella cartella DOC sono archiviati 374 documenti. Sono stati indicizzati circa 35.000 termini ricercabili negli articoli e quasi 10.000 termini ricercabili tra i commenti. I due database pesano complessivamente 50 megabyte.