Blog

  • Le retour du Chevalier Noir (the dark knight rises)

    Christopher Nolan va nous envouter avec le dernier opus Batman.

    En fouillant su le web je suis tombé sur ce making-off de 13 min environs, je vous laisse le découvrir :

    @ bientôt

  • Le blackout de mon site hier

    Pour protester contre la loi Sopa (Stop Online Piracy Act). Mon site fut volontairement plongé dans le noir.

    @ Bientôt Luc Sanchez

     

  • PHP 5.4 est disponible en Rc2

    C’est toujours Agréable de voir que le langage PHP poursuit son bonhomme de chemin sans prendre de retard.

    En effet le 24 Novembre la devteam à mis à disposition la Rc2 dans un timing prévu il y a maintenant plus de 6 mois (du jamais vu !!!). Au passage, on apprend que nous aurons droit à une Rc3 car de nombreux bugs ont été corrigés.

    Pas de grandes nouveauté comme l’indique Mageekblog à l’exception d’une fonctionnalité ajouté à SOAP.

    @plus Grand Maître L

  • Dit maman c’est quoi internet ?

    On va rester dans la série des questionnements sur ce magnifique outils qu’est internet pour répondre à cette simple question : « Dit maman c’est quoi internet ? ».

    je vous laisse en compagne de Benjamin Bayard de FDN dont nous avons déja parlé sur ce blog.

  • Communiquer sur internet

    les conférence des ENREST dont je vous ai parlé sur ce blog continuent.

    En voici une nouvelle, comment communiquer sur internet avec le PDG de Skyrock, Pierre Bellanger

    @bientôt, Grand Maître L

  • Gerer les dates en php avec la class transDater

    Avec cette petite class je gère les dates plus facilement. Bien sûr on peut toujours l’améliorer pour lui rajouter la prise en charge de timestamp par exemple, je reste ouvert à vos suggestions.

    
    /**
     * transDater
     *
     * @package
     * @author luc
     * @copyright Copyright (c) 2012
     * @version $Id$
     * @access public
     */
    /* la date en entrée doit être valide mais pas de type timestamp */
    class TransDater {
    
        /**
         * TransDater::dateTransform()
         *
         * @param string $dateString
         * @param mixed $newDateFormat
         * @return
         */
        static function dateTransform($dateString = '01-01-1979', $newDateFormat) {
            if ($dateString && ($format = $newDateFormat)) {
                $date = new DateTime($dateString);
                return $date->format($format);
            }
            return (bool) false;
        }
    
        /**
         * *Si on récupère le numéro du mois de l'année on peut le transformer en nom en toutes lettres
         */
        static function monthTransformFr($date) {
            static $mois = array(
                '01' => 'janvier',
                '02' => 'fevrier',
                '03' => 'mars',
                '04' => 'avril',
                '05' => 'mai',
                '06' => 'juin',
                '07' => 'juillet',
                '08' => 'aout',
                '09' => 'septembre',
                '10' => 'octobre',
                '11' => 'novembre',
                '12' => 'decembre'
            );
            $m           = self::dateTransform($date, 'm');
    
            if (!empty($mois[$m])) {
                return (string) $mois[$m];
            }
        }
    
        /**
         * TransDater::dayWord()
         * @abstract Si on récupère le numéro du jour de l'année on peut le transformer en nom en toutes lettres (0->français,1->Anglais,2->Allemand)
         * @param mixed $date
         * @param mixed $int
         * @return
         */
        static function dayWord($date, $int) {
            $french  = array('dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi');
            $english = array('Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Monday');
            $german  = array('Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag', 'Sonntag', 'Montag');
            switch ($int) {
                case 0 : $day = $french;
                    break;
                case 1: $day = $english;
                    break;
                case 2: $day = $german;
                    break;
                default:
                    false;
            } // switch
            $d = self::dateTransform($date, 'w');
            if (!empty($day[$d])) {
                return (string) $day[$d];
            }
            return (bool) false;
        }
    
        /* fonction : bissextile */
    
        static function leapYear($date) {
            $date = self::dateTransform($date, 'y-m-d');
    
            if ((is_int($date / 4) && !is_int($date / 100)) || is_int($date / 400)) {
                return (bool) true;
            } else {
                return (bool) false;
            }
        }
    
        /**
         * TransDater::datePlusUnMois()
         *
         * @abstract fonction rajoutant un mois a une date
         * @param mixed $date
         * @return string date plus 1 mois
         */
        static function datePlusUnMois($date) {
            $newDate = new DateTime($date);
            $newDate->modify('+1 month');
    
            return (string) $newDate->format('Y-m-d');
        }
    
        /**
         * TransDater::dateMoinsUnJour(()
         *
         * @abstract fonction enlevant 1 jour à une date
         * @param mixed $date
         * @return string date moins 1 jour
         */
        static function dateMoinsUnJour($date) {
            $newDate = new DateTime($date);
    
            return $newDate->modify('-1 day');
        }
    
        /**
         * TransDater::age()
         *
         * @abstract Fonction pour calculer l'age
         * @param string  date de naissance type 'd/m/Y'
         * @param string  date à laquelle on veux calculer l'age
         * @return age /integer
         */
        static function age($date_naissance, $currentDate = NULL) {
            if ($date_naissance != NULL) {
                if ($currentDate == NULL) {
                    $currentDate = date('d/m/Y');
                }
            }
            $arr1 = explode('/', $date_naissance);
            $arr2 = explode('/', $currentDate);
            if (($arr1[1] < $arr2[1]) || (($arr1[1] == $arr2[1]) && ($arr1[0] <= $arr2[0]))) {
                return $arr2[2] - $arr1[2];
            }
            return (int) $arr2[2] - $arr1[2] - 1;
        }
    
        /**
         * returns the difference, in days, between two dates.  avoids the daylight's savings issue by using GMT
         */
        static function dateDiff($date1, $date2) {
            $date1 = date_parse($date1);
            $date2 = date_parse($date2);
            return ((gmmktime(0, 0, 0, $date1['month'], $date1['day'], $date1['year']) - gmmktime(0, 0, 0, $date2['month'], $date2['day'], $date2['year'])) / 3600 / 24);
        }
    
        /**
         * @name dateExcelToHuman()
         * @param string $date
         * @return string date
         */
        static function dateExcelToHuman($date) {
            $date = ($date - 25569) * 86400;
            return (string) date('Y-m-d H:i:s', $date);
        }
    
        /**
         * @abstract Returns elapsed time with human format in french
         *
         * @param     int The timestamp of the date
         * @return    string
         */
        public function elapsed_time($date) {
    
            $old_time = $date;
    
            // Current time
            $time = time();
    
            // Little check
            if ($time < $old_time) {
    
                return FALSE;
            }
    
            // Get seconds elapsed
            $seconds = round($time - $old_time);
    
            // Convert into minutes
            $minutes = round($seconds / 60);
    
            // Convert into hours
            $hours = round($minutes / 60);
    
            // Returns
            if ($hours >= 72) {
                return 'Le ' . date('d/m/Y', $old_time);
            } elseif ($hours >= 48 && $hours < 72) {
                return 'Avant Hier';
            } elseif ($hours >= 24 && $hours < 48) {
                return 'Hier';
            } elseif ($hours >= 1) {
                return 'Il y a ' . $hours . ' h';
            } elseif ($minutes >= 1) {
                return 'Il y a ' . $minutes . ' mn';
            } elseif ($seconds == 0) {
                return 'A l\'instant';
            } else {
                return 'Il y a ' . $seconds . ' s';
            }
        }
    
        static public function addSeconde(\DateTime $date, $seconde) {
            return self::addInterval($date, 'PT' . (int) $seconde . 'S');
        }
    
        static public function addMonth(\DateTime $date, $month) {
            return self::addInterval($date, 'P' . (int) $month . 'M');
        }
    
        static public function addDay(\DateTime $date, $day) {
            return self::addInterval($date, 'P' . (int) $day . 'D');
        }
    
        static public function addYear(\DateTime $date, $year) {
            return self::addInterval($date, 'P' . (int) $year . 'Y');
        }
    
        static public function addInterval(\DateTime $date, $value) {
            try {
                $interval = new \DateInterval($value);
                $date->add($interval);
            } catch (Exception $exc) {
                throw new \Exception(__METHOD__ . 'The format of $value is not valid (String) exemple : P55S (add 55 second) ');
            }
            return $date;
        }
    
    }
    
    

    à bientôt Grand maître L

  • Bref, j’aime bien Bref…

    Et oui comme tous le monde, j’apprécie particulièrement cette mini série de Canal+…

    Bref – j'ai vu un psy from jc fouche on Vimeo.

  • Calculer l’apérage nécéssaire à la charge d’un accu lipo

    Grâce à petit code en javaScript Vous pouvez calculer la valeur optimale de charge de vos accus Lipo.

    function calculerValeurDeCharge(){
    var coefDeCharge = parseInt(document.getElementById('coefDeCharge').value, 10);
    var capacite = parseInt(document.getElementById('capacite').value, 10);
    
        var valeurRaisonable = 1.2;
            capacite /= 1000;
    
        if ((coefDeCharge && capacite ) != 0 ){
                var resultatTheorique = coefDeCharge * capacite;
                var resultatReel = (resultatTheorique)/coefDeCharge * valeurRaisonable;
            } 
            else 
            {
                alert('Merci de renseigner les valeurs');
        }
            alert('Voici la valeur de charge maximum thŽéorique : '+ resultatTheorique+' A');
            alert('Voici la valeur de charge recommandŽée : '+ resultatReel+' A');
    }

    Et voici le html :

    < !DOCTYPE html>
    <html lang="fr">
    <head>
     <meta charset="utf-8">
     <title>Charger des accus LiPo</title>
      <!-- meta -->
        <meta name="description" content=""/>
        <meta name="author" content="luc sanchez"/>
        
     </meta></head>    
     <body>       
                    <input type="number" min="1" max="12" id="coefDeCharge" value="2" />
                <input type="number" id="capacite" value="1110"/>
                <input type="submit" onclick="calculerValeurDeCharge();" name="Calculer"/>
                <script src="./js/accus.js"></script>
        </body>
     
    </html>
    

    Pour le voir en fonctionnement cliquez ici, voici la formule utilisée : (valeur de charge théorique / (capacité totale de l’accu/1000)) * 1,2 .

  • De nouvelles photos du Bourget 2011 (Paris air show)

    Les voici les voilà :


    @ Bientôt, Grand maître L

     

  • Mon nouveau jouet : La Xeno de multiplex

    Bonjour à tous, je profite de mes vacances pour buller… et faire de l’aéromodélisme. J’ai don fait l’acquisition de ce motoplaneur avec la propulsion tuning pour plus de vitamines.

    Voici les photos de mon modèle avec une décoration made in moi…

    @ bientôt

    grand maître L

  • Le Bourget 2011, les photos

    En voici une première :

    Le F16 block 50.

     

  • Le jeu Diaballik sur iPad est disponible !

    On en parlait dans cette news, c’est fait Philippe Lefrançois et Guillaume Lemery proposent le jeu sur l’app store Apple pour la modique somme de 3,99€.

    C’est disponible ici.