PROJET AUTOBLOG


Sam et Max

source: Sam et Max

⇐ retour index

Comment parser du HTML avec des Regex ?

mercredi 5 juin 2013 à 20:24

Il y a longtemps que je voulais traduire cette réponse de StackOverflow, qui donne une bonne fois pour toute la réponse à cette question souvent posée.

Voici (le formatage exotique a été conservé au maximum):

Vous ne pouvez pas analyser [X]HTML avec des regex. Parce qu’HTML ne peut être analysé par des regex. Les regex sont un outil qui ne peut être utilisé pour analyser correctement du HTML. Comme je l’ai répondu dans des question HTML-et-regex ici de nombreuses fois auparavant, l’utilisation de regex ne permet pas de consommer du HTML. Les expressions rationnelles sont un outil qui n’est pas suffisamment sophistiqué pour comprendre les constructions employées par HTML. HTML n’est pas une langage rationnel, et de fait ne peut être parsé par des expressions rationnelles. Les requêtes par regex ne sont pas équipées pour diviser du HTML en parties qui ont du sens. Tant de fois, mais je ne m’en lasse pas. Même des expressions irrationnelles telles qu’utilisées par Perl en sont pas à la hauteur de la tâche que représente l’analyse de HTML. Vous ne me ferez pas céder. HTML est un langage d’une complexité telle qu’il ne peut être analysé par des expressions rationnelles. Même Chuck Norris ne peut analyser du HTML avec des expressions rationnelles. Chaque fois que vous essayez d’analyser du HTML avec des expressions rationnelles, l’enfant damné pleure du sang de vierge, et des hackers russes pown votre webapp. Analyser du HTML avec des regex invoque des âmes perdues dans le royaume des vivants. HTML et les regex vont ensemble comme l’amour, le mariage et les rituels infanticides. Le <center> ne peut tenir, il est trop tard. La force des regex et du HTML ensemble dans le même espace conceptuel détruira votre esprit comme l’humidité détruit les joints. Si vous analysez du HTML avec des regex, vous vous adonnez à Eux et leurs traditions blasphématoires qui nous condamnent tous à un labeur inhumain pour Celui dont le Nom ne peut être exprimé avec le Plan Multilingue Basique, il arrive. HTML-plus-regex liquéfiera les nerfs des êtres les plus sensibles sous vos yeux, votre psyché dépérissant sous les assauts de l’horreur. Les an̷al̵y͘s̕e͝urs ̸HT͝M͡L basés sur les regex sont le cancer qui tue StackOverflow il est trop tard il est trop tard nous ne pouvons être sauvés la trangession d’un en̵f͝ant amènera les regex à consommer tout tissue vivant (excepté pour le HTML puisqu’il ne le peut, tel que prophétisé précédemment) oh seigneur aide nous comment qui que ce soit peut-il survire à cet fléau utiliser des regex pour analyser du HTML a condamné l’humanité à la terreur de la torture and aux failles de sécurité utiliser les regex comme outil pour travailler du HTML établie un brèche entre ce monde et le royaume terrifiant des entités corrompues (comme les entités SGML, mais plus corrompues) un bref regard vers le monde des analyseurs regex pour HTML transportera instantanément la conscience d’un programmeur dans un monde de cris sans fin, il arrive, la nauséabonde plaie des infections regex dévoreront votre parser HTML, votre application et votre existence pour l’éternité comme l’a fait Visual Basic mais en pire il arrive il arrive ne vous débattez pas i̢l͞ a͘rr̸i҉v̡é,̨ sa radiance damnée détruisant toute illumination, des ͠t̕a̕g͡s ̶H͞TM̵L͞ ̕c̸o͜ùlan͜t̀ de̶ vos͜ ͟y͏eưx te̷l̛s̡ de l͜a̶ ̛d͝ǫu͜lȩur҉ ͝l̡iquid͝ee, la chanson de l’analyse par expressions rationnelles reduit au silence les voix de l’homme mortel depuis la sphère je peux le voir pouvez-vous le voir c’est magnifique l’expurgation de tous les mensonges de l’Homme  TOUT EST PERDU TOUT EST PERDU le poney il arrive i͟l arrive il̸ ̕arr̴i҉ve͢ ̕l’̵ich҉or ̸p̴é͝n͘è͟t̡r͞e tout MON V̴ISA҉ĢE͘͜ M̵̢͟O̶N ͢͏V͏I̧̨S͞AG̶̕͞E̷̡̕ oh mon dieu no Ņ̵̨ON̕ ̢҉̀N̸͡͞OO͏̢͝O̶͠O̷҉N҉͝ ͡N̶͘͏O̧N͟ ́͜͡s̀͟͡t̶͟o̧͝p̧ ̕͘l̴e҉͠s ͟ań̴gl͏ę̀͏s͢͝ ͜͝n̡e͏̡ ́so҉͜nt̵̡ ͢p̧͘a̛s̀ ̸͞r͞é̕͞e̛l̸͏s̨ ̧̀ZA̷Ĺ͝GO̸ ̸E̴͜͝Ş̵̛T̴̸͠ ̨T̨̢Ó͜N͡Y̢ ̷̨̕L̀E̵͠ PONE̕Y͟ I͖̮̝̥̞͟L̴̬͈͍͞ ̞̦A̴҉͕̩͉R͎͉̯̼̹̫͈̹R̩͎̙̥̦I̶̢͓̘̗V̤̳͓͓͇̯̭̯̥͜͢͢E̹̣͚̩̯̙͡.

