Skip to content

Instantly share code, notes, and snippets.

@ksamuel
ksamuel / song.txt
Created September 30, 2019 06:36
Song for Python exercice
There's a lady who's sure all that glitters is gold
And she's buying a stairway to heaven.
When she gets there she knows, if the stores are all closed
With a word she can get what she came for.
Ooh, ooh, and she's buying a stairway to heaven.
There's a sign on the wall but she wants to be sure
'Cause you know sometimes words have two meanings.
In a tree by the brook, there's a songbird who sings,
Sometimes all of our thoughts are misgiven.
@ksamuel
ksamuel / test_formatter.py
Created October 6, 2018 09:43
Sculpter une fonction: les tests
from formatter import afficher, formater, produire
def test_afficher():
assert afficher([1, 2, 3]) == "- 1\n- 2\n- 3"
assert afficher([1, 2, 3], prefix="*") == "* 1\n* 2\n* 3"
assert afficher([1, 2, 3], template="{element} {prefix}") == "1 -\n2 -\n3 -"
@ksamuel
ksamuel / formatter.py
Created October 6, 2018 09:42
Sculpter une fonction: le code
# Une fonction simple
def afficher(liste):
for element in liste:
print("-", element)
# Eviter les effets de bord
{"iv":"09hmXXWoTomKNGZUtJ8tsQ",
"salt":"3MzaifTMm1M",
"ct":"Hoo0fsfm1AZQKSUQbpZ7NrV084Zs0t1+uR+7KSKVVqBuzu+ogkECW7nCaWFXLESYcoUUf/HIQRPkLigr1A7x+7c2hymrHsdudVF5ikMGILr4YczuJV89eJo4uzND5H+V0TY7vTCA8Cw4AglAoAhoWn2dCZHRtCXmEGFwxo915Rn0P7ov0zpyJYRaEP86iCzC/RzseUBWnMCTZQTlfgXCbbvTEL8U8KsI3guPUSKf7R+7CUlfAgvLUF0eFGvX/PBj2vY4T6ClqAtK93Q168Nn3UfGsx6GbtL83Z2QEwb4Ia3Fl3WifWWU/cf76a8rm48PvnPrIWfWxVscHVqR5zmEj/mda1dkz9z8TeVABErIh7XyMRLqQsLQnBHKO2CmhorJM+I2pLX7pNYyOUfrWw/kb8+r8QYbj2wkIv0UbzSd4HDYH3tXTdLnOWG+eBLAFaMoUgNjzTlXRuEOtZIy3UC0YaR9xJ8rQgEECYExAEI9u+eUTQYJgH2Z8vYNte3+FjKXSreI9i+7gfnvlzOza88bHWIYKfOhJzcUcEYnba0r80wJtRqQxW7dYyimfAsJeHBn6nRYFGcHcXW20WxUbSax0AWCjJc3HCFpxfc9/J0IyGuqCFgBLaESrQV7oCRhTfc+VHzCwR2Ns5NaAXZyKzarW1XY9rWbnK8NZmMq+WN3rL46SO4NbfiWq9sRU7zX2neOfJ8C3M19Lq5+sMXeihP+TxZWcUhD/NxRSQDARN8/zE6JfOrilxGDGglJmkskwqHJH/52Q7LckdBXu5sC0Oc67J7QMdsDQot7Ulr/Asql2yYK4joV4Rd7i+4CuvanAPXT3uJmuphN6KK9tjU9tgVnRvZO0gvCEeFjhOGNatQGcF2TJFyi2q/l9iQR3+BNQrRcUiUfKwjNQq5PuIy/T8LyKvwC3xquF3syJ7Ck2lhL1CbspEdR3tvBLkc3SZsfJFhJxkYq
"{
"iv":"HG2g79e9G6fCesdu43g+Mg",
"salt":"uCblQBfucg8",
"ct":"hG+n0QzrDzuHRnmUedZo2Gf6v+ktgGDLFok3efHdI0XrnUq0xVWiF7JkMSRwFSO699+uQxfIKg+wTLU/ykXbHuIRX6WpENH8WvnUL1TGSSRuhfbNR/MWL8EBPAT62Je77Ej0CPecnCB4SFKHR1ubjA35M0ullW/OobupskXyYBmk5wsE7IQFKTWXdougzyxCABIxqQxF5i3rlIzHotSuJT+WpccAjtU2zEszGSJngVVFQ7m9C3SC5anU9hMYOntg6OK5d87BQ+j4AphAmKasyPVlaZlwLwIwdERFRLVk0ZEnIQZf9zLHNX90cC2Qf8yj1QTHUUHlAJ1Q4wpZhAQ4qFmLQ8Vn7YVyNPgqXM7PIsG0OX198BP238F59gr5qdq8o59qAize6/Ab0rR/rpx/477o7RLyUZVsccPbqoiJdSVCmvbh1UUUqUAHDD09+b6ioW57jO08jgT5xZMRmsDYzgxGdab2dkoWvbK3mr0CpVEyLXB7NNsoJNtO+FfeynaylOV8Rols/kx3izV8xgDESbl/o8pDB9cvXewodWE8cDI7bJnL1aAiIULxJL9Qe+kmFGwa8ahxVBnb+ECookeo9WcC5bGIV5JOX+o1d9lMDEnVIplCr5zPi4MvoyGEZNkjA7XXW9WILuupaNcp6eLsOufiBZb6SQ4EUCxU/wyigRFj5VOBBOlK57CCyXtXwy38GtGvTBFdQ1s9lCAmlGhtsaV6P8Ye/Pf5iDIMzGvkrHy7PB14HZ5zK0fzNQ5RHy1yMbtUrPO7gkuXLdzYz8cRFtttTLmoTv1q4Tm36ksqI/Dioo4fbwlurErkFcLX/3b+l6Z5UaYxdPea/L9ZJXft29hlxZqasymIGcbjdSlkXy2kvgofozsPxBxRP7eao7RYqQ5bSI91GUxun14z4CI7U7PVl2SmNqdSMaWIRwI6bxTl/PO2wY83aW0j4l6jejK/q4
"{
"iv":"HG2g79e9G6fCesdu43g+Mg",
"salt":"uCblQBfucg8",
"ct":"hG+n0QzrDzuHRnmUedZo2Gf6v+ktgGDLFok3efHdI0XrnUq0xVWiF7JkMSRwFSO699+uQxfIKg+wTLU/ykXbHuIRX6WpENH8WvnUL1TGSSRuhfbNR/MWL8EBPAT62Je77Ej0CPecnCB4SFKHR1ubjA35M0ullW/OobupskXyYBmk5wsE7IQFKTWXdougzyxCABIxqQxF5i3rlIzHotSuJT+WpccAjtU2zEszGSJngVVFQ7m9C3SC5anU9hMYOntg6OK5d87BQ+j4AphAmKasyPVlaZlwLwIwdERFRLVk0ZEnIQZf9zLHNX90cC2Qf8yj1QTHUUHlAJ1Q4wpZhAQ4qFmLQ8Vn7YVyNPgqXM7PIsG0OX198BP238F59gr5qdq8o59qAize6/Ab0rR/rpx/477o7RLyUZVsccPbqoiJdSVCmvbh1UUUqUAHDD09+b6ioW57jO08jgT5xZMRmsDYzgxGdab2dkoWvbK3mr0CpVEyLXB7NNsoJNtO+FfeynaylOV8Rols/kx3izV8xgDESbl/o8pDB9cvXewodWE8cDI7bJnL1aAiIULxJL9Qe+kmFGwa8ahxVBnb+ECookeo9WcC5bGIV5JOX+o1d9lMDEnVIplCr5zPi4MvoyGEZNkjA7XXW9WILuupaNcp6eLsOufiBZb6SQ4EUCxU/wyigRFj5VOBBOlK57CCyXtXwy38GtGvTBFdQ1s9lCAmlGhtsaV6P8Ye/Pf5iDIMzGvkrHy7PB14HZ5zK0fzNQ5RHy1yMbtUrPO7gkuXLdzYz8cRFtttTLmoTv1q4Tm36ksqI/Dioo4fbwlurErkFcLX/3b+l6Z5UaYxdPea/L9ZJXft29hlxZqasymIGcbjdSlkXy2kvgofozsPxBxRP7eao7RYqQ5bSI91GUxun14z4CI7U7PVl2SmNqdSMaWIRwI6bxTl/PO2wY83aW0j4l6jejK/q4
[
{ "keys": ["ctrl+d"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Line.sublime-macro"} },
{ "keys": ["shift+alt+d"], "command": "find_under_expand", "context":
[
{ "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true }
]
},
{ "keys": ["shift+alt+c"], "command": "run_macro_file", "args": {"file": "Packages/User/color.sublime-macro"} },
{ "keys": ["ctrl+alt+p"], "command": "previous_edit" },
{ "keys": ["ctrl+alt+n"], "command": "next_edit" }
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# vim: ai ts=4 sts=4 et sw=4 nu
import urlparse
import os
import urllib
from scrapy.utils.url import urljoin_rfc
from scrapy.selector import HtmlXPathSelector
@ksamuel
ksamuel / gist:1521153
Created December 26, 2011 13:30
Urwid chat UI
#!/usr/bin/env python
# coding: UTF-8
# code extracted from nigiri
import os
import datetime
import sys
import traceback
import re
@ksamuel
ksamuel / gist:1510635
Created December 22, 2011 15:12
Closure python en lecture seule
# this works (like javascript)
def test(value): # functions that returns a function
def closure(plus): # function got 'value' in a closure
return value + plus
return closure