Archivio del mese di giugno 2008

Funzioni anonime in PHP

Open Source, PHP, Tips & tricks 2 commenti »

PHP è un buon linguaggio di programmazione, se lo si giudica con i parametri abbastanza empirici del grado di diffusione e della mole di function che integra. Si dimostra però spesso sorprendentemente flessibile anche per affrontare scenari di programmazione molto più complessi del semplice embedding di script in una pagina web.

Durante un recente scambio di opinioni con un matematico appassionato di Open Source si è presentato il problema di creare funzioni anonime e - qui sta il punto - di farlo all’interno di una classe PHP. Tralascio lo sproloquio teorico che mi sono dovuto sorbire sul lambda calcolo e le funzioni anonime e mi limito a riportare qui un passaggio della definizione che ne dà WikiPedia. Cito testualmente:

Il lambda calcolo è un sistema di riscrittura definito formalmente dal matematico Alonzo Church. È stato sviluppato per analizzare formalmente le definizioni di funzioni, le loro applicazioni ed è uno strumento interessante per studiare anche fenomeni di ricorsione. In quanto sistema di riscrittura, esso dà una descrizione dei termini ben formati, che sono le sequenze di simboli riconosciute dal sistema e in grado di essere riscritti da esso. Il lambda calcolo, infatti, definisce un insieme di regole di riscrittura che determinano in maniera precisa come i termini stessi possano essere riscritti. In questo modo, il processo di riscrittura diventa un vero e proprio calcolo.

E ancora (disponibile solo in inglese):

Anonymous functions can be used to contain functionality that need not be named and possibly for short-term use. Some notable examples include closures and currying. [...]
Closures are functions evaluated in an environment containing bound variables. The following example binds the variable “threshold” in an anonymous function that compares the input to the threshold. [...]
Currying is transforming a function from multiple inputs to fewer inputs (in this case integer division).

Anche se ufficialmente non esiste in PHP un vero e proprio metodo per gestire le funzioni anonime, si può facilmente ottenere qualcosa di simile in almeno due modi:

  1. chiamando una variabile col nome di una funzione:
    $foo = "phpinfo";
    $foo();
  2. inizializzando una variabile con l’istruzione `create_function`:
    $sum = create_function('$a, $b','return $a + $b;');
    echo $sum(1,2);

Nel primo caso stiamo creando soltanto un link alla funzione. Nel secondo, invece, assegniamo la funzione alla variabile proprio mentre la creiamo. Provare per credere: si tratta di un aspetto insolito e per certi versi divertente del PHP, ma scoraggio chiunque ad adottare una soluzione simile in ambienti di produzione in cui non si vogliano perdere di vista praticità e facilità di lettura del codice.

Domenico Nesci, un bergamasco a New York

Novità 2 commenti »

Durante le serate di un giugno che non accenna minimamente ad annunciare l’estate ormai prossima, mi capita di fare zapping da un canale all’altro alla ricerca di qualche cosa che valga la pena di essere visto. Una fra le trasmissioni più trash in assoluto di questo periodo è - o meglio: era, dal momento che si è conclusa la scorsa settimana - lo pseudo-reality “Shot at Love With Tila Tequila”, una minchiata di proporzioni bibliche, talmente assurda sia per plot che per contenuti da essere pressoché irresistibile!

Si tratta, in poche parole, di un gioco in cui un ampio stuolo di nullafacenti, starlette e disadattate/i cerca di conquistare il cuore di una giovane bisessuale, il cui nome d’arte è per l’appunto Tina Tequila. Lo ha trasmesso MTV e non ho idea se si sia rivelato un successo o meno, specie perché la trasmissione è andata in onda in lingua originale con i sottotitoli in italiano. Utile per me che voglio rinfrescare il mio inglese arrugginito, ma credo piuttosto scoraggiante - lo dico senza spocchia alcuna - per l’italiano medio.

