pluriTAL – BLOG Master pluriTAL [ParisX, ParisIII, INALCO]

AB-CJ : dernier problème avec wget.

Posted in Projet 2006-2007 by pluritaluser on 18 décembre 2006

Bonsoir à tous,

vous devez sans doute avoir fini votre programme, même votre rapport, et puis et puis il y a un petit problème. Lorsque vous regardez votre tableau résultat vous vous apercevez qu’il y a bien une URL pointant vers un site en ligne bien visible avec votre navigateur mais que les pages aspirées, lynxées et contextualisées sont vides, des cellules blanches, des liens pointant sur des pages blanches.

C’était notre cas à Arianna et Moi, et nous étions vraiment très perturbés, surtout que nous pouvions nous vanter d’avoir un programme robuste croyez-t-on. Nous étions sûr de vérifier que le téléchargement de wget avait bien fonctionné avant d’exécuter la suite des traitements. Nous avions fait une erreur que voici :

Pour tester la réussite de wget nous faisions :

wget …. -O $ficDestAsp url

if [ -f $ficDestAsp ]

then

lynx ….

fi

Nous pensions que tester l’existence du fichier avec -f était suffisant mais il n’en est rien, car wget même s’il commet une erreur de téléchargement, va créér ce fichier mais il sera vide.

La véritable solution consiste à regarder le code de sortie du programme wget qui est visible dans la variable interne du shell $? qui vaut 0 (zéro) en cas de succès et autre en cas d’erreur.

Voici la solution :

wget … -O $ficDestAsp url

err=$? ## Il vaut mieux la sauvegarder dans une autre variable et tester cette variable car $? est très souvent

##modifiée

# Le test sur le fichier est optionnel, mais j’aime l’élégance de la ligne suivante.

if [ -f $ficDestAsp ] && [ $err -eq ‘0’ ]
then

lynx, ……
else

#loggue url recalcitrante

fi

Parmi les causes possibles nous avions identifiés une erreur qui nous paraissait improbable mais qui nous est arrivée, c’est que nous utilisions dans wget les options password et user, ainsi certains sites où leurs pages ne demandent pas de mot de passe, en leur fournissant un mot de passe, l’accès était refusé à wget, nous obtenions une page forbidden access mais heureusement pas stocké dans le fichier html, celui restant vide mais existant. Dans un tel cas wget renvoie 1, super.

Les autes problèmes concernent souvent les user-agent, les sites webs attendent internet explorer ou mozilla/netscape comme navigateur qui est déclaré dans la variable user-agent, s’il voit wget il refuse de servir la page, dans ce cas on obtient aussi un 1, ce cas demande plus de vérification.

Avec ce test, nous n’avons plus de page blanche dans notre tableau résultat, il est enfin tout beau.

Arianna et Christian.

Publicités

Fin progressive du semestre…

Posted in Projet 2006-2007 by tal-p3 on 18 décembre 2006

Les notes de tous les enseignements du semestre 1 2006/2007 seront affichées progressivement sur le site pluriTAL (page du master).

Les travaux du cours : « Programmation et projet encadré » (S. Fleury/R. Belmouhoub) (i.e le Projet Barrage) seront mis en ligne progressivement sur le site du Master sur cette page :

http://tal.univ-paris3.fr/plurital/travaux-2006-2007/tr0607-masterproj-sem1.htm

En cas de pb envoyer un message à SF (via serge.fleury@univ-paris3.fr)

AB : journal de bord du 28 novembre

Posted in Projet 2006-2007 by pluritaluser on 9 décembre 2006

Bonsoir,

Voici encore une partie de mon journal de bord d’il y a 10 jours, alors que je découvrais comment créer un tableau html.

(En fait j’ai oublié de le poster avant! ;)

28 novembre

1) comment créer une colonne contenant les pages aspirées avec la commande wget :

Les pages web doivent être aspirées, une par une, lors même de l’exécution du programme fait-tableau. C’est donc à l’intérieur de la boucle, et au début de celle-ci, qu’il faut introduire la nouvelle instruction.

wget -O ./PAGES-ASPIREES/$i.html $nom

-O : sert à appeler le fichier nouvellement créé par le nom qui suit. (Attention au chemin relatif !)

i : est le nom d’une variable compteur que l’on emploie pour numéroter les noms des fichiers créés.

Elle doit être initialisée au début du script et incrémentée à chaque boucle.

Pour insérer les liens aux pages aspirées dans une colonne du tableau :

<td><a href=”../PAGES-ASPIREES/$i.html”>page aspirée $i</a></td>

2) comment créer une colonne contenant le texte simple de mes pages web :

J’utilise lynx, un navigateur qui affiche uniquement les zones de texte d’un site web directement à la console. L’option –dump nous permet de récupérer du texte simple, c.-à-d. sans balises html ni mise en forme.

