OpenLLM-France/wikimedia huggingface dataset:
# Simscript III/Dictionnaire des instructions/DEFINE ... SET

Lénoncé define ... set, placée dans le preamble, définit la politique de rangement dun ou plusieurs ensembles. Il doit se placer après (mais non nécessairement immédiatement après) la déclaration des entités possédantes (owns) et celle des entités membres (may belong to) et pour une classe, il doit se placer après les objets membres.
| Syntaxe : | |
| | ${\begin{aligned}&\color {blue}{\text{define }}\color {black}Nom_{\text{1}}{\text{, }}Nom_{\text{2}}{\text{, }}...{\text{, }}Nom_{\text{n}}\color {blue}{\text{ as }}\!\![\!\!{\text{ a }}\!\!]\!\!{\text{ }}\left\{{\begin{matrix}{\text{fifo}}\\{\text{lifo}}\\\end{matrix}}\right\}{\text{ set }}\!\![\!\!{\text{ s }}\!\!]\!\!{\text{ }}\\&\color {blue}{\text{define }}\color {black}Nom_{\text{1}}{\text{, }}Nom_{\text{2}}{\text{, }}...{\text{, }}Nom_{\text{n}}\color {blue}{\text{ as }}\!\![\!\!{\text{ a }}\!\!]\!\!{\text{ set }}\!\![\!\!{\text{ s }}\!\!]\!\!{\text{ }}\\&\color {blue}\qquad \qquad \qquad \qquad \qquad {\text{ ranked }}\color {black}\left[\color {blue}{\text{by }}\color {black}\left\{{\begin{matrix}\color {blue}{\text{low}}\\\color {blue}{\text{high}}\\\end{matrix}}\color {black}\right\}{\text{ }}Attribut^\right]^{c\color {blue}{\text{ then}}}\\\end{aligned}}$ |
Attribut est le nom de l’attribut de rangement des entités pouvant appartenir à l’ensemble de type ranked, et high (low) précise que ce sont les fortes (faibles) valeurs de cet attribut qui auront priorité.
Exemples :
# Simscript III/Dictionnaire des instructions/DEFINE ... TO MEAN

Cet énoncé permet au programmeur de remplacer un nom, un nombre ou un symbole spécial par une chaîne de caractères de son choix. La substitution a lieu à la compilation. Elle affecte tout le programme si le define ... to mean est placé dans le preamble ou seulement le(s) routine(s) où elle apparaît sinon.
Le define ... to mean est utile pour des raisons "esthétiques", soit surtout pour s’affranchir d’un codage en appelant les choses par leur nom sans risquer d’erreurs.
| Syntaxe : | |
| | $\color {blue}{\text{define }}\color {black}\left\{{\begin{aligned}&nom\\&nombre\\&symbole{\text{ }}sp{\acute {e}}cial\\\end{aligned}}\right\}\color {blue}{\text{ to mean }}\color {black}Valeur{\text{ }}\!\!\_\!\!{\text{ }}{\grave {A}}{\text{ }}\!\!\_\!\!{\text{ }}Subtituer$ |
Exemples :
Si l’on veut remplacer plusieurs lignes par un mot, il faut utiliser l’énoncé "substitute".
# Simscript III/Dictionnaire des instructions/DEFINE ... ARRAYS

