WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Système de gestion des nouveau-nés "de la conception à  la mise en réseau"

( Télécharger le fichier original )
par Wail WWALUMBUKA ILUNDU
Institut Supérieur Pédagogique de BUKAVU - Licence 2007
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

IV.6.2.1. Serveur

En informatique, un serveur est un ordinateur ou programme prenant en charge certaines fonctions pour le compte des autres systèmes d'un réseau informatique.

Son role est principalement d'attendre des requêtes venant des autres ordinateurs, les cas échéant de les ordonner, de les exécuter et de renvoyer la réponse. Du fait de leur importance et leur charge d'activités, dans le cadre des ordinateurs, les serveurs sont en général des ordinateurs haut de gamme, plus rapides et plus puissants que toutes les autres machines d'un réseau.

Un ordinateur serveur dans l'architecture client/serveur ne peut pas fonctionner sans logiciel serveur associé. Ce qui est de notre cas, pour le faire fonctionner nous avons utilisé le serveur Web local apache grace a Easy PHP qui est a la disposition des différents systèmes UNIX ainsi que Windows mais aussi gratuit. (30).

IV.6.2.3. Navigateur

En anglais browser, le mot navigateur est un logiciel conçu pour le Web, permettant aux utilisateurs d'explorer les ressources a l'intérieur d'un réseau intranet, extranet ou internent.

Le navigateur gère l'affichage des pages Web et le suivi des liens hypertextes ou hypermédias (est dit hypermédia (multimédia), l'ensemble des techniques et des produits dérivés qui présentent l'information sous forme, combinée de textes, de sons, d'images, d'animations et de vidéos) entre les différentes pages. Les navigateurs les plus utilisées sont Internet Explorer de Microsoft, FireFox de la fondation Mozilla et Netscape de SUN.

En plus de la fonction de navigation, les navigateurs offrent de nombreuses
possibilités pour aider l'utilisateur dans son utilisation d'intranet. Ils
permettent de sauvegarder sur le disque dur de l'utilisateur tout ou partie du

document consulté et d'afficher le code source HTML correspondant a la page en cours. Par ailleurs, un navigateur permet de conserver en mémoire les références (bookmarks) des documents, pages ou sites consultés par l'utilisateur, afin d'y avoir accès facilement et rapidement lors d'une prochaine navigation. En fin, les navigateurs font office d'interface d'accès au courrier électronique (e-mail) et aux groupes (ou films) de discussion. (Newsgroups).

(31)

Dans le cadre de notre travail nous avons utilisé le navigateur Internet Explorer du fait que la plupart de nos machines utilisent le système d'exploitation de Microsoft qui incorpore Internet Explorer a son installation.

IV.6.2.3. Base de données MySQL

MYSQL représente une gestionnaire de base de données relationnelle qui a été développé en Suède par la société TCX DataKonsult. Ce système est rapide, robuste et simple d'utilisation. Le logiciel se compose du serveur de base de données. Nous avons utilisé cette base de données du fait qu'elle est aussi installée dès qu'on installe EasyPHP et offre de grandes satisfactions et en plus est gratuit. SQL acronyme de structured Query Langage, est un langage de requêtes de base de données.

IV.6.3. Accès au contenu de la base de données.

Si l'accès au contenu des bases de données s'effectue a partir des pages Web, les tâches du langage de programmation sont les suivantes : D'abord, l'établissement de la connexion vers le serveur de la base de données.

Ensuite, l'envoie de la requête a la base de données et Enfin, la préparation des résultats. Les résultats SQL sont a nouveau transformés en code HTML, puis ils sont envoyés au navigateur.

IV.6.3.1. Schéma de l'accès au contenu de la BDD.

Les Schémas ci-dessous montrent comment est-ce qu'on peut avoir accès au contenu d'une Bdd.

31Microsoft Encarta 2007.

- Schema 1 (32)

Code HTML, PHP et MySQL

 

Code HTML

Serveur Web Réceptionne le code HTML, PHP et MySQL

Code HTML

Serveur Web Transforme le résultat en code HTML

