Petits scripts en Perl et Bash pour manipuler ses fichiers

Dimension: px
Commencer à balayer dès la page:

Download "Petits scripts en Perl et Bash pour manipuler ses fichiers"

Transcription

1 Petits scripts en Perl et Bash pour manipuler ses fichiers Pierre-Louis Cayrel, Théophane Lumineau 30 mars 2009 Cet article propose quelques petits trucs en Perl et en Bash pour manipuler des fichiers. Mon idée est la suivante, partir des scripts fait par les mongueurs et autres amateurs de Perl et Bash, les regrouper dans un fichier, les commenter de manière claire et sans blabla inutile, étayer avec d autres sources (commande shell et script). Ceci dans le but d avoir LE pdf sur la gestion des fichiers avec les scripts qui vont bien. Je vais continuer mes recherches sur le net d uniligne pour la gestion des fichiers, créer les miens répondant à certaines problématiques et j enrichirai ce fichier au fur et à mesure. Ce fichier a pour sens d évoluer, tous les lecteurs peuvent m écrire pour apporter leur contributions. Mots clefs : Perl, Bash, manipulation de fichiers. 1

2 Table des matières I Fichiers 5 1 Comment convertir tous ces fichiers.toto en.tata? 5 2 Copie de fichiers 5 3 Ajouter un préfixe aux fichiers traités 5 4 Sauvegarder les originaux dans un répertoire 5 5 Supprime les fichiers temporaires d emacs 5 6 Compte les paragraphes d un fichier 5 7 Imprime les lignes communes aux deux fichiers 5 8 Imprime les lignes communes à 3 fichiers 5 9 Détecte les fichiers texte 6 10 Modifie des dates d accès et de modification du fichier, pour affirmer qu ils datent d un mois dans le futur Ajoute un COMMIT toutes les 500 lignes d un gros fichier SQL d insertion 6 12 Décode et imprime un fichier encodé en base dos2unix 6 14 mac2unix 6 15 Convertit tous les noms de fichiers du répertoire courant en minuscules, et meurt en cas de problème 6 16 Effaceur de fichiers temporaires 6 17 Découper un fichier en blocs de n lignes 6 18 Découper un fichier en blocs de n lignes suite 7 19 Sélectionner une tranche d un fichier texte 7 20 Sélectionner une tranche d un fichier texte suite 7 21 Classer ses fichiers par date 8 22 Remplacer une ligne par une autre (les deux passées en paramètre) dans un fichier : 9 II Contenu Comment supprimer les doublons dans un fichier? 11 2

3 24 Comment convertir un a en un b en ligne de commande dans toto.c? Tris en Perl Trier numériquement une liste La fonction sort La fonction sort Tri avec référence Tris multiples Plus petit et le plus grand des éléments d une liste : Transformer deux mots Remplace machin par bidule Supprime les lignes en doublon Calcule la somme du premier et dernier champ de chaque ligne : Extrait, trie et imprime les mots d un fichier Affiche les lignes du fichier fichier (ou du flux reçu sur l entrée standard) par ordre croissant d occurrence Pour convertir de ISO-Latin-1 vers UTF Pour convertir de UTF-16 vers ISO-Latin Mini-traducteur Affiche le premier paragraphe de la section Author de perl mgrep Supprimer des doublons Supprimer les doublons Calculer un handle de fichier La fonction reduce() Minimum et maximum d une liste Compter le nombre de lignes dans une chaîne La fonction pos() Découpage en tranches 19 III Annexes Extrait l en-tête d un mail Extrait le corps d un mail : 20 3

4 46 Supprime la plupart des commentaires d un source C Trouve le premier UID non utilisé Numérote les lignes d un fichier Conversion de secondes Retrouvez votre adresse IP Tester un compte POP Générer toutes les adresses IP de plusieurs sous-réseaux Générer une liste de nombres Valeurs hexadécimales des nombres de 27 à Générer une bête liste de nombres L idiome substr() = toto Visualisation de la progression Les parenthèses ne font pas les listes Découper un fichier diff (une rustine, quoi) Récupérer ses mails Un (autre) robot de traduction Mesurer son débit avec l aide de Free Fractionner une image Découper des MP3 avec Perl 31 4

5 Première partie Fichiers 1 Comment convertir tous ces fichiers.toto en.tata? 2 Copie de fichiers #!/bin/bash # "bkup" - copie les fichiers spécifiés dans le répertoire ~/Backup # de l utilisateur après avoir vérifié qu il n y a pas de conflits de nom. a=$(date + %Y%m%d%H%M%S ) cp -i $1 ~/Backup/$1.$a chmod +x bkup # pour l exécuter, saisissez simplement./bkup fichier.txt 3 Ajouter un préfixe aux fichiers traités $ perl -i orig_* -pe s/\bfoo\b/toto/g;s/\bbar\b/titi/g fichier1 fichier2 4 Sauvegarder les originaux dans un répertoire $ perl -i orig/*.bak -pe s/\bfoo\b/toto/g;s/\bbar\b/titi/g fichier1 fichier2 5 Supprime les fichiers temporaires d emacs $ find $HOME -name *~ -print0 perl -n0e unlink 6 Compte les paragraphes d un fichier $ perl -n000e END{print "$. paragraphes\n" fich 7 Imprime les lignes communes aux deux fichiers perl -ne print if =~ /10$/ fichier1 fichier2 8 Imprime les lignes communes à 3 fichiers perl -ne print if =~ /21+0$/ fichier1 fichier2 fichier3 5

