first commit
This commit is contained in:
11
20211230101331-software.org
Normal file
11
20211230101331-software.org
Normal file
@@ -0,0 +1,11 @@
|
||||
:PROPERTIES:
|
||||
:ID: ca50d517-3e8a-4d03-ba38-7ff411e87408
|
||||
:mtime: 20211230160701
|
||||
:ctime: 20211230101331
|
||||
:END:
|
||||
#+title: Software
|
||||
|
||||
* Langages
|
||||
** [[id:4fabfe6a-b104-464f-8a87-dfd7d761dbcc][Python]]
|
||||
|
||||
* Design pattern
|
20
20211230101535-python.org
Normal file
20
20211230101535-python.org
Normal file
@@ -0,0 +1,20 @@
|
||||
:PROPERTIES:
|
||||
:ID: 4fabfe6a-b104-464f-8a87-dfd7d761dbcc
|
||||
:mtime: 20220101184446
|
||||
:ctime: 20211230101535
|
||||
:END:
|
||||
#+title: Python
|
||||
#+filetags: :Python:
|
||||
|
||||
* Language
|
||||
** Classe
|
||||
*** Méthodes dunder (Double UNDERscore method)
|
||||
* [[id:dc2a8693-7158-4155-8eff-fc35a21a077d][La méthode dunder __missing__]]
|
||||
|
||||
* Frameworks
|
||||
** Web
|
||||
* [[id:26b04294-75e8-4043-a9a6-a20acd952963][Flask]]
|
||||
|
||||
* Tips
|
||||
** [[id:4ef76164-0e67-410a-8d26-b03071a0cc41][Compter la fréquence des éléments d'une liste]]
|
||||
** [[id:cb3c63b9-6452-4016-9b2f-a25784941d5d][List vs deque]]
|
@@ -0,0 +1,40 @@
|
||||
:PROPERTIES:
|
||||
:ID: 4ef76164-0e67-410a-8d26-b03071a0cc41
|
||||
:mtime: 20211230160701
|
||||
:ctime: 20211230141219
|
||||
:END:
|
||||
#+title: Compter la fréquence des éléments d'une liste
|
||||
#+filetags: :Python:
|
||||
|
||||
* Méthode sans dépendance
|
||||
#+BEGIN_SRC python :results output
|
||||
elements = [1, 2, 3, 4, 1, 3, 46, 7, 2, 3, 5, 6, 10]
|
||||
freqs = {}
|
||||
visiteds = set()
|
||||
for element in elements:
|
||||
if element in visiteds:
|
||||
freqs[element] = freqs[element] + 1
|
||||
else:
|
||||
freqs[element] = 1
|
||||
visiteds.add(element)
|
||||
|
||||
print(f"Input list is: {elements}")
|
||||
print(f"Frequency of elements is: {freqs}")
|
||||
#+END_SRC
|
||||
#+RESULTS:
|
||||
: Input list is: [1, 2, 3, 4, 1, 3, 46, 7, 2, 3, 5, 6, 10]
|
||||
: Frequency of elements is: {1: 2, 2: 2, 3: 3, 4: 1, 46: 1, 7: 1, 5: 1, 6: 1, 10: 1}
|
||||
|
||||
* Methode basée sur le package /collections/
|
||||
#+BEGIN_SRC python :results output
|
||||
import collections
|
||||
|
||||
elements = [1, 2, 3, 4, 1, 3, 46, 7, 2, 3, 5, 6, 10]
|
||||
counter = collections.Counter(elements)
|
||||
|
||||
print(f"Input list is: {elements}")
|
||||
print(f"Frequency of elements is: {dict(counter)}")
|
||||
#+END_SRC
|
||||
#+RESULTS:
|
||||
: Input list is: [1, 2, 3, 4, 1, 3, 46, 7, 2, 3, 5, 6, 10]
|
||||
: Frequency of elements is: {1: 2, 2: 2, 3: 3, 4: 1, 46: 1, 7: 1, 5: 1, 6: 1, 10: 1}
|
10
20211230160741-outils.org
Normal file
10
20211230160741-outils.org
Normal file
@@ -0,0 +1,10 @@
|
||||
:PROPERTIES:
|
||||
:ID: 2f47e53e-2b54-4360-9ac0-dfc6eba8ef26
|
||||
:mtime: 20211230160915
|
||||
:END:
|
||||
#+title: Outils
|
||||
|
||||
* IDE
|
||||
** [[id:7bae5645-d19d-41c3-aafe-7c80c2a90789][Emacs]]
|
||||
|
||||
* Administration
|
13
20211230160756-emacs.org
Normal file
13
20211230160756-emacs.org
Normal file
@@ -0,0 +1,13 @@
|
||||
:PROPERTIES:
|
||||
:ID: 7bae5645-d19d-41c3-aafe-7c80c2a90789
|
||||
:mtime: 20211230161355
|
||||
:ctime: 20211230160756
|
||||
:END:
|
||||
#+title: Emacs
|
||||
|
||||
* Raccourcis
|
||||
|
||||
* Elisp
|
||||
|
||||
* Modes
|
||||
** [[id:59e3160b-39bc-4e2e-ab0a-79d58ac11804][Org]]
|
11
20211230161032-org_mode.org
Normal file
11
20211230161032-org_mode.org
Normal file
@@ -0,0 +1,11 @@
|
||||
:PROPERTIES:
|
||||
:ID: 59e3160b-39bc-4e2e-ab0a-79d58ac11804
|
||||
:mtime: 20211230161346
|
||||
:ctime: 20211230161032
|
||||
:END:
|
||||
#+title: Org
|
||||
|
||||
* Description
|
||||
|
||||
* Packages associés
|
||||
** [[id:a84eb967-dc1b-4563-9433-cefd3f4bc6e9][org-roam-timestamps]]
|
27
20211230161118-org_roam_timestamps.org
Normal file
27
20211230161118-org_roam_timestamps.org
Normal file
@@ -0,0 +1,27 @@
|
||||
:PROPERTIES:
|
||||
:ID: a84eb967-dc1b-4563-9433-cefd3f4bc6e9
|
||||
:mtime: 20211230172628
|
||||
:ctime: 20211230161118
|
||||
:END:
|
||||
#+title: org-roam-timestamps
|
||||
|
||||
* Description
|
||||
Package permettant d'ajouter l'heure de modification des noeuds d'/org-roam/.
|
||||
|
||||
* Configuration
|
||||
** Propagation des modifications aux noeuds parents
|
||||
La modification d'un noeud entrainera la modification de son timestamp, ainsi que de celui des noeuds y faisant
|
||||
référence (valeur t).
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
;; Timestamp propagation to the parents nodes
|
||||
(setq org-roam-timestamps-parent-file t)
|
||||
#+END_SRC
|
||||
** Sauvegarde des timestamps
|
||||
Sauvegarde des différents timestamps auxquels le noeud a été modifié (valeur t), sinon uniquement celui de la dernière modification.
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
;; Keep only the last edit timestamp
|
||||
(setq org-roam-timestamps-remember-timestamps nil)
|
||||
#+END_SRC
|
||||
|
||||
* Références
|
||||
* [[https://github.com/ThomasFKJorna/org-roam-timestamps][org-roam-timestamps github]]
|
11
20211230181842-todo.org
Normal file
11
20211230181842-todo.org
Normal file
@@ -0,0 +1,11 @@
|
||||
:PROPERTIES:
|
||||
:ID: 297a69bf-eec9-47c6-a64e-388affcc9068
|
||||
:mtime: 20211230210637
|
||||
:ctime: 20211230181842
|
||||
:END:
|
||||
#+title: TODO
|
||||
|
||||
* A compléter
|
||||
* [[id:3ff17578-cc46-4b9e-9bcb-e621d59588c5][HomeAssistant]]
|
||||
* [[id:0eaaef80-51f9-4670-96c8-6a911efe152e][flask-admin]]
|
||||
* [[id:5f41e674-eb59-4d69-981b-46a18cf28452][Flask-security]]
|
8
20211230182200-domotique.org
Normal file
8
20211230182200-domotique.org
Normal file
@@ -0,0 +1,8 @@
|
||||
:PROPERTIES:
|
||||
:ID: 9c072d26-2ca9-4354-9858-36ff2049dc7a
|
||||
:mtime: 20211230182321
|
||||
:END:
|
||||
#+title: Domotique
|
||||
|
||||
* Projets
|
||||
** [[id:3ff17578-cc46-4b9e-9bcb-e621d59588c5][HomeAssistant]]
|
8
20211230182225-homeassistant.org
Normal file
8
20211230182225-homeassistant.org
Normal file
@@ -0,0 +1,8 @@
|
||||
:PROPERTIES:
|
||||
:ID: 3ff17578-cc46-4b9e-9bcb-e621d59588c5
|
||||
:mtime: 20211230182504
|
||||
:ctime: 20211230182225
|
||||
:END:
|
||||
#+title: HomeAssistant
|
||||
#+filetags: :TODO:
|
||||
|
47
20211230192608-list_vs_deque.org
Normal file
47
20211230192608-list_vs_deque.org
Normal file
@@ -0,0 +1,47 @@
|
||||
:PROPERTIES:
|
||||
:ID: cb3c63b9-6452-4016-9b2f-a25784941d5d
|
||||
:mtime: 20211230202924
|
||||
:ctime: 20211230192608
|
||||
:END:
|
||||
#+title: List vs deque
|
||||
#+filetags: :Optimisation:Python:
|
||||
|
||||
* /Deque/
|
||||
Classe du module /collections/ écrite afin de réaliser une queue plus efficace que la /list/.
|
||||
|
||||
Caractéristiques principales :
|
||||
* Ecrite en C (.cf [[https://github.com/python/cpython/blob/main/Modules/_collectionsmodule.c][Github)]],
|
||||
* Liste doublement chainée et avec une double queue (contrairement à /list/ ayant une simple queue, à droite),
|
||||
* Peut contenir des objets de types différents,
|
||||
* Les méthodes /pop/, /append/, /appendleft/ et /popleft/ sont /thread-safe/,
|
||||
* Object mutable,
|
||||
* Supporte les /membership operations/ (opérateur /in/),
|
||||
* Supporte l'indexation (par exemple, d[2]),
|
||||
* Supporte les fonctions fonctionnant avec les /sequences/ et /iterables/ (par exemple, /len()/, /sorted()/),
|
||||
* Supporte l'itération et l'itération inversée,
|
||||
* Supporte le /picking/ (/pickle/),
|
||||
* Ne supporte pas le /slicing/ (par exemple, d[0:2]) et le rangement (/sorting/) /in-place/ (par exemple: //[3, 1, 2].sort()//),
|
||||
|
||||
Illustration de la liste doublement chainées (/deque/) :
|
||||
#+DOWNLOADED: https://res.cloudinary.com/practicaldev/image/fetch/s--qPBdx2qm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/8oq2m41oivizbdltb6p9.png @ 2021-12-30 19:50:53
|
||||
#+ATTR_ORG: :width 500
|
||||
[[file:Deque/8oq2m41oivizbdltb6p9_2021-12-30_19-50-53.png]]
|
||||
|
||||
Figure illustrant l'intérêt d'une chaine doublement chainée afin de réaliser une /queue/:
|
||||
#+DOWNLOADED: https://res.cloudinary.com/practicaldev/image/fetch/s--lB01CsB4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ygqm1fk0kmm6waj0wvgi.png @ 2021-12-30 19:54:42
|
||||
#+ATTR_ORG: :width 500
|
||||
[[file:Deque/ygqm1fk0kmm6waj0wvgi_2021-12-30_19-54-42.png]]
|
||||
|
||||
* /Deque/ vs /list/
|
||||
Based on Big-O notation:
|
||||
| | Deque | List |
|
||||
| Access by an index | O(n) | O(1) |
|
||||
| Append/pop at the beginning | O(1) | O(n) |
|
||||
| Append/pop at the end | O(1) | O(1) + reallocation time |
|
||||
| Insert in the middle | O(n) | O(n) |
|
||||
|
||||
La /deque/ est plus performante que la /list/, hormis pour l'accès par index.
|
||||
|
||||
* Références
|
||||
* [[https://realpython.com/python-deque/][RealPython]]
|
||||
* [[https://dev.to/v_it_aly/python-deque-vs-listwh-25i9][Python deque vs list (Vitaly Shchurov)]]
|
10
20211230205739-flask_admin.org
Normal file
10
20211230205739-flask_admin.org
Normal file
@@ -0,0 +1,10 @@
|
||||
:PROPERTIES:
|
||||
:ID: 0eaaef80-51f9-4670-96c8-6a911efe152e
|
||||
:mtime: 20211230210709
|
||||
:ctime: 20211230205739
|
||||
:END:
|
||||
#+title: Flask-admin
|
||||
#+filetags: :Flask:Python:TODO:
|
||||
|
||||
* Références
|
||||
* [[https://flask-admin.readthedocs.io/en/latest/][Flask-admin]]
|
15
20211230210035-flask.org
Normal file
15
20211230210035-flask.org
Normal file
@@ -0,0 +1,15 @@
|
||||
:PROPERTIES:
|
||||
:ID: 26b04294-75e8-4043-a9a6-a20acd952963
|
||||
:mtime: 20211230210701
|
||||
:ctime: 20211230210035
|
||||
:END:
|
||||
#+title: Flask
|
||||
#+filetags: :TODO:Python:Flask:
|
||||
|
||||
TODO
|
||||
|
||||
* Modules
|
||||
* [[id:0eaaef80-51f9-4670-96c8-6a911efe152e][Flask-admin]]
|
||||
* [[id:5f41e674-eb59-4d69-981b-46a18cf28452][Flask-security]]
|
||||
|
||||
* Référence
|
11
20211230210400-flask_security.org
Normal file
11
20211230210400-flask_security.org
Normal file
@@ -0,0 +1,11 @@
|
||||
:PROPERTIES:
|
||||
:ID: 5f41e674-eb59-4d69-981b-46a18cf28452
|
||||
:mtime: 20211230210451
|
||||
:END:
|
||||
#+title: Flask-security
|
||||
#+filetags: :Cyber:Python:Flask:TODO:
|
||||
|
||||
TODO
|
||||
|
||||
* Références
|
||||
* [[https://pythonhosted.org/Flask-Security/][Flask-security]]
|
58
20220101172208-la_methode___missing__.org
Normal file
58
20220101172208-la_methode___missing__.org
Normal file
@@ -0,0 +1,58 @@
|
||||
:PROPERTIES:
|
||||
:ID: dc2a8693-7158-4155-8eff-fc35a21a077d
|
||||
:mtime: 20220101184431
|
||||
:ctime: 20220101172208
|
||||
:END:
|
||||
#+title: La méthode __missing__
|
||||
|
||||
* Synthaxe
|
||||
#+BEGIN_SRC python
|
||||
object.__missing__(self, key)
|
||||
#+END_SRC
|
||||
La méthode ~object.__missing__~ définit le comportement à adopter par une classe fille de ~dict~ lors de l'accès à une clé non
|
||||
présente. Cette méthode est appelée par la méthode ~dict.__getitem__~ lorsque la clé demandée n'est pas présente dans le
|
||||
dictionnaire. La valeur de retour de la méthode ~object.__missing__~ permet de spécifier la valeur à retourner lorsque
|
||||
la méthode ~dict.__getitem__~ est appelée lorsque la clé n'est pas présente.
|
||||
|
||||
* Exemples
|
||||
** Comportement par défaut
|
||||
#+BEGIN_SRC python :result output
|
||||
d = {}
|
||||
key = "toto"
|
||||
dummy_key = f'{key}_'
|
||||
d[key] = [1, 2, 3]
|
||||
|
||||
print(f'd[{key}]={d[key]}')
|
||||
print(f'd[{dummy_key}]={d[dummy_key]}')
|
||||
#+END_SRC
|
||||
#+BEGIN_SRC python
|
||||
~Traceback (most recent call last):
|
||||
File "<stdin>", line 11, in <module>
|
||||
File "<stdin>", line 9, in main
|
||||
KeyError: 'toto_'~
|
||||
#+END_SRC
|
||||
|
||||
** Exemple de la création d'une entrée dans le dictionnaire en cas d'absence de la clé
|
||||
#+BEGIN_SRC python :results output
|
||||
class DictSubclass(dict):
|
||||
def __missing__(self, key):
|
||||
ret = []
|
||||
self[key] = ret
|
||||
return ret
|
||||
|
||||
d = DictSubclass()
|
||||
key = "toto"
|
||||
dummy_key = f'{key}_'
|
||||
d[key] = [1, 2, 3]
|
||||
|
||||
print(f'd[{key}]={d[key]}')
|
||||
print(f'd[{dummy_key}]={d[dummy_key]}')
|
||||
#+END_SRC
|
||||
#+RESULTS:
|
||||
: d[toto]=[1, 2, 3]
|
||||
: d[toto_]=[]
|
||||
#+RESULT:
|
||||
|
||||
* Références
|
||||
* [[https://blog.finxter.com/python-__missing__-magic-method/][Python __missing__() Magic Method (finxter)]]
|
||||
|
BIN
Deque/8oq2m41oivizbdltb6p9_2021-12-30_19-50-53.png
Normal file
BIN
Deque/8oq2m41oivizbdltb6p9_2021-12-30_19-50-53.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
BIN
Deque/ygqm1fk0kmm6waj0wvgi_2021-12-30_19-54-42.png
Normal file
BIN
Deque/ygqm1fk0kmm6waj0wvgi_2021-12-30_19-54-42.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 16 KiB |
Reference in New Issue
Block a user