Valeur de retour (ligne messages de retour code d'erreur)

Dialogue direct avec le serveur SQL

Serveur MySQL avec Base de Données

Navigateur Démarre requête

Shell MySQL

MySQL> SELECT VERSION 0 ;

Navigateur Code HTML

Affichage résultat

- Schema 2

BD
MySQL

Extraction
de données

Client

Script PHP

Requête
Réponse

Exécution

Document HTML

Appel de la page

Serveur

IV.6.4. Le Code PHP

Le moteur d'interprétation du langage lit un fichier source PHP, puis génère un flux de destination. En respectant les définitions et règles suivantes :

- Un bloc PHP est un groupe continu des lignes, encadré par deux balises : < ? et ?> ou < ?php et php> ;

- Toute ligne située a l'extérieur de ces balises n'est pas interprétée et est envoyée telle que dans le flux de sortie ;

32 Competence Micro, Pages Web dynamiques avec MYSQL et PHP, www.competencemicro.com

- Toute ligne située a l'intérieur de ces balises est considérée comme une ligne instruction PHP et est donc interprétée par le moteur ;

- Les instructions PHP n'apparaissent pas dans le résultat généré.

- Lorsque une erreur survient, un message est intégré dans le flux de sortie, et la génération du script est interrompue.

IV.6.4.1. Schema de fonctionnement de Script PHP

Moteur PHP

Code HTML

Scripts PHP

< ?

...>

1. Les instructions du programme sont stockées sur le serveur, dans des fichiers sources directement éditables.

2. Le moteur lit les ordres dans le fichier source et les exécutent avant de renvoyer le résultat final

2. Le code HTML ainsi génére est renvoyé au navigateur du poste client qui pourra l'affichier.

IV.6.5. Enregistrement des fichiers en PHP.

Pour créer des programmes en PHP, il suffit d'un simple éditeur tel que Notepad, bloc note etc. Dans le cadre de notre travail, nous avons utilisé un éditeur spécialisé dans le PHP nommé << PHP_Edit * cet éditeur est téléchargeable sur Internet au : www.télécharger.com c'est gratuit. Les commandes SQL sont intégrées dans le code PHP. Lors de l'enregistrement il faut utiliser l'extension. PHP3 (pour la version PHB3) ; PHP4 (Pour la version PHP4) ou PHP (Pour la version PHP3 ou PHP4).

Pour recevoir un programme clair, il est conseillé de séparer visuellement le code HTML et le Code PHP. Il est recommandé d'écrire le code PHP dans les fichiers (modules) supplémentaires et de les inclure avec l'instruction INCLUDE dans HTML.

IV.6.6. Programme de base de données MySQL en PHP

IV.6.6.1. Accès a des bases de données

Avant d'accéder aux données, il faut d'abord configurer votre serveur Web local (Apache, Php et MYSQL). Le serveur Web local nous a permis d'effectuer sur notre PC, sans devoir passer par Internet, tous les tests et toutes les constructions de bases de données MySQL.

Rappelons encore une fois qu'une base de données est un regroupement de données ayant un thème ou un objectif commun. Elle permet a l'utilisateur d'accéder a des données enregistrées sans qu'il ait a connaItre la manière dont les données sont organisées dans le système de gestion de base de données, une base de données nous rassure qu'aucun utilisateur sans droit d'accès ne pourra voir ou manipuler les données. Le système de gestion de base de données constitue le coeur de la base de données ; il contient toutes les routines nécessaires a la gestion des données.

Le langage de base de données représente l'interface entre l'utilisateur et le système de gestion de base de données. De nombreux systèmes de base de données utilisent le langage SQL (Structured Query Langage).

IV.7. Quelques lignes de notre code source écrit en PHP. IV.7.1 Le fichier connexion.php

Le fichier connexion.php (qui gère le login) est un fichier très important, il donne accès a tout l'ensemble de notre programme suivant un accès particulier.

Voici dans les lignes qui suivent le code complet du fichier connexion.php écrit en HTML et PHP.

<html> //Début du code en HTML.

<center>

<?php //Début du code en PHP.

<head><title>Fichier de connection</title></head><body> include('entete.php');

?> //Fin du PHP.

<table width="800" border="2" cellspacing="2" cellpading="10"> <tr>

<td height="300" valign="top" bgcolor="#FFFFCC">

<?php

$_SESSION['Categorie']=$_POST['Categorie']; $_SESSION['login']=$_POST['login']; $_SESSION['pw']=$_POST['pw'];

echo "<H6>Système de gestion des nouveau-nés </H6>"; $c=$_POST['Categorie'];

if($c==1){$t='administrateur';}

elseif($c==2){$t='medecin';}

elseif($c==3){$t='infirmier';}

elseif($c==4){$t='visiteur';}

elseif($c==5){$t='accoucheuse';} $link=mysql_connect('localhost','administrateur','administrateur'); if(!$link){

die('<p>Impossible de se connecter : '.mysql_error().'</p>');

}

$db = mysql_select_db('sgnnrl',$link);

if(!$db){

die('<p>Impossible d\'utiliser la base :'.mysql_error().'</p>');

} $login=$_POST['login'];

$sqlquery="select * from $t where login ='$login'"; $sqlresult=mysql_query($sqlquery); if(mysql_num_rows($sqlresult)==0){

echo"<p>Identifiant inconnu!</p>";

echo"<p><a href='login.php'>Retour</a></p>";

} else{

$row=mysql_fetch_array($sqlresult,MYSQL_ASSOC); if($row['pw']!=$_POST['pw']){

echo "Mot de passe incorect!";

echo "<p><a href='login.php'>Retour</a></p>";

}

else{

echo "<p>Bienvenue <strong>".$row['nom']."

".$row['postnom']."</strong> "."</p>";

if($c==1){

include('admin.php');

}

elseif($c==2){

include('admin.php');

}

elseif($c==3){

include('admin.php');

}

elseif($c==4){

include('visiteur.php');

}

elseif($c==5){

include('admin.php');

}

}

}

?>//Fin du PHP.

</tr>

</td>

</table>

<?php include('pieddepage.php');?>

</center></body>

</html>//Fin du HTML.

IV.7.2 Le fichier admin.php

Le fichier admin.php (administration générale) est un fichier clé, il donne accès aux modules des bases de notre programme au coté de l'administrateur.

Voici dans les lignes qui suivent le code complet du fichier admin.php ecrit en HTML, PHP et JAVASCRIPT.

<?php // Début du code Php.

if (isset($_POST['operation'])) $_SESSION['operation']=$_POST['operation']; if(isset($_POST["medg"])){

switch($_SESSION['operation']){

case 0 : $idClick="location:ajoutmedecin.php";break;

case 1 : $idClick="location:modifiermedecin.php";break;

case 2 : $idClick="location:visualisermedecin.php";break;

}

header($idClick);

}

elseif(isset($_POST['admin"])){

switch($_SESSION['operation']){

case 0 : $idClick="location:ajoutadmin.php";break;

case 1 : $idClick="location:modifieradmin.php";break;

case 2 : $idClick="location:visualiseradmin.php";break;

}

header($idClick);

}

elseif(isset($_POST["Invi"])){

switch($_SESSION['operation']){

case 0 : $idClick="location:ajoutvisiteur.php";break;

case 1 : $idClick="location:modifiervisiteur.php";break;

case 2 : $idClick="location:visualiservisiteur.php";break;

}

header($idClick);

}elseif(isset($_POST["Accou"])){

switch($_SESSION['operation']){

case 0 : $idClick="location:ajoutaccou.php";break; case 1 : $idClick="location:modifieraccou.php";break; case 2 : $idClick="location:visualiseraccou.php";break;

}

header($idClick);

}elseif(isset($_POST["Inf"])){ switch($_SESSION['operation']){

case 0 : $idClick="location:ajoutinf.php";break;

case 1 : $idClick="location:modifierinf.php";break; case 2 : $idClick="location:visualiserinf.php";break;

}

header($idClick);

}elseif(isset($_POST["rec"])){ switch($_SESSION['operation']){

case 0 : $idClick="location:ajoutrec.php";break;

case 1 : $idClick="location:modifierrec.php";break; case 2 : $idClick="location:visualiserrec.php";break;

}

header($idClick);

}

?>// Fin du code écrit en Php

<center>// Centrage des éléments du formulaire en Html. <form name="admin" method="post" action ="admin.php"> <table>

<tr><td>

<font size ="4"><br><strong>Que voulez-vous faire ? </strong></font>

<select name="operation"size="1">

<option value="0"selected>Ajouter </option>
<option value="1"selected>Modifier </option>
<option value="2"selected>Visualiser </option>

</select>

</tr>

</table>

<table border="2">

<tr>

<td><input type="submit" name="admin"value="Administrateur"

onclik="" ></td>

<td><input type="submit" name="medg"value=" Médecin "

onclick=""></td>

<td><input type="submit" name="Invi"value=" Visiteur " >

</td>

</tr>

<tr>

<td><input type="submit" name="Accou"value=" Accoucheuse" size="10" ></td>

<td></td>

<td><input type="submit" name="Inf"value=" Infirmier "

></td>

</tr>

</table>

</form>

<script language="javascript"> // Début du code écrit en JavaScript. function opera(form,list){

liste.options.length=0;

var o=newoption("Ajout","1"); form.liste.options[form.liste.options.length]=o;

var o=newoption("Modification","2"); form.liste.options[form.liste.options.length]=o;

var o=newoption("Visualisation","3"); form.liste.options[form.liste.options.length]=o;

}

</script> //Fin du JavaScript.

</center>// Fin centrage des éléments du formulaire en Html.

IV.7.3 Le fichier ajoutadmin.php

Le fichier ajoutadmin.php (ajouter un administrateur) est un fichier comparable a d'autres fichiers qui jouent le role d'ajout, il fait recours au fichier insertadmin.php l'enregistrement pour finir l'enregistrement.

Voici le code complet du fichier ajoutadmin.php ecrit en HTML, PHP et JAVASCRIPT dans les lignes qui suivent.

<HTML>// début du code en HTML.

<CENTER>

<?php // Début de PHP.

include("entete.php");

include("barredemenu.php");

?> // Fin de PHP.

<table width="800" height="300" border="3" cellpadding="2"

cellspacing="10" bgcolor=#FFD29F bordercolor=#FFD29F class= entt">
<tr>

<td height="300">

<!--Modèle p2-->

<div align="center">

<!-- Propre au fichier-->

<form action="insertadmin.php" name="ajoutadmin"

method="post">

<table>

<tr>

<td>

<span class="msg">

Ajout d'un nouveau administrateur :

</span></td>

</tr>

<tr>

<td>

Nom : </td>

<td class="champ">

<input type="text" name="nom" value="" ></td>

</tr> <tr>

<td>

Postnom : </td>

<td class="champ">

<input type="text" name= postnom" value="" ></td> </tr>

<tr>

<td>

login: </td>

<td class="champ">

<input type="text" name="login" value="" ></td> </tr>

<tr>

<td>

Mot de passe: </td>

<td class="champ">

<input type="password" name="pw" value="" ></td> </tr>

<tr>

<td height="20"></td>

</tr> <tr> <td align="center">

<input type= reset value=" Netoyer '></td>

<td align="center">

<input type="submit" value= Enregistrer"></td> </tr>

</table>

</form>

<!-- FIN Propre au fichier-->

</div>

</td>

</tr>

</table>

<script language= Javascript"type= text/javaScript"> //Début de JavaScript function fermer(){

this.close("deconnexion") ;

}

</script>// Fin de JavaScript.

<?php //Début PHP.

include("pieddepage.php");

?> // Fin PHP.

</CENTER>

</HTML> // Fin du code HTML.

IV.7.4 Le fichier insertadmin.php

Le fichier insertadmin.php (prendre en compte les informations de l'administrateur) est un fichier comparable a d'autres fichiers qui jouent le role d'enregistrer. Il est appelé par l'action du fichier ajoutadmin.php.

Voici le code complet du fichier insertadmin.php écrit en PHP.

<?php // Début du code PHP.

if(isset($_POST["nom"])){

$link = mysql_connect('localhost', 'administrateur', 'administrateur');

if (!$link) {

die('<p>Impossible de se connecter : '. mysql_error().'</p>');

}

$db = mysql_select_db('sgnnrl', $link);

if (!$db) {

die ('<p>Impossible d\'utiliser la base : '. mysql_error().'</p>');

}

foreach($_POST as $key=>$val){

$varN=$key;

$$varN=$val;

} //Requête

$sqlquery="insert into administrateur(id,nom,postnom,login,pw) values(",'$nom','$postnom','$login','$pw')'; $queryresult=mysql_query($sqlquery) or die('<br> Impossible

d\'enregistrer :<br>'.mysql_error());

}

