If you need to copy an XML document to another filtering it from a specific element node, a good solution could be the use of XSL. The starting point is the so called "identity" template as introduced with an example in the XSLT Recommendation itself:
XML:
-
<xsl:template match="@*|node()">
-
<xsl:copy>
-
<xsl:apply-templates select="@*|node()"/>
-
</xsl:copy>
-
</xsl:template>
The above template copies all attributes, @*, and all nodes being children of other nodes, node(): element nodes, text nodes, comment nodes and processing instruction nodes. Everything is copied. "Recursion" in the above case is when the template ends its job by calling other templates including itself.
Copying everything is no fun but becomes very useful when we add exceptions to the copying. It gets useful when we "copy everything but". The step by step approach in the copying is the big trick. For each attribute, element, etc., we can decide to do something else by adding other templates overruling the copying behavior.
Let's start hacking our XSL stylesheet to do something more fun...
Continue Reading »
Posted in XSL, english, hacking | No Comments »
Copio per realizzare la cassetta da ascoltare in macchina o da regalare alla fidanzata e nel farlo mi esprimo, creo qualcosa di mio, che mi identifica e dunque sono. Così riassumo come l'autore di questo ottimo saggio spiega come il dominio della copia sia passato col tempo dalle case discografiche al consumatore.
Il saggio in questione però parte dal principio, da quando dicendo "Vado a comprare la quinta di Beethoven" si intendeva lo spartito e non il cd, vengono toccati tutti i passaggi culturali legati alla musica e ai supporti su cui essa è stata scritta e registrata nell'arco del tempo. L'autore scrive con uno stile chiaro, molto ben documentato e per nulla pesante. A parte il titolo provocatorio, il libro in questione è un ottimo saggio che racconta della musica e dei sui supporti, dei musicisti e delle persone che hanno lavorato, inventato e amato per e grazie alla musica.
Il viaggio che Assante ci fa fare nel tempo con il suo racconto è piacevole e pervaso dell'amore che, evidentemente, lui stesso ha per la musica e per quegli oggetti che, come consumatore di musica, ha comprato, collezionato e curato. Anche la musica vista come bene di consumo viene portata allo scoperto e come essa attraverso i suoi modi di essere fruita non sia tanto "importante per la soddisfazione che può generare ma per come agisca in qualità di marchio di differenziazione socio-culturale".
Ho letto con piacere questo libro anche se, forse, non l'avrei mai comprato se non avesse avuto quel titolo un po' provocatorio e se non fosse stato pubblicato affidandosi a un sito di "self publishing" come ilmiolibro.it.
Continue Reading »
Posted in libri | No Comments »
I recently solved a problem common to many heavy used web application following an idea of a friend of mine.
The problem is how to efficently manage the sessions of a web application when the number of them is high (500,000 for example) and the use of them his quite frequent (˜50,000 pages/day in my case).
A common approach is to store web sessions in a database table where the session identifier and the expiry date are indexed, but due to the fact that each time a session is used (read) is also updated (written), while the number of them grows, the time spent to update the indexes associated to the web session table grows too. The result of this situation, relatively to the hardware you use, is that to update a session the application could take 2-5 seconds: a time that is not adequate to the world wide web.
So a better solution has to be applied or better we have to adapt the databse solution to the number of sessions that has to be managed.
I don't consider my solution particulary smart, but it's very simple, effective and could easily scale...
Continue Reading »
Posted in PHP, english, hacking | No Comments »
Grazie al CyBook Tour ho avuto la possibilità di provate uno dei più interessanti eBook reader basati sulla tecnologia
E Ink attualmente in commercio. L'oggetto in questione è il CyBook Gen3 (nella foto) della francesce Bookeen.
Per lavoro mi interesso eBook e per essere più precisi di ePublishing e quindi la settimana di prova che mi è stata concessa mi ha dato la possibilità di verificare alcune curiosità legate al mondo degli eBook reader di questo genere. In particolare mi sono soffermato a studiare i formati supportati e quali difficoltà si incontrano nella produzione di libri in tali formati perché siano utilmente fruibili su device di questo genere, soprattutto considerando di partire dai formati già disponibili all'interno di una produzione libraria tradizionale.
Continue Reading »
Posted in digital publishing, hardware, libri | 3 Comments »
If you want to delete, for example, only .bak files throughout a directory tree you can try with the following command:
$ find . -name *.bak -exec rm {} \;
Using the same approach you can solve more complex problems. For example you can delete recursively all directories older than one week:
$ find . -mtime +7 -type d -exec rm -rf {} \;
Another example, for subversion users, could be the way to clean up a check-out directory:
$ find . -name lock -exec rm {} \;
Or a way to drop all .svn metadata directories:
$ find . -name .svn -exec -type d rm -rf {} \;
Now it's up to you to find other examples...
Posted in english, hacking | 1 Comment »
La lettura attenta del saggio di Paolo Legrenzi sul credere fornisce gli strumenti per capire quando sia importante, nella nostra vita quotidiana, il credere ciò di cui non siamo siamo certi. Se non credessimo nelle cose, in noi stessi e negli altri la vita sarebbe impossibile.
Ho letto con piacere questo libro, l'ho trovato stimolante e accurato: l'autore spiega con esempi e molti riferimenti alla letteratura tutti i meccanismi del credere in tutte le sue forme.
Molto interessante l'analisi dei meccanismi attraverso i quali noi supercrediamo quando dobbiamo dare delle stime riguardo a noi, al nostro lavoro, alle nostre scelte e conoscenze. In particolare, questo supercredere lo vedo applicare da me e dai miei colleghi e collaboratori giornalmente nel lavoro che faccio (consulente software).
Immediatamente si spiega perché la realizzazione di software è spesso in ritardo rispetto alla data di consegna prevista, e perché un buon project manager deve saper applicare il giusto "moltiplicatore" di stima a finire in base alla propensione al supercredere di ciascun elemento del suo team: appliccare i giusti moltiplicatori aiuta a fare una stima complessiva più accurata.
Posted in libri | No Comments »
In vacanza in montagna con una bimba di 3 anni e mezzo e con un bimbo di due e mezzo, nelle giornate di mal tempo (per fortuna poche quest'anno) bisogna inventarsi cose divertenti che possano, almeno in parte sostituire la possibilità di correre nei prati.
Così mi sono messo a cercare se c'era un giochino da installare sul mio Nokia N800 che fosse stimolante per loro. Mi sono ricordato di Nako, un gioco di memoria non troppo difficile (tipo BIS) da far provare alla mia figlia più grande.
Il gioco, nella sua versione facile con 15 coppie di figure da trovare, potrebbe essere adatto, ma le figure mostrate di default sono le foto delle vacanze dell'autore: sicuramente libere da copyrigth, ma poco interessanti per un bambino.
Per fortuna l'applicazione permette d'usare set di immagini auto-prodotti. Sfruttando questa possibilità me ne sono fatto uno che i miei figli potessero apprezzare. Le icone usate le ho raccattate in giro per Internet e visto che prepare il file unico con le 21 icone è facile ma non banale né immediato, lo metto a disposizione per chi lo volesse usare.
Il file è un'unica immagine bmp di dimensione 2100x70 contenente le 21 icone (100x70 ciascuna) con estensione .tileset da posizionare nella directory /home/user/MyDocs/.images
Scarica il file
Quello seguente è uno screenshot di Nako che mostra una partita fatta con il mio set di icone.

Posted in Maemo, hacking | No Comments »
Avevo bisogno di un modem HSDPA da attaccare al mio MacBook che non fosse vincolato ad alcun operatore, che costasse poco e che facesse bene il suo mestiere.
Così per 79€ ho acquistato il SUPERINTERNETPACK di Wind con all'interno il modem Alcatel OneTouch X020. Sulla scatola c'è scritto che è necessario avere Windows XP o Vista, ma fidandomi del venditore l'ho provata sul mio Mac (con Mac OSX 10.5.4) è tutto ha funzionato a meraviglia!
Continue Reading »
Posted in hardware, mobile | 6 Comments »
Non so esattamente da quando ma è disponibile (finalmente) l'upgrade a Windows Mobile 6 per i Palm Treo 750 marcati 3.
L'applicazione (2.31) e le istruzioni per effettuare l'upgrade sono disponibili direttamente su sito della Palm.
Questo post l'ho fatto principalmente per H3G Italia i cui operatori del mitico 139 sostengono ancora che tale upgrade non sia disponibile.
Per quanto riguarda l'upgrade in sé l'ho effettuato senza problema alcuno seguendo scrupolosamente le indicazioni.
Posted in mobile | 1 Comment »
Niente di pericoloso o in qualche modo collegato ad usi impropri, ma semplicemente voglio raccontare un caso d'uso del famoso servizio di Google.
Penso vi sia capitato che qualcuno vi inviti in luoghi che il vostro GPS non conosce o che semplicemente non conosce in termini di indirizzo inteso come nome della via e numero civico. A volte poi il luogo non ha semplicemente indirizzo.
In questi casi bisogna affidarsi alle indicazioni di chi ci invita, alle nostre capacità e a volte alla fortuna.
Assumendo che abbiate un GPS stradale e che tale strumento abbia la possibilità di guidarvi in luogo dandone la posizione tramite le esatte coordinate di latitudine e longitudine, il problema si risolve facilmente con il nostro amico Google Maps.
Continue Reading »
Posted in misc | No Comments »