Accès rapide aux articles de la page


Gravatar de Haypo

Améliorer la ligne de commande 

  • 12 votes
    vote oui vote non

En dehors des raccourcis claviers que j'avais déjà abordé, il existe énormément d'astuces pour améliorer la ligne de commande sous Linux. En voici quelques unes pour gagner encore plus de temps avec la ligne de commande.

Complétion avancée

La touche TAB sert à compléter automatiquement les commandes. C'est diablement efficace, mais bash peut faire mieux ! En chargeant /etc/bash_completion, la complétion dépendra du programme utilisé. « kpdf <tab><tab> » n'affichera que les fichiers PDF (et les répertoires). « apt-get install python-<tab><tab> » affiche les paquets Debian installables dont le nom débute par « python- ». Pour l'activer la complétion avancée, ajoutez dans votre ~/.bashrc :

source /etc/bash_completion

Le chargement de bash sera plus long, mais vous serez beaucoup efficace avec votre ligne de commande !

Ignorer les doublons dans l'historique

Par défaut, bash conserve toutes les commandes tapées. J'ai présenté dans mon billet précédent la variable d'environnement HISTIGNORE pour ignorer certains commandes. Pour ne pas sauver un commande saisie plusieurs fois, utilisez :

export HISTCONTROL=ignoredups

Rappel : CTRL+r permet de rechercher une commande déjà tapée en en saisissant quelques lettres.

Utiliser most plutôt que less pour lire du texte

Pour lire un fichier texte, il existe le programme more qui n'est pas très pratique. Le programme less est mieux : il permet de revenir en arrière, rechercher du texte, etc. Il existe encore mieux ! most utilise des couleurs (meilleur rendu des pages de manuel), permet de découper l'écran en plusieurs vues indépendentes, etc. Lisez l'aide intégrée pour les détails. Installez-le avec « apt-get install most » et choisissez-le par défaut en ajoutant dans votre fichier de configuration ~/.bashrc :

export PAGER=most

Activer les couleurs

Plusieurs programmes permettent d'afficher des couleurs mais ne le font pas par défaut pour des raisons de compatibilité avec les anciens terminaux. Activez les couleurs avec :

alias ls='ls --color=auto'
alias grep='grep --color'
alias egrep='egrep --color'

Tailles de fichier avec des unités humaines

L'option « -h » permet d'afficher les tailles avec des unités plus facilement compréhensibles par un humain (19 Ko, 367 Mo, 1 Go, ...) :

alias du='du -h'
alias df='df -h'

La commande ls supporte également l'option.

Passer en mode verbeux

Par défaut, les programmes sont silencieux : ils ne disent pas ce qu'ils font. Or c'est pratique pour vérifier qu'on a bien fait ce qu'on voulait. Aliases pour activer le mode verbeux :

alias ln='ln -v'
alias cp='cp -v'
alias mv='mv -v'
alias rm='rm -v'

Personnaliser l'invite

L'invite est le court texte invitant à saisir une commande, du style « haypo@marge:~$ ». C'est la variable d'environnement PS1 qui contient l'expression pour générer cette invite. « \u » est remplacé par le nom d'utilisateur, « \h » le nom de la machine, « \w » le répertoire de travail, etc.

Je n'aime pas du tout avoir une invite qui contient le répertoire de travail car l'invite prend rapidement toute la largeur de l'écran. J'utilise donc une invite qui ne contient que le nom de la machine :

export PS1='\h$ '

C'est rudimentaire mais efficace. La commande « pwd » me sert à me rappeler où je suis quand je me perd ;-)

Voilà, j'espère que je vous ai appris des trucs, n'hésitez pas à m'en apprendre d'autres en déposant un commentaire !

Retourner au sommaire

Gravatar de Haypo

Éviter les opérations dangereuses en ligne de commande 

L’erreur est humaine, mais pour provoquer une vraie catastrophe, il faut un ordinateur.

Quand on passe trop de temps dans la ligne de commande, on a tendance à oublier qu'on manipule des documents importants et qu'au détour d'une commande on peut les éradiquer à tout jamais ! Voici quelques astuces pour limiter la casse : lignes à ajouter dans votre configuration « ~/.bashrc ».

Option -i pour demander confirmation

Alias qui rajoutent l'option -i sur les opérations dangereuses :