include("ajoutadmin.php");

?> // Fin du code PHP.

IV.8. Présentation du SGNN en réseaux Local.

Conçu pour l'utilisation monoposte dans l'année académique 2005-2006 pour l'obtention du diplôme de gradué en pédagogie appliquée, Option Informatique et Gestion a l'ISP-BUKAVU, le logiciel SGNN s'est vu corrigé 2 ans après dans le but d'être utilisé en multiposte, (dans un réseau local) cette fois, dans le cadre d'obtention du diplôme de licencié en pédagogie appliquée, Option Informatique et Gestion, Branche réseaux informatiques. Ce logiciel a pour but de remédier aux problèmes qu'a, connut le SGNN monoposte dans le service de la maternité. Il ne sera plus question de s'inquiéter pour le partage d'une même donnée.

Comme toute autre application tournant sous Windows, le SGNN multiposte, possède une interface utilisateur qui occasionne l'interaction entre le programme et l'utilisateur a l'aide des événements déclenchés par la souris et les appuis sur certaines touches du clavier.

IV.9. Utilisation du programme

Pour prendre en main l'utilisation du logiciel SGNNRL il est nécessaire d'avoir un serveur utilisant le langage Php et la base de données MySQL. Ce serveur est ici Apach.

Avant d'utiliser il faudra d'installer le serveur Apach qui est l'un de composant d'Easyphp, le paramétrer et installer le logiciel Système de gestion des nouveau-nés en réseau local, le SGNNRL.

