commit c14526f2ed196884b51d026df555e15496ae8ddc Author: Adrien Date: Tue Jan 4 14:37:13 2022 +0100 first commit diff --git a/20211230101331-software.org b/20211230101331-software.org new file mode 100644 index 0000000..18f3486 --- /dev/null +++ b/20211230101331-software.org @@ -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 diff --git a/20211230101535-python.org b/20211230101535-python.org new file mode 100644 index 0000000..b2e6e26 --- /dev/null +++ b/20211230101535-python.org @@ -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]] diff --git a/20211230141219-compter_la_frequence_d_un_element_dans_une_liste.org b/20211230141219-compter_la_frequence_d_un_element_dans_une_liste.org new file mode 100644 index 0000000..0352c64 --- /dev/null +++ b/20211230141219-compter_la_frequence_d_un_element_dans_une_liste.org @@ -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} diff --git a/20211230160741-outils.org b/20211230160741-outils.org new file mode 100644 index 0000000..728c38a --- /dev/null +++ b/20211230160741-outils.org @@ -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 diff --git a/20211230160756-emacs.org b/20211230160756-emacs.org new file mode 100644 index 0000000..c8079c4 --- /dev/null +++ b/20211230160756-emacs.org @@ -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]] diff --git a/20211230161032-org_mode.org b/20211230161032-org_mode.org new file mode 100644 index 0000000..993314b --- /dev/null +++ b/20211230161032-org_mode.org @@ -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]] diff --git a/20211230161118-org_roam_timestamps.org b/20211230161118-org_roam_timestamps.org new file mode 100644 index 0000000..de155d4 --- /dev/null +++ b/20211230161118-org_roam_timestamps.org @@ -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]] diff --git a/20211230181842-todo.org b/20211230181842-todo.org new file mode 100644 index 0000000..c754eb4 --- /dev/null +++ b/20211230181842-todo.org @@ -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]] diff --git a/20211230182200-domotique.org b/20211230182200-domotique.org new file mode 100644 index 0000000..e2eeeae --- /dev/null +++ b/20211230182200-domotique.org @@ -0,0 +1,8 @@ +:PROPERTIES: +:ID: 9c072d26-2ca9-4354-9858-36ff2049dc7a +:mtime: 20211230182321 +:END: +#+title: Domotique + +* Projets +** [[id:3ff17578-cc46-4b9e-9bcb-e621d59588c5][HomeAssistant]] diff --git a/20211230182225-homeassistant.org b/20211230182225-homeassistant.org new file mode 100644 index 0000000..cb77058 --- /dev/null +++ b/20211230182225-homeassistant.org @@ -0,0 +1,8 @@ +:PROPERTIES: +:ID: 3ff17578-cc46-4b9e-9bcb-e621d59588c5 +:mtime: 20211230182504 +:ctime: 20211230182225 +:END: +#+title: HomeAssistant +#+filetags: :TODO: + diff --git a/20211230192608-list_vs_deque.org b/20211230192608-list_vs_deque.org new file mode 100644 index 0000000..ff816fb --- /dev/null +++ b/20211230192608-list_vs_deque.org @@ -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)]] diff --git a/20211230205739-flask_admin.org b/20211230205739-flask_admin.org new file mode 100644 index 0000000..b391e26 --- /dev/null +++ b/20211230205739-flask_admin.org @@ -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]] diff --git a/20211230210035-flask.org b/20211230210035-flask.org new file mode 100644 index 0000000..6f561d6 --- /dev/null +++ b/20211230210035-flask.org @@ -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 diff --git a/20211230210400-flask_security.org b/20211230210400-flask_security.org new file mode 100644 index 0000000..a4b29b8 --- /dev/null +++ b/20211230210400-flask_security.org @@ -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]] diff --git a/20220101172208-la_methode___missing__.org b/20220101172208-la_methode___missing__.org new file mode 100644 index 0000000..02ef996 --- /dev/null +++ b/20220101172208-la_methode___missing__.org @@ -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 "", line 11, in + File "", 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)]] + diff --git a/Deque/8oq2m41oivizbdltb6p9_2021-12-30_19-50-53.png b/Deque/8oq2m41oivizbdltb6p9_2021-12-30_19-50-53.png new file mode 100644 index 0000000..f8cfb62 Binary files /dev/null and b/Deque/8oq2m41oivizbdltb6p9_2021-12-30_19-50-53.png differ diff --git a/Deque/ygqm1fk0kmm6waj0wvgi_2021-12-30_19-54-42.png b/Deque/ygqm1fk0kmm6waj0wvgi_2021-12-30_19-54-42.png new file mode 100644 index 0000000..98f2fb1 Binary files /dev/null and b/Deque/ygqm1fk0kmm6waj0wvgi_2021-12-30_19-54-42.png differ