Trêve hivernale

Ca y est, la fin de l'année approche à grands pas. Moment idéal pour se ressourcer, ces deux prochaines semaines vont être très calmes sur le blog. En effet, j’ai décidé de tenter des vacances « déconnectées ». Pas de publication, pas de surf, pas de suivi de flux RSS… bref, que de la vraie vie !


Je vous souhaite à toutes et à tous d’excellentes fêtes de fin d’année et, aussi commerciales soient-elles, ne vous privez pas de moments de bonheur avec vos amis et vos familles. Portez-vous bien !


A bientôt,


Juan

Mon IDE du moment : Netbeans (HTML5 & PHP)

J'ai longtemps développé avec Komodo Edit. Malheureusement, le "bridage" de la version gratuite m'a assez rapidement contraint à chercher un autre éditeur. J'aurai bien aimé investir dans une licence Komodo IDE mais la réalité économique est ce qu'elle est.

Je suis donc passé à Netbeans dans sa version "HTML5 & PHP". Au départ à contre cœur, je l'avoue. Après quelques jours et quelques bougonnements, la conclusion s'est pourtant imposée d'elle-même : Netbeans est un très bon IDE.

De mon point de vue, les points forts de Netbeans sont :

  • gestion native du Versioning (Git) : comment s'en passer ?
  • une multitude de plugins pratiques : cf. ci-dessous
  • possibilité d'importer/exporter ses paramètres : INDISPENSABLE lorsqu'on travaille avec plusieurs postes
  • des thèmes "dark" très réussis : je ne supporte plus de développer sur fond blanc
  • personnalisable à souhait : indispensable, surtout pour les raccourcis clavier
  • une grosse communauté d'utilisateurs : pour tout problème, il est relativement aisé de trouver une solution
  • des nouvelles versions régulières : l'outil évolue constamment et positivement
  • gratuit : important en période de "vaches maigres"


Pour l'agrémenter un petit peu, j'ai également installé (entre autres) ces quelques plugins :

  • Show current GIT branch in status bar : pratique pour savoir sur quelle branche on bosse
  • Git toolbar : accès rapide au commande Git
  • Show path in titlebar : chemin du fichier édité dans la bar des titres
  • Redmine NB : gestion des tickets de Redmine intégrée à Netbeans


A vrai dire, le seul reproche que je peux lui faire, c'est sa consommation de mémoire.

J'avoue que j'ai vraiment pris goût à cet IDE. De temps en temps, je relève parfois quelques lenteurs mais rien de vraiment rédhibitoire. Bien entendu, j'ai mis un certain temps à trouver mes marques et à le personnaliser. Il me serait d'ailleurs très difficile de repartir d'un Netbeans "nu" tant j'ai paramétré la bête à mon goût. Et c'est justement là qu'intervient l'export de paramètres. Une fois ses paramètres sauvegardés, plus de stress lors des réinstallations. On importe le fichier de paramètres et le tour est joué.

Bref, j'en suis vraiment satisfait. Netbeans est un excellent IDE qui répond clairement à 100 % de mes besoins. Cependant, je trouvais Komodo Edit plus fluide et mieux foutu. Netbeans fait le boulot mais je le trouve relativement lourd.

Git - Premiers pas

Billet initialiement rédigé le 15/05/2014.


Dans le cadre de mon activité professionnelle, je développe une application en PHP/MySQL. Jusqu’à présent, je n’avais pas l’utilité d’un outil de versioning comme Git vu que je développais seul. Cela dit, nous sommes en plein recrutement et il va bientôt falloir que je m’habitue à ne plus être le seul développeur du projet. Du coup, j’ai décidé d’apprendre à utiliser Git. Le choix de Git est totalement arbitraire. J’ai vu qu’il en existait d'autres (SVN, Mercurial, Bazaar, etc.) mais j’ai l’impression que Git a beaucoup plus le vent en poupe actuellement.

Malheureusement, j’ai l’impression que je vais devoir abandonner mon IDE préféré, Komodo Edit, car seule la version payante Komodo IDE intègre la gestion du versioning Git. Je vais donc non seulement devoir apprendre à utiliser Git, mais en plus je vais devoir prendre en main Netbeans. Bref, un beau challenge en perspective.

 

Git : Installation

L’installation de Git est relativement simple. Pour Windows, il suffit de suivre ce tutoriel : http://www.vulgarisation-informatique.com/utiliser-git-windows.php.
Avant de me lancer, j’ai également pris le temps de lire le document publié par Mathieu Nebra (Mateo21) intitulé « Gérez vos codes source avec Git » (qui explique également comment installer Git). Si ce document vous paraît trop long, vous pouvez aussi consulter ce petit guide graphique très facile d’accès : http://rogerdudler.github.io/git-guide/index.fr.html.

