dimanche 26 septembre 2004

Introduction


INTRODUCTION

Nous allons montrer rapidement la base de Bash afin de pouvoir rapidement commencer à écrire des scripts simples. Nous verrons les concepts présentés plus en détail dans d'autres tutoriels

Commentaire

#Ceci est un commentaire

Variable

#!/bin/bash
nombre=69
chaine="bash"

echo $nombre  #affiche 69
echo $chaine  #affiche bash
69
bash

Condition

#!/bin/bash
os1="linux"
os2="mac"
if [ "$os1" = "$os2" ]; then
 echo "il y a des ressemblances entre ces os"
else
 echo "ces os ne se ressemblent pas"
fi
ces os ne se ressemblent pas

Boucle

Le for est différent des autres langages.
#!/bin/bash
nb="12 13"
for i in $nb; do
  echo item: $i
done
item: 12
item: 13
On va itérer autant de fois qu'il y a d'éléments dans la string.
#!/bin/bash
for i in `seq 1 5`
do
      echo $i
done
1
2
3
4
5
Attention les caractères sont important si vous mettez ' au lieu de ` , vous allez obtenir: seq 1 10
Cette syntaxe permet d'avoir un résultat similaire au langage 10. Les chiffres de 1 à 10 seront affichés.
while
i=0
j=5        
while [ "$i" -lt "$j" ] # tant que i < j
do
  echo "$i"
  i=`expr $i + 1`
done
0
1
2
3
4

#!/bin/bash
i=0
j=5
while [ "$i" -lt "$j" ]
do
  echo "$i"
  i=`expr $i + 1`
done
0
1
2
3
4

#!/bin/bash
i=0
j=5        
while [ "$i" != "$j" ]
do
  echo "$i"
  i=`expr $i + 1`
done
0
1
2
3
4

#!/bin/bash 
FIN=okeefe
until [ "$var1" = "$FIN" ]
do
  echo "($FIN to exit)"
  read var1
done

#!/bin/bash 
COUNTER=15
until [  $COUNTER -lt 10 ];do
   echo COUNTER $COUNTER
   COUNTER=`expr $COUNTER - 1` # peut aussi utiliser: let COUNTER+=1
done
COUNTER 15
COUNTER 14
COUNTER 13
COUNTER 12
COUNTER 11
COUNTER 10
Notez qu'il est possible de mettre le mot: do sur la même ligne que le for, until, while. Il faut alors mettre un ; à la fin de la condition et ensuite on met le do. Cette syntaxe est plus compacte.

case

#!/bin/bash

echo "Appuyer sur une touche et ensuite sur enter."
read Keypress

case "$Keypress" in
  [a-z]   ) echo "Vous avez taper une lettre";;
  [A-Z]   ) echo "Vous avez taper une lettre";;
  [0-9]   ) echo "Vous avez taper un nombre";;
  *       ) echo "Autre";;
esac  
Si vous appuyez sur un chiffre vous obtiendrez
Vous avez tapé un nombre

Fonction

L'utilisation des fonctions est un peu différente sous Windows et Linux.

Windows et Linux

#!/bin/bash 
quit() { 
  echo "allo"
  exit 
}
quit

Linux

#!/bin/bash 
function quit {
  echo "allo" 
  exit 
}
quit

allo
La fonction exit permet de terminer le script.
Vous verrez plus souvent cette dernière syntaxe sous Linux. Nous utiliserons donc la syntaxe de Linux pour le reste des tutoriels.

Bash pour windows


BASH POUR WINDOWS

Un interpréteur de commande sert d'intermédiaire entre l'utilisateur et le système d'exploitation. Il permet de faire différentes tâches. Nous utiliserons Bash. Il en existe de nombreux autres sous Linux, Unix. C'est souvent le Shell par défaut sous Linux. Ce tutoriel permettra à ceux qui trouvent encore difficile de faire les quelques cliques de souris nécessaire pour l'installation de Linux, de pouvoir utiliser bash sous Windows.

Téléchargement de bash

