Skip to content

Latest commit

 

History

History
892 lines (699 loc) · 66.8 KB

slides.md

File metadata and controls

892 lines (699 loc) · 66.8 KB
theme background title info author highlighter drawings transition mdc aspectRatio htmlAttrs
default
images/cover.png
Bücher mit Code online publizieren
false
Gert-Ludwig Ingold
shiki
persist
slide-left
true
16/9
dir lang
ltr
de

Bücher mit Code online publizieren

Gert-Ludwig Ingold

<style> h1{ color: white; } </style>

layout: image-right image: images/jbgallery.png

Anwendungsszenarien

Mein Anwendungsszenario

  • Manuskript zu einem Programmierkurs frei zugänglich machen
  • Präsentation auf einer responsiven Webseite
  • Code wird zum Aufbau der Inhalte der Webseite ausgeführt und die Resultate werden integriert

Allgemeinere Szenarien

  • allgemeine Lehrmaterialen mit Code zum Erzeugen von Abbildungen oder ganz ohne Code
  • wissenschaftliche Arbeiten, z.B. mit Datenanalyse

layout: image-left image: images/sphinx.png

Sphinx

www.sphinx-doc.org

  • in erster Linie zur Erzeugung von Dokumentation
  • auch schöne PDF-Ausgabe
  • Markup mit reStructuredText
  • zahlreiche Erweiterungsmöglichkeiten
  • Sprache einstellbar

  • standardmäßig keine Codeausführung mit Einbettung des Ergebnisses
  • Webseiten nicht responsiv

Beispiel links: gertingold.github.io/tools4scicomp


layout: image-left image: images/jupyterbook.png

Jupyter Book

jupyterbook.org | executablebooks.org

  • basiert unter anderem auf Sphinx
  • Sprache über die Sphinx-Konfiguration festlegbar
    Listen sind uns beispielsweise bereits in
    {numref}`forloop` begegnet, wo wir die
  • Ergebnis der Ausführung von Code lässt sich einbetten
  • responsive Webseite

Beispiel links: gertingold.github.io/epriprog


Ein Gesamtüberblick



layout: image-left image: images/ho.png

Jupyter-Notebooks

jupyter.org

  • Integration von Code, auch mit interaktiver Kontrolle, sowie Text, Formeln und Multimediaelementen
  • Anbindung an Python-, R-, Julia-Kernel und viele mehr
  • Einsatz in Lehre, Datenanalyse und vielem mehr

  • Möchte man in der Lehre mit vorgefertigtem Code arbeiten oder eher Code entwickeln?
  • Markdown, aber MyST Markdown nur mit einer Extension

Speicherung des Jupyter-Notebooks im JSON-Format

{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Harmonischer Oszillator"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Zeitunabhängige Schrödingergleichung\n",
    "\n",
    "$$-\\frac{\\hbar^2}{2m}\\frac{\\text{d}^2}{\\text{d}x^2}\\psi(x)+\\frac{m}{2}\\omega^2x^2\\psi(x) = E\\psi(x)$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from math import factorial, pi, sqrt\n",
    "\n",
    "import numpy as np\n",
    "import numpy.linalg as LA\n",
    "from scipy.special import eval_hermite\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "import ipywidgets as widgets\n",
    "from ipywidgets import interact"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def ho_numerical(n, delta):\n",
    "    u = delta*np.arange(-n, n+1)\n",
    "    hamilton = -(np.eye(2*n+1, k=1) - 2*np.eye(2*n+1) + np.eye(2*n+1, k=-1))/delta**2\n",
    "    hamilton = hamilton + np.diag(u**2/4)\n",
    "    eigvals, eigvecs = LA.eigh(hamilton)\n",
    "    return u, eigvals, eigvecs\n",
    "\n",
    "n = 1000\n",
    "delta = 0.01\n",
    "u, eigvals, eigvecs = ho_numerical(n, delta)\n",
    "plt.plot(u, u**2/4, '#3f3f3f')\n",
    "plt.ylim(0, 10.2)\n",
    "for n in range(10):\n",
    "    psi = 7*eigvecs[:, n]/LA.norm(eigvecs[:, n])\n",
    "    plt.plot(u, eigvals[n]+psi)\n",
    "plt.xlabel('$u = x/x_0$', fontsize=15)\n",
    "plt.ylabel(r'$\\epsilon = E/\\hbar\\omega$', fontsize=15)\n",
    "plt.yticks(np.arange(0.5, 10, 1))\n",
    "plt.grid(axis='y')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}

  • Versionskontrolle kann Schwierigkeiten bereiten
  • Verwendung von nbstripout-Filter

MyST Markdown-Dateien als Basis



CommonMark

commonmark.org

Variante 1 Variante 2 Ausgabe
# Überschrift 1 Überschrift 1
=============

Überschrift 1

## Überschrift 2 Überschrift 2
-------------

Überschrift 2

##### Überschrift 5
Überschrift 5
*kursiv* _kursiv_ kursiv
**fett** __fett__ fett
`inline` inline

CommonMark

Variante 1 Variante 2 Ausgabe
* Eintrag 1
* Eintrag 2
- Eintrag 1
- Eintrag 2
  • Eintrag 1
  • Eintrag 2
1. Eintrag 1
2. Eintrag 2
1) Eintrag 1
2) Eintrag 2
  1. Eintrag 1
  2. Eintrag 2