A l'aide de ces documents, j’ai donc installé Git en "local" (Windows 7) et sur le serveur (Debian). J’avoue que je ne sais même pas si tout est fonctionnel au moment où j’écris ces lignes mais en tout cas, je n’ai pas rencontré de message d’erreur lors de mes différentes installations. Le but est, à terme, de pouvoir également effectuer des « push » directement sur le serveur. Mais pour ce dernier point, j’avoue que je ne sais pas du tout comment m’y prendre. (Edit : bien entendu, aujourd’hui je le sais ^^)

 

Git - Init et premier commit : Premières impressions

Je ne vais pas entrer dans les détails du fonctionnement de Git car il existe des tutos d’explications partout sur la toile. Je vais me contenter de vous donner un avis de novice. Je trouve que Git est déroutant et j’avoue que je ne vois pas encore comment je vais articuler mes développements autour de cet outil. Je trouve Git plutôt effrayant car bien que je comprenne l’intérêt de l’outil, du versioning et du partage de sources, je trouve l’utilisation de Git très laborieuse. Pour être honnête, je n’ai pas vraiment tout compris à son fonctionnement. Je vais donc, pour le moment en tout cas, me contenter d’utiliser les fonctionnalités de bases et voir si je m’approprie un peu plus l’outil au fil des « commit » et des « push ».

 

Edit : Aujourd’hui, je ne peux plus me passer de Git. Si vous débutez, accrochez-vous ! Le jeu en vaut vraiment la chandelle et au final, Git n’est pas compliqué du tout… au contraire !
D’ici quelques jours, je publierai un petit « How-To » de mise en place d’un dépôt Git en local avec déploiement automatique sur serveur à chaque push.

 

Lancer un script PHP en ligne de commande sous Windows

Comme je le disais dans mes deux derniers billets, je travaille actuellement sur des scripts de migration de données. Le problème avec ce genre de scripts qui traitent plusieurs milliers de lignes, c'est que vous êtes vite bloqué par les délais d'exécution lorsque vous les lancez via un navigateur Web.

Vous avez alors deux possibilités :

  • Fractionner le traitement des données en fixant des plages de traitement (traitement par lots)
  • Lancer votre script directement sur le serveur en ligne de commande

Fractionner le traitement est souvent fastidieux, surtout lorsqu'on doit traiter plus de 80 000 lignes.

La solution la plus simple est donc de lancer votre script directement dans une console (Invite de commandes). Pour ce faire, ouvrez une console et rendez vous dans le répertoire contenant le fichier php.exe. Si vous utilisez WampServer, le chemin par défaut est :

C:\wamp\bin\php\php5.5.12>

N.B. : la version de PHP varie selon votre version de wamp

Pour lancer votre script, il vous suffit d'exécuter la commande suivante :

C:\wamp\bin\php\php5.5.12>php.exe -f c:\chemin\vers\votre\script.php

Et le tour est joué ! ^^

Si vous exécutez souvent des commandes PHP en ligne de commandes, vous pouvez également déclarer le chemin de votre php.exe dans vos variables d'environnement du système. Cela vous évitera de devoir vous positionner dans le répertoire de php avant de lancer vos scripts. Pour plus d'informations, n'hésitez pas à consulter la documentation PHP sur php.net : Ligne de commande PHP sous Microsoft Windows

MySQL : Autoriser/Forcer id=0 pour les PRIMARY KEY avec AUTO_INCREMENT

Dans le cadre de la migration des données d'une structure de base à une autre, j'ai été confronté à un petit problème. En effet, dans l'ancienne version de la BDD, certaines tables de paramètres ont un id démarrant à 0 au lieu de 1.

Exemple :

Table "civilite"
Id Valeur
0 Non communiqué
1 Féminin
2 Masculin

 

Or, lorsque je lance la requête :

INSERT INTO `civilite_new` (`civilite_new_id`, `civilite_new_label`)
SELECT `civilite_id`, `civilite_label` FROM `civilite`;

MySQL me retourne l'erreur suivante :

Error Code: 1062. Duplicate entry '1' for key 'PRIMARY'

L'AUTO_INCREMENT prend la première ligne (Id = 0) et force l'Id à 1. Du coup, lors du traitement de la deuxième ligne, MySQL bloque car la valeur de l'Id de cette dernière est également 1. Partant de ce constat, deux solutions sont possibles :

  • ré-incrémenter toutes les tables en décalant les id (on aurait donc 1, 2, 3 à la place de 0, 1, 2) - Attention aux intégrités référentielles
  • forcer la valeur 0 du premier Id - pas très "propre" mais efficace

Dans mon cas, la première solution ne me convient pas car le code de l'application qui alimente cette base de données repose sur le principe de Id = 0 pour "Non communiqué".

Donc, pour forcer la mise à 0 des premiers Id, il va donc falloir user du mode SQL NO_AUTO_VALUE_ON_ZERO :

SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO';

Ajoutez la ligne ci-dessus avant votre INSERT ou UPDATE.

Une fois vos requêtes exécutées, n'oubliez pas de désactiver le mode "NO_AUTO_VALUE_ON_ZERO" :

SET SQL_MODE=@OLD_SQL_MODE;

Et le tour est joué ! ^^