{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "skip" }, "tags": [] }, "source": [ "# Presentatie" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "notes" }, "tags": [] }, "source": [ "**Als je in Basthon op de meeste rechtse knop hierboven klikt (in de vorm van een histogram), kom je in de RISE presentatie-mode.**" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "skip" }, "tags": [] }, "source": [ "De onderstaande cel alleen uitvoeren in Jupyter Lab (niet in Basthon)." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "slideshow": { "slide_type": "skip" }, "tags": [] }, "outputs": [], "source": [ "%LOAD data/top2000.db" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Databases met Jupyter Notebook\n", "\n", "**i&i conferentie april 2023**\n", "\n", "*Eelco Dijkstra*" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## Inhoud\n", "\n", "* wat is Jupyter Notebook?\n", "* hoe gebruik je dit voor (Database) onderwijs?\n", "* hoe pas je een Notebook aan?\n", "* het Jupyter ecosysteem\n", "* keuzethema's in Jupyter" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Wat is Jupyter Notebook?\n", "\n", "* een Notebook bestaat uit code-cellen en tekst-cellen\n", " * tekst-cel: uitleg (met figuren en formules)\n", " * code-cel: uitvoerbaar\n", "* je kunt het notebook aanpassen\n", " * experimenteren met de code" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## Figuur\n", "\n", "![Basthon notebook](images/basthon-notebook.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Jupyter Notebook in het onderwijs\n", "\n", "* uitleg in het notebook\n", "* met interactieve voorbeelden\n", " * scaffolding: zo (in)compleet als nodig \n", "* (en later, opdrachten en toetsvragen)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Interactieve presentaties met Jupyter Notebook" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "scrolled": true, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
toppositietitelartiestjaar
20151ImagineJohn Lennon1971
20152Bohemian RhapsodyQueen1975
20153Hotel CaliforniaEagles1977
20154Mag Ik Dan Bij JouClaudia De Breij2011
20155Stairway To HeavenLed Zeppelin1971
" ], "text/plain": [ "+------+---------+--------------------+------------------+------+\n", "| top | positie | titel | artiest | jaar |\n", "+------+---------+--------------------+------------------+------+\n", "| 2015 | 1 | Imagine | John Lennon | 1971 |\n", "+------+---------+--------------------+------------------+------+\n", "| 2015 | 2 | Bohemian Rhapsody | Queen | 1975 |\n", "+------+---------+--------------------+------------------+------+\n", "| 2015 | 3 | Hotel California | Eagles | 1977 |\n", "+------+---------+--------------------+------------------+------+\n", "| 2015 | 4 | Mag Ik Dan Bij Jou | Claudia De Breij | 2011 |\n", "+------+---------+--------------------+------------------+------+\n", "| 2015 | 5 | Stairway To Heaven | Led Zeppelin | 1971 |\n", "+------+---------+--------------------+------------------+------+" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "SELECT *\n", "FROM top2000\n", "LIMIT 5;" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Cellen\n", "\n", "* cel: selecteren via cursor (single-click), pijltjes\n", "* cel: uitvoeren met \"pijltje\" bovenin, of Shift-Enter\n", "* cel: double-click: \"edit-modus\"" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Kernel\n", "\n", "* **kernel**: voert **code-cellen** uit\n", "* kun je herstarten (enz.) via **kernel-menu**" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "scrolled": true, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
toppositietitelartiestjaar
20161Bohemian RhapsodyQueen1975
20171Bohemian RhapsodyQueen1975
20181Bohemian RhapsodyQueen1975
20191Bohemian RhapsodyQueen1975
20152Bohemian RhapsodyQueen1975
" ], "text/plain": [ "+------+---------+-------------------+---------+------+\n", "| top | positie | titel | artiest | jaar |\n", "+------+---------+-------------------+---------+------+\n", "| 2016 | 1 | Bohemian Rhapsody | Queen | 1975 |\n", "+------+---------+-------------------+---------+------+\n", "| 2017 | 1 | Bohemian Rhapsody | Queen | 1975 |\n", "+------+---------+-------------------+---------+------+\n", "| 2018 | 1 | Bohemian Rhapsody | Queen | 1975 |\n", "+------+---------+-------------------+---------+------+\n", "| 2019 | 1 | Bohemian Rhapsody | Queen | 1975 |\n", "+------+---------+-------------------+---------+------+\n", "| 2015 | 2 | Bohemian Rhapsody | Queen | 1975 |\n", "+------+---------+-------------------+---------+------+" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "SELECT *\n", "FROM top2000\n", "WHERE artiest = 'Queen'\n", "ORDER BY positie\n", "LIMIT 5;" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Notebook in de browser\n", "\n", "* Jupyter-aanpak:\n", " * UI in de browser\n", " * kernels (en data) in de server\n", "* Basthon-versie:\n", " * kernels (en data) in de browser\n", " * \"statische website\"" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## Voordelen Basthon\n", "\n", "* Basthon: \"zandbak\" voor Python (en andere kernels)\n", "* geen server nodig (alleen statische website)\n", "* privacy (geen tracking)\n", "* veilig - voor computer en voor server/data\n", " * zandbak in de browser: veilig voor computer\n", " * data in zandbak: veilig voor server-data\n", " * veilig experimenteren met code en data" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Zelf aan de slag\n", "\n", "Database-notebook:\n", "\n", "* [selectie en projectie](https://jupyter.infvo.nl/books/eelco/notebook/?kernel=sql&from=ieni2023/top2000-selectie.ipynb&module=ieni2023/top2000.db)\n", "* [groeperen en samenvatten](https://jupyter.infvo.nl/books/eelco/notebook/?kernel=sql&from=ieni2023/top2000-samenvatten.ipynb&module=ieni2023/top2000.db)\n", "* [combineren van tabellen](https://jupyter.infvo.nl/books/eelco/notebook/?kernel=sql&from=ieni2023/bibliotheek-a.ipynb&module=ieni2023/bibliotheek.db)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Notebook aanpassen\n", "\n", "* cel editen: double-click (via Shift-Enter weer geformatteerd)\n", "* cel toevoegen: \"+\" in menu (en onderaan automatisch)\n", "* cel verplaatsen: pijltjes in menu (en copy/paste)\n", "* cel type aanpassen: menu Code/Markdown (of Esc-Y / Esc-M)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Zelf aan de slag\n", "\n", "* voeg zelf een opdracht toe\n", "* na aanpassing: downloaden via \"Bestand\" -> Bewaar (of \"floppy\")\n", "* uploaden: via \"Bestand\" -> Open\n", "* downloaden van database\n", " * via code-cel met `.backup` (binair) of `.dump` (SQL)\n", "* uploaden van database (via \"Bestand\" -> Open)\n", "\n", "(helaas: naam nog niet aan te passen...)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Publiceren van notebook enz.\n", "\n", "* online cursus, periode mei-juni\n", "* publiceren van Jupyter Notebooks\n", "* aanpassen van Jupyter Book - lesmateriaal\n", "* gebruik van versiebeheer (git, GitHub)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Jupyter ecosysteem\n", "\n", "* Jupyter Notebook: UI (browser), kernels (server)\n", " * hosting nodig - (o.a. Jupyter Hub)\n", "* Jupyter Lab: UI met meerdere notebooks, Markdown\n", " * (idem)\n", "* Jupyter Book: *bundelen* van notebooks tot \"boek\"\n", " * online \"boek\": statische website\n", " * o.a. voor lesmateriaal\n", " * uitvoerbaar via server (e.g. MyBinder)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Ontwikkelingen\n", "\n", "* kernel van server naar browser\n", " * Basthon (https://basthon.fr)\n", " * Jupyter Lite (https://jupyter.org/try-jupyter/lab/index.html)\n", " * https://jupyterlite.readthedocs.io/en/latest/_static/lab/index.html\n", "* publiceren met Jupyter Book, MyST\n", " * https://executablebooks.org/en/latest/gallery/\n", " * https://curvenote.com" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## INF keuzethema's in Jupyter\n", "\n", "* INF keuzethema's: open leermaterialen\n", "* Jupyter Book als voorkeurs-formaat\n", " * met extensies voor opdrachten en toetsvragen\n", "* Jupyter Book in combinatie met git (GitHub): versiebeheer\n", "\n", "*Online cursus mei-juni over gebruik en aanpassen*" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## Databases-teams: meld je aan\n", "\n", "* thema-team Databases\n", " * organiseren van het materiaal\n", " * voorlichting, vragen (forum)\n", " * (klein) onderhoud\n", "* gebruikersgroep Databases\n", " * uitwisselen van ervaring\n", " * feedback op materiaal\n", " * vragen" ] }, { "cell_type": "markdown", "metadata": {}, "source": [] } ], "metadata": { "celltoolbar": "Slideshow", "kernelspec": { "display_name": "xsqlite", "language": "sqlite", "name": "xsqlite" }, "language_info": { "codemirror_mode": "sql", "file_extension": "", "mimetype": "", "name": "sql", "version": "3.33.0" } }, "nbformat": 4, "nbformat_minor": 4 }