alias ln="ln -i -v"
alias cp='cp -i -v'
alias mv='mv -i -v'
alias rm='rm -i'

Vous pouvez également utiliser l'option -k de tar pour éviter d'écraser les fichiers existant :

alias tar='tar -k'

Option -C de bash

Bash possède une option -C pour interdire les redirections vers un fichier existant :

set -C

Exemple au pif : ça arrive qu'on tape « echo "user:password:" >/etc/passwd » alors qu'on voulait écrire « >>/etc/passwd » :-)

Configurer l'historique

Bash permet de ne pas mettre une commande dans l'historique (touche haut ou CTRL + r) avec la variable HISTIGNORE :

# Ignore commands like:
#  >konsole&<
#  any command starting with a space (eg. " sudo touch /tmp/x")
#  >bg<
#  >fg<
#  >exit<
#  >svn revert*<
#  >hg revert*<
#  >*rm *<   (eg. "svn rm file", "rm -rf dir", ...)
#  >tee *<
export HISTIGNORE='*&: *:[bf]g:exit:*>|*:history*:svn revert*:hg revert*:*rm *:tee *'

Du coup, si vous tapez une commande que vous savez délicate, précédez la d'une espace pour éviter qu'elle soit sauvée (merci acatout pour l'astuce !).

Retourner au sommaire

Gravatar de Haypo

Historique des commandes bash (HISTIGNORE) 

Un ami, toady, m'a appris une super astuce pour l'interpréteur bash : la variable d'environnement $HISTIGNORE. Elle permet d'éviter que certaines commandes soient mises dans l'historique. Voici ma configuration actuelle :

export HISTIGNORE='&:[bf]g:exit:*>|*:history*:svn revert*:svnrevert*:*rm*-rf*:*rm*-f*'
  • « & » évite de sauver plusieurs fois la même commande
  • « [bf]g » ignore les commandes « bg » et « fg »
  • « *>|* » ignore toutes les commandes contenant >| (redirige la sortie dans un fichier même s'il existe déjà)
  • « history* » ignore les commandes contenant « history » (ex: "history|tail")
  • « svn revert* » et « svnrevert* » ignore la commande svn revert (et mon alias svnrevert)
  • « *rm*-rf* » et « *rm*-f* » ignorent « rm -rf » et « rm -f »

Cette configuration m'empêche en particulier de reproduire la boulette suivante :

svn diff > ~/patch
(...)
svn diff >| ~/patch
svnrevert >| ~/patch   # aïe !

Retourner au sommaire

Gravatar de Haypo

Buzz autour de Fusil 

Annonce d'une nouvelle version de Fusil

Estimant que la réécriture du fuzzer Fusil est achevée, j'ai lancé une compagne de buzz pour faire connaître l'outil. J'ai posté un courriel sur les listes de diffusion fuzzing et pen-test. J'ai écrit un journal linuxfr.org. J'ai aussi contacté personnellement des auteurs de fuzzers. Enfin, j'ai enregistré le projet sur Cheeseshop, Ohloh et Freshmeat.

Logs Apache et scripts Python

Hébergeant les sites *.hachoir.org sur mon propre serveur, je peux facilement en consulter les logs Apache. D'ailleurs, j'écris depuis plusieurs mois des scripts Python pour les analyser : apache_log. Je m'intéresse plus particulièrement à l'origine des visiteurs. Apache enregistre l'IP du visiteur, son « user-agent » et l'url d'où il provient (referrer).

Lassé de taper « host 84.74.168.(...) » pour voir d'où vient chaque visiteur, j'ai écrit un nouveau script (host.py). Il prend en entrée un fichier de log et génère un rapport HTML listant les reverse-dns triés selon le nombre de hits. Les résultats du reverse-dns sont mis en cache durant une semaine (stocké dans un fichier). Le reverse-dns est simplifié : « lns-bzn-29-82-248-234-136.adsl.proxad.net » est affiché « www.proxad.net ». Ceci permet de regrouper les visiteurs venant du même réseau. Consultez parser.py et host.py pour les détails

Analyse des visiteurs de fusil.hachoir.org

En à peu près 24h, j'ai vu passer :

  • Laboratoires de recherche : France Telecom (R&D), INRIA, INRA, Motorola Laboratories, CERN, CERT, CEA
  • Entreprises : Virgin Media, Ericsson, Microsoft, Roche, STMicroelectronics, Alcatel, FlightSafety, Digital Defense, Daimler, MWR InfoSecurity, Cisco, Rockwell Collins, VMware, TippingPoint, EADS, Juniper, Qualys, CXR Anderson Jacobson, atsec
  • Agences gouvernementales : US Office of Personnel Management (OPM), Conseil de l'Europe, Sandia National Laboratories (États-Unis)
  • Pays : France, États Unis, Israël, Turquie, Belgique, Italie, Allemagne, Suisse, Russie, Brésil, Ukraine, Japon, Argentine, Chine, Nouvelle Zélande, Finlande, Hongrie, Canada, Taïwan, Pologne, Philippines, République dominicaine, Île Christmas
  • Universités :
    • France : Université de Technologie Compiègne ; Université de Rennes 1 ; CNAM ; Grande ecole d'ingenieurs informatique electronique telecoms reseaux biomédical ; Université de Versailles Saint-Florent-en-Yvelines ; Université Lille 3 ; Université de Limoges ; École Nationale Supérieure des Télécommunications de Bretagne ; Académie de Rouen
    • Autres pays : Universität Hamburg (Allemagne) ; Facultés Universitaires - Notre Dame de la paix - Namur (Belgique) ; Universiteit van Amsterdam (Pays-bas) ; Cranfield University (Angleterre) ; National Chiao Tung University (Taïwan) ; University of California Berkeley (États-Unis) ; Oxford Brookes University (Angleterre) ; Massey University (Nouvelle Zélande)

(je me suis aidé de la liste Wikipédia des domaines de premier niveau pour les domaines nationaux que je ne connaissais pas)

Que faut-il comprendre de toutes ces informations ? Bah déjà que le fuzzing intéresse beaucoup de monde :-) Sinon, ce n'est pas parce qu'un employé quelconque de Microsoft a cliqué sur mon site que le prochain Windows sera exempt de bug. Je ne pense pas non plus que ces informations soient très fiables, beaucoup de traffic provient de robots automatiques qui parcourent Internet nuit et jour. Par contre, je dois avouer que je suis plutôt fier de voir passer des hits en provenance des réseaux du CEA, EADS et du CERT :-)

