PROJET AUTOBLOG


Sam & Max: Python, Django, Git et du cul

Site original : Sam & Max: Python, Django, Git et du cul

⇐ retour index

Mise à jour

Mise à jour de la base de données, veuillez patienter...

Minibelt, la petite soeur de batbelt

lundi 21 octobre 2013 à 12:54

Quand j’ai créé batbelt, j’ai voulu en faire une boîte à outils pour des trucs pratiques qu’on ne trouve pas dans la lib standard, et qui n’ont pas de thèmes particuliers. Une genre de collection de snippets que j’utiliserais pour tous mes gros projets.

Mais voilà, il y a des choses qu’on utilise souvent, et d’autres moins. Et certaines personnes ne veulent pas installer un package complet avec plusieurs modules juste pour quelques fonctions. Surtout que tous les projets ne sont pas des gros projets.

C’est pourquoi j’ai créé minibelt.

C’est un subset de batbelt qui tient dans UN fichier, et qui contient uniquement les fonctions qu’on utilise le plus souvent. Vous pouvez bien sûr l’installer avec pip, mais le plus simple, c’est de juste copier / coller le fichier et le mettre à côté de votre code, puis de l’oublier.

L’autre bonne nouvelle, c’est que puisqu’il y a moins de code, je me suis bougé le cul pour rendre minibelt compatible Python 2 et Python 3 (enfin je crois :-)). Le README contient aussi l’ensemble de la documentation nécessaire.

Peut être même qu’un jour de pluie, j’ajouterai des tests unitaires, soyons fou.

Enjoy.

flattr this!

Calcul décimaux avec norme IEEE 754/854 en Python

dimanche 20 octobre 2013 à 22:25

Peut-on faire titre plus chiant que celui-là, je vous le demande ?

Toujours est-il que cet article n’interessera que des gens parfaitement chiants, à savoir des scientifiques tatillons, mais je sais qu’il y en a dans notre lectorat alors on va leur jeter un os.

Bref, vous savez que la division par zéro en Python, ça lève une exception :

>>>  1 / 0
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
<ipython-input-1-b710d87c980c> in <module>()
----> 1 1 / 0
 
ZeroDivisionError: integer division or modulo by zero

Certains esprits chagrins n’aiment pas ce comportement, et voudraient, par exemple, que cela retourne l’infini. Après tout, pourquoi pas.

N’y a-t-il rien qu’on puisse faire pour calmer la rétention anale qui se prépare à cette déconvenue ?

Bien sûr que si, on parle de Python voyons !

>>> from decimal import setcontext,ExtendedContext, Decimal 
>>> setcontext(ExtendedContext)
 
>>> 1 / Decimal(0)
Infinity
>>> -1 / Decimal(0)
-Infinity

Voilà. Si vous êtes une personne normale et manipulez des objets concrets comme des sous, des joujoux, des choux non additionnés avec des carottes ou des hashtags, les réglages par défaut sont parfaits. Mais si vous êtes un fan de scipy, traitant des matrices par bottes de douze, ça peut servir.

Spéciale dédicace à mes amis au CNRS. Bisoux partout !

flattr this!

Dans les règles du lard

dimanche 20 octobre 2013 à 02:41

Il y a une scène que j’adore dans Californation, c’est au premier épisode, quand le principal protagoniste est (pour changer) au lit avec une donzelle, qui lui dit qu’aujourdhui elle ne peut pas. Ca donne :

Pour moi c’est un peu pareil, je trouve les proverbes du genre “quand coule la rivière du sang emprunte le petit chemin boueux” complètement inutiles.

D’abord, si une meuf veut pas s’envoyer en l’air pendant ses règles, y a peu de chance qu’elle accepte la sodo. Ensuite, si vous ne voulez pas mettre votre bite devant quand ça saigne pour des pseudos raison d’hygiène, qu’est-ce que vous allez la carrer dans un trou un caca ?

La période des règles, c’est tip top. D’abord, elle peut pas tomber enceinte si on couche aux premiers jours des règles. Ensuite, c’est auto-lubrifié. Enfin, beaucoup de femmes sont particulièrement chaudes pendant la période des règles, don’t on s’amuse vachement.

