Utilisateur:Guil/Technique

Un article de Wikipédia, l'encyclopédie libre.

[modifier] commandes Unix à détecter les faux-nez

Copié du Bistro - si je suis élu membre du CAr, ça sera utile. .: Guil :. causer 16 mars 2006 à 10:57 (CET)

Voici des commandes Unix qui affichent les contributions que deux utilisateurs ont fait en même temps (même jour, heure, minute). Enfin s'il n'y a pas de bug :-). Exemple :

  1. Sauver http://fr.wikipedia.org/w/index.php?title=Special:Contributions&target=Lauriane&offset=0&limit=5000 dans Lauriane.htm
  2. Sauver http://fr.wikipedia.org/w/index.php?title=Special:Contributions&target=Kouroineko&offset=0&limit=5000 dans Kouroineko.htm
  3. egrep '<li>[1-9][0-9]?' Lauriane.htm |cut -b 5-|cut -f 1-5 -d ' '|sort|uniq >Lauriane
  4. egrep '<li>[1-9][0-9]?' Kouroineko.htm |cut -b 5-|cut -f 1-5 -d ' '|sort|uniq >Kouroineko
  5. cat Lauriane Kouroineko | sort | uniq -d > LaurianeKouroineko

Et voilà, le fichier LaurianeKouroineko contient la liste des collisions. Marc Mongenet 16 mars 2006 à 06:04 (CET)

Et il contient quoi, ce fameux fichier ? -Ash Crow - (ᚫ) 16 mars 2006 à 06:05 (CET)
Rien :-) Marc Mongenet 16 mars 2006 à 06:11 (CET)
Et à 10 minutes près, 3 résultats : 17 décembre 2004 à 23:5, 17 juin 2004 à 22:2, 9 janvier 2004 à 12:4. Marc Mongenet 16 mars 2006 à 06:59 (CET)

Pour prendre une plage plus large, on peut ignorer les minutes et ne prendre que les dizaines de minutes, avec :

  • egrep '<li>[1-9][0-9]?' Mongenet.htm |cut -b 5-|cut -f 1-5 -d ' '|rev|cut -b 2-|rev|sort|uniq >Mongenet

Marc Mongenet 16 mars 2006 à 06:10 (CET)


Le principe me semble bon. Reste à débugguer et attendre qu'un gentil matheux nous donne la formule calculant la probabilité de faux-nez. :-) Marc Mongenet 16 mars 2006 à 06:15 (CET)

Un exemple de résultat, quelques collisions entre Ash Crow et Marc Mongenet :

10 février 2006 à 18:57
11 février 2006 à 02:21
11 février 2006 à 02:56
11 janvier 2006 Ã  00:48
11 janvier 2006 Ã  03:24
12 février 2006 à 03:03
14 mars 2006 Ã  16:30
14 novembre 2005 Ã  12:40
15 décembre 2005 à 17:44

Marc Mongenet 16 mars 2006 à 06:56 (CET)

En tous cas, moi j'ai trouvé le Poulpe caché sur cette page... Viens Poupoulpe !!! -- GP | 16 mars 2006 à 07:15 (CET)
Cépamoa ! — Poulpy 16 mars 2006 à 09:01 (CET)

[modifier] Quelques scripts pour aider

J'ai scripté tout ça : un répertoire réservé, dans lequel j'ai mis 3 sous-répertoires :

  • un répertoire Brut (destiné à recevoir les sources HTML des pages de contribs)
  • un répertoire Net (dans lequel est généré automatiquement la liste "épurée" des contributions
  • un répertoire Collisions (où sont tous les fichiers de collisions entre utilisateurs deux à deux)

Dans mon répertoire Brut, un script shell nommé script.sh :

 #!/bin/bash
 egrep '<li>[0-9][0-9]?' $1 | cut -b 5- | cut -f 1-5 -d ' ' | sort | uniq -u > ../Net/$1.ctr
 rm $1

Il suffit de le rendre exécutable, et hop : ./script.sh Pabix.htm par exemple

Dans mon répertoire Net, un script shell nommé merge.sh :

 #!/bin/bash
 for i in $(ls *ctr)
 do
  for j in $(ls *ctr)
  do
  if [ "$i" \< "$j" ]
  then
  echo "Contributions de $i $j"
  cat $i $j | sort | uniq -d > ../Collisions/$i\#$j
  echo -n "Collisions : "
  wc -l ../Collisions/$i\#$j | cut -f 1 -d ' '
  echo
  fi
  done
 done

L'exécution de ce script crée autant de fichiers que de couples d'utilisateurs, dans le répertoire Collisions.

En gros : Sauver la liste des contributions dans un fichier sous le répertoire Brut, appeller script.sh, aller dans Net et appeller merge.sh à partir du moment où on a les contribs de plusieurs utilisateurs.  Pabix  16 mars 2006 à 07:58 (CET)

[modifier] Pour tout faire en ligne

Un script sommaire qui télécharge et compare en utilisant des fichiers temporaires dans /tmp

#!/bin/bash
wget "http://fr.wikipedia.org/w/index.php?title=Special:Contributions&target=${1}&offset=0&limit=5000" -O "/tmp/$1" -o /dev/null
wget "http://fr.wikipedia.org/w/index.php?title=Special:Contributions&target=${2}&offset=0&limit=5000" -O "/tmp/$2" -o /dev/null
egrep '<li>[0-9][0-9]?' "/tmp/$1" | cut -b 5- | cut -f 1-5 -d ' ' | rev | cut -b 2- | rev | sort | uniq > "/tmp/$1.1"
egrep '<li>[0-9][0-9]?' "/tmp/$2" | cut -b 5- | cut -f 1-5 -d ' ' | rev | cut -b 2- | rev | sort | uniq > "/tmp/$2.1"
rm "/tmp/$1" "/tmp/$2"
cat "/tmp/$1.1" "/tmp/$2.1" | sort | uniq -d
rm "/tmp/$1.1" "/tmp/$2.1"

Par exemple à lancer ainsi :

./collisions Aoineko Marc_Mongenet

Marc Mongenet 16 mars 2006 à 08:22 (CET)