Avez vous essayé un parser XML à la place ?

flattr this!

Non aux Google Glasses

mardi 4 juin 2013 à 12:30

J’ai découvert l’excellent blog soat.fr, mais dernièrement un article m’a fait très peur : il s’enthousiasme de l’arrivée des Google glasses.

C’est déjà assez dur de voir cette monstruosité arriver, mais que des gens intelligents soit super jouasses à ce propos, ça me fait mal au fion.

Gif animé de Leonardo Dicaprio retirant ses lunettes de soleil à l'infini

What. The. Actual. Fuck ?

Je vous rappelle les qualités de la bête:

Rappelez-vous que Google possède les technologies suivantes :

Souvenez-vous aussi que Google possède déjà :

Donc l’idée, c’est de lui fournir gratuitement des systèmes micro + caméra connectés localisés en temps réel partout dans le monde ?

Vous êtes des malades ou quoi ?

Parce que avec un téléphone Android, vous pouvez faire attention à VOTRE usage. Et encore c’est difficile.

Mais quand ce sera des millions de connards qui seront dehors avec ces machins (parque c’est trop cool !), vous faites comment ? Vous les éduquez tous pour leur dire faire attention à ce qu’ils enregistrent de vous ? Bah oui, vous êtes dedans même si vous n’en portez pas.

Et l’utilisateur moyen laissera les settings par défaut, voir de grosses failles de sécurité. En plus la tentation d’usage gouvernemental va être bien trop grande.

Composition d'une prison arrangée pour avoir la forme d'un iphone

Sur imgur, cette photo est légendée "votre gadget est votre prison".

Ces trucs là sont dangereux. Très, très dangereux. Il ne faut en aucun cas acheter des Google glasses, en aucun cas en faire la promotion. Si on doit en parler c’est pour avertir les autres de faire très attention à ce qu’ils font en s’intéressant à ces dispositifs.

Si vous travaillez dessus, songez à démissionner. Je suis très sérieux. Il y a des choses qui ne doivent pas se faire. Ne sortez pas l’excuse limite godwinienne du “si ce n’est pas nous, d’autres le feront”. J’ai bien refusé un entretien d’embauche chez Google (rien à voir avec les glasses) l’année dernière pour des raisons éthiques. Vous êtes responsables.

Même si vous êtes un utilisateur avancé, ces systèmes sont tellement complexes que votre contrôle dessus est illusoire, quand bien même c’est open source. Et vous êtes humains vous ferez des erreurs. Imaginez les autres, les milliers d’autres qui vont filmer des heures par jour des visages, taggés par lieu, heure et reconnus par la base de données Google automatiquement, liés à leurs profiles Web et contacts.