Retourner au sommaire

Gravatar de Haypo

PC SOFT et WinDev 

Depuis plusieurs années, je voyais des publicités pour le logiciel WinDev dans divers magazines d'informatique. N'ayant aucune connaissance l'utilisant, je m'étais toujours demandé quels en sont les usages. J'étais également étonné du peu de sites Internet dédiés à l'outil. Je me suis alors attardé sur le site Internet de PC SOFT pour récolter un maximum d'informations. Pour éviter de colporter des bêtises, j'ai pêché un maximum d'informations dans divers forums, en particulier le newsgroup fr.comp.developpement.agl.windev.

PC SOFT

PC SOFT est une éditeur de logiciel français basé à Montpellier. La société existe depuis 1984 et s'est fait connaître avec son éditeur d'écran pour MS-DOS : High Screen. Ce logiciel s'intègre à divers langages de programmation (C, Pascal, Cobol, ...). Il est doté d'une base de données appelée Hyper File. Renommé Hyper Screen en 1992, il servira de fondement à son successeur : WinDev. Ce dernier est qualifié d' « Atelier de Génie Logiciel » (AGL) par son éditeur. WinDev est constitué :

  • d'un éditeur d'interface utilisateur
  • d'un langage de programmation : le WLangage
  • d'un éditeur de code source
  • de la base de données Hyper File
  • d'outils de modélisation (Merise et UML)

WinDev excelle dans la réalisation d'interfaces de saisie

Les captures d'écran et vidéos de démonstrations montrent qu'on peut dessiner facilement de belles interfaces. Chose délicate et pénible avec d'autres outils. Pour vous en faire une idée, visionnez la vidéo surcharge d'IHM et de code. De nombreuses fonctionnalités visent à améliorer l'interface utilisateur comme la mémorisation des valeurs saisies par l'utilisateur (persistance des champs) ou le grisage automatique des fenêtres inaccessibles.

PC SOFT soigne son image

