Maxima Online 2 est une interface web au logiciel Maxima. 
Il s'agit de la version française et modifiée du logiciel Yamwi
Pour cette raison, elle s'appelle yamwifr

Elle permet d'exécuter des commandes Maxima en ligne, et d'en obtenir les résultats 
sur la page html générée, et cela en plusieurs formats de sortie.
L'export PDF et LaTeX est proposé par le logiciel

Yamwifr (Maxima Online 2) est basée sur le code du logiciel Yamwi, 
écrit par Leo Butler (basé sur README_en de Mario Rodríguez Riotorto)
https://github.com/leo-butler/yamwi/
EMAIL: leo.butler@university.ca (university = UManitoba)

Site pour Yamwifr (Maxima Online 2) : maxima-french-doc.fr
Contact : Michel Gosse : michel.gosse@free.fr

Configuration
* Linux avec Apache et php (>5) pour avoir un serveur web fonctionnel
* le logiciel Maxima
* dvips (from LaTeX)
* texi2dvi (from texinfo)
* convert (from ImageMagick)
* Gnuplot
* python

* Fonctionnalités
- Interface simple et intuitive pour interagir avec Maxima.
- Exécution de commandes Maxima directement depuis le navigateur.
- Affichage des résultats sous forme de texte ou de graphiques.
- Possibilité de sauvegarder et de partager des sessions de travail.
- Possibilité de générer et d'exporter un fichier PDF
- Possibilité de générer un fichier LaTeX des commandes et des résultats (incluant les graphiques), que l'on télécharge au format zip.

* Installation
1. Téléchargez les fichiers de Yamwifr (Maxima Online 2) : yamwifr-V3.5.zip) depuis le site maxima-french-doc.fr
2. Dézipper le fichier et placez le dossier yamwifr ainsi que tous ses sous dossiers et fichiers dans le répertoire du serveur web (par exemple, /var/www/html/).
3. Assurez-vous que Maxima est installé et accessible depuis le serveur (commande maxima)
le chemin vers Maxima est défini dans le fichier yamwi-conf.php
4. Configurez les permissions nécessaires pour que yamfr soit accessible :
      accès en lecture/execution sur tout le dossier yamwifr
      (par exemple sudo chmod -R a+rx /var/www/html/yamwifr)
      et accès complet sur le sous-dossier tmp
      (par exemple sudo chmod -R a+rwx /var/www/html/yamwifr/tmp)

TRES IMPORTANT
5) aller dans ce dossier décomprimé
cd /yamwifr

VERIFIER que les deux fichiers de ce dossier mac2pdf_cli.py et mac2tex_export soient bien exécutables sinon faire
chmod +x mac2pdf_cli.py
chmod +x mac2tex_export.py

ADAPTER LA LIGNE 24 DU FICHIER generer_pdf.php au chemin
du fichier mac2pdf_cli.py :
$pythonScript = '/home/mgosse2/yamwifr2/mac2pdf_cli.py';
Faire de même pour la ligne 24 du fichier exporter_latex.php en adaptant le chemin
vers mac2tex_export.py (qui se trouve dans le dossier yamwifr)
$pythonScript = '/home/mgosse2/yamwifr/mac2tex_export.py';

6. Accédez à l'interface via votre navigateur en entrant l'URL correspondante :
http://localhost/yamwifr/
(à adapter en fonction de l'installation).

INSTALLATION ALTERNATIVE UNIQUEMENT EN PHP DANS LE REPERTOIRE PERSONNEL
1) Télécharger et dézipper le fichier yamwifr-V3.5.zip
2) Copier le dossier obtenu dans un répertoire personnel nommé yamwifr
3) Configurer les chemins et droits :
TRES IMPORTANT
aller dans ce dossier décomprimé
cd /yamwifr

VERIFIER que les deux fichiers de ce dossier mac2pdf_cli.py et mac2tex_export soient bien exécutables sinon faire
chmod +x mac2pdf_cli.py
chmod +x mac2tex_export.py

ADAPTER LA LIGNE 24 DU FICHIER generer_pdf.php au chemin
du fichier mac2pdf_cli.py :
$pythonScript = '/home/mgosse2/yamwifr2/mac2pdf_cli.py'; (à modifier)
Faire de même pour la ligne 24 du fichier exporter_latex.php en adaptant le chemin
vers mac2tex_export.py (qui se trouve dans le dossier yamwifr)
$pythonScript = '/home/mgosse2/yamwifr/mac2tex_export.py'; (à modifier)

