👩‍🔬 En mars, soulignons le mois de l'histoire des femmes 🙋‍♀️

Potion Bottle Icon Manuel d'alchimie du code Potion Bottle Icon

Application Point Médian - Behind the scenes !

1,114 mots - Temps de lecture estimé: 6 minutes

🌘 Objectifs de cet atelier

🌘 Parcours de création

🌘 Améliorations

🌘 Constats

🌘 Intellij IDEA ou PyCharm

Capture d'écran de PyCharm

🌘 Coeur du de l'application point-median: Expression régulière

🌘 Exemple avec deux groupes

(teur[s]?)[.\-/]([t]?rice[s]?)

Exemple d'expression régulière avec deux groupes

🌘 Exemple avec trois groupes

(teur)[.\-/](trice)[.\-/]([s]+)

Exemple d'expression régulière avec trois groupes

🌘 Création de l'interface avec Flask et Bootstrap

🌘 Flask

🌘 Illustrons ça

Architecture de l'application point-median

🌘 Code HTML du formulaire

Voici le code HTML du formulaire de saisir

<div class="container">
<form class="form-inline">
    <div class="form-group">
        <label class="sr-only" for="texte_input">Texte en
            entrée</label><br>
        <textarea id="texte_input" class="form-control" name="texte_input"></textarea>
    </div>
    <br>
    <div class="form-group">
        <button type="submit" class="btn btn-primary">Convertir</button>
    </div>
</form>
</div>

🌘 Bootstrap

Exemple :

<script src="\{\{ url_for('static', filename='js/jquery.min.js') \}\}"></script>

(il faut enlever les \ que j'ai dû ajouter pour le site web, justement parce que j'utilise aussi du templating !)

🌘 Exemple de Bootstrap: barre de navigation

Voici un exemple de composants tiré de la librairie Bootstrap: la barre de navigation

<nav class="navbar navbar-toggleable-md navbar-inverse bg-light">
    <div class="container">
        <h1>Convertisseur point médian</h1>
    </div>
</nav>

🌘 Rendre l'application dynamique: JQuery

JQuery permet d'écrire des fonctions pour rendre l'application dynamique. Comme ça, elle ne se recharge pas à chaque fois qu'on convertit un texte.

$(document).ready(function () {
    $('form').on('submit', function (event) {
        $.ajax({
            data: {
                texte_input: $('#texte_input').val(),
            },
            type: 'POST',
            url: '/point_median'
        })
            .done(function (data) {
                $('textarea#output').
                val(data.texte_output).show();
            });
        event.preventDefault();
    });
});

🌘 Fonction appelée

Cette fonction est appelée lorsque le bouton est cliqué.

@app.route('/point_median', methods=['POST']) def call_convertir_point_median():
    texte = request.form['texte_input']
    # Règles à 3 composantes
    texte_output = convertir_point_median(texte)
    return jsonify({'texte_output': texte_output})

🌘 Docker

🌘 Dockerfile

FROM python:3.10.5-slim-buster

WORKDIR /python-docker

COPY requirements.txt requirements.txt
RUN pip3 install -r requirements.txt

COPY templates templates
COPY app.py app.py
COPY static static

CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0"]

🌘 CapRover

🌘 PaaS

🌘 DevOps

Le DevOps est une technique de développement logiciel qui permet d'accélérer le cycle de développement en utilisant de l'automatisation et de déploiement en continu par la même équipe.

🌘 GitLab

L'environnement GitLab est un logiciel en ligne qui permet la gestion de code source et la gestion de projets de développement, incluant toute la partie intégration et déploiement en continu (CI/CD) et le DevOps.

🌘 GitLab CI/CD

stages:
  - test
  - dockerize

🌘 Étape du test

🌘 Tests unitaires

assert convertir_point_median("invité.e") == "invité·e"

🌘 Contenu du fichier .gitlab-ci.yml pour l'étape de test

test-cases:
  stage: test
  image: python:3
  before_script:
    - pip install -r requirements.txt
  script:
    - pytest test.py

🌘 Git

git commit -m "voici des modifications" git push origin main

🌘 Ressources

Abonne-toi au flux RSS pour ne rien manquer.

Étiquettes