dimanche 5 mars 2017

Validation d'unicité en création ET modification avec Laravel 5

laravel.png

Laravel est un framework PHP assez sympathique qui permet de réaliser très proprement des applications web. Parmi ses fonctionnalités, on trouve un moteur de validation proposant pleins de règles dont l'unicité d'un attribut d'instance de modèle. Mais s'il fonctionne parfaitement pour la création d'une nouvelle instance de modèle, il provoque une erreur si on veut modifier une instance existante sans modifier l'attribut déclaré comme devant être unique. Voici donc la façon que j'ai trouvée (un peu difficilement d'où ce billet) pour y remédier.

Je précise que je suis loin d'être un expert PHP ou Laravel, donc s'il y a une meilleure façon de faire telle ou telle chose, je suis bien évidemment preneur.

Lire la suite...

lundi 19 mars 2012

Sortie de Sonar 2.14

Sonar

Sortie de la version 2.14 de Sonar, l'outil qualimétrique multi-langages, dont Java et PHP, appelable via Maven et s'appuyant sur un SGBD dont Postgresql. Au menu, détection des copier/coller entre projets pour tous les langages, ajout de notes aux règles, capacité de récupérer des informations concernant les utilisateurs depuis des systèmes tiers, notification par mail pour les nouvelles violations et amélioration de la carte des projets.

Sonar est sous licence GNU Lesser GPL version 3, lois suisses.

Pour le voir en action sur le site nemo et pour le télécharger.

Lire la suite...

vendredi 2 mars 2012

La version 5.4.0 de PHP est sortie

PHP

Aujourd'hui sort la version 5.4.0 de PHP est sortie. Elle constitue une avancée majeure dans la série 5.x et inclut un grand nombre de nouvelles fonctionnalités et de corrections de bugs.

Certaines des nouvelles fonctionnalités clefs comprennent:

  • ajout de la gestion des traits, équivalent des macros du C pour gérer un pseudo héritage multiple
  • une syntaxe abrégée pour les tableau à la Javascript a été ajoutée, par exemple: $a=[1, 2, 3, 4]; ou $a=['one' => 1, 'two' => 2, 'three' => 3, 'four' => 4];.
  • le déréférencement des tableaux retournés par les fonctions a été ajouté, par exemple; foo()[0].
  • les fermetures gèrent maintenant $this.
  • <?= est maintenant toujours disponible, quelle que soit la valeur donnée à l'option short_open_tag ini.
  • l'accès aux membres de Class à l'instanciation a été ajouté, ex: (new Foo)->bar().
  • la syntaxe Class::{expr}() est maintenant gérée.
  • le format des nombres binaires a été ajouté, par exemple: 0b001001101.
  • amélioration des messages d'erreur d'analyse syntaxique et des avertissements d'arguments incompatibles.
  • l'extension de session peut maintenant suivre l'avancement de l'envoi des fichiers.
  • serveur Web embarqué en ligne de commande.
  • gestion des langages multi octets dans toutes distributions binaires de PHP en utilisant un flag à l'exécution.

Les performances ont également été significativement améliorées, l'empreinte mémoire a été réduite et plus de 100 bugs ont été corrigés. Le code de base est plus propre, grâce à la suppression de nombreuses fonctionnalités du langage obsolètes.

Modifications qui ont un impact sur la compatibilité

  • les registres globaux, les guillemets magiques et le mode sûr ont été supprimés
  • la syntaxe break/continue $var a été supprimée
  • l'option ini allow_call_time_pass_reference a été supprimée
  • l'encodage par défaut default_charset est maintenant "UTF-8" dans le fichier php.ini distribué, mais reste par défaut à ""

Extensions déplacés dans PECL

  • ext/sqlite (ext/sqlite3 et ext/pdo_sqlite ne sont pas affectés)

PHP 5.4 est la dernière série à supporter Windows XP et Windows 2003. Aucun paquet binaire ne sera fournit pour Windows pour les versions ultérieures de PHP.

Pour la liste complète des changements dans PHP 5.4.0, voir le changelog. Voir également la news sur Linuxfr bien plus complète.

dimanche 26 février 2012

Sortie de Doxygen 1.8.0

Doxygen

La version 1.8.0 de Doxygen est sortie le 25 février 2012. Cet outil libre développé par Dimitri van Heesh permet de générer la documentation technique à partir du code source, et ce pour les langages suivants: C++, C, Java, Objective-C, Python, IDL (pour Corba et Microsoft), Fortran, VHDL, PHP, C# ainsi que D jusqu'à un certain point.