Il est possible de se procurer bash à Cygwin. Diverses informations se retrouvent sur ce site. Plusieurs conseils de configuration y sont dits, si vous désirez avoir un environnement le plus près possible de votre distribution Linux favorite. Cliquer sur . Le téléchargement du logiciel se fera.

 Installation

Une fois le téléchargement fini, cliquer sur le fichier setup.exe téléchargé. Cette fenêtre
apparaîtra



Cliquez sur next. Ensuite sélectionné la source d'installation, nous choisirons « Install from
 Internet ».




Sélectionner ensuite le lieu d'installation du programme, la permission d'utilisation et le type de fichier par défaut.

Spécifiez ensuite où les fichiers téléchargés d'Internet seront entreposés durant l'installation.



Choissisez le type de branchement Internet voulu.


Indiquer le lieu de la source de téléchargement voulue, habituellement une zone près de chez vous devrait être plus rapide.


Choisisez les paquets voulus, j'ai laissé ceux par défaut.


Les icones se créent sur votre bureau.

 L'installation est réussie.




Démarrez Bash en cliquant sur son icône .
Si tout à bien été installé, vous devriez avoir une fenêtre noir qui apparait



.
Vous pouvez maintenant exécuter des scripts bash. En tapant «help», vous avez une liste de commande existante. Nous allons afficher l'arborescence des fichiers de cygwin. Tapé «cd /» ensuite enter. Entrer la commande «ls -l», vous devriez voir une liste de répertoire très connu des utilisateurs Linux.
Dans une console bash, vous pouvez taper «mount» pour voir la liste des lecteurs disponibles. Par exemple pour aller sur le lecteur c, c'est habituellement cd /cygdrive/c. Vous pouvez par la suite naviguer dans votre lecteur tel que le vous feriez sous Dos ou Linux.

Premier scripts

Dans un éditeur texte, tapez ces commandes
#!/bin/bash
os="Windows"
nb=1
echo "Mon $nb script bash sous $os"
Sauvegardez votre fichier sous le nom script1.sh. Sous bash maintenant, rendez votre fichier exécutable. N'oubliez pas de votre rendre où que votre script se site.
chmod +x script1.sh
Maintenant pour exécuter votre script
./script1.sh
À l'écran vous allez voir:
Mon 1 scripts bash sous Windows
Assignez un éditeur texte tel que vim, notepad... au fichier script de bash.
Nous avons vu comment installer l'environnement cygwin sous Windows afin de pouvoir utiliser Bash. Quelques commandes ont été énumérées. Nous en verrons d'avantages dans les tutoriels à venir.

lundi 20 septembre 2004

Qemu et Windows


QEMU ET WINDOWS

QEmu émule un processeur. Il est donc possible d'y installer différents os tels que beos, dos, Windows. Ce programme peut s'avérer très utile pour utiliser un autre os et ses diverses applications sous Linux. Puisqu'il y a beaucoup d'émulation, il y a donc une perte de performance comparativement à l'utilisation du système d'exploitation en natif. Plus le processeur sera rapide et plus il y aura de mémoire vive, mieux seront les performances du système émulé. Un amd 1800+ avec 512meg de ram fait tourner convenablement Windows 98 se.

Nous installerons Windows 98 SE via qemu pour ce tutoriel. Vous pouvez suivre les mêmes instructions pour installer Windows XP, 2000... Si lors de l'installation de Windows 2000 vous avez un problème concernant que le disque est plein alors que c'est faux, démarrez qemu avec l'option: win2k-hack. Cette option est disponible dans la version 0.7.1

Préparation

Installez qemu via un rpm, deb ou les sources. Créez un répertoire où vous allez mettre Windows 98. Ici, nous allons le mettre dans le répertoire/home/collinm/win98se.
cd /home/collinm
mkdir win98se
cd win98se

Nous allons maintenant créer un disque dur virtuel. Ce disque dur sera en fait une image constituant un fichier. L'image sera de 1,9Go ce qui convient bien pour Windows ainsi quelques applications.
dd of=hd.img bs=2048 seek=1000000 count=0

