OpenLLM-France/wikimedia huggingface dataset:
# Recettes de villages qui bougent/PACA/URFR/Clafoutis aux abricots rosés de Provence
## Clafoutis aux abricots rosés de Provence
### Ingrédients

* 600 g d’abricots rosés de Provence,
* 40 g de beurre salé,
* 4 œufs,
* 20 cl de lait,
* 100 g de farine,
* 100 g de sucre,
* 2 pincées de gingembre en poudre,
* 2 grosses pincées de vanille en poudre,
* ½ c à c d’extrait d’amande amère,
* 1 c à soupe de rhum brun,
* 1 sachet de sucre vanillé,
* Facultatif : amandes effilées grillées.

### Préparation

* Préchauffer le four à 210°C (th 7).
* Ranger les oreillons d’abricots dénoyautés, face bombée sur le dessus, dans un moule beurré.
* Mélanger la farine, le sucre, le gingembre, la vanille, l’extrait d’amande amère.
* Incorporer les œufs.
* Verser le lait, le rhum et le beurre fondu. Bien mélanger.
* Verser dans le moule.
* Décorer avec les amandes effilées.
* Cuire 35 min au four.
* Saupoudrer de sucre vanillé.
* Servir tiède ou froid.

### Astuce

Le clafoutis est également réalisé avec des cerises de Provence.

### Information

Ce clafoutis est une simple recette de famille. Il diffère de la recette classique avec des tendances nouvelles. L'influence des îles s'exprime dans les saveurs subtiles apportées par les épices douces. On le déguste parfois le midi dans la cuisine des foyers ruraux à Charleval.
Le clafoutis est d'origine limousin mais on le réalise beaucoup en Provence du fait de la présence de nombreux vergers, notamment d'abricotiers et de cerisiers.

### Liens utiles

Les clafoutis du chef Guy Savoy en vidéo.
# Recettes de villages qui bougent/PACA/URFR/Batbouts au thon