IV.9.1 Acquisition d'EasyPHP IV.9.1.1. Téléchargement

Allez a l'adresse suivante pour récupérer la version 1.8 EasyPHP (ne pas utiliser avec W98) : http://www.easyphp.org/telechargements.php3 Après le téléchargement, enregistrez le fichier sur votre disque dur (sur le bureau ou dans le flash dique par exemple).

Pour faciliter la tâche, un fichier d'installation d'EasyPHP se trouve dans le CD du programme.

IV.9.1.2. Installer

Double cliquez sur le fichier téléchargé ou sur le fichier dans le CD.

Cliquez sur OK.

Puis <<Suivant*. Cochez <<Je comprends et j'accepte les termes du contrat de licence>>, acceptez l'installation dans Program Files. Quelques <<Suivant>> plus tard, le logiciel vous propose <<Installer>>.

Enfin, lorsque l'installation est terminée, on vous proposera peut-être de mettre a jour deux fichiers un .txt et un .exe. Vous dites OK et puis Terminer. Démarrer le logiciel (Démarrer, Programmes, EasyPHP). Profitez-en pour mettre l'icône sur le bureau.

Lorsqu'EasyPHP est démarré, une petite icône se met dans la barre des tâches (près de l'heure) et le carré rouge clignote.

IV.9.1.3. Quelques paramétrages d'EasyPHP