Autant je ne recommande pas le cuni, autant on aurait tort de se priver d’une partie de jambe en l’air durant cette période. Pun intented.

Evidement laissez lui le temps de tout retirer, y compris le tampax.

flattr this!

Locked out from twitter

vendredi 18 octobre 2013 à 11:11

Hier, on a été accueilli par ça :

Sapristi ! Attendez un peu avant d'essayer de vous connecter de nouveau.

Pour éviter les abus, nous limitons le nombre de tentatives de connexion par heure.

Si le mot de passe de votre compte a été changé récemment, assurez-vous que toutes les applications tierces et tous les clients Twitter soient fermés avant de tenter de vous connecter à nouveau. Pour plus d'informations, veuillez consulter cet article d'aide.

Veuillez réessayer dans 60 minutes.

Donc je suppose que qu’un service quelconque s’est fait hacké, avec notre email dedans, et qu’un bot a défoncé notre compte twitté en tentant le bruteforce avec des variations du mot de passe du compte précédent. Bref, une bonne raison de plus d’utiliser lastpass pour générer des mots de passe pour chaque servie.

flattr this!

Ouvrir un fichier avec le bon programme en Python

jeudi 17 octobre 2013 à 12:09

Votre logiciel doit permettre d’ouvrir un fichier avec un programme externe. Oui mais lequel ?

Les OS ont des réglages par défaut pour chaque type de fichier, et on peut demander “ouvrir le prog pour ce type de fichier par défaut”. Par exemple, moi, si je demande d’ouvrir un fichier vidéo, je m’attend à ce que VLC soit lancé.

Voilà comment faire ça en Python :

import subprocess
import sys
import os
 
def run_file(path):
 
    # Pas de EAFP cette fois puisqu'on est dans un process externe,
    # on ne peut pas gérer l'exception aussi facilement, donc on fait
    # des checks essentiels avant.
 
    # Vérifier que le fichier existe
    if not os.path.exists(path):
        raise IOError('No such file: %s' % path)
 
    # On a accès en lecture ?
    if hasattr(os, 'access') and not os.access(path, os.R_OK):
        raise IOError('Cannot access file: %s' % path)
 
    # Lancer le bon programme pour le bon OS :
 
    if hasattr(os, 'startfile'): # Windows
        # Startfile est très limité sous Windows, on ne pourra pas savoir
        # si il y a eu une erreu
        proc = os.startfile(path)
 
    elif sys.platform.startswith('linux'): # Linux:
        proc = subprocess.Popen(['xdg-open', path], 
                                 # on capture stdin et out pour rendre le 
                                 # tout non bloquant
                                 stdout=subprocess.PIPE, stderr=subprocess.PIPE)
 
    elif sys.platform == 'darwin': # Mac:
        proc = subprocess.Popen(['open', '--', path], 
                                stdout=subprocess.PIPE, stderr=subprocess.PIPE)
 
    else:
        raise NotImplementedError(
            "Your `%s` isn't a supported operatin system`." % sys.platform)
 
    # Proc sera toujours None sous Windows. Sous les autres OS, il permet de
    # récupérer le status code du programme, and lire / ecrire sur stdin et out
    return proc

C’était le petit snippet sympas du jour !

P.S : si quelqu’un utilise BDSM BSD ou Solaris, je veux bien qu’il complète le snippet.

flattr this!

Error happened! 0 - count(): Argument #1 ($value) must be of type Countable|array, null given In: /var/www/ecirtam.net/autoblogs/autoblogs/autoblog.php:428 http://ecirtam.net/autoblogs/autoblogs/sametmaxcom_a844ada43a979e3b1395ab9acb6afafb84340999/?131 #0 /var/www/ecirtam.net/autoblogs/autoblogs/autoblog.php(999): VroumVroum_Blog->update() #1 /var/www/ecirtam.net/autoblogs/autoblogs/sametmaxcom_a844ada43a979e3b1395ab9acb6afafb84340999/index.php(1): require_once('...') #2 {main}