Cette page est considérée comme une ébauche à compléter . Si vous possédez quelques connaissances sur le sujet, vous pouvez les partager en éditant dès à présent cette page (en cliquant sur le lien « »).
Ressources suggérées : Aucune (vous pouvez indiquer les ressources que vous suggérez qui pourraient aider d'autres personnes à compléter cette page dans le paramètre « ressources » du modèle engendrant ce cadre)
# Simscript III/Dictionnaire des instructions/OPEN

Lénoncé open ouvre un fichier en entrée ou en sortie et lui affecte le numéro dunité(qui peut être une expression arthmétique). Si loption noerror est spécifiée, louverture dun fichier non-existant nentraîne pas une erreur dexécution, mais une valeur différente de 0 sera affectée à la variable ropenerr.v.
                ${\begin{aligned}&\color {blue}{\text{open}}\color {black}\left[\color {blue}{\text{unit}}\color {black}\right]{\text{ }}unit{\acute {e}}\color {blue}{\text{ for }}\color {black}\left\{{\begin{matrix}\color {blue}{\text{input}}\\\color {blue}{\text{output}}\\\end{matrix}}\color {black}\right\}\left[c\right]\\&{\text{ }}\qquad \left[{\begin{aligned}&\color {blue}\left[{\text{file}}\right]{\text{ name }}\left\{{\begin{matrix}\color {blue}{\text{is}}\\\color {blue}{\text{=}}\\\end{matrix}}\right\}\color {black}{\text{ }}Nom\_Fichier\\&\color {blue}{\text{recordsize }}\left\{{\begin{matrix}\color {blue}{\text{is}}\\\color {blue}{\text{=}}\\\end{matrix}}\right\}\color {black}{\text{ }}Taille\_Enregistrement\\\end{aligned}}\right]\left[c\right]\\&{\text{ }}\qquad \left[{\begin{matrix}\color {blue}{\text{append}}\\\color {blue}{\text{binary}}\\\color {blue}{\text{character}}\\\color {blue}{\text{formatted}}\\\color {blue}{\text{noerror}}\\\end{matrix}}\color {black}\right]\left[c\right]\\\end{aligned}}$
Le nom du fichier peut-être spécifié avec la chaîne de caractères Nom_Fichier. La taille de l’enregistrement peut également être spécifiée par une expression Taille_Enregistrement. Pour un fichier binaire, la taille de l’enregistrement est fixe. Pour un fichier ASCII, la taille de l’enregistrement peut être variable, et la valeur Taille_Enregistrement représente la longueur maximale de l’enregistrement. Le mot clé binary indique qu’il s’agit d’un fichier binaire. Si le nom du fichier est omis, alors le fichier ouvert doit avoir comme nom SIMUxx où xx est le numéro d’unité.
Les unités déjà prédéfinies par le système ne doivent pas être ouvertes explicitement :
                         Numéro d’unité Mode Nom 5inputstdin 6outputstdout 98outputstderr 99input/outputthe buffer
Exemple :
# Simscript III/Dictionnaire des instructions/NORMALLY

Lénoncé normally peut apparaître dans le préambule, dans un bloc begin class….end, ou dans des sous-programmes. Il permet de définir les caractéristiques des variables, des attributs et des fonctions ainsi que la dimensionnalité des tableaux.
                $\color {blue}{\text{normally }}\color {black}\left\{{\begin{matrix}\color {blue}{\text{mode is }}\color {black}\left\{{\begin{matrix}\color {blue}{\text{integer}}\\\color {blue}{\text{real}}\\\color {blue}{\text{double}}\\\color {blue}{\text{alpha}}\\\color {blue}{\text{text}}\\\color {blue}{\text{undefined}}\\\end{matrix}}\color {black}\right\}\\\color {blue}{\text{type is }}\color {black}\left\{{\begin{matrix}\color {blue}{\text{saved}}\\\color {blue}{\text{recursive}}\\\end{matrix}}\color {black}\right\}\\\color {blue}{\text{dim is }}\color {black}entier\\\end{matrix}}\color {black}\right\}^{c}$
Ainsi, on peut donc déclarer un mode en arrière-plan, et toutes les variables qui ne sont pas explicitement définies par un énoncé define prennent le mode d’arrière-plan.
Exemple :
# Simscript III/Dictionnaire des instructions/MOVE FROM

Lénoncé move from est utilisé dans limplantation dun sous-programme associé à une variable monitorée. Il sert à affecter la valeur de la variable monitorée une variable associée au sous-programme ou à affecter une valeur à la variable monitorée.
| Syntaxe : | |
| | $\color {blue}{\text{move }}\left\{{\begin{matrix}{\text{from}}\\{\text{to}}\\\end{matrix}}\right\}{\text{ }}\color {black}variable{\text{ }}$ |
Le mode de variable doit être le même que le mode de la variable monitorée. La variable peut être simple ou indicée, locale ou globale.
L’énoncé move from est utilisé dans une routine ou méthode monitorée à gauche pour affecter la valeur d’une expression à la variable monitorée. L’énoncé move to est utilisé dans une routine ou méthode monitorée à droite pour affecter la valeur de la variable monitorée à une variable dans le sous-programme.
L’exemple suivant est tiré du guide de programmation de Simscript III. Dans le préambule, il y a une déclaration d’une classe Ressource avec un attribut Unités_Disponibles qui est déclaré comme une variable monitorée à gauche ; ceci implique qu’à chaque fois que l’on affecte une valeur à l’attribut Unités_Disponibles, la méthode Unités_Disponibles (du même nom que la variable monitorée) est invoquée automatiquement. La valeur affectée à l’attribut Unités_Disponibles est affectée avec l’énoncé enter with à la variable locale Acquises ; avant de quitter le sous-programme la valeur de l’expression Acquises est affectée à la variable monitorée.
# Simscript III/Dictionnaire des instructions/PERMANENT ENTITIES

Lénoncé permanent entities se place dans le préambule ( preamble) pour introduire une rubrique dentités permanentes. Elle indique que tous les énoncés every qui suivent déclarent des entités permanentes et/ou des n-uplets dentités permanentes avec leurs attributs.
| Syntaxe : | |
| | $\color {blue}{\text{permanent entities }}\color {black}\left[\color {blue}{\text{include }}\color {black}entit{\acute {e}}^{\text{c}}\right]$ |
Exemple :
# Simscript III/Dictionnaire des instructions/METHODS FOR THE

Lénoncé method for the se place dans un module pour introduire le début des implantations des méthodes pour une Classedonnée.
| Syntaxe : | |
| | $\color {blue}{\text{methods for }}\left[{\text{the}}\right]{\text{ }}\color {black}Nom{\text{ }}\!\!\_\!\!{\text{ }}Classe\color {blue}{\text{ class}}$ |
# Simscript III/Dictionnaire des instructions/MAIN

Introduit le programme principal main (terminé par end).
# Simscript III/Dictionnaire des instructions/PREAMBLE

Introduit le preamble (terminé par end).
| Syntaxe : | |
| | ${\begin{aligned}&\left[{\begin{matrix}\color {blue}{\text{public}}\\\color {blue}{\text{private}}\\\end{matrix}}\color {black}\right]\color {blue}{\text{ preamble }}\color {black}\left[\left[\color {blue}{\text{for}}\color {black}\right]\color {blue}{\text{ the }}\color {black}Nom{\text{ }}\!\!\_\!\!{\text{ }}Syst{\grave {e}}me{\text{ }}\left[{\begin{aligned}&\color {blue}{\text{system}}\left[{\text{s}}\right]\\&\color {blue}{\text{subsystem}}\left[{\text{s}}\right]\\&\color {blue}{\text{package}}\left[{\text{s}}\right]\\&\color {blue}{\text{module}}\left[{\text{s}}\right]\\\end{aligned}}\color {black}\right]\right]{\text{ }}\\&{\text{ }}\qquad \qquad \left[\left[{\begin{aligned}&\color {blue}{\text{importing}}\\&\color {blue}{\text{including}}\\\end{aligned}}\color {black}\right]\color {blue}{\text{ the }}\color {black}Liste{\text{ }}\!\!\_\!\!{\text{ }}Nom{\text{ }}\!\!\_\!\!{\text{ }}Sous{\text{ }}\!\!\_\!\!{\text{ }}Syst{\grave {e}}me^{c}\left[{\begin{matrix}\color {blue}{\text{subsystem}}\left[{\text{s}}\right]\\{\begin{aligned}&\color {blue}{\text{package}}\left[{\text{s}}\right]\\&\color {blue}{\text{module}}\left[{\text{s}}\right]\\\end{aligned}}\\\end{matrix}}\color {black}\right]\right]\\\end{aligned}}$ |
Exemple :
# Simscript III/Dictionnaire des instructions/LIST ATTRIBUTES OF EACH

Lénoncé list attributes of each affiche la valeur des attributs dune entité permanente ou temporaire, dune ressource ou dun processus ou dun objet.
${\begin{aligned}&\color {blue}{\text{list attributes of each }}\color {black}\left\{{\begin{aligned}&Entit{\acute {e}}\\&Objet\\\end{aligned}}\right\}{\text{ }}\left[\color {blue}\left\{{\begin{aligned}&{\text{after}}\\&{\text{from}}\\\end{aligned}}\right\}\color {black}Pointeur\_Entit{\acute {e}}\right]\color {blue}{\text{in }}\left[{\text{the}}\right]Ensemble{\text{ }}\!\!]\!\!{\text{ }}\\&{\text{ }}\qquad \qquad \qquad \left[\color {blue}{\text{in reserve order}}\color {black}\right]\left[{\begin{aligned}&Phrase\_S{\acute {e}}lection\\&Phrase\_Terminaison\\\end{aligned}}\right]\\&\\&Phrase\_S{\acute {e}}lection=\left\{{\begin{aligned}&Phrase\color {blue}{\text{ with}}\\&\color {black}Phrase\color {blue}{\text{ unless}}\\\end{aligned}}\color {black}\right\}\\&Phrase\_Terminaison=\left\{{\begin{aligned}&Phrase\color {blue}{\text{ while}}\\&Phrase\color {blue}{\text{ until}}\\\end{aligned}}\color {black}\right\}\\\end{aligned}}$
# Simscript III/Dictionnaire des instructions/METHOD

