Catégorie : Développement logiciel

Avec ce thème Développement logiciel, je vous invite à apprendre la programmation informatique. Je partage mes découvertes où bouts de codes qui peuvent vous aider dans vos projets de développement d’applications informatiques (sites web, applications mobiles, etc…). Je vous invite à interagir si vous souhaitez partager également vos méthodes ou tout simplement à me questionner. Ensemble apprenons à coder.

Comment installer Python 3 et un environnement de programmation sur Ubuntu ?

Python est un langage de programmation flexible et polyvalent, avec des points forts en matière de script, d’automatisation, d’analyse de données, d’apprentissage machine et de développement back-end.

Ce tutoriel vous guidera dans l’installation de Python et la mise en place d’un environnement de programmation sur un serveur ou une machine de développement basée sur une distribution Ubuntu.

Étape 1 – Mise à jour et mise à niveau

Connectez-vous à votre serveur Ubuntu en tant qu’utilisateur sudo non root, mettez d’abord votre système à jour et mettez-le à niveau pour vous assurer que la version de Python 3 que vous avez est à jour.

$ sudo apt update
$ sudo apt -y upgrade

Confirmez l’installation si vous y êtes invité.

Étape 2 – Vérification de la version de Python

Vérifiez quelle version de Python 3 est installée en tapant :

$ python3 -V

Vous obtiendrez un résultat similaire à celui qui suit, en fonction de la date à laquelle vous avez mis à jour votre système.

Sortie
Python 3.6.7

Étape 3 – Installer pip

Pour gérer des logiciels pour Python, installez pip, un outil qui vous permettra d’installer et de gérer des bibliothèques ou des modules à utiliser dans vos projets.

$ sudo apt install -y python3-pip

Les paquets Python peuvent être installés en tapant :

$ pip3 install package_name

Ici, package_name peut faire référence à n’importe quel paquet ou bibliothèque Python, comme Django pour le développement web ou NumPy pour le calcul scientifique. Donc si vous souhaitez installer NumPy, vous pouvez le faire avec la commande pip3 install numpy.

Étape 4 – Installation d’outils supplémentaires

Il y a encore quelques paquets et outils de développement à installer pour garantir une configuration robuste de notre environnement de programmation :

$ sudo apt install build-essential libssl-dev libffi-dev python3-dev

Étape 5 – Installer venv

Les environnements virtuels vous permettent d’avoir un espace isolé sur votre machine de développement pour les projets Python. Nous utiliserons venv, qui fait partie de la bibliothèque standard Python 3, que nous pouvons installer en tapant :

$ sudo apt install -y python3-venv

Étape 6 – Créer un environnement virtuel

Vous pouvez créer un nouvel environnement avec la commande pyvenv. Ici, nous appellerons notre nouvel environnement my_env, mais vous pouvez appeler le vôtre comme vous voulez.

$ python3.6 -m venv my_env

Étape 7 – Activation de l’environnement virtuel

Activez l’environnement en utilisant la commande ci-dessous, où my_env est le nom de votre environnement de programmation.

$ source my_env/bin/activate

Votre invite de commande sera désormais préfixée par le nom de votre environnement :

(my_env) claude@ubuntu:~/environments$

Étape 8 – Tester l’environnement virtuel

Ouvrez l’interpréteur Python :

(my_env) claude@ubuntu:~/environments$ python

Notez que dans l’environnement virtuel Python 3, vous pouvez utiliser la commande python au lieu de python3, et pip au lieu de pip3.
Vous saurez que vous êtes dans l’interpréteur lorsque vous recevrez la sortie suivante :

Python 3.6.5 (par défaut, 1er avril 2018, 05:46:30)
[GCC 7.3.0] sur linux
Tapez "aide", "copyright", "crédits" ou "licence" pour plus d'informations.
>>>

Maintenant, utilisez la fonction print() pour créer le traditionnel programme « Hello, World » :

$ print("Bonjour, le monde !")
Sortie
Bonjour, le monde !

 

Étape 9 – Désactivation de l’environnement virtuel

Quittez l’interprète Python :

>>> quit()

Ensuite, quittez l’environnement virtuel :

(my_env) claude@ubuntu:~/environments$ deactivate

 

Python : Comment créer votre première application ?

Je vous propose de vous montrer à travers ce premier billet à Python une rapide introduction à ce langage accompagné d’un didacticiel pour démarrer et créer votre première application Python « Hello World! » à l’aide d’Eclipse sur un environnement macOS (le principe reste quasiment le même sous Linux ou Windows).

Introduction et premiers pas avec Python

Python est un langage de programmation né en 1989 dont l’auteur est Guido van Rossum qui a profité de ses congés de Noël pour créer les bases de ce langage. Il s’agit d’un langage interprété fonctionnant sur la plupart des plateformes notamment Linux, Windows et macOS.

Python est utilisé dans de nombreux projets d’applications ou comme langage de script pour des applications web. Il est également très présent dans les domaines scientifiques pour réaliser des calculs et il est utilisé dans de nombreux logiciels de modélisation.On le rencontre également dans le développement de jeux vidéo.

Ces dernières années, Python revient en force car il est utilisé dans l’écriture de tâches dans le domaine de l’intelligence artificielle.

Préparer l’environnement et créer votre premier projet

En natif, Eclipse n’intégrè pas d’environnement de développement pour Python mais nous allons installer une extension très populaire appelée PyDev.

Je vous propose les étapes suivantes :

  1. Mettre à jour la version de Python ;
  2. Configurer Eclipse pour Python ;
  3. Créer un projet Python.

1. Mettre à jour la version de Python

Par défaut, Python est déjà installé sur macOS et nous allons vérifier la version déjà présente sur le système. Tapez la commande suivante pour lancer la vérification :

Au moment de ce billet, mon Mac dispose de la version 2.7.10 de Python.

Nous allons nous rendre sur le site officiel de Python pour télécharger la dernière version :

Lancer l’installeur de Python (ici en version 3.7.0). Il se peut que votre Mac vous demande votre identifiant et mot de passe pour procéder à cette installation. Puis laissez-vous guider en déroulant les différentes étapes d’installation :

Un fois l’installation terminée, vérifier que Python 3.7.0 est bien présent sur votre Mac via la commande suivante :