Ebbene, uno dei pretendenti - sia uomini che donne data la natura bivalente della protagonista - si è subito distinto per lo stile a metà tra il cafone nostrano e l’istrione da avanspettacolo: si tratta dell’italiano Domenico Nesci, la cui popolarità è diventata in breve tempo talmente dirompente che - sebbene sia stato eliminato in maniera clamorosa da “Shot at Love With Tila Tequila” - MTV ha deciso di realizzare una nuova trasmissione che lo vede protagonista. Il nuovo programma - già conclusosi negli Stati Uniti - si intitola “That’s Amore” ed è un gioco simile al suo predecessore anche se, questa volta, è proprio Domenico a dover scegliere la propria partner tra le numerose partecipanti, un gruppo di svampitissime ragazze disposte a tutto pur di conquistarne il cuore. E l’occhio delle telecamere.

Nonostante il suo aspetto mediterraneo si tratta - udite udite - di un 27enne bergamasco, almeno a quanto dice oggi il Corriere della Sera:

Negli Stati Uniti è tornato di moda il «vitellone». Almeno stando allo show di Mtv — «That’s amore» — che si è concluso da poco negli Usa, mentre da noi è in onda sulla rete giovane (stasera e domani, alle 22.30 le ultime due puntate). E il vitellone ha un nome e un cognome: Domenico Nesci, bergamasco, 27 anni. Molti giornali — il New York Post ha titolato: «A furor di popolo è nata una stella»—gli hanno dedicato articoli e copertine. Inneggiano al nuovo maschio italiano, al «Mastroianni del Duemila» come si definisce lui. A un certo punto della sua giovane vita, Domenico parte per Los Angeles: fa il cameriere in un noto locale di star, e si presenta a tutti i provini possibili.

Fu vera gloria? Ai posteri l’ardua sentenza. Nel frattempo potete trovare la sua (scarna) biografia sul sito Internet ufficiale di MTV. Buona lettura…

Debian Lenny coming (pretty) soon!

Annunci, Novità, Open Source Nessun commento »

Sui repository Debian sono disponibili da un paio di giorni i nuovi installer della prossima relese stabile di Debian GNU/Linux 5.0, nome in codice “Lenny”. Questa volta vengono messi a disposizione le immagini per effettuare l’installazione da CD/DVD.

Ecco come viene annunciato il lieto evento dal team di sviluppo di Debian: “The Debian Installer team is proud to announce the second beta release of the installer for Debian GNU/Linux Lenny. Improvements in this release of the installer: the installer uses and installs the 2.6.24 kernel; support for the armel (Arm Little Endian) architecture, using the new ‘Embedded ABI’; installer images for i386 and amd64 have a new boot menu; the graphical installer now has full support for encrypted partitioning….“.

Se volete saperne di più, l’annuncio completo è disponibile a questo indirizzo.

Perché passare a Linux? Risponde il Linux Club di Zogno (BG)

Copincollato, Open Source, Segnalazioni, Varie 3 commenti »

