PROJET AUTOBLOG


Tiger-222

Archivé

Site original : Tiger-222

⇐ retour index

Utilitaire : Convertisseur d'unités

jeudi 25 juillet 2013 à 13:25
Je ne sais plus si c'est Séb qui râlait que les développeurs ne s'occupaient à écrire des outils que pour les smartphones et téléphones mobiles. Du coup, voici le premier (d'une longue liste ?) qui m'a déjà bien servi : un convertisseur d'unités. Le programme est multilingue, multiplateforme et suis la philosophie Unix.

À l'heure où j'écris ces lignes, ce petit utilitaire sans prétention permet de convertir différentes unités d'énergie, de longueur, de masse, de surface et de temps. Libre à vous d'ajouter d'autres unités ou de faire une demande :)



Dépendances et pré-requis


Si vous souhaitez compiler ce petit bijou de code (humour hein), il vous faudra les bibliothèques Qt. Ensuite si vous voulez modifier le code, quelques notions basiques de C++ seront utiles.


Téléchargement


L'entièreté du code se trouve sur GitHub. Forkez, bidouillez, c'est bon pour la santé !
Je mettrai à disposition un exécutable pour Windows dans le dossier packages.


Autres infos


Pour me tester, j'ai voulu avoir quelques statistiques afin de pouvoir mieux évaluer mes compétences (sloccount inside, à prendre avec des pincettes):
Plus concrêtement, j'ai passé 5 heures et 20 minutes en tout (recherches incluses), et à 35 € de l'heure, arrondi à la dizaine supérieure, ça ferait plutôt du 190 €.

Développement : l'estimation du temps régulièrement sous-estimée ?

mercredi 24 juillet 2013 à 14:22
Ce qui suit est une traduction libre de l'article Why are software development task estimations regularly off by a factor of 2-3? de Michael Wolfe.

Pourquoi l'estimation du temps des tâches de développement est-elle régulièrement fausse d'un facteur de 2, voire 3 ?


Partons pour une randonnée le long de la côte de San Francisco à Los Angeles pour rendre visite à nos amis de Newport Beach. Je sors ma carte et dessine notre trajet :


La ligne fait environ 600 kilomètres de long ; nous pouvons marcher à 6 km/h pendant 10 heures par jour, nous y serons donc dans 10 jours. Nous appelons nos amis et prévoyons un dîner pour le dimanche suivant, en début de soirée. Nous nous ammènerons triomphalement à 18h. Ils sont impatients !

Nous nous levons tôt le lendemain, excités par cette nouvelle aventure. Nous sanglons nos sacs à dos, sortons notre carte et planifions notre première journée. Nous jetons un oeil à la carte. Hmmm :


Wow, il y a 1 million de tours et de détours sur cette côte. À 6 kilomètres par jour, nous atteindrions seulement Half Moon Bay. Ce voyage fait au moins 800 bornes, pas 600. Nous appelons nos amis et repoussons le dîner au mardi d'après. Mieux vaut être réaliste. Ils sont déçus, mais impatients de nous voir. Et puis 12 jours pour faire San Francisco - Los Angeles ce n'est pas si mal.

Cette contrariété réglée, nous décollons. 2 heures plus tard, nous passons seulement le zoo. Qu'est-ce que ça donne ? Nous regardons la piste :


Quelle lenteur ! Le sable, l'eau, les escaliers, les criques, les lions de mer agressifs ! Nous marchons au mieux à 3 km/h, moitié moins que ce que nous voudrions. Nous pourrions marcher 20 heures par jour, ou repousser nos amis à une autre semaine. OK, ce compromis devrait être réalisable : nous marcherons 12 heures par jour et repoussons nos amis à la semaine d'après. Nous les appelons et retardons le dîner jusqu'au dimanche suivant. Ils sont un peu irrités mais répondent, « OK, nous vous verrons, c'est le principal » .

Après une dure journée de 12 heures de marche, nous campons à Moss Beach. Merde, nous n'en avons pas fini d'essayer de monter ces tentes avec ce vent. Nous ne sommes pas au lit avant minuit. Pas une grosse affaire : demain nous accélèrerons la cadence.

Nous avons trop dormi et nous réveillons endoloris et épuisés à 10h. Putain ! Plus moyen de faire nos 12 heures de marche. Nouvel objectif : 10h, et demain nous pourrons en faire 14. Nous rassemblons nos affaires et partons.

Après 2 heures de longs efforts, je remarque que mon ami boite. Oh merde, des ampoules. Nous devons les soigner tout de suite... Nous sommes le genre d'équipe qui tue les problèmes dans l'oeuf, avant qu'ils ne nous ralentissent. Je cours 45 minutes et 5 kilomètres jusqu'à Pescadero, récupère quelques bandes et repars pour panser mon ami. Je suis épuisé et le soleil commence à se coucher, donc fini pour aujourd'hui. Nous allons au lit après avoir parcouru seulement 9 kilomètres. Mais nous avons des provisions fraîches. Ça ira, nous ferons la différence demain.

Nous nous levons le matin suivant, bandons nos pieds et partons. Premier virage... Et merde ! C'est quoi ça ?


La maudite carte ne montrait pas ça ! Nous avons du marcher 5 kilomètres dans les terres, autour de quelques terrains clôturés et protégés par le gouvernement fédéral, nous perdre deux fois, puis revenir sur la côte vers midi. Une grande partie de la journée perdue pour 2 kilomètres de progression. Non, nous n'appelerons pas nos amis pour repousser une fois de plus. Nous marchons jusqu'à minuit pour tenter de rattraper le retard et revenir sur le calendrier.

Après une nuit agitée dans le brouillard, mon ami se réveille le matin avec de la fièvre accompagnée d'un mal de tête fulgurant. Je lui demande s'il peut rallier. « Qu'est-ce que tu crois, j'ai marché dans un brouillard givrant pendant 3 jours sans interruption ! » Bon, c'est mort pour aujourd'hui. Récupérons. Demain nous nous démènerons à 14 heures par jour puisque nous seront reposés... C'est l'histoire de quelques jours de plus, largement faisable !

Nous nous réveillons le lendemain matin un peu abassourdis. Je regarde la carte :


Putain de merde ! C'est déjà le cinquième jour d'un voyage de 10 et nous n'avons même pas quitté la région de la baie ! C'est ridicule ! Il faut refaire une estimation plus précise, appeler nos amis, probablement se faire crier dessus, mais obtenir un objectif plus réaliste une bonne fois pour toutes.
Mon ami : Bon, nous avons fait 64 kilomètres en 4 jours, c'est un voyage d'au moins 960 kilomètres, il nous faudrait donc 60 jours, probablement 70 pour être sûr.
Moi : Pas moyen... Certes, je n'ai jamais fait cette marche avant, mai je sais que ça ne prend pas 70 jours pour marcher de San Francisco à Los Angeles. Nos amis vont se moquer de nous si on les appelle pour leur dire que nous ne les verrons pas avant Pâques !

Moi : Si tu peux t'engager à 16 heures de marche par jour, nous pouvons faire la différence ! Ça sera difficile, mais c'est la crise. Secoue-toi !
Mon ami : Ce n'est pas moi qui ai dit à nos amis que nous seront là pour dimanche ! Tu es entrain de me tuer pour une erreur que tu as faite !

Un silence tendu s'installe. Personne ne passera de coup de fil aujourd'hui. J'appelerai demain lorsque mon ami aura repris ses esprits et sera prêt pour s'engager à quelque chose de raisonnable.

Le lendemain matin, nous restons dans nos tentes jusqu'à ce qu'une tempête nous tombe dessus. La querelle de la nuit précédente passa sous silence, bien que j'ai aboyé après mon idiot d'ami quand il oublia sa bouteille au campement, et que nous ayons du perdre 30 minutes pour la récupérer.

Je me fais une petite note mentale que nous sommes en rade de papier toilette, et qu'à la prochaine ville il faudra refaire un stock. Nous prenons un virage : une rivière imposante nous barre la route. Je sens que j'ai une grosse diarrhée...

Module python Multi-Screen Shot

lundi 1 juillet 2013 à 22:34
MSS pour Multi-Screen Shot.

Il s'agit d'un module python qui ne doit faire qu'une seule chose, et la faire bien : prendre des captures d'écran.
Hm... Il y a déjà la dose qui existe me direz-vous. Oui, Mais ! Je ne souhaitais pas intégrer des monstres tels que Qt, win32 ou encore wx ; et que ça soit PIL ou Pillow, aucun ne gère le multi-écran.

Le module MSS a été pensé dans le but de combler ces vides :
Pour plus d'informations sur le fonctionnement interne de MSS : GNU/LinuxMacWindows


Téléchargement


Tous les fichiers nécessaires se trouvent sur la page du projet (GitHub).
Ou vous pouvez l'installer simplement en utilisant pip : pip install mss


Dépendances et pré-requis


Python. Et c'est tout :)
MSS est écrit en Python pur, utilisation intensive de ctypes. ctypes a été officiellement intégré à Python depuis la version 2.5, pour les versions précédentes, il existe sous forme de module externe.


Support


Voici le tableau de compatibilité, n'hésitez pas à ouvrir un billet pour me prévenir si vous avez pu tester MSS pour les configurations non testées.


Utilisation


Si vous souhaitez simplement tester le fonctionnement de MSS sur votre système, téléchargez le fichier mss.py, puis :
$ python mss.py
Le script prendra une capture par écran, suivi d'une capture globale.

Si vous souhaitez intégrer MSS à un de vos projet, le module dispose des classes MSSLinux et MSSWindows, à appeler suivant votre système. Afin d'avoir plus de détails, il est possible de passer l'argument debug=True. Utilisez-le si vous devez reporter un bogue.
Chacune de ces classes contient la méthode save(oneshot=False).
# Vous pouvez déterminer automatiquement quelle classe utiliser :
from platform import system
from mss import *

systems = {
'Linux'  : MSSLinux,
'Windows': MSSWindows,
'Darwin' : MSSMac
}
try:
MSS = systems[system()]
except KeyError:
err = 'System "{0}" not implemented.'.format(system())
raise NotImplementedError(err)

# Ou alors simplement importer la classe qu'il vous faut :
# from mss import MSSLinux as MSS

try:
mss = MSS()

# Une capture d'écran par moniteur
for filename in mss.save():
print('File "{0}" created.'.format(filename))

# Un seul fichier pour les capturer tous :)
for filename in mss.save(oneshot=True):
print('File "{0}" created.'.format(filename))
except Exception as ex:
print(ex)
raise


Bonus


Juste pour le fun, j'ai mis en place une galerie d'images sans prétention afin d'exposer les captures d'écran oneshot que vous me ferez parvenir ☺