Nous voilà équipé de la dernière version de Python et nous allons pouvoir passer à la configuration de l’éditeur de code Eclipse pour le langage Python.

2. Configurer Eclipse pour Python

Je pars du principe que vous disposez déjà d’Eclipse sur votre ordinateur. Sinon, vous pouvez l’obtenir à partir de la page de téléchargement. Je vous recommande la version « Eclipse IDE for Java EE Developers ».

Puis nous allons installer le plugin depuis Eclipse Marketplace en passant par le menu Help -> Eclipse Marketplace

Et rechercher le plugin PyDev :

Cliquer sur « Install Now » et dérouler toutes les étapes de l’installation. Un redémarrage d’Eclipse est proposé pour la prise en compte totale de l’extension PyDev.

Vous voilà prêt pour créer votre premier projet Python avec Eclipse.

3. Créer un projet Python

Nous démarrons par la création d’un nouveau projet Python en cliquant sur File -> New

Dans la liste des types de projets possible, il n’y a pas de « PyDev Project » : sélectionnez « Other » pour obtenir l’écran suivant :

PS : pour vos prochains projets Python, « PyDev Project » apparaitra directement lorsque vous passerez par le menu File -> New.

Une fois le projet PyDev créé nous allons configurer l’interpréteur Python en passant par les Préférences d’Eclipse.

Vous devez cliquer sur « New » pour ajouter l’interpréteur Python3.

Puis nous allons pouvoir ajouter un module Python à notre projet qui va contenir les lignes de codes :

Nommez le module « HelloWorld » :

Ajouter la ligne de commande :

print("Hello World")

Puis pour exécuter le programme, passer par Run as -> Python Run

Le code Python est interprété sans erreur et retourne dans la console « Hello World » :

Nous avons vu comment configurer votre environnement avec la dernière version de Python sur votre macOS puis nous avons configuré Eclipse avec l’extension PyDev pour pouvoir créer votre première application « Hello World ».

J’espère que ce billet vous a aidé à démarrer avec Python.

N’hésitez pas à laisser un commentaire 😉

Python : un mémento pour les débutants

Python est un langage de programmation moderne et élégant, aussi performant pour le développement d’applications web complexes que pour la réalisation de scripts système ou l’analyse de fichiers XML.

Je vous propose ci-dessous un mémento Python fournie par Dave Child contenant à la fois des variables intégrées du système et du système d’exploitation, ainsi que des méthodes standards pour travailler avec des listes, des fichiers et des chaînes.

 

  • Python : Comment créer votre première application ?

 

 

 

 

PyCharm : le meilleur éditeur pour Python

Après un premier billet montrant comment créer votre première application Python avec Eclipse, je vous propose de vous présenter Pycharm, le meilleur éditeur Python.

A travers cet article, je vous présente l’environnement de développement intégré PyCharm, qui peut être utilisé pour développer des applications professionnelles utilisant le langage de programmation Python.

Python est un excellent langage de programmation car il est vraiment multi-plateforme. Il peut être utilisé pour développer une application unique qui fonctionnera sur les ordinateurs Windows, Linux et Mac sans avoir à recompiler de code.

Je vous propose les étapes suivantes :

  1. Installation et utilisation de JetBrains Toolbox ;
  2. Installation et configuration de PyCharm Community ;
  3. Création d’un projet Python avec PyCharm ;
  4. Exécution et test de votre projet ;
  5. Ajout d’un plugin PyCharm (minimap).

Installation et utilisation de JetBrains Toolbox

JetBrains met à disposition JetBrains Toolbox, un utilitaire qui permet de faciliter l’installation et la mise à jour des applications de cette entreprise réputée pour la création de IntelliJ, le meilleur éditeur de code Java qui a su mettre au second plan Eclipse (Historiquement, l’EDI Java le plus utilisé au monde).

Déplacer l’icône « JetBrains Toolbox » sur l’icône « Applications » pour lancer la procédure d’installation.

.

Installation et configuration de PyCharm Community

.

.

.

.

.

Création d’un projet Python avec PyCharm

.

.

.

.

.

Exécution et test de votre projet

.

.

Ajout d’un plugin PyCharm (minimap)

.

 

.

Angular : Comment créer des graphiques dynamiques Highcharts ?

Avec ce tutoriel, je vais vous montrer comment utiliser Angular et Highcharts pour créer une simple page web qui génère un graphique. Vous pouvez utiliser cette méthode pour vos projets Angular de tableaux de bord ou tout autre applications faisant appel à des graphiques pour visualiser des données.

Dans un précédent billet, je vous avais présenter comment créer votre premier projet Angular. Nous allons utiliser la même méthode en passant par la ligne de commande. Je vous invite à consulter mon précédent billet pour vous assurer que vous avez bien les prérequis d’installer sur votre machine (npm et node).

0. Cas d’usage

Dans le cadre d’un projet permettant de présenter des indicateurs de suivi de pilotage d’activité, je cherchais à créer un tableau de bord avec des visuels permettant de suivre les évolutions de plusieurs indicateurs pour animer des instances COPRO et COPIL. J’ai testé plusieurs bibliothèques permettant de créer des graphes et mon choix s’est arrêté sur Highcharts.

Après avoir expérimenté une première version de ce tableau de bord en version HTML, CSS et JavaScript, j’ai tenté d’implémenter Highcharts avec Angular. Voici le partage des étapes que j’ai utilisé pour afficher un graphique avec Angular dans une page web.

1. Créer le projet Angular

Rendez-vous dans le dossier dans lequel vous souhaitez créer votre projet pour configurer l’environnement de développement. D’abord, nous installons l’Angular CLI pour utilise la ligne de commande :

sudo npm install -g @angular/cli

Ensuite nous créons le projet Angular appelé dans mon exemple « angular-highcharts » :

ng new angular-highcharts

Une fois le projet créé, nous entrons dans le dossier contenant le projet :

cd angular-highcharts/

Pour tester le projet, nous allons lancer le serveur avec l’option permettant de lancer le navigateur web par défaut sur votre machine pour visualiser le projet :

ng serve --open

Le serveur web local s’ouvre sur le port 4200 et bingo votre projet apparait sous forme d’une page de test par défaut :

Angular

2. Adapter le projet Angular

Dans le cadre de ce tutoriel, nous allons créer un composant permettant d’afficher le graphe mais libre à vous d’organiser votre projet différemment.

