Environnement de développement pour le PHP

Introduction

De même que pour le C, je suis à la recherche d'un EDI pour le développement PHP. Jusqu'à maintenant, la programmation en PHP était réalisée avec Notepad++. Même si celui-ci est un bon éditeur de code, je lui reproche son absence de debugger. Pour des raisons pédagogiques, j'ai besoin régulièrement d'exécuter pas à pas une routine et de pouvoir observer les différentes valeurs que va prendre une variable.

WampServer

Il y a quelque temps, j'ai écrit un petit article sur WampServer. Nous allons donc utiliser cette installation pour le développement PHP.

Netbeans

Etant donné que l'EDI choisi pour le C est Netbeans, il me parait normal d'essayer d'utiliser Netbeans pour le PHP aussi.

Pour cet essai, nous allons télécharger et installer la version PHP de Netbeans.

Configuration

Avant de pouvoir utiliser le plugin PHP, il faut le configurer. Il s'agit de donner le chemin de l'interpréteur PHP.

Hello World

Comme d'habitude, un petit "Hello World" pour tester l'installation.

Nouveau projet

Nom et emplacement du projet

Attention! Netbeans ne crée pas automatiquement le sous-dossier "HelloWorld"

A ce stade, il est possible de faire "finish" vu que les valeurs par défaut sont utilisées pour les paramètres suivants. Malgré cela, voici la suite des paramètres.


Nous avons maintenant un projet vide. Il s'agit de mettre un peu de code. Pour ce faire, il faut ajouter un fichier "index.php".


Ensuite, il faut mettre le code

Et voici ce que donne le projet lancé à l'aide du bouton "run"

Debugging

En installant WampServer, nous avons aussi installé le debugger "XDebug". Pour l'activer sous Netbeans, il faut juste se déplacer dans le menu de WampServer (PHP/PHP Settings) et activer "(XDebug) : Remote debug".

Ensuite, il est possible d'utiliser le debugger depuis Netbeans :

Conclusion

Bonne nouvelle! Netbeans et son plugin PHP répondent aux besoins. Ils permettent d'éditer le code PHP et de le debugger convenablement.

WampServer

Introduction

Pour les besoins d'un cours PHP, étant donné l'hégémonie de Windows, je vais installer un serveur WAMP.
Le produit, WampServer, a été choisi par mes prédécesseurs, je vais simplement rédiger un petit article concernant son installation.

Installation

Sur le site de WampServer, je choisis l'installation appropriée à l'OS de ma machine de test (32 bits).

En suivant les informations ci-dessus, j'installe les logiciels suivants :

  • Visual C++ 2010 SP1 Redistributable Package"
  • WampServer

Test


=> Le serveur http est disponible sur http://localhost

Premier script PHP

Dans le dossier "C:\wamp\www\MonSite", j'ai ajouté le fichier "index.php" avec le contenu suivant :

<!--?php    echo 'Hello world'; ?-->

Voici le résultat de son appel :

=> OK, mon script est interprété correctement.

Conclusion

L'installation de WampServer est très simple et très rapide. Après quelques minutes, je peux commencer à réaliser des scripts PHP.

Environnement de développement pour le C

Introduction

Depuis quelque temps, je suis à la recherche d'un environnement de développement pour enseigner le C.

Les contraintes sont les suivantes :

  • IDE (pas des produits détachés)
  • Multiplateformes (en tout cas Windows et MacOSX)
  • Debugger intégré
  • Autocomplétion

Recherches

Jusqu'à maintenant, le produit utilisé était Microsoft Visual Studio. Celui-ci n'étant pas multiplateforme, il s'agit de trouver une alternative.

Lors de ma phase de recherche, je me suis penché sur les produits suivants :

Après les avoir tous évalués, j'ai choisi Netbeans. Celui-ci présente, selon moi, les avantages suivants :

  • Utilisé par les étudiants plus tard dans leur cursus pour les cours Java
  • Open Source
  • Multiplateformes
  • Traduit en français

De plus, même si je ne l'ai pas beaucoup utilisé pour écrire du C, j'écris la quasi-totalité de mes projets Java avec. J'ai donc beaucoup d'expérience sur ce produit et je trouve qu'il est de très bonne qualité.

