This two very simple but effective patterns can be easily confused at first sight.

Scott MIllett author of ASP Design Patterns gives a very simple example on what is the difference between the two: State vs Strategy pattern

if you want to see a nice php implementation have a look at Giorgio Sironi articles:
State Pattern
Strategy Pattern

Le espressioni regolari sono state sempre state un lato oscuro della programmazione che con cui non mi sono mai cimentato prima d’ora, ma devo dire che sono uno strumento veramente potente.
Ho deciso di condividere con voi questa bella espressione regolare per la validazione di un indirizzo Samba, utilizzando preg_metch in PHP

Un indirizzo Samba e’ composto essenzialmente da tre parti:

//SERVER_NAME/SHARED_NAME/file_name.jpg

per la validazione e per estrarne le componenti si puo utilizzare questa espressione regolare:

/[\/]{2}(?P<servername>[\w]+)[\/](?P<sharedname>[\w]+)[\/](?P<filename>[\w\/.]+)/

In linguaggio umanamente comprensibile:
Fra parentesi () trovate i match ovvero le parti variabili dello schema a cui ho dato un nome (vedremo perche’)   ?P<servername> seguito dalla classe di caratteri che vi possono essere inclusi (\w = significa ogni carattere maiuscolo e minuscolo inclusi i numeri e il trattino basso) ripetuto una o piu’ volte +
Fra parentesi []  ci sono i le classi che delimitano le corrispondenze [\/]{2} significa esattamente due slash.

Tradotta l’espressione suonerebbe come: esattamente due slash [\/]{2} seguito da qualcosa composto da piu’ caratteri e numeri [\w]+ che chiameremo  ?P<servername> , poi uno slash [\/] seguito da qualcosa composto da piu’ caratteri e numeri [\w]+ che
chiameremo ?P<sharedname> poi uno slash [\/] seguito da qualcosa composto da piu’ caratteri , numeri slash e punti [\w\/.] che chiameremo ?P<filename>

In php :
$uri = "//SERVER_NAME/SHARED_NAME/file_name.jpg";
$success = preg_match("/[\/\/]{2}(?P<servername>[\w]+)[\/](?P<sharedname>[\w]+)[\/](?P<filename>[\w\/.-]+)/", $uri, $matches);

questo ritornera’ $succeess se il match e’ stato esatto e un array cosi composto:

$matches = Array
(
    [0] => //PAES2005LAP42/EB3_SPOOL/28_F_F/Rep36_1.jpg
    [server] => PAES2005LAP42
    [1] => PAES2005LAP42
    [shared] => EB3_SPOOL
    [2] => EB3_SPOOL
    [filename] => 28_F_F/Rep36_1.jpg
    [3] => 28_F_F/Rep36_1.jpg
)

per opprofondimenti preg_match

Nano รจ un editor da shell molto utile e molto piu’ immediato di vim, ma come istallazione di default manca della colorazione della sintassi, ecco come aggiungere la sintassi colorata su nano:

In /user/share/nano si trovano una serie di file con estenzione .nanorc che controllano la colorazione della sintassi
possiamo attivarli su nano per il nostro utente, includendoli nel file /home/mioNomeUtente/.nanorc, manualmente o con un semplice comando:

for i in /usr/share/nano/*.nanorc; do echo “include \”$i\”"; done >> ~/.nanorc

per aggiungere la sintassi colorata per un tipo di file non presente in /usr/share/nano, nel mio caso php, basta creare nella propria home un file php.nanorc e aggiungervi le istruzioni per colorare la sintassi, facilmente reperibili dal  progetto nanosyntax su google code, ed includere questo file nel file /home/mioNomeUtente/.nanorc

Vi siete mai detti “sarebbe bello se potessi programmare codice javascript con la stessa sintassi di PHP” ? No !! a me si e’ capitato e devo dire che la cosa era molto allettante, e oggi e’ anche possibile grazie al progetto PHPJS, una librearia javascript da includere nei vostri siti o applicazioni.
Phpjs e’ un progetto opensource che tenta di portare le funzioni di php in javascript, con lo scopo di rendere lo sviluppo piu agile per quei programmatori php che sono sempre piu’ coinvolti nello sviluppo delle applicazioni lato client.

Una dell funzioni piu’ utili quando si programma in php, specialmente quando si cerca di fare il debug di applicazioni complesse, e’:

debug_print_backtrace()

Quest funzione stampa un backtrace, ovvero una tracci di tutte la chimate effettuate dal vostro script da funzione a funzione, i file included/required e tutto cio’
che viene valutato dalla funzione eval().