vendredi 24 janvier 2014

Partager ses mots de passes entre Ubuntu / Android / et ta mère

En langage abscon :  Password / Database / Http tunnel / Browser / Cloud / Android

Ma source anglophone.

Qu'est ce que c'est Kee truc et Pass truc ?
C'est des logiciels qui permettent d'enregistrer tous vos mots de passes à un seul endroit. L'accès à cet endroit est bien sûr protégé par un mot de passe, vous n'en avez donc plus qu'un à enregistrer en mémoire cervicale. De plus, ils permettent de générer des bons de mots de passe, car oui, il y a des mauvais mots de passe (abcde123)

Alors, la question, c'est pourquoi passer à KeePass?
  • Parce que LastPass est une solution commerciale qui enregistre vos mots de passe sur un serveur à eux, vous n'avez pas le contrôle, et ça, c'est pas bien.
  • Pour utiliser LastPass sur votre téléphone Android, il faut payer.
Et puis pourquoi NE PAS passer à KeePass ?
  • LastPass a une base de donnée centralisée dans le Cloud comme on dit, ce n'est pas la cas de KeePass. Mais ce qu'on va faire, c'est la sauvegarder avec UbuntuOne et tout de même lire / modifier le même fichier entre différentes machines / téléphones.
  • Ca demande de la config et ça fait mal à la tête.
Installer KeePass sur ubuntu + Firefox :
sudo apt-get install keepass2 mono-complete
Oui, il faut installer Mono, car keepass est programmé en .NET, ça c'est un peu le côté obscur de l'histoire.

Afin de permettre la communication entre firefox et keepass : Copier le fichier KeePassHttp.plgx du projet keepasshttp dans /usr/lib/keepass2/plugins/

Installer le module PassIFox dans Firefox.

Installez UbuntuOne si ce n'est encore fait, et après avoir ouvert KeePass, enregistrez votre base de donnée (vide) dans le "Cloud" (je déteste ce mot! Avez-vous des synonymes ? "sur le net", "dans la toile", "dans le cul" euh non... )

Alors, si vous étiez comme moi un utilisateur de LastPass, il est l'heure de migrer.
  • Dans LastPass : lastpass > outils > outils avances > exporter > csv file
  • Dans KeePass: importer > generic CSV file. Dans structure, utilisez l'ordre suivant pour les champs : URL, User Name, Password, (Ignore), Title et Group. 
 Sur votre téléphone Android :
  • Installer KeePassDroid + UbuntuOne.
  • Dans UbuntuOne, téléchargez votre base de donnée kdbx sur votre téléphone.
  • Ouvrez le fichier dans KeePAssDroid.


mardi 21 janvier 2014

Script qui scanne une page web tous les x minutes et envoie une notification

En langage abscon: wget / if true then notification / loop / cron

Tu aimerais t'inscrire sur le site de grtgyh.com pour être le premier à recevoir le truc top que tout le monde va t'envier, et qui va t'offrir le respect  / l'amour éternel. Mais petit problème, les demandes sont nombreuses, et les offres rares, ils ouvrent leurs inscriptions une fois tous les Random(x) jours, et dans les 5 minutes, toutes les inscriptions sont raflées, et il ne reste rien pour toi, pauvre choux !

J'ai la solution à tes malheurs, un script qui va scanner le site web en question toutes les minutes et t'avertir sur ton téléphone android dès que les inscriptions seront ouvertes !

Prérequis :
  • Avoir une machine linux qui tourne 24h/24. (Un Raspberry Pi par exemple?)
  • Sur cette machine avoir installé le package curl (sudo apt-get install curl)
  • Avoir créé un compte sur le site web Notify my android + avoir installé l'application sur ton téléphone avec les infos de ton compte nouvellement créé.

Tu vas aller sur le site de notify my android, et puis tu vas créer une clef (My Account > Manage API keys > Generate new key) et tu la retiens dans ta petite tête.

Tu télécharges le script nma.sh, tu écris la valeur de ton API key dans la variable APIKey (15e ligne).

Et puis tu peux faire un test pour voir si tu reçois bien les notifivations sur ton téléphone:
./nma.sh check_tram_events free 2014-01-22 1

Et on en vient à mon exemple: Je voudrais organiser un repas en amoureux avec mon amoureuse dans un tram à Bruxelles. 

Mais les réservations sont toutes complètes jusque le 1er mars (dernière date disponible). Et ils disent qu'il faut revenir régulièrement pour voir si de nouvelles dates ne sont pas disponibles. Bon, alors, on va sortir notre arme fatale!

Dans firebug (F12 dans le navigateur), je peux voir que dans le calendrier quand je clique sur une date, il fait un appel AJAX qui affiche le détail pour la journée.