Dans un premier temps, je n'avais pas envisagé Netbeans car une mauvaise expérience avait eu lieu, il y a quelques années. Sous Windows, le compilateur gcc était installé à partir du projet cygwin et cela ne s'est pas toujours très bien passé avec les différentes variantes d'installations.

GCC

Les trois EDI envisagés plus haut nécessitent l'installation séparée d'un compilateur. Voici, par exemple, la liste des compilateurs supportés par Code::Blocks.

Pour débuter, je vais essayer le plus courant de ces compilateurs (gcc) et, s'il ne donne pas satisfaction, j'étudierai des variantes plus exotiques.

MacOSX

Les outils de développement regroupés dans le projet xcode de Apple contiennent le compilateur gcc. Ce qui me dérange c'est que xcode contient beaucoup plus de choses que gcc. Ayant un disque ssd, je préfère économiser un peu de place, donc je me suis mis à la recherche d'un package prêt à l'emploi qui permet de n'installer que le gcc.

Voici ce que j'ai trouvé : gcc-10.6. J'ai choisi la version préconstruite pour mon OS (Snow Leopard) : GCC-10.6.pkg

 Test

Après cette installation, je fais un petit test de gcc :

Je crée le fichier "helloworld.c" dans le dossier /tmp

#include 
 
int main(int argc, char** argv) {
 
    printf("Hello World!\n");
 
    return 0;
}

Je le compile et l'essaye :

Windows

MinGW

Pour éviter les problèmes liés à cygwin cités précédemment, je vais essayer d'utiliser MinGW.

Téléchargement

Installation

Une fois le programme d'installation démarré, je ne choisis que le strict nécessaire : "C Compiler" et "MSYS Basic System".
Voici un aperçu de la dernière page avant l'installation :

Installing:
      mingw-get
      pkginfo
      C Compiler
      MSYS Basic System
 
Using pre-packaged repository catalogues (20120426)
 
Destination location:
      C:\MinGW

L'installation démarre ensuite et télécharge les fichiers dont j'ai besoin. Une fois l'installation terminée, j'ai un dossier "C:\MinGW" de 170 Mb avec le compilateur gcc et tout ce qu'il faut pour faire du développement C sous Windows.

Test

Comme pour l'installation sous MacOSX, je crée le fichier helloworld.c dans le dossier %TEMP% de Windows.

#include 
 
int main(int argc, char** argv) {
 
    printf("Hello World!\n");
 
    return 0;
}

Netbeans

Pour ce test, j'ai choisi de télécharger et d'installer la dernière version de Netbeans (7.2) uniquement avec le plugin C.

MacOSX

Le même magnifique test que précédemment donne un résultat tout aussi concluant.

Windows

L'intégration de gcc sous Windows est un peu plus compliquée que sous MacOSX. Il nous faut la faire manuellement, car Netbeans n'arrive pas à trouver gcc automatiquement comme sous MacOSX.

Path

Selon Wikipedia : "Sous Windows, si un exécutable n'est pas à l'emplacement par défaut, la variable %PATH% indique dans quels répertoires le chercher."

Avant de démarrer Netbeans, il faut modifier la variable path pour que cet EDI trouve les outils de "make" dont il a besoin. Si cette configuration n'est pas réalisée, la compilation ne va pas fonctionner et le message d'erreur "mkdir: Command not found" sera affiché.

Chemin à ajouter dans le PATH :

C:\MinGW\msys\1.0\bin

C plugin

Il s'agit maintenant de configurer le Plugin C de Netbeans pour utiliser le gcc que nous installé avec MinGW.


Test

Une fois ces quelques efforts de configuration terminés, la compilation sous Netbeans fonctionne aussi bien que sous MacOSX.

Conclusion

Netbeans sera utilisé comme EDI pour d'autres langages de programmation (Java et PHP). Il est donc intéressant de pouvoir l'utiliser également pour le C. Cela évite de multiplier les installations et permet de se concentrer sur les langages eux-mêmes plutôt que sur les outils de développement. Je vais donc utiliser cet outil pour mon cours de C.

Serveur Virtuel Slitaz/MySQL

Introduction

