Switch to TeX ? :)
continuous-integration/drone/push Build is passing Details

This commit is contained in:
Fred 2021-05-18 20:13:10 +02:00
parent 136b053cee
commit a6519ed11a
2 changed files with 114 additions and 0 deletions

82
source/main.tex Normal file
View File

@ -0,0 +1,82 @@
\documentclass[a4paper,12pt]{book}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{hyperref}
\begin{document}
\author{Cédric Declerfayt, Frederick Pauchet}
\title{Minor swing with Django}
\date{2016-2032}
\frontmatter
\maketitle
\tableofcontents
\mainmatter
\part{Environnement de travail}
\chapter{Construire des applications maintenables}
\section{12 facteurs}
Pour la méthode de travail et de développement, nous allons nous baser sur les \href{https://12factor.net/fr/}{Twelve-factorApp} - ou plus simplement les 12 facteurs.
Lidée derrière cette méthode, et indépendamment des langages de développement utilisés, consisteà suivre un ensemble de douze concepts, afin de:
\begin{enumerate}
\item Faciliter la mise en place de phases dautomatisation; plus concrètement, de faciliter lesmises à jour applicatives, simplifier la gestion de lhôte, diminuer la divergence entre lesdifférents environnements dexécution et offrir la possibilité dintégrer le projet dans unprocessus dintégration continue ou déploiement continu
\item Faciliter la mise à pied de nouveaux développeurs ou de personnes souhaitant rejoindrele projet, dans la mesure où la mise à disposition dun environnement sera grandementfacilitée
\item Minimiser les divergences entre les différents environnemens sur lesquels un projetpourrait être déployé
\item Augmenter lagilité générale du projet, en permettant une meilleure évolutivité architecturale et une meilleure mise à léchelle - Vous avez 5000 utilisateurs en plus? Ajoutez un serveur et on nen parle plus ;-)
\end{enumerate}
En pratique, les points ci-dessus permettront de monter facilement un nouvel environnement - quil soit sur la machine du petit nouveau dans léquipe, sur un serveur Azure/Heroku/Digital Ocean ou votre nouveau Raspberry Pi Zéro planqué à la cave - et vous feront gagner un temps précieux. Pour reprendre de manière très brute les différentes idées derrière cette méthode, nous avons:
\begin{enumerate}
\item ...
\item ...
\end{enumerate}
\subsection{Une base de code unique, suivie par un système de contrôle de versions}
\chapter{Boite à outils}
\chapter{Un projet Python}
\chapter{Un projet Django}
\part{Déploiement}
\chapter{Infrastructure et composants}
\chapter{Code source}
\chapter{Supervision et mise à disposition}
\chapter{Méthodes de déploiement}
\chapter{Ressources}
\part{Backend}
\chapter{Modélisation}
\chapter{Migrations}
\chapter{Administration}
\chapter{Authentification}
\chapter{Shell}
\part{Frontend}
\chapter{Formulaires}
\chapter{Vues}
\chapter{Templates}
\chapter{URLs et espaces de noms}
\part{Concepts périphériques}
\chapter{Logging}
\chapter{Tests unitaires}
\part{Go Live}
\chapter{Gwift}
\chapter{Khana}
\chapter{Applications \textit{Legacy}}
\chapter{Refactoring}
\backmatter
% bibliography, glossary and index would go here.
\end{document}

View File

@ -105,6 +105,38 @@ Les propriétés de la classe Meta les plus utiles sont les suivates:
* `ordering` pour spécifier un ordre de récupération spécifique.
* `verbose_name` pour indiquer le nom à utiliser au singulier pour définir votre classe
* `verbose_name_plural`, pour le pluriel.
* `contraints` (Voir https://girlthatlovestocode.com/django-model[ici]-), par exemple
[source,python]
----
constraints = [ # constraints added
models.CheckConstraint(check=models.Q(year_born__lte=datetime.date.today().year-18), name='will_be_of_age'),
]
----
==== Choix
Voir https://girlthatlovestocode.com/django-model[ici]
[source,python]
----
class Runner(models.Model):
# this is new:
class Zone(models.IntegerChoices):
ZONE_1 = 1, 'Less than 3.10'
ZONE_2 = 2, 'Less than 3.25'
ZONE_3 = 3, 'Less than 3.45'
ZONE_4 = 4, 'Less than 4 hours'
ZONE_5 = 5, 'More than 4 hours'
name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
email = models.EmailField()
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
start_zone = models.PositiveSmallIntegerField(choices=Zone.choices, default=Zone.ZONE_5, help_text="What was your best time on the marathon in last 2 years?") # this is new
----
==== Shell