Lénoncé define ... arrayspermet de définir le type et la dimension des tableaux globaux (dans le preamble) ou locaux (dans une routine).
| Syntaxe : | |
| | $\color {blue}{\text{define }}\color {black}nom{\text{-}}tableau^{c}\color {blue}{\text{ as }}\!\![\!\!{\text{ a }}\!\![\!\!{\text{ s }}\!\!]\!\!{\text{ }}\!\!\,]\!\!{\text{ }}\color {black}k{\text{-}}\left[\color {blue}{\text{dimensional}}\right]{\text{ }}\left\{\color {black}{\begin{matrix}\color {blue}{\text{integer}}\\\color {blue}{\text{real}}\\\color {blue}{\text{double}}\\\color {blue}{\text{text}}\\\color {blue}{\text{alpha}}\\\color {blue}{\text{pointer}}\\\color {blue}{\text{subprogram}}\\Nom\_Classe\color {blue}{\text{ reference}}\\\end{matrix}}\color {black}\right\}{\text{ }}\left[{\begin{matrix}\color {blue}{\text{saved}}\\\color {blue}{\text{recursive}}\\\end{matrix}}\color {black}\right]\color {blue}{\text{array}}\left[{\text{s}}\right]$ |
Tous les tableaux sont automatiquement initialisés à zéro (ou champ nul pour les types text et alpha). Une variable locale peut être déclarée saved ou recursive. La première fois qu’un sous-programme est appelé, les variables locales saved ou recursive ont lavaleur zéro. Une variable locale recursive (qui est la valeur implicite) a la valeur zéro à chaque appel du sous-programme. Une variable locale saved conserve la valeur qu’elle avait lors du dernier appel au sous-programme. preamble
# Simscript III/Dictionnaire des instructions/DEFINE ... CONSTANTS

Lénoncé define ... constants permet de définir des constantes nommées ou des constantes énumérées. Ces constantes peuvent être importées dun sous-système, ce qui nest pas le cas des constantes définies avec lénoncé define ... to mean. Si aucune Valeurnest spécifiée, la valeur affectée est la valeur de la constante précédente 1, sil sagit de la première constante, la valeur affectée est 1.La Valeur peut-être un entier signé, une chaîne de caractères, ou une constante sous-programme.
| Syntaxe : | |
| | $\color {blue}{\text{define }}\color {black}Nom\_Constante=Valeur\left[,Nom\_Constante=Valeur\right]^{c}\color {blue}{\text{ as constant}}\left[{\text{s}}\right]$ |
Exemple :
# Simscript III/Dictionnaire des instructions/DEFINE ... FUNCTION

Cet énoncé, placé dans le preamble, définit les sous-programmes de type function, en précisant le type du résultat fourni et le nombre darguments dentrée. Elle est obligatoire.
| Syntaxe : | |
| | ${\begin{aligned}&\color {blue}{\text{define }}\color {black}nom^{c}\color {blue}{\text{ as }}\color {black}\left[\color {blue}{\text{a}}\color {black}\right]\left[{\begin{matrix}\color {blue}{\text{fortran}}\\\color {blue}{\text{nonsimscript}}\\\end{matrix}}\color {black}\right]\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{pointer}}\\{\begin{aligned}&\color {blue}{\text{ subprogram}}\\&\color {black}Nom\_Classe\color {blue}{\text{ reference}}\\\end{aligned}}\\\end{matrix}}\color {black}\right]\color {blue}{\text{function}}\left[{\text{s}}\color {black}\right]\\&\left[\left\{{\begin{matrix}\color {blue}{\text{with}}\\\color {blue}{\text{given}}\\\color {blue}{\text{yielding}}\\\end{matrix}}\color {black}\right\}\color {blue}\left[\color {black}n{\text{ }}\left[k{\text{-}}\color {blue}{\text{dim}}\color {black}\left[\color {blue}{\text{sional}}\color {black}\right]\right]\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{pointer}}\\{\begin{aligned}&\color {blue}{\text{ subprogram}}\\&Nom\_Classe\color {blue}{\text{ reference}}\\\end{aligned}}\\\end{matrix}}\color {black}\right]{\text{ }}\color {blue}\left\{{\begin{matrix}{\text{argument}}\left[{\text{s}}\right]\\{\text{value}}\left[{\text{s}}\right]\\\end{matrix}}\right\}\right]^{c}\color {black}\right]{\text{ }}\\\end{aligned}}$ |
Exemples :
# Simscript III/Dictionnaire des instructions/DEFINE ... METHOD

Cet énoncé, placé dans le preamble, définit les sous-programmes de type method, et process methodet permet davoir un contrôle sur le nombre de paramètres entre le callou le scheduleet la méthode ou la méthode processus. Lorsque la méthode retourne une valeur comme une fonction, le mode de cette méthode doit être spécifié. Cet énoncé nest pas obligatoire lorsquil sagit dune méthode routine ou dune méthode processus, mais est obligatoire lorsquil sagit dune méthode fonction.
| Syntaxe : | |
| | ${\begin{aligned}&\color {blue}{\text{define }}\color {black}nom^{c}{\text{ as }}\left[\color {blue}{\text{a}}\color {black}\right]\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{pointer}}\\{\begin{aligned}&\color {blue}{\text{ subprogram}}\\&Nom\_Classe\color {blue}{\text{ reference}}\\\end{aligned}}\\\end{matrix}}\color {black}\right]\color {blue}\left[{\text{process}}\right]{\text{ method}}[s]\\&\color {black}\left[\left\{{\begin{matrix}\color {blue}{\text{with}}\\\color {blue}{\text{given}}\\\color {blue}{\text{yielding}}\\\end{matrix}}\color {black}\right\}n{\text{ }}\left[k{\text{-}}\color {blue}{\text{dim}}\color {black}\left[\color {blue}{\text{ensional}}\color {black}\right]\right]\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{pointer}}\\\color {blue}{\begin{aligned}&{\text{ subprogram}}\\&\color {black}Nom\_Classe\color {blue}{\text{ reference}}\\\end{aligned}}\\\end{matrix}}\color {black}\right]{\text{ }}\color {blue}\left\{{\begin{matrix}{\text{argument}}\left[{\text{s}}\right]\\{\text{value}}\left[{\text{s}}\right]\\\end{matrix}}\right\}\color {black}\right]\\\end{aligned}}$ |
Exemple :
# Ville30/Information et promotion

La concertation est la première démarche d'information envers les citoyens. Mais celle-ci ne représente qu'une faible part de la population concernée par le projet et il convient d’actionner d'autres outils pour impliquer, au plus tôt, un plus grand nombre de personnes. Aussitôt prise la décision politique, une stratégie de communication doit être pensée et mise en place. Celle-ci doit définir les publics cibles, les messages et les supports à utiliser.
En premier lieu, il faut convaincre les habitants du quartier concerné. C'est avant tout pour améliorer leur qualité de vie qu'est venu le besoin de modérer les vitesses. La population doit vouloir – ou mieux encore demander – la zone 30. Puis, il faut amener les automobilistes et commerçants à y réfléchir.
Ces opérations auront plus de succès si les habitants du quartier y participent activement. Les riverains s'approprieront dès lors ce projet bénéfique pour leurs quartiers. Ainsi, un groupe de bénévoles enthousiasmé par le projet, devrait être mis en place pour diffuser des tracts dans les boîtes-aux-lettres, placer des affiches aux fenêtres, en parler aux voisins, organiser des actions de sensibilisation, etc.
# Ville30/Intégration de la zone 30 dans un plan global de mobilité

La zone 30 ne pourra être que plus réussie si elle est intégrée dans une réflexion globale sur la mobilité de la ville ou d'un quartier. Beaucoup de communes ont défini un Plan Communal de Mobilité (PCM) ces dernières années, mais les révisions coûtent cher et le demander peut être, pour cette raison, défavorable à la prise en compte des zones 30 par les autorités. Or la zone 30 peut apporter beaucoup avec, on le verra, très peu de moyens. On peut donc imaginer que ce soit la première mesure à mettre en place qui incitera par après à une réflexion plus globale sur les déplacements. On peut aussi profiter de l'arrivée d'un nouvel élément, tel l'installation d'une grande entreprise, la construction d'un tramway, la mise en œuvre ou la révision d'un PCM pour demander à ce que des mesures soient prises pour apaiser la circulation.
# Ville30/Les espaces partagés

En partant du triple constat que 1) les règles ne sont pas toujours connues des usagers, que 2) la signalisation est peu respectée, et que 3) la séparation des flux n'améliore pas réellement la sécurité routière, le concept d'espace partagé propose d'alléger, voire de supprimer la signalisation, et de concevoir l'espace de plein pied. Le code de la route reste d'application : priorité de droite, limitation de vitesse et priorité des piétons, mais les usagers sont responsabilisés. On compte sur le civisme pour que malgré l'absence de signalisation lui donnant la priorité, le conducteur soit plus prudent et entre en contact visuel avec les autres usagers. À l'approche d'un carrefour traditionnel, par exemple, l'usager fait confiance au feu de signalisation et traverse sans réfléchir si ce dernier l'y autorise, accélérant même de peur de ne pouvoir passer à temps. Sans signal, l'usager responsable réduit fortement sa vitesse et applique la règle de la priorité de droite.
Parmi les pionniers du concept, l'ingénieur urbaniste hollandais Hans Monderman. Il expérimente, dans les années 1970, les espaces partagés dans le village de Makkinga et dans la ville de Drachten aux Pays-Bas. À l'entrée de ces espaces, un panneau indique l'absence de signalisation : Verkeersbordvrij. Plus de quarante ans plus tard, les applications de ce concept sont peu nombreuses. Elles sont toutefois ancrées dans le code de la route suisse où la « zone de rencontre » tient plus de l'espace partagé que de notre équivalent belge et où l'instauration de zone 30 interdit l’aménagement de passages pour piétons.
Selon Niels Antoine1, les espaces partagés ne peuvent s'appliquer que dans des lieux où les différents types d'usagers sont représentés de manière suffisante pour se partager l'espace. La présence des modes doux ralentit les véhicules motorisés.
« L'excès de règlements nous cache la chose la plus importante : l'attention. Nous perdons notre capacité à maintenir un comportement socialement responsable. », MONDERMANN Hans (« "The many rules strip us of the most important thing: the ability to be considerate. We're losing our capacity for socially responsible behavior. » Der Spiegel, 16/11/06)
# Ville30/Glossaire des abréviations

* ATE : Association Transports et Environnement (Suisse)
* CERTU : Centre d'Études sur les Réseaux, les Transports, l'Urbanisme et les constructions publiques (France)
* CPDT : Conférence Permanente du Développement Territorial (Wallonie)
* GIEC : Groupe d'experts Intergouvernemental sur l'Évolution du Climat
* GRACQ : Groupe de Recherche et d'Action des Cyclistes Quotidiens (Wallonie & Bruxelles)
* IBGE : Institut Bruxellois pour la Gestion de l'Environnement
* IBSR : Institut Belge de la Sécurité Routière
* ICE : Initiative Citoyenne Européenne
* IEW : Inter-Environnement Wallonie
* IEB : Inter-Environnement Bruxelles
* ISA : Intelligent Speed Adaptation (adaptation intelligente de la vitesse)
* NHTSA: National Highway Traffic Safety Administration (Administration nationale de la sécurité du trafic sur les voies rapides aux États-Unis)
* OMS : Organisation Mondiale de la Santé
* OSR : Observatoire de la Sécurité Routière (Belgique)
* PCM : Plan Communal de Mobilité
* SRWT : Société Régionale Wallonne du Transport (Wallonie)
# S'initier au Zend Framework/Mini blog/Contrôleur
## Le contrôleur

Les actions par défauts seront la lecture d'une nouvelle, son ajout, sa modification, son effacement et le listing de toutes les nouvelles. Ses différentes actions sont accessibles directement par l'URL :
    http://www.monblog.zf/controlleur/action
Par défaut, c'est le routeur qui réécrit l'URI et redirige vers la bonne action.
    nouvelle/create redirigera vers la bonne page PHP de création de nouvelle. De même le passage de paramètre s'écrit par défaut de la forme :
    nouvelle/read/id/1
Le paramêtre « id » avec la valeur « 1 » sera accessible dans l'action. Idem pour :
    nouvelle/delete/id/123
    nouvelle/update/id/4321
Nous verrons ensuite plus comment personnaliser le routeur pour obtenir une URI plus lisible pour l'humain et les moteurs de recherche.
    nouvelle/read/id/1 peut être réécrite en nouvelle/titre/Premiere_nouvelle
Ce nouvel URI a un titre écrit en français et en clair, c'est pour cela que l'optimisation pour les moteurs de recherche (SEO) peut se faire en parallèle du développement des fonctionnalités d'un site. Avant d'écrire ses actions, la première chose est de charger l'objet dès que l'on instancie le contrôleur. Cela se fait dans le « constructeur » init.
NB: init aulieu de __construct permet de ne pas appeler le constructeur de la super-classe. Sans redéfinition, init est appelée sans aucun paramètre comme dernière instruction de __construct. Notre objet devrait s’appeler Nouvelle comme l'objet qu'il manipule mais il aurait fallu voir immédiatement l'objet Router pour la réécriture d'URL. Ainsi pour des raisons pratiques, le contrôleur s’appellera Index, car dans le monde du web, l'index est la première chose affichée d'un site.
L'objet est chargé et accessible depuis la variable privée de classe $_nouvelles.

## Les actions Create Read Update Delete (CRUD)

Nous avons un contrôleur par objet, l'application va dans un premier temps créer les actions de base : c'est à dire : ajouter (create), lire (read), mettre-à-jour (update), effacer (delete) Cette liste d'action est plus connues sous l'acronyme CRUD (Create, Read, Update, Delete) auxquelles on peut rajouter : lister tous les objets (index) mettre à jour une liste d'objets (updatelist) effacer une liste d'objets (deletelist) Ces actions couvre le spectre des actions possible pour un objet mais l'application se devra aussi de pouvoir ajouter une nouvelle action ou d'invalider une existante. L'ordre d'explication des actions sera croissante en difficulté :
* read : lire un enregistrement et l'afficher
* create : formulaire d'ajout d'enregistrement
* index : liste de tous les enregistrements
* update : formulaire de modification
* delete : effacement d'un objet
# S'initier au Zend Framework/Mini blog/Modèle
## Création dans la base de données

Exemple de création de base de données MySQL :
Exemple de création de table :
La table étant créée il nous faut configurer l'application pour pouvoir y accéder.
Voici, un exemple de configuration pour accéder à la base, il est aussi possible de centraliser la configuration dans un fichier séparé (XML, ini, etc).
Placez les paramètres de connexion dans la fonction initDb de l'initialiseur du bootstrap (application/Bootstrap.php) :
Il est aussi possible de spécifier les paramètres de base de données dans le fichier application/configs/application.ini

## Le modèle

ZF a choisit par défaut la correspondance objet-SQL vers Table(voir aussi : ORM), c'est-à-dire qu'une table SQL est un objet Zend_Db_Table, une ligne est Zend_Db_Table_Row et plusieurs lignes Zend_Db_Table_Rowset.
Pour ajouter cet objet placez-vous dans le dossier application/default/models, puis créez le fichier Nouvelle.php - n'oubliez pas la majuscule - (avec Zend Studio cela se fait par : bouton-droit New/Zend Framework Item/Zend Table) :
Le framework va interroger la base pour connaître les méta-informations associées à la table et de ce fait il va trouver 'id' dans le cas de cette table mais on peut la spécifier avec $_primary.
Le modèle créé, nous allons le charger dans son contrôleur et ensuite des actions.
Sinon, on peut créer un modèle à l'aide de Zend Tool à la racine du projet faire
Ce qui va créer un fichier Nouvelle.php placé dans l’arborescence application\models\DbTable contenant :

## Notes

* ↑ A single instance that handles the business logic for all rows in a database table or view. http://martinfowler.com/eaaCatalog/tableModule.html
# S'initier au boulier en 10 leçons

Le boulier est un instrument de calcul très ancien qui a été utilisé dans toutes les régions du monde. Actuellement, on le rencontre encore en Asie (Chine et Japon principalement) et même en Europe de l'Est, où il constitue toujours une méthode de calcul très courante, notamment sur les marchés. Une version différente dite boulier russe, avec 10 boules par ligne, a cours notamment en Russie, Iran, Turquie.
L'objectif de ce livre n'est pas de présenter l'histoire du boulier, mais son utilisation : vous trouverez ici une initiation au boulier en 10 leçons. La première partie est inspirée du livre Le Boulier - Initiation de Jean Cumin et Jean Hossenlopp.
Il existe plusieurs méthodes pour utiliser un boulier. Les méthodes présentées ici sont un mélange de méthodes personnelles et de méthodes très classiques, souvent japonaises (les méthodes japonaises sont réputées plus efficaces), et s'appliquent aux modèles chinois ou japonais, il faudra les adapter pour le boulier russe.
* Illustration d'un boulier représentant le nombre 6302715408
* Boulier d'école à 10 boules par chiffres représentant le nombre 37 925
* Boulier russe (Schoty)
* Boulier élémentaire de baby-foot pour le marquage du score de 0 à 10

## Sommaire

* Une version imprimable du livre « S'initier au boulier en 10 leçons » est disponible. (voir/ modifier)
* Une version PDF de ce livre est disponible.
* Introduction
* Bases et vocabulaire
* Les 8 techniques de l’addition
* Les 8 techniques de la soustraction
* Exercices
* La multiplication
* Exercices
* La division
* Exercices
* La base hexadécimale avec le boulier chinois
* Exercices
# S'initier au Zend Framework/Mini blog/URL
## Réécriture d'URL, SEO, Zend_Router.

Actuellement l'URI de lecture d'une nouvelle est en anglais et a des paramètres numériques :
    index/read/id/1
Ceci a deux inconvénients, un moteur de recherche va par exemple mal indexer nos articles pour des recherches en français. L'utilisation d'id numériques est pratique mais n'a aucune valeur pour l'indexation. Les sites avec un rang d'indexation élevé ont des URI explicites comme :
    index/fr/article/L'automne-est-de-retour
La première étape est de tester une redirection d'URL plus simple comme :
    index/read/id/714 vers : nouvelle/714
Dans le Bootstrap il suffira d'ajouter (ou dans Initializer.php : initRoutes ) :
Avec $this->_front l'instance du Zend_Controller_Front. Qui est normalement déjà disponible si l'on a créé un projet ZF avec un EDI, sinon il faut rajouter :
La nouvelle route étant créé nous pouvons modifier la vue de l'index pour rajouter un lien vers une nouvelle lorsque l'on clique sur le titre. Dans le nœud tbody de la vue 'application/default/views/scripts/index/index.phtml' :
L'aide de vue (View Helper) Url construit automatiquement l'URL réécrite, on peut ainsi changer ad nauseam.
La deuxième étape est de modifier cette route pour y intégrer le titre de la nouvelle. Le titre de la nouvelle est une phrase, il nous faut détecter cette phrase à l'aide de l'expression régulière.
# S'initier au Zend Framework/Présentation
## Zend Framework

Le cadriciel PHP Zend (alias ZF) est né en 2005 à l'initiative de la société Zend. C'est une collection de composants modulaires comme les autres bibliothèques comme PEAR, Zend Framework y ajoute les bonnes pratiques issues de l'expérience et de la théorie de l'informatique objet (design pattern) utilisés de longue date avec Java.
Des sociétés participent directement au développement comme Adobe comme pour le composant Zend_Amf qui est un connecteur entre des applications flash et le serveur en PHP.
La société Zend affiche ouvertement l'objectif de concurrencer Java et .Net dans le domaine des serveurs d'applications et des systèmes d'information. La licence BSD du framework autorise ainsi l'utilisation dans des applications propriétaires.

## Pourquoi l'utiliser

La version 5 de PHP facilite l'industrialisation des développements, ainsi des solutions ont vu le jour comme CakePHP, Symfony, Zend Framework, etc.
Un framework ou cadriciel et parfois « cadre de travail » est un ensemble de bibliothèques et d'outils pour aider le développeur mais en plus il impose une rigueur sur la façon de programmer justifiée par les bonnes pratiques et les conventions communes. Un framework est un gage de qualité car un code cohérent sera plus aisé à maintenir ou à faire évoluer.
Pour le développeur les bibliothèques fondamentales sont fournies et comme les connecteurs à la base de données, la persistance et la validation de données, la génération de formulaires, etc.
Ainsi, Zend Framework est basé sur MVC et livré avec de nombreux composants (email, services web, l'I18N, etc).

## Notes

* ↑ http://framework.zend.com
# S'initier au Zend Framework/Sommaire

* Présentation
* Concepts
* Prise en main et installation
* Exemple : un mini blog
** Le modèle
** Le contrôleur de nouvelles
** Les actions
** Réécriture d'URL
* Conclusion