Pour les besoins d'un cours sur les bases de données, j'ai créé une machine virtuelle linux contenant le SGBD-R MySQL. Les contraintes sont les suivantes :

  • Minimiser l'espace disque occupé
  • Utiliser le système de virtualisation VirtualBox présent sur les machines (Windows) à disposition
  • Serveur de base de données accessible uniquement en ligne de commande

Création de la machine virtuelle

Sous VirtualBox, créer une nouvelle machine

Avec un disque de 1Gb

Résumé de la machine à créer

Machine virtuelle prête

Paramétrage réseau

Dans un premier temps, le réseau est configuré en NAT. La machine virtuelle va donc se connecter au réseau de l'entreprise et recevoir une adresse IP via DHCP.

CD-ROM

Ajouter un lecteur CD-ROM avec l'image du disque : slitaz-3.0-base.iso

Installation de Slitaz

La distribution Linux choisie pour ce serveur est Slitaz 3.0. Celle-ci à l'avantage d'être très compacte et peu gourmande en ressources.

Démarrage du disque d'installation

Il est important de choisir l'anglais comme langue d'installation, un bug empêche d'utiliser une autre langue.

Le login pour l'installation est root/root

Partitionnement

Le disque dur virtuel de 1Gb créé précédemment est accessible dans /dev/sda

Pour ce faire, il faut utiliser l'antique "fdisk" :

  • Ajouter une partition /dev/sda1 en Linux-Swap de 250Mb
  • Ajouter une partition occupant le reste de l'espace en Linux et rendre cette partition bootable

Formattage

Pour formater les deux partitions, il faut utiliser les commandes suivantes.

root@slitaz:~# mkfs.ext3 /dev/sda2
root@slitaz:~# mkswap /dev/sda1

Téléchargement et montage du CD-ROM d'installation

Malheureusement, un bug dans la routine d'installation empêche d'utiliser l'image du disque utilisée comme disque de boot comme source de données (unable to find rootfs.gz). Pour contourner ce problème, il faut télécharger le disque une nouvelle fois et le monter manuellement.

 Installation de slitaz

Seuls les paramètres nécessitant une configuration sont présentés.

Voilà, l'installation est terminée.

Il faut maintenant éteindre cette machine avant de passer à la suite.

 

Installation des outils

Il faut commencer par retirer l'image du CD-ROM utilisée pour l'installation

Ensuite, il faut redémarrer le système

Après avoir choisi la langue et le clavier, nous sommes prêts pour l'installation des outils

Nano

Installer un éditeur plus confortable que vi.

 

Serveur sftp

Pour pouvoir transmettre des fichiers à la machine virtuelle via SSH

Serveur MySQL

Toute cette installation vise justement à déployer un serveur de base de données MySQL.

Mise en oeuvre des outils

Une fois les outils installés, une petite configuration s'impose pour en avoir une utilisation confortable.

Démarrage automatique de SSH et MySQL

Il s'agit maintenant d'ajouter dropbear et mysql à la liste des daemons à démarrer (variable RUN_DAEMONS)

# /etc/rcS.conf - Initial boot script configuration for SliTaz GNU/Linux.
# Config file used by /etc/init.d/rcS
#
 
# Use udev to populate /dev and handle hotplug events.
UDEV="yes"
 
# Clean up the system removing all tmp and pid files.
CLEAN_UP_SYSTEM="yes"
 
# Filesystems to check integrity of at boot time. You should check the
# rootfs (where SliTaz is installed) and all partitions listed in
# /etc/fstab. Example : CHECK_FS="/dev/hda5 /dev/hdb1"
CHECK_FS="/dev/sda2"
 
# Fast boot into X by setting the system keymap-locale and starting
# the Slim login manager earlier at boot time. If fast X is enabled
# then dbus, hald and slim can be removed from RUN_DAEMONS.
FAST_BOOT_X="no"
 
# Start Kernel log daemons (syslogd and klogd).
KERNEL_LOG_DAEMONS="yes"
SYSLOGD_ROTATED_SIZE="60"
 