Doxygen permet de générer un navigateur de documentation en ligne (en HTML) et/ou des manuels de référence à consulter hors ligne (en LaTeX, donc avec une qualité remarquable) à partir d'un ensemble de fichiers de code source documenté. Sont également gérés les formats de sortie RTF (MS-Word), PostScript, PDF avec hyperliens, HTML compressé et man pages Unix. La documentation est extraite directement depuis le code source, ce qui facilite de maintenir le code et la documentation synchronisés.

Il est possible de configurer Doxygen pour extraire la structure de code de fichiers sources non documentés. Ceci est très utile pour vous y retrouver rapidement dans un grand volume de code source. Vous pouvez également visualiser les relations entre les différents éléments grâce des graphiques de dépendances d'inclusion, des diagrammes d'héritage et des diagrammes de collaboration qui sont tous générés automatiquement.

Enfin, il est également possible d'utiliser Doxygen pour créer une documentation classique (comme Dimitri van Heesh l'a fait pour la documentation de Doxygen).

Doxygen fonctionne sur la plupart des Unix (dont Linux et Mac OS X sur lesquels il est développé) et des exécutables pour Windows sont également disponibles. Doxygen est sous licence GNU General Public License. En revanche, les documents produit par Doxygen sont considérés comme travail dérivé de celui effectué pour produire les fichiers en entrée. Ils ne sont donc pas affectés par la license GNU GPL.

Enfin, il existe des plugins pour Maven, Jenkins et Sonar:

Sur le site Doxygen, vous pourrez voir le manuel ou télécharger la dernière version.

Lire la suite...

mercredi 22 février 2012

Hamcrest, tutoriel pour Java

Java

Hamcrest est une bibliothèque d'objets de correspondance ('matchers' ou contraintes ou encore prédicats) permettant de définir des règles de 'correspondance' de façon déclarative, utilisables dans d'autres frameworks. Typiquement, on l'utilisera avec des frameworks de test, des bibliothèques d'objets bouchons (mock objects) et des règles de validation d'interface utilisateur.Par exemple, au lieu d'écrire:

   assertEquals("bleu", couleur);

On écrira:

   assertThat(couleur,is("bleu"));

On note ici le gain immédiat de lisibilité (surtout en anglais)...

Hamcrest a été implémenté pour Java, PHP mais aussi C++, Objective-C, Python et Erlang. Naturellement, avec Java, on pourra gérer cette dépendance via Maven.

Une version d'Hamcrest est fournie avec JUnit. Cependant, elle date un peu et les versions plus récentes d'Hamcrest offrent un tas de nouvelles fonctionnalités, en particuliers pour travailler avec les collections. Vous pouvez utiliser la dernière version d'Hamcrest en utilisant la dépendance junit-dep à la place de junit, comme suit:

  <dependency>
      <groupId>junit</groupId>
      <artifactId>junit-dep</artifactId>
      <version>4.10</version>
      <scope>test</scope>
      <exclusions>
         <exclusion>
              <groupId>org.hamcrest</groupId>
              <artifactId>hamcrest-core</artifactId>
          </exclusion>
      </exclusions>
  </dependency>
  <dependency>
      <groupId>org.hamcrest</groupId>
      <artifactId>hamcrest-library</artifactId>
      <version>1.3.RC2</version>
  </dependency>

junit-dep est exactement la même bibliothèque que junit, exception faite que ses dépendances sont explicitement déclarées et non incluse dans le bundle.....

Notez enfin que Hamcrest n'est pas une bibliothèque de test comme JUnit ou TestNG, mais bien une bibliothèque d'objets de correspondance destinés à rendre les tests implémentés avec les bibliothèques précédentes beaucoup plus lisibles.

Ce qui suit est la traduction du tutoriel Java que l'on peut lire sur le wiki du site de Hamcrest. On pourra également lire ce billet de John Smart.

Lire la suite...

mardi 14 février 2012

La version 1.2.3 de PHPUnit_Selenium est sortie

selenium-logo.png PHP

PHPUnit est l'équivalent pour PHP de JUnit pour Java. Framework très abouti, utilisant même des annotations, il permet de plus de s'interfacer avec Selenium pour tester des applications Web. Depuis la version 1.2.0, il prend maintenant en compte l'API WebDriver en ajoutant la classe PHPUnit_Extensions_Selenium2TestCase ainsi que:

  • le partage de session pour l'API WebDriver
  • l'ouverture d'URL et la sélection d'élément pour l'API WebDriver
  • le clic d'éléments et le raccourci clickOnElement($id) pour l'API WebDriver
  • le support partiel de 'alert()' pour l'API WebDriver
  • la manipulation d'éléments pour l'API WebDriver: accesseur de test, modificateurs de valeurs
  • les sélecteurs raccourcis `by*()` pour l'API WebDriver
  • l'extraction d'une classe de commande de base pour étendre les commandes gérées des sessions et des éléments pour l'API WebDriver

