Claudio Cherubino's blog Life of a Googler

28Jul/071

Vacanze!

Finalmente anche io ho diritto alle meritate vacanze.

Da oggi e per una settimana intera sarò in un villaggio turistico e non avrò altri impegni che andare a mare e oziare, e soprattutto non avrò accesso ad Internet!

Ci si vede il 6 Agosto...

Tagged as: 1 Comment
25Jul/074

Fermati, cretino!

Non credo che sia un prerogativa della mia città , ma di sicuro a Catania è una pratica molto, troppo, diffusa.

Di cosa sto parlando? Dei deficienti che parlano al telefonino mentre guidano scooter, moto o qualunque altro mezzo a due ruote.

Il bello è che lo fanno come se fosse la cosa più normale del mondo, non capendo che rischiano di causare un sacco di incidenti, nei quali normalmente hanno anche la peggio!
Ma che gli costa fermarsi un minuto per parlare al telefono con calma, invece di continuare a guidare?

E soprattutto dove sono i vigili, gli unici in grado di stroncare questa mania?

Peccato non avere una foto di questi geni assoluti, mi avrebbe fatto comodo per lanciare la campagna "FERMATI, CRETINO!".

Chi mi prepara il banner da mettere nel sito?

23Jul/0713

Giornalisti italiani, che delusione

Si può ridurre la letteratura al livello del gossip su un giornaletto del calibro di Novella 2000?
A quanto pare si, ed è proprio quello che è stato dimostrato ieri dai giornalisti del Belpaese.

E' appena uscito l'ultimo libro della saga di Harry Potter e praticamente tutti i telegiornali hanno fatto a gara per svelarne il finale prima degli altri!

Ha iniziato Studio Aperto nei suoi titoli di testa, ma si sa che quello non è un vero telegiornale.
Subito dopo è stata la volta del Tg5 e il Tg1, praticamente in contemporanea e soprattutto a tradimento.

Vabbè, conoscendo il livello di questi telegiornali e sapendo bene che in Italia non esiste cultura dei libri, mi aspettavo notizie di questo genere e sono stato abbastanza rapido a spegnere il televisore prima che potessero rivelarmi tutto ciò che accade nell'ultima avventura di Harry Potter.

La sfiga, però, è sempre in agguato, e quando ero ormai convinto di essere riuscito a sopravvivere all'invasione degli spoiler, ecco la fregatura: apro l'home page di Repubblica.it e mi trovo in bella vista il finale della saga!

Ho ragione ad essere incazzato? :evil:

20Jul/075

Vaffanculo Day

Non sono un fan sfegatato di Beppe Grillo, però devo ammettere che a volte ha delle idee veramente geniali e di sicuro non si fa scrupoli di fronte a niente e nessuno per portare avanti ciò in cui crede.

La sua ultima pensata ha già  raccolto quasi 100.000 adesioni e si tratta del Vaffanculo Day, un giorno dedicato alla partecipazione popolare contro la classe politica, che nonostante più di 60 anni di governi diversi, non è mai cambiata.

Il primo Vaffanculo Day sarà  il prossimo 8 Settembre e per avere maggiori informazioni è possibile registrarsi sul sito dedicato.

Di sicuro si porteranno avanti 3 proposte di legge, denominate "Parlamento Pulito":

  1. No ai parlamentari condannati
    Nessun cittadino italiano può candidarsi in Parlamento se condannato in via definitiva, o in primo e secondo grado in attesa di giudizio finale.
  2. Due legislature
    Nessun cittadino italiano può essere eletto in Parlamento per più di due legislature. La regola è valida retroattivamente.
  3. Elezione diretta
    I candidati al Parlamento devono essere votati dai cittadini con la preferenza diretta.

Voi ci sarete?

Banner Vaffanculo Day

16Jul/0713

10 trucchi per migliorare le performance di MySQL