# Kernel modules to automatically load at boot time. You can use 'modprobe -l'
# to get a list of all kernel modules available.
#
# For Intel and some Nvidia sound cards : snd_intel8x0 snd_intel8x0m snd_hda_intel
#
LOAD_MODULES="  e1000"
 
# Initialization scripts to run at boot time. Boot order is important,
# bootopts.sh (boot options) must start first, hwconf after network (tazx
# needs an active connection to install Xorg), then you are free to choose.
# Note that the local.sh script exists to let you quickly add some local startup
# commands.
RUN_SCRIPTS="bootopts.sh network.sh i18n.sh hwconf.sh local.sh"
 
# Daemons to start at boot time. SliTaz only provides a few daemons: firewall,
# Web server (lighttpd), SSH server (dropbear) and rsyncd, so boot order is
# not really important, but dbus/hald should be started before slim.
RUN_DAEMONS="dbus hald firewall slim dropbear mysql"
 
# Pre login bold message.
MESSAGE="Welcome to your box."

Démarrage automatique de SFTP

Réseau local virtuel

Il s'agit maintenant de mettre la machine virtuelle dans le réseau virtuel créé par VirtualBox.

Connexion SSH

Dans cette partie, nous allons utiliser la connexion SSH pour administrer le serveur en ligne de commande. Pour plus d'informations à ce sujet, je vous invite à consulter le site du zéro

Accès root

Par défaut, la configuration de Slitaz empêche la connexion en "root". Cette machine virtuelle étant une simple machine de test, nous n'avons pas besoin d'un bon niveau de sécurité. Nous allons donc autoriser l'accès "root".

Ensuite, il s'agit d'enlever les paramètres -w et -g pour le démarrage de dropbear.

Une fois cette configuration terminée, un redémarrage de la machine virtuelle redémarrera aussi le daemon "dropbear" dans le mode qui nous intéresse.

PuTTY, le client Windows

Pour se connecter via SHH au serveur, il existe, par exemple, le logiciel PuTTY.

Transfert de fichiers via SSH

Etant donné que nous avons installé un serveur SFTP, il s'agit maintenant d'utiliser un client Windows pour transférer des fichiers. Il y a, par exemple le  logiciel WinSCP qui permet de le faire.

Ce logiciel fonctionne comme la plupart des clients FTP, la partie gauche présente les fichiers du disque de la machine cliente et la partie droite, le disque du serveur.

Conclusion

Ca y est, nous disposons maintenant d'une machine virtuelle de test pour travailler avec MySQL en ligne de commande. Pour conclure, vous une dernière capture présentant l'occupation disque de toute notre installation :

L'installation est plutôt compacte. 61Mb pour l'OS, les serveurs SSH et SFTP ainsi que le moteur de base de données MySQL.

Introduction à LARP

Comme je l'ai expliqué dans l'article Logiciel d'introduction à la programmation Je vais utiliser le logiciel LARP pour faire le lien entre la représentation graphique d'un algorithme et son code source en C.

Dans cet article, je vais présenter mes premiers pas avec ce logiciel.

Hello World!

Comme je suis assez superstitieux en matière de logiciel, je vais exorciser le système en réalisant le classique "Hello World".

Construction

La construction du graphique est très intuitive, il suffit de glisser les différents éléments de la boite à outils sur les points d'insertion du graphique en cours  de réalisation. Ensuite, il faut saisir le contenu des éléments en pseudo-code. L'éditeur du logiciel propose un peu de documentation sur les organigrammes de LARP

Diagramme "Hello World" dans LARP

Exécution

Exécution de "Hello World" dans LARP

Simple, mais efficace! Comme dans tout langage de programmation, une instruction permet l'affichage d'une valeur. Dans ce cas précis, l'instruction est en pseudo-code et donc assez intuitive (Ecrire).
Bien entendu, cet exemple est trop trivial pour juger de l'aspect pédagogique de ce logiciel.

Boucle

Dans ce deuxième exemple, je vais implémenter une boucle "while" qui affiche les valeurs successives d'un compteur (de 1 à 9).

Construction et exécution

Comme précédemment, la construction est très simple. Pour le pseudo-code, j'ai saisi les valeurs d'instinct et c'était la bonne syntaxe. Vraiment très intuitif!
Construction d'un boucle dans LARP

Debugging