Maintenant, créons le composant que j’ai appelé « view-graph » en utilisant cette commande :

ng generate component view-graph

Le nouveau composant, view-graph, se trouve sous /src/app/ et se compose de quatre fichiers différents :

  • .CSS : Tous les CSS pour les styles doivent aller dans ce fichier.
  • .HTML : Ce fichier comprend le modèle HTML et toutes les balises HTML.
  • TS : Ce fichier comprend tout le code application, la logique métier, les appels API et la manipulation des données.
  • SPEC.TS:Tous les tests unitaires vont dans ce fichier.

Nous modifions « app component » pour appeler le nouveau composant « view-graphe ».

Pour cela nous retirons le contenu par défaut de app/app.component.html et ajoutons le nouveau composant :

<div id="main-head" style="text-align:center">
  <h1>
    {{ title }}!
  </h1>
  <app-view-graph></app-view-graph>
</div>
<router-outlet></router-outlet>

3. Intégrer Highcharts au projet Angular

Installons maintenant dans notre projet Angular le module Highcharts en lançant la commande :

npm install highcharts

Modifions view-graph.component.ts pour importer la librairie Highcharts :

import { Component, OnInit } from '@angular/core';
import * as Highcharts from 'highcharts';

declare var require: any;


@Component({
  selector: 'app-view-graph',
  templateUrl: './view-graph.component.html',
  styleUrls: ['./view-graph.component.css']
})
export class ViewGraphComponent implements OnInit {
  public options: any = {
    Chart: {
      type: 'area',
      height: 700
    },
    title: {
      text: 'Evolution de la population'
    },
    credits: {
      enabled: false
    },
    xAxis: {
      categories: ['1750', '1800', '1850', '1900', '1950', '1999', '2050'],
      tickmarkPlacement: 'on',
      title: {
          enabled: false
      }
  },
    series: [{
      name: 'Asia',
      data: [502, 635, 809, 947, 1402, 3634, 5268]
  }, {
      name: 'Europe',
      data: [163, 203, 276, 408, 547, 729, 628]
  }, {
      name: 'America',
      data: [18, 31, 54, 156, 339, 818, 1201]
  }]
  }

  constructor() { }

  ngOnInit() {
    Highcharts.chart('container', this.options);
  }

}

N’oublions pas de modifier view-graph.component.html pour ajouter une div permettant d’afficher le graphe sur la page web :

<p>view-graph works!</p>

<div id="container"></div>

Il ne reste plus qu’à visualiser le résultat dans le navigateur :

Angular

Félicitations ! Si vous avez suivi toutes les étapes de ce tutoriel, vous pouvez maintenant créé une application Angular affichant un graphique qui exploite la puissance de Highcharts. N’hésitez pas à tester d’autres type de graphiques car le choix est très vaste et vous trouverez très certainement celui qui répondra à vos besoins.

J’espère que ce projet vous aidera à mieux comprendre comment construire une application Angular et comment intégrer la bibliothèque Highcharts. N’hésitez pas à ajouter vos commentaires ou questions ci-dessous, je me ferai un plaisir d’y répondre.

 

Kotlin : Comment créer votre première application avec Eclipse ?

Je vous propose de vous montrer à travers ce didacticiel comment créer votre première application Kotlin « Hello World! » à l’aide d’Eclipse.

Présentation de Kotlin

Depuis quelque temps je m’intéresse au langage de programmation Kotlin développé par l’éditeur JetBrains connu pour ses environnements de développement intégré (IntelliJ IDEA, PhpStorm, …).

Ce langage de programmation orienté objet, fonctionnel propose un typage statique. Il tourne sous la machine virtuelle Java (JVM) et il peut également être compilé sous JavaScript.

Il est très proche de Java, de plus il a l’avantage d’être concis, simple et très facile à lire (et à écrire) au dire de son éditeur et des développeurs qui l’ont adopté. D’ailleurs de nombreuses applications connues ont été récrite ou réécrite avec Kotlin : Pinterest, Evernote, Uber par exemple.

Mise en place de l’environnement

Je pars du principe que vous disposez déjà d’Eclipse sur votre ordinateur. Sinon, vous pouvez l’obtenir à partir de la page de téléchargement. Je vous recommande la version « Eclipse IDE for Java EE Developers ».

Puis nous allons installer le plugin depuis Eclipse Marketplace en passant par le menu Help -> Eclipse Marketplace… et en recherchant le plugin :

A l’issue de l’installation, Eclipse demande un redémarrage pour finaliser la procédure, nous pouvons vérifier que le plugin Kotlin est correctement installé, en ouvrant la perspective Kotlin dans le menu principal Window -> Open Perspective -> Other

Créer un nouveau projet

Nous sommes maintenant prêts à créer un nouveau projet Kotlin.

Sélectionnez File -> New -> Kotlin Project pour démarrer.

Un projet vide sera créé et sera prêt pour l’écriture du code Kotlin qui cible la JVM.
Le projet créé, du point de vue d’Eclipse, est également un projet Java, ce qui signifie qu’il dispose du Kotlin Builder faisant référence à la bibliothèque d’exécution de Kotlin. L’avantage de cette solution est que nous pouvons continuer à ajouter des classes Java au projet, en mélangeant et en comparant le code Kotlin et Java si nécessaire.

Nous pouvons maintenant créer un nouveau fichier sous le dossier source.

Si vous omettez l’extension « .kt » dans le nom du fichier, ne vous inquiétez pas, Eclipse l’ajoutera automatiquement…

Une fois le fichier créé, nous devons taper la routine principale, qui est le point d’entrée d’une application Kotlin.
Enfin, nous ajoutons une simple ligne de code Kotlin pour imprimer le message « Hello World! » :

Exécuter l’application

Le moyen le plus simple d’exécuter l’application consiste à faire un clic droit quelque part dans le fichier principal et à sélectionner Run As -> Kotlin Application

Si tout s’est bien passé, la sortie de la fenêtre de la console devrait s’ouvrir automatiquement, affichant les résultats :

Nous avons maintenant notre première application Kotlin sous Eclipse.

Évidemment comme toutes les applications « Hello World! » on ne vérifie que le fait que les lignes de codes que vous avez tapés s’exécutent bien : rien d’extraordinaire !

