Insegnamenti di Rasmus Lerdorf: verificare gli include con PECL/Inclued

Share on TwitterSave on DeliciousDigg ThisShare via email

Sono stato la settimana scorsa all’ottimo phpday 2009. Uno dei talk che mi ha colpito maggiormente è stato quello si Rasmus, l’inventore del PHP. Veramente ha tenuto due talk, uno sulla storia del php (Welcome) e l’altro, sconvolgente, sull’ottimizzazione (Simple is Hard). Rasmus era piuttosto infervorato sulla questione ottimizzazione, semplicità del codice e conseguente abbandono dei framework.
Ha spiegato alcune tecniche per la verifica dei colli di bottiglia dei siti, sia con benchmark sia con strumenti di diagnostica. Ho provato siege (si scarica e si lancia) e sto provando inclued che essendo un PECL si installa da riga di comando con:

# pecl install inclued

Ma con mia grande sorpresa non si è installato

running: phpize                                    
sh: phpize: command not found                      
ERROR: `phpize' failed

Grrrrr. Alla ricerca del comando perduto:

# apt-get install php5-dev

Rilanciando il comando, pecl scarica il pacchetto, lo compila e lo installa. Cerca di modificare la configurazione di php.ini senza successo, quindi procedo con inserire la configurazione in /etc/php5/conf.d/inclued.ini

extension=inclued.so
inclued.enabled=1
inclued.dumpdir=/tmp

Fatto, ora inizia il divertimento… ma solo DOPO aver riavviato apache (altrimenti si perdono decine di minuti a chiedersi perchè nonostante gli sforzi /tmp rimane vuota!).
Ricaricando una qualsiasi pagina vengono creati file /tmp/include.XXXXX.1 e a questo punto si possono graficare:

$ php /usr/share/php/gengraph.php -i inclued.27843.1
Written inclued.out.dot...
$ dot -Tpng -o 1.png inclued.out.dot

Ho testato la home page di un’applicazione che sto scrivendo con Symfony 1.2, se volete vedere la devastazione dei risultati guardate l’immagine.

Albero di include/require di un progetto symfony

Albero di include/require di un progetto symfony

IPC 2008 Marble game: the solution!

Share on TwitterSave on DeliciousDigg ThisShare via email

I’m happy to announce that I’ve found the solution! Marble game (only one level) is solved with 30 steps and the program runs only 173734 iterations!!! :P
You can try to decrease the limit (now 30) and reach the solution quickly… but be aware, you may not find the solution at all.

Donwload: marble_game.zip (1.3KB)

$ php marble_game.php

And wait… ;)

Far convivere Symfony 1.0, 1.1 e 1.2

Share on TwitterSave on DeliciousDigg ThisShare via email

A volte capita di dover far convivere sulla stessa macchina di sviluppo diverse versioni si Symfony. Ci sono diverse soluzioni per poter realizzare il nostro scopo e qui vi esporrò quella che utilizzo più frequentemente.
Presupposto che la maggior parte delle applicazioni siano scritte per SF 1.0 oppure che questo sia già installato via PEAR e presupposto che vogliamo installare anche la 1.1 e la 1.2 sulla stessa macchina, procediamo come segue:

  • installazione di SF 1.0 via PEAR
  • installazione di SF 1.1 e 1.2 via SVN

L’installazione classica di SF da manuale via PEAR è la seguente (la versione corrente è la 1.0.18):

$ pear channel-discover pear.symfony-project.com
$ pear install symfony/symfony-1.0.18

In questo modo quando lanciamo il comando

$ symfony -V

otterremo la versione appena installata

symfony version 1.0.18

Ora procediamo con l’installazione di Symfony 1.1 da SVN: prendendo spunto dal manuale prendiamo la versione corrente, non quella di sviluppo ma quella stabile (ad oggi la 1.1.3).
Prepariamo la directory che ci servirà come deposito di SF 1.1 e 1.2

$ mkdir ~/symfony_rep
$ cd ~/symfony_rep

Ora prendiamo l’ultima release del ramo 1.1

$ svn co http://svn.symfony-project.com/tags/RELEASE_1_1_3
$ ln -s RELEASE_1_1_3 1.1

Facciamo la stessa cosa per la 1.2 (se ne avete bisogno) ma in questo caso non essendo ancora stata rilasciata la stabile dovremmo prendere la versione di sviluppo come da manuale

$ svn co http://svn.symfony-project.com/branches/1.2

Ottimo, abbiamo tutte e tre le versioni installate, ora non ci resta che aggiungere 2 alias per rendere l’utilizzo della versione 1.1 e 1.2 più semplice.

$ alias sf11='~/symfony_rep/1.1/data/bin/symfony'
$ alias sf12='~/symfony_rep/1.2/data/bin/symfony'

Questi alias per comodità potete inserirli nel vostro ~/.bashrc così che siano sempre disponibili ad ogni riavvio (o apertura di nuove shell).
Se tutto è andato bene, digitando i vari sf11 e sf12 doveste ottenere il seguente risultato:

$ sf11 -V
symfony version 1.1.3 (/home/VOSTROUTENTE/symfony_rep/RELEASE_1_1_3/lib)
$ sf12 -V
symfony version 1.2.0-DEV (/home/VOSTROUTENTE/symfony_rep/1.2/lib)

Buon lavoro!

Dominio in vendita

Share on TwitterSave on DeliciousDigg ThisShare via email

Non il mio… ma volevo comprare qualcosa di più simpatico per il mio blog tipo k3a.net
Sono andato a vedere se era libero (povero illuso) e ho trovato che era in vendita da alcuni simpaticoni che hanno monopolizzato una miriade di domini, praticamente tutti i domini con 3 e 4 caratteri sono stati registrati,
Il costo? 175$ !!!
Mi sa che a meno di una vincita al lotto, per il momento ho altro da acquistare… miii 175$ per un dominio…

TODO: Tante Originali Decisioni Obsolete

Share on TwitterSave on DeliciousDigg ThisShare via email

Spulciando nel mio hard disk in cerca di qualcosa da cancellare (lo spazio libero è sempre poco!) mi sono imbattuto in una marea di file “*todo*”: casa_todo, lavoroX_todo, lavoroY_todo, festa_todo, viaggi_todo, echechecchioneso_todo, etc_todo, etc_todo.
Questa miriade di piccoli e preziosi e (quasi tutti) dimenticati file che albergano allegramente nel mio PC, sono il frutto del tentativo più o meno riuscito di organizzare i miei pensieri. Sono tutti file di testo con un semplice elenco, spesso commentato a dovere, dove cercavo di collocare le idee che avrei voluto mettere in pratica nel medio/breve periodo.
Ricordo una frase sentita nel DVD di Revolution OS (si lo ammetto sono stato l’unico a comprarlo in Italia), che diceva verosimilmente: [parlando di laureandi] “… la maggioranza degli studenti finisce per occupare la gran parte del tempo a cercare di diventare più produttiva, se invece lavorassero alla tesi la finirebbero in un giorno”.
Bhe più o meno è quello che ho fatto io (non per la tesi), ho passato gran parte del mio tempo a cercare il modo di essere più produttivo e questi file TODO sono uno dei tentativi.
Come concetto lo uso ancora ma ora i pensieri sono raccolti in pagine ordinate di KJots (alternativa KDE di Tomboy per Gnome).
I file di TODO sul mio HD ora sono decisamente obsoleti ma sono orgoglioso che molte delle cose scritte in quei piccoli scrigni testuali siano state realizzate.

Pulire gli arredi dell’acquario

Share on TwitterSave on DeliciousDigg ThisShare via email

Oggi pomeriggio mi sono dedicato alla pulizia dell’acquario il quale, dopo un mesetto di noncuranza, risultava quasi indecende.
Dopo qualche ricerca infruttuosa sulla pulizia degli arredi, una telefonata a Johnny mi ha chiarito le idee: brusca e acqua fresca!
E’ una della poche volte che il Web mi ha deluso… non ho trovato nessuno che mi indicasse le tecniche di pulizia degli arredi del mio acquario in particolare dei vari sassi che erano pieni di alghe; alghe piccole incastonate nei pori delle rocce.
Volevo prendere la brusca classica di plastica che si utilizza per lavare i panni quando mi sono ricordato di avere forse qualcosa di più incisivo: lo scovolino con setole metalliche!!!
Ha la forma di uno spazzolino da denti, leggermente più grande, con setole metalliche color oro.
Con lo scovolino, acqua e molto olio (di gomito) ho portato allo stato originale (quasi) i miei sassi.
Dopodichè mi sono dedicato alla potatura delle piante (anche loro un po’ annerite dalle alghe): ho disboscato un terzo delle foglie, il risultano non è affato male ;)

Vi riporto il prima e dopo del sasso centrale (particolare)

Arredo prima del trattamento

Arredo prima del trattamento

Arredo dopo il trattamento

Arredo dopo il trattamento

digiKam 0.10.0-beta2 per KDE4

Share on TwitterSave on DeliciousDigg ThisShare via email

Il mio programma preferito di manipolazione/gestione delle foto è finalmente giunto ad una versione usabile.
Ebbene si, nonostante sia una beta con diversi (molti) bug da risolvere va in crash relativamente poco e si possono vedere già una miriade di nuove funzionalità.
Forse la più impressionante per me è stata questa:

Ci pensate di poter disegnare (scarabocchiare) un pezzo di foto e lui ve la trova nella vostra galleria!!!! Spettacolare!!!!

E cosa dire del supporto per il geo-tag delle foto non solo in associazione a GPS ma anche graficamente (tipo Google earth) e soprattutto la ricerca tramite selezione di una zona geografica come da video.

Non vedo l’ora che esca la versione finale… a Natale!!! Nel release plan ci sono un totale di 6 beta e 2 RC

38,6

Share on TwitterSave on DeliciousDigg ThisShare via email

Non sto giocando al lotto (anche se si potrebbe fare ;) ) ma è la mia attuale temperatura corporea: ho la febbre!!!! ;(
Speriamo che domani con una dozzina di aspirine possa passare… devo fare ancora un sacchissimo di cose per la festa di sabato… doppio-sigh e buona notte

Sigma 18-200mm f3.5-6.3 DC Optical Stabilizer HSM

Share on TwitterSave on DeliciousDigg ThisShare via email

sigma 18-200 OS HSM

sigma 18-200 OS HSM

Indovinate cos’è? Il mio regalo di compleanno della Konsorte!!!
Questa mattina al risveglio ho avuto la sorpresa, forse memore del nostro ultimo viaggio, mi ha regalato questo spettacolare obiettivo per la mia Nikon.
L’ho provato subito (dopo aver ricaricato 10 minuti una delle 2 batterie sempre scariche :P ).
E’ leggermente più pesante degli obiettivi del Kit standard della Nikon (18-55 e 55-200) ma è molto veloce nella messa a fuoco. Lo stabilizzatore ottico fa il suo lavoro bene, ho provato a mano libera un particolare a 200 a distanza di un paio di metri con e senza OS e la differenza si nota!
Vi posto un paio di foto a 18 e 200 (non guardate la qualità artistica ma la duttilità dell’obbiettivo).

Questo è il vialetto di casa a 18mm

Vialetto, scatto a 18mm

Vialetto, scatto a 18mm

Questo è un particolare fatto a 200mm

Vialetto, scatto a 200mm

Vialetto, scatto a 200mm

Avete indovinato dov’è la seconda rispetto la prima? Questo è il confronto tra le due

Confronto 18 e 200

Confronto 18 e 200