lynx -dump $nom > ./DUMP-TEXT/$i.txt

. . .

<td width><a href=”../DUMP-TEXT/$i.txt”>page dumpée $i</a></td>

3) comment créer une colonne contenant les contextes du mot « barrage » :

La commande egrep sert à filtrer un texte, c.-à-d. à sélectionner les lignes d’un texte où une chaîne de caractères donnée (dite motif) apparaît.

 

egrep -i -A 2 -B 2 “barrage” ./DUMP-TEXT/$i.txt

-i : indépendamment de la casse

-A n (after) –B n (before) : sélectionne aussi n lignes après et avant la ligne contenant le motif

 

Afin de mettre en évidence le mot « barrage » à chaque fois qu’il apparaît on peut se servir de la commande de substitution sed –s qui nous permet d’entourer le mot par des balises comme <b>, <font color= “…”>ou <strong>.

. . . | sed ’s/[bB][aA][rR][rR][aA][gG][eE]/\<strong\>barrage\<\/strong\>/g’

[bB][aA]… : pour substituer la chaîne “barrage” indépendamment de la casse

… \<\/ … : pour déspécialiser les caractères spéciaux

Maintenant on a deux possibilités pour inclure le contexte dans le tableau : soit on stocke le résultat du filtrage dans des fichiers numérotés et on crée des liens renvoyant à ces fichiers – comme on a fait pour les deux colonnes précédentes ; soit on affiche directement ce résultat dans une colonne du tableau. Pour ce faire il faut affecter le résultat de egrep à une variable.

 

contexte=`egrep -i -A 2 -B 2 “barrage” ./DUMP-TEXT/$i.txt | sed ’s/[bB][aA][rR][rR][aA][gG][eE]/\<strong\>barrage\<\/strong\>/g’`

. . .

<td>$contexte</td>

4) Comment définir la largeur des colonnes :

Je veux laisser plus de place à la 4ème colonne qui contient le texte. J’utilise l’attribut width pour choisir la largeur en pixel ou en pourcentage du tableau.

<td width=”15%”>. . . </td>

<td width=”55%”> . . . </td>

Les tableaux peuvent maintenant être créés. Il serait intéressant d’automatiser cette même tâche afin que tous les tableaux soient crées simultanément. Le nouveau programme demandera donc comme seule entrée le nom du répertoire, qu’il affectera à une variable $rep. Ensuite il devra répéter les opérations de création du tableau pour chaque fichier .txt contenant une liste d’url. De plus il se servira du nom de chaque fichier pour nommer les pages aspirées et les pages dumpées liées à ce sens spécifique du mot « barrage ».

Les noms des fichiers seront du type :

../PAGES-ASPIREES/$fic-$i.html

ce qui permet une bonne lisibilité de notre arborescence.

Pour réaliser tout cela, il faut bien sûr imbriquer deux boucles. C’est un peu compliqué mais faisable. Par contre ce qui me pose problèmes c’est toujours la question des chemins relatifs. J’ai enfin décidé de me placer dans le répertoire $rep lors de l’exécution (cela facilite la lecture des différents fichiers-liste qui se trouvent dans ce même répertoire) et d’en ressortir à la fin du script.

Dernière modification importante : je veux qu’un tableau global soit créé en même temps que les sous-tableaux. Je recopie chaque instruction echo pour l’envoyer à un fichier au nom prédéfini (./JOURNAL/global-tablo.html). Seule différence, le code de début de tableau doit être envoyé une seule fois au fichier, c’est pourquoi il sera placé à l’extérieur des deux boucles.

Le script fait-tableau-2boucle.sh est maintenant opératif.

 

Bon courage pour finir vos projets, et aussi pour tous les autres devoirs.

Vivement les vacances!

Arianna

ME@HOME rapport

Posted in Projet 2006-2007 by pluritaluser on 7 décembre 2006

EZZAT Mani

iop, j’étais parti sur un layout de site très graphique, avec photoshop et consort, et j’ai finalement abandonné. Ce n’est pas forcément plus clair, surtout pour un rapport, et pas très maléable non plus. Cela reste plus technique certes, mais pour un résultat mitigé. Par expérience, quand on fait un site, je sais que trop en faire ne mene a rien au final.

J’ai adopté le format des casacading sheet style comme Ivan et Christian-Arianna, et décidé de ne mettre aucune image dans le layout, d’avoir un outil que je pourrai utiliser plus tard (pour dautres rapports par exemple), et donc de finalement rester le plus sobre possible, en gardant une certaine esthétique, mais de maniere a ce que le tout reste soit succint et efficace.

http://sandalettes.free.fr/DOCUMENTATION/Index.html