6 9 Détecte les fichiers texte perl -le {print if -f && -T _ * 10 Modifie des dates d accès et de modification du fichier, pour affirmer qu ils datent d un mois dans le futur. perl -e $X=24*60*60; utime(time(),time() + 30 * fichier 11 Ajoute un COMMIT toutes les 500 lignes d un gros fichier SQL d insertion perl -ple print "COMMIT;" unless $. % 500 fichier.sql 12 Décode et imprime un fichier encodé en base64 (tel que fourni par uuencode -m, par exemple) perl -MMIME::Base64 -pe $_ = decode_base64($_) fichier_base64 13 dos2unix perl -pi -e s/\r\n/\n/g fichier_dos.txt 14 mac2unix perl -w015l12pi.bak fichier_mac.txt 15 Convertit tous les noms de fichiers du répertoire courant en minuscules, et meurt en cas de problème perl -e rename $_, lc or die $! for <*> 16 Effaceur de fichiers temporaires find $HOME -name *~ -print0 perl -n0e unlink 17 Découper un fichier en blocs de n lignes Récemment, un collègue a eu besoin de découper un gros fichier en blocs de lignes (car Excel tronque les fichiers texte CSV qu il importe à 65535, c est embêtant). #!perl -wn BEGIN { $file = "partie00"; if( $. % == 1) { # NOTE: $. commence à 1 close F; # ferme le fichier précédent 6

7 open F, "> $file.csv" or die "Impossible de créer $file.csv: $!"; $file++; # auto-incrément magique print F; 18 Découper un fichier en blocs de n lignes suite Voici le script précédent modifié pour découper un gros fichier en morceaux tenant sur une disquette : #!perl -wn BEGIN { $file = "partie00"; $/ = \1024; # lecture par blocs de 1 Ko $n = 0; unless( $n++ % 1440 ) { # une disquette contient 1440 Ko close F; open F, "> $file.csv" or die "Impossible de créer $file.csv: $!"; $file++; print F; 19 Sélectionner une tranche d un fichier texte Découper un fichier texte en morceaux, c est bien, mais il y a des fois où on voudrait pouvoir simplement ne retenir qu une partie du fichier, ne conserver qu un bloc contenu entre certaines lignes. Il peut y avoir moyen de bricoler avec des outils comme tail(1) et head(1), mais pourquoi perdre du temps à s escaguasser avec ça quand il est si facile de le faire en Perl. $ perl -ne and print long_texte.txt 20 Sélectionner une tranche d un fichier texte suite Dans ce cas-ci, il n affichera que les lignes 18 à 21 du fichier long_texte.txt. Toutefois il serait plus pratique d en faire un script auquel on pourrait passer les lignes à afficher en paramètres. Écrivons donc ce script, que nous nommons splice pour faire référence à la fonction du même nom en Perl, mais qui travaille elle sur les tableaux. #!/usr/bin/perl my($first,$last) = (shift,shift); $.==$first.. $.==$last and print while <> Si on invoque ce script ainsi : $ splice long_texte.txt il affichera les lignes 15 à 20 (incluses) du fichier long_texte.txt. 7

8 C est pas mal, mais on peut faire mieux. Bien mieux. Si on change la manière d indiquer les lignes à afficher, et qu on adopte une syntaxe similaire à celle de cut(1), on peut alors indiquer plusieurs blocs de lignes. #!/usr/bin/perl sub usage { print STDERR "usage: splice LINES [file...]\n" and exit -1 my $lines = shift usage(); = (); for my $block (split,, $lines) { = split -, $block; $l[0]; $l[1] $first[-1]; ($.==$first[$i] ($.==$first[$i+1]&&++$i)).. $.==$last[$i] and print while <> L exemple précédent s écrit maintenant : $ man perl splice NOTES The Perl motto is There s more than one way to do it. Divining how many more is left as an exercise to the reader. Plus intéressant, on peut maintenant indiquer plusieurs blocs de lignes à afficher. Pour illustrer cela, on crée d abord un fichier qui ne contient que ses numéros de lignes : $ pseq 1 20 "line %d" >text ou, pour ceux qui n auraient pas conservé la Perle correspondante : $ perl -le print"line $_"for >text Exécutons maintenant splice en sélectionnant les lignes 8 à 9, 12 et 15 à 17. $ splice 8-9,12,15-17 text line 8 line 9 line 12 line 15 line 16 line 17 Comme on le voit, seules les lignes indiquées sont affichées. Quant à ceux qui voudraient maintenant sélectionner des tranches non plus en fonction des numéros de lignes, mais en fonction du texte (en quelque sorte un mélange des fonctionnalités de splice et de grep(1)), il y a moyen de faire quelque chose, mais c est plus délicat de trouver une manière générique de l exprimer. 21 Classer ses fichiers par date Si vous avez un répertoire mal rangé, une première approche de sa réorganisation peut être de classer les fichiers par date, dans des répertoires judicieusement nommés. $ ls -l -rw-rw-r-- 1 book book :21 bang_eth -rw-rw-r-- 1 book book :54 clash 8

9 -rw-rw-r-- 1 book book :07 clunk -rw-rw-r-- 1 book book :18 crraack -rw-rw-r-- 1 book book :15 kayo -rw-rw-r-- 1 book book :07 pam -rw-rw-r-- 1 book book :10 powie -rw-rw-r-- 1 book book :41 touche -rw-rw-r-- 1 book book :32 uggh -rw-rw-r-- 1 book book :15 zlonk L uniligne suivant va faire l opération pour nous : $ perl -MPOSIX=strftime -MFile::Path -e for(glob"*"){mkpath$d=strftime"%y-%m-%d", localtime((stat)[9]);rename$_,"$d/$_" La fonction strftime() du module POSIX permet d afficher une date en fonction d un patron. mkpath() fournie par File : :Path permet la création des répertoires. Nous obtenons le résultat attendu : $ tree clunk -- pam touche bang_eth -- clash uggh crraack -- kayo -- powie -- zlonk 5 directories, 10 files Sachant que mkpath() se comporte comme mkdir -p (en créant les répertoires intermédiaires si nécessaire), on peut même imaginer des patrons avec plusieurs niveaux de profondeur, comme %Y/%m/%d ou %Y/%U (%U, %V et %W sont trois manières de compter les semaines dans l année). Attention, rename(), tout comme son équivalent C (rename(2)) se contente de renommer le fichier ; il ne saura pas le déplacer physiquement d un système de fichier à un autre si besoin est. Pour faire des copies d un système de fichier à un autre, il faut utiliser File::Copy, qui fournit des fonctions move() et copy() qui fonctionnent comme les commandes mv et cp usuelles. (Mais ceci dépasse le cadre de cet uniligne.) 22 Remplacer une ligne par une autre (les deux passées en paramètre) dans un fichier : #!/bin/sh if [ $# -ne 2 ] # si le nombre de paramètres n est pas 2 9

10 then # affiche l usage echo Usage: $0 ligne1 ligne2 1>&2 echo Ce programme lit l entrée standard, remplace ligne1 par 1>&2 echo ligne2 et écrit le résultat sur la sortie standard 1>&2 exit 1 fi IFS="\n" # la variable IFS (Internal Field Separator) est "ENTER" # (utilisée par la commande read) while read ligne # met dans la variable ligne une ligne de l entrée standard # tant qu on n est pas arrivé a la fin do if [ $ligne = $1 ] # si ligne est égale au premier paramètre then echo $2 # affiche le deuxième paramètre à sa place else echo $ligne # sinon, il affiche la ligne fi done exit 0 # sortie normale (code de retour 0) Pour l utiliser, exécutez (par exemple) : script un deux <fichierentrée>fichiersortie.mk 10

11 Deuxième partie Contenu 23 Comment supprimer les doublons dans un fichier? 24 Comment convertir un a en un b en ligne de commande dans toto.c? [A revoir] sed s a b g toto.c; 25 Tris en = qw( a z e r t y = vaut maintenant (a,e,r,t,y,z) 25.1 Trier numériquement une liste sub par_num { return $a <=> = sort 25.2 La fonction sort La fonction sort accepte aussi directement un bloc anonyme à la place du nom de la fonction, qui jouera le rôle de la fonction de comparaison = sort { $b <=> # ici, on trie en ordre numérique inversé # (remarquez l ordre de $a et $b) Le bloc anonyme étant totalement arbitraire, nous pouvons donc réaliser n importe quel tri très facilement grâce à ce modèle. Voici par exemple un tri sur la date de modification des fichiers = sort { -M $a <=> -M 25.3 La fonction sort = # tri = sort { $a cmp # m^eme chose, explicite 25.4 Tri avec référence Comme la liste à trier peut contenir n importe quelles données, y compris des références, rien ne nous empêche d interpréter les valeurs comme nous le voulons = sort { $a->[0] <=> 11

12 25.5 Tris multiples out = sort { $a =~ y/e// <=> $b =~ y/e// $a cmp 25.6 Plus petit et le plus grand des éléments d une liste : my ($min, $max) = -1 ou my ($min,$max) = ($tab[0]) x 2; # init. sinon warnings foreach ) { $min = $_ if $_ < $min; $max = $_ if $_ > $max; 25.7 Transformer deux mots Supposons que vous traduisez un document en anglais, et que vous voulez transformer tous les foo en toto et tous les bar en titi dans les exemples. Une fois que vous avez la nouvelle version, l ancienne n a plus d intérêt pour vous. $ perl -i -pe s/\bfoo\b/toto/g;s/\bbar\b/titi/g monfichier 26 Remplace machin par bidule perl -pe s/\bmachin\b/bidule/g fichier 27 Supprime les lignes en doublon perl -ne print unless $doublon{$_++ fichier 28 Calcule la somme du premier et dernier champ de chaque ligne : perl -lane print $F[0] + $F[-1] fichier 29 Extrait, trie et imprime les mots d un fichier perl -0nal012e print for sort keys %a 30 Affiche les lignes du fichier fichier (ou du flux reçu sur l entrée standard) par ordre croissant d occurrence perl -ne $c{$_++;end{print sort { $c{$a<=>$c{$b keys%c fichier 12

13 31 Pour convertir de ISO-Latin-1 vers UTF-8 perl -MUnicode::String=latin1 -ne print latin1($_)->utf8 fichier.txt > nouveau.txt 32 Pour convertir de UTF-16 vers ISO-Latin-1 $ perl -MUnicode::String=utf16 -ne print utf16($_)->latin1 fichier.txt > nouveau.txt 33 Mini-traducteur #!/usr/bin/perl -w use strict; use WWW::Babelfish; my $fish = new WWW::Babelfish( agent => Translate/0.1 ); die ("Babelfish indisponible\n") unless defined($fish); my $prompt = "\n? "; print $prompt; while (<>) { print $fish->translate( source => English, destination => French, text => $_, #delimiter => "\n\n", ), $prompt; 34 Affiche le premier paragraphe de la section Author de perl $ man perl col -b perl -ne /AUTHOR/../^$/ and print AUTHOR Larry Wall with the help of oodles of other folks. En suivant la même route que pour splice, il est simple de transformer cet uniligne en petit script mgrep (comme multi-grep : #!/usr/bin/perl my($first,$last) = (shift,shift); /$first/../$last/ and print while <> L exemple précédent s écrit alors : $ man perl col -b sgrep AUTHOR ^$ AUTHOR Larry Wall with the help of oodles of other folks. 13

14 35 mgrep L étape suivante, accepter plusieurs expressions régulières, est celle qu il est plus difficile de rendre aussi élégante que pour splice. En effet, dans l idéal nous voudrions pouvoir accepter n importe quelle expression régulière, mais certains caractères sont nécessaires pour la syntaxe de délimitation de ces expressions à passer en argument à mgrep (en reprenant celle de splice, on utilise le tiret pour délimiter les expressions d un couple et la virgule pour délimiter les couples). Ces caractères ne pourront donc pas être utilisés au sein des expressions régulières, à moins de vouloir coder un mécanisme d échappement. Nous nous en tenons à la syntaxe de splice, en connaissant et acceptant ses limitations. #!/usr/bin/perl use strict; sub usage { print STDERR "usage: mgrep PATTERNS [file...]\n" and exit -1 my $patterns = shift usage(); = (); for my $block (split,, $patterns) { = split -, $block; $l[0]; $l[1] $first[-1]; (/$first[$i]/ (/$first[$i+1]/&&++$i)).. /$last[$i]/ and print while <> Un exemple d exécution de mgrep ressemblera à ceci : $ man perl col -b mgrep AUTHOR- ^$,motto,virtues-why AUTHOR Larry Wall with the help of oodles of other folks. The Perl motto is "There s more than one way to do it." The three principal virtues of a programmer are Laziness, Impatience, and Hubris. See the Camel Book for why. Les arguments signifient : afficher la ligne qui contient AUTHOR et le paragraphe qui suit (paramètre AUTHOR- ^$ ), afficher la ligne qui contient motto (paramètre motto), afficher le texte de la ligne qui contient virtues à la ligne qui contient why (paramètre virtues-why). 36 Supprimer des doublons Le webmestre de http ://www.fatrazie.com/ possède un fichier avec près de noms de villes françaises avec leurs coordonnées géographiques et leurs codes postaux. Ce fichier a été lui-même assemblé laborieusement à partir de diverses sources et à l aide de programmes Perl (dont le module WWW : :Gazetteer : :HeavensAbove). Le fichier courant contient une ville par ligne, avec dans l ordre les champs nom, latitude, longitude, élévation et code postal, séparés par des tabulations. En voici un extrait : Montluel Nièvroz Pizay Pizay Thil Sainte-Croix Sainte-Croix

15 Sainte-Croix La Léchere La Léchère La Léchère Léchère Belleydoux Charix Pour nettoyer son fichier, il souhaite maintenant supprimer les doublons de villes ayant le même nom et le même code postal (les coordonnées géographiques sont souvent très proches, voire identiques). L objectif de cette perle n est pas seulement de vous montrer l uniligne qui a fait tout le travail, mais surtout de vous apprendre le réflexe presque pavlovien de tout perleur accompli : quand vous entendez le mot unique, vous devez immédiatement penser table de hachage. Ensuite, tout le problème est de construire la bonne clé pour ce hachage. Dans le cas qui nous occupe, c est tout simple : on considère que deux villes sont identiques si elles ont le même nom et le même code postal. Notre clé sera donc la simple concaténation de ces deux champs. $ perl -lnaf\\t -e print unless $c{$f[0].$f[-1]++ FranceA-Z.txt > FranceA-unique.txt 37 Supprimer les doublons 2 Attention quand vous utilisez des clés composites : contrairement au cas ci-dessus, il est en général préférable d utiliser un séparateur spécifique entre ces clés. Cela permet d éviter des collisions fâcheuses, par exemple avec des cas où une clé serait la concaténation de ab, a et l autre celle de a et ba. Le problème ne se posait pas dans notre cas, car il n existe pas de ville dont le nom se termine par un nombre dans notre fichier. Pour nous simplifier la vie, nous allons utiliser une technique remontant à Perl 4 : l émulation de tableaux multi-dimensionnels (à l époque, les références n existaient pas et c était la seule manière de faire des tableaux multi-dimensionnels). Cela consiste à séparer les différents éléments de la clé par des virgules. Notre uniligne deviendrait (on a changé le. en,) : $ perl -lnaf\\t -e print unless $c{$f[0],$f[-1]++ FranceA-Z.txt > FranceA-unique.txt Perl remplace alors $c{$f[0],$f[-1] par $c{join $;, $F[0], $F[-1], comme expliqué dans perlvar(1) à la section parlant de la variable $;. Par défaut, $; est le caractère \034, qui a tout de m^eme peu de chances de se retrouver dans vos données. 38 Calculer un handle de fichier J ai récemment dû faire le tri entre les bonnes lignes et les mauvaises lignes d un fichier. Le fichier en question était la sortie de comm(1). Il s agissait de vérifier que toutes les lignes d un fichier A étaient présentes dans le fichier B (A et B étant triés). On utilise donc comm -2 A B pour obtenir les lignes de A absentes de B et les lignes de A présentes dans B. Ces dernières sont précédées d une tabulation puisque comm(1) présente les résultats en colonnes. Pour distribuer les lignes dans les fichier A_ok et A_err, on utilise l uniligne suivant : comm -2 A B perl -nle print{s/^\t//?stdout:stderr$_ > A_ok 2> A_err Explication : on utilise l opérateur ternaire? : pour choisir vers quel filehandle écrire la ligne courante : la sortie standard ou la sortie d erreur. Le choix est conditionné par la présence d une tabulation en début 15

16 de ligne, que l on enlève au passage (s/^\t//). Le filehandle donné à print doit être soit un mot simple (bareword), soit une variable scalaire (sinon l analyseur syntaxique de Perl n arrive pas à s y retrouver). Toute chose plus compliquée que cela (comme un élément de tableau ou une expression) doit être placée entre accolades : print { expression qui renvoie un filehandle... Ensuite, on utilise le shell pour rediriger la sortie standard et la sortie d erreur vers deux fichiers différents. 39 La fonction reduce() La fonction reduce() est une notion qui vient de la programmation fonctionnelle, comme map ou grep. L idée est assez simple : soit une fonction f() prenant deux paramètres, il s agit d appliquer cette fonction à une liste de paramètres. On réduit la liste en appliquant successivement la fonction f() aux deux premiers éléments de la liste et en les remplaçant par le résultat. On continue jusqu à ce que la liste ne contienne plus qu un seul élément, le résultat final. Un exemple concret est celui de la somme, qui généralise l addition (opération appliquée à deux opérandes) à une liste de plusieurs opérandes. Dans le cas général, la réduction de la liste (a, b, c, d, e) par la fonction f() serait f( f( f( f( a, b ), c ), d ), e ). Perl ne dispose pas d une fonction reduce() en standard (contrairement à Python, par exemple). Heureusement, le module List : :Util en propose une, qui s utilise en passant un bloc de code en premier paramètre, exactement comme la fonction standard sort(). List : :Util fait partie de la distribution Scalar-List-Utils, qui contient également Scalar : :Util. Ces deux modules font partie de la distribution standard de Perl depuis la version Comme List : :Util fournit déjà une fonction sum(), nous allons écrire une fonction mul() qui calcule le produit des éléments d une liste : use List::Util qw( reduce ); sub mul { reduce { $a * Tout l intérêt de la fonction reduce() de List : :Util est de pouvoir utiliser les variables globales standard aetb, comme avec sort(). En effet, on peut sinon écrire très facilement l équivalent du code précédent : sub mul { my $res = shift; $res = $res * $_ $res Ceci est bien sûr valable quelle que soit la fonction f() que l on souhaite réduire. Il suffit d écrire $res = f( $res, $_ ) dans l exemple précédent. Attention tout de même aux effets de bords, en particulier avec l utilisation de shift(), qui enlève le premier élément de la liste. Dans un contexte plus large qu une simple fonction de quelques lignes où on il faut faire attention à ne pas modifier le tableau en question (ou au moins savoir qu on le fait). Ainsi, à la place de : my $res = # ATTENTION, modifie la liste! $res = f( $res, $_ ) on préfèrera par exemple écrire : my $res = $liste[0]; $res = f( $res, $_ ) 1.. $#liste ]; 16

17 ou toute autre version adaptée à la fonction f() et à l utilisation que l on fait du Pour information, le module List : :Util fournit également les fonctions suivantes : * min LISTE et max LISTE Le minimum et le maximum d une liste de nombres. * minstr LISTE et maxstr LISTE Le minimum et le maximum d une liste de chaînes de caractères. * first BLOC LISTE Le premier élément de la liste pour lequel le bloc renvoie une valeur vraie. * sum LISTE La somme des éléments de la liste, l exemple classique. * shuffle LISTE Renvoie les éléments de la liste dans un ordre aléatoire. 40 Minimum et maximum d une liste Perl ne dispose pas non plus des fonctions min() et max() pour obtenir le minimum et le maximum d une liste. Sans rentrer dans les détails, on peut dire que c est probablement parce qu il existe beaucoup de manières de comparer plusieurs valeurs (en tant que nombres ou en tant que chaînes de caractères, en tenant compte ou non de la localisation, etc.). De plus, de telles fonctions sont finalement assez peu utilisées et en général courtes à coder (comme nous l avons vu avec reduce()) ; il n a probablement pas été jugé utile de gaspiller un mot-clé pour elles. C est pourquoi le jour où on a besoin du maximum ou du minimum d une liste (et pas de toute la liste triée, auquel cas on utilise sort(), bien sûr), il va nous falloir écrire la fonction nous-mêmes. Dans les exemples qui suivent, nous prendrons pour simplifier le maximum numérique d un tableau, mais c est évidemment la même chose quelle que soit la liste à traiter et la fonction de comparaison. Commençons par la fausse bonne idée : sub max { (sort { $a <=> # MAUVAIS Le résultat est juste : on prend le dernier élément d une liste triée dans l ordre croissant, c est-à-dire le maximum. C est facile à écrire, ça utilise un idiome Perl (indice négatif d une liste), mais c est très mauvais en performance : en effet, on trie la liste toute entière pour n en garder qu un seul élément. L algorithme de tri utilisé par Perl dépend des versions (il y a eu pas mal d ajouts pour Perl 5.8, en particulier la possibilité avec la pragma sort de choisir l algorithme de tri utilisé), mais il donne au mieux un résultat en O(n log(n)). Pour obtenir le maximum d une liste, on va plutôt utiliser la méthode classique, qui consiste à décréter que le maximum est le premier élément de la liste, puis à parcourir la liste pour mettre à jour sa valeur à chaque fois qu on rencontre un élément plus grand que le maximum en cours. sub max { my $max = shift; $_ > $max and $max = $_ $max Cette méthode est en O(n), c est à dire que le nombre d opérations est proportionnel au nombre d éléments de la liste. On ne peut pas faire mieux algorithmiquement. Plus le nombre n d éléments de la liste croît, meilleur sera cet algorithme par rapport au précédent. Nous avons trouvé le meilleur algorithme, est-ce à dire qu il n est pas possible de faire mieux? Bien sûr nous pouvons mieux faire, mais le gain obtenu ne pourra être que de l ordre d un facteur multiplicatif. Ainsi, le module List : :Util vu précédemment fournit une fonction max() écrite en C. Sur mon système, celle-ci est environ 3 fois plus rapide que la version Perl présentée ci-dessus. Certes, trouver le maximum d une liste est d autant plus long que la liste est grande, mais la fonction max() de List : :Util reste toujours à peu près 3 fois plus rapide que la version précédente sur une liste de taille donnée. À propos de List : :Util, nous pourrions nous servir de la version Perl de reduce() présentée dans la perle précédente. La fonction qui donne le maximum de deux éléments, tout le monde la connaît : qui n a pas vu les sempiternelles macros min et max en C? #define max(a,b) ((a)>(b)?(a):(b)) 17

18 On pourrait donc écrire une version un peu différente de max(), comme ceci : sub max { my $max = shift; $max = $_ > $max? $_ : $max $max Il va falloir comparer les temps d exécution de ces fonctions pour estimer les performances des quatre versions de max() dont nous disposons désormais. Nous pouvons d ores et déjà faire quelques prédictions : Les versions utilisant l algorithme en O(n) finiront toujours par être plus rapides que la version en O(n log(n)). La version C de List : :Util sera plus rapide que les versions Perl. La version Perl utilisant la formule $_ > $max and $max = $_ sera plus rapide que celle utilisant $max = $_ > $max? $_ : $max. En effet, la première formule fait une comparaison et éventuellement une affection (une fois le maximum trouvé, plus aucune affectation ne sera faite), tandis que la seconde fait à chaque fois une comparaison et une affection, ce qui est nécessairement plus coûteux. 41 Compter le nombre de lignes dans une chaîne Un uniligne pour compter le nombre de lignes dans une chaîne : $nr++ while "un\ndeux\ntrois\n" =~ m/\g.*?\n/gc; A chaque itération, on part de la fin du match précédent grâce à l ancre \G, puis on saute un minimum de caractères grâce à.*? avant de chercher un saut de ligne. On incrémente alors $nr. On sort de la boucle quand on ne trouve plus de match. Bien sûr, en Perl, on peut procéder de multiples autres manières pour arriver au même résultat : grep { $nr++ if $_ eq \n split, "un\ndeux\ntrois\n"; $nr = grep { $_ eq \n split, "un\ndeux\ntrois\n"; $s = "un\ndeux\ntrois\n" $nr = grep { substr($s, $_, 1) eq \n for 0..length($s)-1 42 La fonction pos() En dehors du match par une regex, la position courante dans une chaîne est accessible par la fonction pos(). Comme beaucoup de fonctions Perl, elle prend la variable $_ comme argument par défaut. Illustrons par un exemple : $s = "Les mongueurs de Perl connaissent bien le langage Perl"; # Affiche 21, la position après la première occurrence de "Perl" $s =~ m/perl/gc ; print pos($s),"\n" ; # Affiche toujours 21 car pas de match mais pas de remise à zéro # à cause de la présence de l option /c $s =~ m/python/gc ; print pos($s),"\n"; # Affiche 54, la position après la seconde occurrence de "Perl" $s =~ m/perl/gc ; print pos($s),"\n" ; # affiche "54\n" 18

19 # Affiche 0. Pas de match et remise à zéro car absence de l option /c. # pos($s) retourne undef qui, utilisé en contexte entier par # l addition du 0, est converti en 0. $s =~ m/python/g ; print pos($s)+0, "\n"; Dans la suite nous nous passerons de =~, car nous effectuerons la recherche dans $_. Illustrons l idiome m/\g.../gc par l écriture d un analyseur naïf de fichier de configuration qui permet de remplir le hash %config avec des couples clé/valeur de configuration. Ainsi un fichier.myconfig contenant : a = toto b = titi c = tutu reviendra à initialiser %config comme suit : $config{ a = $config{ b = $config{ c = "toto"; "titi"; "tutu"; 43 Découpage en tranches Puisque l objet de ce collier de perles est de présenter des idiomes, rappellons que nous aurions pu exprimer la même chose en terme de tranches de hash a, b, c = ( toto, titi, tutu ) que nous pouvons aussi écrire en utilisant qw() pour créer les listes qw( a b c ) = qw( toto titi tutu ); Voici le script de lecture du fichier de configuration : my %config; # hash qui contiendra la configuration open I, ".myconfig" or die $!; while(<i>) { s/[\s;]+//g; # supprime blancs et éventuels points virgules $config{$1 = $2 if m/\g(\w+)=(\w+)/gc; last if m/\g$/gc; # équivalent à : last if pos == length Troisième partie Annexes 44 Extrait l en-tête d un mail perl -pe /^$/ && exit mail.txt 19

20 45 Extrait le corps d un mail : perl -ne /^$/...do{print;0 mail.txt 46 Supprime la plupart des commentaires d un source C perl pe s{/\*.*?\*/{gs source.c 47 Trouve le premier UID non utilisé perl -le $i++ while getpwuid($i); print $i 48 Numérote les lignes d un fichier perl -pe $_ = "$. $_" fichier 49 Conversion de secondes Vous avez une durée exprimée en secondes, mais vous voudriez l afficher en jours, heures, minutes, secondes. $ perl -e $s=shift;print join" ",map{$i=int($s/$_->[0]);$s-=$i*$_->[0];chop$_->[1] if$i==1;$i?($i,$_->[1]):()[86400,"days"],[3600,"hours"], [60,"minutes"],[1,"seconds"] Code déplié et commenté : $s = shift; print join " ", map { # concatène le résultat avec des espaces $i = int( $s / $_->[0] ); # combien de cette unité? $s -= $i * $_->[0]; # secondes restantes chop $_->[1] if $i == 1; # supprime le s final au singulier $i? ( $i, $_->[1] ) : () # retourne les éléments à afficher # la liste des correspondances secondes/unité [ 86400, "jours" ], [ 3600, "heures" ], [ 60, "minutes" ], [ 1, "secondes"] 50 Retrouvez votre adresse IP $ perl -MLWP::Simple -le print get("http://whatismyip.com/")=~/ip\s+is ([\d.]+)/i 51 Tester un compte POP #!/usr/bin/perl use Net::POP3; 20

Les tableaux. Chapitre 3

Les tableaux. Chapitre 3 Chapitre 3 Les tableaux 3.1 Généralités Les tableaux en PERL sont identifiés par le symbole @ à l image du $ pour les variables. Comme ces dernières, les tableaux ne sont pas typés et un même tableau peut

Plus en détail

Ligne de commande Linux avancée et scriptage bash (Linux 201)

Ligne de commande Linux avancée et scriptage bash (Linux 201) Ligne de commande Linux avancée et scriptage bash (Linux 201) laurent.duchesne@calculquebec.ca maxime.boissonneault@calculquebec.ca Université Laval - Septembre 2014 1 2 Se connecter à Colosse ssh colosse.calculquebec.ca

Plus en détail

Unix/Linux III. 1 re année DUT. Université Marne La vallée

Unix/Linux III. 1 re année DUT. Université Marne La vallée Unix/Linux III 1 re année DUT Université Marne La vallée 1 Recherche d un fichier find 2 3 4 5 6 La commande find permet de retrouver des fichiers à partir de certains critères. Syntaxe : find

Plus en détail

Quelques éléments de compilation en C et makefiles

Quelques éléments de compilation en C et makefiles Quelques éléments de compilation en C et makefiles Guillaume Feuillade 1 Compiler un programme C Le principe de la compilation consiste à passer d un ensemble de fichiers de code à un programme exécutable

Plus en détail

Formation Unix/Linux (6) Le Shell: programmation et écriture de scripts

Formation Unix/Linux (6) Le Shell: programmation et écriture de scripts Formation Unix/Linux (6) Le Shell: programmation et écriture de scripts Olivier BOEBION Mars 2004 1 Les expressions conditionnelles et les structures de contrôle 1.1 La commande test La commande interne

Plus en détail

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte Projet d informatique M1BI : Compression et décompression de texte Le but de ce projet est de coder un programme réalisant de la compression et décompression de texte. On se proposera de coder deux algorithmes

Plus en détail

Sujet Projets 2 nd Semestre

Sujet Projets 2 nd Semestre Sujet Projets 2 nd Semestre Seuls les appels systèmes vus en cours sont autorisés. L usage d autres fonctions doit impérativement être validé par l enseignant. La date d ouverture pour l assignation de

Plus en détail

Manuel d utilisation de FormXL Pro

Manuel d utilisation de FormXL Pro Manuel d utilisation de FormXL Pro Gaëtan Mourmant & Quoc Pham Contact@polykromy.com www.xlerateur.com FormXL Pro- Manuel d utilisation Page 1 Table des matières Introduction... 3 Liste des fonctionnalités...

Plus en détail

Laboratoires de système d exploitation. Introduction à PERL. par Louis SWINNEN

Laboratoires de système d exploitation. Introduction à PERL. par Louis SWINNEN Département Informatique Laboratoires de système d exploitation Introduction à PERL par Louis SWINNEN Ce document est disponible sous licence Creative Commons indiquant qu il peut être reproduit, distribué

Plus en détail

Informatique TP4 : Manipulations de fichiers Manipulations de chaînes et de tableaux CPP 1A

Informatique TP4 : Manipulations de fichiers Manipulations de chaînes et de tableaux CPP 1A Informatique TP4 : Manipulations de fichiers Manipulations de chaînes et de tableaux CPP 1A Djamel Aouane, Frederic Devernay, Matthieu Moy Mars - avril 2015 1 Manipulations de fichiers Pour organiser des

Plus en détail

Algorithmie ISI301 TP 1 : Python et premiers algorithmes

Algorithmie ISI301 TP 1 : Python et premiers algorithmes Algorithmie ISI301 TP 1 : Python et premiers algorithmes 1 Python : apprentissage Pour avoir une vision plus large des différentes possibilités du langage Python, nous ne pouvons que vous conseiller d

Plus en détail

Introduction 2 Environnement de travail... 2 Groupement de commandes... 2 Caractères spéciaux... 2

Introduction 2 Environnement de travail... 2 Groupement de commandes... 2 Caractères spéciaux... 2 TP OS n 5 2012 tv - v.1.0 Sommaire Introduction 2 Environnement de travail....................................... 2 Groupement de commandes..................................... 2 Caractères

Plus en détail

Introduction à l algorithmique et à la programmation 2013-2014. Cyril Nicaud Cyril.Nicaud@univ-mlv.fr. Cours 1 / 5

Introduction à l algorithmique et à la programmation 2013-2014. Cyril Nicaud Cyril.Nicaud@univ-mlv.fr. Cours 1 / 5 Introduction à l algorithmique et à la programmation IUT 1ère année 2013-2014 Cyril Nicaud Cyril.Nicaud@univ-mlv.fr Cours 1 / 5 Déroulement du cours Organisation : 5 séances de 2h de cours 10 séances de

Plus en détail

Encryptions, compression et partitionnement des données

Encryptions, compression et partitionnement des données Encryptions, compression et partitionnement des données Version 1.0 Grégory CASANOVA 2 Compression, encryption et partitionnement des données Sommaire 1 Introduction... 3 2 Encryption transparente des

Plus en détail

TD2-1 : Application client-serveur V2.3.0

TD2-1 : Application client-serveur V2.3.0 TD2-1 : Application client-serveur V2.3.0 Cette œuvre est mise à disposition selon les termes de la licence Creative Commons Attribution Pas d'utilisation Commerciale Partage à l'identique 3.0 non transposé.

Plus en détail

TD1 : Scripts bash. I. Courrier gagnant. II. Opacification de texte. Rappels

TD1 : Scripts bash. I. Courrier gagnant. II. Opacification de texte. Rappels TD1 : Scripts bash I. Courrier gagnant 1) Écrire un script couga.sh qui lit au clavier un nom, prénom, numéro de rue, nom de la rue, code postal et ville, puis affiche sur la sortie standard l adresse

Plus en détail

Commandes et scripts Bash. 1 Commandes de gestion des fichiers et répertoires

Commandes et scripts Bash. 1 Commandes de gestion des fichiers et répertoires Commandes et scripts Bash Seules certaines options sont indiquées. Pour plus de détails voir les pages de manuel (cf commande man). Si une commande est indiquée comme étant interne, cela signifie qu elle

Plus en détail

Programmation en Python - Cours 2 : Premiers programmes

Programmation en Python - Cours 2 : Premiers programmes Programmation en Python - Cours 2 : Premiers programmes 2013/2014 Diverses utilisations de python Utilisation en mode interactif Ecriture d un programme python Saisie de données par l utilisateur : input(),

Plus en détail

Fiche Technique. Présentation du problème. MAJ le 11/05/2011

Fiche Technique. Présentation du problème. MAJ le 11/05/2011 MAJ le 11/05/2011 Présentation du problème Généralement on constate que tous les fournisseurs d'accès à Internet ont une solution pour transférer les contacts de leur messagerie. Il s'agit en général de

Plus en détail

Cours d Analyse, Algorithmique Elements de programmation

Cours d Analyse, Algorithmique Elements de programmation 1 de 33 Cours d Analyse, Algorithmique Elements de programmation Florent Hivert Mél : Florent.Hivert@lri.fr Adresse universelle : http://www.lri.fr/ hivert 2 de 33 Données et instructions Un programme

Plus en détail

Cours HTML/PHP. Cours HTML/PHP. E.Coquery. emmanuel.coquery@liris.cnrs.fr

Cours HTML/PHP. Cours HTML/PHP. E.Coquery. emmanuel.coquery@liris.cnrs.fr Cours HTML/PHP E.Coquery emmanuel.coquery@liris.cnrs.fr Pages Web Pages Web statiques Principe de fonctionnement : L utilisateur demande l accès à une page Web depuis son navigateur. Adresse tapée, clic

Plus en détail

Fiche Technique. Présentation du problème. Exemple. MAJ le 16/01/2011

Fiche Technique. Présentation du problème. Exemple. MAJ le 16/01/2011 MAJ le 16/01/2011 Présentation du problème Vous avez créé un fichier sous Excel qui en fait est une table d une base de données qui pourraient être intégrée sans problème à Access. Le problème consiste

Plus en détail

I Open Résa. Sommaire :

I Open Résa. Sommaire : I Open Résa Sommaire : I Open Résa... 1 Définition :... 2 Identification... 3 Création d un nouveau dossier :... 8 Première méthode :... 10 Seconde méthode :... 10 Ajout d éléments à la proposition :...

Plus en détail

Informatique TP1 : Découverte de Python CPP 1A

Informatique TP1 : Découverte de Python CPP 1A Informatique TP1 : Découverte de Python CPP 1A Romain Casati, Wafa Johal, Frederic Devernay, Matthieu Moy Avril - juin 2014 1 Découverte de l IDE : IDLE IDLE est un environnement de développement (Integrated

Plus en détail

Présentation du langage et premières fonctions

Présentation du langage et premières fonctions 1 Présentation de l interface logicielle Si les langages de haut niveau sont nombreux, nous allons travaillé cette année avec le langage Python, un langage de programmation très en vue sur internet en

Plus en détail

1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus :

1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus : 1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus : La procédure d installation démarre. La fenêtre suivante vous indique

Plus en détail

La Clé informatique. Formation Access XP Aide-mémoire

La Clé informatique. Formation Access XP Aide-mémoire La Clé informatique Formation Access XP Aide-mémoire Septembre 2003 Définitions de termes Base de données : Se compare à un énorme classeur ayant plusieurs tiroirs où chacun d eux contient des informations

Plus en détail

Procédures et fonctions

Procédures et fonctions Chapitre 5 Procédures et fonctions 5.1 Introduction Considérons le programme suivant, dont le but est d inverser les éléments d un tableau : public class InversionTableau1 { int t[]= {8, 2, 1, 23; Terminal.ecrireStringln("Tableau

Plus en détail

MO-Call pour les Ordinateurs. Guide de l utilisateur

MO-Call pour les Ordinateurs. Guide de l utilisateur MO-Call pour les Ordinateurs Guide de l utilisateur Sommaire MO-CALL POUR ORDINATEURS...1 GUIDE DE L UTILISATEUR...1 SOMMAIRE...2 BIENVENUE CHEZ MO-CALL...4 MISE EN ROUTE...5 CONNEXION...5 APPELS...7 COMPOSITION

Plus en détail

Envoyer un courrier électronique et autres fonctions associées

Envoyer un courrier électronique et autres fonctions associées 19 février 2013 p 1 Envoyer un courrier électronique et autres fonctions associées Ce tutoriel vient compléter celui présenté le 5 février 2013, portant sur les généralités du courrier électronique. Nous

Plus en détail

Initiation à la Programmation en Logique avec SISCtus Prolog

Initiation à la Programmation en Logique avec SISCtus Prolog Initiation à la Programmation en Logique avec SISCtus Prolog Identificateurs Ils sont représentés par une suite de caractères alphanumériques commençant par une lettre minuscule (les lettres accentuées

Plus en détail

TP : commande awk. D'après le cours en ligne de Isabelle Vollant http://www.shellunix.com/awk.html

TP : commande awk. D'après le cours en ligne de Isabelle Vollant http://www.shellunix.com/awk.html TP : commande awk D'après le cours en ligne de Isabelle Vollant http://www.shellunix.com/awk.html Nous reprenons dans ce TP une grande partie du cours de Isabelle Vollant en simplifiant quelques informations.

Plus en détail

Pages Web statiques. LIF4 - Initiation aux Bases de données : PHP. Pages Web dynamiques. Illustration. Illustration

Pages Web statiques. LIF4 - Initiation aux Bases de données : PHP. Pages Web dynamiques. Illustration. Illustration statiques LIF4 - Initiation aux Bases de données : E.Coquery emmanuel.coquery@liris.cnrs.fr http ://liris.cnrs.fr/ ecoquery Principe de fonctionnement : L utilisateur demande l accès à une page Web depuis

Plus en détail

Qu est-ce qu une boîte mail

Qu est-ce qu une boîte mail Qu est-ce qu une boîte mail Sur Internet, la messagerie électronique (ou e-mail en anglais) demeure l application la plus utilisée. La messagerie permet à un utilisateur d envoyer des messages à d autres

Plus en détail

Portail des communes Guide Référent ville

Portail des communes Guide Référent ville Portail des communes Guide Référent ville Services aux communes Introduction Vous êtes Référent pour votre commune et venez de recevoir vos identifiants de connexion à l ENT école. Ce document va vous

Plus en détail

ELSA LOGICIEL AIDES POUR UNE INSTALLATION RÉUSSIE. p.2. 1) À l installation. p.2. 2) Conditions impératives de bon fonctionnement DU LOGICIEL. p.

ELSA LOGICIEL AIDES POUR UNE INSTALLATION RÉUSSIE. p.2. 1) À l installation. p.2. 2) Conditions impératives de bon fonctionnement DU LOGICIEL. p. LOGICIEL ELSA AIDES POUR UNE INSTALLATION RÉUSSIE 1) À l installation 2) Conditions impératives de bon fonctionnement DU LOGICIEL 3) Transfert des inscrits 4) Problèmes après l installation en réseau p.2

Plus en détail

TP JAVASCRIPT OMI4 TP5 SRC1 2011-2012

TP JAVASCRIPT OMI4 TP5 SRC1 2011-2012 TP JAVASCRIPT OMI4 TP5 SRC1 2011-2012 FORMULAIRE DE CONTACT POUR PORTFOLIO PRINCIPE GENERAL Nous souhaitons réaliser un formulaire de contact comprenant les champs suivants : NOM PRENOM ADRESSE MAIL MESSAGE

Plus en détail

GEOLOCALISATION DES PRODUITS PANORAMA DES ENVIRONS

GEOLOCALISATION DES PRODUITS PANORAMA DES ENVIRONS GEOLOCALISATION DES PRODUITS PANORAMA DES ENVIRONS Cette extension du programme «VisualQie Entreprise» vous permet des visualisations graphiques immédiates de la situation géographique de tous vos produits

Plus en détail

II. EXCEL/QUERY ET SQL

II. EXCEL/QUERY ET SQL I. AU TRAVAIL, SQL! 1. Qu est-ce que SQL?... 19 2. SQL est un indépendant... 19 3. Comment est structuré le SQL?... 20 4. Base, table et champ... 21 5. Quelle est la syntaxe générale des instructions SQL?...

Plus en détail

CREER UNE BASE DE DONNEES ACCESS AVEC DAO (étape par étape)

CREER UNE BASE DE DONNEES ACCESS AVEC DAO (étape par étape) CREER UNE BASE DE DONNEES ACCESS AVEC DAO (étape par étape) NIVEAU : PREMIERE RENCONTRE AVEC VB INITIES/EXPERIMENTES Pré requis pour comprendre ce tutorial : - Connaître les principales commandes de VB

Plus en détail

Convertisseur de monnaies

Convertisseur de monnaies Convertisseur de monnaies La logique algorithmique en première STG Propriétés Intitulé long Formation concernée Matière Notions Présentation Pré-requis Outils Mots-clés Auteur(es) Version 1.0 Description

Plus en détail

Envoyez de vraies cartes postales personnalisées

Envoyez de vraies cartes postales personnalisées La Poste, http://www.laposte.fr/, aime les nouvelles technologies et offre de plus en plus de nouveaux services en ligne afin de faciliter les démarches de ses clients. C est ainsi que la lettre recommandée

Plus en détail

PARTAGER UN ANNUAIRE COLLECTIF DE SIGNETS AVEC DEL.ICIO.US

PARTAGER UN ANNUAIRE COLLECTIF DE SIGNETS AVEC DEL.ICIO.US PARTAGER UN ANNUAIRE COLLECTIF DE SIGNETS AVEC DEL.ICIO.US Introduction Pourquoi utiliser DEL.ICIO.US? Cet outil permet à plusieurs personnes de partager la même liste de sites favoris et ce sur n importe

Plus en détail

Introduction à la Programmation 1

Introduction à la Programmation 1 Introduction à la Programmation 1 Séance de cours/td Université Paris-Diderot Objectifs: Découverte du type String. Comprendre qu il y a des types différents. Maîtriser les expressions booléennes dans

Plus en détail

Sommaire CONNEXION WEBMAIL... 2 1. Comment se connecter au Webmail?... 2

Sommaire CONNEXION WEBMAIL... 2 1. Comment se connecter au Webmail?... 2 Sommaire CONNEXION WEBMAIL... 2 1. Comment se connecter au Webmail?... 2 LE COURRIER... 4 CREER UN NOUVEAU MESSAGE... 4 1. Comment envoyer un mail?... 4 2. Envoi avec une pièce jointe?... 7 REPONDRE A

Plus en détail

Bases de programmation. Cours 5. Structurer les données

Bases de programmation. Cours 5. Structurer les données Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et

Plus en détail

PG208, Projet n 3 : Serveur HTTP évolué

PG208, Projet n 3 : Serveur HTTP évolué PG208, Projet n 3 : Serveur HTTP évolué Bertrand LE GAL, Serge BOUTER et Clément VUCHENER Filière électronique 2 eme année - Année universitaire 2011-2012 1 Introduction 1.1 Objectif du projet L objectif

Plus en détail

QUALIMAIL PRO 2. DOCUMENTATION v1.001

QUALIMAIL PRO 2. DOCUMENTATION v1.001 QUALIMAIL PRO 2 DOCUMENTATION v1.001 I. Accueil...2 II. Qualification d une base existante...3 III. Création d une nouvelle base de recherche...9 VI. Qualification à partir d une liste de sites...11 VII.

Plus en détail

Informatique tronc commun TP 02

Informatique tronc commun TP 02 Informatique tronc commun TP 02 15 septembre 2015 NB : 1. Lisez attentivement tout l énoncé avant de commencer. 2. Après la séance, vous devez rédiger un compte-rendu de TP et l envoyer au format électronique

Plus en détail

7 VOS ADRESSES. Afin de faciliter la saisie des envois, ChronoShip OnLine vous permet de gérer votre carnet d adresses.

7 VOS ADRESSES. Afin de faciliter la saisie des envois, ChronoShip OnLine vous permet de gérer votre carnet d adresses. VOS ADRESSES 7 VOS ADRESSES Afin de faciliter la saisie des envois, ChronoShip OnLine vous permet de gérer votre carnet d adresses. Diverses options permettent d enrichir ce carnet d adresses : la saisie

Plus en détail

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des

Plus en détail

PHP et MySQL : notions de sécurité

PHP et MySQL : notions de sécurité PHP et MySQL : notions de sécurité Jean-Baptiste.Vioix@u-bourgogne.fr Dans ces quelques lignes des notions de sécurité élémentaires vont être présentées. Elles sont insuffisantes pour toute application

Plus en détail

Chapitre 2 : Représentation des nombres en machine

Chapitre 2 : Représentation des nombres en machine Chapitre 2 : Représentation des nombres en machine Introduction La mémoire des ordinateurs est constituée d une multitude de petits circuits électroniques qui ne peuvent être que dans deux états : sous

Plus en détail

Connexion d un client lourd à la messagerie e-santé PACA

Connexion d un client lourd à la messagerie e-santé PACA Connexion d un client lourd à la messagerie e-santé PACA La messagerie sécurisée e-santé PACA est un service de type Webmail. Un Webmail est une interface Web rendant possible l émission, la consultation

Plus en détail

INTRODUCTION A L EDITEUR ed

INTRODUCTION A L EDITEUR ed ed 1 INTRODUCTION A L EDITEUR ed d est l éditeur standard de Unix. Unix supporte également d autres éditeurs, tels Eque emacs de J. Gosling, edith de P. Amar, etc, mais ed est le plus simple à apprendre

Plus en détail

CHAPITRE 1 PREMIERS PAS. Créer un premier projet... 17 Écrire un programme... 18 Compiler, exécuter... 20 Mieux comprendre... 22

CHAPITRE 1 PREMIERS PAS. Créer un premier projet... 17 Écrire un programme... 18 Compiler, exécuter... 20 Mieux comprendre... 22 CHAPITRE 1 PREMIERS PAS Créer un premier projet... 17 Écrire un programme... 18 Compiler, exécuter... 20 Mieux comprendre... 22 15 1.1. Créer un premier projet Pour commencer, lancez Visual Basic Express.

Plus en détail

Le langage C. Séance n 4

Le langage C. Séance n 4 Université Paris-Sud 11 Institut de Formation des Ingénieurs Remise à niveau INFORMATIQUE Année 2007-2008 Travaux pratiques d informatique Le langage C Séance n 4 But : Vous devez maîtriser à la fin de

Plus en détail

POWERGES. La Facturation

POWERGES. La Facturation La Facturation 1. Préparation et configuration générale du programme des FACTURES Avant toute chose, il est nécessaire de configurer l environnement que vous voudriez utiliser. Pour ce faire, il faut rentrer

Plus en détail

4. Créer un compte utilisateur

4. Créer un compte utilisateur 4. Créer un compte utilisateur 1 - Cliquez sur le menu Outils puis sur Compte. 2 - Cliquez sur l onglet «Courrier». 3 - Cliquez sur «Ajouter» puis «Courrier». 4 - Tapez votre nom. 5 - Ecrivez votre mél

Plus en détail

Installation et utilisation de SSH. .et

Installation et utilisation de SSH. .et Installation et utilisation de SSH.et.soumission de travail SSH est un protocole de communication qui permet de communiquer à distance entre deux ordinateurs. Pour cela, il faut qu un des deux ordinateurs

Plus en détail

Création d un catalogue en ligne

Création d un catalogue en ligne 5 Création d un catalogue en ligne Au sommaire de ce chapitre Fonctionnement théorique Définition de jeux d enregistrements Insertion de contenu dynamique Aperçu des données Finalisation de la page de

Plus en détail

NOTICE D UTILISATION DE L ESPACE COLLABORATIF (POUR LES COLLABORATEURS)

NOTICE D UTILISATION DE L ESPACE COLLABORATIF (POUR LES COLLABORATEURS) NOTICE D UTILISATION DE L ESPACE COLLABORATIF (POUR LES COLLABORATEURS) Qu est-ce que l espace collaboratif? L espace collaboratif est un service vous permettant à vous, vos associés et collaborateurs

Plus en détail

GED MARKETING. Page 1 sur 18

GED MARKETING. Page 1 sur 18 GED MARKETING I. Présentation du produit... 2 II. Page principale de l application... 3 L arbre... 3 Le menu... 4 La fenêtre de navigation... 4 III. La recherche de documents... 4 Rechercher tous les documents...

Plus en détail

Poker. A rendre pour le 25 avril

Poker. A rendre pour le 25 avril Poker A rendre pour le 25 avril 0 Avant propos 0.1 Notation Les parties sans * sont obligatoires (ne rendez pas un projet qui ne contient pas toutes les fonctions sans *). Celles avec (*) sont moins faciles

Plus en détail

ACTIVATION DES MACROS

ACTIVATION DES MACROS ACTIVATION DES MACROS Il faut d abord activer les macros dans Excel. Cela permet d afficher le menu développeur et d avoir accès à la page de programmation Visual Basic. Accès au menu développeur : Fichier

Plus en détail

Poll-O Guide de l utilisateur. Pierre Cros

Poll-O Guide de l utilisateur. Pierre Cros Poll-O Guide de l utilisateur Pierre Cros TABLE DES MATIÈRES Table des matières Table des matières 1 1 Créer un site sur Poll-o.fr 2 2 Configurer le site 2 3 Créer une enquête ou un vote 2 3.1 Ajouter,

Plus en détail

UT Installation et paramétrage logiciel de sauvegarde INSTALLATION ET PARAMETRAGE LOGICIEL DE SAUVEGARDE. Groupe PROGMAG

UT Installation et paramétrage logiciel de sauvegarde INSTALLATION ET PARAMETRAGE LOGICIEL DE SAUVEGARDE. Groupe PROGMAG GUIDE UTILISATION POINT DE VENTE INSTALLATION ET PARAMETRAGE LOGICIEL DE SAUVEGARDE SOMMAIRE 1 Créer une tâche de sauvegarde... 4 1.1 Paramètres de la tâche... 4 1.1.1 Nommer la tâche... 4 1.1.2 Emplacement

Plus en détail

Contrôler les programmes VBA

Contrôler les programmes VBA 7 Contrôler les programmes VBA Au sommaire de ce chapitre Répéter une série d instructions : les boucles Utiliser des instructions conditionnelles Définir l instruction suivante avec GoTo Interagir avec

Plus en détail

Vous pouvez obtenir une extension nécessaire via des achats In-App dans Paramètres (bouton en haut à gauche) > Extensions.

Vous pouvez obtenir une extension nécessaire via des achats In-App dans Paramètres (bouton en haut à gauche) > Extensions. Important: La description correspond à la version de ALON Dictaphone qui comprend toutes les extensions construites. Les extensions construites sont: Partager des Notes Audio Pack Audio Avancé Sélection

Plus en détail

L informatique en BCPST

L informatique en BCPST L informatique en BCPST Présentation générale Sylvain Pelletier Septembre 2014 Sylvain Pelletier L informatique en BCPST Septembre 2014 1 / 20 Informatique, algorithmique, programmation Utiliser la rapidité

Plus en détail

TP 1. Prise en main du langage Python

TP 1. Prise en main du langage Python TP. Prise en main du langage Python Cette année nous travaillerons avec le langage Python version 3. ; nous utiliserons l environnement de développement IDLE. Étape 0. Dans votre espace personnel, créer

Plus en détail

MANUEL DE FORMATION DE CONVERSION EN BASES DE DONNÉES

MANUEL DE FORMATION DE CONVERSION EN BASES DE DONNÉES MANUEL DE FORMATION DE CONVERSION EN BASES DE DONNÉES VERSION 6.03 1, rue de la Martinerie 78610 LE PERRAY EN YVELINES SUPPORT TECHNIQUE Tél. : +33-(02).99.73.52.06 Adresse e-mail : support@euroid.fr Site

Plus en détail

[WINDOWS 7 - LES FICHIERS] 28 avril 2010. Logiciel / Windows

[WINDOWS 7 - LES FICHIERS] 28 avril 2010. Logiciel / Windows Ce dossier a une forme un peu différente des précédentes : c est un ensemble de «fiches» décrivant chacune une des opérations que l on peut effectuer avec un fichier (enregistrer, renommer, etc.). Chaque

Plus en détail

TD3 : PHP «avancé» V2.4.0

TD3 : PHP «avancé» V2.4.0 TD3 : PHP «avancé» V2.4.0 Cette œuvre est mise à disposition selon les termes de la licence Creative Commons Attribution Pas d'utilisation Commerciale Partage à l'identique 3.0 non transposé. Document

Plus en détail

Compte rendu de PHP MySQL : création d un formulaire de base de données

Compte rendu de PHP MySQL : création d un formulaire de base de données REVILLION Joris Décembre 2009 3EI Compte rendu de PHP MySQL : création d un formulaire de base de données Objectifs : Le principal objectif de ce cours est de découvrir et de nous familiariser avec le

Plus en détail

INFO-F-101 Programmation Projet 4 Page Ranking(1/4): Création de la matrice du compte des liens

INFO-F-101 Programmation Projet 4 Page Ranking(1/4): Création de la matrice du compte des liens INFO-F-101 Programmation Projet 4 Page Ranking(1/4): Création de la matrice du compte des liens Année académique 2009 2010 1 Introduction Ce projet est le premier d une série de quatre projets qui ont

Plus en détail

Mon premier rpm. http://alexandre-mesle.com 7 juin 2010. 1 Avant de commencer 2 1.1 RPM... 2 1.2 URPMI... 2 1.3 RPMBUILD... 2

Mon premier rpm. http://alexandre-mesle.com 7 juin 2010. 1 Avant de commencer 2 1.1 RPM... 2 1.2 URPMI... 2 1.3 RPMBUILD... 2 Mon premier rpm http://alexandre-mesle.com 7 juin 2010 Table des matières 1 Avant de commencer 2 1.1 RPM....................................................... 2 1.2 URPMI.....................................................

Plus en détail

Jérémie DATHÉE 19/03/2013. Rapport de projet tutoré : Conception d un logiciel sous Visual Basic Express 2010 :

Jérémie DATHÉE 19/03/2013. Rapport de projet tutoré : Conception d un logiciel sous Visual Basic Express 2010 : Jérémie DATHÉE 19/03/2013 B2 Rapport de projet tutoré : Conception d un logiciel sous Visual Basic Express 2010 : 1 2 Déroulement : Introduction ; page 4 I/ Présentation du projet : pages 4-5 Cahier des

Plus en détail

PC & Windows Livret d exercices Laurent DUPRAT Pratiquons

PC & Windows Livret d exercices Laurent DUPRAT Pratiquons Pratiquons ensemble PC & Windows Livret d exercices Laurent DUPRAT Pratiquons ensemble PC & Windows Livret d exercices Laurent DUPRAT Pratiquons ensemble PC & Windows Livret d exercices Laurent DUPRAT

Plus en détail

INSPECTION ACAEMIQUE DE L HERAULT I@I 34. TOUT SAVOIR SUR LE COURRIER ELECTRONIQUE Petit manuel à l usage des directeurs et enseignants de l Hérault

INSPECTION ACAEMIQUE DE L HERAULT I@I 34. TOUT SAVOIR SUR LE COURRIER ELECTRONIQUE Petit manuel à l usage des directeurs et enseignants de l Hérault INSPECTION ACAEMIQUE DE L HERAULT I@I 34 TOUT SAVOIR SUR LE COURRIER ELECTRONIQUE Petit manuel à l usage des directeurs et enseignants de l Hérault 1 Le compte académique 2 Consulter son courrier par Internet

Plus en détail

1 : 1 er programmes & prise en main de l environnement

1 : 1 er programmes & prise en main de l environnement 1 : 1 er programmes & prise en main de l environnement 1 Introduction 1.1 Rappel : gestion d arborescence et de fichiers sous UNIX Pour la manipulation de répertoire et de fichier à partir d un terminal

Plus en détail

TP Protocoles SMTP et POP3 avec Pratiquer l algorithmique

TP Protocoles SMTP et POP3 avec Pratiquer l algorithmique TP Protocoles SMTP et POP3 avec Pratiquer l algorithmique Introduction : Les protocoles SMTP et POP3 sont deux protocoles utilisés par la messagerie électronique (mail). Leur mise en œuvre étant simple,

Plus en détail

version def septembre 2010

version def septembre 2010 GUIDE POUR L UTILISATION DE LA PLATE-FORME DE DEMATERIALISATION DES MARCHES PUBLICS DU CONSEIL GENERAL DE L ISERE 1 La plate-forme de dématérialisation des marchés publics du Conseil général de l Isère

Plus en détail

GUIDE POUR L UTILISATION DE LA PLATE-FORME DE DEMATERIALISATION DES MARCHES PUBLICS DU CONSEIL GENERAL DE L ISERE

GUIDE POUR L UTILISATION DE LA PLATE-FORME DE DEMATERIALISATION DES MARCHES PUBLICS DU CONSEIL GENERAL DE L ISERE GUIDE POUR L UTILISATION DE LA PLATE-FORME DE DEMATERIALISATION DES MARCHES PUBLICS DU CONSEIL GENERAL DE L ISERE La plate-forme de dématérialisation des marchés publics du Conseil général de l Isère permet

Plus en détail

GUIDE UTILISATEUR DU SYSTEME DACON

GUIDE UTILISATEUR DU SYSTEME DACON GUIDE UTILISATEUR DU SYSTEME DACON 1. Recommandations Générales...2 1.1. Introduction...2 1.2. Avertissement...2 1.3. Pré-Requis...2 1.4. Conseils pour la saisie des données...2 1.5. Comment soumettre

Plus en détail

SOMMAIRE... 1 ESPACE DU CLUB...

SOMMAIRE... 1 ESPACE DU CLUB... Documentation Extraclub Page 1/11 Sommaire SOMMAIRE... 1 ESPACE DU CLUB... 2 INTRODUCTION... 2 Bien utiliser la gestion du club... 2 Termes utilisés dans cet espace... 2 Par quoi commencer?... 2 L onglet

Plus en détail

PHP CLÉS EN MAIN. 76 scripts efficaces pour enrichir vos sites web. par William Steinmetz et Brian Ward

PHP CLÉS EN MAIN. 76 scripts efficaces pour enrichir vos sites web. par William Steinmetz et Brian Ward PHP CLÉS EN MAIN 76 scripts efficaces pour enrichir vos sites web par William Steinmetz et Brian Ward TABLE DES MATIÈRES INTRODUCTION 1 1 TOUT CE QUE VOUS AVEZ TOUJOURS VOULU SAVOIR SUR LES SCRIPTS PHP

Plus en détail

PROCEDURE INSTALLATION ET PARAMETRAGE D UN SERVEUR TSE

PROCEDURE INSTALLATION ET PARAMETRAGE D UN SERVEUR TSE PROCEDURE INSTALLATION ET PARAMETRAGE D UN SERVEUR TSE Table des matières 1) Un serveur TSE, c est quoi?... 1 2) Prérequis technique... 1 3) Comment louer un serveur?... 1 4) Ou acheter des licences?...

Plus en détail

Programmation shell sous Unix/Linux sh, ksh, bash (avec exercices corrigés) (4ième édition)

Programmation shell sous Unix/Linux sh, ksh, bash (avec exercices corrigés) (4ième édition) Introduction 1. Définition du shell 19 2. Caractéristiques d'un interpréteur de commandes 19 3. Interpréteurs de commandes (shells) 20 3.1 Historique 20 3.2 Avec quel shell faut-il programmer? 21 3.2.1

Plus en détail

Introduction au Makefile

Introduction au Makefile Introduction au Makefile Nicolas Kielbasiewicz 3 mars 2009 Le développement d un programme et plus généralement d un logiciel demande au(x) programmeur(s) de gérer plusieurs fichiers, voire plusieurs langages.

Plus en détail

Manuel d utilisation du terminal de paiement électronique virtuel

Manuel d utilisation du terminal de paiement électronique virtuel TPEV Manuel d utilisation du terminal de paiement électronique virtuel Version: 1.C Payline PROPRIETAIRE Page 1-1/29 Page des évolutions Le tableau ci-dessous liste les dernières modifications effectuées

Plus en détail

Série d exercices. o Cas 2 : gcc o nomexecutable c nomsource.c. o Cas 3 : gcc o nomexecutable W -Wall nomsource.c

Série d exercices. o Cas 2 : gcc o nomexecutable c nomsource.c. o Cas 3 : gcc o nomexecutable W -Wall nomsource.c Langage Impératif 1 TP 1 du 11 octobre 2010 Série d exercices Rappels rapides : - Un programme C s écrit toujours dans un fichier d extension.c (en minuscule!! sinon ce serait compilé comme du C++). Ce

Plus en détail

Manuel de mise en page de l intérieur de votre ouvrage

Manuel de mise en page de l intérieur de votre ouvrage Manuel de mise en page de l intérieur de votre ouvrage Merci de suivre strictement les recommandations de ce manuel qui a pour but de vous aider à préparer un livre dont la qualité de mise en page est

Plus en détail

INTERFACE WEB API ENVOI DE SMS EN MASSE NOTICE D UTILISATION MAJ : 22/06/2007

INTERFACE WEB API ENVOI DE SMS EN MASSE NOTICE D UTILISATION MAJ : 22/06/2007 INTERFACE WEB API ENVOI DE SMS EN MASSE NOTICE D UTILISATION MAJ : 22/06/2007 Ce document est destiné aux professionnels, qui ont choisi d utiliser notre API, via l interface WEB mise à leur disposition,

Plus en détail

Le serveur SLIS - Utilisation de base

Le serveur SLIS - Utilisation de base Le serveur SLIS - Utilisation de base Le SLIS est un serveur de communication permettant entre autres de : Créer des adresses électroniques (des comptes de messageries)

Plus en détail

Site internet UNASACEM

Site internet UNASACEM Site internet UNASACEM Documentation Unasacem GuideWeb - Gérer les activités Correspondants Philippe Labrot Mail philippe-labrot@orange.fr Date de création du document 11/07/2013 Référence Document Unasacem-GuideWeb-Gerer_les_activites

Plus en détail

GUIDE DE L UTILISATEUR

GUIDE DE L UTILISATEUR GUIDE DE L UTILISATEUR Version 3 C est parti pour gérer, modifier et mettre à jour votre site I-set! Avec simplicité, rapidité et en toute autonomie SOMMAIRE DÉMARRER CONSTRUIRE & GÉRER CONSULTER 1. Introduction:

Plus en détail

Sommaire. Guide technique de configuration One20D. Destiné aux offres SDSL PRO Futur Telecom

Sommaire. Guide technique de configuration One20D. Destiné aux offres SDSL PRO Futur Telecom Guide technique de configuration One20D Destiné aux offres SDSL PRO Futur Telecom Sommaire Prise en main et raccordement Configuration Annexe et commandes courantes Mise à jour du Firmware Guide technique

Plus en détail

Dossier Technique. Détail des modifications apportées à GRR. Détail des modifications apportées à GRR Le 17/07/2008. Page 1/10

Dossier Technique. Détail des modifications apportées à GRR. Détail des modifications apportées à GRR Le 17/07/2008. Page 1/10 Dossier Technique Page 1/10 Sommaire : 1. REPONSE TECHNIQUE A LA DEMANDE 3 1.1. Prise en compte de la dernière version de phpcas 3 1.2. Gestion de la connexion à GRR 3 1.2.1. Récupération des attributs

Plus en détail

Leçon N 4 Picasa 1 ère Partie

Leçon N 4 Picasa 1 ère Partie Leçon N 4 Picasa 1 ère Partie Nous allons maintenant revoir PICASA en détail, car c est le principal logiciel pour gérer et traiter ses photos et que vous serez amenés à utiliser assez souvent. PICASA

Plus en détail