Da qualche mese sto studiando per ottenere la certificazione Certified MySQL 5.0 Developer e dopo aver passato il primo dei due esami, mi sto ovviamente concentrando su alcuni aspetti più avanzati, ad esempio l'ottimizzazione delle query e del sistema.

Un paio di giorni fa ho trovato un articolo molto interessante sull'argomento, scritto da Jay Pipes, il Community Relations Manager di MySQL AB, sul suo blog, e ho pensato di tradurlo in italiano e pubblicarlo qui, ovviamente con la benedizione di Jay.

Si tratta di 10 domande frequenti relative all'ottimizzazione delle query, e in generale di un server MySQL, penso che una lettura possa risultare interessante a qualunque sviluppatore e amministratore che abbia a che fare con questo database:

  1. Quale di queste due query è più veloce?

    SELECT ... WHERE some_col IN (1,2,3) or
    SELECT ... WHERE some_col = 1 OR some_col = 2 OR some_col = 3

    Nessuna. L'ottimizzatore riscrive l'operatore IN() come una serie di condizioni OR, pertanto non ci saranno differenze nelle performance. Si usa IN() per rendere il codice più conciso e leggibile.

  2. Dove vengono memorizzati in cache i record delle tabelle MyISAM?

    Da nessun parte. MyISAM non mette in cache i record delle tabelle come fa InnoDB con il suo innodb_buffer_pool. Invece MyISAM si appoggia sul sistema di buffering del sistema operativo sottostante per bufferizzare i record delle tabelle mentre vengono letti dal file .MYD. Il key_buffer MyISAM memorizza solo i blocchi indice, non i record con i dati.

  3. Quale di queste due query è più veloce?

    SELECT ... FROM t1, t2 WHERE t1.id = t2.id
    SELECT ... FROM t1 INNER JOIN t2 ON t1.id = t2.id

    Nessuna. L'ottimizzatore riscrive la seconda query nella prima forma. Lo stile SQL che adottate, ovviamente, dipende esclusivamente da voi, tuttavia vi consiglio di usare il secondo stile (noto come sintassi ANSI) invece del primo (noto come sintassi Theta) per un paio di ragioni:

    * MySQL supporta esclusivamente inner e cross join con la sintassi Theta. Tuttavia, MySQL supporta anche INNER, CROSS, LEFT e RIGHT join se si usa la sintassi ANSI. Mescolare i due stili può portare a del codice SQL poco leggibile.
    * E' molto facile scordare una condizione di join usando lo stile Theta, specialmente quando si collegano molte tabelle insieme. Dimenticarsi per sbaglio una condizione di join nella clausola WHERE porterà  ad un prodotto cartesiano (e non è buono!). La sintassi ANSI è più esplicita ed è più difficile dimenticarsi di una condizione di join.

  4. InnoDB è più veloce/migliore di MyISAM?

    Dipende. Non piace a nessuno questa risposta, ma è assolutamente vera. Ci sono vantaggi e svantaggi in ogni storage engine storage engine. MyISAM ha delle ottime performance in lettura e nel caso di grossi carichi, e richiede poche risorse. InnoDB, invece, è preferibile nel caso di grossi UPDATE, quando si ha necessità  di avere transazioni, integrità  referenziale e ricerche veloci su singola chiave. Si deve scegliere l'engine in base alle esigenze della propria applicazione e non secondo dei dettami generali del tipo "usate solo l'engine XXX".

  5. CHAR è più veloce di VARCHAR?

    No, non proprio. Se ci sono differenze di performance, sono trascurabili. Usate CHAR se sapete che i vostri dati saranno formati da un determinato numero di caratteri (come un numero di previdenza sociale, ad esempio), altrimenti VARCHAR.

  6. VARCHAR(80) è più veloce di VARCHAR(255)?

    Si, ma probabilmente non nel modo in cui pensate. Per quanto ne so io, non c'è differenza (almeno nelle versioni più recenti di MySQL e InnoDB) nei tempi necessari per recuperare colonne VARCHAR di differente lunghezza dal disco o dalla memoria. C'è invece una grande differenza in uno dei seguenti scenari:

    * Viene creata implicitamente una tabella temporanea per gestire una clausola GROUP BY o ORDER BY ed è presente una colonna VARCHAR nell'istruzione SELECT
    * Viene creata esplicitamente una tabella temporanea che contiene una colonna VARCHAR

    In questi casi la lunghezza della colonna VARCHAR viene presa in considerazione. La motivazione? Le tabelle temporanee in memoria non sono altro che tabelle dello storage engine MEMORY che, per qualche ragione, tratta tutte le colonne VARCHAR(X) come CHAR(X).

    Ciò comporta che se definite due campi, uno come VARCHAR(255) ed un altro come VARCHAR(128), il secondo consumerà  la metà  dello spazio quando viene allocato in una tabella temporanea. Più record possono entrare all'interno di max_heap_table_size, e meno sono le probabilità  di richiedere swapping su disco (cercate SHOW STATUS LIKE 'Created_tmp_disk_';), portando a migliori performance generali.

  7. Ci sono cali di performance quando si effettuano join fra tabelle di storage engine differenti?

    No. Eseguire una SELECT su storage engine multipli va bene. Si hanno risultati impredicibili quando si mescolano engine transazionali e non-transazionali all'interno di una transazione che modifica i dati.

  8. Se cambio una tabella derivata in una vista, le performance migliorano?

    No. Una vista è semplicemente una tabella derivata (almeno quando viene creata usando l'algoritmo TEMPTABLE). Ciò implica che non ci sono differenze di performance fra una normale tabella derivata e una vista. La vista rende semplicemente il codice più leggibile e meno "componentizzato".

  9. Se vedo "Using temporary; Using filesort" nella colonna Extra dell'output di un comando EXPLAIN, vuol dire che è stata creata una tabella temporanea su disco?

    No. Una tabella su disco viene creata solo nelle situazioni seguenti:

    * Quando la dimensione della tabella temporanea creata implicitamente (da un GROUP BY o ORDER BY su una colonna non indicizzata) è maggiore sia di tmp_table_size che di max_heap_table_size
    * Quando ci sono campi di tipo BLOB o TEXT nell'espressione SELECT
    * Quando avviene una scansione completa della tabella che eccede il valore della variabile read_buffer_size (configurata per thread della connessione)

    Questi sono gli scenari (che ho in testa) che possono causare la creazione di tabelle temporanee su disco. Ce ne potrebbero essere altri. In ogni caso la tabella temporanea creata su disco sarà  una tabella MyISAM.

  10. E' possibile effettuare una FULL OUTER JOIN in MySQL?

    Si. Si usino sia LEFT che RIGHT JOIN nella stessa condizione di join della query, in questo modo:

    SELECT *
    FROM A LEFT JOIN B ON A.id = B.id
    UNION ALL
    SELECT *
    FROM A RIGHT JOIN B ON A.id = B.id
    WHERE A.id IS NULL

13Jul/071

GoPHP5

GoPHP5 Logo

La versione 5 di PHP è stata rilasciata pubblicamente 3 anni fa, eppure, nonostante i grandissimi passi avanti rispetto alla versione precedente, ancora la sua diffusione è molto bassa.

Il problema del passaggio a PHP5 non è solo tecnico ma anche "politico", infatti moltissime applicazioni disponibili su Internet non sono compatibili con la nuova versione del linguaggio e i siti di hosting non vogliono rischiare di essere abbandonati dai propri utenti perchè i loro programmi non girano più.

Ci voleva quindi una iniziativa forte che "obbligasse" gli sviluppatori delle applicazioni PHP più diffuse a sforzarsi per renderle compatibili con PHP5, facilitando quindi la transizione ai provider.

Questa iniziativa adesso esiste e si chiama GoPHP5, e propone come scadenza per l'adozione di PHP 5.2.0 (o successivi) il 5 Febbraio 2008.
Hanno già  aderito in molti, ad esempio phpMyAdmin o Drupal.

Io personalmente non posso che essere felice di questo passaggio, da un paio di anni per le mie applicazioni uso solo PHP5, ma sviluppando software custom mi è molto più facile richiedere l'installazione dei pacchetti che mi servono.

E voi? Avete poco più di 200 giorni per adeguarvi...

Tagged as: , 1 Comment
12Jul/073

Nudi per il risparmio energetico

Beh, non proprio nudi, ma almeno senza giacca e cravatta in ufficio.
E' questa la nuova politica dell'ENI per risparmiare sulla bolletta e diminuire l'inquinamento.

L'amministratore delegato dell'azienda, Paolo Scaroni, ha lanciato l'iniziativa "l'ENI si toglie la cravatta", invitando tutti i dipendenti a lasciare a casa l'abbigliamento formale in modo da poter tenere più bassa l'aria condizionata e risparmiare energia.

Anche solo alzando di un grado la temperatura all'interno dell'edificio principale dell'ENI si taglierà  il consumo di energia elettrica del 9% e si produrranno 126 tonnellate di CO2 in meno.

L'iniziativa è stata accolta con piacere dal personale, io però sono troppo avanti rispetto a loro: non metto mai giacca e cravatta a lavoro, e adesso potrò anche dire che lo faccio solo per salvaguardare l'ambiente!

5Jul/073

Facciamo le magie come Harry Potter!

Quando sono usciti i primi filmati che mostravano le potenzialità  della nuova console di Nintendo, il Wii, i commenti e le speculazioni sul nuovo sistema di controllo si sono sprecati, sia in positivo che in negativo.

In particolare si sono formati due gruppi di super-fanatici, che vedevano finalmente l'opportunità  di calarsi pienamente nei loro mondo dei sogni, rispettivamente quello di Star Wars e di Harry Potter.

I primi aspettano ancora la possibilità  di usare il WiiMote per manovrare la spada laser, ma per i secondi il momento è giunto.

E' uscito infatti il videogame Harry Potter e l'Ordine della Fenice, il primo che consente di mimare i movimenti della bacchetta magica con il telecomando Wii.

Di seguito il trailer che mostra proprio questa caratteristica:

Io l'ho già  ordinato...

4Jul/073

Bill Gates non è più il più ricco del mondo

Negli ultimi 13 anni Bill Gates era sempre stato in testa alla classifica delle persone più ricche del mondo, ma pare che quest'anno si sia tristemente piazzato in seconda posizione!

Le sue ricchezze si fermano a soli 56 miliardi di dollari e quindi è stato un gioco da ragazzi per il messicano Carlos Slim superarlo con i suoi 67 miliardi.

Per chi non lo sapesse, Slim è il proprietario di America Movil, la compagnia telefonica messicana che si vociferava fosse intenzionata a comprare Telecom Italia qualche mese fa.

In ogni caso Bill Gates ha dichiarato di non essere dispiaciuto della notizia.
Voi vi lamentereste con 56 miliardi di dollari???

3Jul/073

Phishing anche per Google

Non mi era ancora capitato di ricevere tentativi di phishing che riguardavano GMail, ultimamente andavano di moda quelli relativi a Poste Italiane, ma pochi minuti fa ho ricevuto questa mail, con oggetto "URGENTE - Il vostro conto GMail sarà  chiuso":

Caro cliente GMail,

URGENTE - Il vostro account GMail sarà  chiuso nel massimo 3 giorni, per la manutenzione dell'assistente. Se desiderate continuare usando il vostro conto gmail, la preghiamo di confermare a :

Confirma GMail

Riguardi migliori,

GMail Team

Molto credibili in particolare "la manutenzione dell'assistente", il link "Confirma GMail" o i "Riguardi migliori".
Eppure molta gente ci casca, ma come si fa???