Téléchargez une image de la disquette de Windows 98 SE ou de l'os que vous désirez installer. Plusieurs disquettes de démarrage sont disponible sur le site bootdisk.com.
Nous allons maintenant démarrer sur la disquette créée précédemment
qemu -m 32 -fda win98sec.img -hda hd.img -boot a
le m est pour spécifier la quantité de mémoire virtuelle hda est pour spécifier que le fichier est considéré, comme le premier disque dur.
Cette commande nous amène en dos

On doit maintenant créer une partition, nous allons utiliser la commande fdisk Si votre disque dur a une dimension de plus de 512 mb, vous obtiendrez l'image ci-dessous. Répondez positivement.



Ensuite, sélectionnez le choix 1









Allez dans la fenêtre de qemu et taper q afin de quitte qemu. Redémarrez qemu de la même façon que la première fois. Tapez format c:/s dans la fenêtre dos, répondez de façon affirmative à la question. Quittez de nouveau qemu



Démarrage de l'installation

Il est possible d'installer Windows via une image iso ou le cd. La deuxième solution peut ne pas fonctionner. Si vous désirez tenter cette solution, vous devez lancer qemu avec une syntaxe similaire à:
qemu -hda hd.img  win98sec.img -cdrom /dev/cdrom -boot d -m 64

Le cdrom ne doit pas être monté lorsque vous entrez cette commande. Nous allons utiliser l'autre solution. Créez une image iso de votre cd de Windows 98.
mkisofs -r -o /home/collinm/win98se/win98.iso /dev/cdrom

Nous démarrons l'installation via la commande:
qemu -hda hd.img -fda win98sec.img -cdrom win98.iso -boot a -user-net
entrez dans le lecteur cd à l'aide de la commande r: et tappez setup et ensuite appuyez sur enter

Une vérification du disque dur est faite à l'aide de scandisk. Si cette étape se déroule bien, la fenêtre graphique d'installation de Windows s'affiche.








Nous n’allons pas passez au travers de toutes les étapes de l'installation de Windows. Veuillez aller sur un site web qui traite de ce sujet si vous n' avez jamais fais ce genre d'installation. L'installation peut-être longue selon la puissance de l'ordinateur.Une fois l'installation de Windows terminée, vous retournerez en mode dos. Dans la fenêtre de qemu, quittez.

Démarrez qemu avec la syntaxe suivante:
qemu -hda hd.img -cdrom win98.iso -boot c -user-net
Notez qu'on ne démarre pas sur la disquette ou le cdrom


Option

Quelques options sont disponibles pour Qemu. Vous pouvez lancez qemu sans aucun argument pour les connaitre.
  • -k langage Change la disposition du clavier (-k fr)
  • -full-screen Démarre en mode plein écran
  • -enable-audio Active le son (ne fonctionne pas toujours)
Vous allez devoir spécifier l'heure et la date.... Windows détectera vos périphériques, Windows est maintenant installé et fonctionnel. Il est possible d'utiliser des lecteurs cdrom avec qemu. Ils doivent cependant ne pas être montés sous l'os maitre (ici linux).


Partage de donnée

Il est possible de partager des données entre le système virtuel et le système natif. Il ya quelques possibilités. Le plus simple et le plus sûr est de créer un serveur ftp, serveur samba ou partager des fichiers via le web. Il y a aussi l'utilitaire QEMU-HD-Mount pouvant être trouvé sur le net. Cet utilitaire peut endommager votre partition virtuelle. Il y a donc un risque que vous perdiez votre système virtuel. Il n'y a cependant pas de danger pour votre système d'exploitation natif. Rendez-vous dans le répertoire où vous démarrez habituellement qemu. Connectez-vous en mode root et créez un répertoire pour pouvoir monter votre partition.
mkdir /mnt/qemu
lomount -t vfat -diskimage WIN98SEC.IMG -partition 1 /mnt/qemu

Soyez vigilant en utilisant cet utilitaire. Utilisez les autres méthodes si vous voulez être certain de ne pas endommager le système de qemu.

jeudi 16 septembre 2004

Introduction Delphi