Dans de prochains billets, je vous présenterai un peu plus Kotlin et surtout, j’évoquerai son usage dans le développement d’applications mobiles puisque Google à officialiser la compatibilité avec les smartphones Android.

Stay tuned…

 

Flutter : Comment créer un formulaire et une SnackBar ?

Avec ce tutoriel Flutter, je vais vous présenter la manière de construire un formulaire avec vérification pour éviter que la saisie soit non-nulle associé à un message d’alerte via une SnackBar d’alerte. Comme d’habitude je partage le code dans ce billet consacré à Flutter.

Le formulaire avec validation

Les applications demandent souvent aux utilisateurs de saisir des informations dans un champ de texte. Par exemple, vous pouvez demander aux utilisateurs de saisir un identifiant et un mot de passe pour valider l’accès à un espace privé.

Pour que votre application soit sûres et faciles à utiliser, vous devez vérifier si les informations fournies par l’utilisateur sont valides. Si l’utilisateur a correctement rempli le formulaire, traitez les informations. Si l’utilisateur soumet des informations incorrectes, affichez un message d’erreur convivial pour lui faire savoir ce qui ne s’est pas passé.

C’est à ce moment qu’intervient la SnackBar.

Champ formulaire Flutter stylé

Le code du champ de formulaire :

TextFormField(
  maxLength: 25,
  decoration: const InputDecoration(
      labelText: 'Champ de formulaire',
      hintText: 'Entrer du texte',
      border: OutlineInputBorder()),
  validator: (value) {
    if (value.isEmpty) {
      return 'Veuillez saisir un texte';
    }
    return null;
  },
)

La SnackBar

Elle permet d’informer brièvement vos utilisateurs lorsque certaines actions ont lieu. Par exemple, lorsqu’un utilisateur glisse un message dans une liste, vous pouvez l’informer que le message a été supprimé.

Vous pourriez même leur donner une option pour annuler l’action.

Snackbar de validation suite à action sur le bouton

Le code du bouton de validation et de la snackbar de confirmation :

child: RaisedButton(
  onPressed: () {
    // Retourne true si le formulaire est valide, sinon false
    if (_formKey.currentState.validate()) {
      // Affiche le Snackbar si le formulaire est valide
      Scaffold.of(context).showSnackBar(
          SnackBar(content: Text('Traitement en cours')));
    }
  },
  child: Text('Envoyer'),
)

Construire un formulaire et une SnackBar d’alerte

Dans l’exemple que je vous propose dans ce tutoriel Flutter, vous allez apprendre comment ajouter une validation à un formulaire qui comporte un seul champ de texte en suivant les étapes suivantes :

  • Créer un formulaire avec une clé globale.
  • Ajouter un champ de type TextFormField avec une logique de validation.
  • Créez un bouton pour valider et soumettre le formulaire.
  • Afficher une SnackBar lorsque la saisie est valide (non-nulle)
  • Fournir une action facultative

Voici le code complet du tuto Flutter :

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Formulaire et Snackbar',
      theme: ThemeData(
        primarySwatch: Colors.orange,
      ),
      home: MyHomePage(title: 'Formulaire et Snackbar'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Container(
        child: MyCustomForm(),
      ),
    );
  }
}

class MyCustomForm extends StatefulWidget {
  @override
  MyCustomFormState createState() {
    return MyCustomFormState();
  }
}

class MyCustomFormState extends State<MyCustomForm> {
  final _formKey = GlobalKey<FormState>();

  @override
  Widget build(BuildContext context) {
    // Construire le formulaire avec _formKey créé au-dessus
    return Form(
      key: _formKey,
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          TextFormField(
            validator: (value) {
              if (value.isEmpty) {
                return 'Veuillez saisir un texte';
              }
              return null;
            },
          ),
          Padding(
            padding: const EdgeInsets.symmetric(vertical: 16.0),
            child: RaisedButton(
              onPressed: () {
                // Retourne true si le formulaire est valide, sinon false
                if (_formKey.currentState.validate()) {
                  // Affiche le Snackbar si le formulaire est valide
                  Scaffold.of(context).showSnackBar(
                      SnackBar(content: Text('Traitement en cours')));
                }
              },
              child: Text('Envoyer'),
            ),
          ),
        ],
      ),
    );
  }
}

Retrouvez le code de ce tuto sur GitLab

J’espère que ce projet vous aidera à mieux comprendre comment construire un formulaire et une SnackBar avec Flutter. N’hésitez pas à ajouter vos commentaires ou questions ci-dessous, je me ferai un plaisir d’y répondre.

 

Cordova : Comment créer votre première application mobile ?

Depuis quelque temps je m’intéresse au développement pour mobiles et plus précisément pour Android. A travers ce billet, je vais vous présenter comment créer votre première application mobile avec Cordova sans connaître le langage natif Android ou iOS.

Présentation de Cordova

Pour coder une application mobile, on peut le faire de deux manières :

  • Soit développer en langage natif du mobile,
  • Soit créer une application hybride qui sera ensuite portée sur chaque plateforme.

Dans le premier cas, cela oblige à connaître le langage des différentes plateformes (Android, iOS et Windows Mobile).

C’est pour le second cas de figure qu’intervient Cordova/PhoneGap.

Cordova et PhoneGap

Apache Cordova est un framework de développement mobile open-source. Il permet d’utiliser les technologies Web courantes telles que HTML5, CSS3 et JavaScript pour développer des applications multiplateformes, évitant ainsi l’utilisation des langages natifs. Les applications s’exécutent dans des wrappers ciblés pour chaque plate-forme.
PhoneGap permet de développer des applications hybrides, d’utiliser des émulateurs (Desktop et Mobile), d’utiliser des API permettant l’accès aux capteurs du mobile, aux données ainsi qu’à l’état du réseau et de les porter sur chaque plateforme mobile grâce à PhoneGap Build.

Installer l’environnement

SDK Android et iOS

L’installation des SDK pour Android et iOS s’est grandement facilité depuis quelques mois car il suffit d’installer un environnement de développement intégré (EDI) contenant tout le nécessaire pour développer une application pour mobile. Ces EDI mis à disposition gratuitement se nomment :

  • Android Studio pour Android (élémentaire mon cher) ;
  • xCode pour iOS (téléchargeable gratuitement depuis le store Apple).

Node.js

