Compare commits
2 Commits
9dfa0e63bb
...
master
Author | SHA1 | Date | |
---|---|---|---|
6ea54b1218
|
|||
2fa462c0ee
|
@@ -1,6 +1,6 @@
|
|||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:ID: 4fabfe6a-b104-464f-8a87-dfd7d761dbcc
|
:ID: 4fabfe6a-b104-464f-8a87-dfd7d761dbcc
|
||||||
:mtime: 20220720145510
|
:mtime: 20221003215204
|
||||||
:ctime: 20211230101535
|
:ctime: 20211230101535
|
||||||
:END:
|
:END:
|
||||||
#+title: Python
|
#+title: Python
|
||||||
@@ -30,10 +30,12 @@ La méthode ~__repr__~ est utilisée pour le debug quand ~__str__~ pour l'utilis
|
|||||||
** Functools module
|
** Functools module
|
||||||
*** [[id:25d994fd-375b-429d-af38-6afba818159f][functools.singledispatch]]
|
*** [[id:25d994fd-375b-429d-af38-6afba818159f][functools.singledispatch]]
|
||||||
|
|
||||||
|
|
||||||
* Frameworks
|
* Frameworks
|
||||||
** Web
|
** Web
|
||||||
*** [[id:26b04294-75e8-4043-a9a6-a20acd952963][Flask]]
|
*** [[id:26b04294-75e8-4043-a9a6-a20acd952963][Flask]]
|
||||||
|
|
||||||
|
|
||||||
* UI
|
* UI
|
||||||
** GUI
|
** GUI
|
||||||
*** [[https://kivy.org/#home][Kiwi]]
|
*** [[https://kivy.org/#home][Kiwi]]
|
||||||
@@ -48,6 +50,7 @@ Bindings python pour Qt.
|
|||||||
** Text UI
|
** Text UI
|
||||||
*** [[id:6cc56ee4-6d42-4d50-beb3-bb22a98298dd][textual]]
|
*** [[id:6cc56ee4-6d42-4d50-beb3-bb22a98298dd][textual]]
|
||||||
|
|
||||||
|
|
||||||
* Outils
|
* Outils
|
||||||
** Analyseur statique de code
|
** Analyseur statique de code
|
||||||
*** [[id:1d258869-5421-496a-b296-2d157ebdf3b6][mypy]]
|
*** [[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
|
** Couverture de code
|
||||||
*** [[https://github.com/plasma-umass/slipcover][Slipcover]]
|
*** [[https://github.com/plasma-umass/slipcover][Slipcover]]
|
||||||
Outil de mesure de couverture de code plus rapide que [[https://github.com/nedbat/coveragepy][coverage.py]].
|
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
|
** Formatter
|
||||||
*** [[https://github.com/hhatto/autopep8][autopep8]]
|
*** [[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
|
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
|
[[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).
|
pouvoir d'~autopep8~ et le laisser modifier le code).
|
||||||
*** [[https://github.com/PyCQA/isort][isort]]
|
*** [[https://github.com/PyCQA/isort][isort]]
|
||||||
Outil classant les imports par ordre alphabétique, les séparant par section et par type.
|
Outil classant les imports par ordre alphabétique, les séparant par section et par type.
|
||||||
*** [[https://black.readthedocs.io/en/stable/][Black]]
|
*** [[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.
|
* Créer des fichiers JSON ou XML d'après une structure arbitraire.
|
||||||
*** [[https://github.com/joke2k/faker][Faker]]
|
*** [[https://github.com/joke2k/faker][Faker]]
|
||||||
Génération de données.
|
Génération de données.
|
||||||
|
** Gestion dépendances
|
||||||
|
*** [[id:01f24d29-e833-4bfa-acb0-95140800d081][poetry]]
|
||||||
** Mockup
|
** Mockup
|
||||||
*** [[https://github.com/spulec/freezegun][FreezeGun]]
|
*** [[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.
|
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.
|
/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]]
|
*** [[https://jiffyclub.github.io/snakeviz/][SnakeViz]]
|
||||||
Visualisation des rapports de /cProfile/ (web browser).
|
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]]
|
*** [[https://github.com/nvdv/vprof][vprof]]
|
||||||
Profiling de programmes python permettant de surveiller le temps d'exécution et l'usage mémoire.
|
Profiling de programmes python permettant de surveiller le temps d'exécution et l'usage mémoire.
|
||||||
~vprof -c hpm "<cmd>"~
|
~vprof -c hpm "<cmd>"~
|
||||||
@@ -104,9 +114,6 @@ Outil permettant de tester la tenue en charge d'applications (initialement web s
|
|||||||
** Traceur d'exécution de code
|
** Traceur d'exécution de code
|
||||||
*** [[https://github.com/ionelmc/python-hunter][Python-hunter]]
|
*** [[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).
|
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
|
* Implémentations
|
||||||
** CPython
|
** 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 :
|
Implémentation CPython optimisée par Instagram :
|
||||||
* [[https://engineering.fb.com/2022/05/02/open-source/cinder-jits-instagram/][Jit]]
|
* [[https://engineering.fb.com/2022/05/02/open-source/cinder-jits-instagram/][Jit]]
|
||||||
|
|
||||||
|
|
||||||
* Modules intéressants
|
* Modules intéressants
|
||||||
** Bases de données
|
** Bases de données
|
||||||
*** [[https://spark.apache.org/docs/latest/api/python/][PySpark]]
|
*** [[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]]
|
*** [[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
|
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]]).
|
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
|
** Surveillance de fichers
|
||||||
*** [[https://watchfiles.helpmanual.io/][watchfiles]]
|
*** [[https://watchfiles.helpmanual.io/][watchfiles]]
|
||||||
Surveillance de fichiers basé sur la librarie Rust /Notify/.
|
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]]
|
*** [[https://scrapy.org/][scrapy]]
|
||||||
Framework d'extraction de données depuis des site web.
|
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
|
* Performances
|
||||||
** [[id:b9f392bd-bd45-4e9e-94ec-b19caedff86f][List vs tuple]]
|
** [[id:b9f392bd-bd45-4e9e-94ec-b19caedff86f][List vs tuple]]
|
||||||
** [[id:26e1fdfb-1f8e-4c62-a08f-468a56ab03c8][Peephole optimization]]
|
** [[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
|
* 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~).
|
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
|
* Tips
|
||||||
** [[id:24408701-21d8-4f4e-aed9-c58746df2244][Différence entre les opérateurs + et +=]]
|
** [[id:24408701-21d8-4f4e-aed9-c58746df2244][Différence entre les opérateurs + et +=]]
|
||||||
** [[id:a32ab138-f9a8-4d61-9c09-97953c5a0a92][type == object]]
|
** [[id:a32ab138-f9a8-4d61-9c09-97953c5a0a92][type == object]]
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:ID: 171ce2f7-4028-47b0-b4e0-5a4a6ccb74ac
|
:ID: 171ce2f7-4028-47b0-b4e0-5a4a6ccb74ac
|
||||||
:mtime: 20221229103915
|
:mtime: 20230729082927
|
||||||
:ctime: 20220104155310
|
:ctime: 20220104155310
|
||||||
:END:
|
:END:
|
||||||
#+title: Postgres
|
#+title: Postgres
|
||||||
@@ -86,6 +86,11 @@ Différents sites permettent de visualiser graphiquement les query plans:
|
|||||||
* Payants:
|
* Payants:
|
||||||
* [[https://app.pgmustard.com/login][PgMustard]]
|
* [[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
|
* Références
|
||||||
* [[https://stackoverflow.com/questions/45395538/postgres-md5-password-plain-password][Postgres: MD5 Password / Plain password - Github]]
|
* [[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]]
|
* [[https://www.postgresql.org/docs/current/sql-explain.html][Sql-explain - PostgreSQL]]
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:ID: e7581fe3-f83f-4243-91ed-6ef7ade6a844
|
:ID: e7581fe3-f83f-4243-91ed-6ef7ade6a844
|
||||||
:mtime: 20220530204913
|
:mtime: 20220910172209
|
||||||
:ctime: 20220109134723
|
:ctime: 20220109134723
|
||||||
:END:
|
:END:
|
||||||
#+title: Linux
|
#+title: Linux
|
||||||
@@ -10,13 +10,18 @@
|
|||||||
* Distributions
|
* Distributions
|
||||||
** [[id:393342ff-bf38-4472-8713-3de5ebe43eca][Guix]]
|
** [[id:393342ff-bf38-4472-8713-3de5ebe43eca][Guix]]
|
||||||
|
|
||||||
|
* Gestionnaire de paquets
|
||||||
|
** [[id:4cb68913-62c6-43bb-835f-85237b2a8b40][apt]]
|
||||||
|
|
||||||
* Systèmes d'initialisation
|
* Systèmes d'initialisation
|
||||||
** [[id:af912c20-4752-44ba-bdc0-99451ac0cd10][systemd]]
|
** [[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
|
* Fonctionnalités
|
||||||
** [[id:fad57303-ce0c-4ae4-9529-294f70ecfaa5][Inotify]]
|
** Surveillance de fichiers
|
||||||
|
*** [[id:fad57303-ce0c-4ae4-9529-294f70ecfaa5][Inotify]]
|
||||||
|
|
||||||
* Interpreteur de commandes
|
* Interpreteur de commandes
|
||||||
** [[id:72eb2d10-5b92-4fb7-9e4e-1398bd933335][bash]]
|
** [[id:72eb2d10-5b92-4fb7-9e4e-1398bd933335][bash]]
|
||||||
@@ -25,3 +30,5 @@
|
|||||||
** Parsing de contenu json (lib+bin) : [[id:83908b49-3945-4dce-8b26-2a5e4636df13][jq]]
|
** 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]]
|
** 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]]
|
** Template utilisant les variables d'environnement : [[https://manpage.me/?q=envsubst][envsubst]]
|
||||||
|
** Lecture de fichiers
|
||||||
|
*** [[id:d5b19724-9559-44de-aef7-c4d57fb6dc95][batcat]]
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:ID: 6cc56ee4-6d42-4d50-beb3-bb22a98298dd
|
:ID: 6cc56ee4-6d42-4d50-beb3-bb22a98298dd
|
||||||
:mtime: 20220528185642
|
:mtime: 20220814131534
|
||||||
:ctime: 20220130153624
|
:ctime: 20220130153624
|
||||||
:END:
|
:END:
|
||||||
#+title: textual
|
#+title: textual
|
||||||
@@ -73,6 +73,11 @@ division(5, 0)
|
|||||||
#+END_SRC
|
#+END_SRC
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
|
|
||||||
|
|
||||||
|
* Projets
|
||||||
|
** [[https://github.com/Traumatism/ToastCord][ToastCord - Github]]
|
||||||
|
** [[https://github.com/kraanzu/dooit][Dooit - Github]]
|
||||||
|
|
||||||
* Références
|
* Références
|
||||||
* [[https://github.com/Textualize/textual][Textual - Github]]
|
* [[https://github.com/Textualize/textual][Textual - Github]]
|
||||||
* [[https://github.com/Textualize/rich][Rich - Github]]
|
* [[https://github.com/Textualize/rich][Rich - Github]]
|
||||||
|
97
20240215223404-uptime_kuma.org
Normal file
97
20240215223404-uptime_kuma.org
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
:PROPERTIES:
|
||||||
|
:ID: e5e49b61-ee56-4364-a96e-48d72217ef95
|
||||||
|
:mtime: 20240217184904
|
||||||
|
:ctime: 20240215223404
|
||||||
|
:END:
|
||||||
|
#+title: uptime-kuma
|
||||||
|
|
||||||
|
* Installation
|
||||||
|
|
||||||
|
#+BEGIN_SRC shell
|
||||||
|
cd /opt
|
||||||
|
mkdir uptime-kuma
|
||||||
|
chown ubuntu:ubuntu uptime-kuma/
|
||||||
|
git clone https://github.com/louislam/uptime-kuma.git
|
||||||
|
cd uptime-kuma
|
||||||
|
npm run setup
|
||||||
|
npm install vite
|
||||||
|
npm run build
|
||||||
|
|
||||||
|
useradd -m --system uptime
|
||||||
|
|
||||||
|
cat <<EOF > /usr/lib/systemd/system/update-kuma.service
|
||||||
|
[Unit]
|
||||||
|
Description=Uptime-Kuma - A free and open source uptime monitoring solution
|
||||||
|
Documentation=https://github.com/louislam/uptime-kuma
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
User=uptime
|
||||||
|
WorkingDirectory=/opt/uptime-kuma
|
||||||
|
ExecStart=/bin/bash -c 'PATH=/home/uptime/.n/bin:$PATH npm run start-server'
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=5s
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl enable --now uptime-kuma
|
||||||
|
|
||||||
|
cat <<EOF > /etc/nginx/sites-available/uptime
|
||||||
|
server {
|
||||||
|
server_name tools.adrien.run;
|
||||||
|
|
||||||
|
listen 80;
|
||||||
|
listen [::]:80;
|
||||||
|
|
||||||
|
return 404;
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
server_name uptime.tools.adrien.run;
|
||||||
|
|
||||||
|
listen 443 ssl http2;
|
||||||
|
listen [::]:443 ssl http2;
|
||||||
|
|
||||||
|
# SSL configuration
|
||||||
|
include /etc/nginx/ssl.conf;
|
||||||
|
ssl_certificate /etc/letsencrypt/live/uptime.tools.adrien.run/fullchain.pem;
|
||||||
|
ssl_certificate_key /etc/letsencrypt/live/uptime.tools.adrien.run/privkey.pem;
|
||||||
|
|
||||||
|
# Logging configuration
|
||||||
|
access_log /var/log/nginx/uptime.access.log;
|
||||||
|
error_log /var/log/nginx/uptime.error.log;
|
||||||
|
|
||||||
|
root /opt/uptime-kuma;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_pass http://127.0.0.1:3002/;
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection "upgrade";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
server_name uptime.tools.adrien.run;
|
||||||
|
|
||||||
|
listen 80;
|
||||||
|
listen [::]:80;
|
||||||
|
|
||||||
|
if ($host = uptime.tools.adrien.run) {
|
||||||
|
return 301 https://$host$request_uri;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 404;
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
systemctl restart nginx.service
|
||||||
|
certbot -d uptime.tools.adrien.run --nginx
|
||||||
|
#+END_SRC
|
Reference in New Issue
Block a user