Goobook pour accéder à ses contacts google.

comments

28/04/2013 14:45:00

Introduction

Pendant un moment j'utilisais mutt puis j'avais arrêté, je m'étais laissé séduire par une interface dont je vais taire le nom. Finalement, je reviens à mutt c'est vraiment ce qui se fait de mieux. Je pense que l'une des raisons à la base de mon changement était du au fait que je ne l'avais pas spécialement configuré correctement cette fois-ci j'ai pris le temps et je vais certainement continuer à ajouter des choses, je vais d'ailleurs faire je pense une série d'article sur ma configuration, les différents outil que j'utilise avec, et les raisons de mon retour sur mutt.

Goobook

Il est pratique de pouvoir avoir sa liste de contact et pouvoir bénéficier de completion lors de l'écriture de mail. Goobook est un petit projet développé en Python et disponible sur pypi. Il permet d'accèder à sa liste de contacts google en ligne de commande, il est donc possible facilement de l'intégrer et l'utiliser avec mutt. Il permet aussi d'ajouter de nouveaux contacts.

Installation

Le projet est disponible sur pypi, il suffit donc d'utiliser pip:

sudo pip install goobook

Pour le coup je l'installe sur le système et pas dans un virtualenv, c'est pour cette raison que j'utilise la commande sudo.

Configuration

Il y a un petit fichier de configuration pour indiquer notamment son adresse et mot de passe:

[DEFAULT]
email: user@gmail_or_your_domain.com
password: mot_de_passe
cache_filename: $HOME/.goobook_cache
cache_expiry_hours: 2400

Insérer ces lignes dans le fichier $HOME/.goobookrc.

Utilisation en ligne de commande

La commande reload permet de mettre à jour le cache goobook et récupérer sa liste de contact google:

goobook reload

Pour chercher un contact il faut utiliser la commande query:

goobook query nom

Il est aussi possible d'ajouter un contact:

goobook add "nom prénom" adresse@nom_de_domaine.com

Utilisation dans mutt

L'intérêt maintenant c'est de l'utiliser avec mutt, pour chercher un contact il faut ajouter ceci dans le fichier muttrc:

set query_command="goobook query '%s'"
bind editor <Tab> complete-query

Maintenant lors de l'envoi d'un mail, il est possible d'utiliser la tabulation pour completer l'adresse mail.

Il est aussi possible d'ajouter un contact:

macro index,pager a "<pipe-message>goobook add<return>" "add the sender address to Google contacts"

Sur la liste de mail, placer le curseur sur un mail et appuyer sur a pour ajouter l'adresse aux contacts google.

Problème avec certaines adresse

Lorsque j'ai commencé à utiliser goobook, j'ai eu un problème. Certaines adresses étaient bien dans le cache goobook, mais je n'arrivais pas à les avoir avec la commande query par exemple. Google a ajouté une notion de tri pour les adresses mail, fonctionnalités que je n'utilise pas. Les contacts se trouvant dans Autres contacts1 tant-donné qu'ils ne sont pas triés ne sont pas accessible. Pour résoudre le problème il faut trier les contacts pour ma part j'ajoute tout dans Mes contacts2. Merci à marcel3 pour son article qui m'a permis de résoudre mon problème.

Conclusion

Un outil vraiment pratique qui me manquer dans mutt, c'est pratique d'avoir la complétion de ses conctats.


  1. Other contacts si votre interface est en anglais ↩

  2. My contacts si votre interface est en anglais ↩

  3. Lien http://blog-marcel.eu/index.php?article62/goobook-perd-mes-contacts ↩

Paste depuis vim.

comments

09/04/2013 19:30:00

Introduction

Bien que le développement soit un métier individuel on est rarement plusieurs à coder ensemble mise à part lorsqu'on fait du pair-programming mais ce qui reste assez rare. Malgré tout, il arrive parfois qu'on est besoin d'aide car nous sommes bloqué sur un bout de code qui nous résiste et nous savons que des yeux neufs peuvent parfois débloquer la situation, ou encore parce-que nous avons besoin d'une review1. C'est dans ces moments qu'intervient les pasteurs. Je remercie tshirtman2 qui m'a pointé un super plugin Vim gist-vim qui utilise comme son nom l'indique le pasteur de github qui est vraiment très bien. Le plugin a été initié par mattn3 il est donc de très bonne facture.