Node.js permet de disposer de la commande npm permettant d’installer des paquets ou des applications en ligne de commande.
Pour installer node.js, rendez-vous à cette adresse : https://nodejs.org/en/

Pour vérifier que l’installation s’est bien déroulée, lancer dans un Terminal la commande :

$ node -v

Ici, j’obtiens la version de node.js que je viens d’installer : 5.7.0

Cordova

Ouvrir un terminal et utiliser la ligne de commande :

$ sudo npm install –g cordova

Remarque : sur OS X et Linux, sudo permet de lancer une commande avec les droits maximum (root). Sur Windows, vous n’avez pas besoin de faire précéder la commande npm de sudo.

Pour vérifier que l’installation s’est bien déroulée, lancer dans un Terminal la commande :

$ cordova -v

Ici, j’obtiens la version de node.js que je viens d’installer : 6.1.1

PhoneGap Desktop

Ouvrir un terminal et utiliser la ligne de commande

$ sudo npm install –g phongap@latest

Pour vérifier que l’installation s’est bien déroulée, lancer dans un Terminal la commande :

$ phonegap -v

Ici, j’obtiens la version de node.js que je viens d’installer : 6.2.0

PhoneGap Developer

Installer PhoneGap sur votre mobile. Il existe une version pour chaque plateforme. Vous la trouverez dans votre AppStore favoris.

Créer l’application

Création d’un projet vide

Nous allons créer un projet vide toujours dans l’invite de commande.
Déplacez-vous à l’endroit où vous souhaitez créer le projet de votre application.
Par exemple si vous voulez travailler sur le bureau, utilisez :

$ cd Desktop

Puis

$ cordova create MyApp

MyApp étant le nom de l’application que vous souhaitez créer.

Ajouter des plateformes

Ajouter des plates-formes signifie que vous aller ajouter la possibilité de construire une application pour le système d’exploitation mobile de votre choix (Android, iOS, BlackBerry ou Windows phone). Mais avant cela vous devez vous assurer de disposer de chaque SDK associé à la plate-forme cible. Par exemple pour iOS, vous devez disposer du SDK iOS.

Toutes les commandes suivantes doivent être exécutées dans le répertoire du projet.
Comme je dispose du SDK Android sur mon Mac, je vais ajouter la plateforme Android. Voici une capture de mon Terminal :

Mac-mini-de-Claude:Desktop claude$ cd MyApp
Mac-mini-de-Claude:MyApp claude$ cordova platform add android
Adding android project...
Creating Cordova project for the Android platform:
    Path: platforms/android
    Package: io.cordova.hellocordova
    Name: HelloCordova
    Activity: MainActivity
    Android target: android-23
Android project created with cordova-android@5.1.1
Discovered plugin "cordova-plugin-whitelist" in config.xml. Installing to the project
Fetching plugin "cordova-plugin-whitelist@1" via npm
Installing "cordova-plugin-whitelist" for android

               This plugin is only applicable for versions of cordova-android greater than 4.0. If you have a previous platform version, you do *not* need this plugin since the whitelist will be built in.

Voici les commandes à lancer suivant la plateforme de votre choix :

$ cordova platform add ios
$ cordova platform add amazon-fireos
$ cordova platform add android
$ cordova platform add blackberry10
$ cordova platform add firefoxos

Démarrer PhoneGap Desktop

PhoneGap est un emulateur qui vous permet de dialoguer avec votre mobile et de visualiser en temps réel l’application que vous êtes en train de concevoir. Vous pouvez télécharger PhoneGap Desktop depuis cette adresse :
http://phonegap.com/products/#desktop-app-section

Installer l’application

Lancer l’application PhoneGap et ouvrez votre projet d’application mobile.

Démarrer PhoneGap Mobile

Lancer PhoneGap sur votre mobile et connectez l’application à l’adresse communiquée par l’application de votre ordinateur.

Si besoin saisir http://192.168.0.16:3000 puis Connect pour lancer l’émulateur.

Voici l’application. Vous pouvez maintenant apporter les modifications dans votre code et voir en direct le résultat sur votre mobile.
Tout se passe dans le dossier nommé « www » où vous trouverez les fichiers HTML, CSS et Javascript.

Générer l’application pour les plateformes

Une fois que votre application est développée et prête à être diffusée, vous devez transformer votre application hybride en application utilisable sur Android, iOS et Windows Mobile. Là aussi deux solutions s’offrent à vous pour une application Android :

  • Importer le projet dans Android Studio ;
  • Utiliser les services PhoneGap Build.

Importer le projet dans Android Studio

Lancer Android Studio et importer le projet créer via Cordova.

Depuis Android Studio, vous allez pouvoir générer votre application que vous pourrez distribuer par la suite via Google Play.

Utiliser les services PhoneGap Build

Pour ce faire rendez-vous sur le site PhoneGap Build pour générer le format de chaque plateforme mobile. Évidemment, vous pouvez très bien ne vouloir que l’application Android mais pas iOS. Aucun, problème c’est vous qui décidez 😉

Aller plus loin

J’espère que ce billet avec les étapes pour développer votre application mobile avec PhoneGap vous sera utile. N’hésitez-pas à commenter cet article…

Sources :

10 raisons de choisir Kotlin pour développer vos applications

Kotlin est un langage de programmation développé par JetBrains, la même société qui a construit des IDE de classe mondiale tels que IntelliJ IDEA, PhpStorm, PyCharm, ReSharper, etc.

Il fonctionne sur la machine virtuelle Java (JVM) et peut également être compilé en JavaScript et en code machine.

Dans ce tutoriel, je vais vous donner un bref aperçu de Kotlin et de ses fonctionnalités.

Pourquoi Kotlin ?

Dans le monde d’aujourd’hui, où nous avons une douzaine de langages de programmation pour chaque tâche possible, voici quelques raisons de choisir Kotlin comme langue principal pour développer votre prochaine application.

1. Typage statique

Kotlin est un langage de programmation à typage statique. Cela signifie que le type de chaque variable et expression est connu au moment de la compilation.

L’avantage du typage statique est que le compilateur peut valider les appels de méthodes et l’accès aux propriétés sur les objets lors de la compilation, et éviter ainsi de nombreux bugs anodins qui risqueraient autrement de se produire au moment de l’exécution.