[1997] Le webmestre du site Windev® Development Center, Pierre Fauque, est contacté par PC SOFT au sujet de son site Internet. Il utilisait le logo WinDev sans autorisation, le nom WinDev n'avait pas le suffixe ® (registred : nom déposé), et il n'était pas clairement indiqué que ce site n'est pas celui de PC SOFT. Lisez les échanges par courriel pour les détails.

[1999] En septembre 1999, Joël VARTIN de la société Oriom pose une question au support PC SOFT sur les performances de WinDev. Il évoque une rumeur sur de mauvaises performances. On peut s'étonner de la formulation de la réponse de PC SOFT : « La rumeur à laquelle vous faite allusion est ridicule, dénuée de tout fondement, et pourrait s'interpréter comme du dénigrement ou de la diffamation ».

[2006] Marc Lussac, fondateur de la communauté developpez.com, expliquait en janvier 2006 que l'ouverture d'un forum WinDev ne pouvait se faire sans l'aval de son éditeur : « On aimerait bien avoir une rubrique Windev mais on n'a pas reçu l'autorisation de PC SOFT, (...) et sans autorisation on ne peut rien faire ». Le forum existe aujourd'hui, Marc a sûrement fini par obtenir l'autorisation en question.

[2007] Les articles Wikipédia concernant les logiciels PC SOFT sont régulièrement modifiés par PC SOFT en sa faveur depuis une adresse IP de l'entreprise (81.80.226.153). Plusieurs personnes s'en plaignent dans la page de discussion de WinDev.

L'affaire Beaussier

Cyril Beaussier était un utilisateur WinDev de longue date. Il appréciait l'outil jusqu'au jour où il a ouvert plusieurs sites Internet dénigrant PC SOFT et son produit phare WinDev. Il a publié ses sites sous le pseudonyme Gérard Menvussa (Gégé) :

En octobre 2002, PC SOFT arrive à faire fermer ces sites en l'exigeant au près des différents hébergeurs (sans prévenir Cyril par contre). Le 11 février 2003, Cyril reçoit une assignation en justice. Le 13 mars 2003, il perd le procès : on lui interdit toute diffamation de PC SOFT et de leurs produits, et la fermeture de ses sites Internet (ce qui avait déjà été fait). Cyril a écrit de nombreuses informations sur son procès dans son forum. Lisez également l'article WinDev Trivia de l'auteur néerlandais Peter.

L'association WinD'Asso

En octobre 2000, une soixantaine de personnes de divers pays (France, Belgique, Hollande, Italie, Afrique, Canada, États-Unis, ...) émettent le besoin de se regrouper pour être plus fort et plus efficace. Le 22 décembre 2000, les status de l'association WinD'Asso sont déposés auprès de la préfecture des Alpes-Maritimes.

L'association a, entre autres, constistué une liste des dysfonctionnements (bugs) des différentes versions de WinDev. À l'heure où j'écris ces lignes, on y trouve 115 bugs ouverts et 82 bugs fermés ce qui donne un total de 207 bugs référencés.

Marketing WinDev

Voici quelques phrases extraites du site Internet de WinDev :

  • « AGL sans concurrence »
  • « 100% des besoins sont couverts »
  • « Horizon infini »
  • « Gain productivité phénoménal »

WinDev est aussi une cascade de nombres : « AGL numéro un en France », « Développer 10 fois plus vite », « 100 clients témoignent », « 500 nouveautés » et le bouquet final « HyperFile 10 milliards d'enregistrements ».

Conclusion

On peut se demander pourquoi PC SOFT est tellement agressif quant à la protection de son image. Je vous conseille d'aller faire un tour dans les différents forums WinDev. Les discussions y sont souvent houleuses.

En attendant, je suis d'autant plus heureux de travailler sous Linux et de n'utiliser que des logiciels libres !

Les marques Windev®, Webdev®, Hyper File® sont déposées par la société PC SOFT.

Retourner au sommaire

Gravatar de Haypo

Remplacez le plugin propriétaire Flash par swfdec 

Swfdec est un logiciel libre destiné à lire les animations Flash. Le projet a été inité en novembre 2002 par l'américain David Schleef aka ds et est aujourd'hui maintenu par l'allemand Benjamin Otte aka company. Aujourd'hui, swfdec supporte Flash jusqu'à sa version 7. Depuis un an ou deux, je teste régulièrement le projet sans succès. En persévérant, j'ai réussi aujourd'hui à utiliser la version 0.5 qui marche au poil ! La compilation et l'installation se sont presque bien déroulées et j'ai réussi à lire une vidéo Youtube !

