Skip to content

Commit

Permalink
bump
Browse files Browse the repository at this point in the history
  • Loading branch information
LoicGrobol committed Jan 23, 2024
1 parent 07e5956 commit 11db85f
Show file tree
Hide file tree
Showing 11 changed files with 38 additions and 25 deletions.
12 changes: 11 additions & 1 deletion index.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,12 +96,22 @@ et le nom de fichier devra être de la forme `prénom_nom-établissment.zip`, `
- [Exemples](https://github.com/{{site.repository}}/tree/main/slides/08-html/examples)
- {% notebook_badges slides/08-html/solutions.py.md %}
[Solutions]({{site.url}}{{site.baseurl}}/slides/08-html/solutions.py.ipynb)
- {% notebook_badges slides/09-debug/debug-slides.py.md %} [Slides Debug]({{site.url}}{{site.baseurl}}/slides/09-debug/debug-slides.py.ipynb)
- {% notebook_badges slides/09-debug/debug-slides.py.md %} [Slides
Debug]({{site.url}}{{site.baseurl}}/slides/09-debug/debug-slides.py.ipynb)
- [`factorial.py`]({{site.url}}{{site.baseurl}}/slides/09-debug/factorial.py).
- [`lintme.py`]({{site.url}}{{site.baseurl}}/slides/09-debug/lintme.py).
- [`debugme.py`]({{site.url}}{{site.baseurl}}/slides/09-debug/debugme.py).
- [`ancor.txt`]({{site.url}}{{site.baseurl}}/slides/09-debug/ancor.txt).

### 2024-01-23 — Bases de données et parsers

- {% notebook_badges slides/10-bdd/bdd.py.md %} [Slides
BDD]({{site.url}}{{site.baseurl}}/slides/10-bdd/bdd.py.ipynb)
- {% slides/11-parsers/parsers.py.md %} [Slides
Parsers]({{site.url}}{{site.baseurl}}/slides/11-parsers/parsers.py.ipynb)
- {% slides/11-parsers/solutions.py.md %} [Slides
Parsers]({{site.url}}{{site.baseurl}}/slides/11-parsers/solutions.py.ipynb)


## Utilisation en local

Expand Down
2 changes: 1 addition & 1 deletion old_slides/04-modules/modules.py.md
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,7 @@ from re import *
sub(r"[aeiou]", "💓", "Plurital")
```

On le trouve souvent dans la nature, mais c'est en général une **très mauvaise idéé**:
On le trouve souvent dans la nature, mais c'est en général une **très mauvaise idée**:

- Ça rend très difficile de savoir d'où viennent les objets dans votre module
- En ajoutant les fonctions dans l'espace de nommage du script vous pouvez écraser des fonctions
Expand Down
2 changes: 1 addition & 1 deletion old_slides/17-js/js-slides.py.md
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@ const materials = [
'Beryllium'
];
console.log(materials.map(material => material.length));
console.log(materials.map(m => m.length));
```
<!-- #endregion -->
Expand Down
File renamed without changes.
File renamed without changes.
19 changes: 11 additions & 8 deletions old_slides/12-bdd/bdd-slides.py.md → slides/10-bdd/bdd.py.md
Original file line number Diff line number Diff line change
Expand Up @@ -408,9 +408,12 @@ dépendance](https://fastapi.tiangolo.com/tutorial/dependencies)
<!-- #endregion -->

<!-- #region slideshow={"slide_type": "fragment"} -->
Quand un paramètre dans un point d'accès a comme valeur par défaut `Depends(get_db)`, il n'est pas récupéré à partir de la requête mais en récupérant ce qui est renvoyé par le générateur `get_db` avec `yield`.
Quand un paramètre dans un point d'accès a comme valeur par défaut `Depends(gen)`, il n'est pas
récupéré à partir de la requête, mais à partir de ce qui est renvoyé par le générateur `gen` avec
`yield`.

Une fois la fonction correspondant au point d'accès terminée, FastAPI reprends l'exécution de `get_db` pour faire un `commit`, puis fermer le curseur et la base.
Une fois la fonction correspondant au point d'accès terminée, FastAPI reprends l'exécution de
`get_db` pour faire un `commit`, puis fermer le curseur et la base.
<!-- #endregion -->

<!-- #region slideshow={"slide_type": "fragment"} -->
Expand Down Expand Up @@ -509,17 +512,17 @@ async def create_tree_view(tree: Tree):

```

