Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/w41258/domains/chiappucci.it/public_html/ServerScript/ban-ip/class.BanIp.php on line 15
Programmazione | Guido Chiappucci's Blog

Guido Chiappucci's Blog

Archive for the ‘Programmazione’ Category

PHP: Calcolare il giorno della Pasqua

with 2 comments

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 Pasqua 
 * 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);
 
    }
 
}
 
?>

Written by Guido

gennaio 31st, 2012 at 12:34 am

Posted in PHP,Programmazione,Tips and tricks

Tagged with

Le verità meno conosciute della programmazione

without comments

Oggi vi riporto la traduzione di un articolo che riporta la pura e semplice verità!

  • Un programmatore spende solo il 10-20% del suo tempo scrivendo codice, la maggior parte scrive circa 10-12 righe di codice al giorno che andranno poi effettivamente nel prodotto finito, senza tenere conto della loro abilità come programmatori. Un buon programmatore spende la maggior parte del suo 90% di tempo pensando, ricercando e sperimentando per trovare il miglior design possibile. Un cattivo programmatore spende il suo 90% di tempo debuggando casualmente il codice e controllando se funziona.
  • Un buon programmatore è 10 volte più produttivo di un programmatore medio. Un ottimo programmatore è 20-100 volte più produttivo di uno medio. Queste affermazioni non sono esagerate, studi l’hanno dimostrato sin dal 1960. Un cattivo programmatore non solo è meno produttivo, non solo non porterà a termine il lavoro, ma creerà molto lavoro e mal di testa agli altri per mettere a posto ciò che ha fatto.
  • Un ottimo programmatore spende molto poco del loro tempo scrivendo codice, o almeno codice che finirà nel prodotto finito. Un programmatore che spende molto tempo a scrivere codice è troppo pigro, troppo ignorante o troppo arrogante per cercare soluzioni esistenti a vecchi problemi. Un ottimo programmatore è maestro nel riconoscere e riutilizzare modelli comuni. Un buon programmatore non ha paura di refattorizzare (riscrivere) il suo codice costantemente per raggiungere il design ideale. Un cattivo programmatore scrive codice con mancanze in integrità concettuale, non-ridondanza, gerarchia e modellizzazione, quindi difficilmente refattorizzabile. È più facile buttar via il codice cattivo e ricominciare che cambiarlo.
  • Il software obbedisce alle leggi dell’entropia, come tutto il resto. Cambiamenti continui portano alla “putrefazione” del software, erodendo l’integrità concettuale del design originale. La “putrefazione” del software è inevitabile, ma un programmatore che non tiene l’integrità concettuale in considerazione crea un software che decade così velocemente che diventa un spreco ancor prima di essere completato. Il fallimento entropico dell’integrità concettuale è probabilmente la più comune ragione per il fallimento di progetti software (la seconda è la consegna di qualcosa di diverso da quello che voleva il cliente). La “putrefazione” del software rallenta i progressi esponenzialmente, moltissimi progetti sforano enormemente le timeline e il budget prima di essere cancellati.
  • Uno studio del 2004 ha scoperto che il 51% dei progetti fallirà in un aspetto critico e il 15% fallirà totalmente. Questi dati sono un miglioramento rispetto al 1994, quando fallivano completamente il 31% dei progetti.
  • Nonostante la maggior parte dei software sia sviluppato da gruppi di persone, non è un’attività democratica. Solitamente solo una persona è responsabile del design, gli altri membri del gruppo si occupano dei dettagli.
  • Programmare è un lavoro duro. Un’intensa attività mentale. Un buon programmatore pensa al suo lavoro 24/7. Scrive le parti più importanti di codice sotto la doccia o mentre sogna. Siccome il lavoro più importante è fatto lontano dalla tastiera i progetti software non possono essere accelerati spendendo più tempo in ufficio o aggiungendo più persone al progetto.

Un ringraziamento al mio collega Giacomo che mi ha aiutato nella traduzione.

Written by Guido

agosto 25th, 2010 at 4:10 pm

Posted in Internet,Programmazione

Tagged with