C’est un cauchemar.

N’achetez pas ces trucs. Faites savoir autour de vous qu’il faut se tenir loin, très très loin, de ces machins.

Photo d'oignons enrobés dans du caramel

La plupart des gens ne le verront pas venir, ça à l'air tellement bon de l'extérieur. Et puis une fois que ce sera officiel, l'excuse se sera : "les oignons crus et le caramel, c'est bon séparément, on a jamais pensé qu'il ne faudrait pas les mélanger"

Ça vaut aussi pour la xbox one et son kinect nouvelle génération qui n’est rien d’autre qu’une caméra et un micro actif en permanence dans votre salon, connecté à une console qui ne marche pas si elle n’est pas reliée au net. Et ces sociétés ne sont pas bienveillantes.

Faites pas les cons putain. Vous n’en avez pas besoin. Il y a des tas d’autres choses à acheter. Où n’achetez rien et payez vous une semaine au Costa Rica. Ça vous fera plus de bien.

flattr this!

Batbelt, la lib des petits outils Python qui vont bien

lundi 3 juin 2013 à 10:57

A force de coder plein de projets, il y a des opérations qui reviennent très souvent. Ces traitements sont petits et complètement sans relation, difficile d’en faire quelque chose. J’ai tout de même finit par en faire un lib, batbelt, qui au final n’est qu’une grosse collections de snippets que j’utilise régulièrement. Il y a aussi des trucs que j’utilise moins ou des astuces / hacks un peu crades, c’est toujours pratique pour geeker à l’arrache vite fait. Vous allez d’ailleurs retrouver des bouts de code dont j’ai déjà parlé sur le site

pip install batbelt

Et la plupart des fonctions sont accessible avec un from batbelt import...

Voici les choses qui pourraient vous intéresser le plus dans batbelt…

To timestamp

Mais combien de fois j’ai du la coder celle-là ? En plus l’inverse existe, alors pourquoi, mon Dieu, pourquoi ?

>>> from datetime import datetime
>>> to_timestamp(datetime(2000, 1, 1, 2, 1, 1))
946692061
>>> datetime.fromtimestamp(946688461) # tu as codé celle là et pas l'autre connard !
datetime.datetime(2000, 1, 1, 2, 1, 1)

Récupérer une valeur dans une structure de données imbriquée

Au lieu de faire :

try:
    res = data['cle'][0]['autre cle'][1]
except (KeyError, IndexError):
    res = "valeur"

On peut faire :

get(data, 'cle', 0, 'autre cle', 1, default="valeur")

Récupérer la valeur d’un attribut dans un attribut dans un attribut…

Pareil, mais pour les attributs.

try:
    devise = voiture.moteur.prix.devise
except AttributeError:
    devise = "euro"

On peut faire :

devise = attr(voiture, 'moteur', 'prix', 'devise', default='euro')

Itérons, mon bon

Ces fonctions retournent des générateurs qui permettent d’itérer par morceau ou par fenêtre glissante.

>>> for chunk in chunks(l, 3):
...     print list(chunk)
...
[0, 1, 2]
[3, 4, 5]
[6, 7, 8]
[9]
>>> for slide in window(l, 3):
...     print list(slide)
...
[0, 1, 2]
[1, 2, 3]
[2, 3, 4]
[3, 4, 5]
[4, 5, 6]
[5, 6, 7]
[6, 7, 8]
[7, 8, 9]

Ça devrait être en standard dans Python.

Parfois on veut juste le premier élément d’une collection. Ou juste le premier à être vrai:

>>> first(xrange(10))
0
>>> first_true(xrange(10))
1

Marche avec n’importe quel itérable, contrairement à [0] qui ne marche que sur les indexables. Et en prime on peut spécifier une valeur par défaut:

>>> first([], default="What the one thing we say to the God of Death ?")
'What the one thing we say to the God of Death ?'

Set ordonné

On a des dicts ordonnés dans la lib standard, mais pas de set ordonné. On en a pas besoin souvent, mais ça peut être TRES pratique, et TRES chiant à implémenter soi-même.