Installation

J'utilise Vundle pour ma part donc pour les personnes dans le même cas, ajouté ceci:

Bundle 'mattn/gist-vim'

Sauver puis lancer:

:BundleInstall

Configuration github

Pour commencer il faut configurer son compte github, le plugin utilise l'api v3. Il est possible de stocker son nom d'utilisateur et son mot de passe dans un fichier, mais ce n'est pas recommandé. Il est plus prudent d'utiliser Oauth pour ça il suffit de configurer son utilisateur github dans le fichier de configuration git:

git config --global github.user nom_utilisateur

A la première utilisation gist.vim demandera le mot de passe pour créer une autorisation4.

Utilisation

Pour paster tout le contenu du fichier, il suffit d'utiliser la commande Gist:

:Gist

Par défaut les pastes sont en mode privé.

Il est aussi possible de sélectionner une portion à paster, utiliser le mode visuel:

:'<,'>Gist

Si le plugin est configuré en mode privé, il est possible de demander un paste public:

:Gist -P

Si le plugin est configuré en mode publique, il est possible de demander un paste privé:

:Gist -p

Il est possible de créer un paste anonyme:

:Gist -a

Une option que je n'ai pas encore utilisé mais qui peut s'avérer utitle, c'est de paster un gist de tous les buffers ouverts:

:Gist -m

Si vous avez une erreur dans un de vos pastes et qu'il faut l'éditer c'est aussi possible, il faut cependant qu'un buffer avec le gist soit ouvert:

:Gist -e

Une fois paster un gist n'a pas de durée de vie, il est donc bon de faire un peu le ménage de temps en temps, encore une fois le gist doit être au préable ouvert:

:Gist -d

Il est aussi possible de lister vos gist:

:Gist -l

Pour ouvrir l'un des gist de la liste il suffit d'appuyer sur entrée, le gist s'ouvre dans un buffer splitter de manière horizontale, pareil que pour la liste.

Il est aussi possible de lister les gist d'un utilisateur:

:Gist -l utilisateur

Ou encore tous les gist:

:Gist -la

Il est possible de forker un gist si il est ouvert:

:Gist -f

Si un gist vous plait, il est possible de lui ajouter une étoile:

:Gist +1

Si au contraire vous vous êtes trompés et vous souhaitez retirer votre étoile:

:Gist -1

J'ai listé les principales commandes qui me paraissent les plus utiles et les plus utilisées, il en existe encore d'autres pour le reste je vous laisse lire la documentation du plugin.

Configuration

Il est possible de configurer quelques options. Comme par exemple indiquer si les gist doivent être publique ou non par défaut. Toutes ces variables de configurations sont à ajouter dans le fichier de configuration vim le vimrc.

Pour indiquer de détecter le type de fichier, qui est le fonctionnement par défaut:

let g:gist_detect_filetype = 1

Pour demander à ouvrir le gist automatiquement après l'avoir posté:

let g:gist_open_browser_after_post = 1

Indiquer le navigateur à utiliser:

let g:gist_browser_command = 'chromium %URL% &'

Spécifier de montrer aussi les gist privés avec la commande Gist -l:

let g:gist_show_privates = 1

Indiquer que les gist doivent être privés, fonctionnement par défaut:

let g:gist_post_private = 1

Il est aussi possible d'utiliser github enterprise et donc de spécifier l'url:

let g:github_api_url = 'http://your-github-enterprise-domain/api/v3'

Il y a encore d'autres possibilités, voir la documentation du projet pour le reste.

Conclusion