Delphi est un outil de programmation orienté Windows et maintenant linux. Un peu comme Visual Basic, il est possible de créer des programmes Windows et linux très aisément. C'est un logiciel de développement de type rad (rapid application development).
Delphi est puissant et fiable, grâce à la vcl (virtual composent library), on n'a plus réellement besoin de se soucier des caractéristiques propre à Windows ou linux. On n'a qu'à se concentrer sur l'algorithme à développer. On peut à tout instant décider d'utiliser l'api au lieu de la vcl.

Delphi permet d'utiliser le basic, l'assembleur, les microsoft foundation classes(mfc). Comme on peut voir, il est très polyvalent. La vcl fournit de nombreux composants visuels et non-visuels dans de nombreux domaines : bases de données, communication, réseau, multimédia. Avec l'envolé d'internet, on retrouve de plus en plus de composant gratuit ou à peu de frais sur la toile.

Delphi utilise le pascal objet, qui a fait ses preuves depuis longtemps. Il surpasse dans certains domaines le langage c++. En somme, il possède la puissance du C++ avec la facilité du visual basic, ce qui constitue un rêve pour les programmeurs. Les fichiers exécutables de delphi nécessitent aucunement de bibliothèque supplémentaire enfin de fonctionner, ce qui augmente considérablement leurs vitesses d'exécution.
Delphi pour Windows en est rendu à sa 8 version, on a le choix entre 4 variantes de delphi:
  • personnel
  • professionnel
  • entreprise
  • architecte
Le standard étant amplement suffisant pour les besoins d'un programmeur débutant, les autres préféreront la version professionnelle.
Kylix est la version de Delphi et de bcb pour linux,ils sont offert en trois versions:
  • Développement Serveur
  • Développement Desktop
  • Open Edition
La version open edition est offerte gratuitement en téléchargement, si vous voulez découvrir la puissance de delphi, n'hésitez pas à la télécharger.

Même si delphi facilite grandement la programmation, il faudra comme dans tout langage travailler fort enfin de devenir un excellent programmeur. On peut grâce à delphi 6, 7 et kylix développer une application qui fonctionnera sans trop de problème sous les deux systèmes d'exploitation.

Delphi 8 est orienté .NET, le pont avec Win 32 est brisé. Borland utilise le framework MS .Net.

Bonne programmation!

mercredi 15 septembre 2004

Bash



Ce livre offre un moyen de s'initier et s'améliorer sur le script bash. Les auteurs traitent des concepts de bases telle que les flux de donnée, les entrées/sorties, les options de la ligne de commande...

Des concepts plus avancés telle que la gestion de processus, administration du shell sont aussi passé en revue. Ils traitent même de l'édition en utilisation vi et emacs.

Beaucoup d'exemple y sont présenté même s'il manque d'exemple réelement utile. C'est un livre de référence pour quiconque désire se mettre au scrip sous linux.

mercredi 25 août 2004

Système de news


SYSTÈME DE NEWS

Le système de news est un script très simple à mettre en oeuvre. Il s'agit en fait que d'une table pour la news. Nous avons inclus une référence à la table soussection. Cette référence permet d'afficher la news liée à une section. Par exemple, nous insérons une news relative au Génie logiciel, elle sera affichée sur la page principale du site en plus d'être affichée sur la page de la section Génie logiciel. Si vous ne désirez pas une telle option, il suffit d'enlever la référence à SOU_NOSOUSSECTION dans le code de la table ci-dessus. Si vous désirez de plus amples renseignements sur la table sectio, soussection lisez les autres tutoriels de php.

La table news contient seulement quelques information, si vous désirez ajouter le nom de l'auteur de la news, vous pouvez soit ajouter un champ de type string à la table. Cette façon de faire est simple, mais il y aura de la redondance. Le nom de l'auteur sera inscrit autant de fois qu'il a inscrit de news. Il est préférable de créer une table membre (voir tutoriel forum) et ensuite de faire une référence avec la table news.