Voici ce que ca donne (jai pas tout rempli évidemment)

Vous pouvez tout pompé si ca vous chante, j’ai moi-meme pompé a droite et a gauche pour les styles (je ne saurais vous donner l’adresse des sources, j’ai juste navigué aléatoirement et pris des élement provenant de plusieurs sites). La seule partie technique ici est le descriptif qui apparait sur un rollover de la souris sur le menu a gauche. Il est possible de réaliser en html pur, avec un petit truc dans le CSS (a priori, on pourrait croire que c’est réalisable uniquement avec du javascript, mais non). Autre remarque, jme fais un peu plaisir dans la rédaction là, mais bon, c’est peut etre plus amusant à lire, et ca se cantonnera surment a l’intro, le reste étant purement descriptif finalement

AB-CJ-PED14-13: La fin approche.

Posted in Projet 2006-2007 by pluritaluser on 7 décembre 2006

Bonjour à tous, la pression monte, le stress, le rush, l’adrénaline que c’est bon !!

Nous Arianna et Christian avons mis en place quelque chose de plutôt bien du point de vue de la présentation.

Pour notre site/rapport de projet nous avons utilisé des CSS, ce qui nous a permis de séparer la logique du document de sa présentation.

En effet nous avons nos pages html qui incluent un fichier .css

Pour dire vrai ce fichier .css on l’a pris sur un site qui offrait un tutorial :

<a href= »http://css.alsacreations.com/Faire-une-mise-en-page-sans-tableaux/design-css »&gt; http://css.alsacreations.com/Faire-une-mise-en-page-sans-tableaux/design-css</a&gt;

Nous avons modifier un peu la mise en page en créant nos propres images, en changeant les couleurs, …

Passons sur les détails de mise en pages mais ce que cela nous a permis c’est de ne n’avor à s’occuoer que de la structure de notre document.

C’est à dire écrire un plan avec des menus sous formes de listes et des titres reflétant ce menu <h1> <h2> <h3>, nos avons exclu tout tableau de notre mis en page hormis un seul tableau dont je vous laisse deviner lequel.

La feuille de style est appelé dans le fichier html de la manière suivante :

<head>
   <title>Projet Encadré : Barrage réalisé par CJ & AB</title>
   <meta name="author" content="Christian Jean et Arianna Bisazza" />
   <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
   <meta http-equiv="Content-Language" content="fr" />
   <meta name="keywords" lang="fr" content="tal taln barrage INALCO ILPGA" />
   <link rel="stylesheet" type="text/css" href="styles.css" />
</head>

c’est la balise link qui indique la feuille de style à insérer.

Votre formatage est donc dans le fichier styles.css

C’est vraiment pratique car vous pouver répartir le travail avec votre binôme si vous penser le document logiquement ensemble préalablement. Chacun écrit sa page web, remplissant les parties avec le niveau titre déterminé à l’avance, la mise en forme : couleur, font, … sera géré automatiquement par la css.

Par exemple il suffira de metrte vos extraits de code à l’intérieur de la balise <pre> </pre>

Et si jamais à l’intérieur de votre code vous voulez colorer vos commentaires il suffira d’ajouter les balises <span> </span>

<pre>

<span>#Ceci est un commentaire </span>

echo « toto »;

</pre>

Dans la css il y aura des choses comme cela :

pre
{
overflow: auto ;

background: #c3c3e0 ;
border: 2px solid #1f1ff6 ;
padding: 5px 0 0 5px ;
font-size: 1.2em ;
}

pre span
{
color: #560 ;
}
/* Couleur de texte des éléments compris dans des span eux mêmes compris dans un
pre */

Si vous voulez voir un site étonnat avec les css il faut visiter la référence qui est

http://www.csszengarden.com/ c’est la même page html, mais on peut choisir d’appliquer des css différentes.

Pour ceux qui auraient l’idée d’utiliser les cadres (frame) voici un petit article :

http://www.openweb.eu.org/articles/finir_cadres/

C’est une liste des inconvénients des cadres.

Quelques petits autres trucs :

– Avez vous pensez à faire des liens sur les pages des bloggueurs ? Il s’intègre comme n’importe quel autre lien.

– Et aussi il y a des pages de manuel de commande en ligne et en français. Donc il est tout à fait possible de faire un lien de wget par ex vers sa page de manuel en ligne. Il existe aussi l’outil man2html qui permet de convertir une page de manuel en html que vous pourrez mettre dans l’arborescence de votre site.

Voilà c’était juste quelques idées qui, nous pensons peuvent améliorer le site rapport. Nous avions peu d’expérience dans le web, mais en réutilisant des choses bien faîtes on arrive à des résultats agréables.

CJ et AB.