Un article assez simple qui reprends globlament la documentation pour vous présenter un plugin très pratique et intéressant. Comme on peut le constater le plugin utilise l'api de github et il s'avère très complet.


  1. Pratique pour lequel je suis un grand fan, je suis pour le partage et l'intelligence collective ↩

  2. Je profite de l'occassion pour le remercier, car je l'embête beaucoup et il me donne toujours de très bon conseils notamment technique ↩

  3. C'est aussi l'auteur de webapi-vim utiliser par de nombreux plugin ↩

  4. Même fonctionnement qu'avec l'api twitter qui utilise le même protocole ↩

J'aime le logiciel libre

comments

13/02/2013 22:30:00

Valetine day

Introduction

Montrer votre amour pour le logiciel libre, et dites aux développeurs que vous les aimer pour la saint-valetin. Lorsque j'étais au fosdem cette année, je suis passé par le stand de la fsfe sur lequel j'ai acheté un pullover, après mon achat la personne qui me l'avait vendu, m'a présenté les prochains mouvements de la fsfe. J'ai trouvé l'idée du Valentine day intéressante et amusante.

Le principe

Chaque jour, nous utilisons des logiciels libres et nous en sommes contents. On écrits des rapports de bugs, on indique les améliorations à apporter aux logiciels, ou on rapporte des bugs, et on ne prend pas toujours des pincettes. Pour encourager les developpeurs de logiciel libre, il existe le jour du I love free software.

Voici une liste de suggestions:

  • Ecrire un mail, ou twetter, aux contributeurs pour leurs dire à quel point vous aimer ce qu'ils font,
  • Inviter son contributeur favoris à prendre un verre. Ou une autre personnes et pendant ce moment de partager, présenter votre logiciel libre favoris,
  • Donner à un hug à un contributeur (demander lui la permission avant),
  • Prennez une photo de vous, montrer votre feeling pour le logiciel libre, et poster ça en ligne,
  • Faire une donation pour la fsfe ou toutes autres iniative en faveur du logiciel libre pour exprimer sa gratitude. Ils dépendent de vos contributions pour pouvoir continuer leurs travail,
  • Pour finir vous pouvez aider à diffuser la bannière, par mail, ou réseaux sociaux avec le hashtag ilovefs.

Conclusion

Une iniative que je trouve plutôt agréable et sympathique, ça ne coûte rien, et ça fait toujours plaisir, je pense. Bien que je sois un tout petit contributeurs, si vous voulez me faire passer un message, ça m'aidera à me remotiver pour coder plus et avancer.

Fortune-vimtips 0.5

comments

12/02/2013 21:55:00

Introduction

Il y avait un petit moment déjà que le projet n'avait pas beaucoup bougé. J'ai lu un livre sur Vim il y a peu de temps, et j'ai découvert un concept intéressant, la possibilité d'avoir des tooltips sur des onglets.

Nouvelle fonctionnalités

Je peux comprendre qu'il peut être contraignant d'avoir un écran splitté lorsqu'on ouvre un fichier pour avoir des tips Vim qui s'affiche, cependant ça ne signifie pas forcément qu'on ne souhaite pas avoir des tips. J'ai donc pensé qu'il pourrait être intéressant d'implémenter ce fonctionnement lorsqu'on utilise Gvim, ça peut être une bonne alternative, à la place d'avoir les tips dans le buffer.

Fonctionnement

J'utilise l'option guitabtooltip de Vim pour pouvoir faire ça, j'ai ajouté une option fortune_vimtips_display_in_tooltip qui est fausse par défaut. Bien-sûr cette nouvelle fonctionnalités fonctionne uniquement pour Gvim et non pour Vim. Pour l'activer il faut donc ajouter cette ligne dans son vimrc:

g:fortune_vimtips_display_in_tooltip = 1

Conclusion

Un peu d'autopromotion ça fait pas de mal. Un petit article pour présenter une petite fonctionnalité, mais qui je pense peut intéresser des gens.

Drapeau En Fortune vimtips

Bpython

comments

16/01/2013 22:20:00

Introduction

J'ai déjà présenté un repl en Perl, il y a quelques temps de ça PerlConsole, développé par Sukria, je fais pas mal de Python maintenant, j'en ai donc cherché pour ce langage. L'interpréteur par défaut Python offre un repl, mais je le trouve un peu rudimentaire.

Installation