Lénoncé method marque le début dun sous-programme de type méthode pour un objet ou méthode processus sous programme.
| Syntaxe : | |
| | ${\begin{aligned}&\color {blue}\left[{\begin{matrix}{\text{process}}\\{\begin{aligned}&{\text{left}}\\&{\text{right}}\\\end{aligned}}\\\end{matrix}}\right]{\text{ method }}\color {black}Nom{\text{ }}\!\!\_\!\!{\text{ }}M{\acute {e}}thode{\text{ }}\!\![\!\!\color {blue}{\text{ given }}\color {black}E_{\text{1}}{\text{ }}\!\![\!\!{\text{ ,}}E_{\text{2}}{\text{,}}...E_{\text{n}}{\text{ }}\!\!]\!\!{\text{ }}\!\!]\!\!{\text{ }}\\&{\text{ }}\qquad \qquad \qquad \qquad \qquad \qquad \qquad \ \!\![\!\!\color {blue}{\text{ yielding }}\color {black}S_{\text{1}}{\text{ }}\!\![\!\!{\text{ ,}}S_{\text{2}}{\text{,}}...{\text{,}}S_{\text{m}}{\text{ }}\!\!]\!\!{\text{ }}\!\!]\!\!{\text{ }}\\\end{aligned}}$ |
où Nom_Méthode est un nom apparaissant dans un define ... method du preamble, E$_1$, ..., E$_n$ est une liste de paramètres d’entrée et S$_1$, ..., S$_m$ est une liste de paramètres de sortie si la méthode est appelée par un énoncé call.
# Simscript III/Dictionnaire des instructions/LIST ATTRIBUTES

