django-initiation | ||
doddling | ||
drf-initiation | ||
git-initiation | ||
gnu-linux-initiation | ||
python-avancé | ||
python-initiation | ||
python-perfs | ||
.gitignore | ||
background.jpg | ||
deploy.sh | ||
LICENSE | ||
Makefile | ||
README.md | ||
requirements.txt |
The slides I use while teaching
Each directory contains a Makefile that builds the slides using mdtoreveal.
Each directory is also uploaded to mdk.fr:
- https://mdk.fr/python-initiation
- https://mdk.fr/python-avancé
- https://mdk.fr/drf-initiation
- https://mdk.fr/django-initiation
- https://mdk.fr/python-perfs
- https://mdk.fr/git-initiation
TODO
- http://scipy.github.io/old-wiki/pages/Tentative_NumPy_Tutorial
*
peut être vu comme de l'unpacking vers des noms qu'on ne voit pas.- Ajouter une slide sur "jamais de \ en fin de ligne", il y a toujours un moyen plus lisible.
- https://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD831.html Why numbering should start at zero
- Les imports
- with statement
Notes
Les arguments par defaut conservés peuvent service de memoizer:
def fib(x, memo={}):
...
Aucune fonction n'est montée avant le 3, (à part des méthodes sur les types natifs).
Souci : Jour 1 pytest nécessite Jour 2 pip...
La suite du programme avancé
-
Packaging
-
cookiecutter : docs/, tests/, README, setup.cfg, setup.py, ...
-
Multiprocessing / Multithreading / Asyncio
-
IO Bound vs CPU Bound
-
Locks vs Queues
-
Code quality
-
import this, explicit is better
-
sémantique : les ternaires, les listes en compréhension, sont des expressions, elles doivent être utilisées comme des expressions, pas comme des instructions.
-
TDD
-
pas de print, logging FTW.
-
pas de "logging tiers", personne ne connaît, on reste sur
logging
. -
-Xdev
-
black, ..., pass
-
pytest, doctest
-
pytest-cov
-
hypothesis
-
flake8
-
flake8-bugbear
-
tox
-
mypy
-
black
-
pdb, breakpoint()
-
EAFP, LBYL
-
Performance
-
Les types natifs : Leur complexité algorithmique
-
Cython
-
pypy
-
cffi
-
cprofile / pstats
-
Libs
-
re
-
argparse
-
pathlib
-
logging
-
numpy
-
jupyter
Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution 4.0 International.
DRF
Side project : https://github.com/JulienPalard/drf-demos
- Revue des bases et consolidation Python et Django
- Présentation des types d'API, approfondissement de REST/HATEOAS
- Rappels autour de la sémantique HTTP
- django-rest-framework: La sérialisation
- django-rest-framework: Les différents types de vues
- django-rest-framework: Les permissions
- django-rest-framework: Les relations
- Les tests et la maintenabilité
Objectifs pédagogiques
- Pouvoir démarrer rapidement un projet DRF.
- Savoir designer une API.
- Implémenter un service headless en utilisant DRF.
TP
- Projet 1 : API « Horloge parlante ».
- Projet 2 : API « memcached ».
- Projet 3 : API « file system ».
- Projet 4 : API « uptime manager ».
Formation Initiation Linux (2 jours)
Cette formation est destinée à toute personne souhaitant utiliser Linux, pour du développement, de l'administration système, ou pour un usage quotidien.
Stagiaires
Maximum 5 par sessions, pour commencer, peut monter à 7.
Pré-requis
Aucun.
Objectifs pédagogiques
- Pouvoir utiliser une machine sous Linux au quotidien.
- Être à l'aise avec les interfaces en ligne de commande.
- Savoir installer et utiliser des logiciels.
- Manipuler des fichiers, des données.
Plan
Jour 1
- Présentation de l'environnement Linux.
- Maniement de l'émulateur de terminal.
- Approche des commandes classiques :
man
,cd
,ls
,pwd
,mv
,cp
,rm
,less
, …
- Installer, désinstaller des applications depuis le gestionnaire de paquets.
Jour 2
- L'accès à l'extérieur avec
ssh
,rsync
,curl
, et gestion des sauvegardes. - Introduction à la gestion de sources en utilisant
git
. - Manipulation de données en utilisant
awk
,sed
,grep
,find
. - L'édition de texte depuis un terminal en utilisant
emacs
. - Approche du système de fichier : les droits, la sécurité,
mount
.