From afc8ff084591700a8608058fc9870410defa3a60 Mon Sep 17 00:00:00 2001 From: Bruno 21 Date: Sun, 12 May 2019 16:17:58 +0200 Subject: [PATCH] Update --- docs/Linux/ack.md | 4 + docs/Linux/commandes.md | 32 +++ docs/Linux/conditions.md | 6 + docs/Linux/for.md | 2 +- docs/Linux/grep.md | 8 + docs/Programmation/Python/class.md | 2 +- docs/Programmation/Python/dictionnaire.md | 118 ++++++++-- docs/Programmation/Python/fichiers.md | 56 ++++- docs/Programmation/Python/for.md | 65 ++++++ .../Python/image-20190317181121361.png | Bin 0 -> 111012 bytes docs/Programmation/Python/in.md | 209 ++++++++++++++++++ .../Python/{Python.md => index.md} | 18 +- docs/Programmation/Python/json.md | 26 +++ docs/Programmation/Python/liste.md | 20 ++ docs/Programmation/Python/requests.md | 170 ++++++++++++++ docs/Programmation/Python/set.md | 44 +++- docs/Programmation/Python/string.md | 45 ++++ docs/Programmation/Python/zip.md | 39 ++++ docs/macos/homebrew/brew-cask.md | 13 ++ docs/macos/homebrew/brew.md | 9 + docs/macos/node/node-js.md | 33 +++ docs/macos/python/pip.md | 29 ++- docs/macos/python/virtuel.md | 15 ++ mkdocs.yml | 17 ++ 24 files changed, 945 insertions(+), 35 deletions(-) create mode 100644 docs/Linux/ack.md create mode 100644 docs/Programmation/Python/for.md create mode 100644 docs/Programmation/Python/image-20190317181121361.png create mode 100644 docs/Programmation/Python/in.md rename docs/Programmation/Python/{Python.md => index.md} (93%) create mode 100644 docs/Programmation/Python/json.md create mode 100644 docs/Programmation/Python/requests.md create mode 100644 docs/Programmation/Python/zip.md diff --git a/docs/Linux/ack.md b/docs/Linux/ack.md new file mode 100644 index 0000000..9e851cf --- /dev/null +++ b/docs/Linux/ack.md @@ -0,0 +1,4 @@ +# ack + + + diff --git a/docs/Linux/commandes.md b/docs/Linux/commandes.md index 76001c0..c9207fe 100644 --- a/docs/Linux/commandes.md +++ b/docs/Linux/commandes.md @@ -117,3 +117,35 @@ $ usermod -G "" ``` + + +### Code de sortie: + +Chaque commande renvoie un *code de sortie* (quelque fois nommé *état de retour* ). + +Une commande ayant réussi renvoie un 0. + +Une commande ayant échoué renvoie une valeur différente de zéro qui est habituellement interprétable comme un code d'erreur. + +De même, les fonctions dans un script et le script lui-même renvoient un code de sortie. La dernière commande exécutée dans la fonction ou le script détermine le code de sortie. + +À l'intérieur d'un script, une commande **exit nnn** peut être employée pour retourner un code de sortie *nnn* au shell (*nnn* doit être un nombre décimal compris entre 0 et 255). + +```bash +$ hostname +silverbook.home +$ echo $? +0 +$ hostnam +-bash: hostnam: command not found +$ echo $? +127 +``` + +```bash +$ hostname +silverbook.home +bruno@SilverBook:~/.kymsu/plugins.d$ if [ $? -eq 0 ]; then echo "ok"; else echo "nok"; fi +ok +``` + diff --git a/docs/Linux/conditions.md b/docs/Linux/conditions.md index 014d5e7..cbfbf0b 100644 --- a/docs/Linux/conditions.md +++ b/docs/Linux/conditions.md @@ -26,6 +26,12 @@ else fi ``` +### if (one-line) + +```bash +if [ "$choice" == "72" ]; then echo "sphp 72"; elif [ "$choice" == "73" ]; then echo "sphp 73"; fi +``` + ### if imbriqué diff --git a/docs/Linux/for.md b/docs/Linux/for.md index 175c25f..09816e7 100644 --- a/docs/Linux/for.md +++ b/docs/Linux/for.md @@ -5,7 +5,7 @@ #### 1ere syntaxe: ```bash -bash for variable in liste_valeurs +for variable in liste_valeurs do instruction(s) done ``` diff --git a/docs/Linux/grep.md b/docs/Linux/grep.md index d6a624b..7f03984 100644 --- a/docs/Linux/grep.md +++ b/docs/Linux/grep.md @@ -36,6 +36,14 @@ grep -l -r "brew" ./docs/ +Chercher dans tous les fichiers 'php' ou 'html' (et ignorer les dossiers '.git'): + +```bash +grep pattern $(find . -name '*.php' -or -name '*.html' | grep -v .git) +``` + + + Regex: ```bash diff --git a/docs/Programmation/Python/class.md b/docs/Programmation/Python/class.md index ee2164d..0d5bb74 100644 --- a/docs/Programmation/Python/class.md +++ b/docs/Programmation/Python/class.md @@ -1,6 +1,6 @@ -# class +# Les classes diff --git a/docs/Programmation/Python/dictionnaire.md b/docs/Programmation/Python/dictionnaire.md index d248994..31dcced 100644 --- a/docs/Programmation/Python/dictionnaire.md +++ b/docs/Programmation/Python/dictionnaire.md @@ -33,6 +33,18 @@ C'est une collection **non ordonnée**, **modifiable** et **indexée**. {'marque': 'Ford', 'modele': 'Mustang', 'annee': 1964} ``` +```python +# Liste l de couples transformée en dictionnaire +>>> l = [('a',1), ('b',2)] +>>> dict(l) +{'a': 1, 'b': 2} +``` + +```python +>>> dict(zip('abc',range(3))) +{'a': 0, 'b': 1, 'c': 2} +``` + ##### Accéder à un item: ```python @@ -82,6 +94,15 @@ C'est une collection **non ordonnée**, **modifiable** et **indexée**. {'language': 'python', 'version': '3.7'} ``` +##### Ajouter des valeurs (update): + +```python +>>> d = {'a':0} +>>> d.update(zip('bcd',range(1,4))) +>>> d +{'a': 0, 'b': 1, 'c': 2, 'd': 3} +``` + ##### Vérifier la présence d'une clé (in): ```python @@ -181,7 +202,7 @@ language python version 3.7 ``` -Vérifier si une clé existe dans un dictionnaire: +##### Vérifier si une clé existe dans un dictionnaire: ```python >>> dict = {'language': 'python', 'version': '3.7'} @@ -191,7 +212,7 @@ Vérifier si une clé existe dans un dictionnaire: 'language' est dans dict ``` -Longueur d'un dictionnaire: +##### Longueur d'un dictionnaire: ```python >>> dict = {'language': 'python', 'version': '3.7'} @@ -199,33 +220,96 @@ Longueur d'un dictionnaire: 2 ``` - - ##### Copier un dictionnaire (copy): ```python >>> autre_dict = dict.copy() >>> autre_dict {'language': 'python', 'version': '3.7'} + +>>> autre_dict['language'] = 'PYTHON' +>>> autre_dict +{'language': 'PYTHON', 'version': '3.7'} +>>> dict +{'language': 'python', 'version': '3.7'} ``` +##### Fromkeys(): +```python +>>> d3 = {} +>>> d3 = {}.fromkeys('abcde', 0) +>>> d3 +{'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0} +``` #### Méthodes: -| Méthode | Description | -| ------------ | ----------- | -| clear() | | -| copy() | | -| fromkeys() | | -| get() | | -| items() | | -| keys() | | -| pop() | | -| popitem() | | -| setdefault() | | -| update() | | -| values() | | +| Méthode | Description | +| -------------------- | ------------------------------------------------------------ | +| d.clear() | supprime tous les éléments de `d` | +| d.copy() | shallow copie de `d` | +| {}.fromkeys(s,v) | créée un dict avec les clés de `s` et la valeur `v` | +| d.get(k [,v]) | envoie la valeur `d[k]` si elle existe v sinon | +| d.items() | liste des items `(k,v)` de `d` | +| d.keys() | liste des clés | +| d.pop(k [,v]) | enlève `d[k]` s’il existe et renvoie sa valeur ou `v` sinon | +| d.popitem() | supprime un item `(k,v)` et retourne l’item sous forme de tuple | +| d.setdefault(k [,v]) | `d[k]` si elle existe sinon `v` et rajoute `d[k] = v` | +| d.update(s) | `s` est une liste de tuples que l’on rajoute à `d` | +| d.values() | liste des valeurs de `d` | + + + +#### Dictionnaires persistants: + +Python permet de créer des dictionnaires persistants, grâce au module `shelve`. + +`shelve` fournit une solution de persistance de type “base de données” très simple qui sera gérée automatiquement dans un fichier. + +La méthode `shelve.open('f')` crée dans le répertoire courant de votre ordinateur, un fichier de sauvegarde “f.db” s’il n’existe pas, et retourne un objet de type `shelve` ; un `shelve` fonctionne comme un dictionnaire. La plupart des opérations et méthodes des dictionnaires lui sont applicables ; toute modification appliquée au `shelve` est automatiquement sauvegardée. La méthode `shelve.close` permet de fermer le `shelve`, comme pour un fichier. + +```python +>>> import shelve +>>> t = [0,1,2,3,4,5,6,7] +>>> p = (1,2,3) +>>> i = 23 +>>> s = 'Bonjour' +>>> db = shelve.open('data') +>>> db['liste'] = t +>>> db['point'] = p +>>> db['entier'] = i +>>> db['chaine'] = s +>>> print(dict(db)) +{'point': (1, 2, 3), 'entier': 23, 'liste': [0, 1, 2, 3, 4, 5, 6, 7], 'chaine': 'Bonjour'} +>>> db.close() +>>> exit() + +~$ ls -la +-rw-r--r-- 1 bruno staff 16384 25 mar 08:55 data + +# On relance une session Python + +>>> import shelve +>>> with shelve.open('data') as db: +... print(db['liste']) +... for k in db: +... print(db[k]) +... +[0, 1, 2, 3, 4, 5, 6, 7] +(1, 2, 3) +23 +[0, 1, 2, 3, 4, 5, 6, 7] +Bonjour +``` + +Si votre code modifie plusieurs fois certaines entrées lors de la même session, lors de l’ouverture du `shelve`, il est important, dans la méthode `open` associée au `shelve`, de mettre le paramètre `writeback` à vrai, comme suit : + +```python +shelve.open('data', writeback=True) +``` + +Grâce à cette option, chaque fois qu’une modification est réalisée au `shelve`, cette modification est correctement répercutée sur la mémoire morte (le disque dur) de votre ordinateur. diff --git a/docs/Programmation/Python/fichiers.md b/docs/Programmation/Python/fichiers.md index 54d8ffc..3fe715c 100644 --- a/docs/Programmation/Python/fichiers.md +++ b/docs/Programmation/Python/fichiers.md @@ -38,7 +38,23 @@ Parcourrir un fichier ligne par ligne: >>> for x in fichier: ... print(x) ... +``` +```python +>>> with open("pecl-help.txt") as fichier: +... for line in fichier: +... print(line, end='') +... +``` + +Ouverture d'un fichier binaire: + +```python +>>> with open('file', 'rb') as fichierbinaire: +... octets = fichierbinaire.read() # le fichier est lu en entier +... print("on a lu un objet de type", type(octets)) +... for i, octet in enumerate(octets): +... print(f"{i} → {repr(chr(octet))} [{hex(octet)}]") ``` @@ -56,8 +72,8 @@ fichier.close() ##### Type d'ouverture: ```python -r, pour une ouverture en lecture (READ). -w, pour une ouverture en écriture (WRITE), à chaque ouverture le contenu du fichier est écrasé. Si le fichier n'existe pas python le crée. +r, pour une ouverture en lecture (READ). (Par défaut) +w, pour une ouverture en écriture (WRITE), à chaque ouverture le contenu du fichier est écrasé. Si le fichier n'existe pas, Python le crée. a, pour une ouverture en mode ajout à la fin du fichier (APPEND). Si le fichier n'existe pas python le crée. b, pour une ouverture en mode binaire. t, pour une ouverture en mode texte. @@ -92,7 +108,7 @@ if os.path.exists("empty_folder"): -#### Chemins +#### Chemins (os.path) ##### Méthodes: @@ -206,3 +222,37 @@ os.rename(old, new) → Renomme le fichier / dossier indiqué +#### pathlib + +Depuis Python 3.4, le module `os.path` est obsolète et est remplacé par la librairie `pathlib`. + +```python +from pathlib import Path + +help(pathlib) +``` + +```python +from pathlib import Path +filename = 'scratch.py' +path = Path(filename) + +if path.exists(): + print("existe") + print(path.stat().st_size) # taille + print(path.stat().st_mtime) # dernière modif + +try: + path.unlink() +except FileNotFoundError: + print("Pas de fichier à supprimer") +``` + +```python +from pathlib import Path +dirpath = Path('.') # répertoire courant + +for py in dirpath.glob("*.py"): + print(py) # liste des fichiers Python du répertoire courant +``` + diff --git a/docs/Programmation/Python/for.md b/docs/Programmation/Python/for.md new file mode 100644 index 0000000..fa4d30a --- /dev/null +++ b/docs/Programmation/Python/for.md @@ -0,0 +1,65 @@ +# For + + + +##### Range: + +```python +>>> somme = 0 +>>> for i in range(10): +... somme += i +... +>>> print(somme) +45 +``` + +##### Parcourir une liste: + +```python +>>> thislist = ["alpha", "beta", "gamma"] +>>> for elem in thislist: +... print(elem) +... +alpha +beta +gamma +``` + +##### Parcourir une chaine: + +```python +>>> language = "Python" +>>> for c in language: +... print("Caractère : ", c) +... +Caractère : P +Caractère : y +Caractère : t +Caractère : h +Caractère : o +Caractère : n +``` + +##### Parcourir une chaine par les indices: + +```python +>>> language = "Python" +>>> for i in range(len(language)): +... print("Caractère d'indice",i," :",language[i]) +... +Caractère d'indice 0 : P +Caractère d'indice 1 : y +Caractère d'indice 2 : t +Caractère d'indice 3 : h +Caractère d'indice 4 : o +Caractère d'indice 5 : n +``` + +##### Plusieurs variables dans une boucle for: + +```python +entrees = [(1, 2), (3, 4), (5, 6)] +for a, b in entrees: + print(f"a={a} b={b}") +``` + diff --git a/docs/Programmation/Python/image-20190317181121361.png b/docs/Programmation/Python/image-20190317181121361.png new file mode 100644 index 0000000000000000000000000000000000000000..4f710789a26d84c7e76bbb570c072a29b977ba04 GIT binary patch literal 111012 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�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
24KuJP_47ek8T$|0z;est=|+DM$`?*kG`N5c|4) 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 language = ["Python", "Perl", "C++"] +>>> i = "Python" +>>> if i in language: +... print("Python appartient à language") +... +Python appartient à language +``` + +##### Test si une liste est présent dans une autre liste: + +```python +>>> liste1 = [9,18,3,5,7,21] +>>> liste2 = [9,18,[3,5,7],21] +>>> [3,5,7] in liste1 +False +>>> [3,5,7] in liste2 +True +``` + +##### Test su une séquence est présent dans une chaine: + +```python +>>> language = "Python" +>>> 'thon' in language +True +``` + + + +### Slicing: + +##### Sous-séquence: + +```python +>>> str = "Bonjour, ça va ?" +>>> str[1:3] +'on' +>>> str[:3] +'Bon' +>>> str[3:] +'jour, ça va ?' +``` + +##### Copie de séquence: + +```python +>>> prem = [1,2,3,5,7] +>>> sec = prem[:] +>>> sec +[1, 2, 3, 5, 7] +``` + +##### Pas: + +```python +>>> language = "Python" +>>> language[::2] +'Pto' +# On prend 1 lettre sur 2 + +>>> language[::-1] +'nohtyP' +# On part de la fin +``` + +##### Gestion mémoire des séquences: + +```python +>>> prem = [2, 3] +>>> prem = sec = [2, 3] +>>> id(prem) +4468993928 +>>> id(sec) +4468993928 + +>>> trois = [2, 3] +>>> id(trois) +4468967496 + +>>> prem is sec +True +>>> prem is trois +False +>>> prem == trois +True + +>>> prem.append(5) +>>> prem +[2, 3, 5] +>>> sec +[2, 3, 5] +>>> trois +[2, 3] +``` + + + +```python +1 prem = sec = [1, 3] +2 trois = [1, 3] +3 prem[0] = 2 +4 prem.append(5) +5 prem.extend([7, 11]) +6 t = 'Bonjour' +7 t2 = 'B' + t[1:] +``` + +![image-20190317181121361](image-20190317181121361.png) + + + + + +```python +>>> tex = "bonjour" +>>> prem = [2, 3, 5, 7, 8, 9, 10, 17] + +>>> prem[4:7] = [11, 13] # on remplace les éléments 4 à 7 exclu +>>> prem +[2, 3, 5, 7, 11, 13, 17] +``` + + + +#### Pack / Unpack: + + + +```python +>>> tp = 2, 3, 5 # on crée un tuple +>>> type(tp) + +>>> x, y, z = tp # les 3 variables x, y, z prennent les valeurs des 3 éléments du tuple +>>> x +2 +>>> y +3 +>>> z +5 +``` + +```python +>>> x, y = 33, 666 +>>> x, y = y, x # permutation +>>> x +666 +>>> y +33 +``` + + + +##### Lecture et initialisation d’une chaîne de caractères: + +```python +>>> s = input() +4 +>>> s +'4' +>>> type(s) + +``` + +##### Lecture et initialisation d’un tuple de valeurs: + +```python +>>> eval("2 + 2") +4 + +>>> t = eval(input()) +2, 3, 4, 5 +>>> t +(2, 3, 4, 5) +>>> type(t) + + +>>> t = eval(input()) +"alpha", "beta", "gamma" +>>> t +('alpha', 'beta', 'gamma') +>>> type(t) + + +``` + +##### Création d'une séquence à partir d'une autre: + +```python +>>> t = (1, 2, 3, 4) +>>> t +(1, 2, 3, 4) # tuple +>>> l = list(t) +>>> l +[1, 2, 3, 4] # liste + +>>> l = list("Bonjour") # str +>>> l +['B', 'o', 'n', 'j', 'o', 'u', 'r'] # liste + + +``` + diff --git a/docs/Programmation/Python/Python.md b/docs/Programmation/Python/index.md similarity index 93% rename from docs/Programmation/Python/Python.md rename to docs/Programmation/Python/index.md index d451918..d59153e 100644 --- a/docs/Programmation/Python/Python.md +++ b/docs/Programmation/Python/index.md @@ -3,10 +3,10 @@ 1. collections: - 1. [liste](liste.md) - 2. [dictionnaire](dictionnaire.md) - 3. [tuple](tuple.md) - 4. [set](set.md) + 1. [liste []](liste.md) + 2. [dictionnaire {}](dictionnaire.md) + 3. [tuple ()](tuple.md) + 4. [set {}](set.md) 2. [class - objet](class.md) 3. [date](date.md) 4. [fichiers](fichiers.md) @@ -25,6 +25,16 @@ https://www.w3schools.com/python/default.asp +| Hashable (non modifiable) | Unhashable | +| ------------------------- | --------------- | +| int | liste [] | +| float | set {} | +| bool | dictionnaire {} | +| str | | +| tuples () | | + + + #### Instruction de boucles ##### while: diff --git a/docs/Programmation/Python/json.md b/docs/Programmation/Python/json.md new file mode 100644 index 0000000..0c7c731 --- /dev/null +++ b/docs/Programmation/Python/json.md @@ -0,0 +1,26 @@ +# json + + + + + +```python +import json + +# En partant d'une donnée construite à partir de types de base +data = [ + # des types qui ne posent pas de problème + [1, 2, 'a', [3.23, 4.32], {'eric': 32, 'jean': 43}], + # un tuple + (1, 2, 3), +] + +# sauver ceci dans un fichier +with open("s1.json","w", encoding='utf-8') as json_output: + json.dump(data, json_output) + +# et relire le résultat +with open("s1.json", encoding='utf-8') as json_input: + data2 = json.load(json_input) +``` + diff --git a/docs/Programmation/Python/liste.md b/docs/Programmation/Python/liste.md index 9561134..b3b0375 100644 --- a/docs/Programmation/Python/liste.md +++ b/docs/Programmation/Python/liste.md @@ -251,6 +251,11 @@ False >>> a.extend(b) >>> print(a) [1, 2, 3, 4, 5, 6] + +>>> a.extend([7, 8, 9]) +>>> print(a) +[1, 2, 3, 7, 8, 9] + >>> c = a + b >>> print(c) [1, 2, 3, 4, 5, 6, 4, 5, 6] @@ -272,6 +277,21 @@ if "alpha" in thislist: print("Oui, 'alpha' est dans la liste") ``` +##### Liste d'éléments de types différents: + +```python +>>> s = [1, 3, 3.14, ("bon","jour"), [5, 7]] +>>> len(s) +5 +>>> len(s[3]) # tuple +2 +>>> len(s[3][1]) # tuple - str "jour" +4 +>>> s[4][1] = 666 # sous-liste - int 7 +>>> s +[1, 3, 3.14, ('bon', 'jour'), [5, 666]] +``` + #### Méthodes: diff --git a/docs/Programmation/Python/requests.md b/docs/Programmation/Python/requests.md new file mode 100644 index 0000000..ce31407 --- /dev/null +++ b/docs/Programmation/Python/requests.md @@ -0,0 +1,170 @@ +# Requests + + + +https://realpython.com/python-requests/ + +https://realpython.com/caching-external-api-requests/ + + + +```bash +pip3 install requests +``` + + + +#### Requête GET: + +```python +>>> import requests +>>> requests.get('https://api.github.com') + + +>>> requests.get('https://api.github.com', timeout=1) + +# nb de second avant un timeout +``` + +##### Status Code: + +```python +>>> response = requests.get('https://api.github.com') +>>> print(response) + +>>> response.status_code +200 +>>> if response.status_code == 200: +... print('Success!') +... elif response.status_code == 404: +... print('Not Found.') +... +Success! +``` + +```python +import requests +from requests.exceptions import HTTPError + +for url in ['https://api.github.com', 'https://api.github.com/invalid']: + try: + response = requests.get(url) + + # If the response was successful, no Exception will be raised + response.raise_for_status() + except HTTPError as http_err: + print(f'HTTP error occurred: {http_err}') # Python 3.6 + except Exception as err: + print(f'Other error occurred: {err}') # Python 3.6 + else: + print('Success!') + +# la 1ere url répond par un Success +# la 2nde par une erreur +``` + +##### Content: + +```python +# bytes +>>> response.content +b'{"current_user_url":"https://api.github.com/user","current_user_authorizations_html_url":"https://github.com/settings/connections/applications{/client_id}","authorizations_url":"https://api.github.com/authorizations","code_search_url":"https://api.github.com/search/code?q={query}{&page,per_page,sort,order}","commit_search_url":"https://api.github.com/search/commits?q={query}{&page,per_page,sort,order}","emails_url":"https://api.github.com/user/emails","emojis_url":"https://api.github.com/emojis","events_url":"https://api.github.com/events","feeds_url":"https://api.github.com/feeds","followers_url":"https://api.github.com/user/followers","following_url":"https://api.github.com/user/following{/target}","gists_url":"https://api.github.com/gists{/gist_id}","hub_url":"https://api.github.com/hub","issue_search_url":"https://api.github.com/search/issues?q={query}{&page,per_page,sort,order}","issues_url":"https://api.github.com/issues","keys_url":"https://api.github.com/user/keys","notifications_url":"https://api.github.com/notifications","organization_repositories_url":"https://api.github.com/orgs/{org}/repos{?type,page,per_page,sort}","organization_url":"https://api.github.com/orgs/{org}","public_gists_url":"https://api.github.com/gists/public","rate_limit_url":"https://api.github.com/rate_limit","repository_url":"https://api.github.com/repos/{owner}/{repo}","repository_search_url":"https://api.github.com/search/repositories?q={query}{&page,per_page,sort,order}","current_user_repositories_url":"https://api.github.com/user/repos{?type,page,per_page,sort}","starred_url":"https://api.github.com/user/starred{/owner}{/repo}","starred_gists_url":"https://api.github.com/gists/starred","team_url":"https://api.github.com/teams","user_url":"https://api.github.com/users/{user}","user_organizations_url":"https://api.github.com/user/orgs","user_repositories_url":"https://api.github.com/users/{user}/repos{?type,page,per_page,sort}","user_search_url":"https://api.github.com/search/users?q={query}{&page,per_page,sort,order}"}' + +# string +>>> response.encoding = 'utf-8' +>>> response.text + +# JSON +>>> response.json() +{'current_user_url': 'https://api.github.com/user', 'current_user_authorizations_html_url': 'https://github.com/settings/connections/applications{/client_id}', 'authorizations_url': 'https://api.github.com/authorizations', 'code_search_url': 'https://api.github.com/search/code?q={query}{&page,per_page,sort,order}', 'commit_search_url': 'https://api.github.com/search/commits?q={query}{&page,per_page,sort,order}', 'emails_url': 'https://api.github.com/user/emails', 'emojis_url': 'https://api.github.com/emojis', 'events_url': 'https://api.github.com/events', 'feeds_url': 'https://api.github.com/feeds', 'followers_url': 'https://api.github.com/user/followers', 'following_url': 'https://api.github.com/user/following{/target}', 'gists_url': 'https://api.github.com/gists{/gist_id}', 'hub_url': 'https://api.github.com/hub', 'issue_search_url': 'https://api.github.com/search/issues?q={query}{&page,per_page,sort,order}', 'issues_url': 'https://api.github.com/issues', 'keys_url': 'https://api.github.com/user/keys', 'notifications_url': 'https://api.github.com/notifications', 'organization_repositories_url': 'https://api.github.com/orgs/{org}/repos{?type,page,per_page,sort}', 'organization_url': 'https://api.github.com/orgs/{org}', 'public_gists_url': 'https://api.github.com/gists/public', 'rate_limit_url': 'https://api.github.com/rate_limit', 'repository_url': 'https://api.github.com/repos/{owner}/{repo}', 'repository_search_url': 'https://api.github.com/search/repositories?q={query}{&page,per_page,sort,order}', 'current_user_repositories_url': 'https://api.github.com/user/repos{?type,page,per_page,sort}', 'starred_url': 'https://api.github.com/user/starred{/owner}{/repo}', 'starred_gists_url': 'https://api.github.com/gists/starred', 'team_url': 'https://api.github.com/teams', 'user_url': 'https://api.github.com/users/{user}', 'user_organizations_url': 'https://api.github.com/user/orgs', 'user_repositories_url': 'https://api.github.com/users/{user}/repos{?type,page,per_page,sort}', 'user_search_url': 'https://api.github.com/search/users?q={query}{&page,per_page,sort,order}'} +# retourne un dictionnaire +``` + +##### Headers: + +```python +>>> response.headers +{'Server': 'GitHub.com', 'Date': 'Fri, 29 Mar 2019 15:32:44 GMT', 'Content-Type': 'application/json; charset=utf-8', 'Transfer-Encoding': 'chunked', 'Status': '200 OK', 'X-RateLimit-Limit': '60', 'X-RateLimit-Remaining': '59', 'X-RateLimit-Reset': '1553877164', 'Cache-Control': 'public, max-age=60, s-maxage=60', 'Vary': 'Accept', 'ETag': 'W/"7dc470913f1fe9bb6c7355b50a0737bc"', 'X-GitHub-Media-Type': 'github.v3; format=json', 'Access-Control-Expose-Headers': 'ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type', 'Access-Control-Allow-Origin': '*', 'Strict-Transport-Security': 'max-age=31536000; includeSubdomains; preload', 'X-Frame-Options': 'deny', 'X-Content-Type-Options': 'nosniff', 'X-XSS-Protection': '1; mode=block', 'Referrer-Policy': 'origin-when-cross-origin, strict-origin-when-cross-origin', 'Content-Security-Policy': "default-src 'none'", 'Content-Encoding': 'gzip', 'X-GitHub-Request-Id': 'B245:1134:87E5:14D2A:5C9E3A9C'} + +# retourne un dictionnaire + +>>> response.headers['Content-Type'] +'application/json; charset=utf-8' +``` + +##### Query strings parameters: + +```python +import requests + +# Search GitHub's repositories for requests +response = requests.get( + 'https://api.github.com/search/repositories', + params={'q': 'requests+language:python'}, +) + +# Inspect some attributes of the `requests` repository +json_response = response.json() +repository = json_response['items'][0] +print(f'Repository name: {repository["name"]}') # Python 3.6+ +print(f'Repository description: {repository["description"]}') # Python 3.6+ + +Repository name: requests +Repository description: Python HTTP Requests for Humans™ ✨🍰✨ +``` + +##### Autres méthodes HTTP: + +```python +>>> requests.post('https://httpbin.org/post', data={'key':'value'}) +>>> requests.put('https://httpbin.org/put', data={'key':'value'}) +>>> requests.delete('https://httpbin.org/delete') +>>> requests.head('https://httpbin.org/get') +>>> requests.patch('https://httpbin.org/patch', data={'key':'value'}) +>>> requests.options('https://httpbin.org/get') + +``` + + + +#### Requête POST: + +```python +>>> requests.post('https://httpbin.org/post', data={'key':'value'}) + +``` + +```python +>>> response = requests.post('https://httpbin.org/post', json={'key':'value'}) +>>> json_response = response.json() +>>> json_response['data'] +'{"key": "value"}' +>>> json_response['headers']['Content-Type'] +'application/json' +``` + +```python +>>> response = requests.post('https://httpbin.org/post', json={'key':'value'}) +>>> response.request.headers['Content-Type'] +'application/json' +>>> response.request.url +'https://httpbin.org/post' +>>> response.request.body +b'{"key": "value"}' +``` + + + +Authentification: + +```python +>>> from requests.auth import HTTPBasicAuth +>>> from getpass import getpass +>>> requests.get( +... 'https://api.github.com/user', +... auth=HTTPBasicAuth('bruno@xxxxx.info', getpass()) +... ) +Password: + +``` + diff --git a/docs/Programmation/Python/set.md b/docs/Programmation/Python/set.md index 65a938d..3691184 100644 --- a/docs/Programmation/Python/set.md +++ b/docs/Programmation/Python/set.md @@ -1,8 +1,8 @@ -# Set +# Set (ensemble) -Une liste est une collection **non ordonnée** et **non indexée**. On ne peut pas modifier un item, mais on peut en ajouter. +Un set est une collection **non ordonnée** et **non indexée**. On ne peut pas modifier un item, mais on peut en ajouter. @@ -12,6 +12,17 @@ Une liste est une collection **non ordonnée** et **non indexée**. On ne peut p >>> un_set = {"alpha", "beta", "gamma"} >>> un_set {'alpha', 'beta', 'gamma'} +>>> type(un_set) + +``` + +```python +>>> autre_set = {"alpha", "beta", "gamma", "beta", "alpha"} +>>> len(autre_set) +3 +>>> autre_set +{'beta', 'alpha', 'gamma'} + ``` ```python @@ -54,6 +65,12 @@ Une liste est une collection **non ordonnée** et **non indexée**. On ne peut p >>> un_set.remove("beta") >>> un_set {'gamma', 'alpha'} + +# Si on retire un élément qui n'existe pas => Erreur +>>> un_set.remove("delta") +Traceback (most recent call last): + File "", line 1, in +KeyError: 'delta' ``` ##### Supprimer un item (discard): @@ -63,6 +80,12 @@ Une liste est une collection **non ordonnée** et **non indexée**. On ne peut p >>> un_set.discard("beta") >>> un_set {'gamma', 'alpha'} + +# Si on retire un élément qui n'existe pas. +>>> un_set = {"alpha", "beta", "gamma"} +>>> un_set.discard("delta") +>>> un_set +{'alpha', 'gamma', 'beta'} ``` ##### Vider un set: @@ -105,6 +128,23 @@ print("alpha" in un_set) True ``` +##### Set => pas d'indice: + +```python +>>> un_set = {"alpha", "beta", "gamma"} +>>> un_set[0] +Traceback (most recent call last): + File "", line 1, in +TypeError: 'set' object does not support indexing +``` + +##### Opérateurs: + +- `a | b` (union), +- `a & b` (intersection), +- `a - b` (différence), +- `a ^ b` (différence symétrique) + #### Méthodes: diff --git a/docs/Programmation/Python/string.md b/docs/Programmation/Python/string.md index c8c85d8..b5347ce 100644 --- a/docs/Programmation/Python/string.md +++ b/docs/Programmation/Python/string.md @@ -2,6 +2,51 @@ +```python +>>> mon_str = "bonjour" +>>> print(mon_str) +bonjour + +>>> long_str = """*********** +... * Bonjour * +... *********** +... """ +>>> long_str +'***********\n* Bonjour *\n***********\n' +>>> print(long_str) +*********** +* Bonjour * +*********** +``` + +```python +# Concaténation +>>> mon_str + " Bruno" +'bonjour Bruno' + +# Répétition +>>> "ha " * 5 +'ha ha ha ha ha ' + +# Longueur de la chaine +>>> len(mon_str) +7 + +# Indice +>>> mon_str[0] +'b' +>>> mon_str[6] +'r' +>>> mon_str[len(mon_str)-1] +'r' +>>> mon_str[-1] +'r' +>>> mon_str[-3] +'o' +``` + + + ##### str.count() ```python diff --git a/docs/Programmation/Python/zip.md b/docs/Programmation/Python/zip.md new file mode 100644 index 0000000..1e932cc --- /dev/null +++ b/docs/Programmation/Python/zip.md @@ -0,0 +1,39 @@ +# zip + + + +La fonction `zip` associe 2 listes et retourne une liste de tuples. + +```python +villes = ["Paris", "Rome", "Göteborg"] +pays = ["France", "Italie", "Suède"] + +print(list(zip(villes, pays))) + +for ville, etat in zip(villes, pays): + print(ville, " est la capitale de ", etat) + + +[('Paris', 'France'), ('Rome', 'Italie'), ('Göteborg', 'Suède')] +Paris est la capitale de France +Rome est la capitale de Italie +Göteborg est la capitale de Suède +``` + +Si le nombre d'item diffère: + +```python +villes = ["Paris", "Rome", "Göteborg"] +pays = ["France", "Italie", "Suède", "Suisse"] + +print(list(zip(villes, pays))) + +for ville, etat in zip(villes, pays): + print(ville, " est la capitale de ", etat) + +[('Paris', 'France'), ('Rome', 'Italie'), ('Göteborg', 'Suède')] +Paris est la capitale de France +Rome est la capitale de Italie +Göteborg est la capitale de Suède +``` + diff --git a/docs/macos/homebrew/brew-cask.md b/docs/macos/homebrew/brew-cask.md index 7cc20b3..912ac49 100644 --- a/docs/macos/homebrew/brew-cask.md +++ b/docs/macos/homebrew/brew-cask.md @@ -86,6 +86,8 @@ $ brew cask home ### Aller à la page du Cask: ```bash +$ brew cask home {{cask_name}} + $ brew cask home qlstephen ``` @@ -102,6 +104,17 @@ $ brew cask outdated +### Version du Cask: + +```bash +$ brew cask _stanza version {{cask_name}} + +$ brew cask _stanza version bettertouchtool +2.800 +``` + + + ### Installer les mises-à-jour: ```bash diff --git a/docs/macos/homebrew/brew.md b/docs/macos/homebrew/brew.md index de8a6cf..72e7616 100644 --- a/docs/macos/homebrew/brew.md +++ b/docs/macos/homebrew/brew.md @@ -293,6 +293,15 @@ $ brew uses x264 --installed ffmpeg ``` +```bash +$ brew list -1 | while read cask; do echo -ne "\x1B[1;34m $cask \x1B[0m"; brew uses $cask --installed | awk '{printf(" %s ", $0)}'; echo ""; done + ack + aom ffmpeg + apr apr-util httpd php php@7.2 + .../... + x264 ffmpeg +``` + ### Outils: diff --git a/docs/macos/node/node-js.md b/docs/macos/node/node-js.md index 85f8d94..1b86d81 100644 --- a/docs/macos/node/node-js.md +++ b/docs/macos/node/node-js.md @@ -150,6 +150,39 @@ Verify cache contents verified 2159 tarballs +#### Info sur un package: + +```bash +$ npm show cli + +# idem: +# npm info cli +# npm view cli + +cli@1.0.1 | MIT | deps: 2 | versions: 59 +A tool for rapidly building command line apps +http://github.com/node-js-libs/cli + +keywords: cli, command line, opts, parseopt, opt, args, console, argsparse, optparse, autocomplete, command, autocompletion + +dist +.tarball: https://registry.npmjs.org/cli/-/cli-1.0.1.tgz +.shasum: 22817534f24bfa4950c34d532d48ecbc621b8c14 + +dependencies: +exit: 0.1.2 glob: ^7.1.1 + +maintainers: +- cohara87 + +dist-tags: +latest: 1.0.1 + +published over a year ago by cohara87 +``` + + + #### Packages: [Rechercher un package](https://npms.io) diff --git a/docs/macos/python/pip.md b/docs/macos/python/pip.md index 567412b..a94ec6c 100644 --- a/docs/macos/python/pip.md +++ b/docs/macos/python/pip.md @@ -72,7 +72,9 @@ pip --no-cache-dir install mkdocs -### Installer un module (mkdocs): +### Installer des modules: + +#### Installer un module pour l'utilisateur courant (mkdocs): ```bash $ pip install --user mkdocs @@ -84,7 +86,7 @@ Les modules sont ici: -### Désinstaller un module: +#### Désinstaller un module: ```bash $ pip uninstall @@ -92,7 +94,7 @@ $ pip uninstall -### Installer une ancienne version d'un module: +#### Installer une version précise d'un module: ```bash $ pip3 show tornado @@ -109,12 +111,15 @@ Installing collected packages: tornado Successfully installed tornado-4.5.3 $ pip3 install 'tornado>=4.1.0,<4.5.3' +# Installe une version comprise entre 4.1.0 et 4.5.3 +$ pip3 install 'tornado~=4.5.2' +# Installe une version “==4.5.*” qui est aussi “>=4.5.2”. ``` -### Informations sur un module: +#### Informations sur un module: ```bash $ pip show @@ -133,7 +138,15 @@ Requires: tornado, PyYAML, click, Markdown, Jinja2, livereload -### Liste des modules installés: +#### Installer une liste de modules requis: + +```bash +$ pip install -r requirements.txt +``` + + + +#### Liste des modules installés: ```bash # --format=columns (par defaut) @@ -178,7 +191,9 @@ $ pip install .pybundle -### Liste des modules mis-à-jour: +### Mise-à-jour: + +#### Liste des modules mis-à-jour: ```bash $ pip list --outdated --format=columns @@ -225,7 +240,7 @@ $ pip3 list --outdated --format=json -### Mettre à jour un module: +#### Mettre à jour un module: ```bash $ pip install --user --upgrade diff --git a/docs/macos/python/virtuel.md b/docs/macos/python/virtuel.md index cd03112..a8bd821 100644 --- a/docs/macos/python/virtuel.md +++ b/docs/macos/python/virtuel.md @@ -2,6 +2,8 @@ +### venv + On crée un dossier pour regrouper tous les environnements virtuels: ```bash @@ -138,3 +140,16 @@ Le module installé dans l'environnement virtuel est disponible UNIQUEMENT dans [https://docs.python.org/fr/3/library/venv.html](https://docs.python.org/fr/3/library/venv.html) + + + + +### pyvenv + +#### Installer des modules pour un projet: + +```bash +cd myproject +pipenv install requests +``` + diff --git a/mkdocs.yml b/mkdocs.yml index c789e05..05072df 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -58,6 +58,7 @@ nav: - Django: macos/python/Django.md - pip: macos/python/pip.md - Python 3: macos/python/python3.md + - Environnement virtuel: macos/python/virtuel.md - Sécurité (Gatekeeper): macos/securite.md - ssh: - SSH: macos/ssh/ssh.md @@ -88,6 +89,22 @@ nav: - Plesk Onyx: - Index: Plesk/index.md - Ghost: Plesk/Ghost.md + - Programmation: + -Python: + - Index: Programmation/Python/index.md + - Classes: Programmation/Python/class.md + - Date: Programmation/Python/date.md + - Dictionnaire: Programmation/Python/dictionnaire.md + - Fabric SSH Python: Programmation/Python/fabric-ssh.md + - Fichiers: Programmation/Python/fichiers.md + - Fonctions: Programmation/Python/fonctions.md + - Boucle For: Programmation/Python/for.md + - In: Programmation/Python/in.md + - Listes: Programmation/Python/liste.md + - Les regex: Programmation/Python/regex.md + - Sets: Programmation/Python/set.md + - Strings: Programmation/Python/string.md + - Tuples: Programmation/Python/tuple.md - Raspberry: - Index: Raspberry/index.md - apt-get: Raspberry/apt-get.md