Goélette Cardabela/Références/Compléments

Les canevas des référencements manuels.
Les canevas sont proposés pour créer la "documentation" d'un "article" ou d'un "Wiki"-"livre".
Utiliser le canevas sclti.
Le "Canevas_sclti" est proposé pour créer la sous page sclti des articles simples, ou composé de peu de sous-pages et de peu d'images. La création simplifiée est manuelle. La création est semi-automatique avec les fichiers de commandes
La procédure consiste à "transclure" la sous-page sclti en bas-de-page de l'article : 
Remarque : 
Description de la page ou de la section créée (édition du 12 décembre 2018) :
Lignes 1 à 6 du canevas :
Utiliser le canevas SCLTI.
Le "Canevas_SCLTI" permet de créer une section ou une sous-page SCLTI non imprimable d'un livre qui devra être retranscrit en Annexe imprimable. 
Exemples de sous-pages :
Exemple de sous-page de travail SCLTI : Goélette_Cardabela/Collection_des_livrets_techniques_de_la_goélette_Cardabela/SCLTI
Exemple de sous-page finale Annexe obtenue : Goélette_Cardabela/Collection_des_livrets_techniques_de_la_goélette_Cardabela/Annexe
 Il faut disposer de la liste des articles du livre. 
La procédure consiste à "transclure" la sous-page SCLTI en bas-de-page du livre ou de sa version imprimable : 
Remarque : 
Il est possible de créer directement la sous-page Annexe
Description de la page ou de la section créée :
Lignes 10 à 16 du canevas :
Copier les résultats dans les pages annexes.
"On entend par « pages annexes » : les pages Annexe et Index."
La copie se fait à l'aide de la technique « copier-coller » (Ctrl-c, Ctrl-v).

Livre de cuisine/Gâteau au chocolat rapide

Voici un gâteau au chocolat rapide au .
Programmation PHP/RabbitMQ
 est un logiciel de messages en protocole . Il permet donc à des processus de produire des messages JSON dans des files d'attente pour que d'autres les consomme ensuite.
Installation.
Client PHP.
composer require php-amqplib/php-amqplib
Serveur.
L'installation du serveur est multi-plateforme. Sous Linux :
apt-get install rabbitmq-server
Test de fonctionnement :
telnet localhost 5672
Site de gestion.
Une interface graphique existe pour lire et manipuler les messages manuellement, c'est le "management plugin". Pour l'activer :
/usr/sbin/rabbitmq-plugins enable rabbitmq_management
Test de fonctionnement depuis le serveur :
curl localhost:15672
Depuis le client : http://mon_serveur:15672
On la trouve aussi sur Docker.
Pour trouver le fichier de configuration :
 cat /usr/sbin/rabbitmq-server | grep RABBITMQ_ENV
Connexion.
Les identifiants par défaut de RabbitMQ dépendent des versions. On trouve soit le login / mot de passe "user / password", soit "guest / guest". Pour tester :
curl -i -u guest:guest http://localhost:15672/api/whoami
Si cela ne fonctionne pas, configurer le serveur avec codice_1. Exemple sous Linux :
/usr/sbin/rabbitmqctl add_user userDev mon_mot_de_passe
/usr/sbin/rabbitmqctl set_permissions -p / userDev '.*' '.*' '.*'
/usr/sbin/rabbitmqctl set_user_tags userDev management
/usr/sbin/rabbitmqctl list_users
Connexion PHP.
$connection = new AMQPStreamConnection($host, $port, $login, $password);
$connection->close();
Création de queue et routage.
Pour créer une queue simple prête à recevoir des messages :
 $this->rabbitMqConnection->getChannel()->queue_declare('Wikibooks.Queue1', false, false, false, false);
"Exchange".
Une autre manière de poster des messages est en passant par un "exchange". On en distingue plusieurs types :
Dans cet exemple, on rattache la queue à un "exchange" "Bus" :
 $this->rabbitMqConnection->getChannel()->exchange_declare('Bus', 'fanout', false, true, false);
 $this->rabbitMqConnection->getChannel()->queue_declare('Wikibooks.Queue2', false, true, false, false);
 $this->rabbitMqConnection->getChannel()->queue_bind('Wikibooks.Queue2', 'Bus');
 $this->rabbitMqConnection->getChannel()->queue_declare('Wikibooks.Queue3', false, true, false, false);
 $this->rabbitMqConnection->getChannel()->queue_bind('Wikibooks.Queue3', 'Bus');
Exemple de "topic" : on ne publie pas dans la queue mais dans l’"exchange" qui leur routera ensuite le message.
 $this->rabbitMqConnection->getChannel()->exchange_declare('Topic_bus', 'topic', false, false, false);
 $this->rabbitMqConnection->getChannel()->queue_declare('Wikibooks.Queue4', false, true, false, false);
 $this->rabbitMqConnection->getChannel()->queue_bind('Wikibooks.Queue4', 'Topic_bus');
 $this->rabbitMqConnection->getChannel()->queue_declare('Wikibooks.Queue5', false, true, false, false);
 $this->rabbitMqConnection->getChannel()->queue_bind('Wikibooks.Queue5', 'Topic_bus');
QoS.
Pour demander à RabbitMQ de ne pas surcharger les consommateurs d'une queue en leur répartissant les messages que s'ils ont terminé de traiter le précédent :
 $this->rabbitMqConnection->getChannel()->basic_qos(null, 1, null);
DLX.
Le mode DLX ("") permet de transférer un message d'une queue dans un autre après un certain temps.
Production.
 $amqpMessage = new AMQPMessage(json_encode('Hello World!'),
 ['delivery_mode' => AMQPMessage::DELIVERY_MODE_PERSISTENT]
 $this->rabbitMqConnection->getChannel()->basic_publish($amqpMessage, 'Bus', 'Wikibooks.Queue1');
Consommation.
Par défaut on consomme un seul message de la queue. Pour tous les lire un par un, utiliser basic_ack() après basic_consume().
 $this->rabbitMqConnection->getChannel()->basic_consume(
 'Wikibooks.Queue1',
 gethostname() . '#' . rand(1, 9999),
 false,
 false,
 false,
 false,
 [$this, 'consumeCallback']
 while (count($this->rabbitMqConnection->getChannel()->callbacks)) {
 $this->rabbitMqConnection->getChannel()->wait();
 public function consumeCallback(?AMQPMessage $msg)
 if (empty($msg)) {
 return null;
 $msg->delivery_info['channel']->basic_ack($msg->delivery_info['delivery_tag']);
 var_dump(json_decode($msg->getBody()));
En mode "topic", on peut remplacer 'Wikibooks.Queue1' par 'Wikibooks.*' pour récupérer toutes les queues.

Programmation PHP/PHPWord
Introduction.
Cette bibliothèque open source permet de lire et d'écrire des documents de .
Il faut la télécharger sur https://github.com/PHPOffice/PHPWord.