Se déplacer dans le dossier (cd yamwifr)
saisir la commande : php -S localhost:8080
ouvrir son navigateur à l'adresse localhost:8080

* Utilisation
- Ouvrez votre navigateur et accédez à l'URL où yamwifr est installé.
- Utilisez la zone de texte pour entrer vos commandes Maxima.
- Cliquez sur "Exécuter" pour voir les résultats.
- Vous pouvez sauvegarder vos sessions pour une utilisation ultérieure.

* Mises à jour du logiciel
Si une mise à jour est disponible, il suffit de cliquer sur le lien 
Vérifier les mises à jour
et de télécharger les fichiers de la nouvelle version.
Ces fichiers sont simplement à copier dans le dossier de Maxima Online 2
sur le serveur web (en vérifiant les droits sur ces fichiers).
Il est conseillé de supprimer les fichiers précédents.

* Exemples
Voici quelques exemples de commandes que vous pouvez essayer :
1. Intégration : integrate(x^2, x);
2. Résolution d'équations : solve(x^2 - 4 = 0, x);
3. Tracé de graphiques : plot2d(sin(x), [x, -%pi, %pi]);

* Licence
Yamwi est distribué sous licence GPL. Pour plus d'informations, consultez le fichier LICENSE.
Il en est de même pour Maxima Online 2

* Contact
Pour toute question ou suggestion sur Yamwi, vous pouvez contacter l'auteur de Yamwi 
à l'adresse suivante :
leo.butler@university.ca (remplacez university par UManitoba).
Pour Yamwifr (Maxima Online 2), le contact est michel.gosse@free.fr


Le fichier INSTALL provient du script d'installation de Yamwi et peut
être utilisé avec une adaptation

 Execute the =INSTALL= script; it sets up directories and files with
   the neccessary permissions. It also creates temporary folder =tmp=,
   where working files will be placed:
   #+begin_src shell :exports code
   sh yamwi/INSTALL
   #+end_src

Compléments techniques (issus du coeur du logiciel Yamwi)

Near the beginning of file =yamwi.php=, there is a configuration section:

- =$mode= ::  0, 1, 2, 3 or 4. When 0, Yamwi output is rendered in ASCII Art style;
    when 1, results are rendered in binary files containing TeX output (be sure
    programs texi2dvi, dvips and convert are installed); when 2, output is 
    rendered in enhanced ASCII-Art style, which is easier to read than mode 0;
    when 3, output is returned as a syntactical Maxima expression; when 4, 
    results are based on the nice looking MathJax (http://www.mathjax.org)
    system. Defaults to 2. Response times are shorter in ASCII Art modes.

- =$max_file_time= ::  Yamwi creates some files which are stored in folder
    'tmp'. Every time a user asks for a calculation, Yamwi removes those
    files older, in minutes, than the quantitity indicated by variable 
    '$max_inactive_time', which defaults to 1 minute.

- =$max_process_time= ::  maximum execution time allowed for every Maxima
    process. Default value is 120 sec.

- =$max_num_processes= ::  maximum number of Maxima processes simultaneously
     running on the server. Default value is 30.

* User Packages
Yamwi gives access to all standard Maxima packages. Custom packages can be placed in the =packages=. The file extension should be =.mac= if the package is written in Maxima code, or =.lisp= if it is written in Common Lisp. Yamwi user can =load=
these packages. See the help file =help_en.html=.

* Security
Take care when using this program. To prevent server damages, some
barriers have been designed:

- There is a list of so called *dangerous words*, which prevents the execution of user code when one of 
these terms is detected in the input. See the global variable =$dangerous_words=.
- The number of running Maxima processes can be limited. See the configuration variable =$max_num_processes=.
- The execution time of Maxima processes can be limited. See the configuration variable =$max_process_time=.

Even with these filters, Yamwi does not guarantee 100% server
security.

* License
This project is distributed under the terms of the GPL (General Public
License). For more information, read file LICENSE.

Version 3.8
Ajout des boutons Importer fichier wxm et Importer fichier wxmx
Ajout du lien vers la bibliothèque jszip (décompression d'un wxmx)
La génération de pdf accepte $ ou ; en fin de commande
Une commande sur plusieurs lignes est reconnue et interprétée correctement
La génération pdf accepte toute les commandes graphiques wxplot ou wxdraw
tout comme l'éditeur (un script enlève les wx devant, qui sont spécifiques à wxmaxima)