--- ***
> Blockzitat
Blockzitat

CommonMark

Variante 1 Variante 2 Ausgabe
[Link](http://a.org) [Link][1]

[1]: http://a.org
Link
![Bild](images/bild.png) ![Bild][1]

[1]: images/bild.png
```
a = 3
print(a**2)
```
␣␣␣␣a = 3
␣␣␣␣print(a**2)
a = 3
print(a**2)

MyST Markdown anhand von Beispielen

MyST Markdown erweitert CommonMark    jupyterbook.org/en/stable/content/

    es kann auch Fälle geben, in denen man selbst programmieren muss, zum Beispiel wenn man eine Exponentialfunktion
    auf einen Waschbären anwenden möchte ({numref}`fig:exponential_raccoon`).
    ```{figure} images/einleitung/exponential_raccoon.png
    ---
    width: 10cm
    name: fig:exponential_raccoon
    ---
    Originalbild eines Waschbärs (links) und nach Anwendung einer Exponentialfunktion (rechts).
    ```


MyST Markdown anhand von Beispielen

    ````{margin}
    ```{admonition} Tipp
    :class: tip
    Eine größere Darstellung von Abbildung können Sie durch Klicken auf das entsprechende Bild erhalten.
    ```
    ````
    
    Das Beispiel der Digitalkamera schlägt die Brücke vom Alltag ins Labor. Im Grunde genommen ist eine Digitalkamera
    nichts anderes als ein Messgerät, das


MyST Markdown anhand von Beispielen

```markdown ```{admonition} Frage Was ergibt `-2*4+3**2`? Was ergibt `6**4//2`? ``` ```

```markdown ```{admonition} Hinweis :class: tip Seit Python 3.9 lässt sich die kleinste darstellbare Zahl, also `5e-324` mit Hilfe von `math.ulp(0)` erhalten. ``` ```

```markdown ````{admonition} Weiterführendes (rechts aufklappen) :class: toggle Nach der Kompilierung des obigen C-Programms entsteht als Zwischenprodukt ein so genanntes Assembler-Programm, das schon sehr maschinennah ist und von einem Assembler in den von einem Computer les- und ausführbaren Maschinencode umgewandelt wird. ```{code-block} .file "bsp_exp.c" .text ⋮ ```

MyST Markdown anhand von Beispielen

- Python besitzt eine umfangreiche Standardbibliothek (»Python comes with batteries included«) und das
  wissenschaftliche Rechnen wird durch eine Vielzahl freier Programmbibliotheken, wie {program}`NumPy/SciPy`, das wir
  im Kapitel {ref}`scipy` besprechen werden, unterstützt.
- Python hat sich in den letzten Jahren zu einer sehr populären Sprache entwickelt, unter anderem im Bereich der
  wissenschaftlichen Datenanalyse.

Bei den beiden physikalischen Beobachtungen, die in den letzten Jahren die Aufmerksamkeit einer breiten Öffentlichkeit
erregten, nämlich die Beobachtung von Gravitationswellen [^prd93] und die Aufnahme des Abbilds eines schwarzen
⋮
[^prd93]: B. P. Abbott  et al. , [Phys. Rev. D  93 , 122003 (2016)](https://doi.org/10.1103/PhysRevD.93.122003). Das
Analysepaket PyCBC basiert auf Python und auch das Analysepaket GstLAL enthält einige Pythonskripte.


MyST Markdown anhand von Beispielen

Im ersten Beispiel soll der Zusammenhang zwischen der Winkelgeschwindigkeit $\omega$
und der Beschleunigung $a$ bei einer Rotationsbewegung untersucht werden. Gemäß
der Mechanik erfährt ein Objekt im Abstand $r$ von der Drehachse die Beschleunigung

$$a = r\omega^2\,.$$

Zur experimentellen Untersuchung wird ein Smartphone wie in


MyST Markdown anhand von Beispielen

```markdown ```{code-block} python --- linenos: true emphasize-lines: 18,21-25,29 --- import random
def get_result(n_self, n_other):
    result = (n_self - n_other) % 3
    if result == 0:
        return 'Das Spiel endete unentschieden.'
elif result == 1:
    return 'Du hast gewonnen.'
return 'Du hast leider verloren.'

objekte = ['Stein', 'Papier', 'Schere']
info_text = ('\n[0] Stein\n'
             '[1] Papier\n'
             '[2] Schere\n\n'
             'Gib eine Zahl zwischen 0 und 2 ein oder -1 zum Beenden: ')

while True:
    n_benutzer = int(input(info_text))
     ⋮
</div>
<div>
<img src="images/linenos.png" style="width: 100%; margin: auto">
</div>
</div>

---

# MyST Markdown anhand von Beispielen

```markdown
    Möchte man aus den Werten zweier Variablen eine komplexe Zahl konstruieren, geht dies mit der zweiten der gerade
    genannten Methoden sehr einfach
    ```{code-cell} python
    x = 1
    y = 2
    z1 = complex(x, y)
    z2 = complex(x, -y)
    z1/z2
    ```
    
    Falls man die Funktion {func}`complex` nicht verwenden möchte, muss man beachten, dass die folgenden beiden Wege

MyST Markdown anhand von Beispielen

    ```{code-cell} python
    ---
    tags: [raises-exception]
    ---
    x = 18
    y = 9
    z = x+yj
    ```

MyST Markdown anhand von Beispielen

auch im nächsten Abschnitt noch einmal eine Rolle spielen, wenn wir die Ausgabe von Daten in eine Datei besprechen.

<video width="640" height="360" controls>
  <source src="https://gertingold.github.io/resources/flush.webm" type="video/webm">
Ihr Browser unterstützt nicht das video-Tag.
</video>

(readfile)=
## Lesen von Dateien

_conf.yml
title         : Einführung in Prinzipien der Programmierung
author        : Gert-Ludwig Ingold
copyright     : "CC-BY"
logo          : ""

only_build_toc_files: true

repository:
  url: https//github.com/gertingold/epriprog
  path_to_book: epriprog

html:
  use_repository_button: false
  use_issues_button: false
  use_edit_page_button: false
  home_page_in_navbar: false

latex:
  latex_documents:
    targetname: epriprog.tex
  latex_elements:
    papersize: a4paper

sphinx: 
  config: 
    language: de
    numfig_format:
      section: 'Kapitel %s'

launch_buttons:
  binderhub_url: "https://mybinder.org" 
_toc.yml
root: intro
options:
  numbered: true
chapters:
  - file: einleitung
  - file: vorschau
  - file: datentypen
  - file: kontrollstrukturen
  - file: funktionen
  - file: sequenzen
  - file: einausgabe
  - file: scipy
  - file: objektorientiert
  - file: zahlensysteme
  - file: floats
  - file: unicode

layout: image image: images/epriprog.png



GitHub

github.org

  • Plattform für Software-Versionskontrolle und Projektzusammenarbeit
  • freier persönlicher Account

github.io

  • Webseiten unter username.github.io unter Verwendung eines öffentlichen GitHub-Repositories mit diesem Namen
  • Erzeugung des Inhalts aus anderen GitHub-Repositories mit Hilfe von GitHub-Actions in einem Zweig gh-pages

  • statische Webseiten, also z.B. keine PHP-Skripten
  • Beschränkung der Seitengröße und Bandbreite, nicht für kommerziellen Gebrauch

layout: gli-two-cols-header

GitHub Actions

::left::

.github/workflows/deploy.yml

name: deploy

on:
  push:
    branches:
      - master

jobs:
  build-and-deploy-book:
    runs-on: ubuntu-latest
    steps:
    - name: checkout merge commit
      uses: actions/checkout@v4

    - name: set up Python
      uses: actions/setup-python@v5
      with:
        python-version: '3.11'

    - name: install dependencies
      run: |
        conda install -y python=3.11
        conda env update --file environment.yml --name base
        echo $CONDA/bin >> $GITHUB_PATH

    - name: build the book
      run: |
        jupyter-book build epriprog

    - name: deploy book's HTML to gh-pages branch
      uses: peaceiris/actions-gh-pages@v4
      with:
        github_token: ${{ secrets.GITHUB_TOKEN }}
        publish_dir: epriprog/_build/html

::right::

environment.yml

name: epriprog
channels:
  - default
  - conda-forge
dependencies:
  - python==3.11
  - scipy
  - matplotlib
  - jupyter-book

mystmd

mystmd.org

  • neben Jupyter Book zweites (und jüngeres) Hauptprojekt von executable{books}
  • Javascript statt Python, schneller und mehr Funktionalität
  • Überlapp mit Jupyter Book
    • Jupyter Book Quellen verwendbar
    • Intersphinx für Verlinkung mit Sphinx-Dokumentationen
  • vor allem Templates für Journale (derzeit 2 docx, 18 tex, 2 typst) sowie 2 Templates für Webseiten (article und book)
  • Möglichkeit für interaktive Inhalte

  • Lokalisierung??

Ein paar Eindrücke von mystmd

```markdown Dies ist ein MyST-Beispiel für den LinuxInfoTag 2024, in dem es allgemein um geht. ```


Beispielcode, siehe
github.com/gertingold/lit2024/tree/main/myst-example


Ein paar Eindrücke von mystmd


```markdown Beim LinuxInfoTag 2017 habe ich ein [Bild](#exponential_raccoon) gezeigt. Man kann auf das Bild auch mit seiner Nummer verweisen: [Abb. %s](#exponential_raccoon), aber in der Bildüberschrift steht trotzdem "Figure 1". ```

Ein paar Eindrücke von mystmd

01-einleitung.md

Im Hauptteil steht eine berühmte [Gleichung](#einstein),
die die Gleichungsnummer {numref}`einstein` besitzt.

02-hauptteil.md

Dies ist eine Gleichung:
```{math}
:label: einstein
E = mc^2
```

Ein paar Eindrücke von mystmd

Hier wurde die erste Beobachtung von Gravitationswellen
publiziert: @doi:10.1103/PhysRevD.93.122003

  • Am Ende wird automatisch eine Referenzenliste erzeugt.

Ein paar Eindrücke von mystmd

Intersphinx-Link zu einer Seite der Jupyter Book
Dokumentation: [](myst:jupyterbook#publish/gh-pages)

Dieses Diagramm ist mit mermaid erstellt und stammt aus
der MyST-Dokumentation:

```{mermaid}
flowchart LR
  A[Jupyter Notebook] --> C
  B[MyST Markdown] --> C
  C(mystmd) --> D{AST}
  D <--> E[LaTeX]
  E --> F[PDF]
  D --> G[Word]
  D --> H[React]
  D --> I[HTML]
  D <--> J[JATS]
```

Nützliche Links






Fragen?