Sono iscritto da qualche mese alla mailing list del LCZ (Linux Club di Zogno) i cui scambi di messaggi sono per il momento pochi ma di qualità, specie se si tiene conto dell’età media dei ragazzi che ne fanno parte. Riporto quindi più che volentieri il post che si trova nella pagina “Chi siamo” del loro sito Internet ufficiale (http://linuxzogno.ilbello.com).

Perché passare a Linux? (adattato da Gallo1980)

Per prima cosa fuggiamo da ogni guerra di religione: è normale che per chi usa il computer per usare editor di testo, navigare in internet, scaricare la posta e poco altro è praticamente indifferente quale OS utilizzare, Win o Linux che sia. Leggi il resto »

Arianna ha voglia di fare l’amore con me!

Varie 2 commenti »

Tra i pochi messaggi di spam che ogni giorno riescono ad oltrepassare i filtri del mio SpamAssassin - eccedere con i filtri significa perdere, prima o poi, un messaggio di vitale importanza - questa mattina ne ho trovato uno dal subject meno sospetto del solito: “Ciao da Arianna”.

Non ricordo di conoscere nessuna Arianna, quindi di primo acchito ho pensato si potesse trattare della solita email preconfezionata ad hoc per catturare la debole attenzione maschile, alla quale - volenti o nolenti - queste cose non sfuggono mai.

Così ho aperto l’email e l’ho letta:

Ciao,

abbiamo un’amica in comune alla quale ho chiesto la tua e-mail, perchè appena ti ho visto mi sei piaciuto subito. Sono una persona molto carina, allegra, solare e sopratutto decisa, quindi sarò di poche parole: HO VOGLIA DI FARE L’AMORE CON TE!!! In allegato ti mando la mia foto in costume insieme alla nostra amica in comune. Se ti piaccio, chiedi a lei il mio numero e chiamami.

Arianna

La cosa che più mi ha divertito è la verosimiglianza e la naturalezza del corpo del messaggio. Mi ha divertito intellettualmente, intendiamoci: l’autore di questo semplice ma efficace messaggio conosce alla perfezione quali siano le leve sulle quali è necessario agire per catturare l’attenzione di un uomo, colpendolo in quello che di norma è il suo punto più debole, ovvero il grado di appagamento che proviene dal sapersi desiderato da una donna.

Nell’intenzione dell’autore (o dell’autrice) del messaggio il senso di appagamento proveniente da una possibile occasione amorosa viene moltiplicato all’infinito da un ulteriore fattore: la donna che scrive è completamente ignota al destinatario del messaggio. La mente del maschio in questa occasione non può che essere attraversata - secondo chi ha confezionato il testo - da un pensiero più o meno inconscio: c’è una donna attratta dalla mia persona al punto tale da volere fare l’amore con me per il solo fatto di avermi visto, senza - in altre parole - che sia necessario salire il calvario di un lungo e faticoso corteggiamento.

Qual è il significato profondo del testo che ho ricevuto questa mattina? Che l’io maschile è estremamente vulnerabile, e fin qui ci siamo. Che la prospettiva di un immediato accoppiamento dei corpi - immediato nel senso di “privo di mediazioni”, ovvero senza alcun ammennicolo preliminare - è per l’istinto maschile di gran lunga più allettante che il progressivo avvicinamento di due personalità individuali. O no?

Certo che sì, sono cose che tutti sanno. Ma forse non tutti sanno che… l’unico, autentico motivo per cui ho buttato giù queste quattro righe è tutt’altro: verificare quanti contatti può totalizzare un post il cui titolo lascia intravedere la possibilità di accedere a chissà quale contenuto erotico.

Vi farò sapere come è andata a fine giornata… ;)

Linuxfeed: il mondo Open Source a portata di RSS feed!

Copincollato, Diario di bordo, Novità 2 commenti »

Da oggi il mio blog personale è affiliato al circuito LinuxFeed, per il quale ho creato una nuova sezione ad hoc, destinata a contenere notizie, tips&tricks e informazioni in genere su Linux e sul mondo Open Source. Ecco una breve presentazione del progetto che si può leggere all’URI http://linuxfeed.org/info:

LinuxFeed è un feed aggregator basato su Wordpress. Il suo scopo è quello di raccogliere il maggior numero possibile di informazioni di qualità dalla rete, proponendosi dunque come filtro tra la buona informazione e le dicerie nell’ambito informatico. Più nello specifico LinuxFeed concentra la sua attenzione sui blog che trattano argomenti inerenti al sistema operativo Linux ed al software libero (leggasi Open Source) in generale.

Lo staff, oltre a scegliere con cura i feed da inserire tra i suoi affiliati, si riserva la possibilità della cancellazione degli stessi nel momento in cui i loro contenuti contravvenissero alle regole citate al momento dell’iscrizione, oppure scadessero in qualità o centratezza sugli argomenti desiderati.

Alcune precisazioni in più:

  • I posts che sono inseriti nelle directory di LinuxFeed sono linkati direttamente al sito dell’autore mediante il titolo del post stesso. Questo significa che i posts sono fisicamente raggiungibili mediante link all’interno del nostro sito solo se si sceglie una delle opzioni in piccolo sopra il titolo. La maggioranza degli utenti sarà dunque rimandata al sito dell’autore.
  • L’autore del post è ben visibile sotto il titolo di ciascun articolo ed è linkato direttamente al sito dell’autore e non ai suoi posts su questo sito.
  • Le categorie ed i tag rimandano all’interno del sito e di questi elementi è massimizzata l’indicizzazione del nostro sito.

Google da linea di comando? Goosh!

Novità Nessun commento »