Bien que Kotlin soit un langage à typage statique, il n’est pas nécessaire de spécifier explicitement le type de chaque variable que vous déclarez. La plupart du temps, Kotlin peut déduire le type d’une variable à partir de l’expression d’initialisation ou du contexte environnant. Ceci est appelé inférence de type. Nous reviendrons plus tard sur cette notion.

2. Concis

Kotlin est concis. Cela réduit considérablement la quantité de code passe-partout que vous avez écrit tout le temps dans d’autres langages orientés objets comme Java.

Il fournit des expressions riches pour l’exécution de tâches courantes. Par exemple, vous pouvez créer une classe POJO avec les méthodes Getters, Setters, Equals(), hashCode() et toString()

data class User(val name: String, val email: String, val country: String)

3. Sécurisé

Kotlin est sécurisé. Il évite les exceptions NullPointerExceptions les plus redoutées et gênantes en prenant en charge la nullabilité dans le cadre de son système de types.

Cela fonctionne comme ceci – Chaque variable de Kotlin est non nulle par défaut:

String str = "Hello, World" // Type non nul (ne peut contenir une valeur nulle)
str = null // Erreur du compilateur

Pour permettre à une variable de contenir une valeur null, vous devez explicitement la déclarer comme nullable :

String nullableStr? = null // Nullable type (peut être nul)

Puisque Kotlin connait quelles variables ont la valeur nullable et lesquelles ne le sont pas, elle peut détecter et interdire les appels non sécurisés au moment de la compilation, ce qui entraînerait sinon une exception NullPointerException au moment de l’exécution.

println(nullableStr.length())   // erreur du compilateur

Kotlin n’autorise pas la méthode call length() sur la variable nullableStr car l’appel n’est pas sécurisé et peut conduire à NullPointerException.

Cependant, si vous ajoutez une vérification NULL, l’appel de la méthode est autorisé.

if(nullablStr != null) {
    println(nullableStr.length())
}

Remarquez comment Kotlin oblige les développeurs à écrire du code sécurisé en distinguant les types nullables et non nuls.

4. Explicite

Kotlin est explicite. Il fera ou permettra des choses seulement si vous lui dites de le faire. L’explicite est considéré comme une bonne chose. Être explicite signifie être précis sur vos choix de conception et ne rien cacher aux lecteurs ou aux consommateurs de votre code.

Voici quelques exemples d’explicités à Kotlin :

  • Kotlin n’autorise pas les conversions de types implicites, par exemple, int en long ou float pour double. Il fournit des méthodes comme toLong() et toDouble() pour le faire explicitement.
  • Toutes les classes de Kotlin sont finales (non héritables) par défaut. Vous devez explicitement marquer une classe comme étant ouverte pour permettre à d’autres classes d’en hériter. De même, toutes les propriétés et fonctions membres d’une classe sont finales par défaut. Vous devez explicitement marquer une fonction ou une propriété comme étant ouverte pour permettre aux classes enfant de la remplacer.
  • Si vous substituez une fonction ou une propriété de classe parent, vous devez l’annoter explicitement à l’aide du modificateur override.

5. Facile à apprendre

Kotlin a une courbe d’apprentissage très faible. La syntaxe de base ressemble beaucoup à Java. Si vous avez une petite expérience de Java ou de tout autre langage orienté objets, vous pourrez vous familiariser avec Kotlin en quelques heures.

6. Capacités fonctionnelles et orientées objet

Kotlin possède à la fois des fonctionnalités fonctionnelles et orientées objet. Il dispose d’un riche ensemble de fonctionnalités permettant de prendre en charge la programmation fonctionnelle, notamment les types fonctionnels, les expressions lambda, les classes de données, etc.

7. Entièrement interopérable avec Java

Kotlin est 100% interopérable avec Java. Vous pouvez facilement accéder au code Java à partir de Kotlin et inversement. Vous pouvez utiliser Kotlin et Java dans le même projet sans aucun problème. Cela facilite l’adoption de Kotlin dans vos projets Java existants.

8. Excellent outillage

Kotlin dispose d’un excellent support d’outillage. Vous pouvez choisir n’importe quel IDE Java : IntelliJ IDEA, Eclipse, Android Studio.

De plus, vous pouvez également télécharger le compilateur autonome de Kotlin et exécuter le code Kotlin à partir de la ligne de commande.

9. Construire des applications pour Serveur, Android, Navigateur et Desktop

Vous pouvez utiliser Koltin pour créer des applications pour une large gamme de plates-formes, notamment Serveur, Android, navigateurs et Desktop.

  • Android dispose d’un support officiel pour Kotlin.
  • Du côté du serveur, vous pouvez utiliser Kotlin avec le framework Spring, qui offre un support complet pour Kotlin dans Spring version 5.
  • Kotlin peut également être compilé en JavaScript et en code machine.

10. Gratuit et Open Source

Le langage de programmation Kotlin, y compris le compilateur, les bibliothèques et tous les outils, sont entièrement gratuits et open source. Il est disponible sous licence Apache 2 et le projet complet est hébergé sur Github.

 

JavaScript : Comment trier une liste et l’afficher sur une page web ?

Lors d’un précédent billet, je vous avais présenté une méthode pour trier une liste en JavaScript. A l’époque, la sortie se faisait via la console. Dans la vraie vie du développeur Front, on affiche rarement le résultat sur la console (sauf pour débuguer).

Aussi, avec ce nouvel article je vais vous montrer comment effectuer les mêmes tris mais avec un affichage sur une page web.

Pour que ce soit joli, je vais utiliser Bootstrap pour donner un aspect sympathique à l’affichage.

Structure HTML de la page

Coté structure de la page en HTML, on reprend la base du dernier exemple avec les deux boutons permettant d’afficher le trie par âge et le trie par nom des personnages de notre jeu (reprise de l’exemple).

Puis on prépare l’espace où on affichera le résultat après chaque clic sur l’un ou l’autre bouton de choix. L’id utilisé pour cette sortie se nomme  » résultat  » :

<div class="container-fluid">
    <h2>Trier en javaScript</h2>
    <button type="button" class="btn btn-primary btn-sm" onclick="sortName()">Par Prénom</button>
    <button type="button" class="btn btn-secondary btn-sm" onclick="sortAge()">Par Age</button>

    <h3>Résultat</h3>
    <div>
        <div class="row">
            <div class="col-12 col-md-4">
                <div id="resultat"></div>
            </div>
            <div class="col-12 col-md-8">
            </div>
        </div>
    </div>
