Archivio per il mese di aprile 2008



Finalmente…

… un po’ di calma dopo un mese di lavoro intenso e frenetico in ufficio, programmato meticolosamente su un calendario disegnato su una lavagna a muro e culminato in 22 ore di lavoro su 48 tra domenica e lunedì scorsi. No, non per mancanza di organizzazione o pianificazioni sbagliate, semplicemente lo richiedeva l’evento e fino all’ultimo ci sono state diverse sòle altrui da sistemare. Poco male dal momento che, come previsto dato che siamo super-fighi (ok ok, passatemela e fate finta di niente), è andato tutto bene. Recupererò qualche arretrato del blog con un sunto casuale, approfondirò più avanti alcuni di questi punti:

  • Settimana scorsa mi è arrivato Expert F# e ieri sera gli ho dato una rapida occhiata: come libro mi sembra ben fatto e tutti gli esempi in codice più corposi sono scaricabili dal sito ufficiale. Non mi è ben chiaro però il motivo per cui, in attesa di iniziare a leggerlo seriamente, mi sono messo a fare esperimenti con Nemerle. Bah, misteri della psiche, nel dubbio ho acquistato anche The Ruby Programming Language visto che è aggiornato a Ruby 1.9 e che avevo voglia di un altro libro sull’argomento.
  • Qualche settimana fa ho acquistato una board Arduino, la versione Diecimila per la precisione, dopo averne scoperto il progetto qualche mese prima: tutta colpa sua che me lo ha ricordato indirettamente :-P In realtà non ho avuto tempo di giocarci molto visti gli impegni, inoltre per me è difficoltoso poiché di elettronica ci capisco poco (uno degli obiettivi è cercare di approfondire l’argomento), per ora sono andato sul classico cercando di pilotare un LCD 2×16 senza però usare nessuna delle librerie già a disposizione. Ho provato anche a configurare RAD su Mac OS X senza però riuscirci, anche se sospetto che il problema sia legato alla versione dell’ambiente di sviluppo di Arduino poiché ho installato l’ultima mentre ad oggi nella documentazione di RAD viene richiesta esplicitamente la versione precedente. More to come…
  • Ho installato il service pack 1 di Windows Vista e finalmente è sparito il lag che caratterizzava alcune operazioni, soprattutto in Explorer (non IE). Hanno sistemato anche le prestazioni del trasferimento di file via rete, prima raggiungevo la ridicola velocità di 11.5 MB/s ad andar bene su una rete gigabit trasferendo file tra 700 MB e 1 GB, ora raggiungo i 37 MB/s con gli stessi file prelevati dallo stesso computer e con le stesse configurazioni… a parte SP1 lato Vista, appunto. Non ho notato cambiamenti particolari sulla stabilità delle applicazioni e del sistema, del resto non ho più avuto problemi in questo senso da qualche mese a questa parte.
  • Da sempre sono fedele alla mia vetusta versione di ACDSee 2.43 risalente al 2000: velocissimo, leggerissimo e ha quasi tutto quello che mi serve. Non ho mai nemmeno considerato l’upgrade dal momento che le versioni immediatamente successive erano orrende e lente e quelle attuali non so nemmeno cosa facciano. L’altro giorno però ho scoperto che XnView nelle ultime versioni è migliorato parecchio rispetto a quando lo provai qualche anno fa e in più, oltre a essere free per uso non commerciale, ha un sistema di riconoscimento delle immagini simili/duplicate che parrebbe dare risultati interessanti. Quasi quasi provo a installarlo su Vista dove non ho nessun visualizzatore a parte quello di default del sistema.
  • Le HP XW8600 sono workstation impressionanti, soprattutto quando si tratta della versione dual Xeon quad-core. Ovviamente costano una cifra abnorme, ma del resto sembrerebbero valere il loro prezzo che probabilmente è stato deciso al chilogrammo visto che pesa 28 Kg a pieno carico. Negli ultimi giorni abbiamo avuto solo l’imbarazzo della scelta nel pensare a come metterle sotto stress al lavoro, non fanno una piega.
  • Il mese scorso ero alla ricerca di un nuovo set di auricolari per sostituire un paio di Sennheiser che, dopo 7 anni di onorato servizio nelle situazioni più disparate, ormai non ce la facevano proprio più. Per una clamorosa botta di culo sono riuscito a comprare un paio di AKG K 324 P bianchi a soli 39,90€ grazie a un’offerta scoperta per caso su Bow.it (leggasi: dovevo comprare altro quando ho visto scritto ultimo pezzo offerta speciale, inoltre la possibilità di ritirare in un BowPoint vicino all’ufficio risparmiando quindi le spese di spedizione ha contribuito ulteriormente). Solitamente lo stesso modello di auricolari si trova in negozi online tra i 50€ e i 55€ a cui occorre aggiungere le spese di spedizione, mentre in negozi normali li ho visti anche a 60€. Per essere auricolari suonano decisamente bene, posso ritenermi piuttosto soddisfatto.
  • DHL comincia a perdere colpi. Un pacco che aspettavo, ma che fortunatamente non era assolutamente urgente, è rimasto fermo in dogana per 1 settimana senza che io sapessi nulla, l’ho scoperto per caso andando sul sito e inserendo il codice della spedizione per fare il tracking dopo aver cominciato a nutrire qualche sospetto. Alla fine si aspettavano che io chiamassi in dogana per fornire il mio codice fiscale, cosa che normalmente hanno sempre fatto loro chiamandomi al cellulare per ottenere le informazioni necessarie allo sdoganamento. Il primo intoppo dopo anni di utilizzo… c’è sempre una prima volta, speriamo che rimanga l’unica però.

Pre e post hook a funzioni o metodi in PHP

Curiosando qua e là in PECL ho scoperto una nuova estensione per PHP abbastanza interessante, funcall, che permette di aggiungere degli hook a funzioni o metodi prima o dopo la loro esecuzione, invocandoli in automatico. Per esempio:

function funzione($foo, $bar) { echo "Foo: $foo, Bar: $bar"; } function pre_funzione($args) { // $args -> argomenti passati alla funzione (come array) } function post_funzione($args, $result, $time) { // $args -> argomenti passati alla funzione (come array) // $result -> contiene il valore ritornato della funzione // $time -> tempo impiegato nel processare la funzione } fc_add_pre('funzione','pre_funzione'); fc_add_post('funzione','post_funzione'); funzione('lol', 'wut');

In questo caso pre_funzione e post_funzione verranno invocate automaticamente chiamando normalmente funzione e, ovviamente, possono essere attaccate più di una pre / post callback con la possibilità di ottenerne l’elenco a runtime sotto forma di array attraverso la funzione fc_list. La prima cosa che può venire in mente a questo punto è il pattern design by contract e in effetti questa estensione potrebbe tornare utile in questo senso, anche se ammetto che è tutto da verificare (leggasi: voglio provare bene prima di esserne sicuro). Rimane comunque da verificare la stabilità di questa estensione, dal momento che parrebbe recente, e quanto impatti in termini prestazionali un suo eventuale utilizzo, ad ogni modo ho già un caso in cui potrebbe tornarmi utile. Giusto per andare leggermente off-topic: in Ruby 2.0 questa funzionalità sarà supportata nativamente mentre ad oggi è disponibile solo attraverso l’utilizzo di moduli come DesignByContract.