Sul web si trovano ormai molte applicazioni delle API di Google non proprio ortodosse - ovvero che fanno cose completamente differenti da ciò per cui le API sono state pensate - ma questa merita davvero un premio per l’originalità. Si tratta del progetto Goosh, un’applicazione Ajax che fonde insieme le funzionalità di Google e l’interfaccia testuale della shell dei sistemi Unix e Linux. Con Goosh è possibile effettuare le ricerche sul più importante motore di ricerca in modalità linea di comando.

Il funzionamento è semplice: basta digitare le chiavi di ricerca direttamente al prompt e premere il tasto invio per visualizzare i risultati. La modalità di inserimento da linea di comando potrà sembrare scomoda a chi non lavora gran parte del tempo su server remoti, ma . superati i primi minuti di smarrimento - scoprirete quanto è comodo avere il controllo completo di un’applicazione direttamente dal cursore, senza dovere saltare da una finestra all’altra o cercare chissà dove l’icona giusta.

Per conoscere l’elenco completo dei comandi disponibili è sufficiente digitare il comando `help`. Tra i comandi più utili ci sono `lucky` per cercare in modalità “Mi sento fortunato”, `wiki` per la ricerca direttamente in Wikipedia, `news` per la ricerca in Google News e `clear` per ripulire l’output della shell, proprio come nei veri sistemi Unix e Linux.

Che cosa sta facendo MySQL?

MySQL, Open Source, Tips & tricks Nessun commento »

Se vogliamo ricavare al volo informazioni su cosa stia facendo il nostro database MySQL senza dover per forza ricorrere a interfacce grafiche o applicazioni web, la linea di comando ci viene come sempre in aiuto. Oltre al solito `show processlist` - che però va lanciato dall’interfaccia testuale di mysql - ecco due stringe semplici ma indispensabili per il corretto monitoraggio del demone mysqld da shell:

  1. ricava informazioni in sintesi sullo stato del db:
    mysqladmin -u root -p -i 5 status
  2. ricava informazioni specifiche sullo stato del db:
    mysqladmin -u root -p -i 5 extended-status -r | grep Com_select
    In questo caso abbiamo estratto il numero di select in corso. Cambiando il grep si possono ricavare oltre 200 differenti informazioni!

Attenzione! In entrambi i casi verrà richiesta l’immissione della password dell’utente `root` di MySQL.

Cubo di Rubik stop motion (passo uno)

YouTube Nessun commento »

Convertire un testo in array di righe con la costante PHP_EOL

Open Source, PHP, Tips & tricks Nessun commento »

Quando si scrivono applicazioni per il web in PHP capita spessissimo di dovere trattare i dati contenuti in un file di testo. Il metodo migliore per acquisire dati di questo tipo è senz’altro la funzione `file`, che restituisce appunto un array contenente tutte le righe del file di testo.

Capita però altrettanto spesso di avere a che fare con script PHP datati o realizzati per girare in situazioni anomale, come ad esempio server embedded che mettono a disposizione un range limitato di funzioni PHP, oppure ancora di script che elaborano le righe del testo nel momento stesso in cui lo generano.

In questi casi si può ricorrere a una sintassi meno immediata ma altrettanto efficace, ricorrendo alla funzione `explode` e alla costante di sistema PHP_EOL.

Ecco un semplice esempio:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
< ?php
 
$txtMessage = <<<EOD
RIGA #1
RIGA #2
RIGA #3
RIGA #4
EOD;
 
$aLines = explode(PHP_EOL, $txtMessage);
 
echo "<table border=\"1\">\n" .PHP_EOL;
 
foreach ($aLines as $strLine)
{
  echo "<tr>\n".PHP_EOL."<td>\n".$strLine."</td>\n".PHP_EOL."</tr>\n".PHP_EOL;
}
 
echo "\n" .PHP_EOL;
 
?>

Il risultato sarà il seguente:

RIGA #1
RIGA #2
RIGA #3
RIGA #4

 

La costante PHP_EOL equivale al carattere di end of line del sistema operativo su cui stiamo elaborando lo script: ricorrere a questa costante non migliora soltanto la leggibilità del nostro programma, ma anche la sua portabilità.