{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "f6f99115",
   "metadata": {},
   "source": [
    "\n",
    "# Aide à l'utilisation de Sagemath et Jupyter\n",
    "\n",
    "Cette page a pour but de vous présenter différentes méthodes d'utilisation de **python, jupyter et sagemath,** sur les machines de l'université ou en dehors.\n",
    "\n",
    "```{warning}\n",
    "En raison de récents changements de configuration, il est possible que certaines méthodes ne fonctionnent pas, ou pas immédiatement. N'hésitez pas à faire appel à l'enseignant si besoin.\n",
    "```\n",
    "\n",
    "## Premier lancement"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bfc83987",
   "metadata": {},
   "source": [
    "### Avec l'application Jupyter (conseillé)\n",
    "\n",
    "À l'université, vous pouvez utiliser l'application web **Jupyter**. Cette application vous permet de travailler dans une interface graphique générée par votre *navigateur* (par exemple, Firefox). Il faut cependant comprendre que vous n'avez pas nécessairement besoin de connexion Internet pour cela : tout fonctionne localement sur votre machine."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cd5e54c5",
   "metadata": {},
   "source": [
    "```{admonition} Procédure d'ouverture de Jupyter à l'université.\n",
    "Pour ouvrir **Jupyter**, allez dans le menu `Activités` (en haut à gauche), puis entrez `sagemath`. Dans un premier temps, un terminal s'ouvre et affiche quelques lignes... c'est normal ! \n",
    "\n",
    "```\n",
    "```{warning}\n",
    "**Attention :** il ne faut pas fermer le terminal qui vient de s'ouvrir, sous peine d'interrompre Jupyter !\n",
    "```\n",
    "\n",
    "Dans un second temps, une page de navigateur devrait s'ouvrir, semblable à celle vue pour la démonstration en cours.\n",
    "\n",
    "**Première configuration les machines de l'université.** Si votre navigateur ne se lance pas, alors il y a un problème de configuration. Pour le régler, ouvrez un **terminal** et entrez très précisément la commande suivante (vous pouvez copier la commande en passant votre souris sur la cellule, puis en cliquant sur l'icône à droite de la cellule).\n",
    "\n",
    "```\n",
    "../jlavauzelle/configuration-jupyter.sh\n",
    "```\n",
    "\n",
    "Puis, recommencez la **procédure d'ouverture de Jupyter** donnée plus haut."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dbde3391",
   "metadata": {},
   "source": [
    "Si le navigateur ne s'ouvre toujours pas, appelez l'enseignant. Ensuite, une solution temporaire peut consister à copier le lien qui commence par\n",
    "```\n",
    "http://127.0.0.1:8888/lab?token=..........\n",
    "```\n",
    "dans la barre d'adresse d'un navigateur (par exemple, Firefox). Vous pouvez également faire un `Ctrl+clic` sur le lien. Un onglet d'un navigateur devrait maintenant s'ouvrir.\n",
    "\n",
    "**Problème d'affichage de certains graphiques.** Par ailleurs, il est possible qu'une mise à jour récente de la bibliothèque `numpy` sur les machines de l'université provoque des erreurs d'exécution. Pour régler ce problème, vous devez faire un \"downgrade\" (anti-mise à jour) de cette bibliothèque. La procédure est la suivante : entrez dans le terminal la commande\n",
    "```\n",
    "pip install numpy==1.22.0\n",
    "```\n",
    "Cette procédure va donc **désinstaller** la version de numpy actuellement installée sur vos machines. Pour la **ré-installer** si besoin (exemple : dans un autre cours), faites :\n",
    "```\n",
    "pip install numpy==2.0.0\n",
    "```\n",
    "\n",
    "<!-- ### Avec Jupyter-lab -->\n",
    "\n",
    "<!-- Il existe un autre environnement de travail, appelé **Jupyter-lab**, qui demande une installation plus conséquente. La séquence de configurations suivante ne fonctionne pas sur toutes les sessions, vous pouvez la tester si vous le souhaitez, mais n'y passez pas trop de temps.  -->"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1c6462fd",
   "metadata": {},
   "source": [
    "<!-- Ouvrez un terminal et effectuez successivement les commandes suivantes : -->\n",
    "<!-- ``` -->\n",
    "<!-- xdg-mime default firefox-esr.desktop text/html -->\n",
    "<!-- pip install jupyterlab -->\n",
    "<!-- ``` -->\n",
    "<!-- Vous pouvez copier ces commandes en cliquant en haut à droite de la cellule. **Jupyter-lab** s'installe, vous devriez apercevoir des barres de chargement. Attendez une minute ou deux (parfois plus suivant la connexion à Internet). -->\n",
    "\n",
    "<!-- Une fois que c'est terminé, tapez la commande -->\n",
    "<!-- ``` -->\n",
    "<!-- jupyter-lab & -->\n",
    "<!-- ``` -->\n",
    "<!-- afin de lancer l'environnement de travail **Jupyter-lab**. Il ne faudra ensuite pas fermer ce terminal (sous peine d'interrompre **Jupyter-lab**). -->\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "eb774444",
   "metadata": {},
   "source": [
    "### Avec Cocalc\n",
    "\n",
    "Vous pouvez enfin adopter une solution en ligne, hébergée sur le site web [https://cocalc.com](https://cocalc.com). Cette solution a plusieurs **inconvénients** :\n",
    "* elle nécessite une connexion internet et la création d'un compte sur le site web,\n",
    "* les calculs sont souvent plus lents, et les calculs très lourds sont impossibles,\n",
    "* vous n'avez pas la main sur la machine distante, donc vous ne pouvez pas installer des fonctionnalités suppélmentaires.\n",
    "\n",
    "En revanche les **avantages** sont que vous pouvez travailler hors de l'université, et que vous n'êtes pas dépendant du bon fonctionnement et de la bonne configuration des machines...\n",
    "\n",
    "Pour utiliser python, jupyter et Sagemath dans [https://cocalc.com](cocalc.com), suivez les étapes suivantes :\n",
    "1. Créer un compte, puis se connecter.\n",
    "2. Créer un nouveau projet, puis s'y déplacer.\n",
    "3. Lancer le projet (bouton **start project**) puis attendre quelques secondes.\n",
    "4. Vous pouvez maintenant effectuer de nombreuses tâches, notamment lancer l'environnement de travail **Jupyter-lab**. Le bouton est situé vers la droite ; au bout de quelques secondes une fenêtre popup demande à être ouverte ; acceptez. Vous devriez alors vous trouver sur un environnement de travail similaire à celui vu en cours. \n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d921dac8",
   "metadata": {},
   "source": [
    "## Création d'un premier notebook\n",
    "\n",
    "Dans **Jupyter** (et dans **Jupyter-lab**), vous avez à votre disposition un explorateur de fichiers. Utilisez cet explorateur pour créer un dossier `CalculFormel` afin d'organiser votre espace de travail (vous pouvez également le créer ailleurs si vous le souhaitez). Puis, déplacez-vous dans ce dossier.\n",
    "\n",
    "Vous pouvez maintenant créer un *notebook* via le bouton **Nouveau** situé en haut à droite, puis en cliquant sur **Python3**. de la section **Notebook**. Un nouvel onglet s'ouvre avec un fichier ne contenant qu'une cellule. C'est votre premier notebook python ! Remarquez que le fichier est également apparu dans l'explorateur de fichiers (si vous revenez sur l'onglet précédent).\n",
    "\n",
    "L'extension d'un notebook python est `.ipynb` (pour *interactive python notebook*). Vous pouvez renommer le fichier (clic-droit, renommer), mais gardez bien l'extension `.ipynb`. \n",
    "\n",
    "Maintenant, essayez d'entrer du code dans la cellule, par exemple `1 + 1`. Puis, exécutez la cellule avec le bouton **Éxécuter** de la barre d'outils. Vous devriez obtenir la sortie attendue `2` sous la cellule exécutée. Il est également possible d'exécuter une ou plusieurs cellules avec le menu **Cellule**, ou en utilisant `Maj+Entrée`."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b7a2914e",
   "metadata": {},
   "source": [
    "Pour créer une nouvelle cellule, vous pouvez utiliser le bouton **+** de la barre d'outils (entre le bouton de sauvegarde et le bouton \"couper\"). Une nouvelle cellule vide apparaît. Vous pouvez une nouvelle fois entrer du code et l'exécuter. "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6116eab4",
   "metadata": {},
   "source": [
    "Enfin, n'oubliez pas de sauvegarder régulièrement votre travail avec le bouton de sauvegarde (il y a une sauvegarde automatique, mais elle n'est pas fréquente).\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c3599a99",
   "metadata": {},
   "source": [
    "## Télécharger et importer un notebook\n",
    "\n",
    "Dans ce cours, vous aurez à\n",
    "1. télécharger des *notebooks d'exercices* présents sur ce livre numérique\n",
    "2. puis les lire et les éditer avec **Jupyter**. \n",
    "\n",
    "Pour l'étape 1, il suffit de cliquer sur le bouton de téléchargement situé en haut à droite de cette page web. Vous avez alors deux choix : **.ipynb** ou **.pdf**. Choisissez **.ipynb**.\n",
    "\n",
    "Suivant la configuation de votre navigateur :\n",
    "* ou bien le fichier sera directement téléchargé dans un dossier Téléchargements,\n",
    "* ou bien vous aurez le choix où déposer ce fichier.\n",
    "\n",
    "Faites ensuite en sorte que le fichier que vous téléchargez se retrouve dans le dossier `CalculFormel` que vous avez créé. Une fois que c'est fait, vous devriez voir dans l'explorateur de fichiers de **Jupyter** un nouveau fichier `aide.ipynb` ; ouvrez-le : vous retrouvez alors le document que vous êtes en train de lire !\n",
    "\n",
    "```{note}\n",
    "Il est préférable configurer votre navigateur pour avoir le second comportement de téléchargement. Pour cela, allez dans les options du navigateur en haut à droite (probablement un symbole avec 3 barres horizontales), puis le menu **Général** et trouvez la section où vous pouvez choisir de \"toujours demander où enregistrer les fichiers\".\n",
    "```"
   ]
  }
 ],
 "metadata": {
  "jupytext": {
   "cell_metadata_filter": "-all",
   "main_language": "python"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