DROP TABLE IF EXISTS `news`;
CREATE TABLE `news` (
  `NEW_NONEWS` int(11) NOT NULL auto_increment,
  `SOU_NOSOUSSECTION` int(11) NOT NULL default '0',
  `NEW_TITRE` varchar(120) default NULL,
  `NEW_DATE` date default NULL,
  PRIMARY KEY  (`NEW_NONEWS`),
  KEY `NEW_NONEWS` (`NEW_NONEWS`)
) TYPE=MyISAM AUTO_INCREMENT=39 ;

Le script ci-dessus affiche les news. Seules les 10 dernières nouvelles sont affichées. Ceci afin que la page soit affichée plus rapidement.

function returnnews()
{
  echo '<div id="main"><table class="tab">';
  $requete = mysql_query("SELECT new_titre , new_date, s.sec_nomsection FROM news LIMIT 10");
  if ( mysql_num_rows($requete) != 0 )
  {
    while ($ligne = mysql_fetch_assoc($requete))
    {
      if(''.$ligne['sec_nomsection'].'' != "")
        echo '<tr><td class="newsdate">'.$ligne['new_date'].'</td><td class="newstitre"> '.$ligne['new_titre'].' dans la section '.$ligne['sec_nomsection'].'</td></tr>';
      else
        echo '<tr><td class="newsdate">'.$ligne['new_date'].'</td><td class="newstitre"> '.$ligne['new_titre'].'</td></tr>';
    }
  }
  echo '</table></div><br/>';
}

L'insertion d'une nouvelle est simple, vous devez créer un formulaire. Dans notre cas, nous utilisons une listbox pour afficher les sections ainsi qu'un input pour entrer le texte de la nouvelle.

echo '<br/><div class="titresection">Ajout de new</div>';
  echo'<div id="main">';
  echo'<form id="new" action="ajout" method="post">'; 
  
  //nom de la section et type de la section
  $requete = mysql_query("SELECT sou_nosoussection, ss.sec_nosection, sou_soussection, sec_nomsection from soussection ss inner join section s on s.sec_nosection = ss.sec_nosection"); 
  echo '<div>Nom de la section<br/></div>';
  echo '<div><select name="section">';
  echo '<option value="0" SELECTED>Aucune</option>';
  while ($ligne = mysql_fetch_array($requete)){       
    echo '<option value="'.$ligne["sou_nosoussection"].'">'.$ligne["sec_nomsection"].' - '.$ligne["sou_soussection"].'</option>';
  }
  echo '</select><br/><br/></div>';

  echo "<div>Titre de la new<br/></div>";
  echo '<div><input name="titre" class="txtsub" size="75" maxlength="120"/><br/><br/></div>';  
  echo '<div><input type="hidden" name="form" value="new"/></div>';
  echo '<div><input type="submit" class="butsub" value="Soumettre"/></div>';
  echo '</form>';
  echo'</div>';

Dans la listbox, nous affichons la section ainsi que la sous-section. Par exemple: delphi - tutoriel, delphi - livre, php - tutoriel... Nous avons aussi mis la possibilité de mettre aucune donnée pour cet élément.

Ce cas peut s'avérer utile si vous ajoutez une nouvelle n’ayant aucun lien avec une section. Par exemple un nouveau modérateur, changement de graphisme...
N'oubliez pas de valider vos données avant de les insérer dans la base de données. Voici le code de validation du formulaire qu'on a vue.

function validationnew()
{
  echo '<div class="titresection">Ajout de new</div>';
  echo '<div id="main">';

  if (!empty ($_POST['section']) && !empty ($_POST['titre'])) 
  { 
    mysql_query("INSERT INTO news (new_titre, sou_nosoussection, new_date) VALUES ('" . $_POST['titre'] . "',  '" . $_POST['section'] . "', NOW())");
 
    echo "Merci d'avoir contribué.";
    echo '<br/>La new à été ajouté<br/><br/>';
  }
  else
  {
    echo "La new ne peut être insérée. Un problème a été détecté, il y a soit un champ vide.";
    echo "Veuillez revenir en arrière dans votre navigateur.";
  }
   echo '</div>';
 }

samedi 21 août 2004

Les tests


LES TESTS