Donc acte.

>>> for x in set((3, 2, 2, 2, 1, 2)): # booooooo
...     print x
...
1
2
3
>>> for x in sset((3, 2, 2, 2, 1, 2)): # clap clap !
...     print x
...
3
2
1

Attention, c’est pas la structure de données la plus rapide du monde…

Je suis une feignasse et j’aime les one-liners sur les dicos

Je ne comprends pas pourquoi + ne fonctionne pas sur les dico.

>>> dmerge({"a": 1, "b": 2}, {"b": 2, "c": 3})
{'a': 1, 'c': 3, 'b': 2}

Ne modifie pas les dictionnaires originaux.

>>> from batbelt.structs import rename
>>> rename({"a": 1, "b": 2})
>>> rename({"a": 1, "b": 2}, 'b', 'z')
{u'a': 1, u'z': 2}

Modifie le dictionnaire original et n’est PAS thread safe.

Et le cas tordu mais tellement satisfaisant :

>>> from batbelt.structs import unpack
>>> dct = {'a': 2, 'b': 4, 'z': 42}
>>> a, b, c = unpack(dct, 'a', 'b', 'c', default=1)
>>> a
2
>>> b
4
>>> c
1

Slugifier

>>> slugify(u"Hélo Whorde")
helo-whorde

Il y a pas mal de réglages possibles avec slugify(), mais je vous laisse les découvrir :-) Cette fonction fait partie du sous-module strings, qui contient d’autres utilitaires comme escape_html/unescape_html (qui transforme les caractères spéciaux en HTML entities et inversement) ou json_dumps/json_loads (qui fait un dump / load du JSON en prenant en compte le type datetime).

Importer une classe ou une fonction depuis une string

Dès que vous faites un fichier de config vous avez besoin de ce genre de truc, mais la fonction __import__ a une signature uber-zarb. Voici une version beaucoup plus simple:

TaClasse = import_from_path('foo.bar.TaClasse')
ton_obj = TaClasse()

Capturer les prints

Parfois on a une lib qui print plutôt que de retourner une valeur. C’est très chiant. J’ai donc fait un context manager qui permet de récupérer tout ce qui est printé dans le block du with.

>>> with capture_ouput() as (stdout, stderr):
...    print "hello",
...
>>> print stdout.read()
hello

Créer un décorateur qui accepte des arguments

Même dans le cas où vous avez parfaitement compris les décorateurs grâce à un très bon tuto (^^), se souvenir de comment faire un décorateur qui attend des arguments en paramètre, c’est mission impossible. Voici donc un décorateur… pour créer un décorateur.

Étape un, écrire votre décorateur :

# tout les arguments après 'func' sont ceux que votre décorateur acceptera
@decorator_with_args()
def votre_decorateur(func, arg1, arg2=None):
 
    if arg1:
        # faire un truc
 
    # ici on fait juste le truc habituel des décorateurs
    # wrapper, appel de la fonction wrappée et retour du wrapper...
    def wrapper():
        # arg2 est dans une closure, on peut donc l'utiliser dans
        # la fonction appelée
        return func(arg2)
 
 
    return wrapper

Et on peut utiliser son décorateur tranquile-bilou :

@votre_decorateur(False, 1)
def hop(un_arg):
    # faire un truc dans la fonction décorée

Les processus parallèles finissent toujours par se rencontrer à l’infini et corrompre leurs données

Mais en attendant on en a quand même besoin. Parfois un petit worker, c’est sympa, pas besoin de faire compliqué et de sortir des libs de task queue complètes:

 
from batbelt.parallel import worker
 
@worker()
def une_tache(arg):
    # faire un truc avec arg
    arg = arg + 10
    return arg
 
 
# on demarre le worker
process = une_tache.start()
 
# on balance des tâches au worker
for x in range(10):
    process.put(x)
 
# on récupère les résultats (optionnel)
# ca peut être dans un fichier différent
for x in range(10):
    print process.get()
 
