|
Blog entries by Arthur Lutz [19]
Nous utilisons les méthodes agiles depuis la création de Logilab.
Nous avons parfois pris des libertés avec le formalisme des méthodes connues, en adaptant nos pratiques à nos clients et nos particularités. Nous avons en chemin développé nos propres outils orientés vers notre activité de développement logiciel
(gestion de version, processus sur les tickets, intégration continue, etc).
Il est parfois bon de se replonger dans la théorie et d'échanger
les bonnes pratiques en terme d'agilité. C'est pour cette raison que nous avons participé à l'étape nantaise de l'Agile Tour.
Plutôt que d'être simples spectateurs, nous avons présenté nos pratiques agiles, fortement liées au logiciel libre, dont un avantage indéniable est la possibilité offerte à chacun de le modifier pour l'adapter à ses besoins.
Premièrement, en utilisant la plate-forme web CubicWeb, nous avons pu construire une forge dont nous contrôlons le modèle de données. Les processus de gestion peuvent donc être spécifiques et les données des applications peuvent être étroitement intégrées. Par exemple, bien que la base logicielle soit la même, le circuit de validation des tickets sur l'extranet n'est pas identique à celui de nos forges publiques. Autre exemple, les versions livrées sur l'extranet apparaissent directement dans l'outil intranet de suivi des affaires et de décompte du temps (CRM/ERP).
Deuxièmement, nous avons choisi mercurial (hg) en grande partie car il est
écrit en python ce qui nous a permis de l'intégrer à nos autres outils, mais aussi d'y
contribuer (cf evolve).
Notre présentation est visible sur slideshare :
ou à télécharger en PDF.
Le BDD (Behaviour Driven Development) se combine avec des tests
fonctionnels haut niveau qui peuvent être décrits grâce à un formalisme syntaxique souvent associé au
langage Gherkin. Ces scénarios de test peuvent ensuite être convertis en
code et exécutés. Coté Python, nous avons trouvé behave et lettuce. De manière similaire à Selenium (scénarios de test de
navigation Web), la difficulté de ce genre de tests est plutôt leur
maintenance que l'écriture initiale.
Ce langage haut niveau peut néanmoins être un canal de communication
avec un client écrivant des tests. À ce jour, nous avons eu plusieurs
clients prenant le temps de faire des fiches de tests que nous
"traduisons" ensuite en tests unitaires. Si le client n'est pas forcément prêt à apprendre le Python et leurs tests unitaires, il serait
peut-être prêt à écrire des tests selon ce formalisme.
Jeudi 8 décembre 2011 nous avons participé à la réunion de travail sur l'ouverture des données événementielles.
Un premier problème est que la licence proposée par LiberTIC est la CreativeCommons CC-BY, alors que les producteurs de données n'ont souvent pas les droits sur toutes les données qu'ils diffusent (par exemple la photo d'illustration d'un concert). Ils auront donc du mal à les publier en totalité sous licence CC-BY. Espérons que la licence Creative Commons rentre dans les habitudes et que cela ne va pas trop freiner le projet.
Aujourd'hui, l'utilisation ressemble à du Fair Use: on tolère la ré-utilisation de contenus protégés par le droit d'auteur car cela sert la diffusion de l'information.
Nous nous sommes demandé s'il est possible de mélanger deux licences dans un flux de données ou s'il faut faire deux flux séparés mais liés.
Un deuxième problème est que les réutilisateurs ne seront pas intéréssés si les données sont trop pauvres et qu'elles n'incluent pas d'image ou de vidéo. Il faut donc trouver un socle commun qui satisfasse les producteurs et les réutilisateurs.
Il nous paraît important de ne pas se tromper dans les orientations choisies:
- utiliser des formats standards et combiner l'utilisation de namespaces existants plutôt que d'inventer un nouveau format
- proposer plusieurs formats d'export pour différentes utilisations (json, ical, etc) quitte à ne pas inclure tout le contenu disponible si le format ne s'y prête pas
- ne pas créer une API de plus et choisir de privilégier les standards du web sémantique en publiant du RDF et si possible en fournissant un accès SPARQL
- préférer la publication distribuée des données par leurs producteurs et leur agrégation par la plate-forme plutôt que d'attendre des producteurs qu'ils remplissent un formulaire de plus.
Nous attendons avec impatience la suite des travaux. Selon LiberTIC la plateforme sera developpée en logiciel libre avec des outils collaboratifs pour piloter le projet.
CubicWeb est une plateforme disponible en logiciel libre qui a déjà fait ses preuves et a été conçue pour développer des applications du type de l'aggrégateur décrit ci-dessus: import et export des données sous différents formats, utilisation des technologies standards du web sémantique. Nous espérons que ceux qui auront à réaliser l'agrégateur choisiront CubicWeb comme base technique pour ce projet.
Nous étions présents à l'évenement organisé par Stereolux et Libertic consacré à l'OpenData dans le domaine de la culture à Nantes. Voici un court compte rendu des points que nous avons retenus de ces présentations.
Il existe sur la toile assez d'articles sur l'Opendata pour qu'il ne nous semble pas nécessaire d'en donner une description, mais nous tenons à souligner que l'OpenData n'est pas simplement une mise à disposition des informations. Pour que des données puissent être qualifiées d'ouvertes, il faut qu'elles respectent une dizaine de principes parmi lesquels l'accessiblité, l'exploitabilité (données brutes), et la la réutilisablitié (licence).
Claire Gallon a cité plusieurs exemples d'OpenData dans le domaine culturel :
- la mise à disposition de données sur la fréquentation d'un musée permet de développer un service qui donnera la meilleure heure pour visiter ce musée. Voir When Should I visit Tate Modern
- Marseille-Provence 2013 (capitale culturelle européenne) ouvre ses données et attend que les acteurs écrivent des applications (mobiles notamment).
Un idée importante est que le service public doit s'adresser au plus grand nombre et ne peut pas consacrer ses ressources à la mise en place de services de niche. La mise à disposition des données permet à des tiers d'occuper ces niches.
En conclusion, Claire Gallon insiste sur la nécessité d'inclure la gestion de la communauté dans les démarches d'ouverture des données. La prochaine priorité des acteurs de l'OpenData sera la coproduction, à la fois pour l'écriture des applications et pour l'amélioration des données.
Romain Wenz de la Bibliothèque nationale de France a présenté http://data.bnf.fr sous l'angle de l'ouverture : l'ouverture à un public différent, l'ouverture à un mode de recherche différent (on cherche sur internet avant d'aller en bibliothèque) et l'ouverture sur les reseaux sociaux où le public partage des références à des contenus qu'il apprécie (twitter, facebook, etc.).
Cette ouverture passe forcément par un web indexable, où l'on peut communiquer facilement une URL d'un contenu (exit les portails de recherche avec des sessions et variable http). Si un site n'est pas indexable, son contenu pourra être trouvé en s'y connectant directement, mais celui-ci restera dans le web "invisible" ou "profond".
Romain Wenz a insisté sur l'Importance des technologies utilisées : d'un coté les strandards ouverts et formalisés par le W3C, notamment en terme de web sémantique (RDF, RDFa, opengraph, schema.org, etc.) et de l'autre l'utilité de s'appuyer sur du logiciel libre. Dans le cas de http://data.bnf.fr il s'agit de CubicWeb.
Frédéric Vasse a briévement présenté la démarche de la Ville de Nantes en matière d'OpenData. Le lancement de la plateforme aura lieu lundi prochain à la Cantine Numérique de Nantes. Selon lui, l'objectif de Nantes est de réussir la coproduction avec les acteurs du territoire.
Libertic a conclu en proposant aux acteurs culturels un projet d'aggrégateur d'informations sur les événements culturels à Nantes. Nous espérons pouvoir vous donner prochainement plus d'informations sur ce projet.
Autre compte rendu (prises de notes) : http://www.scribd.com/doc/72810587/Opendata-Culture
Description de la présentation sur le site de Paris Web 2010: ici.
Quentin Adam voudrait que l'on fasse plus de javascript coté
serveur. Un des principaux avantages du javascript server side est que
il n'est pas nécessaire de traduire ces structures de données entre
plusieurs languages de programmation.
Une des limites à cette adoption est que les moteurs de javascripts ne
font pas de DOM (ca c'est le boulot du navigateur), du coup pas de
jquery, mootools ou dojo (high level javascript)>. Par conséquent
les développeurs javascript vont avoir des difficultés pour coder en
server side. Certaines librairies sont en train de prendre en compte
cet environnement limité.
Quand on fait du javascript coté serveur, on peut considérer les
requêtes comme des websockets, ce qui va être avantageux en terme de
performances (par exemple lorsque le serveur reçoit deux requêtes
identiques, quand la réponse est prête on renvoie deux fois la même
chose).
Voici quelques outils que Quentin Adam recommande ou mentionne :
- Ape - Ajax Push Engine - http://www.ape-project.org Mettre du
javascript dans un module apache. Coté client on a du mootols pour
faire du développement.
- Node.js http://www.nodejs.org très adopté par la communauté
ruby. Node.js es apparu au moment de l'émergence de v8. Par contre
celui-ci n'est pas très stable, la documentation n'est pas très
complète, mais il y a beaucoup de "recettes" sur le web.
- CommonJS http://www.commonjs.org/ est une librairie qui a l'avantage
d'être en cours de standardisation.
- Jaxer http://jaxer.org/ est une sorte de firefox embarqué dans un
module apache, ce qui est un peu trop lourd mais son existence
mérite d'être mentionnée.
À Logilab, pour le développement de CubicWeb, nous penchons plutôt pour les développements des mécanismes
asyncrones dans Twisted, mais cette présentation a le mérite de
mettre en avant que d'utiliser javascript ne concerne pas uniquement
les tweaks dans le navigateur.
Debian France organise le 30 et 31 octobre prochain une minidebconf à Paris. Le wiki de la conférence est en train de s'étoffer, et pour le moment c'est là qu'il faut s'inscrire. À Logilab nous sommes utilisateurs et contributeurs de Debian, c'est donc naturellement que nous allons essayer d'aller participer à cette conférence. Alexandre Fayolle, développeur Debian ira assister (entre autres) à la présentation de Carl Chenet sur l'état de Python dans Debian.
Je suis allé à la présentation de "Une mise en place de l’eXtreme Programming" présenté par Karine Sabatier dans le cadre d'Agile Nantes. On y a parlé plutôt Ruby on Rails que python, mais surtout de méthodes agiles et XP.
Voici quelques points que j'ai retenu de cette présentation tout à fait pragmatique d'une mise en pratique des principes XP :
- Le principe de "Convention over configuration" : préférer la convention (notamment pour la programmation) plutôt que la contrainte par la configuration. Dans Ruby On Rails, les conventions sont très fortes, pour faire une application on ne peut pas s'éloigner du modèle MVC : les modèles sont dans "model", les views sont dans "views" etc... À ce sujet, la conférencière a fait référence à deux types de designs que je ne connaissait pas : le DDD Domain-driven Design et Behavior Driven Development.
- Utilisation de métaphores : trouver un langage commun avec le client mais aussi avec les utilisateurs
- Application de déploiement ruby on rails : Capistrano, bien qu'à Logilab nous privilégions le déploiement par paquets et dépôts debian, en python on pourra jeter un coup d'œil à Fabric.
- Leur projet XP utilisait le logiciel de gestion de projet Retrospectiva. Celui-ci ressemble sur bien des points à JPL (Jeux de Planification Logiciel) disponible sur le framework CubicWeb (http://www.cubicweb.org). Coté intégration continue : CruiseControl , en python nous privilégions apycot.
- Ce projet a essayé l'utilisation de Selenium pour ces tests web. Le constat est le même que chez Logilab : la première fois que ca marche c'est utile et apporte une grande satisfaction, dans un deuxième temps ca reste très difficile à maintenir. Nous regardons à présent plutôt du coté de Windmill qui a été intégré à la version 3.9 de cubicweb.
- Une mention a été fait d'une société fonctionnement uniquement en mode agile Pyxis.
Logilab est en ce moment en train d'acceuillir un sprint autour de la plateforme CubicWeb. L'objectif principal de ce sprint de 5 jours est d'améliorer l'usage de javascript et des css dans CubicWeb :
- avoir une API javascript propre, testée et documentée
- pouvoir facilement changer le style d'une application cubicweb
- gestion de bundle pour javascript et CSS
- une documentation sur les standards d'écriture des fichiers JS et CSS pour cubicweb
Ce sprint aura lieu du jeudi 29 avril 2010 au 5 mai 2010 (weekend exlus - les bureaux seront fermés). Vous êtes les bienvenus pour contribuer, filer un coup de main, faire du pair programming... ou simplement rencontrer des développeurs cubicweb. Vous pouvez même venir une après-midi ou une seule journée. Pour ceux avec des portables, il y aura du réseau disponible pour être connecté.
Adresse : 104 Boulevard Auguste-Blanqui, Paris. Sonnez à "Logilab".
Métro : St Jacques or Corvisart (Glacière est la station la plus proche mais sera fermée à partir de lundi)
Contact : http://www.logilab.fr/contact
Dates : du 29/04/2010 au 30/04/2010 et du 03/05/2010 au 05/05/2010
Hier, Logilab était à nouveau présent aux rencontres organisées par
Agiles Nantes, il s'agissait d'une présentation très fournie sur
l'intégration continue (présenté par la société
Netapsys). Malheureusement, la principale technologie utilisée
était Java dont nous ne sommes pas des grands fans, préférant
python. Néanmoins cela donne une bonne idée des possibilités
qu'offrent les outils autour du développement java, notamment en terme
d'intégration continue (voir Maven, Hudson, Sonar, etc.).
On retrouve donc un certain nombre de similarités avec le monde
python, notamment avec Artifactory qui reproduit en partie les
fonctionnalités de pypi avec easy_install ou buildout ou
apt-cacher-ng dans son coté proxy. A Logilab, nous privilégions
l'utilisation de paquets debian pour distribuer nos logiciels, ce
qui permet, notamment, de ne pas réinventer la roue pour chaque
langage de programmation.
Voici quelques une des notions avancées lors de la présentation qui
nous semblent intéressantes sur l'intégration continue :
- celle-ci permet de mettre en place des environnements de test mis à
disposition du client tout le long du projet.
- cette notion de prototype utilisable en continu doit être présente
le plus tôt possible dans un projet.
- idéalement, un serveur de déploiement/intégration doit être
quasiment à l'identique de l'environnement client (utilisation de
machines virtuelles)
- l'intégration continue est souvent plus utilisées par les
développeurs et les chefs de projets que par les clients. Mettre en
place des rapports utiles au client requiert un soin particulier
- pour une émulation collective, certaines notations des développeurs
sont possible. Par exemple un plugin Hudson donne un point par
build réussi, un point par test ajouté, moins dix points pour un build
cassé.
- la visualisation des données peut motiver les développeurs, l'outil
Sonar semble être très complet et propose des visualisation assez
léchées. A noter, des graphes sur la complexité du code, par classe,
par méthode etc. Voir aussi la visualisation de l'arbre des
dépendances des librairies avec Radiator.
J'y ai mentionné apycot et buildbot qui sont tous les deux des outils plutôt orientés python (mais pas seulement).
Pour conclure, tout ça m'a fait penser au concept plus poussé de
"Continuous Delivery - BlueGreenDelivery" développé par Martin Fowler,
une lecture recommandée pour ceux qui ont déjà pris le pas de
l'intégration continue.
Nous sommes dès ce matin, pendant 3 jours, présents au salon Solutions Linux 2009 au stand du pôle de compétition System@tic dont nous faisons parti. C'est le stand B4/B8, assez prêt de l'entrée sur la gauche (détails).
Nous allons présenter CubicWeb à plusieurs reprises sur le stand, ainsi que lors des conférences sur le Web2 ce mardi 31 mars de 14h à 17h30 :
- Adrien présentera "Simile Widgets, des composants de haut niveau pour IHM web"
- Sylvain présentera "Cubic 3.0 - une plateforme pour les applications web sémantique"
pour plus de détails consultez le programme.
On vient de découvrir belier qui permet de se connecter facilement à des machines auquelles on doit accéder par des machines ssh intermédiaires. Ca peut s'avérer utile. En plus, c'est en python. En plus, il a fait des paquets debian... et en plus il mentionne pylint. Du coup il mérite mention ici.
Par manque de temps voici les infos en brut glanées jeudi soir dernier au NextMediaBarCamp :
Un BarCamp c'est assez rigolo, un peu trop de jeune cadres dynamiques en cravate à mon goût, mais bon. Parmi les trois mini-conférences auxquelles j'ai participé, il y avait une sur le web sémantique. Animée en partie par Fabrice Epelboin qui écrit pour la version française de ReadWriteWeb, j'ai appris des choses. Pour résumer ce que j'y ai compris : le web sémantique il y a deux approches :
- soit on pompe le contenu existant et on le transforme en contenu lisible par les machines avec des algorithmes de la mort, comme opencalais le fait (top-down)
- soit on écrit nous même en web sémantique avec des microformats ensuite les machines liront de plus en plus le web (bottom-up)
Dans le deuxième cas la difficulté est de faciliter la tache des rédacteurs du web pour qu'ils puissent facilement publier du contenu en web sémantique. Pour cela ces outils sont mentionnés : Zemanta, Glue (de la société AdaptiveBlue).
Tout ça m'a fait penser au fait que si CubicWeb publie déjà en microformats, il lui manque une interface d'édition à la hauteur des enjeux. Par exemple lorsque l'on tape un article et que l'application a les coordonnées d'une personne metionnée, il fait automagiquement une relation à cet élément. A creuser...
Sinon sur les autres confs et le futur des médias, selon les personnes présentes, c'est assez glauque : des medias publicitaires, custom-made pour le bonheur de l'individu, où l'on met des sous dans les agrégateurs de contenu plutôt sur des journalistes de terrain. Pour ceux que ça intéresse, j'ai aussi découvert lors de ce BarCamp un petit film "rigolo" qui traite ce sujet préoccupant.
Bienvenue à SciLab version 5.0 dans le monde du logiciel libre. SciLab 5.0, plateforme open source de calcul scientifique sous licence CeCill, est une alternative crédible et maintenant reconnue comme telle à Matlab. Pour assurer le développement pérenne de Scilab, le consortium Scilab rejoint DIGITEO, parc de recherche d'envergure mondiale dans le domaine des sciences et
technologies de l'information en Île-de-France.
La version 0.3.0 de LAX est sortie aujourd'hui voir : http://lax.logilab.org/
Il suffit de 10 petites minutes pour avoir une application qui tourne, suivez le guide :
Mise à jour: LAX est maintenant inclus dans CubicWeb.
Voici vite fait comment on profite du quad-core bi-proc multicoeurs avec zope/zeo/pound ... le tout en commandes debian.
Inspiré de : http://plone.org/documentation/how-to/simple-zope-clustering-with-squid-and-pound
apt-get -uVf install plone-site pound
dzhandle -z 2.10 make-zeoinstance sgel_zeo
dzhandle -z 2.10 make-instance sgel2 --zeo-server=localhost:8100 -m all
dzhandle -z 2.10 make-instance sgel3 --zeo-server=localhost:8100 -m all
dzhandle -z 2.10 make-instance sgel1 --zeo-server=localhost:8100 -m all
dzhandle -z 2.10 make-instance sgel4 --zeo-server=localhost:8100 -m all
modifiez les ports de chaque instance (par exemple 9673, 9674, 9675, 9676)
vim ~/zope/instances/sgel*/etc/zope.conf
dzhandle add-product sgel1 CMFPlone
dzhandle add-product sgel2 CMFPlone
dzhandle add-product sgel3 CMFPlone
dzhandle add-product sgel4 CMFPlone
dzhandle zeoctl sgel_zeo start
dzhandle zopectl sgel1 start
dzhandle zopectl sgel2 start
dzhandle zopectl sgel3 start
dzhandle zopectl sgel4 start
vim /etc/pound/pound.cfg pour remplacer
BackEnd
Address 127.0.0.1
Port 8080
End
par
Service
BackEnd
Address 127.0.0.1
Port 9673
End
BackEnd
Address 127.0.0.1
Port 9674
End
BackEnd
Address 127.0.0.1
Port 9675
End
BackEnd
Address 127.0.0.1
Port 9676
End
End
/etc/init.d/pound restart
tapez sur http://localhost:8080
ajoutez un site plone
pour tester, lancez htop pour voir l'activité et regardez la différence entre :
- apt-get -uVf install apache2-utils
- /usr/sbin/ab -n 100 -c 100 localhost:8080/plone
et
- /usr/sbin/ab -n 100 -c 100 localhost:9673/plone
nice!
Il existe un outil, Reinteract, qui permet d'avoir une sorte de d'éditeur/shell Python, où l'on peut aisément modifier et réinterpreter une ligne de code.
Sachant qu'il sait aussi afficher des plots, etc, il est possible de s'en servir avantageusement pour faire des sessions Matlab-like.
Je pense donc que c'est un outil à présenter à nos chers apprenants qui sont intéressés par le couple python/numpy comme substitut à Matlab ©®.
Ex:
écrit par David Douard
Un petit raccourci pratique pour ion3, qui permet, sur la combinaison de touches de son choix, de prendre le texte actuellement sélectionné (surligné) dans sa session X11, et, en fonction de son contenu :
- d'ouvrir un onglet Firefox avec l'url sélectionnée,
- d'ouvrir un xpdf si c'est une URL de fichier PDF,
- lancer OpenOffice.org si c'est un fichier OOo,
- ouvrir le fichier dans emacs si c'est un .py, .po, etc.
- etc.
Pour cela, il faut le script magique ci-dessous, et configurer ion pour appeler ce script sur la bonne combinaison de touches. Par ex. ajouter dans votre ~/.ion3/cfg_ion.lua les lignes
defbindings("WMPlex.toplevel", {
bdoc("Automagically view the selected string"),
kpress(META.."F7",
"ioncore.exec_on(_, '/home/user/bin/view')"),
})
Ici, j'ai mappé "Meta+F7", et le script est /home/user/bin/view
#!/usr/bin/env python
from mimetypes import guess_type
import sys
from os.path import abspath
from os import system, popen
import re
RGX = re.compile
EMACS = 'emacsclient --no-wait %(uri)s'
EMACS_WITH_LINE = 'emacsclient --no-wait +%(lineno)s %(uri)s'
FIREFOX = 'firefox -remote "openURL(%(uri)s, new-tab)"'
WGET = 'cd /home/adim/tmp && wget %(uri)s & '
commands = [
('text/html', FIREFOX),
('application/xml', EMACS),
('text', EMACS),
('image', 'display %(uri)s &'),
('application/pdf', 'xpdf %(uri)s &'),
('application/postcript', 'gv %(uri)s &'),
('application/vnd.sun.xml', 'ooffice %(uri)s &'), # matches writer, impress, etc.
('application/vnd.oasis.opendocument', 'ooffice %(uri)s &'),
('application/msword', 'ooffice %(uri)s &'),
('application/vnd.ms-', 'ooffice %(uri)s &'),
]
patterns = [
(RGX(r'https?://.*?(zip|gz|pdf|ods|doc|odt|ppt|sxw|sxi)$'), WGET),
(RGX(r'.*(?P<uri>https?://[^ ()]*)( .*)?'), FIREFOX),
(RGX('.*?\.conf$'), EMACS),
(RGX('.*?\.po$'), EMACS),
(RGX('.*?\.xslt$'), EMACS),
(RGX('.*?\.pot$'), EMACS),
(RGX(r'\s*F?i?l?e? ?"?(?P<uri>.*?\.py)", line (?P<lineno>\d+)[a-zA-Z_:-]*'), EMACS_WITH_LINE),
(RGX('.*?(readme|changelog|depends|manifest|makefile)(\.in|\.gz|\.bz2)?$', re.I), EMACS),
# others might come here ...
]
def find_command(selection):
for rgx, cmd in patterns:
m = rgx.match(selection)
if m:
args = m.groupdict() or {'uri' : selection}
return cmd, args
mimetype, encoding = guess_type(selection)
# XXX: encodings like zip, or gz could be handled
if mimetype is not None:
selection = abspath(selection)
for registered_type, cmd in commands:
if mimetype.startswith(registered_type):
return cmd, {'uri' : selection}
raise ValueError('nothing matched')
if len(sys.argv)>1:
selected = ' '.join(sys.argv[1:])
else:
selected = popen('xclip -o').read()
if selected:
try:
cmd, args = find_command(selected)
except ValueError:
# system('wmiijabber error viewing %s' % ' '.join(sys.argv[1:]))
# XXX print a message in wmii status bar ?
pass
else:
#print "yooo =>", repr(cmd), repr(args)
system(cmd % args)
Pour que cela fonctionne, il ne faut pas oublier d'installer xclip (sous debian, apt-get install xclip).
-- écrit par David Douard sur un script de Adrien diMascio
J'ai découvert vim-addons (qui est apparu dans debian récement) et ce petit outil permet de faire d'etendre les fonctionnalités de vim assez facilement. Voici une utilisation parmi tant d'autres :
pour installer le mode gnupg faites
vim-addons install gnupg
Ensuite vim pourra ouvrir directement des fichiers encryptés et les réncrypter lorsque vous sauvez. Donc simplement
vim mot-de-passe-envoyé-par-client.gpg
Voilà, le tour est joué.
J'avoue que je reste avec emacs pour le code, mais ce genre de petit raccourcis est bien pratique.
|