</div>

Côté JavaScript

On retrouve notre fière équipe avec ses caractéristiques. C’est juste un prétexte pour disposer de chaînes de caractères (String) et de nombres à trier pour notre exemple de trie avec JavaScript :

var warrior=[ 
    { name: "Kraken", age: 21, weapon: "arc" },
    { name: "Améria", age: 27, weapon: "fusil" },
    { name: "Narfy", age: 25, weapon: "couteau" },
    { name: "Golïm", age: 17, weapon: "poignard" },
    { name: "Fôrfiot", age: 18, weapon: "lance-flamme" },
    { name: "Nolülf", age: 23, weapon: "hache" },
    { name: "Joliett", age: 22, weapon: "bazooka" }
];

Fonction affichage tableau

En JavaScript, on va passer par une fonction qui a pour mission de générer l’affichage du résultat du trie sous forme de tableau à l’emplacement repéré par l’id défini nommé  » resultat  » (vu au-dessus).

Vous repérez facilement les balises HTML mentionnées dans cette fonction pour constituer le tableau de données triées :

function display(i) {
    console.log(i);
    var html = document.getElementById('resultat').innerHTML;
    html = html + "<table class='table table-striped'>";
    html = html + "<thead class='thead-inverse'><tr>";
    html = html + "<th scope='col'>Nom</th><th scope='col'>Age</th><th scope='col'>Arme</th>";
    html = html + "</thead></tr>";
    html = html + "<tbody>";
    warrior.forEach(function (warrior) {
        html = html + "<tr>";
        html = html + "<td>" + warrior.name + "</td><td>" + warrior.age + "</td><td>" + warrior.weapon + "</td>";
        html = html + "</tr>";
    }) html = html + "</tbody>";
    html = html + "</table>";
    document.getElementById('resultat').innerHTML = html;
}

Trier des nombres

Ici rien de nouveau sous le soleil car on reprend tout simplement la fonction de la dernière fois pour trier par âge :

function sortAge() {
    document.getElementById('resultat').innerHTML = " ";
    var intro = "Trié par age croissant";
    warrior.sort(function (a, b) {
        return a.age - b.age;
    });
    display(intro);
}

Trier des String (chaînes de caractères)

De la même manière, on reprend tout simplement la fonction de la dernière fois pour trier par nom en utilisant la fonction sortName() :

function sortName() {
    document.getElementById('resultat').innerHTML = " ";
    var intro = "Trié par nom croissant";
    warrior.sort(function (a, b) {
        return a.name.localeCompare(b.name);
    });
    display(intro);
}

 

Et voilà le tour est joué !
Cette proposition de solution pour trier des données en JavaScript n’est évidemment pas la seule et unique possibilité. Vous pouvez très bien développer d’autres méthodes ou fonctions pour arriver au même résultat.

Comme j’adore échanger, vous pouvez laisser un commentaire ou partager votre avis ou méthode.

 

JavaScript : Comment trier une liste ?

Trier le contenu de listes est un exercice courant lorsqu’on développe des applications ou un site web. Aussi, si vous travaillez avec JavaScript, vous serez amené à utiliser la méthode sort() qui permet de trier les éléments d’un tableau. Ceci étant dit, trier des nombres fonctionne très bien avec cette méthode. Mais trier des chaînes de caractères peut vous apporter quelques surprises.

Je vous propose dans ce billet de vous présenter les deux possibilités : trier des nombres (facile) puis trier des chaînes de caractère.

On plante le décor

Avant de pouvoir s’amuser follement à trier en JavaScript, on besoin d’un peu de matière à manipuler. Imaginons un jeux de rôle avec de fiers guerriers caractérisés par un nom, un age et une arme :

var warriors= [
  { name: "Kraken", age: 21, weapon: "arc" },
  { name: "Améria", age: 27, weapon: "fusil" },
  { name: "Narfy", age: 25, weapon: "couteau" },
  { name: "Golïm", age: 17, weapon: "poignard" },
  { name: "Fôrfiot", age: 18, weapon: "lance-flamme" },
  { name: "Joliett", age: 22, weapon: "bazooka" }
];

Nous allons utiliser un affichage du résultat directement sur la console : je vous entends déjà vous esclaffer : « il ne se foule pas trop le gars 😉 ».
Et bien oui, et j’en suis fière.

De toute façon, une fois la méthode comprise, vous pouvez adapter ce script pour répondre à vos souhaits les plus fous…

Bref, revenons à nos lignes de codes : je vous propose d’utiliser une fonction qui aura pour mission d’afficher le résultat du tri.
L’utilisation d’une fonction permet d’éviter de recopier la même portion de code à de nombreux endroits (Cool !) :

function display(i) {
    console.log(i);
    for (i = 0; i < warriors.length; i++) {
        console.log(warriors[i].name + " a " + warriors[i].age + " ans et est équipé d'un " + warriors[i].weapon);
    }
}

Dans le corps de votre page HTML, on va ajouter deux boutons qui permettrons de lancer le tri par age et le tri par nom. A chaque bouton on associe une action qui lance la fonction ad hoc.
Jusque là tout va bien…

<h2>Trier en javaScript</h2> 
<button type="button">Par Prénom</button> 
<button type="button">Par Age</button>

Voyons de plus près ces jolies fonctions :

Trier des nombres

Comme annoncé en début de billet, la méthode sort() fait très bien le boulot et trier l’age de nos valeureux guerriers est un jeux d’enfants :

function sortAge() {
    warriors.sort(function (a, b) {
        return a.age - b.age;
    });
    display(intro);
}

Trier des chaînes de caractères (String)

Trier des chaînes de caractères (String) pose des soucis car le tri s’effectue par défaut selon les points de code Unicode de la chaine de caractères.
Oui mais encore…

Typiquement, cela veut dire que chaque caractère est converti en son code Unicode qui sert à faire le tri.
On peut se retrouver devant un résultat retourner par la machine qui peut laisser perplexe l’être humain que nous sommes : « Cian » sera trié avant « bleu ». Dans un tri numérique, 9 sera trié avant 80, mais comme ces nombres sont convertis en chaînes de caractères, « 80 » arrive avant « 9 » selon l’ordre Unicode.