## 10
## 11
## 12
## 13
## 14
## 15
## 16
## 17
## 18
## 19
 
# on arrête le worker
process.stop()

Le worker est un subprocess par défaut, mais vous pouvez en faire un thread avec @worker(method=”tread”). Toujours utile, par exemple pour avec un processeur de mails qui envoit tous les mails hors du cycle requête / réponse de votre site Web. Par contre si votre process meurt la queue est perdue.

Template du pauvre

Avec format(), on a déjà un mini-langage de template intégré. Pas de boucle, mais pour des tâches simples ça suffit. Du coup j’ai une fonction render() qui prend un fichier de template au format string Python et qui écrit le résultat dans un autre. Pratique pour faire des fichiers de conf configurable.

from batbelt.strings import render
 
render('truc.conf.tpl', {"var": "value"}, "/etc/truc.conf")

Il y a aussi des implémentations de Singleton, du Null Pattern, etc. Mais ça s’utilise moins souvent alors je vais pas faire une tartine.

flattr this!

Game of thrones, le jeu de plateau

lundi 3 juin 2013 à 00:02

J’avais le choix entre écrire un article et rejoindre une bande de geeks pour tester GOT en jeu de plateau. J’adore les jeux de société (labyrinthe, muchkin, risk, loup garou, times up, boggle, etc), et je connaissais pas celui là.

Mon hôte possède un nombre impressionant de boîtes, j’ai rencontré un mec qui avait dans sa collec magic un lotus noir, les pizzas sont sorties, Tenacious D est en fond. Bref, une bonne soirée d’ados.

Conclusion : pas de gros article aujourd’hui, mais GOT en jeu est super cool (mais tellement compliqué qu’il faut pas imaginer apprendre le truc en lisant les règles par soi-même).

C’est dimanche, bon dimanche, sous vos applaudissements.

flattr this!

Mon environnement de travail

samedi 1 juin 2013 à 11:00

En informatique, on passe beaucoup de temps à tester des logiciels, encore plus dans le monde du libre, pour trouver celui qui va être le plus adapté à ses besoins.

Du coup, partager sa config peut vraiment faire gagner beaucoup de temps à d’autres pour la découverte. Et je suis sûr que les comments vont être spammés de “moi j’utilise X”, ce qui pourrait nous faire connaître encore plus de truc.

Réfrénez-vous quand même de vendre ArchLinux / BSD, vim / emacs en comments. On sait que ça existe. On sait pourquoi vous les utilisez. Ca a été dit.

Boulot

Ubuntu 12.04 LTS

Bon, on commence par le banale, mais c’est mon OS principal. Je reste sur la LTS pour la stabilité, j’utilise Unity par goût, et occasionnellement Gnome Shell pour rester à la page.

J’ai un dual boot avec Windows 7 afin de pouvoir tester les sites sous IE. Et jouer à League of Legend. Mais c’est un détail.

Sublime Text et quelques autres

Tout le monde sait qu’on est des fans de ST sur ce blog, mais pas que. J’utilise massivement vi (par paresse de toucher la souris quand je suis dans un shell, ou en remote) et un peu gedit pour des tâches très spécifiques.

Pour Python spécifiquement j’utilise dreampie et reinteract dans le cadre des formations.

Capture d'écran du logiciel Dreampie

Dreampie est pas mal pour montrer un gros bloc de code d'un coup qu'on execute et modifie puis relance

Capture d'écran du logiciel Reinteract

Reinteract est pas mal pour montrer la construction d'un script et le modifier par petit bouts tout en voyant l'évolution. Mais il est assez buggé.

Guake

Guake est un terminal drop down, c’est à dire que je l’ai réglé pour qu’il apparaisse en glissant du haut de mon écran quand j’appuie sur la touche ², ce qui fait que j’ai toujours un shell sous la main. Il gère les tabs et la transparence, mais pas les profiles avancés ni les écrans splittés.

J’attends beaucoup de Terra pou combler ces manques, que j’essaye en ce moment. Oui, j’ai essayé TOUS vos terminaux alternatifs. Tous.

Git