Il est possible de lancer l'exécution en mode "pas-à-pas".

  • La console est ouverte pour afficher le résultat
  • l'élément graphique en cours d'exécution est mis en évidence
  • Le contenu des variables est affiché

Mode pas-à-pas

Conclusion

Les deux exemples ci-dessus sont triviaux, mais ils m'ont permis de me faire une idée sur le potentiel de LARP.
Simple et intuitif, le logiciel permet de modéliser les opérations de base facilement. Le mode de debug est très bien fait. Il ressembl, en plus simple, à ce que je suis habitué à voir dans un EDI. La possibilité d'afficher le pseudo-code permettra, je l'espère au novice d'avoir une idée du code à développer à l'aide d'un "vrai" langage de programmation.

C'est donc sans hésitation que je vais utiliser ce logiciel pour montrer à mes élèves les bases de l'algorithmique. Il faut que j'y réfléchisse encore, mais j'hésite presque à leur faire faire toute la partie modélisation avec ce logiciel plutôt qu'en UML avec ArgoUML. Autant je suis convaincu de la nécessité de maîtriser UML dans le monde professionnel, autant je ne suis pas sûr que c'est important pour un débutant.
En tout cas, je suis certain que les concepts sont infiniment plus importants que la symbolique utilisée. Du coup, LARP va m'aider à faire passer les concepts en douceur (je l'espère ;-) ).

Logiciel d’introduction à la programmation

Depuis quelque temps, je suis à la recherche d'un logiciel pédagogique pour faire l'introduction à la programmation en C.

Au cours de mon expérience en tant qu'enseignant en développement logiciel, j'ai eu l'occasion de constater que, dans le cas d'un débutant complet, le lien entre le code source et le logiciel n'est pas évident pour tout le monde. De plus, les progrès sont très lents au début de l'apprentissage du langage, car deux difficultés s'additionnent:

  • Abstraction et algorithmes
  • Syntaxe et sémantique du langage C

Le cours est structuré en fonction de ces deux points. Dans un premier temps, les élèves étudient l'algorithmique à l'aide du diagramme d'activité UML et ensuite, ils commencent à implémenter leurs premières lignes de C. Le problème c'est qu'il y a une rupture entre les deux parties du cours et je "perds" systématiquement quelques élèves.

Algobox

Pour remédier à ce problème, j'avais tenté d'utiliser Algobox pour faire le lien entre les deux parties du cours. L'effet a été très différent de ce que j'espérais. Pour les élèves qui avaient de la facilité, rien n'a changé, par contre ceux que j'espérais aider ont vu le pseudo-code d'alogobox comme un nouveau langage de programmation "presque aussi difficile" d'accès que le C lui-même.

Scratch

En discutant dernièrement avec un collègue, j'ai découvert Scratch. Je l'ai immédiatement étudié et j'arrive aux conclusions suivantes :
Le programme est très bien fait. Il est beaucoup plus ludique qu'algobox et permet, grosso modo, de faire la même chose. Dans mon cas, l'aspect ludique est à double tranchant. D'un côté, le cours s'adresse à des jeunes, c'est donc un avantage. Par contre, l'aspect austère du C va ressortir encore plus si l'introduction est faite avec Scratch. Du plus, l'aspect "troisième langage" est similaire à algobox.

Malgré cela, j'ai de la peine à rejeter complètement l'idée d'utiliser Scratch tant le logiciel est de bonne facture... Peut-être qu'il permettrait de faire une bonne introduction à l'orienté-objet...

LARP

J'ai donc continué ma recherche et je suis tombé sur le logiciel LARP. En plus de l'aspect "pseudo-code" des deux précédents, il permet de créer un diagramme et de le faire "fonctionner". Même si la symbolique est un peu différente de l'UML, le "style" de diagramme est respecté. Comme les deux précédents, LARP a été conçu pour répondre à des besoins pédagogiques. Il permet de construire très rapidement un algorithme simple et d'observer son fonctionnement.

Je vais donc utiliser ce logiciel dans mon cours de C et je publierai dans quelques temps un retour d'expérience sur ce sujet... En attendant, je vais préparer un petit article sur ce logiciel et son fonctionnement.