Clic droit sur l'icône d'EasyPHP dans la barre des tâches, Menu

Configuration, EasyPHP, une fenêtre s'ouvre.

Vous pouvez cocher la première ligne : <<Démarrer EasyPHP en même temps que Windows>>.

Cliquez sur Appliquer puis Fermer.

Les extensions php

Pour pouvoir utiliser la norme Z3950, vous devez installer quelques extensions pour PHP.

Clic droit sur l'icône d'EasyPHP dans la barre des tâches. Menu Configuration Extensions PHP.

Pour ne pas avoir de souci lors de la conversion de base.

Quelques paramètres sont à modifier dans le fichier php.ini, pour atteindre ce fichier Clic droit sur EasyPHP en bas à droite de votre écran (dans la zone de notification), puis Configuration, PHP.

Il faut alors rechercher dans le fichier les lignes suivantes et donner les valeurs indiquées ci-dessous : (dans PHP.ini vous pouvez utiliser Edition, Rechercher en faisant un copier-coller des débuts de ligne ci-dessous et en suivant c'est qui suit).

max_execution_time = 300; Temps maximum d'exécution de chaque script par seconde;

memory_limit = 45M; Espace maximum que doit consommer un script en mémoire (8MB) ;

post_max_size = 45M; Taille maximum allouée aux fichiers; upload_max_filesize = 45M; Taille maximum des fichiers à transférer.

Pour mettre le logiciel disponible sur l'ensemble du réseau Avec la version actuelle d'EasyPHP 1.8 il faut faire une petite manipulation :

Bouton droit sur EasyPHP, configuration, apache. Menu édition, rechercher, tapez le mot <<listen>>.

Faire suivant jusqu'à la ligne : Listen 127.0.0.1:80

Ecrire # (Alt Gr + 3) devant cette ligne pour obtenir : #Listen 127.0.0.1:80 pour masquer cette instruction.

Il faut ensuite connaItre le nom du poste oci se trouve SGNNRL et l'indiquer comme adresse web sur les autres ordinateurs du réseau pour qu'ils puissent trouver le logiciel. Pour trouver le nom : Clic droit sur Poste de travail, Propriétés, Nom de l'ordinateur. Exemple <<serveur*. Sur les postes client mettez l'adresse : http://serveur. Vous trouverez SGNNRL.

IV.9.1.4. A retenir dans les paramétrages d'EasyPHP


· Si EasyPHP n'est pas démarré, les utilisateurs de l'intranet n'auront pas accès à vos pages. Il s'agit du serveur de pages.

·

Il n'est pas nécessaire de l'installer sur votre ordinateur puisque la mise a jour des données peut se faire de n'importe oi.

· Si un des ordinateurs peut rester allumer jour et nuit, vous avez intérêt a l'installer sur ce poste.

· Si toutefois vous devez éteindre l'ordinateur, pensez d'abord a arrêter EasyPHP. Bouton droit sur l'icône puis Arrêter. De nouveau bouton droit, Quitter.

C'est dans le dossier www d'EasyPHP que vous pourrez installer SGNNRL comme nous allons le voir par la suite.

IV.9.2.1. Décompresser le SGNNRL

Double-cliquez sur le fichier (vous devez avoir un logiciel de décompression du genre Winzip, PowerArchiver, Winrar...). Décompressez l'archive (extraire) dans le dossier www de EasyPHP.

Exemple : C:\program files\EasyPHP1-8/www.

IV.9.3 Démarrage du SGNNRL.

Assurez-vous que tout est en ordre (ordinateurs capables de se communiquer, EasyPHP en marche sur l'ordinateur serveur oci est installé le programme SGNNRL).

Dans ce cas deux facons de le faire, premièrement, cette méthode est disponible seulement sur la machine distante, suivez les instructions des figures ci-dessus.

Cliquez sur menu démarrer puis sur exécuter.

Dans la fenêtre qui s'ouvre, tapez le nom de l'ordinateur serveur même si vous êtes sur la machine serveur.

En fin, si vous ne voulez pas passer par le biais du menu démarrer sur la machine considérée comme serveur, suivez les instructions ci-dessous.

Clique droit sur l'icône d'EasyPHP dans la zone de notification puis sur web local.

De ces deux manières de faire vous aboutirez a la fenêtre du lancement de notre programme, c'est la page d'accueille qui est présentée comme nous montre la figure suivante.

En suite une page de login va s'afficher.

Entrez vos coordonnées selon l'option, le login et le mot de passe.

Si vous entrez les informations correctement (cas de l'administrateur) vous aurez la page suivante.

Quand on choisi l'option visualiser, administrateur, médecin, Infirmier ou accoucheuse la page d'affichage dépendra de l'option demandée. Ici c'est le cas du visiteur.

Pour revenir en arrière cliquez sur l'option retour de la barre de menus du

Dans le menu principal de l'administrateur, si vous choisissez l'option ajout puis Médecin une page d'ajout semblable a toutes les pages d'ajout s'ouvrira.

Pour tous les ajouts c'est similaire. Retour, pour revenir en arrière.

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Il faut répondre au mal par la rectitude, au bien par le bien."   Confucius