Lénoncé list attributes affiche la valeur des attributs dune entité permanente ou temporaire, dune ressource ou dun processus.
                $\color {blue}{\text{ list attributes of }}\color {black}Entit{\acute {e}}{\text{ }}\left[\color {blue}{\text{called }}\color {black}Variable\_Pointeur\right]{\text{ }}\!\![\!\!\color {blue}{\text{ using }}\left[{\text{unit}}\right]\color {black}Entier{\text{ }}\!\!]\!\!{\text{ }}$
# Patrons de conception

Patrons de conception
Un livre appartenant à la série Programmation et à l'étagère Informatique de Wikilivres.
En génie logiciel, un patron de conception (Design pattern en anglais) est une solution générique d'implémentation répondant à un problème spécifique. En général, un patron de conception décrit une structure de classes utilisant des interfaces, et s'applique donc à des développements logiciels utilisant la programmation orientée objet.
    Avancé
* Une version imprimable du livre « Patrons de conception » est disponible. (voir/ modifier)
* Une version PDF de ce livre est disponible.
* La lecture préalable de Programmation UML, notamment le diagramme de classes est conseillée.
Ce livre a pour but de faire découvrir les patrons de conception aux programmeurs débutants et s'adresse également aux programmeurs confirmés en dressant l'inventaire des patrons de conception les plus connus.
Les pré-requis recommandés sont les suivants :
* Connaître le vocabulaire de la programmation objet, employé intensivement pour décrire les patrons de conception,
* Avoir des notions de modélisation UML, notamment sur le diagramme de classes.
* Introduction
* Patrons du « Gang of Four »
** Patrons de création
*** Singleton
*** Prototype
*** Fabrique
*** Fabrique abstraite
*** Monteur
** Patrons de structure
*** Pont
*** Façade
*** Adaptateur
*** Objet composite
*** Proxy
*** Poids-mouche
*** Décorateur
** Patrons de comportement
*** Chaîne de responsabilité
*** Commande
*** Interpréteur
*** Itérateur
*** Médiateur
*** Mémento
*** Observateur
*** État
*** Stratégie
*** Patron de méthode
*** Visiteur
* Patrons GRASP
** Expert en information
** Créateur
** Faible couplage
** Forte cohésion
** Contrôleur
** Polymorphisme
** Fabrication pure
** Indirection
** Protection
* Patrons d'entreprise
** Logique du domaine
*** Script de transaction
*** Modèle du domaine
*** Module de table
*** Couche de service
** Architecture de source de données
*** Passerelle de table de données
*** Passerelle de ligne de données
*** Enregistrement actif
*** Gestion de données
** Comportement objet-relationnel
*** Unité de travail
*** Carte d'identité
*** Chargement différé
** Structure objet-relationnel
** Association méta-données objet-relationnel
** Présentation web
** Distribution
** Concurrence locale (hors-ligne)
** État de session (Session State Patterns)
** Patrons de base
*** Passerelle (Gateway)
*** Mapper
*** Type de base pour la couche
*** Interface séparée
*** Registre
*** Plugin
*** Objet valeur
*** Monnaie
*** Cas spécial
*** Service de substitution
*** Ensemble d'enregistrements
* Autres patrons
** Type fantôme
** Double-dispatch
** Post-Redirect-Get
** Map-Reduce
** Évaluation retardée
** Copie sur modification
** Injection de dépendance
** Inversion de contrôle
** Modèle-Vue-Contrôleur
** Modèle-Vue-Présentateur
** Écart de génération
** Objet nul
** Objets réutilisables
** Outbox
** Feature toggles
* Bibliographie et liens
# Sommaire