Notre fonction qui tri par nom les courageux guerriers se traduit comme suit :

function sortName() {
    warriors.sort(function (a, b) {
        var nameA = a.name.toUpperCase();
        var nameB = b.name.toUpperCase();
        if (nameA < nameB) {
            return -1;
        }
        if (nameA > nameB) {
            return 1;
        }
        return 0;
    });
    display(intro);
}

Pour donner un coup de main à la fonction de tri, on passe par une transformation des lettres en majuscules (tous les mots sont logés à la même enseigne…).

reTada ! Quel beau tri par nom, n’est-ce pas ?

Et voilà le tour est joué !
Alors sautez sur votre éditeur de code préféré pour mettre en application le trie de données en JavaScript.

Cette proposition de solution pour trier des données en JavaScript n’est évidemment pas la seule et unique possibilité. Vous pouvez très bien développer d’autres méthodes ou fonctions pour arriver au même résultat. Comme j’adore échanger, vous pouvez laisser un commentaire ou partager votre avis ou méthode.

Angular : Comment créer votre premier projet ?

Dans cet article, je vous propose de découvrir les bases du framework web Angular en vous montrant comment créer votre premier projet.

Après une petite introduction à Angular et les quatre piliers de sa conception, j’ai choisi d’utiliser l’Interface en ligne de commande (CLI) et la commande ng serve pour tester le projet Angular.

Présentons Angular ?

Je vous propose de commencer par une petite introduction à Angular histoire de planter le décor.

Angular est né en 2009 dans les locaux de Google. Shyam Seshadri proposa un framework fait maison initialement appelé AngularJS.
Vous rencontrerez cette dénomination pour les applications développées avec les versions 1 et 2 du framework.
Ne cherchez pas la version 3 d’Angular, Google a purement décidé de passer directement à la version 4 en perdant au passage le suffixe JS.

Qu’est-ce qu’Angular ?

Angular est un framework de développement structuré et puissant, conçu pour construire des applications web dynamiques et efficaces. Utilisant TypeScript comme langage principal, il offre aux développeurs un environnement cohérent et optimisé pour le développement d’applications à page unique (SPA).

Angular se distingue par son système de composants, qui encourage la modularité et la réutilisation du code, ainsi que par son architecture qui favorise une séparation claire entre la logique de présentation et la logique métier. Avec un ensemble riche de fonctionnalités telles que le data-binding bidirectionnel, l’injection de dépendances, et une suite complète pour le développement d’applications, Angular aide à réduire le temps de développement tout en améliorant la qualité et la maintenabilité du code.

De plus, sa communauté active et ses mises à jour régulières garantissent que le framework reste à la pointe de la technologie et des meilleures pratiques de développement. En somme, Angular est un choix robuste pour les entreprises et les développeurs cherchant à créer des applications web modernes et évolutives.

4 concepts clés d’Angular

Angular est construit autour de concepts clés et bonnes pratiques du développement web actuel :

  • Architecture MVC (Modèle-Vue-Contrôleur) : architecture incontournable qui consiste à avoir une stricte séparation entre les données (Modèle), la présentation des données (Vue), et les actions possibles sur ces données (Contrôleur) ;
  • Data Binding :il s’agit d’un mécanisme permettant de lier la partie vue à la partie logique c’est-à-dire que les éléments de votre code HTML seront liés à votre contrôleur JavaScript ;
  • Injection de dépendances : les modules que vous développerez n’auront plus à se soucier d’instancier leurs dépendances ;
  • Manipulation du DOM grâce aux directives : la manipulation du DOM devient plus facile à maintenir et à tester que du pur JavaScript.

Prérequis pour démarrer votre projet Angular

  • Node 4.x.x ou supérieur ;
  • Npm 3.x.x ou supérieur.

Si vous avez déjà une installation de Node, vérifiez que vous utilisez au moins node 4.x.x et npm 3.x.x ou supérieur en exécutant dans le terminal/console :

node -v

et

npm -v

A vos claviers : premier projet Angular

Étape 1. Configurer l’environnement de développement

Pour la grande majorité des actions, vous allez utiliser la ligne de commande dans le terminal (pour MacOS et Linux) ou la console (pour Windows). vous allez tout d’abord installer l’Angular CLI. Cet environnement est incontournable pour créer les composants et services de votre application.

Pour installer l’Angular CLI :

npm install -g @angular/cli

Sous Mac OS et Linux vous devrez peut-être faire précéder la commande du terme « sudo » vous permettant d’élever vos droits (passer en mode root). Votre mot de passe vous sera demander pour poursuivre l’exécution de la commande.

Étape 2. Créer un nouveau projet

Ouvrez une fenêtre de terminal et créez un nouveau projet et un squelette d’application en exécutant les commandes suivantes:

ng new mon-application-angular

Cette commande créé un squelette d’application Angular.

projet angular 1

Vous devez choisir le format de feuille de style que vous souhaitez utiliser en utilisant les flèches haut ou bas pour vous positionner devant le format puis cliquer sur Entrer.

Le versionning via Git est également initialisé par la même occasion 😉

Mais si vous souhaitez créer directement un projet Angular utilisant SASS, vous devez exécuter la commande suivante :

ng new mon-application-angular --style=scss

Lancez votre éditeur de code préféré (ici VS Code) et ouvrez le dossier de votre application créée sur le bureau de votre PC ou Mac.

Vous pouvez vérifier la structure des dossiers par défaut :

projet angular 5

Vous découvrez un fichier styles.css dans lequel vous pourrez écrire vos styles.

Étape 3: Tester le projet

Rendez-vous dans le répertoire du projet en utilisant la commande :

cd mon-application-angular

Une fois que vous êtes dans votre dossier hébergeant votre application Angular, exécutez la commande suivante :

ng serve --open

La commande ng serve lance le serveur, surveille les fichiers et reconstruit l’application lorsque vous modifiez votre code. Vous n’avez pas besoin de rafraichir la page qui s’affiche dans votre navigateur : c’est automatique 😉

Voici ce qu’affiche ma console lors de l’exécution de ng serve :

projet angular 3

Ouvrez un navigateur sur http://localhost:4200/

L’application nous accueille avec cet écran :

projet angular 4

J’espère que cette petite introduction vous aidera à créer votre premier projet Angular.

Réagissez en laissant un commentaire ci-dessous.