Mot-clef « Archive »

AMT : archiver ses tweets

Ça faisait longtemps que je voulais sortir mes tweets et favoris de Twitter et ce pour plusieurs raisons :

  • éviter de perdre ce qui est supprimé (y compris les images)
  • faire des recherches efficaces (Twitter est lamentable de ce côté là)
  • garder tout ça chez moi sous mon contrôle

En début d'année, je me suis finalement décidé à prendre le temps de regarder ce qui existait. J'ai fini par tomber sur Archive My Tweets qui semblait faire ce que je voulais. Et que j'ai donc installé : bingo, mes tweets sont exportés \o/

Du coup, forcément, j'ai commencé à modifier un peu le thème et traduire l'interface en français... et là c'est le drame. Comme souvent quand on creuse un peu ben c'est bugué et très limité :

  • les retweets sont tronqués
  • le thème n'est pas remplaçable sans écraser les fichiers
  • pas de système de traduction de l'interface et, pire, la moitié des textes sont directement dans le code et pas dans les templates
  • ...

Au premier bug je me dis que vais le corriger puis proposer les corrections à l'auteur. Au troisième gros changement, je laisse tomber l'idée et je pars sur un fork.

Du coup de fil en aiguille j'ai dû réécrire plus de la moitié du code pour aboutir à une application qui :

  • archive mes tweets, retweets et favoris
  • archive les images et avatars qu'ils contiennent (c'était nécessaire pour pouvoir les afficher et de toutes façons c'est pas plus mal, comme ça ils sont archivés aussi)
  • permet de rechercher dans l'ensemble des tweets et de filtrer entre tweets, retweets, favoris et réponses
  • gère des traductions de l'interface (français et anglais même si je ne garantis rien sur la qualité de la seconde)
  • permet d'ajouter d'autres thèmes graphiques

J'envisage d'autres améliorations encore mais c'est déjà pas mal :)

Le code est évidemment libre (hébergé sur la forge de Framasoft) et j'ai même pris le temps de le documenter ! Quand à mon instance à moi, elle est consultable ici : tweets.darathor.net.

L'application n'est pas encore totalement stable mais n'hésitez pas à la tester. Par contre si vous l'utilisez effectivement, n'hésitez pas à m'en avertir parce que tant que personne d'autre que moi ne s'en sert, je ne perdrai pas de temps à publier des procédures de migration lors des mises à jour...

Voilà voilà... Ça faisait longtemps que j'avais plus fait un article pour autre chose qu'ironiser sur la dérive sécuritaire ^^

PS : Bon par contre, j'ai eu la mauvaise surprise de constater qu'en terme de favoris, on ne peut récupérer que les 3200 derniers (et contrairement aux tweets et retweets ils ne sont pas dans l'archive qu'on peut exporter depuis son compte). Et j'ai bien l'impression qu'ils sont vraiment perdus parce que j'ai pris le temps de supprimer tous ceux que j'avais exportés mais je suis juste arrivé à une liste vide, aucune trace des plus anciens... Ou comment perdre 10000 tweets que j'avais mis en favoris justement pour en garder une trace :blase: Ça m'apprendra à faire confiance à un silo.


Quelques trucs sur UNIX/Linux #3

Supprimer un grand nombre de fichiers

Quand on a un très grand nombre de fichiers dans un dossier, un simple rm xxx* ne fonctionne pas forcément. J'ai eu le cas notamment avec des sessions PHP qui ne s'effaçaient pas correctement et qui du coup s'accumulaient en masse.

Une solution qui fonctionne est de passer par find :

find . -name 'sess_*' | xargs rm

(source)

Supprimer les .svn d'un répertoire

SVN place un dossier .svn dans chaque dossier d'un projet (contrairement à GIT qui se contente d'un unique dossier .git à la racine).

Pour supprimer l'ensemble des fichiers .svn d'une arborescence, on peut passer par cette commande qui utilise encore une fois find :

find -type d -a \( -iregex ".*/.svn" \) -exec rm -rf {} \;

