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 :
- Sauver http://fr.wikipedia.org/w/index.php?title=Special:Contributions&target=Lauriane&offset=0&limit=5000 dans Lauriane.htm
- Sauver http://fr.wikipedia.org/w/index.php?title=Special:Contributions&target=Kouroineko&offset=0&limit=5000 dans Kouroineko.htm
- egrep '<li>[1-9][0-9]?' Lauriane.htm |cut -b 5-|cut -f 1-5 -d ' '|sort|uniq >Lauriane
- egrep '<li>[1-9][0-9]?' Kouroineko.htm |cut -b 5-|cut -f 1-5 -d ' '|sort|uniq >Kouroineko
- 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)
- Rien :-) Marc Mongenet 16 mars 2006 à 06:11 (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)