10/02/2012
Una trasformazione, un blocco query e ho messo in piedi il blog; non male questa piattaforma :)
10/02/2012
Dopo mille ritardi, rinvii e tentennamenti, oggi inizia ufficialmente lo sviluppo di Webasic 2.
Lo spunto l'ho preso da alcune tecniche che volevo implementare nell'attuale Webasic 1 ma che, dopo attente analisi, mi avrebbero obbligato a riscrivere una buona parte del codice del front-end e del back-end. Webasic 1 si poggia su tecnologie vecchie, senza prospettive per il futuro: strada spianata quindi a .NET 4.0, ASP.NET e SQL Server 2008R2!
Il primo mattone è quello di avere URL più amichevoli con navigatori e soprattutto "SEO compliant". Da un articolo letto in internet provo ad implementare il famigerato "URL rewriting", utilizzando la tecnica del redirect da errori 403 e 404 verso pagine personalizzate. Il primo test funziona perfettamente con qualunque tipo di percorso, alla fine della giornata riesco a visualizzare una pagina HTML dotata di foglio di stile e una immagine png, senza che nella cartella dell'applicazione ci sia nulla di tutto ciò! Ci siamo!
Preparo velocemente il database in SQL Server 2008R2, partendo dagli esperimenti fatti nella versione sperimentale 1.0.100 (che a questo punto non vedrà mai la luce). Finalmente la struttura ha una forma che mi soddisfa appieno, divisa in un file system (per la gestione delle cartelle e dei nomi dei file) e un'altra parte per la creazione dinamica delle pagine HTML. Di contorno, le ormai consuete tabelle degli utenti e dei permessi, più altre cosucce.
11/02/2012
Sulle ali dell'entusiasmo cerco di sistemare il caching delle pagine e delle risorse collegate. Noto infatti che ad ogni richiesta della pagina il server risponde con il codice 200, senza tener conto affatto di quanto il browser potrebbe aver memorizzato nella propria cache. Vado in cerca di qualche articolo per approfondire la questione, non ho ancora ben chiaro come funzioni il sistema.
Dagli articoli consultati si evince che, a grandi linee, il browser invia al server una richiesta (request) attraverso un header, nel quale sono contenute una serie di informazioni simili alle seguenti:
Accept:*/* Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3 Accept-Encoding:gzip,deflate,sdch Accept-Language:it-IT,it;q=0.8,en-US;q=0.6,en;q=0.4 Cache-Control:max-age=0 Connection:keep-alive Cookie:ASPSESSIONIDACTSQTQA=CDLHAOICLJHJPHIAKKPDJKPK; ASP.NET_SessionId=nl45520... Host:test1.webasic.it If-Modified-Since:Thu, 09 Feb 2012 23:00:00 GMT Referer:http://test1.webasic.it/ User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like ...
La riga 9 è quella più interessante per quanto concerne la cache: con "If-Modified-Since" il browser invia la data/ora del file presente in cache che si appresta a richiedere al server.
Il server a questo punto elabora la richiesta e decide il da farsi:
Mi accorgo con sgomento che il browser invia effettivamente "If-Modified-Since" ma il server non lo riceve. Non ho modo di sapere cosa accade nei meandri del server, ma intuisco che il problema derivi dalla tecnica di URL rewriting adottata. Probabilmente il redirect verso la pagina di errore azzera l'header della richiesta; faccio qualche test ed effettivamente ho azzeccato la diagnosi. Devo trovare un'altra tecnica di URL rewriting, questa non va proprio bene :(.
Colpo di fortuna: tento la strada del routing (una caratteristica presente dalla versione 4 del framework) e funziona tutto al primo tentativo. Per far si che il routing operi con qualsiasi estensione di file, in IIS6 aggiungo una wildcard application map, facendo puntare qualsiasi richiesta al filtro \v4.0.30319\aspnet_isapi.dll.
Come accade spesso, le modifiche apportate per risolvere un problema causano a cascata degli altri problemi! Nello specifico, la presenza della wildcard nel mapping impedisce la pubblicazione del progetto tramite FPSE (FrontPage Server Extensions) che da sempre utilizzo per la pubblicazione sui server MS. Ad ogni modifica del sorgente dovrei rimuovere la wildcard, pubblicare e poi rimettere la wildcard, mettendo irrimediabilmente a rischio la salute del mio fegato.
Tento di configurare il servizio FTP di IIS, ma mi arrendo presto per le pochissime opzioni che lo strumento mette a disposizione.
Risolvo definitivamente il problema della pubblicazione con Web Deploy 2.1, che installo attraverso il comodo "Microsoft Web Platform Installer".
13/02/2012
Un interessante database non relazionale, basato su XML e XQuery, open source:
"Sedna is a free native XML database which provides a full range of core database services - persistent storage, ACID transactions, security, indices, hot backup. Flexible XML processing facilities include W3C XQuery implementation, tight integration of XQuery with full-text search facilities and a node-level update language."
Bello ma...
30/05/2012
Dopo oltre tre mesi di gestazione e ripensamenti ho pubblicato ufficialmente la nuova incarnazione di questo sito, che fino ad ora era visibile su un altro dominio e conosciuto solo da pochi eletti :)
Gli obiettivi erano molteplici: