Switch to TeX ? :)
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
This commit is contained in:
parent
136b053cee
commit
a6519ed11a
|
@ -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.
|
||||
L’idé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 d’automatisation; plus concrètement, de faciliter lesmises à jour applicatives, simplifier la gestion de l’hôte, diminuer la divergence entre lesdifférents environnements d’exécution et offrir la possibilité d’intégrer le projet dans unprocessus d’inté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 d’un environnement sera grandementfacilitée
|
||||
\item Minimiser les divergences entre les différents environnemens sur lesquels un projetpourrait être déployé
|
||||
\item Augmenter l’agilité 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 n’en parle plus ;-)
|
||||
\end{enumerate}
|
||||
|
||||
En pratique, les points ci-dessus permettront de monter facilement un nouvel environnement - qu’il 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}
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue