Modificare wikkawiki

Wikkawiki è un software molto interessante: minimale ma potente, e soprattutto semplice da modificare. Una necessità che mi deriva da:

  • Vorrei avere spazi nei nomi delle pagine e maiuscole/minuscole in formato libero. Wikkawiki necessita pagine con nome standard in CamelCase. Ciò non è piacevole, specie con nomi di pagina lunghi;
  • Wikkawiki non supporta pagine multiple. Ciò implica che pagine molto lunghe non possono essere spezzate facilmente, rendendone difficoltosa la lettura. Tikiwiki supporta questo concetto, ma né wikkawiki né mediawiki lo supportano.
  • Mi serve supporto LaTeX. Mediawiki usa un plugin scritto in OCaml. Non voglio aggiungere supporto OCaml, perché non ho competenza con questo linguaggio e se qualcosa non funziona non mi è possibile risolvere il problema velocemente.

Al momento, ho quasi terminato il supporto per gli spazi nei nomi, anche se vorrei poter rimpiazzare gli spazi con underscore, come fa MediaWiki. Ciò migliora la leggibilità dell’indirizzo web. Per il supporto LaTeX posso probabilmente riciclare un hack che avevo sviluppato per Tikiwiki. Non perfetto, ma funziona. Supporto pagine multiple, non penso sia difficile (spero). Non penso di rendere queste modifiche pubbliche, principalmente perché non le considero stabili o ben documentate. Forse dopo qualche test e pulizia, posso renderle scaricabili.

Inizierò a scrivere sul wiki appena ho supporto per pagine con lo spazio. Il resto può essere aggiunto dopo. Sfortunatamente ho molte cose da fare, e ho una coda di impegni molto lunga.

Corso di bioinformatica

Ho appena iniziato a tenere un corso di esercizi per bioinformatici. Pubblico le note che presento, man mano che il corso procede. Il detentore dei diritti di riproduzione è l’Università Tecnica Danese DTU (anche se la mia preferenza è per una licenza CreativeCommons). Possono esserci errori nelle note, principalmente perchè le sto preparando di fretta.

Non fare nulla (operazione neutra) in bash

Oggi ho dovuto “non fare nulla” in script bash. In python esiste “pass” per lo stessa finalità. In C, è possibile usare “;”. Ho trovato questo post di qualcuno con lo stesso problema, che propone “sleep 0″ o “A=0″ come operazioni neutre. Tuttavia, esiste un modo più appropriato: dal manuale bash

: [arguments]
No effect; the command does nothing beyond expanding arguments
and performing any specified redirections. A zero exit code is
returned.

In pratica, un semplice “:” effettua esattamente ciò che mi serve.

Namespacing di tabelle nei database

Stavo cercando di capire se in qualche database esista la possibilità di fare namespacing per i nomi di tabelle, ma google non ritorna alcuna informazione utile. Ciò è strano. In MySQL, le tabelle possono avere un namespacing specificando il database come prefisso (come in dbname.tablename), ma non è possibile, a quanto mi è dato vedere, definire qualcosa come dbname.namespacename.tablename. Questo mi consentirebbe di raggruppare tavole correlate all’interno di uno stesso namespace, e allo stesso tempo mantenerle tutte nello stesso database. Questa feature sarebbe utile anche durante il refactoring dello schema del database, o manipolando diverse versioni dei dati.

Mi domando la ragione dietro l’assenza di questa feature. Forse, la feature esiste, ma il nome è diverso (non “namespacing”) per cui google non produce risultato.

Come rimedio per il compito che devo effettuare, utilizzo underscore come separatori. Questo mi obbliga ad usare CamelCase per namespace e nomi tabella (es. NameSpace_TableName). Non una soluzione perfetta, ma almeno si documenta da sola.

Abbandonare TikiWiki per WikkaWiki

Sto pensando di rimuovere TikiWiki e rimpiazzarlo con WikkaWiki.

Le ragioni dietro la mia iniziale scelta di TikiWiki erano:

  • Pensavo fosse una buona idea avere un blog e un wiki sotto la stessa applicazione.
  • TikiWiki veniva fornito automaticamente dal mio hosting, bluehost, quindi avevo una cosa in meno di cui preoccuparmi, in particolare perché a quel tempo non avevo accesso shell, e quindi non potevo installare altri pacchetti, se non via ftp.
  • TikiWiki ha, secondo wikimatrix.org, sia ACLs per pagina che integrazione LaTeX, due features che mi servivano.