Directement en ligne de commande. Je n’utilise aucun autre client. Git reste mon logiciel de gestion de source favoris, après avoir essayé HG, bazar et SVN, mais j’utilise ces derniers quand même pour des raisons professionnelles de temps à autre.

scm_breeze aide tout de même beaucoup à l’usage. Si j’étais sous un autre OS j’utiliserais probablement le client de Github.

Le package Python habituel

iPython + Pip + virtualenv + un tas de libs

Là on va pas rentrer dans les détails, si ce n’est que je n’utilise presque jamais les versions deb des libs Python, que bpython ne m’a pas convaincu et que je déteste buildout qui a la simplicité de tous les outils issus de Zope.

Capture d'écran d'un clic droit montrant le menu des modèle nautilus

Les modèles Nautilus, un vrai bonheur

Grin (et grep)

J’en ai déjà parlé ici. Sublime Text fournis cette fonction en standard, mais je trouve grin plus lisible et flexible. Ou alors j’ai des habitudes de vieux con.

Regexxer

C’est du search and replace dans tout un projet. Simple et efficace.

Capture d'écran du logiciel regexxer

Search and destroyyyyyyyyyyyyyyyy

Meld

Mon outil de comparaison de fichier par défaut, git est réglé pour l’utilisr, j’ai un add-on nautilus pour le proposer en clic-droit.

Capture d'écran du logiciel meld en train d'éditer le code de 0bin

Il manque à Meld une meilleure intégration au VCS en cours, mais ça reste un bel outil. Écrit en Python :-)

Capture d'écran de clic droit sur nautilus montrant "compare with meld"

Une des raisons qui font que je ne passe pas en 13.04: les plugins de Nautilus sont incompatibles

Doc Ubuntu sur le Meld.

Parfois sur le serveur je suis contraint d’utiliser vimdiff.

GTG

Todo list flexible et simple. En plus c’est pondu par ploum.

Capture d'écran du logiciel Getting Things Gnome

J'ai eu ma période David Allen + LifeHacker

Redshift

Max vous en a parlé ici, ça sert essentiellement à pas se tuer les yeux quand on passe ses journées sur un écran.

Skype + Pidgin + Thunderbird

J’ai horreur de skype, mais c’est le seul truc en VOIP que je peux utiliser avec mes clients. Ils ne connaissent rien d’autre. Hyper relou, car c’est une bouse infame, lente et instable, et un gros spyware en prime. Je cherche toujours un moyen de m’en séparé puisque j’ai réussi à viré mes comptes Google, ça doit être possible sur le long terme.

Pidgin est le seul logiciel d’IM multiprotocole (ert multiplateforme) potable qui gère OTR. Je vire toujours empathy d’Ubuntu, c’est absolument useless ce truc.

Thunderbird, parce ce que c’est le pire à l’exception de tous les autres. Et enigmail marche bien. J’espère que Postler et Geary vont évoluer dans le bon sens, je les surveille régulièrement.

Liferea

Le client Web, c’est pas pour moi. Il faudrait un client Web qui soit aussi intégré à l’OS et demande pas de setup. Faudra que je code ça un jour (car franchement l’explosion des clients Web que je lis dans le flux de Sebsauvage ne me donne pas envie).

En attendant, liferea fait ma revue quotidienne.

Capture d'écran du logiciel Liferea

Depuis la dernière version, Liferea ne freeze plus au reload de tous les flux. C'est pas trop tôt.

Truecrypt (et GPG)

J’ai fais un article sur Truecrypt, je met tout dedans : clés SSH, mails, photos de mes copines à poil, etc.

Quand à GPG, pour le moment c’est surtout pour discuter avec mes potes paranos en chiffré, mais je sens que je fais l’utiliser de plus en plus. Internet est trop surveillé, ça devient n’importe quoi. Prochaine étape, le VPN systématique.

Gimp (et shutter)

Pour retoucher les photos (ou faire des faux documents ^^), j’utilise The Gimp. Le mode fenêtré le rend vachement plus pratique.

Vous connaissez sans doute moins shutter : c’est un logiciel pour faire des captures d’écran très avancé qui possède moult options et en prime un éditeur d’image intégré super pratique.