* Histologie
* Anomalies morphologiques
* Diagnostics
* Maladies
* Tumeurs
# Programmation PHP avec Symfony/HttpClient

* Introduction
* Service
** Contrôleur
** Commande
* Composant
** HttpClient
** Évènement
** Formulaire
** Mailer
** Stimulus
* Bundle
** Twig
** Doctrine
** API
* Introduction
* Service
** Contrôleur
** Commande
* Composant
** HttpClient
** Évènement
** Formulaire
** Mailer
** Stimulus
* Bundle
** Twig
** Doctrine
** API
[ Modifier le sommaire ]

## Installation

Composant pour lancer des requêtes HTTP depuis l'application, avec gestion des timeouts, redirections, cache, protocole et en-tête HTTP. Il est configurable en PHP ou dans framework.yaml.
Depuis Symfony 4 :

## Utilisation

Deux solutions :
ou
Par défaut, l'appel statique à la classe HttpClient instancie un CurlHttpClient, alors que l'injection du service via HttpClientInterface récupère un TraceableHttpClient. Ce dernier est préférable puisqu'il affiche toutes les requêtes dans le profiler de Symfony.

### GET

On peut forcer l'utilisation de HTTP 2 à la création :
Ce code ne lève pas les exceptions de résolution DNS.

### POST

Exemple en POST avec authentification :
Pour lancer plusieurs appels asynchrones, il suffit de placer leurs $response->getContent ensemble, après tous les $httpClient->request.
Pour envoyer un fichier il y a plusieurs solutions :
* Utiliser le type MIME correspondant à son extension (ex : 'application/pdf', 'application/zip'...). Mais on ne peut envoyer que le fichier dans la requête.
* Utiliser le type MIME 'application/json' et l'encoder en base64. Il peut ainsi être envoyé avec d'autres données.
* Utiliser le type MIME 'multipart/form-data'.

### Problèmes connus

Ce composant est relativement jeune et souffre d'incomplétudes.
* On peut avoir du "null given" à tort sur un mapping DNS, solvable en rajoutant une option :
* $httpClient->request renvoie une Symfony\Contracts\HttpClient\ResponseInterface, mais en cas d'erreur, elle ne contient qu'une ligne de résumé, soit moins d'informations qu'un client comme Postman.

## Tests

Ce composant peut aussi serveur aux tests fonctionnels via PhpUnit. On l'appelle alors avec static::createClient si le test extends WebTestCase. Dans le cas d'un projet API Platform, on l'appelle de la même manière mais le test extends ApiTestCase.
Exemple :
Pour simuler plusieurs clients en parallèle : $client->insulate.
Pour simuler un utilisateur : $client->loginUser($monUser).
Pour un test de bundle, il faut créer une classe Kernel qui charge les routes en plus.

## Références

* ↑ https://symfony.com/doc/current/components/http_client.html
* ↑ https://dev.to/timoschinkel/sending-multipart-data-with-psr-18-2lb5
* ↑ https://symfonycasts.com/screencast/symfony-bundle/controller-functional-test
# Programmation PHP avec Symfony/Mailer

* Introduction
* Service
** Contrôleur
** Commande
* Composant
** HttpClient
** Évènement
** Formulaire
** Mailer
** Stimulus
* Bundle
** Twig
** Doctrine
** API
* Introduction
* Service
** Contrôleur
** Commande
* Composant
** HttpClient
** Évènement
** Formulaire
** Mailer
** Stimulus
* Bundle
** Twig
** Doctrine
** API
[ Modifier le sommaire ]

## Mailer

Depuis Symfony 4.3, un composant Symfony Mailer a été ajouté.
Pour l'installer :
Ajouter ensuite le SMTP dans le .env :

## Swift Mailer