Tuttavia, mentre procedevo mi sono reso conto che non era il prodotto che mi serviva:

  • Per fare blogging, WordPress è decisamente migliore, sia per chi scrive che per chi legge, perché semplice e focalizzato allo scopo.
  • Tikiwiki richiede molte risorse. Ho ottenuto frequenti “CPU quota exceeded” navigando il wiki da solo mentre lavorando, in modo leggero, in ssh al contempo.
  • Nonostante il team TikiWiki proponga uno standard per la sintassi wiki non standardizzano il formato di link interno utilizzato dal wiki più usato in rete, ovvero Wikipedia/Mediawiki, promuovendo invece la loro sintassi. Standard in principio dovrebbero accettare e formalizzare, pulire ed estendere correnti pratiche de-facto, e l’approccio a parentesi quadre appartiene sicuramente a questo caso. Non ho effettuato ricerca sul loro punto a riguardo, quindi potrebbero avere delle buone ragioni. Inoltre, la loro proposta è una Request For Comment, quindi è possibile vengano effettuate modifiche. In ogni caso, la sintassi di TikiWiki non mi soddisfa, in particolare per esigenze di portabilità.
  • Non mi piace il suo look-and-feel in genere. Ho provato molti temi, ma nessuno soddisfa i miei requisiti di semplicità e pulizia. L’interfaccia è molto confusionaria e difficile da usare, amministrare e modificare.
  • L’integrazione LaTeX è disabilitata per ragioni di sicurezza. Ho dovuto trafficare un bel po’, e ho dovuto sviluppare il mio wrapper personale per farlo funzionare. Penso di aver già speso 20 ore, ma non sono ancora soddisfatto al 100 %.
  • Il meccanismo di ACL è abbastanza complesso, e funziona come un sistema a capability. Capabilities possono essere assegnate a diverse categorie di utenti. Sfortunatamente, sembra che si possa assegnare capabilities (come per esempio “consenti lettura di pagine”) a una categoria di utenti (per esempio, utente anonimo), ma non è possibile rimuovere capability assegnate globalmente su pagine specifiche. Per quello che vedo, per rendere una pagina specifica non leggibile, bisogna togliere la capability in lettura all’utente anonimo (rendendo l’intero wiki non leggibile agli utenti occasionali) e poi assegnare ad ogni pagina la leggibilità per anonymous. Ciò mi pare molto strano, ma google non aiuta, e WikkaWiki ha un metodo decisamente più semplice.

Adorerei usare Mediawiki, ma purtroppo non è studiato per accurato management dell’accesso, qualcosa che considero importante per un eventuale gruppo di lavoro. Ho installato WikkaWiki perché ho già una buona esperienza ad usarlo. Spostare tutto sarà abbastanza impegnativo. Dovrò installarlo, portare le pagine da Tiki, cambiare la sintassi wiki, e implementare l’interfaccia LaTeX.

Nuovi libri nella mia libreria personale

Ho appena aggiunto due nuovi libri alla mia libreria personale: Refactoring Databases: Evolutionary Database Design e The Mythical Man Month and Other Essays on Software Engineering.

Sto leggendo l’ultimo. Ci sono molte ragioni per cui questo libro è un classico. Fornisce una incredibile descrizione su come il project management funziona in casi reali, e quali sono i passi fondamentali e le strategie per gestire errori ben noti e problemi durante lo sviluppo di sistemi di notevole complessità. È di ampio respiro, mai troppo specifico, ma pieno di informazioni importanti. Un libro che suggerisco caldamente.

Rilasciato Python 3000 alpha

Python 3000 alpha è stato appena rilasciato, e lo sto scaricando giusto adesso. Ci sono molte novità, e un tool di conversione è a disposizione per portare i sorgenti 2.x alla versione 3.0.

reCaptcha: digitalizzare libri

Ho aggiunto reCaptcha ai commenti. reCaptcha è un sistema di Captcha, ovvero un sistema per differenziare un umano da un programma automatico (un “bot”, normalmente utilizzato per scrivere spam). Tipicamente, un captcha chiede di scrivere le lettere presenti in un’immagine, un compito che un umano riesce a fare con semplicità, ma un programma no. Sistemi di riconoscimento ottico dei caratteri (Optical Character Recognition, OCR) possono essere usati in principio, ma non sono particolarmente accurati, in particolare se il testo è molto distorto o viene aggiunto un disturbo all’immagine.

reCaptcha porta questo concetto ad un altro livello. Utilizza i tanti piccoli contributi umani dati dal risolvere captcha per digitalizzare libri. In altre parole, più commenti scriverete, più velocemente avverrà la trasposizione di libri in copia digitale.

Bluehost, wordpress e il From nell’indirizzo di registrazione

Durante l’installazione e configurazione di WordPress, mi sono reso conto che le email di registrazione erano inviate con uno strano login(at)box.bluehost.com, invece di qualcosa di più user friendly, tipo wordpress(at)the_site. Dopo un po’ di ricerca nei sorgenti di WordPress ho trovato che WordPress usa la funzione php mail(), e che l’indirizzo From viene correttamente impostato a wordpress(at)the_site, di conseguenza le impostazioni di WordPress non erano la fonte del problema. Dopo un po’ di esperimenti ho scoperto la soluzione.

In pratica, quando si imposta WordPress su bluehost, l’indirizzo From nella mail che gli utenti ricevono quando si registrano è la mail generica fornita da bluehost quando si effettua il login, tranne se si crea un indirizzo wordpress@your_site dal cPanel. Dopo che questa operazione viene effettuata, la mail di registrazione sarà inviata con l’indirizzo wordpress@your_site senza ulteriori manipolazioni.

Aggiornate pagine “Informazioni personali” e “Libreria”

Ho appena aggiornato le pagine “Informazioni personali” (About me) e “Libreria” (Bookshelf). Manca una mia foto, ma la aggiungerò appena possibile. La pagina di “Libreria” contiene un link alla mia lista degli acquisti Amazon. Comprerò e studierò altri libri appena esaurisco la mia attuale coda.