martedì 27 gennaio 2009

Alcuni consigli per ottimizzare le pagine web

Oggi sono incappato in questa pagina: Best Practices for Speeding Up Your Web Site. Ne avevo lette altre, ma questa mi pare particolarmente fatta bene..

Credo sia interessante da leggere. Certo alcuni consigli sono ovvi, altri impraticabili nella maggioranza dei casi (averla una Content Delivery Network!!) ma alcuni sono un ottimo spunto: a partire dai consigli sul posizionamento degli import: css all'inizio e javascript alla fine.. per arrivare all'ottimizzazione delle immagini (più che altro per gli strumenti utilizzati).

Da tener presente..

martedì 20 gennaio 2009

jQuery e brTip

In un progetto di un annetto fa avevo usato brTip per fare dei mouseover per visualizzare alcune informazioni. L'avevo già modificata per permettere di caricare via ajax il contenuto del tooltip, ma ogni tanto aveva un comportamento anomalo: sporadicamente mi spariva l'attributo "title" dell'elemento a cui avevo associato il brTip e da cui prende il testo da caricare nel tooltip stesso. Ebbene, era una cosa che non avevo mai debuggato seriamente, invece oggi mi sono intestardito, visto che volevo fare un po' di manutenzione ho dato un'occhiata, ed ecco il risultato:

il problema è che nel momento in cui si associa all'evento mouseover
svuota l'attributo title dell'elemento dell'albero dom a cui è associato.


self
.mouseover(function()
{
// Set content.
opts.txt = self.attr('title');
self.attr('title', '');

// Create the box.
_create();
})


Probabilmente serve a non far comparire anche l'attributo title per esempio sulle immagini..
Però in alcuni casi dovevo forzare la scomparsa degli eventuali popup presenti, questo comportava la non esecuzione dell'evento mouseout, che risistema il valore del title.. per ora ho aggiunto un flag per esplicitare di lasciare il title, in modo da essere compatibile con la release ufficiale.. però è una soluzione temporanea e non troppo elegante

Comunque generale questa plugin non mi è piaciuta tanto, ma quando avevo cercato era tra le più flessibili per creare tooltip con jQuery..

venerdì 16 gennaio 2009

Remote Capture?

Oggi ho riletto la pagina un progetto stupendo che mi aveva colpito parecchio già la prima volta che l'ho visto (più di un anno fa, appena mi avvicinavo al mondo del ds hacking): http://natrium42.com/halo/flight2/. Infatti oltre a questo progetto ha fatto cose interessanti anche sull'nds, per questo ero finito sul suo sito..

Veramente impressionante. La cosa che più mi ha interessato, oltre ai vari sensori, è il remote capture. Ovviamente per un progetto del genere c'è la necessità di automatizzare in qualche modo la macchina fotografica.
Visto che ho da diversi anni una kodak cx7525, ho deciso di dare un'occhiata a come funziona:

alrami:~# apt-get install gphoto2

attacco la macchina fotografica e comincio:

alrami:~# gphoto2 --list-ports
Dispositivi trovati: 7
Percorso Descrizione
----------------------------------------------------
disk:/ Media 'Volume (ext3)'
ptpip: PTP/IP Connection
serial:/dev/ttyS0 Porta seriale 0
serial:/dev/ttyS1 Porta seriale 1
serial:/dev/ttyS2 Porta seriale 2
serial:/dev/ttyS3 Porta seriale 3
usb: Universal Serial Bus
alrami:~# gphoto2 --auto-detect
Modello Porta
-----------------------------------------
Kodak CX7525 usb:


E fin qui tutto bene. Ora il momento cruciale (solo la parte di output che mi interessa)

alrami:~# gphoto2 --summary
Sommario della fotocamera:
Modello: CX7525 Zoom Digital Camera
[..]
Capacità dispositivo:
Scaricamento file, Eliminazione file, Caricamento del file
No Image Capture, No Open Capture, No vendor specific capture
[..]


No Image Capture..che palle..

Tra l'altro oggi mi si è definitivamente rotto il cellulare, a breve posto qualche foto visto che ci smanetterò un po'..

mercoledì 14 gennaio 2009

Un po' di retrocomputing..

Oggi lavoro da casa, in teoria per approfittare del fatto di non perdere ore sui mezzi per poter lavorare tranquillamente e trovare anche tempo da dedicare alla tesi.