Viennent donc de sortir coup sur coup les versions 1.2.2 et 1.2.3 qui vient réparer un petit oubli de la 1.2.2.

Lire la suite...

php-webdriver

selenium-logo.png PHP

PHPWebDriver (https://github.com/Element-34/php-w...) est un fork de projet Facebook php-webdriver (https://github.com/facebook/php-web...) avec quelques différences:

  • distribution via PEAR
  • ajoute de la classe WebDriverWait
  • ajout de ActionChains
  • interface nettoyée pour réduire le couplage avec l'implémentation de WebDriver

Ce fork résulte de l'insatisfaction de son auteur avec les autres implémentations PHP. Pour mémoire, aucune de ces implémentations n'est officiellement soutenue par Selenium. Évidemment, c'est libre et distribué sous la licence Apache 2 (comme le reste de la suite Selenium). L'auteur offre un support commercial et une correction prioritaire des bugs (http://element34.ca/blog).

Ce qui suit est la traduction de la documentation actuellement fournie....

Lire la suite...

vendredi 27 janvier 2012

Selenium IDE

Selenium IDE

Selenium IDE est en environnement de développement intégré pour les scripts Selenium. Il est implémenté comme une extension de Firefox et permet d'enregistrer, de modifier et de corriger des tests fonctionnels. Selenium IDE intègre tout Selenium Core ce qui permet d'enregistrer et de rejouer rapidement des tests dans un environnement réel.

Selenium IDE n'est pas qu'un outil d'enregistrement. Il est possible d'utiliser ses capacités d'enregistrement mais aussi de modifier à la main les scripts. Via l'autocomplétion et la capacité de déplacer rapidement les commandes, Selenium IDE est l'environnement idéal pour créer des tests Selenium, quel que soit le style choisi.

Lire la suite...

Sonar

Sonar

Sonar est une plate-forme ouverte de gestion de la qualité du code. Elle couvre les 7 axes de la qualité du code:

Sonar sait gérer Java mais aussi d'autres langages comme PHP (mais aussi C, C#, Flex, Natural, PHP, PL/SQL, Cobol et Visual Basic 6).

Sonar est extensible à l'aide de plugins très simples à installer. L'un deux permet l'interfaçage avec Jenkins

Parmi les fonctionnalités notables de Sonar, sa capacité à gérer des projets multiples, son authentification possible sous LDAP, ses outils de revue de code augmentés d'information signalant les manquements et des voies d'amélioration possible, sa localisation notamment en français, sa gestion personnalisé des règles à appliquer, etc. Des nuages permettant de repérer du premier coup d'oeil où l'effort doit être porté en priorité pour obtenir des résultats rapidement.

Sonar peut être appelé depuis le poste de travail du développeur, depuis Eclipse, via Maven ...

Il génère une émulation entre les équipes qui essaient d'avoir le projet le plus propre, ce qui apparaît clairement dans les tableaux de bord "radiateurs".

Nous verrons dans un prochain billet comment l'installer.... même si c'est très simple.

Sonar est actuellement en version 2.13.

jeudi 26 janvier 2012

Subversion: installation

Logo subversion

Le gestionnaire de source est la brique de base indispensable à toute tentative d'industrialisation des développements. Voici maintenant une petite procédure d'installation d'un serveur Subversion, dernière version (donc 1.7.2 à ce jour) sur un serveur Debian Lenny qui utilisera tant que possible les paquets et qui s'appuiera en outre sur:

  • un serveur HTTP Apache série 2.2
  • un serveur de messagerie Postfix
  • un navigateur de dépôts de source WebSVN qui fera l'objet d'un autre billet.

Lire la suite...

dimanche 15 janvier 2012

Bienvenue !

Ce blog est destiné à partager les connaissances que j'aurais pu acquérir dans le domaine du développement, plus principalement dans la recherche de l'amélioration de la productivité et donc, de la qualité logicielle.... Une particularité: l'ajout de la contrainte de travailler en équipe sur un Intranet non connecté à l'Internet.

Les principaux langages évoqués seront Java et PHP sans oublier Javascript, les développements étant principalement web. Mais comme il faut bien se faire plaisir, il y aura aussi du Perl !

Le choix des outils est réalisé selon les critères suivants:

  • licence libre
  • projet actif
  • localisé en français
  • authentification LDAP possible
  • api web SOAP ou REST
  • intégrable avec les autres outils si nécessaire
  • cohérence technologique: outil si possible en Java ou PHP sur SGBD Postgres si nécessaire et via serveur Apache

A bientôt !