Installer swfdec

J'ai téléchargé swfdec-0.5.tar.gz (choisissez la dernière version). Pour le compiler, j'ai d'abord installé les dépendences libmad0-dev, libgstreamer0.10-dev et liboil0.3-dev, puis j'ai utilisé la commande « ./configure --disable-ffmpeg --disable-gnome-vfs » (pour éviter d'avoir à installer les dépendences ffmpeg et Gnome). La bilbiothèque MAD est utilisée pour lire le son (MPEG Audio : « mp3 »), Gstreamer pour afficher la vidéo (codec H.263), liboil contient des fonctions généralistes et basiques mais fortement optimisées pour chaque type de processeur.

swfdec : bogue Alsa dans swfdec_playback.c

J'ai eu une erreur sur le fichier « libswfdec-gtk/swfdec_playback.c » à la ligne « #include <alsa/asoundlib.h> ». En cherchant, je suis tombé sur le bogue libasound2-dev: Please make libasound header C99 compatible (bogue Debian connu depuis janvier 2007). Pour contourner le bogue, on peut ajouter « #define _BSD_SOURCE », « #define _SVID_SOURCE », « _POSIX_C_SOURCE 199309 » ou encore « #define __need_timespec » (solution que j'ai choisie car je pense qu'elle a le moins d'effets de bords). Pour résumer, dans le fichier « libswfdec-gtk/swfdec_playback.c », on obtient :

(...)
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#define __need_timespec
#include <alsa/asoundlib.h>
(...)

Installer swfdec-mozilla

J'ai téléchargé swfdec-mozilla-0.5.tar.gz. Pour le compiler, j'ai utilisé la commande « ./configure --prefix=/usr --with-plugin-dir=/usr/lib/mozilla-firefox/plugins » (adaptez-la si vos greffons Firefox ne sont pas installés dans « /usr/lib/mozilla-firefox/plugins »).

Faites vous plaisir !

Allez hop, on teste avec la vidéo de la Commission Européenne (Film lovers will love this!) :

Mince alors, ça marche ! Par défaut, swfdec met l'animation en pause : il faut cliquer dessus pour l'activer. La vidéo tourne et il y a du son, c'est l'orgasme !

Bon, en y regardant de plus près, il y a quelques bogues mais ça semble tout de même utilisable. Vivement le greffon Konqueror ;-)

Retourner au sommaire

Gravatar de Haypo

Logiciel libre nourri à la motivation 

Pour avoir contribué à plusieurs projets libres, en particulier Wormux et Hachoir, j'ai élaboré une théorie sur les logiciels libres. Étant donné qu'aucun contributeur n'est rémunéré, mise à part de rares exceptions, je pense qu'un logiciel est nourri par la motivation. En particulier, lorsque la motivation baisse, le rythme du développement chutte pouvant le conduire à sa mort.

Je pense que lorsqu'on décide de donner naissance à un logiciel libre, il faut jauger précisément ses objectifs en fonction des ressources disponibles (comprendre : le nombre personnes motivés). Une fois que le projet est lancé, il faut conserver l'intérêt en se fixant des objectifs simples réalisables en 2 mois au grand maximum.

Il faut aussi être à l'écoute des utilisateurs car ce sont eux qui mettent à mort un projet en dédaignant s'y intéresser. Effectivement, je pense que la motivation est nourrie par la fierté de participer à un projet utile. Plus le projet est populaire et médiatisé, plus on est encouragé à l'améliorer.

Trop de projets sont renfermés sur eux-même : ses auteurs développent pour leur propre plaisir en ignorant complètement l'utilisateur final. Je pense par exemple aux interfaces inadaptés au commun des mortels : la ligne de commande, une fenêtre bourrée d'options inutiles, etc. Il s'en suit un problème de communication : le développeur insiste sur la qualité du code au lieu de mettre en avant les fonctionnalités visibles par l'utilisateur.

Pour finir, le succès d'un logiciel libre n'est pas lié aux fonctionnalités proposées mais plutôt au fait qu'il soit adapté aux besoins de l'utilisateur et au marketing autour du projet.

