Les différentes générations de calculatrices et les différentes familles de modèles possèdent des différences dans le Basic, si bien que les programmes peuvent ne pas être compatibles, ce chapitre explique ces incompatibilités.
Le matériel étant sensiblement identique, seul le logiciel de la calculatrice a un impact sur les programmes. On peut reconnaitre une ancienne version à ce qu'il n'a pas d'icone System sur son menu principal. Dans ce menu System on peut connaitre la version de l'OS de sa calculatrice ([VER]).
L'apport le plus notable des versions récentes est la gestion des chaines de caractères qu'on peut invertir, concaténer, changer de casse, décaler… 
Les versions récentes possèdent des fonctions de solveur ([OPTN][NUM]) pour le PGCD, le Modulo… qui peuvent être utiles dans les programmes, mais les anciennes versions ne les reconnaîtront pas et doivent coder ces fonctions eux mêmes dans des sous programmes.
Les symboles disponibles dans l'éditeur ([SYBL]) sont au nombre de 6 ('"~*/#) sur les anciennes versions et il fallait utiliser un ordinateur pour en entrer d'autres absents mais affichables et reconnus (@|&$%…). De même pour écrire en minuscules, impossible sans passer par un ordinateur. Les nouvelles versions rendent le changement de casse trivial et proposent plusieurs centaines de nouveaux symboles ([CHAR]).
Incompatibilité ascendante.
Sur certains points le Basic Casio casse la rétrocompatibilité et certains programmes développés sur d'anciens modèles peuvent ne plus marcher.
Le PxlTest nécessite que la fonction graphique soit initialisée dans le programme ou sous-programme qui l'utilise. Dans les anciennes versions, le programme principal pouvait initialiser l'écran graphique et un sous programme pouvait utiliser PxlTest.

Goélette Cardabela/Référencement automatique

Goélette Cardabela/Référencement semi automatique

Goélette Cardabela/Références/Contenu
Programmation PHP avec Symfony/Évènement

Un est une action pouvant en déclencher d'autres qui l'attendaient, à la manière du , via un "".
Commande.
Pour lister les évènements et écouteurs d'un projet (avec leurs priorités) :
 php bin/console debug:event-dispatcher
Ex :
"console.terminate" event
 Order Callable Priority
 #1 Symfony\Component\Console\EventListener\ErrorListener::onConsoleTerminate() -128
 #2 Symfony\Bridge\Monolog\Handler\ConsoleHandler::onTerminate() -255
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.
class AddExtraDataEvent
 /** @var string */
 private $userGroup;
 public function __construct(string $userGroup)
 $this->userGroup = $userGroup;
 public function getUserGroup(): string
 return $this->usernGroup;
 public function setUserGroup(string $usernGroup): AddExtraDataEvent
 $this->userGroup = $userGroup;
 return $this;
Une fois la classe crée, il faut choisir où l'instancier :
use Symfony\Component\EventDispatcher\EventDispatcher;
$this->eventDispatcher->dispatch(new AddExtraDataEvent($userGroup));
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.
services:
 App\EventListener\MyViewListener:
 tags:
class MyViewListener
 public function onKernelException(ExceptionEvent $event)
 echo "Triggered!";
Subscriber.
Un souscripteur doit forcément implémenter "EventSubscriberInterface" :
class ViewSubscriber implements EventSubscriberInterface
 public function getSubscribedEvents(): array
 return [
 KernelEvents::VIEW => ['onView']
 public function onView(ViewEvent $event): void
 echo "Triggered!";
Autre exemple où on veut embarquer dans un évènement maison une information de ses souscripteurs :
class ClientXUserSubscriber implements EventSubscriberInterface
 ...
 public static function getSubscribedEvents(): array
 return [
 ClientXEvent::class => 'getProperty',
 public function getProperty(ClientXUserEvent $event): void
 if ('X' === $this->user->getCompany()) {
 $event->setProperty('XX');
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 :
$this->getEventDispatcher()->dispatch('mon_service');

Goélette Cardabela/Références/Annexe
Goelette Cardabela/Sandbox/Annexion et indexation des wiki-livres/Introduction/sclti

Goélette Cardabela/Références/Préambule
Ce manuel propose des solutions aux utilisateurs de Wikilivres qui désirent imprimer ou faire imprimer des livres avec un contrôle des directives d'impression et la production des sous-pages « "Annexe et index" ».
Pourquoi créer une sous-page « "Annexe et index" » avec le nom des auteurs et les licences d’utilisation du texte et des images ? Cela a sans doute peu d'intérêt pour les lectures à l'écran, et les livres imprimés pour soi-même, le lecteur ayant accès aux origines des textes et des images par le réseau Internet.
Si un Wikilivre doit être imprimé et diffusé il est nécessaire de mettre le nom des contributeurs à l'honneur et de préciser les droits de copie.
PediaPress imprime des livres de qualité avec l'aide du "compilateur" et ajoute les pages "annexe" et "index" très bien faites.Cependant, la structure des livres est imposée, pas toujours de façon heureuse : lors de l’édition des livres il n’est pas possible de corriger la disposition et la taille des images; de plus, l’index lexical est incontrôlable.Le "compilateur" en libre service qui créait un PDF n’est pas disponible actuellement. L’"annexe" et l’"index" sont difficiles à produire, il faut chercher dans l’historique de chaque article, recopier manuellement l’origine des images, les noms des auteurs, les licences d’utilisation.
Faire imprimer les livres par un imprimeur local est une solution. Les imprimeurs peuvent assembler les feuilles et produire des livres de qualité, cependant il faut leur fournir tout le "matériel" au format PDF et "l’éditeur du livre" (vous, moi) doit intégrer l’"annexe" et l’"index" dans ce PDF.

Programmation PHP avec Symfony/Composant