Pour une distribution Debian et ses dérivées il est packagé, et si vous utiliser l'interprète du système il suffit donc d'utiliser apt-get:

sudo apt-get install bpython

J'ai pour habitude d'utiliser virtualenv qui est vraiment génial, pour lequel je ferai un article plus tard, dans ce cas, il est aussi bien de l'installer par projet, déplacer vous dans le répertoire bin à la racine de votre projet après l'avoir activé et utiliser pip:

source bin/activate
cd Project/bin
./pip install bpython

Utilisation

L'utilisation est vraiment très simple et agréable. Il n'y pas grand chose à connaitre pour l'utiliser, et un récapitulatif des commandes et lister en bas de l'écran. Lorsque vous lancez bpython et que vous commencer à taper le nom d'une méthode vous pourrez bénéficier de la complétion via la tabulation, il va ouvrir une bulle avec les différentes fonctions matchées, ce qui est intéressant c'est qu'il affiche aussi la documentation de la dite fonctions, par exemple:

bpython
>>> set(
┌──────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ set: (obj, ...)                                                                                      │
│ x.__init__(...) initializes x; see help(type(x)) for signature                                       │
└──────────────────────────────────────────────────────────────────────────────────────────────────────┘
>>> date = datetime.datetime.now()
>>> date.
┌──────────────────────────────────────────────────────────────────────────────────────────────────────┐
│astimezone       combine          ctime            date             day              dst              │
│fromordinal      fromtimestamp    hour             isocalendar      isoformat        isoweekday       │
│max              microsecond      min              minute           month            now              │
│replace          resolution       second           strftime         strptime         time             │
│timetuple        timetz           today            toordinal        tzinfo           tzname           │
│utcfromtimestamp utcnow           utcoffset        utctimetuple     weekday          year             │
└──────────────────────────────────────────────────────────────────────────────────────────────────────┘

Ce qui est très intéressant. Ensuite l'autre aspect que je trouve utile, c'est le fait de pouvoir paster directement via une touche ce qui est affiché à l'écran avec F8, il utilise bpaste.net, le pasteur de bpython. Il est aussi possible de nettoyer ce qui est à l'écran avec la touche ctrl+r. La touche F2 permet d'afficher le source d'un module autre point très fort:

bpython
>>> import json
>>> json
r"""JSON (JavaScript Object Notation) <http://json.org> is a subset of
JavaScript syntax (ECMA-262 3rd edition) used as a lightweight data
interchange format.

:mod:`json` exposes an API familiar to users of the standard library
:mod:`marshal` and :mod:`pickle` modules. It is the externally maintained
version of the :mod:`json` library contained in Python 2.6, but maintains
compatibility with Python 2.4 and Python 2.5 and (currently) has
significant performance advantages, even without using the optional C
extension for speedups.

Taper le nom du module appuyer sur F2 un pager s'ouvre avec le code source. Je n'ai bien-sûr pas tout pasté dans l'exemple ci-dessus. En revanche, ça ne fonctionne pas pour les fonctions builtin.

Un autre aspect très bien offert par bpython et de pouvoir sauver ce qui est à l'écran dans un fichier, par exemple:

bpython
>>> import datetime
>>> date = datetime.datetime.now()
>>> print date.hour
23

Il est alors possible de faire ctrl+s pour sauver ces instructions dans un fichier, ce qui va donner:

import datetime
date = datetime.datetime.now()
print date.hour
# OUT: 23

On peut constater des commentaires avec la valeur affichée par le print. Cette fonctionnalité peut s'avérer très utile, lorsqu'on tests des choses, dont on pourrait avoir besoin plus tard.

Conclusion

Un projet très intéressant moins puissant que ipython mais plus userfriendly est très largement suffisant, et beaucoup plus agréable que celui par défaut. Je le recommande vivement à tout développeur Python, qui devrait toujours avoir un terminal d'ouvert sur un repl pour pouvoir tester rapidement des petits bout de codes, fonctions ou méthodes. Je pense que ce petit repl change vraiment la vie d'un développeur.

 

First page: First page Next page: 2 Last page: Last page