diff --git a/20211230101535-python.org b/20211230101535-python.org index 0a78499..30ade62 100644 --- a/20211230101535-python.org +++ b/20211230101535-python.org @@ -1,6 +1,6 @@ :PROPERTIES: :ID: 4fabfe6a-b104-464f-8a87-dfd7d761dbcc -:mtime: 20220720145510 +:mtime: 20221003215204 :ctime: 20211230101535 :END: #+title: Python @@ -30,10 +30,12 @@ La méthode ~__repr__~ est utilisée pour le debug quand ~__str__~ pour l'utilis ** Functools module *** [[id:25d994fd-375b-429d-af38-6afba818159f][functools.singledispatch]] + * Frameworks ** Web *** [[id:26b04294-75e8-4043-a9a6-a20acd952963][Flask]] + * UI ** GUI *** [[https://kivy.org/#home][Kiwi]] @@ -48,6 +50,7 @@ Bindings python pour Qt. ** Text UI *** [[id:6cc56ee4-6d42-4d50-beb3-bb22a98298dd][textual]] + * Outils ** Analyseur statique de code *** [[id:1d258869-5421-496a-b296-2d157ebdf3b6][mypy]] @@ -61,11 +64,14 @@ Outil en ligne de commande permettant d'automatiser les tests dans multiples env ** Couverture de code *** [[https://github.com/plasma-umass/slipcover][Slipcover]] Outil de mesure de couverture de code plus rapide que [[https://github.com/nedbat/coveragepy][coverage.py]]. +** Debugger +*** [[https://github.com/ionelmc/python-manhole][Manhole]] +Service (interface via une socket Unix permettant l'accès à un REPL) permettant l'inspection d'un programme en cours d'exécution. ** Formatter *** [[https://github.com/hhatto/autopep8][autopep8]] Utilitaire formattant le code afin de respecter la [[https://www.python.org/dev/peps/pep-0008/][PEP8]] guideline. Il est basé sur l'analyse de code effectuée par -[[https://github.com/PyCQA/pycodestyle][pycodestyle]]. Autopep8 ne modifie que les espaces contenus dans le code (l'option ~--aggressive~ permet d'accroitre le -pouvoir d'autopep8 et le laisser modifier le code). +[[https://github.com/PyCQA/pycodestyle][pycodestyle]]. ~Autopep8~ ne modifie que les espaces contenus dans le code (l'option ~--aggressive~ permet d'accroître le +pouvoir d'~autopep8~ et le laisser modifier le code). *** [[https://github.com/PyCQA/isort][isort]] Outil classant les imports par ordre alphabétique, les séparant par section et par type. *** [[https://black.readthedocs.io/en/stable/][Black]] @@ -81,6 +87,8 @@ Génération de données pouvant être utilisées pour: * Créer des fichiers JSON ou XML d'après une structure arbitraire. *** [[https://github.com/joke2k/faker][Faker]] Génération de données. +** Gestion dépendances +*** [[id:01f24d29-e833-4bfa-acb0-95140800d081][poetry]] ** Mockup *** [[https://github.com/spulec/freezegun][FreezeGun]] Mockup du module [[https://docs.python.org/fr/3/library/datetime.html][datetime]] permettant de simuler des changements de temps. @@ -94,6 +102,8 @@ méthode et le temps passé). /Memory profiler/ traçant les allocations mémoire dans le code Python, les modules extensions et l'interpréteur. *** [[https://jiffyclub.github.io/snakeviz/][SnakeViz]] Visualisation des rapports de /cProfile/ (web browser). +*** [[https://github.com/brandtbucher/specialist][Specialist]] +Outil permettant d'indiquer le code optimisé par la spécialisation du bécote (cf. [[https://peps.python.org/pep-0659/][PEP 659 – Specializing Adaptive Interpreter]]).xo *** [[https://github.com/nvdv/vprof][vprof]] Profiling de programmes python permettant de surveiller le temps d'exécution et l'usage mémoire. ~vprof -c hpm ""~ @@ -104,9 +114,6 @@ Outil permettant de tester la tenue en charge d'applications (initialement web s ** Traceur d'exécution de code *** [[https://github.com/ionelmc/python-hunter][Python-hunter]] Traçage des appels de fonctions, du code exécuté et des valeurs retournées (vs. smiley, pytrace, PySnooper). -** Debugger -*** [[https://github.com/ionelmc/python-manhole][Manhole]] -Service (interface via une socket Unix permettant l'accès à un REPL) permettant l'inspection d'un programme en cours d'exécution. * Implémentations ** CPython @@ -121,6 +128,7 @@ Activation du mode développeur ~python -X dev~ ou ~PYTHONDEVMODE=1 python~ (cf. Implémentation CPython optimisée par Instagram : * [[https://engineering.fb.com/2022/05/02/open-source/cinder-jits-instagram/][Jit]] + * Modules intéressants ** Bases de données *** [[https://spark.apache.org/docs/latest/api/python/][PySpark]] @@ -157,6 +165,8 @@ Wrapper permettant l'accès au contenu de wikipedia. *** [[https://github.com/ICRAR/ijson][ijson]] Parser JSON ne nécessitant pas que l'ensemble de la donnée soit chargée pour la parser (optimisation de la mémoire consommée, cf. [[https://pythonspeed.com/articles/json-memory-streaming/][JSON memory streaming - Pythonspeed]]). +** Stockage des données +*** [[https://github.com/theskumar/python-dotenv][dotenv]] ** Surveillance de fichers *** [[https://watchfiles.helpmanual.io/][watchfiles]] Surveillance de fichiers basé sur la librarie Rust /Notify/. @@ -166,6 +176,12 @@ Surveillance de fichiers basé sur la librarie Rust /Notify/. *** [[https://scrapy.org/][scrapy]] Framework d'extraction de données depuis des site web. + +* Modules amustants +*** [[https://github.com/gahjelle/pythonji][pythonji]] +Utilisation d'emojis pour l'écriture de code en Python + + * Performances ** [[id:b9f392bd-bd45-4e9e-94ec-b19caedff86f][List vs tuple]] ** [[id:26e1fdfb-1f8e-4c62-a08f-468a56ab03c8][Peephole optimization]] @@ -198,6 +214,14 @@ Framework d'extraction de données depuis des site web. * utiliser ~python -m pip~ et ~python -m venv~ (exécution du module en tant que script, au lieu de ~pip~ et ~virtualenv~) permet d'éviter les incohérences entre les différents répertoires des packages Python (cas lorsqu'un répertoire est présent dans le ~PYTHONPATH~ et qu'un autre l'est dans le ~PATH~). +* Optimisations +** Création automatique de constantes numériques lors de la génération du bytecode +#+BEGIN_SRC python :results output +y = x * 5 / 9 # Une multiplcation par un entier, suivie par une division par un entier +y = x * (5 / 9) # Le ratio 5 / 9 est calculé lors de la génération du bytecode associé à la ligne : une seule multiplication par un flottant lors de l'exécution de l'opération +#+END_SRC +A partir de Python3.11, les opérations entre types identiques (ie: int+int) peuvent être spécialisées (cf. [[https://www.youtube.com/watch?v=tNs18GDmAfg][Python Perf: Specializing, Adaptive Interpreter - Talk Python Live Stream - YouTube]] - augmentation des perfs). + * Tips ** [[id:24408701-21d8-4f4e-aed9-c58746df2244][Différence entre les opérateurs + et +=]] ** [[id:a32ab138-f9a8-4d61-9c09-97953c5a0a92][type == object]] diff --git a/20220104155310-postgres.org b/20220104155310-postgres.org index 1e3603d..f4e0b19 100644 --- a/20220104155310-postgres.org +++ b/20220104155310-postgres.org @@ -1,6 +1,6 @@ :PROPERTIES: :ID: 171ce2f7-4028-47b0-b4e0-5a4a6ccb74ac -:mtime: 20221229103915 +:mtime: 20230729082927 :ctime: 20220104155310 :END: #+title: Postgres @@ -86,6 +86,11 @@ Différents sites permettent de visualiser graphiquement les query plans: * Payants: * [[https://app.pgmustard.com/login][PgMustard]] +** Audit +Possibilité de logger ou de stocker en base les ajout/modifications ou suppressions de donnéées: + * logs: [[https://www.pgaudit.org/]] + * En base: [[https://wiki.postgresql.org/wiki/Audit_trigger_91plus]] ([[https://github.com/2ndQuadrant/audit-trigger]]) + * Références * [[https://stackoverflow.com/questions/45395538/postgres-md5-password-plain-password][Postgres: MD5 Password / Plain password - Github]] * [[https://www.postgresql.org/docs/current/sql-explain.html][Sql-explain - PostgreSQL]] diff --git a/20220109134723-linux.org b/20220109134723-linux.org index 2ce8db1..18b24c5 100644 --- a/20220109134723-linux.org +++ b/20220109134723-linux.org @@ -1,6 +1,6 @@ :PROPERTIES: :ID: e7581fe3-f83f-4243-91ed-6ef7ade6a844 -:mtime: 20220530204913 +:mtime: 20220910172209 :ctime: 20220109134723 :END: #+title: Linux @@ -10,13 +10,18 @@ * Distributions ** [[id:393342ff-bf38-4472-8713-3de5ebe43eca][Guix]] +* Gestionnaire de paquets +** [[id:4cb68913-62c6-43bb-835f-85237b2a8b40][apt]] + * Systèmes d'initialisation ** [[id:af912c20-4752-44ba-bdc0-99451ac0cd10][systemd]] -* Gestionnaire de volumes logiques : [[id:f202b810-0fba-4c90-bc4c-f8cbc001fe88][LVM]] +* Gestionnaire de volumes logiques : +** [[id:f202b810-0fba-4c90-bc4c-f8cbc001fe88][LVM]] * Fonctionnalités -** [[id:fad57303-ce0c-4ae4-9529-294f70ecfaa5][Inotify]] +** Surveillance de fichiers +*** [[id:fad57303-ce0c-4ae4-9529-294f70ecfaa5][Inotify]] * Interpreteur de commandes ** [[id:72eb2d10-5b92-4fb7-9e4e-1398bd933335][bash]] @@ -25,3 +30,5 @@ ** Parsing de contenu json (lib+bin) : [[id:83908b49-3945-4dce-8b26-2a5e4636df13][jq]] ** Transfert de données à un serveur (lib+bin) : [[id:5ea61eaa-7f37-464c-aa69-8251de8f81af][curl]] ** Template utilisant les variables d'environnement : [[https://manpage.me/?q=envsubst][envsubst]] +** Lecture de fichiers +*** [[id:d5b19724-9559-44de-aef7-c4d57fb6dc95][batcat]] diff --git a/20220130153624-textual.org b/20220130153624-textual.org index 93c79e2..57d3b7d 100644 --- a/20220130153624-textual.org +++ b/20220130153624-textual.org @@ -1,6 +1,6 @@ :PROPERTIES: :ID: 6cc56ee4-6d42-4d50-beb3-bb22a98298dd -:mtime: 20220528185642 +:mtime: 20220814131534 :ctime: 20220130153624 :END: #+title: textual @@ -73,6 +73,11 @@ division(5, 0) #+END_SRC #+RESULTS: + +* Projets +** [[https://github.com/Traumatism/ToastCord][ToastCord - Github]] +** [[https://github.com/kraanzu/dooit][Dooit - Github]] + * Références * [[https://github.com/Textualize/textual][Textual - Github]] * [[https://github.com/Textualize/rich][Rich - Github]]