SAC : Stockage, Archivage et Compression ;
exercices choisis
Retour à la page principale de (gH)Table des matières cliquable
pour la partie 1 : Stockage énoncé solution pour la partie 2 : Archivage énoncé solution pour la partie 3 : Compression énoncé solution Retour à la page principale du cours.Exercices pour la partie 1 : Stockage
Combien faut-il d'octets pour stocker en "ascii brut" la chaine de caractères suivantes (sur une seule ligne, guillemets et mise en gras non compris) :
"Bon courage à tous et à toutes." ?
Combien d'octets sont nécessaires sous windows avec notepad, sous unix avec vi ou emacs si on met cette chaine avec un "retour charriot" (touche "Entrée") dans un fichier ? ?
Combien d'octets sont nécessaires sous windows avec word, sous unix avec openoffice/write ?
Et avec RTF ? et en HTML, puis en XHTML et enfin en XML, avec Unicode ?
Que faut-il en conclure ?Si les fichiers Microsoft Office 2007 comme boncourage.docx et ceux d'Open Office 3 comme boncourage.odt sont au format XML, pourquoi ne peut-on pas les ouvrir avec un simple éditeur comme vi sous Unix ou notepad sous Windows ?
L'excellent logiciel XMLSpy travaille par défaut en UTF-8 surtout et y compris pour les accents francais. Comment faire pour qu'il accepte de lire votre fichier agenda.txt codé au départ avec un encodage différent ? Vous distinguerez les manipulations à effectuer sous windows, sous Linux pour arriver à convertir ce fichier.
Dans le même genre d'idées, comment écrire en XHTML un lien vers la page http://fr.wikipedia.org/wiki/Métamoteur dont l'URL contient un accent ?
Votre "chef" vous demande de lui fournir la liste numérotée des fichiers descriptifs (de type dsc ou "approchant") triée une fois par ordre alphabétique et une seconde fois par ordre décroissant de date, liste toute en majuscules dans un fichier RTF à raison de 50 fichiers par page (avec numéro de page en haut et à gauche). Réaliser ce travail à l'aide d'un script perl. On pourra copier les fichiers du disque K:, sous-répertoire Stat_ad pour s'entrainer sous Windows ou utiliser les fichiers de l'archive alldsc.zip. On exportera ces fichiers sous unix pour voir ce qui change dans le script perl.
Afin de faciliter la recherche d'un stage, vous voudriez mettre sur le Web la liste des stages de Maitrise Mass des années précédentes. Ecrire un formulaire HTML qui demande seulement la catégorie de stage (parmi info, stat, gp,rh, mkg) et qui affiche les stages qui correspondent. Les stages sont stockés en MySql, vous pouvez y accéder à l'aide des informations suivantes :
serveur forge login anonymous mot de passe anonymous base statdata table stagesMaitrise Il est conseillé de vérifier sous Sirius ou sous Forge l'exactitude des commandes SQL avant de les intégrer au script PHP d'affichage. Le programme php peut être testé en ligne de commande sous Forge. Pour la configuration des serveurs, cliquez ici
Vous fournirez avant la liste des stages un histogramme des diverses catégories de stages, par exemple en utilisant le script jphistopct qui est basé sur jpgraph.
Comment automatiser ce traitement en ligne de commande, par exemple pour produire et imprimer "à la volée" un fichier PDF des résultats ? On pourra utiliser la classe PEAR nommée ezpdf. Une copie locale du manuel de référence est dans le fichier pdfclass_.pdf et l'archive complète se nomme pdfClassesAndFonts_009e.zip.
Ajouter un export en XML des stages. Quel choix de grammaire (DTD ou XSD) faites-vous et pourquoi ? Comment définissez-vous la grammaire ?
Ecrire une feuille de style XSL pour transformer le fichier XML nommé allstages.xml en une page HTML qui affiche le nombre de stages par catégorie.
Si vous préferrez, modifiez la solution allstages.xsl pour que l'affichage sous HTML se fasse avec un tableau avec des TR et des TD et avec la feuille de styles std.css.
Reproduire le dessin ci-dessous en SVG.
retour en haut de document
Exercices pour la partie 2 : Archivage
Il arrive régulièrement qu'on ait besoin de se déplacer rapidement d'un répertoire à un autre, pour consulter des fichiers, exécuter des programmer, imprimer des documents, archiver des répertoires entiers... que ce soit sous Windows ou sous Linux. Par exemple on pourra imaginer qu'on travaille régulièrement avec les 3 répertoires
# sous Unix /home/info/etud/mass/ ~/public_html/cours/tests/php/ /usr/bin/installations/lastsofts/logs/ # sous Windows H:\/homes\info\etud\mass\ C:\Program Files\EasyPHP1-8\www\cours\tests\php\ K:\Stat_ad\bin\installations\lastsofts\logs\Que proposez-vous comme méthode rapide pour aller dans l'un de ces répertoires sous Windows comme sous Linux ?
Avant d'archiver des fichiers, il est bon de savoir quels fichiers on veut archiver. Comment faire pour trouver
- les 5 derniers fichiers écrits dans le répertoire courant ?
- les 10 plus gros du répertoire courant par taille décroissante ?
- tous les fichiers écrits dans le répertoire courant et ses sous-répertoires depuis hier ? depuis le début du mois ?
- la taille du répertoire courant et de ses sous-répertoires ?
- le nombre et la place occupée par les fichiers de même extension ?
On essaiera bien sur de trouver des solutions pour Windows et Linux, voire une solution commune.
Comment peut-on faire pour produire des résultats exploitables par Microsoft Excel ou Open Office Calc ?
Vous êtes amenés à vous déplacer souvent. Lors de vos déplacements, vous voudriez envoyer régulièrement des fichiers à votre direction. Toutefois vous ne voulez pas utiliser de mail pour vous envoyer les fichiers car vous ne savez pas bien gérer les réceptions automatiques de fichier avec procmail.
Vous devez donc écrire une Web avec php qui vous permet de sauvegarder automatiquement vos fichiers grâce à un "Upload" automatiquement. Les fichiers iront dans des répertoires nommés "Janvier", "Février" en fonction du mois courant pour faciliter le suivi des fichiers...
Que sont les fichiers .jar ? et .xpi ? Comment savoir s'il y en a dans un répertoire donné ou dans un de ses sous-répertoires ?
A force d'utiliser firefox, on voudrait avoir un script en ligne de commande qui lance firefox soit avec la page web par défaut soit avec une page web fournie en paramètre (on distinguera le cas des URL commençant par http:// de celles commençant par file://).
A force d'utiliser google, on voudrait avoir un script en ligne de commande qui ouvre la page web de google avec la fenêtre de recherche classique si on ne fournit aucun paramètre et qui affiche la fenêtre des résultats liés aux mots passés en paramètre (on distinguera le cas windows d'unix à cause de l'interprétation différente du symbole & pour ces deux systèmes d'exploitation). Ecrire ensuite un script qui ouvre la page de google images avec le paramètre fourni.
En quoi une base MySql, un document XML ou un objet (au sens de la programmation objets) ou même un DVD du commerce avec un film peuvent-ils être considérés comme des archives ? Qu'apporte en plus l'objet ou XML ?
Ecrire un script unix qui permet d'emboiter history et grep.
Ecrire un script unix qui permet d'emboiter find et et grep.
Ecrire les alias équivalents pour bash.
Et pour Windows (XP) ?Que sont le CPAN, le CTAN et le CRAN ?
Combien y a-t-il de packages aujourd'hui : pour Perl ? pour LaTeX ? pour R ?
Ecrire un programme PHP qui donne en ligne de commandes, le nombre de packages au format AN MOIS JOUR NB_PACKAGES, avec comme paramètre P, T ou R.Peut-on comparer Microsoft Word, Open Office Write et LaTeX ?
Peut-on comparer Microsoft Excel, Open Office Calc et Mysql ?
Peut-on comparer Microsoft Excel, Open Office Calc, Statistica, Sas et R ?retour en haut de document
Exercices pour la partie 3 : Compression
Ecrire une programme Perl ou Rexx qui sauvegarde automatiquement le répertoire en cours. On utilisera le nom du répertoire comme nom d'archive (par exemple si on est dans /usr/bin/installations/lastsofts/logs/ l'archive sera logs.zip). On pensera à fournir une option pour indiquer si on sauvegarde les sous-répertoires ou non. On ne supposera pas que l'archive existe. Par contre si elle existe, on ne sauvegardera pas les fichiers déja présents qui sont identiques.
Ecrire le programme Perl ou Rexx complémentaire qui, sans paramètre, décompresse l'archive dont le nom correspond au répertoire en cours. On rajoutera ensuite une option pour tout décompresser sans tenir compte du chemin d'accès.
Comment faire pour maintenir à distance via Internet un répertoire donné ? On fournira une version
- "script" en ligne de commande
- "commande à date et heure fixe" (par exemple le dimanche à 23 h)
- "interface graphique" avec des boutons (hors serveur Web)
- "interface graphique" avec des boutons à l'intérieur d'une page Web
Vous disposez de nombreuses images dans le répertoire "Imgs" qui est accessible par le web. Vous voudriez faire une page qui affiche un tableau des miniatures de ces images de façon à ce qu'on puisse cliquer sur une miniature pour voir l'image en grand.
Ecrire un script de génération de cette page en Bash puis en Perl. Ecrire enfin une page php dynamique qui construit la page. Où est le problème ?
Une version statique serait la page listeg.htm.
Vous voudriez faire de la compression d'images en ligne par exemple en changeant la résolution afin de disposer des images réelles dans le répertoire "R_Ims" et des images allégées dans répertoire "L_Ims". Quel(s) logiciel(s), quel(s) script(s) utiliser sous Windows comme sous Linux ?
Les formats TIFF et JPEG2000 sont-ils adaptés à des images de biopsie produites par un scanner à lames ?
Quelle est la taille minimale d'un fichier pour stocker 419 lignes de 83 caractères comme pbio.txt ? Sachant que ces données sont un tableau de variables (statistiques) mises en colonnes (voir le descriptif dans pbio.htm) faut-il mieux les conserver au format Dbase, Excel, Xml ou les compresser ?
Vous recevez régulièrement des fichiers .zip par mail pour des applications distinctes. Comment faites-vous pour déposer ces archives "là où il faut" et envoyer automatiquement un accusé de réception avec la liste de tous les fichiers zip présents dans le répertoire lié à l'application ?
Un exemple de fonctionnement est fourni par l'adresse mail gilles.hunault@univ-angers.fr si on envoie un fichier .zip en attaché (ou "pièce jointe") à condition de mettre comme sujet du message le mot miay2k. On peut alors voir à l'adresse
http://www.info.univ-angers.fr/pub/gh/Projets/Mia/zipdirmia.php le résultat de l'envoi.
Chaque année on souhaite effectuer des statistiques simples (nombre de valeurs, moyenne, écart-type) pour l'année en cours et en cumul avec les années précédentes. Faut-il conserver toutes les données ou peut-on se contenter d'indicateurs statistiques judicieux par année ?
Si fin 2002 on avait n=1235 valeurs de moyenne m=635,42 et d'écart-type e=400,11 et si l'année 2003 apporte 154 valeurs de moyenne 748,98 et d'écart-type 380,35 comment fait-on pour mettre à jour n, m et e ?
La moyenne est-elle une bonne compression des données ?
On voudrait gérer des archives compressées incrémentales c'est à dire qui contiennent tout ce qui a été écrit depuis la dernière sauvegarde précédente. On écrira un programme en Perl ou Rexx sans oublier qu'on veut omettre certains répertoires (comme les répertoires des fichiers temporaires) et sans omettre qu'on sait que certains fichiers ne doivent jamais être archivés (comme les fichiers de cache, les fichiers de backup etc.).
Le compresseur xz est-il vraiment supérieur aux autres compresseurs tels que zip, winzip ou 7z ?
Qu'est-ce que la transformation de Burrows-Wheeler ?
On vous demande de programmer un comptage de pixels et plus généralement de faire de l'analyse d'images pour des machines Windows et Unix. Quel(s) logiciel(s) utiliser ? Et quels langage(s) ?
On veut comparer visuellement le contenu de deux fichiers, de deux répertoires... Quelles solutions pour Linux, Windows ?
Comment faire pour toujours apparaitre en premier dans les réponses de Google avec un ou deux mots au maximum ? Par exemple on pourra essayer les mots farcompr et analexies, les expressions tuteur xml et tuteur perl.