Capture d'écran du logiciel Shutter

Software inception. D'ailleurs le flou est aussi rajouté avec Shutter.

SSHplus

En gros, c’est un menu docké en haut de l’écran qui permet de lancer des commandes arbitraires. Je m’en sers pour ouvrir un nouvel onglet dans guake et me connecter automatiquement à un serveur distant. J’ai tous mes parcs de serveurs listés là dedans.

Capture d'écran du logiciel SSHplus

Malgré le nom, ça ne sert pas qu'à SSH : toute automatisation en ligne de commande est possible.

Dropbox + Rsync + scp + wget + clé USB + disque dur externe + dukto + Filezilla

En matière de partage et de syncro des fichiers, y a rien de parfais. Alors j’utilise tout ce qui traîne selon la tâche, l’humeur et le destinataire.

Y a vraiment un truc à faire dans ce domaine. La synchro, le backup, le partage… C’est toujours pas résolu. Le mec qui solutionne ça fera des millions.

Moralité : un seul outil suffit rarement. En général, j’ai toujours une collection de soft. Même quand je vous en est listé un seul, la vérité c’est que j’ai 2/3 alternatives sous le coude, “au cas où”.

WordPress

Sniff. On peut pas vivre avec (bug, lenteur, code immonde), mais on peut pas vivre sans (productivité sans pareille, 10000 plugins et thêmes, comments hébergés…).

J’ai longtemps penser à coder un blog, mais c’est super ingrat et chronophage.

Bash (avec un bashrc bien chargé)

zsh ne m’a pas convaincu de son utilité. Je reste sur bash, avec un .bashrc bien étudié.

Teamviewer

C’est proprio, mais en même temps, c’est tellement bien foutu. C’est le soft le plus simple avec la meilleur qualité pour prendre le contrôle de l’ordi de ma maman à distance. Et c’est important les mamans.

Inkscape + pdfmod

Inkscape permet de faire du dessin vectoriel à la Illustrator. C’est un très beau produit, pratique pour faire des schémas ou modifier un PDF (par exemple pour trafiquer sa fiche de paie et obtenir un meilleur job en frimant à l’entretien). Je rappelle que le faux et usage de faux est puni pénalement sévèrement, et je vous encourage donc… à ne pas vous faire prendre.

Capture d'écran du logiciel inkscape éditant le PDF du livre flatland

C'est beau le logiciel libre quand même. Vous imaginez le boulot pour pondre un truc pareil ?

Pdfmod est un petit soft qui permet de réorganiser les pages d’un ou plusieurs PDF pour en faire un nouveau document.

Capture d'écran du logiciel PDFmod

"Comment je fais pour modifier un PDF" est dans le top 10 des questions posées à un Geek

Make et GCC

Il faut ce qu’il faut ma chère Thérèse.

On fait pas toujours ce qu’on veut.

Demain est un autre jour.

Qui vol un oeuf vol un boeuf.

Firefox, chromium, opera, epifany… et IE

Firefox est mon browser par défaut (ne serait-ce que parce qu’il a les groupes d’onglets et download video helper). Après je test sur le reste des navigateurs. Parfois j’utilise Opera pour les sites qui font chier avec adblock.

Qwit

Tout simplement l’interface la plus moche de tous les clients twitter du monde. Accessoirement aussi le client le plus rapide et le moins gourmand en ressource. Simple, rapide, efficace.

Capture d'écran de qwit

Le compteur de mot n'est pas génial, mais ce logiciel à le bon goût de se faire oublier et de gérer les multicomptes.

Gcolor

Un color picker bien foutu avec pipette. Rien à dire, ça marche.

Capture d'écran du logiciel Gcolor2

En jaune de Damas. J'ai le même à la maison.

Balsamiq mockup

Quand j’ai besoin d’un mockup pro pour un client, j’utilise ça. Ca fait sérieux. En plus c’est ludique à utiliser.

Transmission

