Molti si spaccano la testa pensando a sistemi complicati per la staticizzazione di siti dinamici per renderli più "fault tolerant" oppure più appetibili per i motori di ricerca.
A volte la semplicità è dietro l'angolo, e con una righa di codice si può evitare di reinventare la ruota :)
Mai sentito parlare di wget? E' una comoda utility unix per scaricare file via web tramite vari protocolli, ad esempio http e ftp.(Se non usate sistemi unix, vi compatisco; comunque, per vostra fortuna, c'è anche un port di wget per win32).
Un'esempio preso da una bella guida in inglese:
wget --mirror –w 2 –p --html-extension –-convert-links –P c:\wget_files\example1 http://www.yourdomain.com
... beh, che dire, con una riga di shell ci facciamo un backup di un intero sito! Direi che vale la pena di approfondire, no?
Immagino già i cronjob che intaseranno tutta la rete... :)
martedì 16 ottobre 2007
Staticizzazione siti web
venerdì 5 ottobre 2007
Estendere applicazioni .NET con Python
Se ti trovi a che fare con grosso, brutto e pesante sistema software che non funziona per colpa di scelte sbagliate pregresse, allora ti trovi nella mia situazione.
Devo mantenere e sviluppare una grossa applicazione scritta in C# basata su un framework elefantino ed alquanto incompleto. Spesso, passare tra tutti i livelli della programmazione a 3 tier (Data/BO/UI) è un vero inferno, soprattutto perchè il sistema è basato sulla generazione statica di codice e manca totalmente di strumenti validi per lo sviluppo.
Ho recentemente studiato una soluzione: per tagliare la testa alla bestia (il framework), ho deciso di attaccarci un linguaggio di scripting in maniera da sviluppare agevolmente le funzionalità che mi servono, senza rimanere ingessato da un processo di sviluppo che è a dir poco pesantissimo.
Il linguaggio che ho scelto è python (l'avereste mai detto?). La vera sopresa è che integrarlo in un'applicazione .NET è una vera sciocchezza. Basta utilizzare IronPython, on porting dell'interprete per ambiente .NET.
A parte qualche reference, il codice per attivare l'interprete è semplicissimo:
using IronPython.Hosting;
using IronPython.Modules;
...
PythonEngine pe = new PythonEngine();
ClrModule clr = (ClrModule)pe.Import("clr");
pe.Execute((string)Codice);
La cosa più impressionante è la possibilità di scriptare i componenti della propria applicazione all'interno del python: occorre rendere visibili gli assembly che si vorranno utilizzare con la seguente sintassi:
clr.AddReferenceByPartialName("System.Windows.Forms"); // Dove al posto di System.Windows.Forms mettete il vostro assembly
Poi è anche possibile passare istanze di oggetti dal dominio dell'applicazione all'interprete python:
pe.Globals.Add("nav", Navigatore);
Un'idea e un consiglio forse banale è questo: sviluppate i nucleo dell'applicazione in C#, poi passate all'interprete python una façade per l'accesso alle istanze di oggetti scriptabili: sarete in grado di proseguire agevolmente lo sviluppo dell'applicazione in python per tutti i dettagli minori, rendendo possibile l'estensione della vostra applicaizone via scritp.
La soluzione è estremamente semplice da mettere in pratica, e sono disponibile per consigli e consulenze.
PS:
La stessa soluzione è possibile anche per applicazioni scritte in Java, utilizzando, ad esempio Jyton.
martedì 2 ottobre 2007
Office 2.0: Google Docs + Adobe Buzzword
Non è da molto che Google ha rilasciato la prima beta di Google Docs, ma già il mondo office sta cambiando.
In un batter d'occhio sembra che tutte le principali ditte di software abbiano compreso l'importanza di un "ufficio sempre presente" e disponibile ovunque 24/7.
Ecco che Microsoft trema mentre altre ditte più lungimiranti come Adobe si lanciano sulla nuova opprtunità Web2.0. E' notizia di queste ore infatti che anche Adobe, comperando l'editor di testi online "Buzzword", si sia lanciata nel mondo dell' Office2.0.