Un test permet grâce à un procédé de vérification de s'assurer d'une certaine qualité pour un produit, service. Cette activité doit permettre de déceler les problèmes, défaut encore présent.

Tel que montré dans l'article sur le cycle de développement logiciel et les méthodes de développement, les tests devraient représenter une bonne partie d'un projet informatique. Nous savions tous quand réalité que c'est beaucoup moins, sinon il y aurait beaucoup de problèmes avec les logiciels. Il est préférable de détecter une erreur lors des tests que de la détecter chez le client. Les coûts de réparations ne sont pas les mêmes.

Les tests ne sont pas faits pour montrer qu'il n'y a pas d'erreur, mais bien pour montrer qu'il en existe.

Étant donné la complexité des applications d'aujourd'hui, il est peu réaliste de vouloir tester toutes les possibilités qu'un logiciel peut offrir. Une telle situation serait quand même l'idéale.

Le test unitaire

Ce test est fait directement par le programmeur. C'est le test le plus efficace pour déceler des erreurs. C'est le test qui permet d'en trouver le plus et c'est à cette étape du codage que le coût d'une erreur est le plus bas à résoudre. Il consiste à vérifier si la classe, fichier, unité comporte des erreurs. On les teste séparément. Lorsque les tests voulus ont été effectués, ils peuvent être testés ensemble.

Nous pourrions avoir 3 fichiers : validation.c, encryption.c. Les tests seraient faits séparément sur les deux premiers fichiers en premier lieu. Lorsqu'on crée une méthode ou une fonction, on peut avoir des paramètres et une valeur de retour. On doit tester ces éléments avec différentes valeurs et regarder si le résultat est celui désiré. Le compilateur et débugeur est d'une aide précieuse à ce niveau des tests. Des logiciels permettent d'automatiser ces tests tels que JUnit. Cette solution permet d'économiser temps et argent.

Le test d'intégration

Ce test valide tous les tests unitaires qui ont été faits indépendamment. Le fichier formulaire.c utilise les deux autres fichiers cités précédemment. On tente alors de déceler les problèmes qui peuvent survenir lorsqu'on combine les fichiers ensemble : les appels de fonctions, problème de droit dans les classes. Il est possible de créer des composants à partir de plusieurs fichiers.

Ce composant peut très bien fonctionner seul. Une fois mis en place avec d'autres, son fonctionnement peut être altéré. Ce test a pour mission de déceler ce genre de problème.

Le test de régression

Lorsque des modifications sont fait au programme, ajout de fonctionnalité, modification de fonctionnalité... des tests de régression devrait être fait. Les tests déjà faits sur le système doivent être refaits afin de savoir si le système fonctionne toujours comme il devrait.

Refaire à chaque fois de nouveau test est coûteux en temps, argent et ressource. Il est possible de cibler les tests devant être nécessaires afin d'évaluer certaines parties du système. Par exemple, un problème pourrait avoir été corrigé, mais sa correction pourrait entraîner d'autres problèmes.

Test d'acceptation

Ce test vérifie le système tel que le désire le client, dans les conditions de fonctionnement établi par lui. Ce test est donc basé sur les exigences et spécification de l'utilisateur. Le système est vérifié dans son ensemble. Ce test n'est pas fait par les développeurs. Des personnes n'ayant eu aucun contact avec le système peuvent être employées pour le tester. Ils peuvent ainsi déceler des anomalies qui auraient passé inaperçues par l'équipe du projet. Le client approuve ou non le système après avoir effectué ce test.

Des critères doivent être définis afin de savoir ce qui permet de spécifier si le système peut être livré ou non. L'implication du client doit absolument se faire à ce niveau du test. Chaque élément testé doit inclure l'exigence testée, les résultats attendus, le résultat obtenu. Ces données sont mises dans un document. Ce document permet de savoir ce qui fonctionne et ce qui ne fonctionne pas.

Migration d’une application Spring Boot 2.2 vers Spring Boot 4.0 : retour d’expérience concret

 En 2019, nous avons développé une application métier basée sur : Java 8 Spring Boot 2.2.7 Gradle 6.6.1 Thymeleaf Boots...