C'est essentiellement la même chose, en plus agréable à écrire mais aussi en plus magique. À vous de
voir ce que vous préférez, FastAPI a [un
C'est essentiellement la même chose, en plus agréable à écrire, mais aussi en plus magique. À vous
de voir ce que vous préférez, FastAPI a [un
tutoriel](https://fastapi.tiangolo.com/tutorial/sql-databases) sur l'utilisation de SQLAlchemy pour
un gestionnaire d'utilisateurices basique.


Ça vaut aussi le coup de lire un jour [le tutoriel de
SQLAlchemy](https://docs.sqlalchemy.org/en/14/tutorial) qui est plus ou moins la bibliothèque
standard pour travailler avec des bases de données relationnelle en Python. C'est un peu touffu mais
ça se fait en prenant son temps et vous vous remercierez plus tard (et qui ne voudrait pas être un⋅e
alchimiste ?).
standard pour travailler avec des bases de données relationnelle en Python. C'est un peu touffu,
mais ça se fait en prenant son temps et vous vous remercierez plus tard (et qui ne voudrait pas être
un⋅e alchimiste ?).

<small>Bien sûr il n'y a pas que les BDD relationnelles dans la vie et vous aurez probablement à
travailler avec d'autres trucs comme MongoDB mais ceci est une autre histoire</small>
Expand All @@ -528,4 +531,4 @@ travailler avec d'autres trucs comme MongoDB mais ceci est une autre histoire</s
Pour la gestion d'utilisateurices en particulier : sur un prototype ça peut se faire à la main, mais
très très vite l'idéal est de passer à une bibliothèque comme [FastAPI
Users](https://fastapi-users.github.io/fastapi-users/) qui gère pour vous les opérations standard
comme la gestion de mots de passe tout en vous laissant personnaliser ce dont vous avez besoin.
comme la gestion de mots de passe tout en vous laissant personnaliser ce dont vous avez besoin.
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jupyter:
<!-- LTeX: language=fr -->

<!-- #region slideshow={"slide_type": "slide"} -->
Cours 5 : Parser des documents balisés avec `lxml` et BeautifulSoup
Cours 11 : Parser des documents balisés avec `lxml` et BeautifulSoup
==================================================================

**Loïc Grobol** [<lgrobol@parisnanterre.fr>](mailto:lgrobol@parisnanterre.fr)
Expand All @@ -44,8 +44,8 @@ documents potentiellement mal formés.
Installons ces modules, soit dans votre terminal avec `pip`, soit en exécutant la cellule de code
suivante. Comme d'habitude, il est vivement recommandé de travailler pour ce cours dans un
environnement virtuel et si vous avez installé le [requirements.txt](../../requirements.txt) de ce
cours, ces modules sont déjà installés. Nous aurons également besoin de `requests` [que nous avons
déjà utilisé](../04-requests/requests-slides.py.md) et plus anecdotiquement de `matplotlib`.
cours, ces modules sont déjà installés. Nous aurons également besoin de `requests` et plus
anecdotiquement de `matplotlib`.


```python
Expand Down Expand Up @@ -292,7 +292,7 @@ source = root.xpath(
print(source[0])
```

Pour le contenu il faut ruser. La difficulté ici tient à l'utilisation d'élements `<lb/>` de type
Pour le contenu il faut ruser. La difficulté ici tient à l'utilisation d'éléments `<lb/>` de type
[milestones](http://www.tei-c.org/release/doc/tei-p5-doc/fr/html/CO.html#CORS5) pour noter les
retours à la ligne :

Expand All @@ -308,7 +308,7 @@ anais de maime pour nous<lb/>
### 🥲 Exo 🥲

1\. Récupérez dans un premier temps l'ensemble des balises `<p>` en utilisant la méthode
[findall](http://effbot.org/zone/element.htm#searching-for-subelements). la méthode `findall`
[findall](http://effbot.org/zone/element.htm#searching-for-subelements). La méthode `findall`
renvoie une liste avec tous les éléments correspondant au chemin argument.

```python
Expand All @@ -319,8 +319,8 @@ for elem in body: # tout le texte ne s'affichera pas, c'est normal !

Ici on ne récupère que les nœuds `text` précédant les éléments `<lb/>`.

2\. Utilisez la fonction `xpath` pour récupérer tous les nœuds text du corps de la lettre. Vous
intégrerez dans votre requête la fonction `text` (vue un peu plus haut) dans votre chemin xpath
2\. Utilisez la fonction `xpath` pour récupérer tous les nœuds texte du corps de la lettre. Vous
intégrerez dans votre requête la fonction `text` (vue un peu plus haut) dans votre chemin XPath
(vous pouvez _aussi_ fouiller [par ici](https://lxml.de/xpathxslt.html) pour avoir de la
documentation supplémentaire).

Expand All @@ -330,7 +330,7 @@ for text in body:
print(text, end="")
```

3\. Écrivez une requête xpath pour récupérer tous les éléments raturés de la lettre de Joséphine.
3\. Écrivez une requête XPath pour récupérer tous les éléments raturés de la lettre de Joséphine.

## Avec DOM

Expand Down Expand Up @@ -373,7 +373,7 @@ Et maintenant le contenu et ses éléments milestones

### 😌 Exo 😌

Pour garder la forme, vous réécrirez les boucles `for` suivies de `if` en listes en intension.
Pour garder la forme, vous réécrirez les boucles `for` suivies de `if` en listes en compréhension.

```python
body = dom.getElementsByTagNameNS("http://www.tei-c.org/ns/1.0", 'body')[0]
Expand Down Expand Up @@ -414,11 +414,11 @@ print(text.getText())

`lxml` est rapide, Beautiful Soup simple à utiliser. Le combo diablement efficace.

Il y a un autre module super pour le web que nous ne verrons pas dans cette séance mais que je me
dois de vous indiquer : [Selenium](https://selenium-python.readthedocs.io/) Selenium va vous
permettre d'automatiser des actions sur un navigateur. Je vous conseille d'essayer, c'est assez
plaisant de voir votre navigateur piloté par un script. C'est aussi génial pour tester
automatiquement les interfaces web que vous développez
Il y a un autre module super pour le web que nous ne verrons pas dans cette séance, mais que je me
dois de vous indiquer : [Selenium](https://selenium-python.readthedocs.io/), qui vous permet
d'automatiser des actions sur un navigateur. Je vous conseille d'essayer, c'est assez plaisant de
voir votre navigateur piloté par un script. C'est aussi génial pour tester automatiquement les
interfaces web que vous développez

## 🤔 Exo d'application 🤔

Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 comments on commit 11db85f

Please sign in to comment.