On peut voir que le calendrier (quand on clique sur une date), fait appel à http:// ticketing . visit brussels . be / index.php/fr/order/dispos-by-date et qu'il donne en paramètre en POST la date choisie, ici : date = 2014-03-01

Donc, si on veut avoir le résultat de cet appel en console, on écrirait :
wget -qO- --post-data="date=2014-03-01" http:// ticketing . visit brussels . be / index.php/fr/order/dispos-by-date

On va faire une boucle sur cette commande pour les prochaines dates avenir, s'il y a un résultat (que la page n'est pas vide), on notifie mon téléphone. On va créer le script notice_for_a_free_tram.sh
#!/bin/sh
LOG_FILE=/tmp/tram-events-checking.txt
NOW=$(date +"%d-%m-%Y %k:%M")
FILE_FOUND=/tmp/tramfound
if [ !  -f "$FILE_FOUND" ];
        then
        for datereservation in 2014-03-08, 2014-03-09
        do
                RESULT_PAGE=$(wget -qO- --post-data="date=$datereservation" http://ticket.com | grep -B3 -A5 "2 personnes")
                if [ -n "$RESULT_PAGE" ];
                        then
                                ./nma.sh check_tram_events free $datereservation 1
                                echo "$NOW: $datereservation is AVAILABLE!!!" >> $LOG_FILE
                                echo "found" > $FILE_FOUND
                                exit 1
                        else
                                echo "$NOW: $datereservation is unavailable"  >> $LOG_FILE
                                if [ -f "$FILE_FOUND" ];
                                        then
                                        rm $FILE_FOUND
                                fi
                fi
        done
fi
exit 1
Il ne reste plus qu'à ajouter une tâche cron associée à ce script:
crontab -e
*/5 * * * * /home/user/check_website/check_tram_events.sh

Et pour être rapide lorsque la fameuse notification arrivera, à chaque lever de soleil, faites un étirement de doigt et remémorez-vous votre numéro de carte de crédit. Amen.

lundi 6 janvier 2014

Est-ce qu'on peut rouler la nuit (en voiture) avec la lampe intérieur allumée ?

Eh ben contrairement à ce que j'ai toujours entendu, oui ! (ce n'est visiblement mentionné nulle part)

Mais c'est tout de même à déconseiller si la route n'est pas éclairée car l’œil pourra moins s'habituer à l'obscurité.

Etymologie amusante

C'était évident pourtant...

Pâquerette = fleur de Pâques
Gendarme = Gens d'arme

Bizarre....
Chaussée = Sorte de talus qu’on fait au bord d’une rivière, d’un étang, pour retenir l’eau. (Wikipedia)

Subclipse 1.10.3 et ubuntu 13.10

Par défaut, ubuntu 13.10 est livré avec le package libsvn-java 1.7.9. Mais le dernier plugin "subclipse" pour Eclipse Kepler a besoin de la version 1.8.x Voici une solution pour l'installer:

1. sudo apt-get purge libsvn-java

2. Ajouter dans le source.list :
deb http://ppa.launchpad.net/dominik-stadler/subversion-1.8/ubuntu precise main
deb-src http://ppa.launchpad.net/dominik-stadler/subversion-1.8/ubuntu precise main

3. apt-get update + apt-get install libsvn-java

Merci à Dominik Stadler !

P.S. N'oubliez pas d'ajouter dans l'eclipse.ini :
-vmargs
-Djava.library.path=/usr/lib/i386-linux-gnu/jni/




Subclipse 1.10.3 et

vendredi 20 décembre 2013

Transformer un script SQL avec des "insert" en fichier csv

Il est souvent utile de transformer des fichiers excel en expressions SQL, en "INSERT" SQL. Et inversement (plus rare) depuis le SQL vers un fichier CSV, c'est ce cas-ci que j'expose. Il s'agit d'une procédure qui peut certainement être optimisée. Si vous trouvez une optimisation possible, lâchez vous !

1. copy fichier.sql fichier.csv

2. vim fichier.csv

3.  :%s/^.*VALUES('.\{32}', '......\(.*\)', 'VALUE', '\(.*\)', '\(.*\)', null);/\1\t\2\t\3/g
>> Une ligne comme :
INSERT INTO country(id, constant_key, constant_type, nl_value, fr_value, properties) VALUES('d934509f8f894de79a786e284bdc735a', '00000_XG', 'VALUE', 'NIEUW-ZEELANDS OCEANIE', 'OCEANIE NEO-ZELANDAISE', null);

>> est remplacée par :
 XG      NIEUW-ZEELANDS OCEANIE  OCEANIE NEO-ZELANDAISE

4. Je veux ensuite que mon fichier soit trié alors:
:%sort
(tout simplement)

Plus d'infos : vimregex.com