Ma come ogni buon proposito che si rispetti, ha dovuto trovare un compromesso. In questo caso con la mia voglia di sistemare un po' la mia rete.
Sul barebone ho provveduto ad un aggiornamento del sistema (che comunque tengo abbastanza aggiornato, per cui poca roba, dopotutto) e ho sistemato un po' meglio l'utilizzo delle partizioni. Infatti all'inizio avevo fatto parecchie partizioni pensando di usarlo anche come server di test, per cui oltre al sistema per fare media center avevo messo un'altra installazione linux pensata più per fare da server.. quindi scarna ed ottimizzata. Ed era prevista anche una partizione per windows media center, che ho prontamente abbandonato.
Quindi ho messo in /etc/fstab anche tutte le altre partizioni, in modo da poterle gestire più agevolmente in futuro.

Poi sono passato ad altair, il pc su cui ho passato tanto di quel tempo che non credo riuscirò mai a liberarmente. Un pentium II @450 a cui ho portato la ram nel corso degli anni fino agli attuali 192 MB. Ne ha viste davvero di ogni.
Ultimamente l'ho un po' trascurato.. ma oggi ho deciso di accenderlo, l'obiettivo è fare un dist-upgrade, salvo dei file che non vorrei perdere sul barebone e poco altro. Pare che io gli sia mancato, al punto che all'avvio mi ha dato il messaggio "CMOS checksum error", probabilmente si è scaricata la batteria della scheda madre.. è bastato reimpostare il bios, in modo da riscrivere la parte di memoria corrotta che faceva fallire il checksum.
D'altra parte restare spenti per 388 giorni a quell'età non può non lasciare segni..

Jokosher

Jokosher è un editor audio multitraccia il cui motto è:
> Audio production made simple.
E hanno ragione: è uno strumento davvero intuitivo ed user friendly, con alcune caratteristiche in meno rispetto al più noto audacity.

Non ho ancora deciso su quale puntare e specializzarmi per le mie eventuali produzioni musicali domestiche, ma per ora ho notato una piccola stranezza:
Nella versione disponibile nei repository debian lenny (testing) non ho trovato nessun accenno al numero di release. Di solito questa informazione si trova nell'about, invece non c'è nulla del genere. Allora mi sono intestardito e ho provato nella maniera classica :


shatsar@erakis:~$ jokosher --version
0.2-SVN


Sul sito ufficiale hanno appena pubblicato la 0.10.. per cui eseguo un altro controllo:


shatsar@erakis:~$ dpkg --list | grep jokosher
ii jokosher 0.9-1 simple and easy to use audio multi-tracker


ecco, questo è più ragionevole.. comunque in attesa delle 0.10, per ora sto usando entrambi i software, ma credo che userò jokosher per vari test e registrazioni intermedie, mentre audacity per il lavoro definitivo. Almeno questo basandomi sulle mie prime esperienze in campo audio (vabbè, rippare i cd in mp3 non credo che conti..)

venerdì 9 gennaio 2009

Debian, udev e Phidgets

Saltando i soliti post di augurio di buon anno e di bei propositi, passo ad una questione che mi ha fatto perdere un po' di tempo: il mio Phidget RFID.

Prima di tutto è arrivato in tempo di record: ordinato dal sito ufficiale, in Canada, un giovedì pomeriggio di dicembre, è arrivato il lunedì successivo. E difatti la sera stessa ho iniziato a giocarci, come testimonia questo post.

Ho fatto un test completo della periferica e del software, tutto è andato splendidamente tranne una cosa: l'integrazione con udev.

Viene fornito uno file da mettere tra le regole di udev per far riconoscere al sistema la periferica in modo che vengano impostati i permessi giusti. In caso contrario la periferica potrà essere usata solo da root.

Quindi l'operazione da fare è copiare il file ( 51-phidgets.rules ) dentro /etc/udev/rules.d .
Data la premessa che udev segue le regole in ordine alfabetico, il motivo per cui questo non basta è che la regola che setta i permessi è stata rinominata (non so bene se è una caratteristica di debian o un'evoluzione di udev) da 20-permissions.rules a 91-permissions.rules .
Questo comporta che il file fornito con i Phidget imposta sì i permessi a 666, che vengono giustamente sovrascritti in 644 dalla regola 91-permissions.
Per risolverlo quindi ci sono diversi modi.
Quello più brutale è rinominare il file da 51-phidgets a phidgets, per esempio. Essendo in ordine alfabetico, questo verrà eseguito dopo 91-permissions.
Un metodo sicuramente più serio e pulito consiste nel cambiare il file impostando al posto di

ATTRS{idVendor}=="06c2", ATTRS{idProduct}=="0031", MODE="666"

una cosa del genere:

ATTRS{idVendor}=="06c2", ATTRS{idProduct}=="0031", GROUP="developers"


per ogni riga nel 51-phidgets.rules ed aggiungere il proprio utente al gruppo developers.
Ora tutti gli esempi e le applicazioni che utilizzano il Phidget RFID potranno essere eseguiti da utente normale.. "Che è meglio!"