1. WordPress 3.0 « Thelonious »

    Publié le 19 juin 2010

    La nouvelle version du célèbre moteur de blog vient de pointer le bout de son nez ! WordPress vient de passer en version 3.0 et signe une évolution majeure : WP et WP mµ ne font plus qu’un !
    Outre cette fusion tant attendue, de nombreuses nouveautés font leurs apparitions :

    • Création de menus personnalisés : il n’aura jamais été aussi simple de créér et gérer ses menus avec WordPress;
    • contenus et taxonomies personnalisés : WordPress se rapproche de plus en plus d’un CMS;
    • Twenty Ten : nouveau thème par défaut incluant toutes les nouveautés de WordPress 3.0;
    • nouvelle API dédié au développeur de thèmes permettant de gérer facilement la personnalisation du fond du thème et de l’en-tête;
    • … bien plus encore … !

    Retrouvez la présentation de toutes les nouveautés dans cette vidéo publié lors de l’annonce officielle :

    Retrouvez également l’article de la sortie de WordPress 3.0 sur wordpress-fr.net.
    À noter que web-memento.fr devrait tourner sous WP 3.0 dès aujourd’hui !

  2. Safari 5

    Publié le 08 juin 2010

    Télécharger Safari 5

    Au lendemain de la Keynote d’Apple, c’est quasi incognito qu’une nouvelle version majeur de Safari vient de voir le jour.

    Pour télécharger Safari 5, il faudra se rendre sur le site en anglais, mais la version est bien en français !

    Performances améliorées

    En terme de performances, Safari 5 est annoncé comme étant 30% plus rapide que Safari 4, 3% plus rapide que Google Chrome 5 et plus de 2 fois plus rapide que Firefox 3.6 au niveau de l’exécution du Javascript.

    Grâce au préchargement des DNS, les pages web s’ouvrent plus rapidement : lorsque vous naviguez sur une page, Safari 5 analyse en arrière plan tous les liens s’y trouvant et effectue les résolutions DNS avant même que vous ayez cliqué sur un lien.

    Le cache a été amélioré : les pages que vous avez visitées précédemment s’ouvrent encore plus rapidement.

    HTML 5

    Safari 5 supporte encore mieux le HTML5 : vidéo en pleine écran, sous-titres, géolocalisation, …

    Lecteur d’article

    Lecteur Safari 5

    Vous êtes habitué à parcourir les blogs, Safari 5 détecte automatiquement si une page correspond à un article. Vous cliquez sur le bouton « Lecteur » dans la barre d’adresse et Safari 5 affiche une version de l’article dépourvu de toute fioriture : publicités (ça va être dur de rentabiliser son site !), navigation, logo, … l’article s’affiche simplement !

    Vous pouvez retrouvez la – longue – liste des nouveautés ici.

    Alors, qui a testé cette nouvelle version de Safari 5 ? Qu’en pensez-vous ?

  3. Serveur Dedibox V3 à 14,99€ HT/mois

    Publié le 01 juin 2010

    Logo Online.netOnline.net est une filiale du groupe Iliad, plus connu pour être la maison-mère du célèbre fournisseur d’accès Free.

    Online.net annonce aujourd’hui une nouvelle offre de serveur dédié à 14,99€ HT par mois, soit 17,93€ TTC par mois. Cette offre d’entrée de gamme semble être à mes yeux la meilleur offre du marché français actuelle.

    Développé en partenariat avec le constructeur Dell, le Serveur Dedibox V3 propose une configuration somme toute correct :

    • Serveur Dell XS11-VX8;
    • Processeur Via Nano U2250 (1x 1,6 GHz);
    • 2 Go de RAM DDR2;
    • Un disque dur de 160 Go SATA II;
    • Une offre de connectivité à très haut débit de 1 Gbit/sec en standard.
    Dell XS11-VX8

    Crédit photo Dell©

    Le serveur est aussi grand qu’un disque dur de 3,5 pouces et consomme en moyenne moins de 15W.

    Pour commander votre Serveur Dedibox V3, rendez-vous sur la page d’informations du Serveur Dedibox V3. Notez que les frais d’installation s’élève à 39,99€ HT, soit 47,83€ TTC et que le Serveur Dedibox V3 est actuellement livré en 1h30.

    A ce prix là, qui va sauter le pas ?

  4. Les interfaces dans PHP5

    Publié le 13 février 2010

    PHP dans sa version 5 introduisait un modèle objet plus robuste que dans sa version 4 lui permettant de quasiment rivaliser avec des langages plus évolués comme java ou c/c++.

    C’est quoi une interface ?

    En programmation objet, une interface permet de définir les méthodes publiques qu’une classe doit implémenter. Le fait qu’une classe implémente une interface l’oblige à disposer au minimum des méthodes décrites dans cette interface au quel cas une erreur fatale sera levée.

    Cela permet de définir une API (Application Programming Interface) qu’un composant pourra utiliser.

    Les interfaces définies par PHP5

    PHP5 propose différentes interfaces permettant de répondre à des demandes assez répandues : compter, sérialiser, traverseritérer, …

    Pour présenter les interfaces proposées par PHP5, je baserai mes exemples sur la classe suivante :

    class myObject {
      protected $_data = array( 'un', 'deux', 'trois' );
    }
    

    Cette classe implémentera au fur et à mesure de l’article les interfaces présentées.

    Countable : une interface pour compter

    Objectif : permettre à un objet d’être utilisé avec la fonction count() (ou sizeof())

    La signature de l’interface Countable est la suivante :

    interface Countable {
      public function count();
    }
    

    Noter que le système force la valeur de retour en tant qu’entier

    Notre classe implémentant l’interface Countable devient :

    class myObject implements Countable {
      // code précédent
      public function count() {
        return count( $this->_data );
      }
    }
    

    Utilisation :

    $o = new myObject();
    echo count( $o ); // Affiche 3
    

    Serializable : linéarisation personnalisée d’un objet

    Objectif : personnaliser la linéarisation/délinéarisation d’un objet.

    Par défaut, lorsqu’on linéarise un objet avec serialize(), toutes les propriétés de cet objet sont traitées. On peut vouloir effectuer un traitement personnalisé lorsqu’un objet est passé à la fonction serialize() (et donc un traitement personnalisé pour serialize()). C’est ce que permet de faire l’interface Serializable dont la signature est la suivante :

    interface Serializable {
      public function serialize ();
      public function unserialize ( $serialized );
    }
    

    Notre classe implémentant l’interface Serializable devient :

    class myObject implements Serializable, Countable {
      // code précédent
      public function serialize() {
        return serialize( $this->_data );
      }
      public function unserialize( $serialized ) {
        $this->_data = unserialize( $serialized );
      }
    }
    

    Utilisation :

    $o = new myObject();
    $s = serialize( $o );// retourne C:8:"myObject":50:{a:3:{i:0;s:2:"un";i:1;s:4:"deux";i:2;s:5:"trois";}}
    $o2 = unserialize( $s); // $o2 est un nouvel objet myObject
    

    ArrayAccess : mon objet est un tableau !

    objectif : accéder à mon objet comme si c’était un tableau (comme par exemple $o[0]).

    la signature de l’interface ArrayAccess est la suivante :

    interface ArrayAccess {
      public function offsetExists( $offset );
      public function offsetGet( $offset );
      public function offsetSet( $offset, $value );
      public function offsetUnset( $offset );
    }
    

    Notre classe implémentant l’interface ArrayAccess devient :

    class myObject implements ArrayAccess, Serializable, Countable {
      // code précédent
      public function offsetExists( $offset ) {
        return isset( $this->_data[$offset] );
      }
      public function offsetGet( $offset ) {
        return isset( $this->_data[$offset] ) ? $this->_data[$offset] : null;
      }
      public function offsetSet( $offset, $value ) {
        $this->_data[$offset] = $value;
      }
      public function offsetUnset( $offset ) {
        unset( $this->_data[$offset] );
      }
    }
    

    Utilisation :

    $o = new myObject();
    var_dump( isset( $o[0] ) ); // true
    var_dump( isset( $o['un'] ) ); // false
    $o['un'] = 1;
    var_dump( isset( $o['un'] ) ); // true
    

    Iterator : itérer un objet

    Objectif : personnaliser le parcours d’un objet en utilisant une boucle comme foreach()

    Par défaut, lorsqu’on parcours un objet avec foreach(), on itère sur les propriétés publiques de l’objet. Dans certains cas, on préférera gérer soit même cette itération. C’est ce que permet de réaliser l’interface Iterator dont la signature est la suivante :

    Iterator extends Traversable {
      public function current();
      public function key();
      public function next();
      public function rewind();
      public function valid();
    }
    

    Notre classe implémentant l’interface Iterator devient :

    class myObject implements Iterator, ArrayAccess, Serializable, Countable {
      // code précédent
      public function current() {
      	return current( $this->_data );
      }
      public function key() {
      	return key($this->_data );
      }
      public function next() {
        return next( $this->_data );
      }
      public function rewind() {
      	return reset( $this->_data );
      }
      public function valid() {
      	return (bool)current( $this->_data );
      }
    }
    

    Utilisation :

    $o = new myObject();
    foreach( $o as $key => $value ) {
    	echo "$key =>$value \n";
    }
    /* Affiche
     * 0=>un
     * 1=>deux
     * 3=>deux
     */
    

    La classe MyObject terminée

    La classe ainsi créée est la suivante :

    class myObject implements Iterator, ArrayAccess, Serializable, Countable {
      protected $_data = array( 'un', 'deux', 'trois');
      public function count() {
        return count( $this->_data );
      }
      public function serialize() {
        return serialize( $this->_data );
      }
      public function unserialize( $serialized ) {
        $this->_data = unserialize( $serialized );
      }
      public function offsetExists ( $offset ) {
        return isset( $this->_data[$offset] );
      }
      public function offsetGet ( $offset ) {
        return isset( $this->_data[$offset] ) ? $this->_data[$offset] : null;
      }
      public function offsetSet ( $offset, $value ) {
        $this->_data[$offset] = $value;
      }
      public function offsetUnset ( $offset ) {
        unset( $this->_data[$offset] );
      }
      public function current() {
      	return current( $this->_data );
      }
      public function key() {
      	return key($this->_data );
      }
      public function next() {
        return next( $this->_data );
      }
      public function rewind() {
      	return reset( $this->_data );
      }
      public function valid() {
      	return (bool)current( $this->_data );
      }
    }
    

    Pour être mieux exploitable, la classe devrait posséder quelques méthodes supplémentaires : un constructeur acceptant un paramètre pour initialiser la propriété $_data, un getter et un setter et elle serait pleinement fonctionnelle.

    Pour les plus curieux d’entre-vous, sachez que cette classe et relativement assez proche de la classe ArrayObject fournie par PHP5. Elle permet en effet d’utiliser un objet quasiment comme un tableau, ou, d’un autre point de vue, de remplacer le fonctionnement procédural des tableaux en fonctionnement objet.

  5. Zend Framework 1.10

    Publié le 28 janvier 2010

    Comme prévu, la version finale de Zend Framework 1.10 est disponible.

    Les nouveautés ont déjà été évoquées dans l’article « Zend Framework 1.10beta1« .

    Vous pouvez télécharger cette nouvelle version de Zend Framework sur le site officiel.

  6. Drupal 7.0 alpha 1

    Publié le 25 janvier 2010

    Énormément attendu par la communauté, Drupal 7.0 a été publié en version alpha, après plus de 2 ans de développement.

    Outre l’interface utilisateur entièrement mise à jour, l’équipe de développement a intégré la puissance du module CCK dans le cœur de l’application, ainsi que la gestion poussée des images jusqu’alors « déléguée » au module ImageField.

    Bien sûr, ce ne sont pas les seules nouveautés de Drupal 7.0 (qui se comptent par centaines). Les plus curieux pourront lire l’annonce officielle pour plus de détails sur cette nouvelle version.

    Pour ma part, je n’ai pas encore eu le temps d’installer cette version mais je ne pourrai pas tenir bien longtemps. Soyez certain qu’un article sera rédigé dès mes premiers tests !

    Et vous, avez-vous essayé cette version de Drupal 7.0 ? Quelles sont vos premières impressions ?

  7. Zend Framework 1.10rc1

    Publié le 25 janvier 2010

    C’est sans surprise que la version Release Candidate de Zend Framework 1.10 a été annoncée le 21 janvier dernier.

    Demain devrait être le grand jour de la version finale de Zend Framework 1.10

  8. Firefox 3.6

    Publié le 22 janvier 2010

    Depuis hier soir, Firefox 3.6, nom de code Namoroka, est disponible en téléchargement sur le site de Mozilla.

    Mozilla annonce des performances améliorées d’environ 20% comparé à la dernière version de la mouture 3.5. On ne pourra pas manquer la nouvelle manière de modifier la personnalisation thèmes de Firefox : nommé « Personnas », ces skins légers permettent de changer l’interface graphique de Firefox sans avoir à redémarrer le programme.

    Firefox 3.6 permet aussi une auto-complétion « intelligente » des formulaires : Firefox vous proposera des informations récupérées lors de vos précédentes saisies pour des champs semblables.

    Coté développeurs, le HTML5 est pris en compte dans ses dernières spécifications. Les polices embarquées WOFF (Web Open Font Format) sont prises en charge, ainsi que les fonds multiples, les dégradés CSS, la détection de l’orientation de l’écran, … Vous pouvez retrouver toutes les nouveautés pour les développeurs ici.

    L’annonce officielle en français se trouve ici.

    Avez-vous franchis le pas et déjà mis à jour votre version de Firefox ? Que pensez-vous de ces nouveautés ?

  9. Zend Framework 1.10beta1

    Publié le 16 janvier 2010

    Le célèbre Framework PHP développé par Zend vient de voir sa version 1.10 publié en beta1.

    les développeurs vont pouvoir tester les nouveaux composants parmi :

    • Zend_Barcode;
    • Zend_Cache_Backend_Static;
    • Zend_Cache_Manager;
    • Zend_Exception;
    • Zend_Feed_Pubsubhubbub;
    • Zend_Feed_Writer;
    • Zend_Filter_Boolean;
    • Zend_Filter_Compress/Decompress;
    • Zend_Filter_Null;
    • Zend_Log::factory();
    • Zend_Log_Writer_ZendMonitor;
    • Zend_Markup;
    • Zend_Oauth;
    • Zend_Serializer;
    • Zend_Service_DeveloperGarden;
    • Zend_Service_LiveDocx;
    • Zend_Service_WindowsAzure;
    • Zend_Validate_Barcode;
    • Zend_Validate_Callback;
    • Zend_Validate_CreditCard;
    • Zend_Validate_PostCode.

    ainsi que de nombreuses améliorations.

    De plus, Zend annonce une sortie de la version finale de Zend Framework 1.10 pour le 26 janvier prochain.

    Retrouver l’annonce officielle de la sortie de Zend Framework 1.10beta1.

  10. Jquery passe en version 1.4

    Publié le 16 janvier 2010

    Logo JqueryL’équipe de développement de Jquery vient de publier une nouvelle version de son framework Javascript.

    La librairie passe désormais en version 1.4 apportant son lot de nouveautés.

    Vous pouvez retrouver l’annonce officielle sur le blog de Jquery, ainsi que les nouveautés sur la page de la documentation.

    Pour télécharger la nouvelle version de Jquery ça se passe ici.