Exclure des dossiers d'un grep

Pour exclure des dossiers d'un grep, on utilise l'option --exclude-dir. Par exemple pour exclure le dossier .git lors d'une recherche dans des fichiers :

rgrep 'toto' modules/ framework/ --exclude-dir=.git

Du coup pour mes recherches dans le code de Change, je me suis fait cet alias dans mon .bashrc :

alias crep='rgrep --exclude-dir=.git'

On peut également passer par l'option --exclude.

(source)

Exclure des dossiers d'un tar

Les archives de mon serveur devenant un peu trop grosses, j'ai dû mettre en place quelques exclusions de dossiers (par exemple ne plus sauvegarder les logs, caches et médias formatés de mes sites sous Change).

Pour cela je suis passé par l'option -X (ou --exclude-from=) de tar qui permet d'indiquer un fichier contenant les motifs à exclure.

Exemple :

tar cvf archive.tar /home/change -X exclude.txt

Avec un fichier exclude.txt contenant :

/home/change/repository
/home/change/instances/*/log
/home/change/instances/*/cache
/home/change/instances/*/build
/home/change/instances/*/media/formatted
/home/change/instances/*/www
/home/change/instances/*/repository

Attention les motifs sont comparés aux chemins tels que vous les avez décrits. Dans mon exemple, j'ai un chemin absolu pour le dossier à archiver, il faut dont des motifs qui matchent ce chemin. Si j'avais donné un chemin relatif, j'aurais dû revoir mes motifs d'exclusion en conséquence.

On peut également utiliser --exclude en indiquant directement un motif à exclure. Mais c'est moins pratique quand on a toute une liste d'exclusions.


Altération des archives gzip lors d'un téléchargement

Il y a quelques temps, j'ai mis en ligne un pack de smileys pour le logiciel de messagerie instantanée Pidgin. Ce pack contient les smileys utilisés sur mes forums, comme je l'avais déjà fait pour Adium (car oui, Adium est excellent mais ne tourne que sur Mac, donc quand on est sous Windows, il faut se rabattre sur autre chose et Pidgin reste le moins mauvais que j'ai pu trouver...).

Pour générer ce pack, j'ai utilisé le convertisseur que j'avais déjà codé pour le pack Adium et qu'il serait temps que je finalise pour le publier...

Mais là n'est pas le propos de cette note. En effet, j'ai constaté plus tard, quand certaines personnes ont voulu exploiter ce pack, que le pack ne s'installait pas systématiquement. En fait le problème vient du fait que Firefox (de même qu'Opera et Safari dans leurs dernières versions) altère légèrement le fichier du pack qui est une archive gzip.

En effet quand j'ouvre le fichier téléchargé, au lieu de trouver directement dedans le fichier .tar que je devrais y trouver, je tombe sur une sorte de dossier intermédiaire du nom du fichier. Ce "dossier" apparait lors du téléchargement uniquement puisqu'il n'est pas présent sur le fichier avant l'envoi, pas plus que lors d'un téléchargement via IE6 ( eh oui, j'ai encore de vieux trucs sur mon PC, même si je ne m'en sers que pour des tests :p ).

Je n'ai testé ça que sous Windows et je ne sais pas ce qu'il en est des versions Linux et Mac de ces différents navigateurs mais sur Windows le problème est réel (du moins pour des archives publiées via un site tournant sous WordPress, mais je ne pense pas que ça vienne de là).

Je soupçonne que ça puisse venir de l'aptitude qu'ont les navigateur à recevoir de pages compressés en gzip par le serveur et des les décompresser à la volée : l'archive étant dans ce format, peut-être le navigateur fait-il un truc pas net avec ? Peut-être aussi qu'il y aurait des en-têtes particulières à envoyer pour résoudre le problème... ou peut-être pas.

Quoiqu'il en soit, la solution la plus simple que j'ai trouvée pour l'instant reste de fournir une archive .zip contenant l'autre archive. Là, pas de problème, il n'y a pas d'altération.