Et oui, j’utilise ce client bittorrent pour le travail. Dès que je télécharge un gros truc, genre ISO linux, je passe par torrent. C’est juste plus efficace. J’en fais aussi usage pour télécharger des vidéos dans une autre langue que celle diffusée en France afin de pouvoir apprendre ce langage, ce que je fais entrer dans la catégorie “travail”.

Pour moi bittorent est devenu un protocole incontournable dans l’internet moderne.

Boabab

Ce logiciel analyse votre disque dur et trouve ce qui prend le plus de place. L’équivalent de Win Dir Stats, mais sous Linux. Simplissime. Indispenable quand vous avez un petit SSD pour pouvoir virer tous ces dossiers .machin accumulés au fil du temps.

Capture d'écran du logiciel Baobab

Le dossier le plus gros dans est le dossier "Musique". Le deuxième est le dossier "Work".

Evince

Le visualiseur de documents (PDF principalement, mais pas que) par défaut sous Ubuntu, ce truc est rapide et fiable. J’adore ce genre de petit outil qui sait se faire oublier.

sqliteman et pgadmin

Des UI pour administrer des bases SQLite et PostGres. Quand l’ORM montre ses limites, on est très content de les trouver.

Capture d'écran du logiciel SqlMan

Existe aussi en extension Firefox

Capture d'écran du logiciel PGadmin

Postgres: 247 niveaux avant d'atteindre tes putains de table. Et mon client adore créer un cluster par appli.

LibreOffice

Que ce genre de produit aux capacités gigantesques existe en logiciel libre me fascine toujours. J’en utilise 10% des capacités mais ça reste indispensable pour faire des lettres, des calculs ou des slides en 2 secondes chrono.

Pour la détente

Bon, je devais parler de mon env de travail, mais entre deux sessions de travail, y a bien une pause non ?

Rhythmbox

Le lecteur de musique par défaut d’Ubuntu, ne casse pas 3 pattes à un canard, mais je ne veux surtout pas un truc plus gros. J’ai aucune envie de gérer ma collection musical, je veux juste un bouton play et un putain champ de recherche. Le bouton “play/pause” intégré dans le menu son de l’OS est un bonus.

Capture d'écran du logiciel rhythmbox

Now paying *sweat child of mine*. Where do we go, where do we go now ?

Sound Converter

On ne peut pas faire plus simple pour convertir sa musique d’un format à un autre. On ne peut pas.

Capture d'écran du logiciel sound converter

Et j'utilise handbrake pour la même chose pour les videos. Mais j'ai oublié de le mettre et maintenant j'ai la flemme d'éditer.

Audacity

C’est le The Gimp de l’audio. C’est hyper dur à utiliser. Mais ça marche.

Comix

Logiciel super sympas pour lire les mangas scannés. Ca gère les jpeg, en affiche deux d’un coup, permet un mode de sens de lecture inversé, lit une archive zip directement… Bref, pour les amateurs de scan, c’est cool.

VLC

Bon. Heu. Hein.

Caffeine

Un applet qui désactive l’écran de veille et l’hibernation quand une vidéo se joue. C’est con, mais il fallait y penser.

Occasionellement

J’utilise peu ces trucs, mais ça arrive.

Ghex

Pour éditer de l’hexa. Une fois tous les 5 ans. Par erreur. Bourré.

Capture d'écran du logiciel Ghex

Je dois être très cuit, j'arrive rien à lire

Virtualbox, vmware

De quoi faire toutes sortes de machines virtuelles.

Pour tester les nouvelles distribs ou un nouveau script fabric de déploiement. Ou même IE.

Wireshark

Le sniffeur de paquets.

Pour la culture. Pour me faire passer pour quelqu’un d’intelligent.

Dia

Cette immonde bouse de créateur de diagramme. C’est nul, mais alors c’est nulllllllll. Mais y a aucune alternative desktop sous Linux.

Kompozer

Un éditeur HTML WYSIWYG. Quand j’ai besoin d’un tableau HTML, je le dessine là dedans. Maintenant appelé BlueGriffon.

Recordmydesktop

Pour filmer mon bureau pour des tutos.

flattr this!