A pochi giorni del rilascio della versione 5.3.9 il team di sviluppo di Php rende noto che è stata rilasciata la versione 5.3.10 che va a correggere un importante baco di sicurezza. Ovvimente gli sviluppatori raccomandano vivamente di aggiornare Php all’ultima versione.

Di seguito vi propongo una classe per ricavare il giorno della Pasqua passando un determinato anno, mi è tornata utile per la realizzazione di un Planner.
Per ricavare il mese ed il giorno della Pasqua dell’anno 2012 basta chiamare il metodo Pasqua::get passando come argomento “2012″:

Pasqua::get(2012); // ritorna Array([day]=>18 [month]=>4)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
/**
 * Pasqua
 *    
 * Questa classe determia il giorno della Pascqua 
 * di un determinato anno, si basa sul calcolo detto
 * Metodo aritmetico di Gauss spiegato in questa pagina:
 * http://it.wikipedia.org/wiki/Calcolo_della_Pasqua
 * 
 * @author Guido Chiappucci
 */
class Pasqua {
 
    private static $aM = array(22, 22, 23, 23, 24, 24);
    private static $aN = array(2, 2, 3, 4, 5, 5);
 
    /**
     * Pasqua::get()
     * 
     * Il metodo get restituise un array 
     * contenente il mese ed il giorno 
     * della Pasqua riferita all'anno 
     * passato al metodo attraverso $year
     *  
     * @param integer $year
     * @return array
     */
    public static function get($year) {
 
        $a = $year % 19;
        $b = $year % 4;
        $c = $year % 7;
 
        $aIndex= floor($year/100)-15;
 
        $d = (19 * $a + self::$aM[$aIndex]) % 30;
        $e = (2 * $b + 4 * $c + 6 * $d + self::$aN[$aIndex]) % 7;
 
        $day = 22 + $d + $e;
        $month = 3;
 
        if ($day > 31) {
            $month = 4;
            $day -= 31;
        }
 
        /**
         * Eccezioni:
         * - Se la data risultante dalla formula è il 26 aprile, 
         *   allora la Pasqua cadrà il giorno 19 aprile;
         * - Se la data risultante dalla formula è il 25 aprile 
         *   e contemporaneamente d = 28, e = 6 e a > 10, 
         *   allora la Pasqua cadrà il 18 aprile. 
         */
        if ($month == 4 && $day == 26) {
            $day = 19;
        } elseif ($month == 4 && $day == 26 && $d == 28 && $e == 6 && $a > 10) {
            $day = 18;
        } 
 
        return array('day'=>$day,'month'=>$month);
 
    }
 
}
 
?>

PHP 5.4 rc 4

| dicembre 27th, 2011

php-logoIn questi giorni è stata rilasciata la versione 5.4 rc 4 di Php, quindi siamo ormai vicini al rilascio definitivo della nuova versione, in questa pagina la lista delle novità e dei cambiamenti che verranno introdotti, particolare attenzione alle funzioni che non saranno più disponibili e che da tempo erano state dichiarate deprecate.

Attraverso gli strumenti offerti da Google è possibile recuperare facilmente la favicon di un sito web, e con poche righe di php possiamo confezionare una funzione che restituisce la favicon del sito richiesto.

Il servizio di Google che andremo ad utilizzare è una semplice chiamata http:

http://www.google.com/s2/favicons?domain=www.google.it

dove “domain” è il sito web di cui richiediamo la favicon.

Veniamo al codice, in pratica utilizzeremo Curl per fare la chiamata http verso Google, la risposta sarà proprio il sorgente del file richiesto, quindi possiamo scriverlo su un file oppure stamparlo direttamente a video.

1
2
3
4
5
6
7
8
9
10
11
12
<?php
function getFavicon( $url ) {
    $ch = curl_init('http://www.google.com/s2/favicons?domain='.$url);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);    
    $content = curl_exec($ch);
    curl_close($ch);
    return $content;
}
$favicon = getFavicon('www.google.it');
?>

Utilizzando la funzione imagepng() può verificarsi l’errore
PHP Fatal error: imagepng() [function.imagepng]: gd-png: fatal libpng error: zlib error in… ecc. ecc…
Questo dipende dal fatto che il fattore di compressione utilizzato da imagepng() non va da 0 a 100 come per imagejpeg() ma va da 0 a 9, quindi basterà cambiare questo parametro come nell’esempio sotto:

1
2
3
<?php
imagepng($img, $filename, 8);
?>

Ecco le slide riferite all’intervento di Ilia Alshanetsky al DevConf 2010 di Mosca
DevConf 2010 Moscow

Ecco fresche fresche le slide dell’intervento al ConFoo 2010 di Ilia Alshanetsky, come sempre… da non perdere.

ConFoo

Scaling Web Applications with HMVC

| febbraio 28th, 2010

Qualche giorno fa è uscito su TechPortal un articolo veramente interessante e ben fatto relativo al design pattern HMVC.  La lettura è consigliata anche a chi ha ben chiaro il funzionamento di MVC in quanto quella descritta è considerata una “estensione” del pattern stesso.

http://techportal.ibuildings.com/2010/02/22/scaling-web-applications-with-hmvc/

Leggendo qua e la ho trovato un articolo molto curioso e allo stesso tempo interessante dove vengono descritte una serie di funzioni php poco comuni e che probabilmente non vengono quasi mai utilizzate.

L’articolo in questione si trova in questo blog all’indirizzo:
http://infinity-infinity.com/2009/07/10-php-functions-you-probably-never-use/

Buona lettura!

iBlog – Ilia Alshanetsky

| luglio 17th, 2009

Oggi voglio segnalare il blog di Ilia Alshanetsky, sito che seguo da un po’ dove ho trovato numerose informazioni su come utilizzare al meglio PHP, in particolare, oltre alla consueta sezione dedicata agli articoli, ho trovato molto utile la sezione Talks da dove si possono scaricare delle utilissime slide.

Buona lettura.