Archive for the 'Programmazione' Category

Strumenti per controllare la performance di MySQL

Wednesday, February 17th, 2010

Nessun compendio, solo un paio di appunti a riguardo:

Mytop: permette di vedere i processi MySQL attualmente in esecuzione, ed eventualmente abbattere quelli pendenti o che stanno occupando troppe risorse di sistema. Esiste anche un package per Ubuntu.

log_slow_query: permette di tener traccia in un file di tutte le query che impiegano più di n secondi <nsec> ad eseguirsi. Per abilitarlo, oltre al metodo descritto nel link, possiamo modificare il nostro file my.cnf ed aggiungere, nella sezione [mysqld]:

long_query_time = <nsec>

log-slow-queries = /path/to/mysql_slow_query.log

Bisogna poi creare il file /path/to/mysql_slow_query.log e rendere l’utente mysql proprietario con un chown (questo su Linux, naturalmente)

Altro?

http://jeremy.zawodny.com/mysql/mytop/

Share/Save/Bookmark

Funzioni anonime e closures in PHP 5.3

Friday, March 13th, 2009

Fino ad oggi in PHP era possibile creare funzioni anonime (lambda) utilizzando la funzione create_function, ma il suo utilizzo non mi ha mai convinto, sapeva troppo di eval. Essendo abituato a Javascript, e a jQuery, trovo questa sintassi molto più funzionale:

var a = 5;
var myFunc = function (b) {
  return a + b;
};
a = 10;
alert( myFunc(2) ); //print 7

L’utilizzo di a all’interno di myFunc è chiamata closure: il valore di a viene bindato (legato) nello scope di myFunc, e rimarrà invariato nel tempo.

Dalla prossima versione di PHP, la 5.3, sarà possibile fare qualcosa del tutto simile. Ecco come:

$a = 5;
$myFunc = function ( $b ) use ( $a ) {
  return $a + $b;
};
$a = 10;
echo $myFunc( 2 ); // print 7

Notare che in PHP le closures vanno dichiarate esplicitamente con l’utilizzo del comando use.

Per quanto sia contento di questa nuova feature, rimango perplesso sulla linea con cui viene sviluppato ed aggiornato PHP: si prosegue con la mancanza di convenzioni, e a volte, come in questo caso, funzionalità nuove sanno più di patch che di improvement.

Sul sito di PHP trovate maggiori info, mentre in questo PDF sono elencate tutte le nuove features di PHP 5.3

Via: Zaemis

Share/Save/Bookmark

Due modi semplici per testare le espressioni regolari

Tuesday, October 7th, 2008

Il RegExp Evaluator di FirefoxSe siete stanchi di testare le vostre regular expression andando avanti a tentativi, ecco un paio di strumenti che possono fare al caso vostro.

Il primo, per gli utenti Linux, è KRegExpEditor, un semplice software in cui avete la possibilità di creare la regex in maniera semplice e veloce tramite la pulsantiera superiore, oppure scriverla alla vecchia maniera, down & dirty. Nell’area centrale inserite il testo sul quale volete testare la regex: si illuminerà a seconda della bontà della vostra espressione.

La seconda possibilità ve la fornisce invece Firefox: installate l’Extension Developer extension ed avrete a disposizione il RegExp Evaluator, uno strumento simile al precedente, sviluppato in Javascript. Ne trovate anche una versione online.

Se invece di espressioni regolari non avete mai capito (quasi) nulla, vi rimando al bellissimo regular-expressions.info!

Share/Save/Bookmark

Perchè rendere pubblico il proprio codice

Tuesday, June 10th, 2008

E’ di qualche giorno fa il rilascio della prima versione (in realtà molto beta) di iPampics, il piccolo progetto di photo gallery scritto in PHP.
Come anticipato, voglio spendere 5 minuti per spiegare il perchè abbia reso pubblico, e scaricabile, quei pochi kappa di codice.

Crescita controllata. Ogni grande software ha iniziato ad emettere i primi vagiti sotto forma di piccola applicazione ancora non ben sviluppata. Rilasciare periodicamente nuovi aggiornamenti e funzionalità del software aiuta a studiarne bene l’architettura, focalizzando sulle features che si vogliono prioritarizzare; si tenderà quindi a sviluppare step by step, ma con una visione chiara di quali sono gli orizzonti che si vogliono raggiungere.

Esercizio di stile. C’è una bella differenza tra un software funzionante ed uno fruibile. iPampics, per esempio, era funzionante già diverso tempo prima del rilascio; il pensiero che però il tuo software possa davvero finire in mano a qualcun altro, ti porta a rigiudicare le scelte effettuate, dall’architettura allo stile di coding. E poi, la documentazione, importantissima: i vari Readme per gli utenti, e i commenti al codice, magari utilizzando doxygen, per gli eventuali sviluppatori. Con tutto vantaggio non solo loro, ma anche nostro.

Fonte di stimoli. E se qualcuno finisse davvero per utilizzare il nostro software? E ci arrivassero feedback, idee, critiche, consigli? Non c’è dubbio, ne trarremmo sicuramente giovamento. Saremmo spronati a migliorare quello che già avremo fatto, con l’effetto collatterale di migliorare noi stessi come professionisti. In fondo, rendere pubblicamente visibile qualcosa scritto di proprio pugno, in ogni sua forma, è un modo per mostrarsi, aprirsi al confronto e, con la giusta dose di umiltà, arrivare a capire dove si sbaglia. E ho menzionato le possibili collaborazioni che potrebbero nascere?

Rimangono comunque delle questioni poco chiare che devo ancora approfondire. Come, per esempio: con quale licenza pubblicare il mio software?

Share/Save/Bookmark