jeudi 24 septembre 2015

Find et wc pour calculer le nombre de lignes de code dans un projet Php

Je sors tout juste d'une longue période de refactoring d'anciennes applications Php et je me suis demandé combien de lignes de codes étaient impliquées dans certains projets.
J'ai obtenu la réponse assez facilement en combinant l'utilisation des deux commandes find et wc de la façon suivante :

find racinedemonprojet -type f -name "*.php" -exec wc -l {} \; > ~/resultat.txt

Find explore de manière récursive l'arborescence de dossiers à partir de racinedemonprojet à la recherche de tous les fichiers portant l'extension .php.
Chaque fichier trouvé est ensuite analysé par la commande wc -l qui affiche le nombre de lignes du fichier ainsi que son nom.

A la fin j'obtiens un fichier resultat.txt qui comporte autant de lignes qu'il y a de fichiers Php dans mon projet et qui indique pour chacun d'eux le nombre de lignes qu'il contient.
Il suffit donc d'ouvrir ce fichier avec un tableur et de faire la somme des valeurs de la première colonne pour connaitre le nombre total de lignes de codes Php dans le projet.

dimanche 23 août 2015

Migrer vers Php 5.4 depuis une version antérieure

On sait depuis quelques mois qu'Ovh va rendre obsolètes sur ses hébergements mutualisés toutes les versions de Php antérieures à 5.4.

Cela fait un peu plus de 15 ans que je développe des sites et des applications internet basées sur ce langage. Certaines tournent sur des serveurs locaux mais la plupart sont sur des hébergements mutualisés ou sur des VPS chez Ovh.
Pour les mutualisés on sait qu'ils passeront automatiquement à Php 5.4 en septembre.
Pour les VPS rien n'est annoncé concernant les serveurs en production mais pour les nouveaux, les distributions proposées semblent disposer au moins de Php 5.5.

Si mes scripts les plus récents sont déjà en Php 5.5, il en reste un certain nombre dans des versions antérieures et même en Php 4. Il adonc bien fallu que je me penche sérieusement sur le sujet et voici une petite liste non exhaustive des principaux changements et des choses à vérifier/corriger lorsque l'on migre vers Php 5.4 depuis une version antérieure.

  • La directive register_globals disparaît :

    A mon avis c'est le changement le plus important si vous ne l'avez pas anticipé. Il y a longtemps la valeur par défaut de register_globals était On. Avec Php 4.2 cette valeur par défaut est passée à Off mais jusqu'à la version 5.3 on pouvait encore la changer pour mettre à On. Depuis Php 5.4 cette directive disparaît et Php se comporte automatiquement comme si elle valait Off.
    Donc si malgré tous les avertissements à ce sujet vous avez encore des scripts dont les variables sont automatiquement initialisées avec les paramètres (GET ou POST) de la requête qui les appelle, ils ne vont plus fonctionner en Php 5.4.

  • Les magic_quotes disparaissent :

    Cela concerne aussi bien les magic_quotes_gpc que les magic_quotes_runtime donc pensez bien à vérifier comment sont traités les guillemets simples ou doubles dans vos données externes.

  • Attention à l'encoding des fonctions du type htmlspecialchars :

    Les principales fonctions concernées sont htmlspecialchars, htmlspecialchars_decode, html_entities, html_entity_decode, get_html_translation_table et il faut bien reconnaître que l'évolution de la valeur par défaut du paramètre optionnel encoding a de quoi prêter à confusion.

  • Obsolescence annoncée de l'extension MySQL :

    Si vous utilisez encore l'ancienne extension MySQL pour accéder à vos bases de données, il est grand temps de passer à MySQLi car MySQL est obsolète à partir de Php 5.5 et sera supprimée prochainement.

jeudi 4 juin 2015

Comment insérer plusieurs lignes d'un coup dans LibreOffice Calc

La fonction Insertion/Lignes de LibreOffice Calc ne présente pas de boîte de dialogue permettant de choisir le nombre de lignes à insérer. Ce n'est pas gênant tant que l'on se contente de rajouter une ligne de temps en temps dans une feuille de calcul mais ça devient vite fastidieux dès que l'on veut insérer plus d'une dizaine de lignes d'un coup.

La solution existe est toute simple : sélectionner autant de lignes que l'on souhaite en insérer puis utiliser Insertion/Lignes.