Note : ce billet est également une autocritique de mon projet Hachoir qui peine à trouver son public ;-)

Retourner au sommaire

Gravatar de Haypo

Schéma de la hiérarchie des autotools 

Histoire d'affronter ma phobie (irrationnelle ?) des autotools(*), j'ai décidé de documenter un peu cette suite d'outils dans mon wiki ainsi qu'en dessinant une schéma présentant l'organisation des différents fichiers et programmes (schéma ci-dessous).

(cliquez sur l'image pour la voir en taille réelle)

Le schéma comporte sûrement des imprécisions voir même des erreurs. Un ami m'a signalé par exemple que je n'ai pas noté l'outil autoscan. Je ne veux pas l'ajouter sous peine de surcharger ce schéma déjà énorme. En tout cas, je me suis bien amusé avec Dia (outil de dessin vectoriel, spécialisé dans les diagrammes). En jouant sur les couleurs, on arrive à un résultat que je trouve pas dégueux.

J'espère que ce schéma servira à d'autres pour pénétrer l'univers des autotools :-)

Note (*) : Les autotools sont une suite d'outils servant à construire un logiciel à partir de son code source (le « compiler » en argot informatique).

Retourner au sommaire

Gravatar de Haypo

Bogue Firefox vieux de 7 ans 

Dans l'utopie du logiciel libre, un projet est mené par toute une communauté de gens où chacun participe à sa manière. En particulier, les développeurs écrivent le code source et les utilisateurs testent le programme. Quand un utilisateur trouve un bogue, il le rapporte et le développeur s'empresse de le corriger. En pratique, la dernière phrase est incorrecte : certains bogues ne sont corrigés que tardivement.

Aujourd'hui je suis tombé sur un bogue dont m'avait parlé un ami : le navigateur Mozilla Firefox tronque les « infos bulles » des images (texte affiché lorqu'on fige la souris sur une image). Le problème affecte le site de la bande dessinée xkcd dont la FAQ en parle justement.

Je suis alors tombé sur l'extension Firefox nommée Long Titles qui permet d'afficher le titre complet des images. Le bogue est pourtant connu depuis Juillet 2000 (SeaMonkey-only bug: Long tooltips) et a plus de 300 commentaires ! Il y a 7 ans Firefox n'existait pas encore, c'était la suite Mozilla qui était distribuée dans sa version 0.6.

Je vais éviter de faire un comparatif avec le logiciel propriétaire ou d'autres logiciels libres car je n'ai pas le temps de le faire. Je vais également éviter de dire que le navigateur que j'utilise, Konqueror, n'a pas ce bogue car il y a plusieurs autres que je connais :-) Je trouve quand même ça drôle qu'un bogue survive 7 ans et que des gens continuent le rapporter ! Pourtant, il me semble trivial à corriger, je ne comprend pas pourquoi ce n'est pas le cas.

Retourner au sommaire

Gravatar de Haypo

Nom de code : Linux 

Sous ce titre se cache un reportage sur Linux, le système d'exploitation libre basé sur le noyau du même nom. Ce reportage a été réalisé par le finlandais Hannu Puttonen en 2002. Étant co-produit par Arte et France5, il a également été diffusé sur Arte. Pour le visionner, vous pouvez demander à Google Vidéo ou vous le procurer en DVD (bonne chance...).

On y apprend d'où vient l'idée même de Linux d'une part le noyau avec Linus Torvalds et de l'autre le projet GNU avec Richard Stallman. D'autres « stars » du libre sont interviewées :

Le reportage dure 51 minutes dans la version française et 59 minutes dans la version originale. Le rythme est assez lent, il y a de nombreuses séquences avec des images censées représenter le monde des hackers que personnellement je trouve dénuées de sens. Mais dans l'ensemble il est très instructif.

Pour les assoifés d'informations : consultez le site officiel du reportage. Si ça ne vous a pas suffit, allez voir (ou revoir) « Le pacte des Gnous ». C'est un court métrage de 4 minutes réalisé par Bruno Thomé qui présente de manière assez caricaturale Linux face à Microsoft. Pour finir, merci à mickael__ pour m'avoir parlé de ce reportage :-)

Retourner au sommaire

©2007 :: Hébergé par Tux-planet :: Valid CSS & XHTML :: Version 3.2.1

web tracker