Avant Symfony 4.3 et la création du composant Mailer, on pouvait utiliser Swift Mailer.
Swift Mailer est ensuite remplacé en novembre 2021 par le composant Mailer.

### Utilisation

Par exemple, pour un envoi d'email sans passer par config.yml :

## Templates

Pour simplifier les templates d'email, une alternative au HTML / CSS existe, il s'agit de Inky.
Elle utilise d'autres balises XML, comme callout ou spacer.
Installation :
Utilisation :

## Références

* ↑ https://symfony.com/doc/current/mailer.html
* ↑ https://symfony.com/doc/current/email.html
* ↑ https://mailcatcher.me/
* ↑ https://symfony.com/doc/current/mailer.html#inky-email-templating-language
* ↑ https://get.foundation/emails/docs/spacer.html
# Programmation PHP avec Symfony/Évènement

* Introduction
* Service
** Contrôleur
** Commande
* Composant
** HttpClient
** Évènement
** Formulaire
** Mailer
** Stimulus
* Bundle
** Twig
** Doctrine
** API
* Introduction
* Service
** Contrôleur
** Commande
* Composant
** HttpClient
** Évènement
** Formulaire
** Mailer
** Stimulus
* Bundle
** Twig
** Doctrine
** API
[ Modifier le sommaire ]
Un évènement est une action pouvant en déclencher d'autres qui l'attendaient, à la manière du patron de conception observateur, via un hook.

## Commande

Pour lister les évènements et écouteurs d'un projet (avec leurs priorités) :
Ex :

## Event

Pour utiliser ce système, la première étape consiste à déterminer si on souhaite utiliser un évènement existant, ou en créer un nouveau.
* Pour un existant, son nom est obtenu par le commande ci-dessus.
* Pour un nouveau, voici un exemple de conception pilotée par le domaine où l'on souhaite qu'une condition du core soit traitée dans des modules en fonction du groupe utilisateur, sans les lister dans le core :
Une fois la classe crée, il faut choisir où l'instancier :

## Listener

Pour exécuter une ou plusieurs classes au moment du dispatch, il faut créer maintenant en créer une qui écoute l'évènement. Elle doit peut être reliée à son évènement, soit dans sa déclaration de service pour un écouter (event listener), soit dans son constructeur pour un souscripteur (event subscriber).
Le listener a donc l'inconvénient de devoir être déclaré avec un tag, alors que le subscriber lui, est chargé à chaque exécution du programme, ce qui alourdit légèrement les performances mais évite de maintenir sa déclaration en autowiring.

### Exemple de déclaration YAML
## Subscriber

Un souscripteur doit forcément implémenter EventSubscriberInterface :
Autre exemple où on veut embarquer dans un évènement maison une information de ses souscripteurs :

## Débogage

Les erreurs qui surviennent selon certains évènements ne sont pas faciles à provoquer ou visualiser. Pour les voir sans passer par le profiler, on peut ajouter temporairement dans un contrôleur :

## Références

* ↑ https://symfony.com/doc/current/event_dispatcher.html
# Programmation POSIX

POSIX (Portable Operating System Interface) est une famille de standards spécifiés par l'IEEE Computer Society pour maintenir la compatibilité entre les systèmes d'exploitation. Il définit à la fois une interface de programmation système et utilisateur, et également les interpréteurs de ligne de commandes (shells) et interfaces d'utilitaires, pour la portabilité logicielle des variantes d'Unix et autres systèmes d'exploitation.
Le but de ce livre est d'offrir une introduction à l'utilisation en C de l'API POSIX.
    avancé
* La lecture préalable de Programmation C est conseillée.
Avant d'étudier ce Wikilivre, il est nécessaire d'avoir une certaine connaissance du C. Pour cela, vous pouvez consulter le Wikilivre Programmation C.

## Sommaire

Processus
* Processus
* Processus légers
* Signaux
Fichiers
* Lecture et écriture
* Verrouillage
* Tubes
* Opérations sur les fichiers
Annexes
* Index
* Ressources
# Programmation PHP avec Symfony/Sommaire

* Introduction
* Service
** Contrôleur
** Commande
* Composant
** HttpClient
** Évènement
** Formulaire
** Mailer
** Stimulus
* Bundle
** Twig
** Doctrine
** API