upgrade to 0.8; added Opinion-section
This commit is contained in:
parent
52c70b39e3
commit
b00878e020
@ -2,9 +2,9 @@
|
||||
title: About me
|
||||
---
|
||||
|
||||
# Stefan Dresselhaus
|
||||
# Drezil
|
||||
|
||||
<img align="right" style='border:1px solid #000000; float:right; margin-left:20px' height='300px' src="/About/DresselhausStefan_klein2.jpg"/>
|
||||
<img class="border border-solid w32 rounded-xl lg:rounded-3xl lg:w64 float-right" style=" border-color: rgb(217 70 239);" src="/About/avatar_neu.png"/>
|
||||
|
||||
## Work
|
||||
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 87 KiB |
BIN
content/About/avatar_neu.png
Normal file
BIN
content/About/avatar_neu.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 170 KiB |
@ -11,6 +11,11 @@ Die meisten Services haben offensichtliche Anforderungen (Schnittstellen nach
|
||||
draußen, Schnittstellen intern, ...). Diese kann man immer sehr gut in einem
|
||||
`Request -> Response`-Model erfassen.
|
||||
|
||||
Um die Anforderungen und Möglichkeiten des jeweiligen Services sauber zu
|
||||
erfassen und automatisiert zu prüfen, dummy-implementationen zu bekommen und
|
||||
vieles andere mehr, empfiehlt es sich den #[[OpenAPI|openapi-generator]] zu
|
||||
nutzen.
|
||||
|
||||
Diese Definition läuft über openapi-v3 und kann z.b. mit Echtzeit-Vorschau im
|
||||
http://editor.swagger.io/ erspielen. Per Default ist der noch auf openapi-v2
|
||||
(aka swagger), kann aber auch v3.
|
||||
@ -19,7 +24,7 @@ Nach der Definition, was man am Ende haben möchte, muss man sich entscheiden, i
|
||||
welcher Sprache man weiter entwickelt. Ich empfehle aus verschiedenen Gründen
|
||||
primär 2 Sprachen: Python-Microservices (weil die ML-Libraries sehr gut sind,
|
||||
allerdings Änderungen meist schwer sind und der Code wenig robust - meist nur 1
|
||||
API-Endpunkt pro service) und Haskell (stabilität, performace, leicht zu ändern,
|
||||
API-Endpunkt pro service) und Haskell (Stabilität, Performace, leicht zu ändern,
|
||||
gut anzupassen).
|
||||
|
||||
Im folgenden wird (aus offensichtlichen Gründen) nur auf das Haskell-Projekt eingegangen.
|
||||
@ -28,15 +33,15 @@ Im folgenden wird (aus offensichtlichen Gründen) nur auf das Haskell-Projekt ei
|
||||
|
||||
### Erstellen eines neuen Projektes
|
||||
|
||||
Zunächst erstellen wir in normales Haskell-Projekt ohne funktionalität & firlefanz:
|
||||
Zunächst erstellen wir in normales Haskell-Projekt ohne Funktionalität & Firlefanz:
|
||||
|
||||
```bash
|
||||
stack new myservice
|
||||
```
|
||||
|
||||
Dies erstellt ein neues Verzeichnis und das generelle scaffolding.
|
||||
Nach einer kurzen anpassung der stack.yaml (resolver auf unserer setzen;
|
||||
aktuell: lts-17.4) fügen wir am Ende der Datei
|
||||
Nach einer kurzen Anpassung der `stack.yaml` (resolver auf unserer setzen;
|
||||
aktuell: `lts-17.4`) fügen wir am Ende der Datei
|
||||
|
||||
```yaml
|
||||
allow-newer: true
|
||||
@ -51,7 +56,7 @@ das git mittels `git init; git add .; git commit -m "initial scaffold"`
|
||||
### Generierung der API
|
||||
|
||||
Da die API immer wieder neu generiert werden kann (und sollte!) liegt sich in
|
||||
einem unterverzeichnis des Haputprojektes.
|
||||
einem unterverzeichnis des Hauptprojektes.
|
||||
|
||||
Initial ist es das einfachste ein leeres temporäres Verzeichnis woanders zu
|
||||
erstellen, die `api-doc.yml` hinein kopieren und folgendes ausführen:
|
||||
@ -61,29 +66,29 @@ openapi-generator generate -g haskell -o . -i api-doc.yml
|
||||
```
|
||||
|
||||
Dieses erstellt einem dann eine komplette library inkl. Datentypen.
|
||||
Wichtig: Der Name in der api-doc sollte vom Namen des Services (oben myservice)
|
||||
Wichtig: Der Name in der `api-doc` sollte vom Namen des Services (oben `myservice`)
|
||||
abweichen - entweder in Casing oder im Namen direkt. Suffixe wie API schneidet
|
||||
der Generator hier leider ab.
|
||||
(Wieso das ganze? Es entstehen nachher 2 libraries, foo & fooAPI. Da der
|
||||
(Wieso das ganze? Es entstehen nachher 2 libraries, `foo` & `fooAPI`. Da der
|
||||
generator das API abschneidet endet man mit foo & foo und der compiler meckert,
|
||||
dass er nicht weiss, welche lib gemeint ist).
|
||||
dass er nicht weiß, welche lib gemeint ist).
|
||||
|
||||
danach: wie gewohnt `git init; git add .; git commit -m "initial"`. Auf dem
|
||||
Server der Wahl (github, gitea, gitlab, ...) nun ein Repository erstellen (am
|
||||
Besten: myserviceAPI - alles auf API endend ist autogeneriert!) und den
|
||||
Anweisungen nach ein remote hinzufügen & pushen.
|
||||
Besten: `myserviceAPI` - nach Konvention ist alles auf API endend autogeneriert!)
|
||||
und den Anweisungen nach ein remote hinzufügen & pushen.
|
||||
|
||||
#### Wieder zurück im Haskell-Service
|
||||
|
||||
In unserem eigentlichen Service müssen wir nun die API einbinden.
|
||||
Dazu erstellen wir ein Verzeichnis `libs` (konvention) und machen ein `git
|
||||
Dazu erstellen wir ein Verzeichnis `libs` (Konvention) und machen ein `git
|
||||
submodule add <repository-url> libs/myserviceAPI`
|
||||
|
||||
Git hat nun die API in das submodul gepackt und wir können das oben erstellte
|
||||
temporäre verzeichnis wieder löschen.
|
||||
temporäre Verzeichnis wieder löschen.
|
||||
|
||||
Anschließend müssen wir stack noch erklären, dass wir die API da nun liegen
|
||||
haben und passen wieder die stack.yaml an, indem wir das Verzeichnis unter
|
||||
haben und passen wieder die `stack.yaml` an, indem wir das Verzeichnis unter
|
||||
packages hinzufügen.
|
||||
|
||||
```yaml
|
||||
@ -92,9 +97,9 @@ packages:
|
||||
- libs/myserviceAPI # <<
|
||||
```
|
||||
|
||||
nun können wir in der `package.yaml` (oder `myservice.cabal`, falls kein hpack
|
||||
verwendet wird) unter den dependencies unsere api hinzufügen (name wie die
|
||||
cabal-datei in libs/myserviceAPI).
|
||||
Nun können wir in der `package.yaml` (oder `myservice.cabal`, falls kein `hpack`
|
||||
verwendet wird) unter den dependencies unsere API hinzufügen (name wie die
|
||||
cabal-Datei in `libs/myserviceAPI`).
|
||||
|
||||
### Einbinden anderer Microservices
|
||||
|
||||
@ -146,7 +151,7 @@ Es gibt 2 wichtige Pfade im Browser:
|
||||
|
||||
Wenn man einen lokalen Webserver startet kann man mittels "s" auch die
|
||||
interaktive Suche öffnen (Suche nach Typen, Funktionen, Signaturen, etc.). In
|
||||
Bash mit python3 geht das z.b. einfach über:
|
||||
Bash mit `python3` geht das z.b. einfach über:
|
||||
|
||||
```bash
|
||||
cd $(stack path --local-doc-root)
|
||||
@ -160,38 +165,41 @@ firefox "http://localhost:8000"
|
||||
|
||||
Generelles Vorgehen:
|
||||
|
||||
- in app/Main.hs:
|
||||
- in `app/Main.hs`:
|
||||
Hier ist quasi immer nur eine Zeile drin: `main = myServiceMain`
|
||||
|
||||
Grund: Applications tauchen nicht im Haddock auf. Also haben wir ein
|
||||
"src"-Modul, welches hier nur geladen & ausgeführt wird.
|
||||
- in src/MyService.hs:
|
||||
- in `src/MyService.hs`:
|
||||
`myServiceMain :: IO ()` definieren
|
||||
|
||||
Für die Main kann man prinzipiell eine Main andere Services copy/pasten. Im
|
||||
folgenden eine Annotierte main-Funktion - zu den einzelnen Vorraussetzungen
|
||||
folgenden eine Annotierte main-Funktion - zu den einzelnen Voraussetzungen
|
||||
kommen wir im Anschluss.
|
||||
|
||||
![[Main.hs#]]
|
||||
|
||||
#### Weitere Instanzen und Definitionen, die der Generator (noch) nicht macht
|
||||
|
||||
In der `Myservice.Types` werden ein paar hilfreiche Typen und Typinstanzen
|
||||
In der `Myservice.Types` werden ein paar hilfreiche Typen und Typ-Instanzen
|
||||
definiert. Im Folgenden geht es dabei um Dinge für:
|
||||
|
||||
- Envy
|
||||
- Laden von \$ENV_VAR in Datentypen
|
||||
- `Envy`
|
||||
- Laden von `$ENV_VAR` in Datentypen
|
||||
- Definitionen für Default-Settings
|
||||
- ServerConfig
|
||||
- `ServerConfig`
|
||||
- Definition der Server-Konfiguration & Benennung der Environment-Variablen
|
||||
- ExtraTypes
|
||||
- `ExtraTypes`
|
||||
- ggf. Paketweite extra-Typen, die der Generator nicht macht, weil sie nicht
|
||||
aus der API kommen (z.B. cache)
|
||||
- Out/BSON-Instanzen
|
||||
- Der API-Generator generiert nur wenige Instanzen automatisch (z.B. Aeson),
|
||||
- `Out`/`BSON`-Instanzen
|
||||
- Der API-Generator generiert nur wenige Instanzen automatisch (z.B. `aeson`),
|
||||
daher werden hier die fehlenden definiert.
|
||||
- BSON: Kommunakation mit MongoDB
|
||||
- Out: pretty-printing im Log
|
||||
- `BSON`: Kommunikation mit `MongoDB`
|
||||
- `Out`: pretty-printing im Log
|
||||
- Nur nötig, wenn man pretty-printing via `Out` statt über Generics wie z.b.
|
||||
`pretty-generic` oder die automatische Show-Instanz via `prerryShow`
|
||||
macht.
|
||||
|
||||
![[MyService_Types.hs#]]
|
||||
|
||||
@ -201,7 +209,7 @@ Den Service implementieren. Einfach ein neues Modul aufmachen (z.B.
|
||||
`MyService.Handler` oder
|
||||
`MyService.DieserEndpunktbereich`/`MyService.JenerEndpunktbereich`) und dort die
|
||||
Funktion implementieren, die man in der `Main.hs` benutzt hat.
|
||||
In dem Handler habt ihr dann keinen Stress mehr mit validierung, networking,
|
||||
In dem Handler habt ihr dann keinen Stress mehr mit Validierung, networking,
|
||||
logging, etc. pp. weil alles in der Main abgehandelt wurde und ihr nur noch den
|
||||
"Happy-Case" implementieren müsst.
|
||||
Beispiel für unseren Handler oben:
|
||||
@ -226,7 +234,7 @@ myApiEndpointV1Post sc calls amqPost log req = do
|
||||
|
||||
Diese dummy-Antwort führt auf, wie gut man die ganzen Sachen mischen kann.
|
||||
|
||||
- Logging in die Dateien/stdout nach config
|
||||
- Logging in die Dateien/`stdout` - je nach Konfiguration
|
||||
- Logging von Statistiken in Kibana
|
||||
- Speichern der Antwort in der MongoDB
|
||||
- Generieren einer Serverantwort und ausliefern dieser über die Schnittstelle
|
||||
@ -235,14 +243,14 @@ Diese dummy-Antwort führt auf, wie gut man die ganzen Sachen mischen kann.
|
||||
|
||||
##### Dateien, die statisch ausgeliefert werden sollen
|
||||
|
||||
Hierzu erstellt man ein Verzeichnis `static/` (konvention; ist im generator so
|
||||
Hierzu erstellt man ein Verzeichnis `static/` (Konvention; ist im generator so
|
||||
generiert, dass das ausgeliefert wird). Packt man hier z.b. eine `index.html`
|
||||
rein, erscheint die, wenn man den Service ansurft.
|
||||
|
||||
##### Wie bekomme ich diese fancy Preview hin?
|
||||
|
||||
Der Editor, der ganz am Anfang zum Einsatz gekommen ist, braucht nur die
|
||||
`api-doc.yml` um diese Ansicht zu erzeugen. Daher empfielt sich hier ein
|
||||
`api-doc.yml` um diese Ansicht zu erzeugen. Daher empfiehlt sich hier ein
|
||||
angepasster Fork davon indem die Pfade in der index.html korrigiert sind. Am
|
||||
einfachsten (und von den meisten services so benutzt): In meiner Implementation
|
||||
liegt dann nach dem starten auf http://localhost:PORT/ui/ und kann direkt dort
|
||||
@ -265,11 +273,11 @@ Was tut das?
|
||||
WIRKLICH alles ist )
|
||||
- `-Wcompat`: Warnungen für Sachen, die in der nächsten Compilerversion kaputt
|
||||
brechen werden & vermieden werden sollten
|
||||
- `--interleaved-output`: stack-log direkt ausgeben & nicht in dateien schreiben
|
||||
- `--interleaved-output`: stack-log direkt ausgeben & nicht in Dateien schreiben
|
||||
und die dann am ende zusammen cat\'en.
|
||||
|
||||
Um pro Datei Warnungen auszuschalten (z.B. weil man ganz sicher weiss, was man
|
||||
tut -.-): `{-# OPTIONS_GHC -Wno-whatsoever #-}` als Pragma in die Datei.
|
||||
tut -.-): `{-# OPTIONS_GHC -Wno-whatsoever #-}` als pragma in die Datei.
|
||||
|
||||
**Idealerweise sollte das Projekt keine Warnungen erzeugen.**
|
||||
|
||||
@ -277,18 +285,18 @@ tut -.-): `{-# OPTIONS_GHC -Wno-whatsoever #-}` als Pragma in die Datei.
|
||||
|
||||
Als Beispiel sei hier ein einfaches Docker-Build mit Jenkins-CI gezeigt, weil
|
||||
ich das aus Gründen rumliegen hatte. Kann man analog in fast alle anderen CI
|
||||
übrsetzen.
|
||||
übersetzen.
|
||||
|
||||
#### Docker
|
||||
|
||||
Die angehängten Scripte gehen von einer Standard-Einrichtung aus (statische
|
||||
sachen in static, 2-3 händische Anpassungen auf das eigene Projekt nach
|
||||
Sachen in static, 2-3 händische Anpassungen auf das eigene Projekt nach
|
||||
auspacken). Nachher liegt dann auch unter static/version die gebaute
|
||||
Versionsnummer & kann abgerufen werden. In der Dockerfile.release und der
|
||||
Jenkinsfile müssen noch anpassungen gemacht werden. Konkret:
|
||||
Versionsnummer & kann abgerufen werden. In der `Dockerfile.release` und der
|
||||
`Jenkinsfile` müssen noch Anpassungen gemacht werden. Konkret:
|
||||
|
||||
- in der Dockerfile.release: alle `<<<HIER>>>`-Stellen sinnvoll befüllen
|
||||
- in der Jenkinsfile die defs für "servicename" und "servicebinary" ausfüllen.
|
||||
- in der `Dockerfile.release`: alle `<<<HIER>>>`-Stellen sinnvoll befüllen
|
||||
- in der `Jenkinsfile` die defs für "servicename" und "servicebinary" ausfüllen.
|
||||
Binary ist das, was bei stack exec aufgerufen wird; name ist der Image-Name
|
||||
für das docker-repository.
|
||||
|
||||
@ -296,11 +304,12 @@ Jenkinsfile müssen noch anpassungen gemacht werden. Konkret:
|
||||
|
||||
Änderungen die dann noch gemacht werden müssen:
|
||||
|
||||
- git-repository url anpassen
|
||||
- Environment-Vars anpasses ($BRANCH = test & live haben keine zusatzdinger im
|
||||
docker-image-repository; ansonsten hat das image $BRANCH im namen)
|
||||
- git-repository URL anpassen
|
||||
- Environment-Vars anpassen (\$BRANCH = test & live haben keine zusatzdinger im
|
||||
docker-image-repository; ansonsten hat das image \$BRANCH im Namen)
|
||||
|
||||
Wenn das durchgebaut ist, liegt im test/live-repository ein docker-image namens `servicename:version`.
|
||||
Wenn das fertig gebaut ist, liegt im test/live-repository ein docker-image
|
||||
namens `servicename:version`.
|
||||
|
||||
### OMG! Ich muss meine API ändern. Was mache ich nun?
|
||||
|
23
content/Coding/OpenAPI.md
Normal file
23
content/Coding/OpenAPI.md
Normal file
@ -0,0 +1,23 @@
|
||||
# Openapi-generator
|
||||
|
||||
## Idee hinter einem API-Generator
|
||||
|
||||
[[TODO]] Idee hinter einem API-Generator
|
||||
|
||||
## Theorie und Praxis
|
||||
|
||||
[[TODO]] Theorie und Praxis
|
||||
|
||||
## Spezialfall in Haskell
|
||||
|
||||
[[TODO]] Veraltet
|
||||
|
||||
Wie im [[Webapp-Example]] kurz angerissen wird in Haskell nicht zwischen Server
|
||||
und Client unterschieden. Daher können hier sehr viele Optimierungen bei
|
||||
Änderungen passieren, die in anderen Sprachen nicht so einfach möglich sind.
|
||||
|
||||
Die generierte Library hat die Funktionen, die ein Client braucht direkt dabei
|
||||
und man muss lediglich die Verbindung initialisieren (Callback für
|
||||
Network-Requests, Serveradresse etc.) und kann dann direkt alle Funktionen
|
||||
benutzen. Partial Application hilft hier massiv und man bekommt z.b. Für die
|
||||
Beispiel-Tierhandlung aus dem ursprünglichem `getPet :: ` direkt so etwas wie `getPet :: PetID -> IO Pet`
|
9
content/Opinions/Editors.md
Normal file
9
content/Opinions/Editors.md
Normal file
@ -0,0 +1,9 @@
|
||||
# Editors
|
||||
|
||||
Better said: "why neovim is currently my favorite editor" :wink:
|
||||
|
||||
## Current Config
|
||||
|
||||
You can find my current Config along with other things in my [gitea snippet-git](https://gitea.dresselhaus.cloud/Drezil/snippets).
|
||||
|
||||
[[TODO]]: write more awesomesauce :wink:
|
35
content/Opinions/Layout.md
Normal file
35
content/Opinions/Layout.md
Normal file
@ -0,0 +1,35 @@
|
||||
---
|
||||
title: Keyboard-Layouts
|
||||
---
|
||||
|
||||
# My Keyboard-Layout
|
||||
|
||||
Since around 2006 i basically write only using the
|
||||
[NEO2](https://neo-layout.org)-Layout. There are many advantages that are not obvious to
|
||||
an onlooker right away.
|
||||
|
||||
Don't get me wrong. I still can type QWERTZ - just because you learn an
|
||||
additional layout does not mean that you forget everything from before.
|
||||
|
||||
The secret sauce lies in the deeper layers. Especially layer 3 having all the
|
||||
"hard to reach" things like brackets, braces, etc. right on the home row.
|
||||
And the 4th layer is *magic* for text-navigation. Left hand has the full
|
||||
navigation, right hand has the complete Numpad - even on laptop-keyboards that
|
||||
are lacking those.
|
||||
|
||||
For me as a person having the usual German Keyboard with AltGr this just means:
|
||||
|
||||
- Putting the thumb down on AltGr - it is above there anyway.
|
||||
- Use left hand as normal arrow-keys (that work EVERYWHERE because they are just
|
||||
arrow keys)
|
||||
- Also use Home/End/PgUp/PgDown/...
|
||||
|
||||
Before i always had to switch over or hope that a thing had support for
|
||||
vi-style "hjkl".
|
||||
|
||||
Thats why i also prefer [[Opinions/Editors|Neovim]] as my primary editor - just not having to
|
||||
touch your mouse at any time for anything is such a godsend :smile:
|
||||
|
||||
Best thing: If you don't want to switch, there is also a "Neo-QWERTZ"-variant ..
|
||||
where you can just try the deeper layers while not leaving your QWERTZ-layout
|
||||
behind. But i have just seen and never tried it. Your experience may be sub-par.
|
5
content/TODO.md
Normal file
5
content/TODO.md
Normal file
@ -0,0 +1,5 @@
|
||||
---
|
||||
title: Todo
|
||||
---
|
||||
|
||||
Todo List in backlinks below vvv
|
@ -46,37 +46,65 @@
|
||||
|
||||
|
||||
|
||||
<link href='tailwind.css?instanceId=ecadcd50-ecaf-4d6e-98ea-7932c3b3d351' rel='stylesheet' type='text/css' />
|
||||
<link href='tailwind.css?instanceId=1ec53b8c-7991-423c-8b17-b92e36792648' rel='stylesheet' type='text/css' />
|
||||
|
||||
<!-- Heist error element -->
|
||||
<style>
|
||||
/* Heist error element */
|
||||
strong.error {
|
||||
color: lightcoral;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
/* External link icon */
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"])::after {
|
||||
/* filter converts black to rgb(156,163,175) */
|
||||
filter: invert(71%) sepia(3%) saturate(904%) hue-rotate(179deg) brightness(92%) contrast(87%);
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"]):hover::after {
|
||||
/* filter converts black to rgb(175,85,99) */
|
||||
filter: invert(32%) sepia(10%) saturate(834%) hue-rotate(176deg) brightness(92%) contrast(88%);
|
||||
}
|
||||
|
||||
a[data-linkicon=""]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon=none]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon="external"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
a[data-linkicon="external"][href^="mailto:"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z' /%3E%3C/svg%3E");
|
||||
}
|
||||
</style>
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'MavenPro';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf) format("truetype");
|
||||
font-family: 'WorkSans';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf) format("truetype");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
/* font-variation-settings: 'wght'300; */
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
font-variation-settings: 'wght' 350;
|
||||
}
|
||||
|
||||
a.mavenLinkBold {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h1,
|
||||
@ -87,12 +115,25 @@
|
||||
h6,
|
||||
header,
|
||||
.header-font {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-variation-settings: 'wght' 300;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
<head-main></head-main>
|
||||
<link rel='stylesheet' href='https://files.stork-search.net/releases/v1.5.0/flat.css' />
|
||||
<link rel='stylesheet' href='_emanote-static/stork/flat.css' />
|
||||
<!-- Custom Stork-search styling for Emanote -->
|
||||
<style>
|
||||
#stork-search-container {
|
||||
@ -106,7 +147,7 @@
|
||||
</style>
|
||||
|
||||
|
||||
<script src='https://files.stork-search.net/releases/v1.5.0/stork.js'></script>
|
||||
<script src='_emanote-static/stork/stork.js'></script>
|
||||
|
||||
|
||||
<script data-emanote-base-url='/'>
|
||||
@ -132,6 +173,7 @@
|
||||
const indexUrl = baseUrl + '-/stork.st';
|
||||
if (document.readyState !== 'complete') {
|
||||
window.addEventListener('load', function () {
|
||||
stork.initialize(baseUrl + '_emanote-static/stork/stork.wasm');
|
||||
stork.register(indexName, indexUrl);
|
||||
});
|
||||
|
||||
@ -170,10 +212,6 @@
|
||||
<h1 class='pb-2 mt-2 mb-2 text-6xl text-center'>
|
||||
Index
|
||||
</h1>
|
||||
<div class='flex justify-center items-center mb-2'>
|
||||
<a target='_blank' class='italic underline' href='https://github.com/srid/emanote/discussions/50'>Experimental
|
||||
feature</a> !
|
||||
</div>
|
||||
<div class='pb-2 mx-auto my-4 lg:max-w-screen-md '>
|
||||
|
||||
<div class='pt-1 pb-2 pl-4 bg-gray-200'>
|
||||
@ -436,8 +474,8 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold hover:underline truncate' title='Haskell' href='Haskell'>
|
||||
Haskell
|
||||
<a class='font-bold hover:underline truncate' title='Coding' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
|
||||
|
||||
@ -472,8 +510,8 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold hover:underline truncate' title='Code-Snippets' href='Haskell/Code%20Snippets'>
|
||||
Code-Snippets
|
||||
<a class='font-bold hover:underline truncate' title='Haskell' href='Coding/Haskell'>
|
||||
Haskell
|
||||
</a>
|
||||
|
||||
|
||||
@ -508,166 +546,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='*-Morpisms' href='Haskell/Code%20Snippets/Morphisms'>
|
||||
*-Morpisms
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Monoid? Da war doch was…' href='Haskell/Code%20Snippets/Monoid'>
|
||||
Monoid? Da war doch was…
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Fortgeschrittene funktionale Programmierung in Haskell' href='Haskell/FFPiH'>
|
||||
Fortgeschrittene funktionale Programmierung in Haskell
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Lenses' href='Haskell/Lenses'>
|
||||
Lenses
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Talks und Posts zu Haskell' href='Haskell/Advantages'>
|
||||
<a class='hover:underline truncate' title='Talks und Posts zu Haskell' href='Coding/Haskell/Advantages'>
|
||||
Talks und Posts zu Haskell
|
||||
</a>
|
||||
|
||||
@ -706,7 +585,202 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold hover:underline truncate' title='Webapp-Development in Haskell' href='Haskell/Webapp-Example'>
|
||||
<a class='font-bold hover:underline truncate' title='Code-Snippets' href='Coding/Haskell/Code%20Snippets'>
|
||||
Code-Snippets
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Monoid? Da war doch was…' href='Coding/Haskell/Code%20Snippets/Monoid'>
|
||||
Monoid? Da war doch was…
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='*-Morpisms' href='Coding/Haskell/Code%20Snippets/Morphisms'>
|
||||
*-Morpisms
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Fortgeschrittene funktionale Programmierung in Haskell' href='Coding/Haskell/FFPiH'>
|
||||
Fortgeschrittene funktionale Programmierung in Haskell
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Lenses' href='Coding/Haskell/Lenses'>
|
||||
Lenses
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-700' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path fill-rule='evenodd' d='M2 6a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1H8a3 3 0 00-3 3v1.5a1.5 1.5 0 01-3 0V6z' clip-rule='evenodd'></path>
|
||||
<path d='M6 12a2 2 0 012-2h8a2 2 0 012 2v2a2 2 0 01-2 2H2h2a2 2 0 002-2v-2z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold hover:underline truncate' title='Webapp-Development in Haskell' href='Coding/Haskell/Webapp-Example'>
|
||||
Webapp-Development in Haskell
|
||||
</a>
|
||||
|
||||
@ -742,7 +816,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Webapp-Example: Main.hs' href='Haskell/Webapp-Example/Main.hs'>
|
||||
<a class='hover:underline truncate' title='Webapp-Example: Main.hs' href='Coding/Haskell/Webapp-Example/Main.hs'>
|
||||
Webapp-Example: Main.hs
|
||||
</a>
|
||||
|
||||
@ -781,7 +855,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Webapp-Example: MyService/Types.hs' href='Haskell/Webapp-Example/MyService_Types.hs'>
|
||||
<a class='hover:underline truncate' title='Webapp-Example: MyService/Types.hs' href='Coding/Haskell/Webapp-Example/MyService_Types.hs'>
|
||||
Webapp-Example: MyService/Types.hs
|
||||
</a>
|
||||
|
||||
@ -797,6 +871,48 @@
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Openapi-generator' href='Coding/OpenAPI'>
|
||||
Openapi-generator
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
@ -853,6 +969,162 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-700' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path fill-rule='evenodd' d='M2 6a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1H8a3 3 0 00-3 3v1.5a1.5 1.5 0 01-3 0V6z' clip-rule='evenodd'></path>
|
||||
<path d='M6 12a2 2 0 012-2h8a2 2 0 012 2v2a2 2 0 01-2 2H2h2a2 2 0 002-2v-2z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold hover:underline truncate' title='Opinions' href='Opinions'>
|
||||
Opinions
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Editors' href='Opinions/Editors'>
|
||||
Editors
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Keyboard-Layouts' href='Opinions/Layout'>
|
||||
Keyboard-Layouts
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Todo' href='TODO'>
|
||||
Todo
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -1058,7 +1330,7 @@
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.7.3.0'>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.8.1.10'>
|
||||
<img class='w-6 h-6 hover:text-purple-700' src='_emanote-static/emanote-logo.svg' />
|
||||
</a>
|
||||
</div>
|
||||
@ -1090,6 +1362,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
File diff suppressed because one or more lines are too long
Binary file not shown.
@ -46,37 +46,65 @@
|
||||
|
||||
|
||||
|
||||
<link href='tailwind.css?instanceId=ecadcd50-ecaf-4d6e-98ea-7932c3b3d351' rel='stylesheet' type='text/css' />
|
||||
<link href='tailwind.css?instanceId=1ec53b8c-7991-423c-8b17-b92e36792648' rel='stylesheet' type='text/css' />
|
||||
|
||||
<!-- Heist error element -->
|
||||
<style>
|
||||
/* Heist error element */
|
||||
strong.error {
|
||||
color: lightcoral;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
/* External link icon */
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"])::after {
|
||||
/* filter converts black to rgb(156,163,175) */
|
||||
filter: invert(71%) sepia(3%) saturate(904%) hue-rotate(179deg) brightness(92%) contrast(87%);
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"]):hover::after {
|
||||
/* filter converts black to rgb(175,85,99) */
|
||||
filter: invert(32%) sepia(10%) saturate(834%) hue-rotate(176deg) brightness(92%) contrast(88%);
|
||||
}
|
||||
|
||||
a[data-linkicon=""]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon=none]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon="external"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
a[data-linkicon="external"][href^="mailto:"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z' /%3E%3C/svg%3E");
|
||||
}
|
||||
</style>
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'MavenPro';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf) format("truetype");
|
||||
font-family: 'WorkSans';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf) format("truetype");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
/* font-variation-settings: 'wght'300; */
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
font-variation-settings: 'wght' 350;
|
||||
}
|
||||
|
||||
a.mavenLinkBold {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h1,
|
||||
@ -87,12 +115,25 @@
|
||||
h6,
|
||||
header,
|
||||
.header-font {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-variation-settings: 'wght' 300;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
<head-main></head-main>
|
||||
<link rel='stylesheet' href='https://files.stork-search.net/releases/v1.5.0/flat.css' />
|
||||
<link rel='stylesheet' href='_emanote-static/stork/flat.css' />
|
||||
<!-- Custom Stork-search styling for Emanote -->
|
||||
<style>
|
||||
#stork-search-container {
|
||||
@ -106,7 +147,7 @@
|
||||
</style>
|
||||
|
||||
|
||||
<script src='https://files.stork-search.net/releases/v1.5.0/stork.js'></script>
|
||||
<script src='_emanote-static/stork/stork.js'></script>
|
||||
|
||||
|
||||
<script data-emanote-base-url='/'>
|
||||
@ -132,6 +173,7 @@
|
||||
const indexUrl = baseUrl + '-/stork.st';
|
||||
if (document.readyState !== 'complete') {
|
||||
window.addEventListener('load', function () {
|
||||
stork.initialize(baseUrl + '_emanote-static/stork/stork.wasm');
|
||||
stork.register(indexName, indexUrl);
|
||||
});
|
||||
|
||||
@ -170,10 +212,6 @@
|
||||
<h1 class='pb-2 mt-2 mb-2 text-6xl text-center'>
|
||||
Tag Index
|
||||
</h1>
|
||||
<div class='flex justify-center items-center mb-2'>
|
||||
<a target='_blank' class='italic underline' href='https://github.com/srid/emanote/discussions/50'>Experimental
|
||||
feature</a> !
|
||||
</div>
|
||||
<div class='pb-2 mx-auto my-4 lg:max-w-screen-md '>
|
||||
|
||||
<div class='bg-gray-200 pb-2'>
|
||||
@ -217,7 +255,7 @@
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.7.3.0'>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.8.1.10'>
|
||||
<img class='w-6 h-6 hover:text-purple-700' src='_emanote-static/emanote-logo.svg' />
|
||||
</a>
|
||||
</div>
|
||||
@ -249,6 +287,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
@ -46,37 +46,65 @@
|
||||
|
||||
|
||||
|
||||
<link href='tailwind.css?instanceId=ecadcd50-ecaf-4d6e-98ea-7932c3b3d351' rel='stylesheet' type='text/css' />
|
||||
<link href='tailwind.css?instanceId=1ec53b8c-7991-423c-8b17-b92e36792648' rel='stylesheet' type='text/css' />
|
||||
|
||||
<!-- Heist error element -->
|
||||
<style>
|
||||
/* Heist error element */
|
||||
strong.error {
|
||||
color: lightcoral;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
/* External link icon */
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"])::after {
|
||||
/* filter converts black to rgb(156,163,175) */
|
||||
filter: invert(71%) sepia(3%) saturate(904%) hue-rotate(179deg) brightness(92%) contrast(87%);
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"]):hover::after {
|
||||
/* filter converts black to rgb(175,85,99) */
|
||||
filter: invert(32%) sepia(10%) saturate(834%) hue-rotate(176deg) brightness(92%) contrast(88%);
|
||||
}
|
||||
|
||||
a[data-linkicon=""]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon=none]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon="external"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
a[data-linkicon="external"][href^="mailto:"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z' /%3E%3C/svg%3E");
|
||||
}
|
||||
</style>
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'MavenPro';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf) format("truetype");
|
||||
font-family: 'WorkSans';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf) format("truetype");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
/* font-variation-settings: 'wght'300; */
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
font-variation-settings: 'wght' 350;
|
||||
}
|
||||
|
||||
a.mavenLinkBold {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h1,
|
||||
@ -87,12 +115,25 @@
|
||||
h6,
|
||||
header,
|
||||
.header-font {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-variation-settings: 'wght' 300;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
<head-main></head-main>
|
||||
<link rel='stylesheet' href='https://files.stork-search.net/releases/v1.5.0/flat.css' />
|
||||
<link rel='stylesheet' href='_emanote-static/stork/flat.css' />
|
||||
<!-- Custom Stork-search styling for Emanote -->
|
||||
<style>
|
||||
#stork-search-container {
|
||||
@ -106,7 +147,7 @@
|
||||
</style>
|
||||
|
||||
|
||||
<script src='https://files.stork-search.net/releases/v1.5.0/stork.js'></script>
|
||||
<script src='_emanote-static/stork/stork.js'></script>
|
||||
|
||||
|
||||
<script data-emanote-base-url='/'>
|
||||
@ -132,6 +173,7 @@
|
||||
const indexUrl = baseUrl + '-/stork.st';
|
||||
if (document.readyState !== 'complete') {
|
||||
window.addEventListener('load', function () {
|
||||
stork.initialize(baseUrl + '_emanote-static/stork/stork.wasm');
|
||||
stork.register(indexName, indexUrl);
|
||||
});
|
||||
|
||||
@ -170,10 +212,6 @@
|
||||
<h1 class='pb-2 mt-2 mb-2 text-6xl text-center'>
|
||||
Task Index
|
||||
</h1>
|
||||
<div class='flex justify-center items-center mb-2'>
|
||||
<a target='_blank' class='italic underline' href='https://github.com/srid/emanote/discussions/50'>Experimental
|
||||
feature</a> !
|
||||
</div>
|
||||
<div class='pb-2 mx-auto my-4 lg:max-w-screen-md '>
|
||||
|
||||
<div class='w-full bg-gray-300'>
|
||||
@ -202,7 +240,7 @@
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.7.3.0'>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.8.1.10'>
|
||||
<img class='w-6 h-6 hover:text-purple-700' src='_emanote-static/emanote-logo.svg' />
|
||||
</a>
|
||||
</div>
|
||||
@ -234,6 +272,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
@ -47,37 +47,65 @@
|
||||
|
||||
|
||||
|
||||
<link href='tailwind.css?instanceId=ecadcd50-ecaf-4d6e-98ea-7932c3b3d351' rel='stylesheet' type='text/css' />
|
||||
<link href='tailwind.css?instanceId=1ec53b8c-7991-423c-8b17-b92e36792648' rel='stylesheet' type='text/css' />
|
||||
|
||||
<!-- Heist error element -->
|
||||
<style>
|
||||
/* Heist error element */
|
||||
strong.error {
|
||||
color: lightcoral;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
/* External link icon */
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"])::after {
|
||||
/* filter converts black to rgb(156,163,175) */
|
||||
filter: invert(71%) sepia(3%) saturate(904%) hue-rotate(179deg) brightness(92%) contrast(87%);
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"]):hover::after {
|
||||
/* filter converts black to rgb(175,85,99) */
|
||||
filter: invert(32%) sepia(10%) saturate(834%) hue-rotate(176deg) brightness(92%) contrast(88%);
|
||||
}
|
||||
|
||||
a[data-linkicon=""]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon=none]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon="external"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
a[data-linkicon="external"][href^="mailto:"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z' /%3E%3C/svg%3E");
|
||||
}
|
||||
</style>
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'MavenPro';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf) format("truetype");
|
||||
font-family: 'WorkSans';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf) format("truetype");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
/* font-variation-settings: 'wght'300; */
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
font-variation-settings: 'wght' 350;
|
||||
}
|
||||
|
||||
a.mavenLinkBold {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h1,
|
||||
@ -88,14 +116,27 @@
|
||||
h6,
|
||||
header,
|
||||
.header-font {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-variation-settings: 'wght' 300;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<link rel='stylesheet' href='_emanote-static/inverted-tree.css' />
|
||||
|
||||
<link rel='stylesheet' href='https://files.stork-search.net/releases/v1.5.0/flat.css' />
|
||||
<link rel='stylesheet' href='_emanote-static/stork/flat.css' />
|
||||
<!-- Custom Stork-search styling for Emanote -->
|
||||
<style>
|
||||
#stork-search-container {
|
||||
@ -109,7 +150,7 @@
|
||||
</style>
|
||||
|
||||
|
||||
<script src='https://files.stork-search.net/releases/v1.5.0/stork.js'></script>
|
||||
<script src='_emanote-static/stork/stork.js'></script>
|
||||
|
||||
|
||||
<script data-emanote-base-url='/'>
|
||||
@ -135,6 +176,7 @@
|
||||
const indexUrl = baseUrl + '-/stork.st';
|
||||
if (document.readyState !== 'complete') {
|
||||
window.addEventListener('load', function () {
|
||||
stork.initialize(baseUrl + '_emanote-static/stork/stork.wasm');
|
||||
stork.register(indexName, indexUrl);
|
||||
});
|
||||
|
||||
@ -465,13 +507,13 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Haskell' href='Haskell'>
|
||||
Haskell
|
||||
<a class='hover:underline truncate' title='Coding' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='5 children inside'>
|
||||
5
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
@ -530,6 +572,82 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Opinions' href='Opinions'>
|
||||
Opinions
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Todo' href='TODO'>
|
||||
Todo
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -639,46 +757,55 @@
|
||||
<!-- What goes in this file will appear on top of note body-->
|
||||
<nav>
|
||||
<div class='mb-8'>
|
||||
<header class='pb-2 mb-2 font-semibold text-gray-600'>
|
||||
<header data-nosnippet class='pb-2 mb-2 font-semibold text-gray-600'>
|
||||
Pages matching path './*'
|
||||
</header>
|
||||
<ul>
|
||||
|
||||
<div class='flex flex-wrap my-2'>
|
||||
<li>
|
||||
<div class='flex flex-wrap my-2'>
|
||||
|
||||
<span class='mr-2 text-right text-gray-600'>
|
||||
</span>
|
||||
<span data-nosnippet class='mr-2 text-right text-gray-600'>
|
||||
</span>
|
||||
|
||||
<a class='flex-1 text-purple-600 mavenLinkBold border-l-2 pl-2 hover:underline' href='About/CV'>
|
||||
About me
|
||||
</a>
|
||||
</div>
|
||||
<a class='flex-1 text-purple-600 mavenLinkBold border-l-2 pl-2 hover:underline' href='About/CV'>
|
||||
About me
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<div class='flex flex-wrap my-2'>
|
||||
<li>
|
||||
<div class='flex flex-wrap my-2'>
|
||||
|
||||
<span class='mr-2 text-right text-gray-600'>
|
||||
</span>
|
||||
<span data-nosnippet class='mr-2 text-right text-gray-600'>
|
||||
</span>
|
||||
|
||||
<a class='flex-1 text-purple-600 mavenLinkBold border-l-2 pl-2 hover:underline' href='About/Experience'>
|
||||
Highlights of my experiences in the programming world
|
||||
</a>
|
||||
</div>
|
||||
<a class='flex-1 text-purple-600 mavenLinkBold border-l-2 pl-2 hover:underline' href='About/Experience'>
|
||||
Highlights of my experiences in the programming world
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<div class='flex flex-wrap my-2'>
|
||||
<li>
|
||||
<div class='flex flex-wrap my-2'>
|
||||
|
||||
<span class='mr-2 text-right text-gray-600'>
|
||||
</span>
|
||||
<span data-nosnippet class='mr-2 text-right text-gray-600'>
|
||||
</span>
|
||||
|
||||
<a class='flex-1 text-purple-600 mavenLinkBold border-l-2 pl-2 hover:underline' href='About/Work'>
|
||||
Work-Experience
|
||||
</a>
|
||||
</div>
|
||||
<a class='flex-1 text-purple-600 mavenLinkBold border-l-2 pl-2 hover:underline' href='About/Work'>
|
||||
Work-Experience
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</nav><div class='text-gray-400 border-t-2 inline-block pt-0.5'>
|
||||
<p class='mb-3'>
|
||||
Note: To override the auto-generated content here, create a file named one of: <span class='font-mono text-sm'>About.md, About.org</span>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- div class="flex items-center justify-center mt-2">
|
||||
<ema:metadata>
|
||||
<with var="template">
|
||||
@ -724,7 +851,7 @@
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.7.3.0'>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.8.1.10'>
|
||||
<img class='w-6 h-6 hover:text-purple-700' src='_emanote-static/emanote-logo.svg' />
|
||||
</a>
|
||||
</div>
|
||||
@ -756,6 +883,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
@ -47,37 +47,65 @@
|
||||
|
||||
|
||||
|
||||
<link href='tailwind.css?instanceId=ecadcd50-ecaf-4d6e-98ea-7932c3b3d351' rel='stylesheet' type='text/css' />
|
||||
<link href='tailwind.css?instanceId=1ec53b8c-7991-423c-8b17-b92e36792648' rel='stylesheet' type='text/css' />
|
||||
|
||||
<!-- Heist error element -->
|
||||
<style>
|
||||
/* Heist error element */
|
||||
strong.error {
|
||||
color: lightcoral;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
/* External link icon */
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"])::after {
|
||||
/* filter converts black to rgb(156,163,175) */
|
||||
filter: invert(71%) sepia(3%) saturate(904%) hue-rotate(179deg) brightness(92%) contrast(87%);
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"]):hover::after {
|
||||
/* filter converts black to rgb(175,85,99) */
|
||||
filter: invert(32%) sepia(10%) saturate(834%) hue-rotate(176deg) brightness(92%) contrast(88%);
|
||||
}
|
||||
|
||||
a[data-linkicon=""]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon=none]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon="external"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
a[data-linkicon="external"][href^="mailto:"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z' /%3E%3C/svg%3E");
|
||||
}
|
||||
</style>
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'MavenPro';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf) format("truetype");
|
||||
font-family: 'WorkSans';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf) format("truetype");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
/* font-variation-settings: 'wght'300; */
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
font-variation-settings: 'wght' 350;
|
||||
}
|
||||
|
||||
a.mavenLinkBold {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h1,
|
||||
@ -88,14 +116,27 @@
|
||||
h6,
|
||||
header,
|
||||
.header-font {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-variation-settings: 'wght' 300;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<link rel='stylesheet' href='_emanote-static/inverted-tree.css' />
|
||||
|
||||
<link rel='stylesheet' href='https://files.stork-search.net/releases/v1.5.0/flat.css' />
|
||||
<link rel='stylesheet' href='_emanote-static/stork/flat.css' />
|
||||
<!-- Custom Stork-search styling for Emanote -->
|
||||
<style>
|
||||
#stork-search-container {
|
||||
@ -109,7 +150,7 @@
|
||||
</style>
|
||||
|
||||
|
||||
<script src='https://files.stork-search.net/releases/v1.5.0/stork.js'></script>
|
||||
<script src='_emanote-static/stork/stork.js'></script>
|
||||
|
||||
|
||||
<script data-emanote-base-url='/'>
|
||||
@ -135,6 +176,7 @@
|
||||
const indexUrl = baseUrl + '-/stork.st';
|
||||
if (document.readyState !== 'complete') {
|
||||
window.addEventListener('load', function () {
|
||||
stork.initialize(baseUrl + '_emanote-static/stork/stork.wasm');
|
||||
stork.register(indexName, indexUrl);
|
||||
});
|
||||
|
||||
@ -476,13 +518,13 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Haskell' href='Haskell'>
|
||||
Haskell
|
||||
<a class='hover:underline truncate' title='Coding' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='5 children inside'>
|
||||
5
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
@ -541,6 +583,82 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Opinions' href='Opinions'>
|
||||
Opinions
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Todo' href='TODO'>
|
||||
Todo
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -663,7 +781,7 @@
|
||||
</h1>
|
||||
<article class='overflow-auto'>
|
||||
<!-- What goes in this file will appear on top of note body-->
|
||||
<h1 id='stefan-dresselhaus' class='pb-2 mb-2 text-5xl font-bold text-center'>Stefan Dresselhaus</h1><div xmlhtmlRaw><img align="right" style='border:1px solid #000000; float:right; margin-left:20px' height='300px' src="/About/DresselhausStefan_klein2.jpg"/>
|
||||
<h1 id='drezil' class='pb-2 mb-2 text-5xl font-bold text-center'>Drezil</h1><div xmlhtmlRaw><img class="border border-solid w32 rounded-xl lg:rounded-3xl lg:w64 float-right" style=" border-color: rgb(217 70 239);" src="/About/avatar_neu.png"/>
|
||||
</div><h2 id='work' class='inline-block mt-6 mb-4 text-4xl font-bold text-gray-700 border-b-2'>Work</h2>
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
@ -676,7 +794,7 @@
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
ML-Specialist at <a href='https://jobware.de' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Jobware</a> (Paderborn; german Job-Advertising-Platform)
|
||||
ML-Specialist at <a href='https://jobware.de' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Jobware</a> (Paderborn; german Job-Advertising-Platform)
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
@ -708,7 +826,7 @@
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='Haskell/FFPiH' class='text-purple-600 mavenLinkBold hover:underline' data-wikilink-type='WikiLinkBranch'>Lecture "Intermediate Functional Programming in Haskell"</a>
|
||||
<a href='Coding/Haskell/FFPiH' class='text-purple-600 mavenLinkBold hover:underline' data-wikilink-type='WikiLinkBranch'>Lecture "Intermediate Functional Programming in Haskell"</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
@ -821,6 +939,7 @@
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<!-- div class="flex items-center justify-center mt-2">
|
||||
<ema:metadata>
|
||||
<with var="template">
|
||||
@ -866,7 +985,7 @@
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.7.3.0'>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.8.1.10'>
|
||||
<img class='w-6 h-6 hover:text-purple-700' src='_emanote-static/emanote-logo.svg' />
|
||||
</a>
|
||||
</div>
|
||||
@ -898,6 +1017,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 87 KiB |
@ -47,37 +47,65 @@
|
||||
|
||||
|
||||
|
||||
<link href='tailwind.css?instanceId=ecadcd50-ecaf-4d6e-98ea-7932c3b3d351' rel='stylesheet' type='text/css' />
|
||||
<link href='tailwind.css?instanceId=1ec53b8c-7991-423c-8b17-b92e36792648' rel='stylesheet' type='text/css' />
|
||||
|
||||
<!-- Heist error element -->
|
||||
<style>
|
||||
/* Heist error element */
|
||||
strong.error {
|
||||
color: lightcoral;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
/* External link icon */
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"])::after {
|
||||
/* filter converts black to rgb(156,163,175) */
|
||||
filter: invert(71%) sepia(3%) saturate(904%) hue-rotate(179deg) brightness(92%) contrast(87%);
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"]):hover::after {
|
||||
/* filter converts black to rgb(175,85,99) */
|
||||
filter: invert(32%) sepia(10%) saturate(834%) hue-rotate(176deg) brightness(92%) contrast(88%);
|
||||
}
|
||||
|
||||
a[data-linkicon=""]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon=none]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon="external"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
a[data-linkicon="external"][href^="mailto:"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z' /%3E%3C/svg%3E");
|
||||
}
|
||||
</style>
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'MavenPro';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf) format("truetype");
|
||||
font-family: 'WorkSans';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf) format("truetype");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
/* font-variation-settings: 'wght'300; */
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
font-variation-settings: 'wght' 350;
|
||||
}
|
||||
|
||||
a.mavenLinkBold {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h1,
|
||||
@ -88,14 +116,27 @@
|
||||
h6,
|
||||
header,
|
||||
.header-font {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-variation-settings: 'wght' 300;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<link rel='stylesheet' href='_emanote-static/inverted-tree.css' />
|
||||
|
||||
<link rel='stylesheet' href='https://files.stork-search.net/releases/v1.5.0/flat.css' />
|
||||
<link rel='stylesheet' href='_emanote-static/stork/flat.css' />
|
||||
<!-- Custom Stork-search styling for Emanote -->
|
||||
<style>
|
||||
#stork-search-container {
|
||||
@ -109,7 +150,7 @@
|
||||
</style>
|
||||
|
||||
|
||||
<script src='https://files.stork-search.net/releases/v1.5.0/stork.js'></script>
|
||||
<script src='_emanote-static/stork/stork.js'></script>
|
||||
|
||||
|
||||
<script data-emanote-base-url='/'>
|
||||
@ -135,6 +176,7 @@
|
||||
const indexUrl = baseUrl + '-/stork.st';
|
||||
if (document.readyState !== 'complete') {
|
||||
window.addEventListener('load', function () {
|
||||
stork.initialize(baseUrl + '_emanote-static/stork/stork.wasm');
|
||||
stork.register(indexName, indexUrl);
|
||||
});
|
||||
|
||||
@ -476,13 +518,13 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Haskell' href='Haskell'>
|
||||
Haskell
|
||||
<a class='hover:underline truncate' title='Coding' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='5 children inside'>
|
||||
5
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
@ -541,6 +583,82 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Opinions' href='Opinions'>
|
||||
Opinions
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Todo' href='TODO'>
|
||||
Todo
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -698,55 +816,55 @@
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
<a href='https://github.com/Drezil/' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>My Profile</a>
|
||||
<a href='https://github.com/Drezil/' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>My Profile</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='https://github.com/FFPiHaskell/' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Haskell-Lecture</a>
|
||||
<a href='https://github.com/FFPiHaskell/' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Haskell-Lecture</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='https://github.com/DataHaskell' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Co-Founder of DataHaskell</a>
|
||||
<a href='https://github.com/DataHaskell' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Co-Founder of DataHaskell</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<h2 id='gitea' class='inline-block mt-6 mb-4 text-4xl font-bold text-gray-700 border-b-2'>gitea</h2>
|
||||
<p class='mb-3'>
|
||||
I also have a <a href='https://gitea.dresselhaus.cloud/explore/repos' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>gitea-instance</a> where one can finde more current things and backups of old.
|
||||
I also have a <a href='https://gitea.dresselhaus.cloud/explore/repos' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>gitea-instance</a> where one can finde more current things and backups of old.
|
||||
</p>
|
||||
<h3 id='highlights' class='mt-6 mb-2 text-3xl font-bold text-gray-700'>Highlights</h3>
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
<strong>Author</strong> of Eve-Online-Interface in <a href='https://github.com/thoughtbot/yesod-auth-oauth2/pull/33' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>yesod-auth-oauth2</a>
|
||||
<strong>Author</strong> of Eve-Online-Interface in <a href='https://github.com/thoughtbot/yesod-auth-oauth2/pull/33' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>yesod-auth-oauth2</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<strong>Author</strong> of “New Eden Accounting Tool” (<a href='https://github.com/Drezil/neat' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>neat</a>), which is basically a ledger for Trading in the game Eve-Online
|
||||
<strong>Author</strong> of “New Eden Accounting Tool” (<a href='https://github.com/Drezil/neat' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>neat</a>), which is basically a ledger for Trading in the game Eve-Online
|
||||
</li>
|
||||
|
||||
<li>
|
||||
Driver behind getting <a href='' class='text-purple-600 mavenLinkBold hover:underline'><a href='https://github.com/jgm/pandoc/issues/168' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>https://github.com/jgm/pandoc/issues/168</a></a> implemented and merged, because we needed it for our slide-filters (see <a href='About/Work' class='text-purple-600 mavenLinkBold hover:underline' data-wikilink-type='WikiLinkBranch'>Work-Experience</a> -> Development of Filters)
|
||||
Driver behind getting <a href='' class='text-purple-600 mavenLinkBold hover:underline'><a href='https://github.com/jgm/pandoc/issues/168' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>https://github.com/jgm/pandoc/issues/168</a></a> implemented and merged, because we needed it for our slide-filters (see <a href='About/Work' class='text-purple-600 mavenLinkBold hover:underline' data-wikilink-type='WikiLinkBranch'>Work-Experience</a> -> Development of Filters)
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<strong>Author</strong> of <a href='https://github.com/Drezil/img2ascii' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>img2ascii</a> - Small cli-tool for converting images into terminal-codes & ascii using JuicyPixels, because i always forget what is on the images over an ssh-connection -.-
|
||||
<strong>Author</strong> of <a href='https://github.com/Drezil/img2ascii' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>img2ascii</a> - Small cli-tool for converting images into terminal-codes & ascii using JuicyPixels, because i always forget what is on the images over an ssh-connection -.-
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<strong>Implemented Array-Fusion and Recycling</strong> for <a href='https://github.com/mikeizbicki/subhask/pull/57' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>subhask</a> as layed out in <a href='https://doi.org/10.1007/978-3-540-92995-6_15' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Recycle your Arrays</a> by Roman Leshchinskiy
|
||||
<strong>Implemented Array-Fusion and Recycling</strong> for <a href='https://github.com/mikeizbicki/subhask/pull/57' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>subhask</a> as layed out in <a href='https://doi.org/10.1007/978-3-540-92995-6_15' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Recycle your Arrays</a> by Roman Leshchinskiy
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='https://github.com/Drezil/htrace' class='text-purple-600 hover:underline' target='_blank' rel='noopener'><strong>Raytracer</strong> in Haskell for my Computergraphics-Course</a>
|
||||
<a href='https://github.com/Drezil/htrace' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'><strong>Raytracer</strong> in Haskell for my Computergraphics-Course</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<strong>implementation of <a href='https://github.com/Drezil/hgraph' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Densely Connected Bi-Clusters</a>-Algorithm</strong> in Haskell (<a href='https://www.researchgate.net/profile/Recep_Colak/publication/267918524_DENSELY-CONNECTED_BI-CLUSTERING/links/560f1aff08ae483375178a03.pdf' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Paper</a>)
|
||||
<strong>implementation of <a href='https://github.com/Drezil/hgraph' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Densely Connected Bi-Clusters</a>-Algorithm</strong> in Haskell (<a href='https://www.researchgate.net/profile/Recep_Colak/publication/267918524_DENSELY-CONNECTED_BI-CLUSTERING/links/560f1aff08ae483375178a03.pdf' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Paper</a>)
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='https://gitea.dresselhaus.cloud/Drezil/chemodiversity' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Chemodiversity-Project</a> at University during my masters. Complete with slideshow explaining everything.
|
||||
<a href='https://gitea.dresselhaus.cloud/Drezil/chemodiversity' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Chemodiversity-Project</a> at University during my masters. Complete with slideshow explaining everything.
|
||||
</li>
|
||||
|
||||
<li>
|
||||
@ -755,6 +873,7 @@
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<!-- div class="flex items-center justify-center mt-2">
|
||||
<ema:metadata>
|
||||
<with var="template">
|
||||
@ -822,7 +941,7 @@
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.7.3.0'>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.8.1.10'>
|
||||
<img class='w-6 h-6 hover:text-purple-700' src='_emanote-static/emanote-logo.svg' />
|
||||
</a>
|
||||
</div>
|
||||
@ -854,6 +973,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
@ -47,37 +47,65 @@
|
||||
|
||||
|
||||
|
||||
<link href='tailwind.css?instanceId=ecadcd50-ecaf-4d6e-98ea-7932c3b3d351' rel='stylesheet' type='text/css' />
|
||||
<link href='tailwind.css?instanceId=1ec53b8c-7991-423c-8b17-b92e36792648' rel='stylesheet' type='text/css' />
|
||||
|
||||
<!-- Heist error element -->
|
||||
<style>
|
||||
/* Heist error element */
|
||||
strong.error {
|
||||
color: lightcoral;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
/* External link icon */
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"])::after {
|
||||
/* filter converts black to rgb(156,163,175) */
|
||||
filter: invert(71%) sepia(3%) saturate(904%) hue-rotate(179deg) brightness(92%) contrast(87%);
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"]):hover::after {
|
||||
/* filter converts black to rgb(175,85,99) */
|
||||
filter: invert(32%) sepia(10%) saturate(834%) hue-rotate(176deg) brightness(92%) contrast(88%);
|
||||
}
|
||||
|
||||
a[data-linkicon=""]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon=none]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon="external"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
a[data-linkicon="external"][href^="mailto:"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z' /%3E%3C/svg%3E");
|
||||
}
|
||||
</style>
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'MavenPro';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf) format("truetype");
|
||||
font-family: 'WorkSans';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf) format("truetype");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
/* font-variation-settings: 'wght'300; */
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
font-variation-settings: 'wght' 350;
|
||||
}
|
||||
|
||||
a.mavenLinkBold {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h1,
|
||||
@ -88,14 +116,27 @@
|
||||
h6,
|
||||
header,
|
||||
.header-font {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-variation-settings: 'wght' 300;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<link rel='stylesheet' href='_emanote-static/inverted-tree.css' />
|
||||
|
||||
<link rel='stylesheet' href='https://files.stork-search.net/releases/v1.5.0/flat.css' />
|
||||
<link rel='stylesheet' href='_emanote-static/stork/flat.css' />
|
||||
<!-- Custom Stork-search styling for Emanote -->
|
||||
<style>
|
||||
#stork-search-container {
|
||||
@ -109,7 +150,7 @@
|
||||
</style>
|
||||
|
||||
|
||||
<script src='https://files.stork-search.net/releases/v1.5.0/stork.js'></script>
|
||||
<script src='_emanote-static/stork/stork.js'></script>
|
||||
|
||||
|
||||
<script data-emanote-base-url='/'>
|
||||
@ -135,6 +176,7 @@
|
||||
const indexUrl = baseUrl + '-/stork.st';
|
||||
if (document.readyState !== 'complete') {
|
||||
window.addEventListener('load', function () {
|
||||
stork.initialize(baseUrl + '_emanote-static/stork/stork.wasm');
|
||||
stork.register(indexName, indexUrl);
|
||||
});
|
||||
|
||||
@ -476,13 +518,13 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Haskell' href='Haskell'>
|
||||
Haskell
|
||||
<a class='hover:underline truncate' title='Coding' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='5 children inside'>
|
||||
5
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
@ -541,6 +583,82 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Opinions' href='Opinions'>
|
||||
Opinions
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Todo' href='TODO'>
|
||||
Todo
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -701,7 +819,7 @@
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
ML-Specialist at <a href='https://jobware.de' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Jobware</a> (Paderborn; german Job-Advertising-Platform)
|
||||
ML-Specialist at <a href='https://jobware.de' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Jobware</a> (Paderborn; german Job-Advertising-Platform)
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
@ -833,7 +951,7 @@
|
||||
</li>
|
||||
|
||||
<li>
|
||||
Lecture “<a href='Haskell/FFPiH' class='text-purple-600 mavenLinkBold hover:underline' data-wikilink-type='WikiLinkNormal'>Intermediate Functional Programming in Haskell</a>”
|
||||
Lecture “<a href='Coding/Haskell/FFPiH' class='text-purple-600 mavenLinkBold hover:underline' data-wikilink-type='WikiLinkNormal'>Intermediate Functional Programming in Haskell</a>”
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
@ -873,15 +991,15 @@
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
Framework: <a href='https://github.com/mbotsch/revealSlides' class='text-purple-600 hover:underline' target='_blank' rel='noopener'><a href='https://github.com/mbotsch/revealSlides' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>https://github.com/mbotsch/revealSlides</a></a>
|
||||
Framework: <a href='https://github.com/mbotsch/revealSlides' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'><a href='https://github.com/mbotsch/revealSlides' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>https://github.com/mbotsch/revealSlides</a></a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
Example: <a href='https://github.com/mbotsch/eLearning' class='text-purple-600 hover:underline' target='_blank' rel='noopener'><a href='https://github.com/mbotsch/eLearning' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>https://github.com/mbotsch/eLearning</a></a>
|
||||
Example: <a href='https://github.com/mbotsch/eLearning' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'><a href='https://github.com/mbotsch/eLearning' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>https://github.com/mbotsch/eLearning</a></a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
Pandoc-Filters: <a href='https://github.com/mbotsch/pandoc-slide-filter' class='text-purple-600 hover:underline' target='_blank' rel='noopener'><a href='https://github.com/mbotsch/pandoc-slide-filter' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>https://github.com/mbotsch/pandoc-slide-filter</a></a>
|
||||
Pandoc-Filters: <a href='https://github.com/mbotsch/pandoc-slide-filter' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'><a href='https://github.com/mbotsch/pandoc-slide-filter' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>https://github.com/mbotsch/pandoc-slide-filter</a></a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
@ -898,6 +1016,7 @@
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<!-- div class="flex items-center justify-center mt-2">
|
||||
<ema:metadata>
|
||||
<with var="template">
|
||||
@ -927,7 +1046,7 @@
|
||||
<div class='mb-4 overflow-auto text-sm text-gray-500'>
|
||||
|
||||
<div class='pl-2 mt-2 border-l-2 border-purple-200 hover:border-purple-500'>
|
||||
<div>Driver behind getting <a href='' class='text-gray-600 font-bold hover:bg-gray-50'><a href='https://github.com/jgm/pandoc/issues/168' class='text-gray-600 hover:underline' target='_blank' rel='noopener'>https://github.com/jgm/pandoc/issues/168</a></a> implemented and merged, because we needed it for our slide-filters (see <a href='About/Work' class='text-gray-600 font-bold hover:bg-gray-50' data-wikilink-type='WikiLinkBranch'>Work-Experience</a> -> Development of Filters)</div>
|
||||
<div>Driver behind getting <a href='' class='text-gray-600 font-bold hover:bg-gray-50'><a href='https://github.com/jgm/pandoc/issues/168' class='text-gray-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>https://github.com/jgm/pandoc/issues/168</a></a> implemented and merged, because we needed it for our slide-filters (see <a href='About/Work' class='text-gray-600 font-bold hover:bg-gray-50' data-wikilink-type='WikiLinkBranch'>Work-Experience</a> -> Development of Filters)</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@ -980,7 +1099,7 @@
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.7.3.0'>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.8.1.10'>
|
||||
<img class='w-6 h-6 hover:text-purple-700' src='_emanote-static/emanote-logo.svg' />
|
||||
</a>
|
||||
</div>
|
||||
@ -1012,6 +1131,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
BIN
static_gen/About/avatar_neu.png
Normal file
BIN
static_gen/About/avatar_neu.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 170 KiB |
@ -47,37 +47,65 @@
|
||||
|
||||
|
||||
|
||||
<link href='tailwind.css?instanceId=ecadcd50-ecaf-4d6e-98ea-7932c3b3d351' rel='stylesheet' type='text/css' />
|
||||
<link href='tailwind.css?instanceId=1ec53b8c-7991-423c-8b17-b92e36792648' rel='stylesheet' type='text/css' />
|
||||
|
||||
<!-- Heist error element -->
|
||||
<style>
|
||||
/* Heist error element */
|
||||
strong.error {
|
||||
color: lightcoral;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
/* External link icon */
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"])::after {
|
||||
/* filter converts black to rgb(156,163,175) */
|
||||
filter: invert(71%) sepia(3%) saturate(904%) hue-rotate(179deg) brightness(92%) contrast(87%);
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"]):hover::after {
|
||||
/* filter converts black to rgb(175,85,99) */
|
||||
filter: invert(32%) sepia(10%) saturate(834%) hue-rotate(176deg) brightness(92%) contrast(88%);
|
||||
}
|
||||
|
||||
a[data-linkicon=""]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon=none]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon="external"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
a[data-linkicon="external"][href^="mailto:"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z' /%3E%3C/svg%3E");
|
||||
}
|
||||
</style>
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'MavenPro';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf) format("truetype");
|
||||
font-family: 'WorkSans';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf) format("truetype");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
/* font-variation-settings: 'wght'300; */
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
font-variation-settings: 'wght' 350;
|
||||
}
|
||||
|
||||
a.mavenLinkBold {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h1,
|
||||
@ -88,14 +116,27 @@
|
||||
h6,
|
||||
header,
|
||||
.header-font {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-variation-settings: 'wght' 300;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<link rel='stylesheet' href='_emanote-static/inverted-tree.css' />
|
||||
|
||||
<link rel='stylesheet' href='https://files.stork-search.net/releases/v1.5.0/flat.css' />
|
||||
<link rel='stylesheet' href='_emanote-static/stork/flat.css' />
|
||||
<!-- Custom Stork-search styling for Emanote -->
|
||||
<style>
|
||||
#stork-search-container {
|
||||
@ -109,7 +150,7 @@
|
||||
</style>
|
||||
|
||||
|
||||
<script src='https://files.stork-search.net/releases/v1.5.0/stork.js'></script>
|
||||
<script src='_emanote-static/stork/stork.js'></script>
|
||||
|
||||
|
||||
<script data-emanote-base-url='/'>
|
||||
@ -135,6 +176,7 @@
|
||||
const indexUrl = baseUrl + '-/stork.st';
|
||||
if (document.readyState !== 'complete') {
|
||||
window.addEventListener('load', function () {
|
||||
stork.initialize(baseUrl + '_emanote-static/stork/stork.wasm');
|
||||
stork.register(indexName, indexUrl);
|
||||
});
|
||||
|
||||
@ -391,13 +433,13 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Haskell' href='Haskell'>
|
||||
Haskell
|
||||
<a class='hover:underline truncate' title='Coding' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='5 children inside'>
|
||||
5
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
@ -456,6 +498,82 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Opinions' href='Opinions'>
|
||||
Opinions
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Todo' href='TODO'>
|
||||
Todo
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -565,26 +683,31 @@
|
||||
<!-- What goes in this file will appear on top of note body-->
|
||||
<nav>
|
||||
<div class='mb-8'>
|
||||
<header class='pb-2 mb-2 font-semibold text-gray-600'>
|
||||
<header data-nosnippet class='pb-2 mb-2 font-semibold text-gray-600'>
|
||||
Pages matching path './*'
|
||||
</header>
|
||||
<ul>
|
||||
|
||||
<div class='flex flex-wrap my-2'>
|
||||
<li>
|
||||
<div class='flex flex-wrap my-2'>
|
||||
|
||||
<span class='mr-2 text-right text-gray-600'>
|
||||
</span>
|
||||
<span data-nosnippet class='mr-2 text-right text-gray-600'>
|
||||
</span>
|
||||
|
||||
<a class='flex-1 text-purple-600 mavenLinkBold border-l-2 pl-2 hover:underline' href='Android/Einrichtung'>
|
||||
Einrichtung Android-Smartphones
|
||||
</a>
|
||||
</div>
|
||||
<a class='flex-1 text-purple-600 mavenLinkBold border-l-2 pl-2 hover:underline' href='Android/Einrichtung'>
|
||||
Einrichtung Android-Smartphones
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</nav><div class='text-gray-400 border-t-2 inline-block pt-0.5'>
|
||||
<p class='mb-3'>
|
||||
Note: To override the auto-generated content here, create a file named one of: <span class='font-mono text-sm'>Android.md, Android.org</span>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- div class="flex items-center justify-center mt-2">
|
||||
<ema:metadata>
|
||||
<with var="template">
|
||||
@ -630,7 +753,7 @@
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.7.3.0'>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.8.1.10'>
|
||||
<img class='w-6 h-6 hover:text-purple-700' src='_emanote-static/emanote-logo.svg' />
|
||||
</a>
|
||||
</div>
|
||||
@ -662,6 +785,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
@ -47,37 +47,65 @@
|
||||
|
||||
|
||||
|
||||
<link href='tailwind.css?instanceId=ecadcd50-ecaf-4d6e-98ea-7932c3b3d351' rel='stylesheet' type='text/css' />
|
||||
<link href='tailwind.css?instanceId=1ec53b8c-7991-423c-8b17-b92e36792648' rel='stylesheet' type='text/css' />
|
||||
|
||||
<!-- Heist error element -->
|
||||
<style>
|
||||
/* Heist error element */
|
||||
strong.error {
|
||||
color: lightcoral;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
/* External link icon */
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"])::after {
|
||||
/* filter converts black to rgb(156,163,175) */
|
||||
filter: invert(71%) sepia(3%) saturate(904%) hue-rotate(179deg) brightness(92%) contrast(87%);
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"]):hover::after {
|
||||
/* filter converts black to rgb(175,85,99) */
|
||||
filter: invert(32%) sepia(10%) saturate(834%) hue-rotate(176deg) brightness(92%) contrast(88%);
|
||||
}
|
||||
|
||||
a[data-linkicon=""]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon=none]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon="external"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
a[data-linkicon="external"][href^="mailto:"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z' /%3E%3C/svg%3E");
|
||||
}
|
||||
</style>
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'MavenPro';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf) format("truetype");
|
||||
font-family: 'WorkSans';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf) format("truetype");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
/* font-variation-settings: 'wght'300; */
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
font-variation-settings: 'wght' 350;
|
||||
}
|
||||
|
||||
a.mavenLinkBold {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h1,
|
||||
@ -88,14 +116,27 @@
|
||||
h6,
|
||||
header,
|
||||
.header-font {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-variation-settings: 'wght' 300;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<link rel='stylesheet' href='_emanote-static/inverted-tree.css' />
|
||||
|
||||
<link rel='stylesheet' href='https://files.stork-search.net/releases/v1.5.0/flat.css' />
|
||||
<link rel='stylesheet' href='_emanote-static/stork/flat.css' />
|
||||
<!-- Custom Stork-search styling for Emanote -->
|
||||
<style>
|
||||
#stork-search-container {
|
||||
@ -109,7 +150,7 @@
|
||||
</style>
|
||||
|
||||
|
||||
<script src='https://files.stork-search.net/releases/v1.5.0/stork.js'></script>
|
||||
<script src='_emanote-static/stork/stork.js'></script>
|
||||
|
||||
|
||||
<script data-emanote-base-url='/'>
|
||||
@ -135,6 +176,7 @@
|
||||
const indexUrl = baseUrl + '-/stork.st';
|
||||
if (document.readyState !== 'complete') {
|
||||
window.addEventListener('load', function () {
|
||||
stork.initialize(baseUrl + '_emanote-static/stork/stork.wasm');
|
||||
stork.register(indexName, indexUrl);
|
||||
});
|
||||
|
||||
@ -402,13 +444,13 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Haskell' href='Haskell'>
|
||||
Haskell
|
||||
<a class='hover:underline truncate' title='Coding' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='5 children inside'>
|
||||
5
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
@ -467,6 +509,82 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Opinions' href='Opinions'>
|
||||
Opinions
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Todo' href='TODO'>
|
||||
Todo
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -599,7 +717,7 @@
|
||||
</p>
|
||||
<h2 id='rom' class='inline-block mt-6 mb-4 text-4xl font-bold text-gray-700 border-b-2'>ROM</h2>
|
||||
<p class='mb-3'>
|
||||
Ich benutze <a href='http://forum.xda-developers.com/showthread.php?t=840040' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Android Revolution HD</a> - die auf dem Original von HTC aufsetzt und für mich extrem stabil läuft (kein Absturz bisher). Bei anderen ROMs (CyanogenMod, ..) hab ich bei anderen Leuten mäßige Erfahrungen gemacht, die ein weiteres Patchen etc. notwendig gemacht haben. Allerdings kann man hier auch durchaus flexibel sein.
|
||||
Ich benutze <a href='http://forum.xda-developers.com/showthread.php?t=840040' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Android Revolution HD</a> - die auf dem Original von HTC aufsetzt und für mich extrem stabil läuft (kein Absturz bisher). Bei anderen ROMs (CyanogenMod, ..) hab ich bei anderen Leuten mäßige Erfahrungen gemacht, die ein weiteres Patchen etc. notwendig gemacht haben. Allerdings kann man hier auch durchaus flexibel sein.
|
||||
</p>
|
||||
<h2 id='interface' class='inline-block mt-6 mb-4 text-4xl font-bold text-gray-700 border-b-2'>Interface</h2>
|
||||
<p class='mb-3'>
|
||||
@ -607,7 +725,7 @@
|
||||
</p>
|
||||
|
||||
<p class='mb-3'>
|
||||
Daher nutze ich den <a href='https://play.google.com/store/apps/details?id=ginlemon.flowerfree' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>SmartLauncher</a> (<a href='http://www.youtube.com/watch?v=DdJLYqNi7dY' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>YouTube-Preview</a>) mit <a href='https://play.google.com/store/apps/details?id=ginlemon.sltheme.oxygen' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>KDE-Theme</a> und <a href='https://play.google.com/store/apps/details?id=ginlemon.smartlauncher.notifier' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Notify-App</a>
|
||||
Daher nutze ich den <a href='https://play.google.com/store/apps/details?id=ginlemon.flowerfree' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>SmartLauncher</a> (<a href='http://www.youtube.com/watch?v=DdJLYqNi7dY' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>YouTube-Preview</a>) mit <a href='https://play.google.com/store/apps/details?id=ginlemon.sltheme.oxygen' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>KDE-Theme</a> und <a href='https://play.google.com/store/apps/details?id=ginlemon.smartlauncher.notifier' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Notify-App</a>
|
||||
</p>
|
||||
|
||||
<p class='mb-3'>
|
||||
@ -615,11 +733,11 @@
|
||||
</p>
|
||||
<h2 id='kalenderkontakte' class='inline-block mt-6 mb-4 text-4xl font-bold text-gray-700 border-b-2'>Kalender/Kontakte</h2>
|
||||
<p class='mb-3'>
|
||||
Kürzlich habe ich meinen Kalender eingerichtet. Ich wollte, dass dieser synchron ist mit meiner (<a href='http://owncloud.org/' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>owncloud</a>), welche auf meinem Server läuft. Dies kann man sich auch selbst zu Haus einrichten (z.b. auf einem Raspberry Pi und per dyndns nach außen freigeben). Ich gebe meine Kalender und Kontaktdaten ungerne an Google, Yahoo, Facebook, etc. pp.
|
||||
Kürzlich habe ich meinen Kalender eingerichtet. Ich wollte, dass dieser synchron ist mit meiner (<a href='http://owncloud.org/' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>owncloud</a>), welche auf meinem Server läuft. Dies kann man sich auch selbst zu Haus einrichten (z.b. auf einem Raspberry Pi und per dyndns nach außen freigeben). Ich gebe meine Kalender und Kontaktdaten ungerne an Google, Yahoo, Facebook, etc. pp.
|
||||
</p>
|
||||
|
||||
<p class='mb-3'>
|
||||
<a href='https://play.google.com/store/apps/details?id=net.daum.android.solcalendar' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>SolCalendar</a> ist einer der wenigen, welche das CalDav-Format frei konfigurierbar unterstützten. Bei vielen anderen hat man dort Google oder Yahoo zur Auswahl - aber kann keinen eigenen Server eingeben. Dies synchronisiert auch in den Android-Eigenen Kalender hinein (Vorsicht: Google-Kalender-Synchronisation ausschalten! Sonst hat man wieder alles da..) und kann somit z.b. vom Standard “Sperrbildschirm” angezeigt werden.
|
||||
<a href='https://play.google.com/store/apps/details?id=net.daum.android.solcalendar' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>SolCalendar</a> ist einer der wenigen, welche das CalDav-Format frei konfigurierbar unterstützten. Bei vielen anderen hat man dort Google oder Yahoo zur Auswahl - aber kann keinen eigenen Server eingeben. Dies synchronisiert auch in den Android-Eigenen Kalender hinein (Vorsicht: Google-Kalender-Synchronisation ausschalten! Sonst hat man wieder alles da..) und kann somit z.b. vom Standard “Sperrbildschirm” angezeigt werden.
|
||||
</p>
|
||||
|
||||
<p class='mb-3'>
|
||||
@ -627,7 +745,7 @@
|
||||
</p>
|
||||
|
||||
<p class='mb-3'>
|
||||
Für die Kontakte lege ich jedem diesen Programmierer ans Herz: <a href='https://play.google.com/store/apps/developer?id=Marten+Gajda' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Marten Gajda</a> - sämtliche Apps funktionieren miteinander, sind aber zum Teil kostenbehaftet. CardDav Sync free synchronisiert Kontakte allerdings tadellos. Für den Kalender (mit ähnlichen Features wie beim SolCalendar) werden aber 2,59€ fällig. Langfristig soll dieser aber auch OpenSource (und damit kostenfrei) werden.
|
||||
Für die Kontakte lege ich jedem diesen Programmierer ans Herz: <a href='https://play.google.com/store/apps/developer?id=Marten+Gajda' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Marten Gajda</a> - sämtliche Apps funktionieren miteinander, sind aber zum Teil kostenbehaftet. CardDav Sync free synchronisiert Kontakte allerdings tadellos. Für den Kalender (mit ähnlichen Features wie beim SolCalendar) werden aber 2,59€ fällig. Langfristig soll dieser aber auch OpenSource (und damit kostenfrei) werden.
|
||||
</p>
|
||||
<h2 id='nützliche-apps' class='inline-block mt-6 mb-4 text-4xl font-bold text-gray-700 border-b-2'>Nützliche Apps</h2>
|
||||
<p class='mb-3'>
|
||||
@ -637,51 +755,52 @@
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
<a href='https://play.google.com/store/apps/details?id=com.estrongs.android.pop' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>ES Datei Explorer</a> Dateien öffnen, verschieben, suchen, … Inkl. Media-Player etc.
|
||||
<a href='https://play.google.com/store/apps/details?id=com.estrongs.android.pop' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>ES Datei Explorer</a> Dateien öffnen, verschieben, suchen, … Inkl. Media-Player etc.
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='https://play.google.com/store/apps/details?id=com.suishouxie.freenote' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Free Note</a> Kurze Notizen
|
||||
<a href='https://play.google.com/store/apps/details?id=com.suishouxie.freenote' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Free Note</a> Kurze Notizen
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='https://play.google.com/store/apps/details?id=com.aldiko.android' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Alkido</a> eBook-Reader (auch für pdf)
|
||||
<a href='https://play.google.com/store/apps/details?id=com.aldiko.android' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Alkido</a> eBook-Reader (auch für pdf)
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='https://play.google.com/store/apps/details?id=dk.tacit.android.foldersync.lite' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Folder Sync</a> Sync von Dateien mit meiner ownCloud (z.Zt. nur manueller batch-upload von Fotos bei mir)
|
||||
<a href='https://play.google.com/store/apps/details?id=dk.tacit.android.foldersync.lite' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Folder Sync</a> Sync von Dateien mit meiner ownCloud (z.Zt. nur manueller batch-upload von Fotos bei mir)
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='https://play.google.com/store/apps/details?id=com.flipdog.crypto.plugin' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>GnuPG-Client</a>
|
||||
<a href='https://play.google.com/store/apps/details?id=com.flipdog.crypto.plugin' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>GnuPG-Client</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='https://play.google.com/store/apps/details?id=com.fsck.k9' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Mail</a>
|
||||
<a href='https://play.google.com/store/apps/details?id=com.fsck.k9' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Mail</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='https://play.google.com/store/apps/details?id=org.videolan.vlc.betav7neon' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>VLC</a> Alternativer Media-Player für “komische” Formate, kaputte Dateien etc.
|
||||
<a href='https://play.google.com/store/apps/details?id=org.videolan.vlc.betav7neon' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>VLC</a> Alternativer Media-Player für “komische” Formate, kaputte Dateien etc.
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='https://play.google.com/store/apps/details?id=com.rootuninstaller.free' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Root Uninstaller</a> Entfernen von Applikationen auf der Systempartition (z.b. Facebook, Chromium, …) Vorsicht: KANN eine Neuinstallation nötig machen, wenn wichtige Dinge gelöscht werden!
|
||||
<a href='https://play.google.com/store/apps/details?id=com.rootuninstaller.free' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Root Uninstaller</a> Entfernen von Applikationen auf der Systempartition (z.b. Facebook, Chromium, …) Vorsicht: KANN eine Neuinstallation nötig machen, wenn wichtige Dinge gelöscht werden!
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='https://play.google.com/store/apps/details?id=com.ichi2.anki' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>AnkiDroid</a> Vokabeln/Sprachen etc. lernen unterwegs.
|
||||
<a href='https://play.google.com/store/apps/details?id=com.ichi2.anki' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>AnkiDroid</a> Vokabeln/Sprachen etc. lernen unterwegs.
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<h2 id='lmt' class='inline-block mt-6 mb-4 text-4xl font-bold text-gray-700 border-b-2'>LMT</h2>
|
||||
<p class='mb-3'>
|
||||
Der letzte Schrei auf gerooteten Smartphones ist LMT: <a href='http://www.youtube.com/watch?v=oha8ijaD9dc' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>YouTube-Demo</a>.
|
||||
Der letzte Schrei auf gerooteten Smartphones ist LMT: <a href='http://www.youtube.com/watch?v=oha8ijaD9dc' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>YouTube-Demo</a>.
|
||||
</p>
|
||||
|
||||
<p class='mb-3'>
|
||||
<a href='http://pocketnow.com/2013/02/05/lmt-launcher-for-android' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Installations-Anleitung</a>
|
||||
<a href='http://pocketnow.com/2013/02/05/lmt-launcher-for-android' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Installations-Anleitung</a>
|
||||
</p>
|
||||
|
||||
|
||||
<!-- div class="flex items-center justify-center mt-2">
|
||||
<ema:metadata>
|
||||
<with var="template">
|
||||
@ -727,7 +846,7 @@
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.7.3.0'>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.8.1.10'>
|
||||
<img class='w-6 h-6 hover:text-purple-700' src='_emanote-static/emanote-logo.svg' />
|
||||
</a>
|
||||
</div>
|
||||
@ -759,6 +878,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
844
static_gen/Coding.html
Normal file
844
static_gen/Coding.html
Normal file
@ -0,0 +1,844 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang='en'>
|
||||
|
||||
<head>
|
||||
<meta charset='UTF-8' />
|
||||
<meta name='viewport' content='width=device-width, initial-scale=1' />
|
||||
<title>
|
||||
Coding – Home
|
||||
</title>
|
||||
|
||||
|
||||
<meta property='og:description' content />
|
||||
<meta property='og:site_name' content='Home' />
|
||||
<meta property='og:image' content />
|
||||
<meta property='og:type' content='website' />
|
||||
<meta property='og:title' content='Coding' />
|
||||
|
||||
|
||||
<base href='/' />
|
||||
<link href='favicon.svg' rel='icon' />
|
||||
|
||||
<script>
|
||||
window.MathJax = {
|
||||
startup: {
|
||||
ready: () => {
|
||||
MathJax.startup.defaultReady();
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script async id='MathJax-script' src='https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js'></script>
|
||||
|
||||
<!-- mermaid.js --><script src='https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js'></script>
|
||||
<script>
|
||||
mermaid.initialize({startOnLoad:false});
|
||||
mermaid.init(undefined,document.querySelectorAll(".mermaid"));
|
||||
</script>
|
||||
|
||||
<!-- highlight.js -->
|
||||
<link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/styles/hybrid.min.css' />
|
||||
<script src='https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/highlight.min.js'></script>
|
||||
<!-- Include languages that Emanote itself uses -->
|
||||
<script src='https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/languages/haskell.min.js'></script>
|
||||
<script src='https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/languages/nix.min.js'></script>
|
||||
<script>hljs.highlightAll();</script>
|
||||
|
||||
|
||||
|
||||
|
||||
<link href='tailwind.css?instanceId=1ec53b8c-7991-423c-8b17-b92e36792648' rel='stylesheet' type='text/css' />
|
||||
|
||||
<style>
|
||||
/* Heist error element */
|
||||
strong.error {
|
||||
color: lightcoral;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
/* External link icon */
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"])::after {
|
||||
/* filter converts black to rgb(156,163,175) */
|
||||
filter: invert(71%) sepia(3%) saturate(904%) hue-rotate(179deg) brightness(92%) contrast(87%);
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"]):hover::after {
|
||||
/* filter converts black to rgb(175,85,99) */
|
||||
filter: invert(32%) sepia(10%) saturate(834%) hue-rotate(176deg) brightness(92%) contrast(88%);
|
||||
}
|
||||
|
||||
a[data-linkicon=""]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon=none]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon="external"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
a[data-linkicon="external"][href^="mailto:"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z' /%3E%3C/svg%3E");
|
||||
}
|
||||
</style>
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'WorkSans';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf) format("truetype");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
font-variation-settings: 'wght' 350;
|
||||
}
|
||||
|
||||
a.mavenLinkBold {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6,
|
||||
header,
|
||||
.header-font {
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-variation-settings: 'wght' 300;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<link rel='stylesheet' href='_emanote-static/inverted-tree.css' />
|
||||
|
||||
<link rel='stylesheet' href='_emanote-static/stork/flat.css' />
|
||||
<!-- Custom Stork-search styling for Emanote -->
|
||||
<style>
|
||||
#stork-search-container {
|
||||
z-index: 1000;
|
||||
background-color: rgb(15 23 42/.8);
|
||||
}
|
||||
|
||||
.stork-overflow-hidden-important {
|
||||
overflow: hidden !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
<script src='_emanote-static/stork/stork.js'></script>
|
||||
|
||||
|
||||
<script data-emanote-base-url='/'>
|
||||
window.emanote = {};
|
||||
window.emanote.stork = {
|
||||
searchShown: false,
|
||||
toggleSearch: function () {
|
||||
document.getElementById('stork-search-container').classList.toggle('hidden');
|
||||
window.emanote.stork.searchShown = document.body.classList.toggle('stork-overflow-hidden-important');
|
||||
if (window.emanote.stork.searchShown) {
|
||||
document.getElementById('stork-search-input').focus();
|
||||
}
|
||||
},
|
||||
clearSearch: function () {
|
||||
document.getElementById('stork-search-container').classList.add('hidden');
|
||||
document.body.classList.remove('stork-overflow-hidden-important');
|
||||
window.emanote.stork.searchShown = false;
|
||||
},
|
||||
|
||||
init: function () {
|
||||
const indexName = 'emanote-search'; // used to match input[data-stork] attribute value
|
||||
const baseUrl = document.currentScript.getAttribute('data-emanote-base-url') || '/';
|
||||
const indexUrl = baseUrl + '-/stork.st';
|
||||
if (document.readyState !== 'complete') {
|
||||
window.addEventListener('load', function () {
|
||||
stork.initialize(baseUrl + '_emanote-static/stork/stork.wasm');
|
||||
stork.register(indexName, indexUrl);
|
||||
});
|
||||
|
||||
document.addEventListener('keydown', event => {
|
||||
if (window.emanote.stork.searchShown && event.key === 'Escape') {
|
||||
window.emanote.stork.clearSearch();
|
||||
event.preventDefault();
|
||||
} else if ((event.key == 'k' || event.key == 'K') && (event.ctrlKey || event.metaKey)) {
|
||||
window.emanote.stork.toggleSearch();
|
||||
event.preventDefault();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// Override existing on Ema's hot-reload
|
||||
stork.register(indexName, indexUrl, { forceOverwrite: true });
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
window.emanote.stork.init();
|
||||
</script>
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<!-- DoNotFormat -->
|
||||
|
||||
|
||||
|
||||
<!-- DoNotFormat -->
|
||||
|
||||
<body class='bg-gray-400 overflow-y-scroll'>
|
||||
|
||||
<div class='container mx-auto'>
|
||||
|
||||
<nav id='breadcrumbs' class='w-full text-gray-700 md:hidden'>
|
||||
<div class='flex justify-left'>
|
||||
<div class='w-full px-2 py-2 bg-gray-50'>
|
||||
<ul class='flex flex-wrap text-lg'>
|
||||
<li class='inline-flex items-center'>
|
||||
|
||||
|
||||
<img style='width: 1rem;' src='favicon.svg' />
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li class='inline-flex items-center'>
|
||||
<a class='px-1 font-bold' href=''>
|
||||
Home
|
||||
</a>
|
||||
<svg fill='currentColor' viewBox='0 0 20 20' class='w-auto h-5 text-gray-400'>
|
||||
<path fill-rule='evenodd' d='M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z' clip-rule='evenodd'></path>
|
||||
</svg>
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
<button class='inline px-2 py-1 bg-gray-50 outline-none cursor-pointer focus:outline-none' title='Search (Ctrl+K)' type='button' onclick='window.emanote.stork.toggleSearch()'>
|
||||
<svg xmlns='http://www.w3.org/2000/svg' style='width: 1rem;' class='hover:text-purple-700' f
|
||||
fill='none' viewBox='0 0 24 24' stroke='currentColor' stroke-width='2'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' d='M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z'></path>
|
||||
</svg>
|
||||
</button>
|
||||
<button class='inline px-2 py-1 text-white bg-purple-600 outline-none cursor-pointer focus:outline-none' title='Toggle sidebar' type='button' onclick="toggleHidden('sidebar')">
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4' fill='none' viewBox='0 0 24 24' stroke='currentColor'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 6h16M4 12h16M4 18h16'></path>
|
||||
</svg>
|
||||
</button>
|
||||
<script>
|
||||
function toggleHidden(elemId) {
|
||||
document.getElementById(elemId).classList.toggle("hidden");
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div id='container' class='flex flex-nowrap flex-col md:flex-row bg-gray-50 md:mt-8 md:shadow-2xl md:mb-8'>
|
||||
<!-- Sidebar column -->
|
||||
<nav id='sidebar' class='flex-shrink hidden leading-relaxed md:block md:sticky md:top-0 md:h-full md:w-48 xl:w-64'>
|
||||
<div class='px-2 py-2 text-gray-800'>
|
||||
<div id='indexing-links' class='flex flex-row float-right p-2 space-x-2 text-gray-500'>
|
||||
<a href='-/tags' title='View tags'>
|
||||
<svg style='width: 1rem;' class='hover:text-purple-700' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z'>
|
||||
</path>
|
||||
</svg>
|
||||
</a>
|
||||
<a href='-/all' title='Expand full tree'>
|
||||
<svg style='width: 1rem;' class='hover:text-purple-700' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8V4m0 0h4M4 4l5 5m11-1V4m0 0h-4m4 0l-5 5M4 16v4m0 0h4m-4 0l5-5m11 5l-5-5m5 5v-4m0 4h-4'>
|
||||
</path>
|
||||
</svg>
|
||||
</a>
|
||||
<a title='Search (Ctrl+K)' class='cursor-pointer' onclick='window.emanote.stork.toggleSearch()'>
|
||||
<svg xmlns='http://www.w3.org/2000/svg' style='width: 1rem;' class='hover:text-purple-700' f
|
||||
fill='none' viewBox='0 0 24 24' stroke='currentColor' stroke-width='2'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' d='M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z'></path>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div id='site-logo' class='pl-2'>
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
<a href='' title='Go to Home'>
|
||||
|
||||
|
||||
<!-- The style width attribute here is to prevent huge
|
||||
icon from displaying at those rare occasions when Tailwind
|
||||
hasn't kicked in immediately on page load
|
||||
-->
|
||||
<img style='width: 1rem;' class='transition transform hover:scale-110 hover:opacity-80' src='favicon.svg' />
|
||||
|
||||
|
||||
</a>
|
||||
<a class='font-bold truncate' title='Go to Home' href=''>
|
||||
Home
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='About' href='About'>
|
||||
About
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='3 children inside'>
|
||||
3
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Android' href='Android'>
|
||||
Android
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='1 children inside'>
|
||||
1
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-700' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path fill-rule='evenodd' d='M2 6a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1H8a3 3 0 00-3 3v1.5a1.5 1.5 0 01-3 0V6z' clip-rule='evenodd'></path>
|
||||
<path d='M6 12a2 2 0 012-2h8a2 2 0 012 2v2a2 2 0 01-2 2H2h2a2 2 0 002-2v-2z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold text-purple-600 hover:underline truncate' title='Coding' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Haskell' href='Coding/Haskell'>
|
||||
Haskell
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='5 children inside'>
|
||||
5
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Openapi-generator' href='Coding/OpenAPI'>
|
||||
Openapi-generator
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Logik für Dummies' href='Logik'>
|
||||
Logik für Dummies
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Opinions' href='Opinions'>
|
||||
Opinions
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Todo' href='TODO'>
|
||||
Todo
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Uni' href='Uni'>
|
||||
Uni
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Unix' href='Unix'>
|
||||
Unix
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='1 children inside'>
|
||||
1
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- Main body column -->
|
||||
<div class='flex-1 w-full overflow-x-auto bg-white'>
|
||||
<main class='px-4 py-4'>
|
||||
<!-- DoNotFormat -->
|
||||
<!-- DoNotFormat -->
|
||||
|
||||
<nav id='uptree' class='flipped tree' style='transform-origin: 50%;'>
|
||||
<ul class='root'>
|
||||
<li>
|
||||
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href=''>
|
||||
Home
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<h1 class='flex items-end justify-center mb-4 p-3 bg-purple-100 text-5xl font-extrabold text-black rounded'>
|
||||
<a class='z-40 tracking-tighter '>
|
||||
Coding
|
||||
</a>
|
||||
</h1>
|
||||
<article class='overflow-auto'>
|
||||
<!-- What goes in this file will appear on top of note body-->
|
||||
<nav>
|
||||
<div class='mb-8'>
|
||||
<header data-nosnippet class='pb-2 mb-2 font-semibold text-gray-600'>
|
||||
Pages matching path './*'
|
||||
</header>
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
<div class='flex flex-wrap my-2'>
|
||||
|
||||
<span data-nosnippet class='mr-2 text-right text-gray-600'>
|
||||
</span>
|
||||
|
||||
<a class='flex-1 text-purple-600 mavenLinkBold border-l-2 pl-2 hover:underline' href='Coding/Haskell'>
|
||||
Haskell
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<div class='flex flex-wrap my-2'>
|
||||
|
||||
<span data-nosnippet class='mr-2 text-right text-gray-600'>
|
||||
</span>
|
||||
|
||||
<a class='flex-1 text-purple-600 mavenLinkBold border-l-2 pl-2 hover:underline' href='Coding/OpenAPI'>
|
||||
Openapi-generator
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</nav><div class='text-gray-400 border-t-2 inline-block pt-0.5'>
|
||||
<p class='mb-3'>
|
||||
Note: To override the auto-generated content here, create a file named one of: <span class='font-mono text-sm'>Coding.md, Coding.org</span>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- div class="flex items-center justify-center mt-2">
|
||||
<ema:metadata>
|
||||
<with var="template">
|
||||
<a class="text-gray-300 hover:text-${theme}-600 text-sm" title="Edit this page on GitHub"
|
||||
href="${value:editBaseUrl}/${ema:note:source-path}">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z" />
|
||||
</svg>
|
||||
</a>
|
||||
</with>
|
||||
</ema:metadata>
|
||||
</div -->
|
||||
</article>
|
||||
<div class='flex flex-col lg:flex-row lg:space-x-2'>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<section class='flex flex-wrap items-end justify-center my-4 space-x-2 space-y-2 font-mono text-sm'>
|
||||
|
||||
</section>
|
||||
|
||||
<!-- What goes in this file will at the very end of the main div -->
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<footer class='flex items-center justify-center mt-2 mb-8 space-x-4 text-center text-gray-800'>
|
||||
|
||||
<div>
|
||||
<a href='' title='Go to Home page'>
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-6 h-6 hover:text-purple-700' fill='none' viewBox='0 0 24 24' stroke='currentColor'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6'></path>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='-/all' title='View Index'>
|
||||
<svg class='w-6 h-6 hover:text-purple-700' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8V4m0 0h4M4 4l5 5m11-1V4m0 0h-4m4 0l-5 5M4 16v4m0 0h4m-4 0l5-5m11 5l-5-5m5 5v-4m0 4h-4'>
|
||||
</path>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.8.1.10'>
|
||||
<img class='w-6 h-6 hover:text-purple-700' src='_emanote-static/emanote-logo.svg' />
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='-/tags' title='View tags'>
|
||||
<svg class='w-6 h-6 hover:text-purple-700' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z'>
|
||||
</path>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='-/tasks' title='View tasks'>
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-6 h-6 hover:text-purple-700' fill='none' viewBox='0 0 24 24' stroke='currentColor'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z'></path>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<div id='stork-search-container' class='hidden fixed w-screen h-screen inset-0 backdrop-filter backdrop-blur-sm'>
|
||||
<div class='fixed w-screen h-screen inset-0' onclick='window.emanote.stork.toggleSearch()'></div>
|
||||
|
||||
<div class='container mx-auto p-10 mt-10'>
|
||||
<div class='stork-wrapper-flat container mx-auto'>
|
||||
<input id='stork-search-input' data-stork='emanote-search' class='stork-input' placeholder='Search (Ctrl+K) ...' />
|
||||
<div data-stork='emanote-search-output' class='stork-output'></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
@ -5,15 +5,15 @@
|
||||
<meta charset='UTF-8' />
|
||||
<meta name='viewport' content='width=device-width, initial-scale=1' />
|
||||
<title>
|
||||
Talks und Posts zu Haskell – Home
|
||||
Haskell – Home
|
||||
</title>
|
||||
|
||||
|
||||
<meta property='og:description' content='Gründe Haskell zu nutzen und wo Vorteile liegen.' />
|
||||
<meta property='og:description' content />
|
||||
<meta property='og:site_name' content='Home' />
|
||||
<meta property='og:image' content />
|
||||
<meta property='og:type' content='website' />
|
||||
<meta property='og:title' content='Talks und Posts zu Haskell' />
|
||||
<meta property='og:title' content='Haskell' />
|
||||
|
||||
|
||||
<base href='/' />
|
||||
@ -47,37 +47,65 @@
|
||||
|
||||
|
||||
|
||||
<link href='tailwind.css?instanceId=ecadcd50-ecaf-4d6e-98ea-7932c3b3d351' rel='stylesheet' type='text/css' />
|
||||
<link href='tailwind.css?instanceId=1ec53b8c-7991-423c-8b17-b92e36792648' rel='stylesheet' type='text/css' />
|
||||
|
||||
<!-- Heist error element -->
|
||||
<style>
|
||||
/* Heist error element */
|
||||
strong.error {
|
||||
color: lightcoral;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
/* External link icon */
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"])::after {
|
||||
/* filter converts black to rgb(156,163,175) */
|
||||
filter: invert(71%) sepia(3%) saturate(904%) hue-rotate(179deg) brightness(92%) contrast(87%);
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"]):hover::after {
|
||||
/* filter converts black to rgb(175,85,99) */
|
||||
filter: invert(32%) sepia(10%) saturate(834%) hue-rotate(176deg) brightness(92%) contrast(88%);
|
||||
}
|
||||
|
||||
a[data-linkicon=""]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon=none]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon="external"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
a[data-linkicon="external"][href^="mailto:"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z' /%3E%3C/svg%3E");
|
||||
}
|
||||
</style>
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'MavenPro';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf) format("truetype");
|
||||
font-family: 'WorkSans';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf) format("truetype");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
/* font-variation-settings: 'wght'300; */
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
font-variation-settings: 'wght' 350;
|
||||
}
|
||||
|
||||
a.mavenLinkBold {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h1,
|
||||
@ -88,14 +116,27 @@
|
||||
h6,
|
||||
header,
|
||||
.header-font {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-variation-settings: 'wght' 300;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<link rel='stylesheet' href='_emanote-static/inverted-tree.css' />
|
||||
|
||||
<link rel='stylesheet' href='https://files.stork-search.net/releases/v1.5.0/flat.css' />
|
||||
<link rel='stylesheet' href='_emanote-static/stork/flat.css' />
|
||||
<!-- Custom Stork-search styling for Emanote -->
|
||||
<style>
|
||||
#stork-search-container {
|
||||
@ -109,7 +150,7 @@
|
||||
</style>
|
||||
|
||||
|
||||
<script src='https://files.stork-search.net/releases/v1.5.0/stork.js'></script>
|
||||
<script src='_emanote-static/stork/stork.js'></script>
|
||||
|
||||
|
||||
<script data-emanote-base-url='/'>
|
||||
@ -135,6 +176,7 @@
|
||||
const indexUrl = baseUrl + '-/stork.st';
|
||||
if (document.readyState !== 'complete') {
|
||||
window.addEventListener('load', function () {
|
||||
stork.initialize(baseUrl + '_emanote-static/stork/stork.wasm');
|
||||
stork.register(indexName, indexUrl);
|
||||
});
|
||||
|
||||
@ -193,8 +235,8 @@
|
||||
</li>
|
||||
|
||||
<li class='inline-flex items-center'>
|
||||
<a class='px-1 font-bold' href='Haskell'>
|
||||
Haskell
|
||||
<a class='px-1 font-bold' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
<svg fill='currentColor' viewBox='0 0 20 20' class='w-auto h-5 text-gray-400'>
|
||||
<path fill-rule='evenodd' d='M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z' clip-rule='evenodd'></path>
|
||||
@ -370,7 +412,39 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold hover:underline truncate' title='Haskell' href='Haskell'>
|
||||
<a class='font-bold hover:underline truncate' title='Coding' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-700' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path fill-rule='evenodd' d='M2 6a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1H8a3 3 0 00-3 3v1.5a1.5 1.5 0 01-3 0V6z' clip-rule='evenodd'></path>
|
||||
<path d='M6 12a2 2 0 012-2h8a2 2 0 012 2v2a2 2 0 01-2 2H2h2a2 2 0 002-2v-2z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold text-purple-600 hover:underline truncate' title='Haskell' href='Coding/Haskell'>
|
||||
Haskell
|
||||
</a>
|
||||
|
||||
@ -392,6 +466,43 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Talks und Posts zu Haskell' href='Coding/Haskell/Advantages'>
|
||||
Talks und Posts zu Haskell
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -403,7 +514,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Code-Snippets' href='Haskell/Code%20Snippets'>
|
||||
<a class='hover:underline truncate' title='Code-Snippets' href='Coding/Haskell/Code%20Snippets'>
|
||||
Code-Snippets
|
||||
</a>
|
||||
|
||||
@ -443,7 +554,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Fortgeschrittene funktionale Programmierung in Haskell' href='Haskell/FFPiH'>
|
||||
<a class='hover:underline truncate' title='Fortgeschrittene funktionale Programmierung in Haskell' href='Coding/Haskell/FFPiH'>
|
||||
Fortgeschrittene funktionale Programmierung in Haskell
|
||||
</a>
|
||||
|
||||
@ -480,7 +591,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Lenses' href='Haskell/Lenses'>
|
||||
<a class='hover:underline truncate' title='Lenses' href='Coding/Haskell/Lenses'>
|
||||
Lenses
|
||||
</a>
|
||||
|
||||
@ -503,41 +614,6 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold text-purple-600 hover:underline truncate' title='Talks und Posts zu Haskell' href='Haskell/Advantages'>
|
||||
Talks und Posts zu Haskell
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
@ -551,7 +627,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Webapp-Development in Haskell' href='Haskell/Webapp-Example'>
|
||||
<a class='hover:underline truncate' title='Webapp-Development in Haskell' href='Coding/Haskell/Webapp-Example'>
|
||||
Webapp-Development in Haskell
|
||||
</a>
|
||||
|
||||
@ -570,6 +646,46 @@
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Openapi-generator' href='Coding/OpenAPI'>
|
||||
Openapi-generator
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
@ -619,6 +735,82 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Opinions' href='Opinions'>
|
||||
Opinions
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Todo' href='TODO'>
|
||||
Todo
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -706,8 +898,8 @@
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href='Haskell'>
|
||||
Haskell
|
||||
<a href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@ -736,131 +928,85 @@
|
||||
</nav>
|
||||
<h1 class='flex items-end justify-center mb-4 p-3 bg-purple-100 text-5xl font-extrabold text-black rounded'>
|
||||
<a class='z-40 tracking-tighter '>
|
||||
Talks und Posts zu Haskell
|
||||
Haskell
|
||||
</a>
|
||||
</h1>
|
||||
<article class='overflow-auto'>
|
||||
<!-- What goes in this file will appear on top of note body-->
|
||||
<nav>
|
||||
<div class='mb-8'>
|
||||
<header data-nosnippet class='pb-2 mb-2 font-semibold text-gray-600'>
|
||||
Pages matching path './*'
|
||||
</header>
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
<div class='flex flex-wrap my-2'>
|
||||
|
||||
<span data-nosnippet class='mr-2 text-right text-gray-600'>
|
||||
</span>
|
||||
|
||||
<a class='flex-1 text-purple-600 mavenLinkBold border-l-2 pl-2 hover:underline' href='Coding/Haskell/Advantages'>
|
||||
Talks und Posts zu Haskell
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<div class='flex flex-wrap my-2'>
|
||||
|
||||
<span data-nosnippet class='mr-2 text-right text-gray-600'>
|
||||
</span>
|
||||
|
||||
<a class='flex-1 text-purple-600 mavenLinkBold border-l-2 pl-2 hover:underline' href='Coding/Haskell/Code%20Snippets'>
|
||||
Code-Snippets
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<div class='flex flex-wrap my-2'>
|
||||
|
||||
<span data-nosnippet class='mr-2 text-right text-gray-600'>
|
||||
</span>
|
||||
|
||||
<a class='flex-1 text-purple-600 mavenLinkBold border-l-2 pl-2 hover:underline' href='Coding/Haskell/FFPiH'>
|
||||
Fortgeschrittene funktionale Programmierung in Haskell
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<div class='flex flex-wrap my-2'>
|
||||
|
||||
<span data-nosnippet class='mr-2 text-right text-gray-600'>
|
||||
</span>
|
||||
|
||||
<a class='flex-1 text-purple-600 mavenLinkBold border-l-2 pl-2 hover:underline' href='Coding/Haskell/Lenses'>
|
||||
Lenses
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<div class='flex flex-wrap my-2'>
|
||||
|
||||
<span data-nosnippet class='mr-2 text-right text-gray-600'>
|
||||
</span>
|
||||
|
||||
<a class='flex-1 text-purple-600 mavenLinkBold border-l-2 pl-2 hover:underline' href='Coding/Haskell/Webapp-Example'>
|
||||
Webapp-Development in Haskell
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</nav><div class='text-gray-400 border-t-2 inline-block pt-0.5'>
|
||||
<p class='mb-3'>
|
||||
Gründe Haskell zu nutzen und wo Vorteile liegen.
|
||||
Note: To override the auto-generated content here, create a file named one of: <span class='font-mono text-sm'>Coding/Haskell.md, Coding/Haskell.org</span>
|
||||
</p>
|
||||
<h2 id='talks' class='inline-block mt-6 mb-4 text-4xl font-bold text-gray-700 border-b-2'>Talks</h2><h3 id='simon-peyton-jones' class='mt-6 mb-2 text-3xl font-bold text-gray-700'>Simon Peyton Jones</h3>
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
<a href='https://www.youtube.com/watch?v=hlyQjK1qjw8' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>The Future is parallel</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='https://skillsmatter.com/skillscasts/4251-lenses-compositional-data-access-and-manipulation' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Lenses</a> (Registrierung nötig - kostenfrei), siehe auch: <a href='Haskell/Lenses' class='text-purple-600 mavenLinkBold hover:underline' data-wikilink-type='WikiLinkBranch'>Lenses</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<h3 id='others' class='mt-6 mb-2 text-3xl font-bold text-gray-700'>Others</h3>
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
<a href='https://www.youtube.com/watch?v=ZR3Jirqk6W8' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Running a Startup on Haskell</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='https://www.youtube.com/watch?v=TS1lpKBMkgg' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>We’re doing it all wrong</a> - A Long-Term Scala-Compiler-Developer quits his job after years and tells why Scala is a mess.
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='https://www.youtube.com/watch?v=b0EF0VTs9Dc' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Monads explained in Javascript</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='http://vimeo.com/95694918' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Vinyl Records</a> with <a href='https://github.com/VinylRecords/BayHac2014-Talk' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Slides</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='http://begriffs.com/posts/2015-06-17-thinking-with-laziness.html' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Thinking with Laziness</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<h2 id='bücherpaper' class='inline-block mt-6 mb-4 text-4xl font-bold text-gray-700 border-b-2'>Bücher/Paper</h2><h3 id='simon-peyton-jones-1' class='mt-6 mb-2 text-3xl font-bold text-gray-700'>Simon Peyton Jones</h3>
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
<a href='https://research.microsoft.com/en-us/um/people/simonpj/papers/stm/' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Papers on STM</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='https://research.microsoft.com/en-us/um/people/simonpj/papers/marktoberdorf/' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Tackling the awkward squad</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<h3 id='others-1' class='mt-6 mb-2 text-3xl font-bold text-gray-700'>Others</h3>
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
<a href='http://chimera.labs.oreilly.com/books/1230000000929/pr01.html' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Parallel and Concurrent Programming in Haskell</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='http://scholar.google.de/scholar?cluster=7602244452224287116&hl=de&as_sdt=0,5' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Slides of a Quickcheck-Talk</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='https://www.fpcomplete.com/user/bartosz/understanding-algebras' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Understanding F-Algebras</a> schöne Erklärung. Man könnte danach anfangen den <a href='Haskell/Code%20Snippets/Morphisms' class='text-purple-600 mavenLinkBold hover:underline' data-wikilink-type='WikiLinkBranch'>Morphismen-zoo</a> zu verstehen…
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='https://github.com/kqr/gists/blob/master/articles/gentle-introduction-monad-transformers.md' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Monad Transformers</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<h2 id='funny-talks' class='inline-block mt-6 mb-4 text-4xl font-bold text-gray-700 border-b-2'>Funny Talks</h2>
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
<a href='https://www.youtube.com/watch?v=o6L6XeNdd_k' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Tom LaGatta on Category-Theory</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='https://www.youtube.com/watch?v=9EGYSb9vov8' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Unifying Structured Recursion Schemes</a> aka. <a href='Haskell/Code%20Snippets/Morphisms' class='text-purple-600 mavenLinkBold hover:underline' data-wikilink-type='WikiLinkNormal'>The Morphism-Zoo</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='https://www.youtube.com/watch?v=IRGKkiGG5CY' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Hole-Driven-Development Teaser (Enthusiasticon, raichoo)</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<h2 id='unsortedunseen' class='inline-block mt-6 mb-4 text-4xl font-bold text-gray-700 border-b-2'>Unsorted/Unseen</h2>
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
<a href='http://insights.pwning.de/_edit/Haskell/Why_Haskell_is_superior' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Functional Reactive Programming</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='http://vimeo.com/84104226' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Diagrams: Declarative Vector Graphics in Haskell</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='https://www.youtube.com/watch?v=cefnmjtAolY' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Lenses, Folds & Traversels by Edward Kmett</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='https://www.youtube.com/watch?v=cB8DapKQz-I&list=WL&index=10' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Discrimination is Wrong by Edward Kmett</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<h2 id='tutorials' class='inline-block mt-6 mb-4 text-4xl font-bold text-gray-700 border-b-2'>Tutorials</h2>
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
<a href='https://www.fpcomplete.com/school/starting-with-haskell/haskell-fast-hard/haskell-fast-hard-part-1' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Haskell fast and hard</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='http://blog.functorial.com/posts/2015-12-06-Counterexamples.html' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Counterexamples for Typeclasses</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<!-- div class="flex items-center justify-center mt-2">
|
||||
<ema:metadata>
|
||||
@ -907,7 +1053,7 @@
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.7.3.0'>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.8.1.10'>
|
||||
<img class='w-6 h-6 hover:text-purple-700' src='_emanote-static/emanote-logo.svg' />
|
||||
</a>
|
||||
</div>
|
||||
@ -939,6 +1085,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
1166
static_gen/Coding/Haskell/Advantages.html
Normal file
1166
static_gen/Coding/Haskell/Advantages.html
Normal file
File diff suppressed because it is too large
Load Diff
@ -47,37 +47,65 @@
|
||||
|
||||
|
||||
|
||||
<link href='tailwind.css?instanceId=ecadcd50-ecaf-4d6e-98ea-7932c3b3d351' rel='stylesheet' type='text/css' />
|
||||
<link href='tailwind.css?instanceId=1ec53b8c-7991-423c-8b17-b92e36792648' rel='stylesheet' type='text/css' />
|
||||
|
||||
<!-- Heist error element -->
|
||||
<style>
|
||||
/* Heist error element */
|
||||
strong.error {
|
||||
color: lightcoral;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
/* External link icon */
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"])::after {
|
||||
/* filter converts black to rgb(156,163,175) */
|
||||
filter: invert(71%) sepia(3%) saturate(904%) hue-rotate(179deg) brightness(92%) contrast(87%);
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"]):hover::after {
|
||||
/* filter converts black to rgb(175,85,99) */
|
||||
filter: invert(32%) sepia(10%) saturate(834%) hue-rotate(176deg) brightness(92%) contrast(88%);
|
||||
}
|
||||
|
||||
a[data-linkicon=""]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon=none]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon="external"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
a[data-linkicon="external"][href^="mailto:"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z' /%3E%3C/svg%3E");
|
||||
}
|
||||
</style>
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'MavenPro';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf) format("truetype");
|
||||
font-family: 'WorkSans';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf) format("truetype");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
/* font-variation-settings: 'wght'300; */
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
font-variation-settings: 'wght' 350;
|
||||
}
|
||||
|
||||
a.mavenLinkBold {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h1,
|
||||
@ -88,14 +116,27 @@
|
||||
h6,
|
||||
header,
|
||||
.header-font {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-variation-settings: 'wght' 300;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<link rel='stylesheet' href='_emanote-static/inverted-tree.css' />
|
||||
|
||||
<link rel='stylesheet' href='https://files.stork-search.net/releases/v1.5.0/flat.css' />
|
||||
<link rel='stylesheet' href='_emanote-static/stork/flat.css' />
|
||||
<!-- Custom Stork-search styling for Emanote -->
|
||||
<style>
|
||||
#stork-search-container {
|
||||
@ -109,7 +150,7 @@
|
||||
</style>
|
||||
|
||||
|
||||
<script src='https://files.stork-search.net/releases/v1.5.0/stork.js'></script>
|
||||
<script src='_emanote-static/stork/stork.js'></script>
|
||||
|
||||
|
||||
<script data-emanote-base-url='/'>
|
||||
@ -135,6 +176,7 @@
|
||||
const indexUrl = baseUrl + '-/stork.st';
|
||||
if (document.readyState !== 'complete') {
|
||||
window.addEventListener('load', function () {
|
||||
stork.initialize(baseUrl + '_emanote-static/stork/stork.wasm');
|
||||
stork.register(indexName, indexUrl);
|
||||
});
|
||||
|
||||
@ -193,7 +235,16 @@
|
||||
</li>
|
||||
|
||||
<li class='inline-flex items-center'>
|
||||
<a class='px-1 font-bold' href='Haskell'>
|
||||
<a class='px-1 font-bold' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
<svg fill='currentColor' viewBox='0 0 20 20' class='w-auto h-5 text-gray-400'>
|
||||
<path fill-rule='evenodd' d='M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z' clip-rule='evenodd'></path>
|
||||
</svg>
|
||||
</li>
|
||||
|
||||
<li class='inline-flex items-center'>
|
||||
<a class='px-1 font-bold' href='Coding/Haskell'>
|
||||
Haskell
|
||||
</a>
|
||||
<svg fill='currentColor' viewBox='0 0 20 20' class='w-auto h-5 text-gray-400'>
|
||||
@ -370,7 +421,43 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold hover:underline truncate' title='Haskell' href='Haskell'>
|
||||
<a class='font-bold hover:underline truncate' title='Coding' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-700' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path fill-rule='evenodd' d='M2 6a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1H8a3 3 0 00-3 3v1.5a1.5 1.5 0 01-3 0V6z' clip-rule='evenodd'></path>
|
||||
<path d='M6 12a2 2 0 012-2h8a2 2 0 012 2v2a2 2 0 01-2 2H2h2a2 2 0 002-2v-2z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold hover:underline truncate' title='Haskell' href='Coding/Haskell'>
|
||||
Haskell
|
||||
</a>
|
||||
|
||||
@ -390,6 +477,43 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Talks und Posts zu Haskell' href='Coding/Haskell/Advantages'>
|
||||
Talks und Posts zu Haskell
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -402,7 +526,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold text-purple-600 hover:underline truncate' title='Code-Snippets' href='Haskell/Code%20Snippets'>
|
||||
<a class='font-bold text-purple-600 hover:underline truncate' title='Code-Snippets' href='Coding/Haskell/Code%20Snippets'>
|
||||
Code-Snippets
|
||||
</a>
|
||||
|
||||
@ -436,50 +560,50 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='*-Morpisms' href='Haskell/Code%20Snippets/Morphisms'>
|
||||
*-Morpisms
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Monoid? Da war doch was…' href='Haskell/Code%20Snippets/Monoid'>
|
||||
<a class='hover:underline truncate' title='Monoid? Da war doch was…' href='Coding/Haskell/Code%20Snippets/Monoid'>
|
||||
Monoid? Da war doch was…
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='*-Morpisms' href='Coding/Haskell/Code%20Snippets/Morphisms'>
|
||||
*-Morpisms
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
@ -513,7 +637,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Fortgeschrittene funktionale Programmierung in Haskell' href='Haskell/FFPiH'>
|
||||
<a class='hover:underline truncate' title='Fortgeschrittene funktionale Programmierung in Haskell' href='Coding/Haskell/FFPiH'>
|
||||
Fortgeschrittene funktionale Programmierung in Haskell
|
||||
</a>
|
||||
|
||||
@ -550,7 +674,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Lenses' href='Haskell/Lenses'>
|
||||
<a class='hover:underline truncate' title='Lenses' href='Coding/Haskell/Lenses'>
|
||||
Lenses
|
||||
</a>
|
||||
|
||||
@ -575,43 +699,6 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Talks und Posts zu Haskell' href='Haskell/Advantages'>
|
||||
Talks und Posts zu Haskell
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -623,7 +710,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Webapp-Development in Haskell' href='Haskell/Webapp-Example'>
|
||||
<a class='hover:underline truncate' title='Webapp-Development in Haskell' href='Coding/Haskell/Webapp-Example'>
|
||||
Webapp-Development in Haskell
|
||||
</a>
|
||||
|
||||
@ -642,6 +729,46 @@
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Openapi-generator' href='Coding/OpenAPI'>
|
||||
Openapi-generator
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
@ -691,6 +818,82 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Opinions' href='Opinions'>
|
||||
Opinions
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Todo' href='TODO'>
|
||||
Todo
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -778,12 +981,23 @@
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href='Haskell'>
|
||||
<a href='Coding/Haskell'>
|
||||
Haskell
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
@ -799,6 +1013,10 @@
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
@ -819,32 +1037,39 @@
|
||||
</p>
|
||||
<nav>
|
||||
<div class='mb-8'>
|
||||
<header class='pb-2 mb-2 font-semibold text-gray-600'>
|
||||
<header data-nosnippet class='pb-2 mb-2 font-semibold text-gray-600'>
|
||||
Pages matching path './*'
|
||||
</header>
|
||||
<ul>
|
||||
|
||||
<div class='flex flex-wrap my-2'>
|
||||
<li>
|
||||
<div class='flex flex-wrap my-2'>
|
||||
|
||||
<span class='mr-2 text-right text-gray-600'>
|
||||
</span>
|
||||
<span data-nosnippet class='mr-2 text-right text-gray-600'>
|
||||
</span>
|
||||
|
||||
<a class='flex-1 text-purple-600 mavenLinkBold border-l-2 pl-2 hover:underline' href='Haskell/Code%20Snippets/Morphisms'>
|
||||
*-Morpisms
|
||||
</a>
|
||||
</div>
|
||||
<a class='flex-1 text-purple-600 mavenLinkBold border-l-2 pl-2 hover:underline' href='Coding/Haskell/Code%20Snippets/Monoid'>
|
||||
Monoid? Da war doch was…
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<div class='flex flex-wrap my-2'>
|
||||
<li>
|
||||
<div class='flex flex-wrap my-2'>
|
||||
|
||||
<span class='mr-2 text-right text-gray-600'>
|
||||
</span>
|
||||
<span data-nosnippet class='mr-2 text-right text-gray-600'>
|
||||
</span>
|
||||
|
||||
<a class='flex-1 text-purple-600 mavenLinkBold border-l-2 pl-2 hover:underline' href='Haskell/Code%20Snippets/Monoid'>
|
||||
Monoid? Da war doch was…
|
||||
</a>
|
||||
</div>
|
||||
<a class='flex-1 text-purple-600 mavenLinkBold border-l-2 pl-2 hover:underline' href='Coding/Haskell/Code%20Snippets/Morphisms'>
|
||||
*-Morpisms
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- div class="flex items-center justify-center mt-2">
|
||||
<ema:metadata>
|
||||
<with var="template">
|
||||
@ -890,7 +1115,7 @@
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.7.3.0'>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.8.1.10'>
|
||||
<img class='w-6 h-6 hover:text-purple-700' src='_emanote-static/emanote-logo.svg' />
|
||||
</a>
|
||||
</div>
|
||||
@ -922,6 +1147,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
@ -47,37 +47,65 @@
|
||||
|
||||
|
||||
|
||||
<link href='tailwind.css?instanceId=ecadcd50-ecaf-4d6e-98ea-7932c3b3d351' rel='stylesheet' type='text/css' />
|
||||
<link href='tailwind.css?instanceId=1ec53b8c-7991-423c-8b17-b92e36792648' rel='stylesheet' type='text/css' />
|
||||
|
||||
<!-- Heist error element -->
|
||||
<style>
|
||||
/* Heist error element */
|
||||
strong.error {
|
||||
color: lightcoral;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
/* External link icon */
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"])::after {
|
||||
/* filter converts black to rgb(156,163,175) */
|
||||
filter: invert(71%) sepia(3%) saturate(904%) hue-rotate(179deg) brightness(92%) contrast(87%);
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"]):hover::after {
|
||||
/* filter converts black to rgb(175,85,99) */
|
||||
filter: invert(32%) sepia(10%) saturate(834%) hue-rotate(176deg) brightness(92%) contrast(88%);
|
||||
}
|
||||
|
||||
a[data-linkicon=""]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon=none]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon="external"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
a[data-linkicon="external"][href^="mailto:"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z' /%3E%3C/svg%3E");
|
||||
}
|
||||
</style>
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'MavenPro';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf) format("truetype");
|
||||
font-family: 'WorkSans';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf) format("truetype");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
/* font-variation-settings: 'wght'300; */
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
font-variation-settings: 'wght' 350;
|
||||
}
|
||||
|
||||
a.mavenLinkBold {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h1,
|
||||
@ -88,14 +116,27 @@
|
||||
h6,
|
||||
header,
|
||||
.header-font {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-variation-settings: 'wght' 300;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<link rel='stylesheet' href='_emanote-static/inverted-tree.css' />
|
||||
|
||||
<link rel='stylesheet' href='https://files.stork-search.net/releases/v1.5.0/flat.css' />
|
||||
<link rel='stylesheet' href='_emanote-static/stork/flat.css' />
|
||||
<!-- Custom Stork-search styling for Emanote -->
|
||||
<style>
|
||||
#stork-search-container {
|
||||
@ -109,7 +150,7 @@
|
||||
</style>
|
||||
|
||||
|
||||
<script src='https://files.stork-search.net/releases/v1.5.0/stork.js'></script>
|
||||
<script src='_emanote-static/stork/stork.js'></script>
|
||||
|
||||
|
||||
<script data-emanote-base-url='/'>
|
||||
@ -135,6 +176,7 @@
|
||||
const indexUrl = baseUrl + '-/stork.st';
|
||||
if (document.readyState !== 'complete') {
|
||||
window.addEventListener('load', function () {
|
||||
stork.initialize(baseUrl + '_emanote-static/stork/stork.wasm');
|
||||
stork.register(indexName, indexUrl);
|
||||
});
|
||||
|
||||
@ -193,7 +235,16 @@
|
||||
</li>
|
||||
|
||||
<li class='inline-flex items-center'>
|
||||
<a class='px-1 font-bold' href='Haskell'>
|
||||
<a class='px-1 font-bold' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
<svg fill='currentColor' viewBox='0 0 20 20' class='w-auto h-5 text-gray-400'>
|
||||
<path fill-rule='evenodd' d='M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z' clip-rule='evenodd'></path>
|
||||
</svg>
|
||||
</li>
|
||||
|
||||
<li class='inline-flex items-center'>
|
||||
<a class='px-1 font-bold' href='Coding/Haskell'>
|
||||
Haskell
|
||||
</a>
|
||||
<svg fill='currentColor' viewBox='0 0 20 20' class='w-auto h-5 text-gray-400'>
|
||||
@ -202,7 +253,7 @@
|
||||
</li>
|
||||
|
||||
<li class='inline-flex items-center'>
|
||||
<a class='px-1 font-bold' href='Haskell/Code%20Snippets'>
|
||||
<a class='px-1 font-bold' href='Coding/Haskell/Code%20Snippets'>
|
||||
Code-Snippets
|
||||
</a>
|
||||
<svg fill='currentColor' viewBox='0 0 20 20' class='w-auto h-5 text-gray-400'>
|
||||
@ -379,8 +430,8 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold hover:underline truncate' title='Haskell' href='Haskell'>
|
||||
Haskell
|
||||
<a class='font-bold hover:underline truncate' title='Coding' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
|
||||
|
||||
@ -415,8 +466,8 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold hover:underline truncate' title='Code-Snippets' href='Haskell/Code%20Snippets'>
|
||||
Code-Snippets
|
||||
<a class='font-bold hover:underline truncate' title='Haskell' href='Coding/Haskell'>
|
||||
Haskell
|
||||
</a>
|
||||
|
||||
|
||||
@ -449,8 +500,8 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='*-Morpisms' href='Haskell/Code%20Snippets/Morphisms'>
|
||||
*-Morpisms
|
||||
<a class='hover:underline truncate' title='Talks und Posts zu Haskell' href='Coding/Haskell/Advantages'>
|
||||
Talks und Posts zu Haskell
|
||||
</a>
|
||||
|
||||
|
||||
@ -472,6 +523,42 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-700' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path fill-rule='evenodd' d='M2 6a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1H8a3 3 0 00-3 3v1.5a1.5 1.5 0 01-3 0V6z' clip-rule='evenodd'></path>
|
||||
<path d='M6 12a2 2 0 012-2h8a2 2 0 012 2v2a2 2 0 01-2 2H2h2a2 2 0 002-2v-2z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold hover:underline truncate' title='Code-Snippets' href='Coding/Haskell/Code%20Snippets'>
|
||||
Code-Snippets
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -484,7 +571,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold text-purple-600 hover:underline truncate' title='Monoid? Da war doch was…' href='Haskell/Code%20Snippets/Monoid'>
|
||||
<a class='font-bold text-purple-600 hover:underline truncate' title='Monoid? Da war doch was…' href='Coding/Haskell/Code%20Snippets/Monoid'>
|
||||
Monoid? Da war doch was…
|
||||
</a>
|
||||
|
||||
@ -497,6 +584,43 @@
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='*-Morpisms' href='Coding/Haskell/Code%20Snippets/Morphisms'>
|
||||
*-Morpisms
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
@ -524,7 +648,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Fortgeschrittene funktionale Programmierung in Haskell' href='Haskell/FFPiH'>
|
||||
<a class='hover:underline truncate' title='Fortgeschrittene funktionale Programmierung in Haskell' href='Coding/Haskell/FFPiH'>
|
||||
Fortgeschrittene funktionale Programmierung in Haskell
|
||||
</a>
|
||||
|
||||
@ -561,7 +685,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Lenses' href='Haskell/Lenses'>
|
||||
<a class='hover:underline truncate' title='Lenses' href='Coding/Haskell/Lenses'>
|
||||
Lenses
|
||||
</a>
|
||||
|
||||
@ -586,43 +710,6 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Talks und Posts zu Haskell' href='Haskell/Advantages'>
|
||||
Talks und Posts zu Haskell
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -634,7 +721,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Webapp-Development in Haskell' href='Haskell/Webapp-Example'>
|
||||
<a class='hover:underline truncate' title='Webapp-Development in Haskell' href='Coding/Haskell/Webapp-Example'>
|
||||
Webapp-Development in Haskell
|
||||
</a>
|
||||
|
||||
@ -653,6 +740,46 @@
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Openapi-generator' href='Coding/OpenAPI'>
|
||||
Openapi-generator
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
@ -702,6 +829,82 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Opinions' href='Opinions'>
|
||||
Opinions
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Todo' href='TODO'>
|
||||
Todo
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -789,7 +992,7 @@
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href='Haskell/Code%20Snippets'>
|
||||
<a href='Coding/Haskell/Code%20Snippets'>
|
||||
Code-Snippets
|
||||
</a>
|
||||
</div>
|
||||
@ -800,12 +1003,23 @@
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href='Haskell'>
|
||||
<a href='Coding/Haskell'>
|
||||
Haskell
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
@ -825,6 +1039,10 @@
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
@ -998,6 +1216,7 @@ f' <$> a</code></pre></div>
|
||||
<div class='py-0.5 mb-3 text-sm'><pre><code class='haskell language-haskell'>f'' a -- error
|
||||
f'' <$> a -- error
|
||||
fmap f'' <$> a</code></pre></div>
|
||||
|
||||
<!-- div class="flex items-center justify-center mt-2">
|
||||
<ema:metadata>
|
||||
<with var="template">
|
||||
@ -1043,7 +1262,7 @@ fmap f'' <$> a</code></pre></div>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.7.3.0'>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.8.1.10'>
|
||||
<img class='w-6 h-6 hover:text-purple-700' src='_emanote-static/emanote-logo.svg' />
|
||||
</a>
|
||||
</div>
|
||||
@ -1075,6 +1294,9 @@ fmap f'' <$> a</code></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
@ -47,37 +47,65 @@
|
||||
|
||||
|
||||
|
||||
<link href='tailwind.css?instanceId=ecadcd50-ecaf-4d6e-98ea-7932c3b3d351' rel='stylesheet' type='text/css' />
|
||||
<link href='tailwind.css?instanceId=1ec53b8c-7991-423c-8b17-b92e36792648' rel='stylesheet' type='text/css' />
|
||||
|
||||
<!-- Heist error element -->
|
||||
<style>
|
||||
/* Heist error element */
|
||||
strong.error {
|
||||
color: lightcoral;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
/* External link icon */
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"])::after {
|
||||
/* filter converts black to rgb(156,163,175) */
|
||||
filter: invert(71%) sepia(3%) saturate(904%) hue-rotate(179deg) brightness(92%) contrast(87%);
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"]):hover::after {
|
||||
/* filter converts black to rgb(175,85,99) */
|
||||
filter: invert(32%) sepia(10%) saturate(834%) hue-rotate(176deg) brightness(92%) contrast(88%);
|
||||
}
|
||||
|
||||
a[data-linkicon=""]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon=none]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon="external"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
a[data-linkicon="external"][href^="mailto:"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z' /%3E%3C/svg%3E");
|
||||
}
|
||||
</style>
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'MavenPro';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf) format("truetype");
|
||||
font-family: 'WorkSans';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf) format("truetype");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
/* font-variation-settings: 'wght'300; */
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
font-variation-settings: 'wght' 350;
|
||||
}
|
||||
|
||||
a.mavenLinkBold {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h1,
|
||||
@ -88,14 +116,27 @@
|
||||
h6,
|
||||
header,
|
||||
.header-font {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-variation-settings: 'wght' 300;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<link rel='stylesheet' href='_emanote-static/inverted-tree.css' />
|
||||
|
||||
<link rel='stylesheet' href='https://files.stork-search.net/releases/v1.5.0/flat.css' />
|
||||
<link rel='stylesheet' href='_emanote-static/stork/flat.css' />
|
||||
<!-- Custom Stork-search styling for Emanote -->
|
||||
<style>
|
||||
#stork-search-container {
|
||||
@ -109,7 +150,7 @@
|
||||
</style>
|
||||
|
||||
|
||||
<script src='https://files.stork-search.net/releases/v1.5.0/stork.js'></script>
|
||||
<script src='_emanote-static/stork/stork.js'></script>
|
||||
|
||||
|
||||
<script data-emanote-base-url='/'>
|
||||
@ -135,6 +176,7 @@
|
||||
const indexUrl = baseUrl + '-/stork.st';
|
||||
if (document.readyState !== 'complete') {
|
||||
window.addEventListener('load', function () {
|
||||
stork.initialize(baseUrl + '_emanote-static/stork/stork.wasm');
|
||||
stork.register(indexName, indexUrl);
|
||||
});
|
||||
|
||||
@ -193,7 +235,16 @@
|
||||
</li>
|
||||
|
||||
<li class='inline-flex items-center'>
|
||||
<a class='px-1 font-bold' href='Haskell'>
|
||||
<a class='px-1 font-bold' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
<svg fill='currentColor' viewBox='0 0 20 20' class='w-auto h-5 text-gray-400'>
|
||||
<path fill-rule='evenodd' d='M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z' clip-rule='evenodd'></path>
|
||||
</svg>
|
||||
</li>
|
||||
|
||||
<li class='inline-flex items-center'>
|
||||
<a class='px-1 font-bold' href='Coding/Haskell'>
|
||||
Haskell
|
||||
</a>
|
||||
<svg fill='currentColor' viewBox='0 0 20 20' class='w-auto h-5 text-gray-400'>
|
||||
@ -202,7 +253,7 @@
|
||||
</li>
|
||||
|
||||
<li class='inline-flex items-center'>
|
||||
<a class='px-1 font-bold' href='Haskell/Code%20Snippets'>
|
||||
<a class='px-1 font-bold' href='Coding/Haskell/Code%20Snippets'>
|
||||
Code-Snippets
|
||||
</a>
|
||||
<svg fill='currentColor' viewBox='0 0 20 20' class='w-auto h-5 text-gray-400'>
|
||||
@ -379,8 +430,8 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold hover:underline truncate' title='Haskell' href='Haskell'>
|
||||
Haskell
|
||||
<a class='font-bold hover:underline truncate' title='Coding' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
|
||||
|
||||
@ -415,7 +466,80 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold hover:underline truncate' title='Code-Snippets' href='Haskell/Code%20Snippets'>
|
||||
<a class='font-bold hover:underline truncate' title='Haskell' href='Coding/Haskell'>
|
||||
Haskell
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Talks und Posts zu Haskell' href='Coding/Haskell/Advantages'>
|
||||
Talks und Posts zu Haskell
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-700' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path fill-rule='evenodd' d='M2 6a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1H8a3 3 0 00-3 3v1.5a1.5 1.5 0 01-3 0V6z' clip-rule='evenodd'></path>
|
||||
<path d='M6 12a2 2 0 012-2h8a2 2 0 012 2v2a2 2 0 01-2 2H2h2a2 2 0 002-2v-2z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold hover:underline truncate' title='Code-Snippets' href='Coding/Haskell/Code%20Snippets'>
|
||||
Code-Snippets
|
||||
</a>
|
||||
|
||||
@ -435,6 +559,43 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Monoid? Da war doch was…' href='Coding/Haskell/Code%20Snippets/Monoid'>
|
||||
Monoid? Da war doch was…
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -447,7 +608,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold text-purple-600 hover:underline truncate' title='*-Morpisms' href='Haskell/Code%20Snippets/Morphisms'>
|
||||
<a class='font-bold text-purple-600 hover:underline truncate' title='*-Morpisms' href='Coding/Haskell/Code%20Snippets/Morphisms'>
|
||||
*-Morpisms
|
||||
</a>
|
||||
|
||||
@ -460,43 +621,6 @@
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Monoid? Da war doch was…' href='Haskell/Code%20Snippets/Monoid'>
|
||||
Monoid? Da war doch was…
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
@ -524,7 +648,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Fortgeschrittene funktionale Programmierung in Haskell' href='Haskell/FFPiH'>
|
||||
<a class='hover:underline truncate' title='Fortgeschrittene funktionale Programmierung in Haskell' href='Coding/Haskell/FFPiH'>
|
||||
Fortgeschrittene funktionale Programmierung in Haskell
|
||||
</a>
|
||||
|
||||
@ -561,7 +685,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Lenses' href='Haskell/Lenses'>
|
||||
<a class='hover:underline truncate' title='Lenses' href='Coding/Haskell/Lenses'>
|
||||
Lenses
|
||||
</a>
|
||||
|
||||
@ -586,43 +710,6 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Talks und Posts zu Haskell' href='Haskell/Advantages'>
|
||||
Talks und Posts zu Haskell
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -634,7 +721,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Webapp-Development in Haskell' href='Haskell/Webapp-Example'>
|
||||
<a class='hover:underline truncate' title='Webapp-Development in Haskell' href='Coding/Haskell/Webapp-Example'>
|
||||
Webapp-Development in Haskell
|
||||
</a>
|
||||
|
||||
@ -653,6 +740,46 @@
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Openapi-generator' href='Coding/OpenAPI'>
|
||||
Openapi-generator
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
@ -702,6 +829,82 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Opinions' href='Opinions'>
|
||||
Opinions
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Todo' href='TODO'>
|
||||
Todo
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -789,7 +992,7 @@
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href='Haskell/Advantages'>
|
||||
<a href='Coding/Haskell/Advantages'>
|
||||
Talks und Posts zu Haskell
|
||||
</a>
|
||||
</div>
|
||||
@ -800,12 +1003,23 @@
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href='Haskell'>
|
||||
<a href='Coding/Haskell'>
|
||||
Haskell
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
@ -825,12 +1039,16 @@
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href='Haskell/Code%20Snippets'>
|
||||
<a href='Coding/Haskell/Code%20Snippets'>
|
||||
Code-Snippets
|
||||
</a>
|
||||
</div>
|
||||
@ -954,7 +1172,7 @@ example3 = mergeSort [5,2,7,9,1,4] == [1,2,4,5,7,9] </code></pre></div>
|
||||
</p>
|
||||
|
||||
<p class='mb-3'>
|
||||
We have implemented a MergeSort variant in 9 lines of code, not counting the <code class='py-0.5 px-0.5 bg-gray-100'>mergeLists</code> function below. Not bad, but <a href='http://en.literateprograms.org/Merge_sort_(Haskell)' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>this implementation</a> is not much longer.
|
||||
We have implemented a MergeSort variant in 9 lines of code, not counting the <code class='py-0.5 px-0.5 bg-gray-100'>mergeLists</code> function below. Not bad, but <a href='http://en.literateprograms.org/Merge_sort_(Haskell)' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>this implementation</a> is not much longer.
|
||||
</p>
|
||||
|
||||
<p class='mb-3'>
|
||||
@ -1060,19 +1278,19 @@ instance Foldable (Tree c) where
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
<a href='https://www.fpcomplete.com/user/bartosz/understanding-algebras' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Understanding F-Algebras</a>
|
||||
<a href='https://www.fpcomplete.com/user/bartosz/understanding-algebras' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Understanding F-Algebras</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='http://www.timphilipwilliams.com/slides.html' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Recursion Schemes by Example</a>
|
||||
<a href='http://www.timphilipwilliams.com/slides.html' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Recursion Schemes by Example</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='http://comonad.com/reader/2009/recursion-schemes/' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Recursion Schemes: A Field Guide</a>
|
||||
<a href='http://comonad.com/reader/2009/recursion-schemes/' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Recursion Schemes: A Field Guide</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='http://stackoverflow.com/questions/6941904/recursion-schemes-for-dummies' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>This StackOverflow question</a>
|
||||
<a href='http://stackoverflow.com/questions/6941904/recursion-schemes-for-dummies' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>This StackOverflow question</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
@ -1089,6 +1307,7 @@ mergeLists = curry $ unfoldr c where
|
||||
c (x:xs, []) = Just (x, (xs, []))
|
||||
c (x:xs, y:ys) | x <= y = Just (x, (xs, y:ys))
|
||||
| x > y = Just (y, (x:xs, ys))</code></pre></div>
|
||||
|
||||
<!-- div class="flex items-center justify-center mt-2">
|
||||
<ema:metadata>
|
||||
<with var="template">
|
||||
@ -1111,18 +1330,18 @@ mergeLists = curry $ unfoldr c where
|
||||
<ul class='space-y-1'>
|
||||
|
||||
<li>
|
||||
<a class='text-purple-600 mavenLinkBold hover:bg-purple-50' href='Haskell/Advantages'>
|
||||
<a class='text-purple-600 mavenLinkBold hover:bg-purple-50' href='Coding/Haskell/Advantages'>
|
||||
Talks und Posts zu Haskell
|
||||
</a>
|
||||
|
||||
<div class='mb-4 overflow-auto text-sm text-gray-500'>
|
||||
|
||||
<div class='pl-2 mt-2 border-l-2 border-purple-200 hover:border-purple-500'>
|
||||
<div><a href='https://www.youtube.com/watch?v=9EGYSb9vov8' class='text-gray-600 hover:underline' target='_blank' rel='noopener'>Unifying Structured Recursion Schemes</a> aka. <a href='Haskell/Code%20Snippets/Morphisms' class='text-gray-600 font-bold hover:bg-gray-50' data-wikilink-type='WikiLinkNormal'>The Morphism-Zoo</a></div>
|
||||
<div><a href='https://www.youtube.com/watch?v=9EGYSb9vov8' class='text-gray-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Unifying Structured Recursion Schemes</a> aka. <a href='Coding/Haskell/Code%20Snippets/Morphisms' class='text-gray-600 font-bold hover:bg-gray-50' data-wikilink-type='WikiLinkNormal'>The Morphism-Zoo</a></div>
|
||||
</div>
|
||||
|
||||
<div class='pl-2 mt-2 border-l-2 border-purple-200 hover:border-purple-500'>
|
||||
<div><a href='https://www.fpcomplete.com/user/bartosz/understanding-algebras' class='text-gray-600 hover:underline' target='_blank' rel='noopener'>Understanding F-Algebras</a> schöne Erklärung. Man könnte danach anfangen den <a href='Haskell/Code%20Snippets/Morphisms' class='text-gray-600 font-bold hover:bg-gray-50' data-wikilink-type='WikiLinkBranch'>Morphismen-zoo</a> zu verstehen…</div>
|
||||
<div><a href='https://www.fpcomplete.com/user/bartosz/understanding-algebras' class='text-gray-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Understanding F-Algebras</a> schöne Erklärung. Man könnte danach anfangen den <a href='Coding/Haskell/Code%20Snippets/Morphisms' class='text-gray-600 font-bold hover:bg-gray-50' data-wikilink-type='WikiLinkBranch'>Morphismen-zoo</a> zu verstehen…</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@ -1160,7 +1379,7 @@ mergeLists = curry $ unfoldr c where
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.7.3.0'>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.8.1.10'>
|
||||
<img class='w-6 h-6 hover:text-purple-700' src='_emanote-static/emanote-logo.svg' />
|
||||
</a>
|
||||
</div>
|
||||
@ -1192,6 +1411,9 @@ mergeLists = curry $ unfoldr c where
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
@ -47,37 +47,65 @@
|
||||
|
||||
|
||||
|
||||
<link href='tailwind.css?instanceId=ecadcd50-ecaf-4d6e-98ea-7932c3b3d351' rel='stylesheet' type='text/css' />
|
||||
<link href='tailwind.css?instanceId=1ec53b8c-7991-423c-8b17-b92e36792648' rel='stylesheet' type='text/css' />
|
||||
|
||||
<!-- Heist error element -->
|
||||
<style>
|
||||
/* Heist error element */
|
||||
strong.error {
|
||||
color: lightcoral;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
/* External link icon */
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"])::after {
|
||||
/* filter converts black to rgb(156,163,175) */
|
||||
filter: invert(71%) sepia(3%) saturate(904%) hue-rotate(179deg) brightness(92%) contrast(87%);
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"]):hover::after {
|
||||
/* filter converts black to rgb(175,85,99) */
|
||||
filter: invert(32%) sepia(10%) saturate(834%) hue-rotate(176deg) brightness(92%) contrast(88%);
|
||||
}
|
||||
|
||||
a[data-linkicon=""]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon=none]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon="external"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
a[data-linkicon="external"][href^="mailto:"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z' /%3E%3C/svg%3E");
|
||||
}
|
||||
</style>
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'MavenPro';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf) format("truetype");
|
||||
font-family: 'WorkSans';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf) format("truetype");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
/* font-variation-settings: 'wght'300; */
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
font-variation-settings: 'wght' 350;
|
||||
}
|
||||
|
||||
a.mavenLinkBold {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h1,
|
||||
@ -88,14 +116,27 @@
|
||||
h6,
|
||||
header,
|
||||
.header-font {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-variation-settings: 'wght' 300;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<link rel='stylesheet' href='_emanote-static/inverted-tree.css' />
|
||||
|
||||
<link rel='stylesheet' href='https://files.stork-search.net/releases/v1.5.0/flat.css' />
|
||||
<link rel='stylesheet' href='_emanote-static/stork/flat.css' />
|
||||
<!-- Custom Stork-search styling for Emanote -->
|
||||
<style>
|
||||
#stork-search-container {
|
||||
@ -109,7 +150,7 @@
|
||||
</style>
|
||||
|
||||
|
||||
<script src='https://files.stork-search.net/releases/v1.5.0/stork.js'></script>
|
||||
<script src='_emanote-static/stork/stork.js'></script>
|
||||
|
||||
|
||||
<script data-emanote-base-url='/'>
|
||||
@ -135,6 +176,7 @@
|
||||
const indexUrl = baseUrl + '-/stork.st';
|
||||
if (document.readyState !== 'complete') {
|
||||
window.addEventListener('load', function () {
|
||||
stork.initialize(baseUrl + '_emanote-static/stork/stork.wasm');
|
||||
stork.register(indexName, indexUrl);
|
||||
});
|
||||
|
||||
@ -193,7 +235,16 @@
|
||||
</li>
|
||||
|
||||
<li class='inline-flex items-center'>
|
||||
<a class='px-1 font-bold' href='Haskell'>
|
||||
<a class='px-1 font-bold' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
<svg fill='currentColor' viewBox='0 0 20 20' class='w-auto h-5 text-gray-400'>
|
||||
<path fill-rule='evenodd' d='M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z' clip-rule='evenodd'></path>
|
||||
</svg>
|
||||
</li>
|
||||
|
||||
<li class='inline-flex items-center'>
|
||||
<a class='px-1 font-bold' href='Coding/Haskell'>
|
||||
Haskell
|
||||
</a>
|
||||
<svg fill='currentColor' viewBox='0 0 20 20' class='w-auto h-5 text-gray-400'>
|
||||
@ -370,7 +421,43 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold hover:underline truncate' title='Haskell' href='Haskell'>
|
||||
<a class='font-bold hover:underline truncate' title='Coding' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-700' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path fill-rule='evenodd' d='M2 6a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1H8a3 3 0 00-3 3v1.5a1.5 1.5 0 01-3 0V6z' clip-rule='evenodd'></path>
|
||||
<path d='M6 12a2 2 0 012-2h8a2 2 0 012 2v2a2 2 0 01-2 2H2h2a2 2 0 002-2v-2z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold hover:underline truncate' title='Haskell' href='Coding/Haskell'>
|
||||
Haskell
|
||||
</a>
|
||||
|
||||
@ -392,6 +479,43 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Talks und Posts zu Haskell' href='Coding/Haskell/Advantages'>
|
||||
Talks und Posts zu Haskell
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -403,7 +527,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Code-Snippets' href='Haskell/Code%20Snippets'>
|
||||
<a class='hover:underline truncate' title='Code-Snippets' href='Coding/Haskell/Code%20Snippets'>
|
||||
Code-Snippets
|
||||
</a>
|
||||
|
||||
@ -441,7 +565,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold text-purple-600 hover:underline truncate' title='Fortgeschrittene funktionale Programmierung in Haskell' href='Haskell/FFPiH'>
|
||||
<a class='font-bold text-purple-600 hover:underline truncate' title='Fortgeschrittene funktionale Programmierung in Haskell' href='Coding/Haskell/FFPiH'>
|
||||
Fortgeschrittene funktionale Programmierung in Haskell
|
||||
</a>
|
||||
|
||||
@ -478,7 +602,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Lenses' href='Haskell/Lenses'>
|
||||
<a class='hover:underline truncate' title='Lenses' href='Coding/Haskell/Lenses'>
|
||||
Lenses
|
||||
</a>
|
||||
|
||||
@ -503,43 +627,6 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Talks und Posts zu Haskell' href='Haskell/Advantages'>
|
||||
Talks und Posts zu Haskell
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -551,7 +638,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Webapp-Development in Haskell' href='Haskell/Webapp-Example'>
|
||||
<a class='hover:underline truncate' title='Webapp-Development in Haskell' href='Coding/Haskell/Webapp-Example'>
|
||||
Webapp-Development in Haskell
|
||||
</a>
|
||||
|
||||
@ -570,6 +657,46 @@
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Openapi-generator' href='Coding/OpenAPI'>
|
||||
Openapi-generator
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
@ -619,6 +746,82 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Opinions' href='Opinions'>
|
||||
Opinions
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Todo' href='TODO'>
|
||||
Todo
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -773,12 +976,27 @@
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href='Haskell'>
|
||||
<a href='Coding/Haskell'>
|
||||
Haskell
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
@ -803,7 +1021,7 @@
|
||||
</p>
|
||||
|
||||
<p class='mb-3'>
|
||||
Die gesamten Übungen sind unter anderem in der FFPiH-Organisation in meinem gitea hinterlegt: <a href='https://gitea.dresselhaus.cloud/FFPiH' class='text-purple-600 hover:underline' target='_blank' rel='noopener'><a href='https://gitea.dresselhaus.cloud/FFPiH' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>https://gitea.dresselhaus.cloud/FFPiH</a></a>
|
||||
Die gesamten Übungen sind unter anderem in der FFPiH-Organisation in meinem gitea hinterlegt: <a href='https://gitea.dresselhaus.cloud/FFPiH' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'><a href='https://gitea.dresselhaus.cloud/FFPiH' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>https://gitea.dresselhaus.cloud/FFPiH</a></a>
|
||||
</p>
|
||||
|
||||
<p class='mb-3'>
|
||||
@ -835,11 +1053,11 @@
|
||||
</p>
|
||||
|
||||
<p class='mb-3'>
|
||||
<a href='https://gitea.dresselhaus.cloud/FFPiH/uebung2017_2/src/branch/master/src/Aufgabe2.hs' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Übung 2, Aufgabe 2</a>, weil hier durch “einfaches” umformen hin zu Abstraktionen und mit den Regeln dieser im ersten Fall die Laufzeit (vor Compileroptimierungen) von O(n²) auf O(0) ändert.
|
||||
<a href='https://gitea.dresselhaus.cloud/FFPiH/uebung2017_2/src/branch/master/src/Aufgabe2.hs' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Übung 2, Aufgabe 2</a>, weil hier durch “einfaches” umformen hin zu Abstraktionen und mit den Regeln dieser im ersten Fall die Laufzeit (vor Compileroptimierungen) von O(n²) auf O(0) ändert.
|
||||
</p>
|
||||
|
||||
<p class='mb-3'>
|
||||
<a href='https://gitea.dresselhaus.cloud/FFPiH/uebung2017-4' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Übung 4</a>, welche ein komplett fertigen (sehr rudimentären und simplen) Dungeon-Crawler bereitstellt, der “nur” 1-2 bugs hat und “wie ein echtes Projekt” erweitert werden muss. Diese Übung hat sich dann über 4 weitere Übungen gestreckt, wobei folgende Aufgaben gelöst werden müssen:
|
||||
<a href='https://gitea.dresselhaus.cloud/FFPiH/uebung2017-4' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Übung 4</a>, welche ein komplett fertigen (sehr rudimentären und simplen) Dungeon-Crawler bereitstellt, der “nur” 1-2 bugs hat und “wie ein echtes Projekt” erweitert werden muss. Diese Übung hat sich dann über 4 weitere Übungen gestreckt, wobei folgende Aufgaben gelöst werden müssen:
|
||||
</p>
|
||||
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
@ -849,7 +1067,7 @@
|
||||
</li>
|
||||
|
||||
<li>
|
||||
Umschreiben von explizitem Argument-Passing hin zu Monad-Transformers mit stateful <a href='Haskell/Lenses' class='text-purple-600 mavenLinkBold hover:underline' data-wikilink-type='WikiLinkBranch'>lenses</a>
|
||||
Umschreiben von explizitem Argument-Passing hin zu Monad-Transformers mit stateful <a href='Coding/Haskell/Lenses' class='text-purple-600 mavenLinkBold hover:underline' data-wikilink-type='WikiLinkBranch'>lenses</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
@ -870,6 +1088,7 @@
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<!-- div class="flex items-center justify-center mt-2">
|
||||
<ema:metadata>
|
||||
<with var="template">
|
||||
@ -899,7 +1118,7 @@
|
||||
<div class='mb-4 overflow-auto text-sm text-gray-500'>
|
||||
|
||||
<div class='pl-2 mt-2 border-l-2 border-purple-200 hover:border-purple-500'>
|
||||
<div>Lecture “<a href='Haskell/FFPiH' class='text-gray-600 font-bold hover:bg-gray-50' data-wikilink-type='WikiLinkNormal'>Intermediate Functional Programming in Haskell</a>”</div>
|
||||
<div>Lecture “<a href='Coding/Haskell/FFPiH' class='text-gray-600 font-bold hover:bg-gray-50' data-wikilink-type='WikiLinkNormal'>Intermediate Functional Programming in Haskell</a>”</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@ -914,7 +1133,7 @@
|
||||
<div class='mb-4 overflow-auto text-sm text-gray-500'>
|
||||
|
||||
<div class='pl-2 mt-2 border-l-2 border-purple-200 hover:border-purple-500'>
|
||||
<div><a href='Haskell/FFPiH' class='text-gray-600 font-bold hover:bg-gray-50' data-wikilink-type='WikiLinkBranch'>more details on the lecture</a></div>
|
||||
<div><a href='Coding/Haskell/FFPiH' class='text-gray-600 font-bold hover:bg-gray-50' data-wikilink-type='WikiLinkBranch'>more details on the lecture</a></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@ -929,7 +1148,7 @@
|
||||
<div class='mb-4 overflow-auto text-sm text-gray-500'>
|
||||
|
||||
<div class='pl-2 mt-2 border-l-2 border-purple-200 hover:border-purple-500'>
|
||||
<div><a href='Haskell/FFPiH' class='text-gray-600 font-bold hover:bg-gray-50' data-wikilink-type='WikiLinkBranch'>Lecture "Intermediate Functional Programming in Haskell"</a></div>
|
||||
<div><a href='Coding/Haskell/FFPiH' class='text-gray-600 font-bold hover:bg-gray-50' data-wikilink-type='WikiLinkBranch'>Lecture "Intermediate Functional Programming in Haskell"</a></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@ -967,7 +1186,7 @@
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.7.3.0'>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.8.1.10'>
|
||||
<img class='w-6 h-6 hover:text-purple-700' src='_emanote-static/emanote-logo.svg' />
|
||||
</a>
|
||||
</div>
|
||||
@ -999,6 +1218,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
@ -47,37 +47,65 @@
|
||||
|
||||
|
||||
|
||||
<link href='tailwind.css?instanceId=ecadcd50-ecaf-4d6e-98ea-7932c3b3d351' rel='stylesheet' type='text/css' />
|
||||
<link href='tailwind.css?instanceId=1ec53b8c-7991-423c-8b17-b92e36792648' rel='stylesheet' type='text/css' />
|
||||
|
||||
<!-- Heist error element -->
|
||||
<style>
|
||||
/* Heist error element */
|
||||
strong.error {
|
||||
color: lightcoral;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
/* External link icon */
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"])::after {
|
||||
/* filter converts black to rgb(156,163,175) */
|
||||
filter: invert(71%) sepia(3%) saturate(904%) hue-rotate(179deg) brightness(92%) contrast(87%);
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"]):hover::after {
|
||||
/* filter converts black to rgb(175,85,99) */
|
||||
filter: invert(32%) sepia(10%) saturate(834%) hue-rotate(176deg) brightness(92%) contrast(88%);
|
||||
}
|
||||
|
||||
a[data-linkicon=""]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon=none]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon="external"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
a[data-linkicon="external"][href^="mailto:"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z' /%3E%3C/svg%3E");
|
||||
}
|
||||
</style>
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'MavenPro';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf) format("truetype");
|
||||
font-family: 'WorkSans';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf) format("truetype");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
/* font-variation-settings: 'wght'300; */
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
font-variation-settings: 'wght' 350;
|
||||
}
|
||||
|
||||
a.mavenLinkBold {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h1,
|
||||
@ -88,14 +116,27 @@
|
||||
h6,
|
||||
header,
|
||||
.header-font {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-variation-settings: 'wght' 300;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<link rel='stylesheet' href='_emanote-static/inverted-tree.css' />
|
||||
|
||||
<link rel='stylesheet' href='https://files.stork-search.net/releases/v1.5.0/flat.css' />
|
||||
<link rel='stylesheet' href='_emanote-static/stork/flat.css' />
|
||||
<!-- Custom Stork-search styling for Emanote -->
|
||||
<style>
|
||||
#stork-search-container {
|
||||
@ -109,7 +150,7 @@
|
||||
</style>
|
||||
|
||||
|
||||
<script src='https://files.stork-search.net/releases/v1.5.0/stork.js'></script>
|
||||
<script src='_emanote-static/stork/stork.js'></script>
|
||||
|
||||
|
||||
<script data-emanote-base-url='/'>
|
||||
@ -135,6 +176,7 @@
|
||||
const indexUrl = baseUrl + '-/stork.st';
|
||||
if (document.readyState !== 'complete') {
|
||||
window.addEventListener('load', function () {
|
||||
stork.initialize(baseUrl + '_emanote-static/stork/stork.wasm');
|
||||
stork.register(indexName, indexUrl);
|
||||
});
|
||||
|
||||
@ -193,7 +235,16 @@
|
||||
</li>
|
||||
|
||||
<li class='inline-flex items-center'>
|
||||
<a class='px-1 font-bold' href='Haskell'>
|
||||
<a class='px-1 font-bold' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
<svg fill='currentColor' viewBox='0 0 20 20' class='w-auto h-5 text-gray-400'>
|
||||
<path fill-rule='evenodd' d='M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z' clip-rule='evenodd'></path>
|
||||
</svg>
|
||||
</li>
|
||||
|
||||
<li class='inline-flex items-center'>
|
||||
<a class='px-1 font-bold' href='Coding/Haskell'>
|
||||
Haskell
|
||||
</a>
|
||||
<svg fill='currentColor' viewBox='0 0 20 20' class='w-auto h-5 text-gray-400'>
|
||||
@ -370,7 +421,43 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold hover:underline truncate' title='Haskell' href='Haskell'>
|
||||
<a class='font-bold hover:underline truncate' title='Coding' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-700' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path fill-rule='evenodd' d='M2 6a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1H8a3 3 0 00-3 3v1.5a1.5 1.5 0 01-3 0V6z' clip-rule='evenodd'></path>
|
||||
<path d='M6 12a2 2 0 012-2h8a2 2 0 012 2v2a2 2 0 01-2 2H2h2a2 2 0 002-2v-2z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold hover:underline truncate' title='Haskell' href='Coding/Haskell'>
|
||||
Haskell
|
||||
</a>
|
||||
|
||||
@ -392,6 +479,43 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Talks und Posts zu Haskell' href='Coding/Haskell/Advantages'>
|
||||
Talks und Posts zu Haskell
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -403,7 +527,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Code-Snippets' href='Haskell/Code%20Snippets'>
|
||||
<a class='hover:underline truncate' title='Code-Snippets' href='Coding/Haskell/Code%20Snippets'>
|
||||
Code-Snippets
|
||||
</a>
|
||||
|
||||
@ -443,7 +567,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Fortgeschrittene funktionale Programmierung in Haskell' href='Haskell/FFPiH'>
|
||||
<a class='hover:underline truncate' title='Fortgeschrittene funktionale Programmierung in Haskell' href='Coding/Haskell/FFPiH'>
|
||||
Fortgeschrittene funktionale Programmierung in Haskell
|
||||
</a>
|
||||
|
||||
@ -478,7 +602,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold text-purple-600 hover:underline truncate' title='Lenses' href='Haskell/Lenses'>
|
||||
<a class='font-bold text-purple-600 hover:underline truncate' title='Lenses' href='Coding/Haskell/Lenses'>
|
||||
Lenses
|
||||
</a>
|
||||
|
||||
@ -509,17 +633,19 @@
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Talks und Posts zu Haskell' href='Haskell/Advantages'>
|
||||
Talks und Posts zu Haskell
|
||||
<a class='hover:underline truncate' title='Webapp-Development in Haskell' href='Coding/Haskell/Webapp-Example'>
|
||||
Webapp-Development in Haskell
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
@ -528,6 +654,9 @@
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
@ -546,19 +675,17 @@
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Webapp-Development in Haskell' href='Haskell/Webapp-Example'>
|
||||
Webapp-Development in Haskell
|
||||
<a class='hover:underline truncate' title='Openapi-generator' href='Coding/OpenAPI'>
|
||||
Openapi-generator
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
@ -619,6 +746,82 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Opinions' href='Opinions'>
|
||||
Opinions
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Todo' href='TODO'>
|
||||
Todo
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -706,7 +909,7 @@
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href='Haskell/Advantages'>
|
||||
<a href='Coding/Haskell/Advantages'>
|
||||
Talks und Posts zu Haskell
|
||||
</a>
|
||||
</div>
|
||||
@ -717,12 +920,23 @@
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href='Haskell'>
|
||||
<a href='Coding/Haskell'>
|
||||
Haskell
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
@ -742,12 +956,16 @@
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href='Haskell/FFPiH'>
|
||||
<a href='Coding/Haskell/FFPiH'>
|
||||
Fortgeschrittene funktionale Programmierung in Haskell
|
||||
</a>
|
||||
</div>
|
||||
@ -1339,6 +1557,7 @@ traverseOf :: Over p f s t a b -> p a (f b) -> s -> f t</code></pre></d
|
||||
dafuq?
|
||||
</p>
|
||||
|
||||
|
||||
<!-- div class="flex items-center justify-center mt-2">
|
||||
<ema:metadata>
|
||||
<with var="template">
|
||||
@ -1361,14 +1580,14 @@ traverseOf :: Over p f s t a b -> p a (f b) -> s -> f t</code></pre></d
|
||||
<ul class='space-y-1'>
|
||||
|
||||
<li>
|
||||
<a class='text-purple-600 mavenLinkBold hover:bg-purple-50' href='Haskell/Advantages'>
|
||||
<a class='text-purple-600 mavenLinkBold hover:bg-purple-50' href='Coding/Haskell/Advantages'>
|
||||
Talks und Posts zu Haskell
|
||||
</a>
|
||||
|
||||
<div class='mb-4 overflow-auto text-sm text-gray-500'>
|
||||
|
||||
<div class='pl-2 mt-2 border-l-2 border-purple-200 hover:border-purple-500'>
|
||||
<div><a href='https://skillsmatter.com/skillscasts/4251-lenses-compositional-data-access-and-manipulation' class='text-gray-600 hover:underline' target='_blank' rel='noopener'>Lenses</a> (Registrierung nötig - kostenfrei), siehe auch: <a href='Haskell/Lenses' class='text-gray-600 font-bold hover:bg-gray-50' data-wikilink-type='WikiLinkBranch'>Lenses</a></div>
|
||||
<div><a href='https://skillsmatter.com/skillscasts/4251-lenses-compositional-data-access-and-manipulation' class='text-gray-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Lenses</a> (Registrierung nötig - kostenfrei), siehe auch: <a href='Coding/Haskell/Lenses' class='text-gray-600 font-bold hover:bg-gray-50' data-wikilink-type='WikiLinkBranch'>Lenses</a></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@ -1376,14 +1595,14 @@ traverseOf :: Over p f s t a b -> p a (f b) -> s -> f t</code></pre></d
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class='text-purple-600 mavenLinkBold hover:bg-purple-50' href='Haskell/FFPiH'>
|
||||
<a class='text-purple-600 mavenLinkBold hover:bg-purple-50' href='Coding/Haskell/FFPiH'>
|
||||
Fortgeschrittene funktionale Programmierung in Haskell
|
||||
</a>
|
||||
|
||||
<div class='mb-4 overflow-auto text-sm text-gray-500'>
|
||||
|
||||
<div class='pl-2 mt-2 border-l-2 border-purple-200 hover:border-purple-500'>
|
||||
<div>Umschreiben von explizitem Argument-Passing hin zu Monad-Transformers mit stateful <a href='Haskell/Lenses' class='text-gray-600 font-bold hover:bg-gray-50' data-wikilink-type='WikiLinkBranch'>lenses</a></div>
|
||||
<div>Umschreiben von explizitem Argument-Passing hin zu Monad-Transformers mit stateful <a href='Coding/Haskell/Lenses' class='text-gray-600 font-bold hover:bg-gray-50' data-wikilink-type='WikiLinkBranch'>lenses</a></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@ -1421,7 +1640,7 @@ traverseOf :: Over p f s t a b -> p a (f b) -> s -> f t</code></pre></d
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.7.3.0'>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.8.1.10'>
|
||||
<img class='w-6 h-6 hover:text-purple-700' src='_emanote-static/emanote-logo.svg' />
|
||||
</a>
|
||||
</div>
|
||||
@ -1453,6 +1672,9 @@ traverseOf :: Over p f s t a b -> p a (f b) -> s -> f t</code></pre></d
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
@ -47,37 +47,65 @@
|
||||
|
||||
|
||||
|
||||
<link href='tailwind.css?instanceId=ecadcd50-ecaf-4d6e-98ea-7932c3b3d351' rel='stylesheet' type='text/css' />
|
||||
<link href='tailwind.css?instanceId=1ec53b8c-7991-423c-8b17-b92e36792648' rel='stylesheet' type='text/css' />
|
||||
|
||||
<!-- Heist error element -->
|
||||
<style>
|
||||
/* Heist error element */
|
||||
strong.error {
|
||||
color: lightcoral;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
/* External link icon */
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"])::after {
|
||||
/* filter converts black to rgb(156,163,175) */
|
||||
filter: invert(71%) sepia(3%) saturate(904%) hue-rotate(179deg) brightness(92%) contrast(87%);
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"]):hover::after {
|
||||
/* filter converts black to rgb(175,85,99) */
|
||||
filter: invert(32%) sepia(10%) saturate(834%) hue-rotate(176deg) brightness(92%) contrast(88%);
|
||||
}
|
||||
|
||||
a[data-linkicon=""]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon=none]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon="external"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
a[data-linkicon="external"][href^="mailto:"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z' /%3E%3C/svg%3E");
|
||||
}
|
||||
</style>
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'MavenPro';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf) format("truetype");
|
||||
font-family: 'WorkSans';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf) format("truetype");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
/* font-variation-settings: 'wght'300; */
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
font-variation-settings: 'wght' 350;
|
||||
}
|
||||
|
||||
a.mavenLinkBold {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h1,
|
||||
@ -88,14 +116,27 @@
|
||||
h6,
|
||||
header,
|
||||
.header-font {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-variation-settings: 'wght' 300;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<link rel='stylesheet' href='_emanote-static/inverted-tree.css' />
|
||||
|
||||
<link rel='stylesheet' href='https://files.stork-search.net/releases/v1.5.0/flat.css' />
|
||||
<link rel='stylesheet' href='_emanote-static/stork/flat.css' />
|
||||
<!-- Custom Stork-search styling for Emanote -->
|
||||
<style>
|
||||
#stork-search-container {
|
||||
@ -109,7 +150,7 @@
|
||||
</style>
|
||||
|
||||
|
||||
<script src='https://files.stork-search.net/releases/v1.5.0/stork.js'></script>
|
||||
<script src='_emanote-static/stork/stork.js'></script>
|
||||
|
||||
|
||||
<script data-emanote-base-url='/'>
|
||||
@ -135,6 +176,7 @@
|
||||
const indexUrl = baseUrl + '-/stork.st';
|
||||
if (document.readyState !== 'complete') {
|
||||
window.addEventListener('load', function () {
|
||||
stork.initialize(baseUrl + '_emanote-static/stork/stork.wasm');
|
||||
stork.register(indexName, indexUrl);
|
||||
});
|
||||
|
||||
@ -193,7 +235,16 @@
|
||||
</li>
|
||||
|
||||
<li class='inline-flex items-center'>
|
||||
<a class='px-1 font-bold' href='Haskell'>
|
||||
<a class='px-1 font-bold' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
<svg fill='currentColor' viewBox='0 0 20 20' class='w-auto h-5 text-gray-400'>
|
||||
<path fill-rule='evenodd' d='M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z' clip-rule='evenodd'></path>
|
||||
</svg>
|
||||
</li>
|
||||
|
||||
<li class='inline-flex items-center'>
|
||||
<a class='px-1 font-bold' href='Coding/Haskell'>
|
||||
Haskell
|
||||
</a>
|
||||
<svg fill='currentColor' viewBox='0 0 20 20' class='w-auto h-5 text-gray-400'>
|
||||
@ -370,7 +421,43 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold hover:underline truncate' title='Haskell' href='Haskell'>
|
||||
<a class='font-bold hover:underline truncate' title='Coding' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-700' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path fill-rule='evenodd' d='M2 6a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1H8a3 3 0 00-3 3v1.5a1.5 1.5 0 01-3 0V6z' clip-rule='evenodd'></path>
|
||||
<path d='M6 12a2 2 0 012-2h8a2 2 0 012 2v2a2 2 0 01-2 2H2h2a2 2 0 002-2v-2z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold hover:underline truncate' title='Haskell' href='Coding/Haskell'>
|
||||
Haskell
|
||||
</a>
|
||||
|
||||
@ -392,6 +479,43 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Talks und Posts zu Haskell' href='Coding/Haskell/Advantages'>
|
||||
Talks und Posts zu Haskell
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -403,7 +527,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Code-Snippets' href='Haskell/Code%20Snippets'>
|
||||
<a class='hover:underline truncate' title='Code-Snippets' href='Coding/Haskell/Code%20Snippets'>
|
||||
Code-Snippets
|
||||
</a>
|
||||
|
||||
@ -443,7 +567,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Fortgeschrittene funktionale Programmierung in Haskell' href='Haskell/FFPiH'>
|
||||
<a class='hover:underline truncate' title='Fortgeschrittene funktionale Programmierung in Haskell' href='Coding/Haskell/FFPiH'>
|
||||
Fortgeschrittene funktionale Programmierung in Haskell
|
||||
</a>
|
||||
|
||||
@ -480,7 +604,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Lenses' href='Haskell/Lenses'>
|
||||
<a class='hover:underline truncate' title='Lenses' href='Coding/Haskell/Lenses'>
|
||||
Lenses
|
||||
</a>
|
||||
|
||||
@ -503,43 +627,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Talks und Posts zu Haskell' href='Haskell/Advantages'>
|
||||
Talks und Posts zu Haskell
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -552,7 +639,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold text-purple-600 hover:underline truncate' title='Webapp-Development in Haskell' href='Haskell/Webapp-Example'>
|
||||
<a class='font-bold text-purple-600 hover:underline truncate' title='Webapp-Development in Haskell' href='Coding/Haskell/Webapp-Example'>
|
||||
Webapp-Development in Haskell
|
||||
</a>
|
||||
|
||||
@ -586,7 +673,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Webapp-Example: Main.hs' href='Haskell/Webapp-Example/Main.hs'>
|
||||
<a class='hover:underline truncate' title='Webapp-Example: Main.hs' href='Coding/Haskell/Webapp-Example/Main.hs'>
|
||||
Webapp-Example: Main.hs
|
||||
</a>
|
||||
|
||||
@ -623,7 +710,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Webapp-Example: MyService/Types.hs' href='Haskell/Webapp-Example/MyService_Types.hs'>
|
||||
<a class='hover:underline truncate' title='Webapp-Example: MyService/Types.hs' href='Coding/Haskell/Webapp-Example/MyService_Types.hs'>
|
||||
Webapp-Example: MyService/Types.hs
|
||||
</a>
|
||||
|
||||
@ -642,6 +729,46 @@
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Openapi-generator' href='Coding/OpenAPI'>
|
||||
Openapi-generator
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
@ -691,6 +818,82 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Opinions' href='Opinions'>
|
||||
Opinions
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Todo' href='TODO'>
|
||||
Todo
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -778,8 +981,19 @@
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href='Haskell'>
|
||||
Haskell
|
||||
<a href='Coding/OpenAPI'>
|
||||
Openapi-generator
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@ -799,6 +1013,21 @@
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href='Coding/Haskell'>
|
||||
Haskell
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
@ -827,11 +1056,15 @@
|
||||
</p>
|
||||
|
||||
<p class='mb-3'>
|
||||
Diese Definition läuft über openapi-v3 und kann z.b. mit Echtzeit-Vorschau im <a href='http://editor.swagger.io/' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>http://editor.swagger.io/</a> erspielen. Per Default ist der noch auf openapi-v2 (aka swagger), kann aber auch v3.
|
||||
Um die Anforderungen und Möglichkeiten des jeweiligen Services sauber zu erfassen und automatisiert zu prüfen, dummy-implementationen zu bekommen und vieles andere mehr, empfiehlt es sich den <a href='Coding/OpenAPI' class='text-purple-600 mavenLinkBold hover:underline' data-wikilink-type='WikiLinkTag'>openapi-generator</a> zu nutzen.
|
||||
</p>
|
||||
|
||||
<p class='mb-3'>
|
||||
Nach der Definition, was man am Ende haben möchte, muss man sich entscheiden, in welcher Sprache man weiter entwickelt. Ich empfehle aus verschiedenen Gründen primär 2 Sprachen: Python-Microservices (weil die ML-Libraries sehr gut sind, allerdings Änderungen meist schwer sind und der Code wenig robust - meist nur 1 API-Endpunkt pro service) und Haskell (stabilität, performace, leicht zu ändern, gut anzupassen).
|
||||
Diese Definition läuft über openapi-v3 und kann z.b. mit Echtzeit-Vorschau im <a href='http://editor.swagger.io/' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>http://editor.swagger.io/</a> erspielen. Per Default ist der noch auf openapi-v2 (aka swagger), kann aber auch v3.
|
||||
</p>
|
||||
|
||||
<p class='mb-3'>
|
||||
Nach der Definition, was man am Ende haben möchte, muss man sich entscheiden, in welcher Sprache man weiter entwickelt. Ich empfehle aus verschiedenen Gründen primär 2 Sprachen: Python-Microservices (weil die ML-Libraries sehr gut sind, allerdings Änderungen meist schwer sind und der Code wenig robust - meist nur 1 API-Endpunkt pro service) und Haskell (Stabilität, Performace, leicht zu ändern, gut anzupassen).
|
||||
</p>
|
||||
|
||||
<p class='mb-3'>
|
||||
@ -839,11 +1072,11 @@
|
||||
</p>
|
||||
<h2 id='startprojekt-in-haskell' class='inline-block mt-6 mb-4 text-4xl font-bold text-gray-700 border-b-2'>Startprojekt in Haskell</h2><h3 id='erstellen-eines-neuen-projektes' class='mt-6 mb-2 text-3xl font-bold text-gray-700'>Erstellen eines neuen Projektes</h3>
|
||||
<p class='mb-3'>
|
||||
Zunächst erstellen wir in normales Haskell-Projekt ohne funktionalität & firlefanz:
|
||||
Zunächst erstellen wir in normales Haskell-Projekt ohne Funktionalität & Firlefanz:
|
||||
</p>
|
||||
<div class='py-0.5 mb-3 text-sm'><pre><code class='bash language-bash'>stack new myservice</code></pre></div>
|
||||
<p class='mb-3'>
|
||||
Dies erstellt ein neues Verzeichnis und das generelle scaffolding. Nach einer kurzen anpassung der stack.yaml (resolver auf unserer setzen; aktuell: lts-17.4) fügen wir am Ende der Datei
|
||||
Dies erstellt ein neues Verzeichnis und das generelle scaffolding. Nach einer kurzen Anpassung der <code class='py-0.5 px-0.5 bg-gray-100'>stack.yaml</code> (resolver auf unserer setzen; aktuell: <code class='py-0.5 px-0.5 bg-gray-100'>lts-17.4</code>) fügen wir am Ende der Datei
|
||||
</p>
|
||||
<div class='py-0.5 mb-3 text-sm'><pre><code class='yaml language-yaml'>allow-newer: true
|
||||
ghc-options:
|
||||
@ -853,7 +1086,7 @@ ghc-options:
|
||||
</p>
|
||||
<h3 id='generierung-der-api' class='mt-6 mb-2 text-3xl font-bold text-gray-700'>Generierung der API</h3>
|
||||
<p class='mb-3'>
|
||||
Da die API immer wieder neu generiert werden kann (und sollte!) liegt sich in einem unterverzeichnis des Haputprojektes.
|
||||
Da die API immer wieder neu generiert werden kann (und sollte!) liegt sich in einem unterverzeichnis des Hauptprojektes.
|
||||
</p>
|
||||
|
||||
<p class='mb-3'>
|
||||
@ -861,29 +1094,29 @@ ghc-options:
|
||||
</p>
|
||||
<div class='py-0.5 mb-3 text-sm'><pre><code class='bash language-bash'>openapi-generator generate -g haskell -o . -i api-doc.yml</code></pre></div>
|
||||
<p class='mb-3'>
|
||||
Dieses erstellt einem dann eine komplette library inkl. Datentypen. Wichtig: Der Name in der api-doc sollte vom Namen des Services (oben myservice) abweichen - entweder in Casing oder im Namen direkt. Suffixe wie API schneidet der Generator hier leider ab. (Wieso das ganze? Es entstehen nachher 2 libraries, foo & fooAPI. Da der generator das API abschneidet endet man mit foo & foo und der compiler meckert, dass er nicht weiss, welche lib gemeint ist).
|
||||
Dieses erstellt einem dann eine komplette library inkl. Datentypen. Wichtig: Der Name in der <code class='py-0.5 px-0.5 bg-gray-100'>api-doc</code> sollte vom Namen des Services (oben <code class='py-0.5 px-0.5 bg-gray-100'>myservice</code>) abweichen - entweder in Casing oder im Namen direkt. Suffixe wie API schneidet der Generator hier leider ab. (Wieso das ganze? Es entstehen nachher 2 libraries, <code class='py-0.5 px-0.5 bg-gray-100'>foo</code> & <code class='py-0.5 px-0.5 bg-gray-100'>fooAPI</code>. Da der generator das API abschneidet endet man mit foo & foo und der compiler meckert, dass er nicht weiß, welche lib gemeint ist).
|
||||
</p>
|
||||
|
||||
<p class='mb-3'>
|
||||
danach: wie gewohnt <code class='py-0.5 px-0.5 bg-gray-100'>git init; git add .; git commit -m "initial"</code>. Auf dem Server der Wahl (github, gitea, gitlab, …) nun ein Repository erstellen (am Besten: myserviceAPI - alles auf API endend ist autogeneriert!) und den Anweisungen nach ein remote hinzufügen & pushen.
|
||||
danach: wie gewohnt <code class='py-0.5 px-0.5 bg-gray-100'>git init; git add .; git commit -m "initial"</code>. Auf dem Server der Wahl (github, gitea, gitlab, …) nun ein Repository erstellen (am Besten: <code class='py-0.5 px-0.5 bg-gray-100'>myserviceAPI</code> - nach Konvention ist alles auf API endend autogeneriert!) und den Anweisungen nach ein remote hinzufügen & pushen.
|
||||
</p>
|
||||
<h4 id='wieder-zurück-im-haskell-service' class='mt-6 mb-2 text-2xl font-bold text-gray-700'>Wieder zurück im Haskell-Service</h4>
|
||||
<p class='mb-3'>
|
||||
In unserem eigentlichen Service müssen wir nun die API einbinden. Dazu erstellen wir ein Verzeichnis <code class='py-0.5 px-0.5 bg-gray-100'>libs</code> (konvention) und machen ein <code class='py-0.5 px-0.5 bg-gray-100'>git submodule add <repository-url> libs/myserviceAPI</code>
|
||||
In unserem eigentlichen Service müssen wir nun die API einbinden. Dazu erstellen wir ein Verzeichnis <code class='py-0.5 px-0.5 bg-gray-100'>libs</code> (Konvention) und machen ein <code class='py-0.5 px-0.5 bg-gray-100'>git submodule add <repository-url> libs/myserviceAPI</code>
|
||||
</p>
|
||||
|
||||
<p class='mb-3'>
|
||||
Git hat nun die API in das submodul gepackt und wir können das oben erstellte temporäre verzeichnis wieder löschen.
|
||||
Git hat nun die API in das submodul gepackt und wir können das oben erstellte temporäre Verzeichnis wieder löschen.
|
||||
</p>
|
||||
|
||||
<p class='mb-3'>
|
||||
Anschließend müssen wir stack noch erklären, dass wir die API da nun liegen haben und passen wieder die stack.yaml an, indem wir das Verzeichnis unter packages hinzufügen.
|
||||
Anschließend müssen wir stack noch erklären, dass wir die API da nun liegen haben und passen wieder die <code class='py-0.5 px-0.5 bg-gray-100'>stack.yaml</code> an, indem wir das Verzeichnis unter packages hinzufügen.
|
||||
</p>
|
||||
<div class='py-0.5 mb-3 text-sm'><pre><code class='yaml language-yaml'>packages:
|
||||
- .
|
||||
- libs/myserviceAPI # <<</code></pre></div>
|
||||
<p class='mb-3'>
|
||||
nun können wir in der <code class='py-0.5 px-0.5 bg-gray-100'>package.yaml</code> (oder <code class='py-0.5 px-0.5 bg-gray-100'>myservice.cabal</code>, falls kein hpack verwendet wird) unter den dependencies unsere api hinzufügen (name wie die cabal-datei in libs/myserviceAPI).
|
||||
Nun können wir in der <code class='py-0.5 px-0.5 bg-gray-100'>package.yaml</code> (oder <code class='py-0.5 px-0.5 bg-gray-100'>myservice.cabal</code>, falls kein <code class='py-0.5 px-0.5 bg-gray-100'>hpack</code> verwendet wird) unter den dependencies unsere API hinzufügen (name wie die cabal-Datei in <code class='py-0.5 px-0.5 bg-gray-100'>libs/myserviceAPI</code>).
|
||||
</p>
|
||||
<h3 id='einbinden-anderer-microservices' class='mt-6 mb-2 text-3xl font-bold text-gray-700'>Einbinden anderer Microservices</h3>
|
||||
<p class='mb-3'>
|
||||
@ -898,7 +1131,7 @@ ghc-options:
|
||||
</p>
|
||||
<h3 id='entfernen-von-anderen-technologienmicroservices' class='mt-6 mb-2 text-3xl font-bold text-gray-700'>Entfernen von anderen Technologien/Microservices</h3>
|
||||
<p class='mb-3'>
|
||||
In git ist das entfernen von Submodules etwas frickelig, daher hier ein copy&paste der <a href='https://gist.github.com/myusuf3/7f645819ded92bda6677' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>GitHub-Antwort</a>:
|
||||
In git ist das entfernen von Submodules etwas frickelig, daher hier ein copy&paste der <a href='https://gist.github.com/myusuf3/7f645819ded92bda6677' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>GitHub-Antwort</a>:
|
||||
</p>
|
||||
<div class='py-0.5 mb-3 text-sm'><pre><code class='bash language-bash'>## Remove the submodule entry from .git/config
|
||||
git submodule deinit -f path/to/submodule
|
||||
@ -933,7 +1166,7 @@ git rm-f path/to/submodule</code></pre></div>
|
||||
</ul>
|
||||
|
||||
<p class='mb-3'>
|
||||
Wenn man einen lokalen Webserver startet kann man mittels “s” auch die interaktive Suche öffnen (Suche nach Typen, Funktionen, Signaturen, etc.). In Bash mit python3 geht das z.b. einfach über:
|
||||
Wenn man einen lokalen Webserver startet kann man mittels “s” auch die interaktive Suche öffnen (Suche nach Typen, Funktionen, Signaturen, etc.). In Bash mit <code class='py-0.5 px-0.5 bg-gray-100'>python3</code> geht das z.b. einfach über:
|
||||
</p>
|
||||
<div class='py-0.5 mb-3 text-sm'><pre><code class='bash language-bash'>cd $(stack path --local-doc-root)
|
||||
python3 -m SimpleHTTPServer 8000
|
||||
@ -947,7 +1180,7 @@ firefox "http://localhost:8000"</code></pre></div><h3 id='implementation-des-ser
|
||||
<li>
|
||||
|
||||
<p class='mb-3'>
|
||||
in app/Main.hs: Hier ist quasi immer nur eine Zeile drin: <code class='py-0.5 px-0.5 bg-gray-100'>main = myServiceMain</code>
|
||||
in <code class='py-0.5 px-0.5 bg-gray-100'>app/Main.hs</code>: Hier ist quasi immer nur eine Zeile drin: <code class='py-0.5 px-0.5 bg-gray-100'>main = myServiceMain</code>
|
||||
</p>
|
||||
|
||||
<p class='mb-3'>
|
||||
@ -959,7 +1192,7 @@ firefox "http://localhost:8000"</code></pre></div><h3 id='implementation-des-ser
|
||||
<li>
|
||||
|
||||
<p class='mb-3'>
|
||||
in src/MyService.hs: <code class='py-0.5 px-0.5 bg-gray-100'>myServiceMain :: IO ()</code> definieren
|
||||
in <code class='py-0.5 px-0.5 bg-gray-100'>src/MyService.hs</code>: <code class='py-0.5 px-0.5 bg-gray-100'>myServiceMain :: IO ()</code> definieren
|
||||
</p>
|
||||
|
||||
</li>
|
||||
@ -967,13 +1200,13 @@ firefox "http://localhost:8000"</code></pre></div><h3 id='implementation-des-ser
|
||||
</ul>
|
||||
|
||||
<p class='mb-3'>
|
||||
Für die Main kann man prinzipiell eine Main andere Services copy/pasten. Im folgenden eine Annotierte main-Funktion - zu den einzelnen Vorraussetzungen kommen wir im Anschluss.
|
||||
Für die Main kann man prinzipiell eine Main andere Services copy/pasten. Im folgenden eine Annotierte main-Funktion - zu den einzelnen Voraussetzungen kommen wir im Anschluss.
|
||||
</p>
|
||||
<section title='Embedded note' class='p-4 mx-2 mb-2 bg-white border-2 rounded-lg shadow-inner'>
|
||||
<details>
|
||||
<summary class='flex items-center justify-center text-2xl italic bg-purple-50 rounded py-1 px-2 mb-3'>
|
||||
<header style='display:list-item'>
|
||||
<a href='Haskell/Webapp-Example/Main.hs'>
|
||||
<a href='Coding/Haskell/Webapp-Example/Main.hs'>
|
||||
Webapp-Example: Main.hs
|
||||
</a>
|
||||
</header>
|
||||
@ -981,7 +1214,7 @@ firefox "http://localhost:8000"</code></pre></div><h3 id='implementation-des-ser
|
||||
<div>
|
||||
|
||||
<p class='mb-3'>
|
||||
Wie man das verwendet, siehe <a href='Haskell/Webapp-Example' class='text-purple-600 mavenLinkBold hover:underline' data-wikilink-type='WikiLinkTag'>Webapp-Development in Haskell</a>.
|
||||
Wie man das verwendet, siehe <a href='Coding/Haskell/Webapp-Example' class='text-purple-600 mavenLinkBold hover:underline' data-wikilink-type='WikiLinkTag'>Webapp-Development in Haskell</a>.
|
||||
</p>
|
||||
<div class='py-0.5 mb-3 text-sm'><pre><code class='haskell language-haskell'>{-# OPTIONS_GHC -Wno-name-shadowing #-}
|
||||
{-# LANGUAGE FlexibleContexts #-}
|
||||
@ -1165,22 +1398,23 @@ loggingMiddleware = liftIO $ mkRequestLogger $ def { outputFormat = CustomOutput
|
||||
| statusCode status > 399 && statusCode status < 500 = "Error code "<>toLogStr (statusCode status) <>" sent. Request-Payload was: "<> mconcat (toLogStr <$> payload) <> "\n"
|
||||
| otherwise = toLogStr (show r) <> "\n"
|
||||
</code></pre></div>
|
||||
|
||||
</div>
|
||||
</details>
|
||||
</section>
|
||||
<h4 id='weitere-instanzen-und-definitionen-die-der-generator-noch-nicht-macht' class='mt-6 mb-2 text-2xl font-bold text-gray-700'>Weitere Instanzen und Definitionen, die der Generator (noch) nicht macht</h4>
|
||||
<p class='mb-3'>
|
||||
In der <code class='py-0.5 px-0.5 bg-gray-100'>Myservice.Types</code> werden ein paar hilfreiche Typen und Typinstanzen definiert. Im Folgenden geht es dabei um Dinge für:
|
||||
In der <code class='py-0.5 px-0.5 bg-gray-100'>Myservice.Types</code> werden ein paar hilfreiche Typen und Typ-Instanzen definiert. Im Folgenden geht es dabei um Dinge für:
|
||||
</p>
|
||||
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
Envy
|
||||
<code class='py-0.5 px-0.5 bg-gray-100'>Envy</code>
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
Laden von $ENV_VAR in Datentypen
|
||||
Laden von <code class='py-0.5 px-0.5 bg-gray-100'>$ENV_VAR</code> in Datentypen
|
||||
</li>
|
||||
|
||||
<li>
|
||||
@ -1192,7 +1426,7 @@ loggingMiddleware = liftIO $ mkRequestLogger $ def { outputFormat = CustomOutput
|
||||
</li>
|
||||
|
||||
<li>
|
||||
ServerConfig
|
||||
<code class='py-0.5 px-0.5 bg-gray-100'>ServerConfig</code>
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
@ -1204,7 +1438,7 @@ loggingMiddleware = liftIO $ mkRequestLogger $ def { outputFormat = CustomOutput
|
||||
</li>
|
||||
|
||||
<li>
|
||||
ExtraTypes
|
||||
<code class='py-0.5 px-0.5 bg-gray-100'>ExtraTypes</code>
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
@ -1216,19 +1450,27 @@ loggingMiddleware = liftIO $ mkRequestLogger $ def { outputFormat = CustomOutput
|
||||
</li>
|
||||
|
||||
<li>
|
||||
Out/BSON-Instanzen
|
||||
<code class='py-0.5 px-0.5 bg-gray-100'>Out</code>/<code class='py-0.5 px-0.5 bg-gray-100'>BSON</code>-Instanzen
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
Der API-Generator generiert nur wenige Instanzen automatisch (z.B. Aeson), daher werden hier die fehlenden definiert.
|
||||
Der API-Generator generiert nur wenige Instanzen automatisch (z.B. <code class='py-0.5 px-0.5 bg-gray-100'>aeson</code>), daher werden hier die fehlenden definiert.
|
||||
</li>
|
||||
|
||||
<li>
|
||||
BSON: Kommunakation mit MongoDB
|
||||
<code class='py-0.5 px-0.5 bg-gray-100'>BSON</code>: Kommunikation mit <code class='py-0.5 px-0.5 bg-gray-100'>MongoDB</code>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
Out: pretty-printing im Log
|
||||
<code class='py-0.5 px-0.5 bg-gray-100'>Out</code>: pretty-printing im Log
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
Nur nötig, wenn man pretty-printing via <code class='py-0.5 px-0.5 bg-gray-100'>Out</code> statt über Generics wie z.b. <code class='py-0.5 px-0.5 bg-gray-100'>pretty-generic</code> oder die automatische Show-Instanz via <code class='py-0.5 px-0.5 bg-gray-100'>prerryShow</code> macht.
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
@ -1240,7 +1482,7 @@ loggingMiddleware = liftIO $ mkRequestLogger $ def { outputFormat = CustomOutput
|
||||
<details>
|
||||
<summary class='flex items-center justify-center text-2xl italic bg-purple-50 rounded py-1 px-2 mb-3'>
|
||||
<header style='display:list-item'>
|
||||
<a href='Haskell/Webapp-Example/MyService_Types.hs'>
|
||||
<a href='Coding/Haskell/Webapp-Example/MyService_Types.hs'>
|
||||
Webapp-Example: MyService/Types.hs
|
||||
</a>
|
||||
</header>
|
||||
@ -1248,7 +1490,7 @@ loggingMiddleware = liftIO $ mkRequestLogger $ def { outputFormat = CustomOutput
|
||||
<div>
|
||||
|
||||
<p class='mb-3'>
|
||||
Anleitung siehe <a href='Haskell/Webapp-Example' class='text-purple-600 mavenLinkBold hover:underline' data-wikilink-type='WikiLinkTag'>Webapp-Development in Haskell</a>.
|
||||
Anleitung siehe <a href='Coding/Haskell/Webapp-Example' class='text-purple-600 mavenLinkBold hover:underline' data-wikilink-type='WikiLinkTag'>Webapp-Development in Haskell</a>.
|
||||
</p>
|
||||
<div class='py-0.5 mb-3 text-sm'><pre><code class='haskell language-haskell'>{-# OPTIONS_GHC -Wno-orphans #-}
|
||||
{-# OPTIONS_GHC -Wno-name-shadowing #-}
|
||||
@ -1327,12 +1569,13 @@ instance Out ServerConfig
|
||||
|
||||
instance Out Response
|
||||
instance FromBSON Repsonse -- FromBSON-Instanz geht immer davon aus, dass alle keys da sind (ggf. mit null bei Nothing).</code></pre></div>
|
||||
|
||||
</div>
|
||||
</details>
|
||||
</section>
|
||||
<h4 id='was-noch-zu-tun-ist' class='mt-6 mb-2 text-2xl font-bold text-gray-700'>Was noch zu tun ist</h4>
|
||||
<p class='mb-3'>
|
||||
Den Service implementieren. Einfach ein neues Modul aufmachen (z.B. <code class='py-0.5 px-0.5 bg-gray-100'>MyService.Handler</code> oder <code class='py-0.5 px-0.5 bg-gray-100'>MyService.DieserEndpunktbereich</code>/<code class='py-0.5 px-0.5 bg-gray-100'>MyService.JenerEndpunktbereich</code>) und dort die Funktion implementieren, die man in der <code class='py-0.5 px-0.5 bg-gray-100'>Main.hs</code> benutzt hat. In dem Handler habt ihr dann keinen Stress mehr mit validierung, networking, logging, etc. pp. weil alles in der Main abgehandelt wurde und ihr nur noch den “Happy-Case” implementieren müsst. Beispiel für unseren Handler oben:
|
||||
Den Service implementieren. Einfach ein neues Modul aufmachen (z.B. <code class='py-0.5 px-0.5 bg-gray-100'>MyService.Handler</code> oder <code class='py-0.5 px-0.5 bg-gray-100'>MyService.DieserEndpunktbereich</code>/<code class='py-0.5 px-0.5 bg-gray-100'>MyService.JenerEndpunktbereich</code>) und dort die Funktion implementieren, die man in der <code class='py-0.5 px-0.5 bg-gray-100'>Main.hs</code> benutzt hat. In dem Handler habt ihr dann keinen Stress mehr mit Validierung, networking, logging, etc. pp. weil alles in der Main abgehandelt wurde und ihr nur noch den “Happy-Case” implementieren müsst. Beispiel für unseren Handler oben:
|
||||
</p>
|
||||
<div class='py-0.5 mb-3 text-sm'><pre><code class='haskell language-haskell'>myApiEndpointV1Post :: MonadIO m => ServerConfig -> (ClientEnv,ClientEnv) -> TQueue BS.ByteString -> ([LogItem] -> IO ()) -> Request -> m Response
|
||||
myApiEndpointV1Post sc calls amqPost log req = do
|
||||
@ -1356,7 +1599,7 @@ myApiEndpointV1Post sc calls amqPost log req = do
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
Logging in die Dateien/stdout nach config
|
||||
Logging in die Dateien/<code class='py-0.5 px-0.5 bg-gray-100'>stdout</code> - je nach Konfiguration
|
||||
</li>
|
||||
|
||||
<li>
|
||||
@ -1374,11 +1617,11 @@ myApiEndpointV1Post sc calls amqPost log req = do
|
||||
</ul>
|
||||
<h4 id='tipps--tricks' class='mt-6 mb-2 text-2xl font-bold text-gray-700'>Tipps & Tricks</h4><h5 id='dateien-die-statisch-ausgeliefert-werden-sollen' class='mt-6 mb-2 text-xl font-bold text-gray-700'>Dateien, die statisch ausgeliefert werden sollen</h5>
|
||||
<p class='mb-3'>
|
||||
Hierzu erstellt man ein Verzeichnis <code class='py-0.5 px-0.5 bg-gray-100'>static/</code> (konvention; ist im generator so generiert, dass das ausgeliefert wird). Packt man hier z.b. eine <code class='py-0.5 px-0.5 bg-gray-100'>index.html</code> rein, erscheint die, wenn man den Service ansurft.
|
||||
Hierzu erstellt man ein Verzeichnis <code class='py-0.5 px-0.5 bg-gray-100'>static/</code> (Konvention; ist im generator so generiert, dass das ausgeliefert wird). Packt man hier z.b. eine <code class='py-0.5 px-0.5 bg-gray-100'>index.html</code> rein, erscheint die, wenn man den Service ansurft.
|
||||
</p>
|
||||
<h5 id='wie-bekomme-ich-diese-fancy-preview-hin' class='mt-6 mb-2 text-xl font-bold text-gray-700'>Wie bekomme ich diese fancy Preview hin?</h5>
|
||||
<p class='mb-3'>
|
||||
Der Editor, der ganz am Anfang zum Einsatz gekommen ist, braucht nur die <code class='py-0.5 px-0.5 bg-gray-100'>api-doc.yml</code> um diese Ansicht zu erzeugen. Daher empfielt sich hier ein angepasster Fork davon indem die Pfade in der index.html korrigiert sind. Am einfachsten (und von den meisten services so benutzt): In meiner Implementation liegt dann nach dem starten auf http://localhost:PORT/ui/ und kann direkt dort getestet werden.
|
||||
Der Editor, der ganz am Anfang zum Einsatz gekommen ist, braucht nur die <code class='py-0.5 px-0.5 bg-gray-100'>api-doc.yml</code> um diese Ansicht zu erzeugen. Daher empfiehlt sich hier ein angepasster Fork davon indem die Pfade in der index.html korrigiert sind. Am einfachsten (und von den meisten services so benutzt): In meiner Implementation liegt dann nach dem starten auf http://localhost:PORT/ui/ und kann direkt dort getestet werden.
|
||||
</p>
|
||||
<h5 id='wie-sorge-ich-für-bessere-warnungen-damit-der-compiler-meine-bugs-fängt' class='mt-6 mb-2 text-xl font-bold text-gray-700'>Wie sorge ich für bessere Warnungen, damit der Compiler meine Bugs fängt?</h5><div class='py-0.5 mb-3 text-sm'><pre><code class='bash language-bash'>stack build --file-watch --ghc-options '-freverse-errors -W -Wall -Wcompat' --interleaved-output</code></pre></div>
|
||||
<p class='mb-3'>
|
||||
@ -1416,13 +1659,13 @@ myApiEndpointV1Post sc calls amqPost log req = do
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<code class='py-0.5 px-0.5 bg-gray-100'>--interleaved-output</code>: stack-log direkt ausgeben & nicht in dateien schreiben und die dann am ende zusammen cat'en.
|
||||
<code class='py-0.5 px-0.5 bg-gray-100'>--interleaved-output</code>: stack-log direkt ausgeben & nicht in Dateien schreiben und die dann am ende zusammen cat'en.
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<p class='mb-3'>
|
||||
Um pro Datei Warnungen auszuschalten (z.B. weil man ganz sicher weiss, was man tut -.-): <code class='py-0.5 px-0.5 bg-gray-100'>{-# OPTIONS_GHC -Wno-whatsoever #-}</code> als Pragma in die Datei.
|
||||
Um pro Datei Warnungen auszuschalten (z.B. weil man ganz sicher weiss, was man tut -.-): <code class='py-0.5 px-0.5 bg-gray-100'>{-# OPTIONS_GHC -Wno-whatsoever #-}</code> als pragma in die Datei.
|
||||
</p>
|
||||
|
||||
<p class='mb-3'>
|
||||
@ -1430,21 +1673,21 @@ myApiEndpointV1Post sc calls amqPost log req = do
|
||||
</p>
|
||||
<h3 id='deployment' class='mt-6 mb-2 text-3xl font-bold text-gray-700'>Deployment</h3>
|
||||
<p class='mb-3'>
|
||||
Als Beispiel sei hier ein einfaches Docker-Build mit Jenkins-CI gezeigt, weil ich das aus Gründen rumliegen hatte. Kann man analog in fast alle anderen CI übrsetzen.
|
||||
Als Beispiel sei hier ein einfaches Docker-Build mit Jenkins-CI gezeigt, weil ich das aus Gründen rumliegen hatte. Kann man analog in fast alle anderen CI übersetzen.
|
||||
</p>
|
||||
<h4 id='docker' class='mt-6 mb-2 text-2xl font-bold text-gray-700'>Docker</h4>
|
||||
<p class='mb-3'>
|
||||
Die angehängten Scripte gehen von einer Standard-Einrichtung aus (statische sachen in static, 2-3 händische Anpassungen auf das eigene Projekt nach auspacken). Nachher liegt dann auch unter static/version die gebaute Versionsnummer & kann abgerufen werden. In der Dockerfile.release und der Jenkinsfile müssen noch anpassungen gemacht werden. Konkret:
|
||||
Die angehängten Scripte gehen von einer Standard-Einrichtung aus (statische Sachen in static, 2-3 händische Anpassungen auf das eigene Projekt nach auspacken). Nachher liegt dann auch unter static/version die gebaute Versionsnummer & kann abgerufen werden. In der <code class='py-0.5 px-0.5 bg-gray-100'>Dockerfile.release</code> und der <code class='py-0.5 px-0.5 bg-gray-100'>Jenkinsfile</code> müssen noch Anpassungen gemacht werden. Konkret:
|
||||
</p>
|
||||
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
in der Dockerfile.release: alle <code class='py-0.5 px-0.5 bg-gray-100'><<<HIER>>></code>-Stellen sinnvoll befüllen
|
||||
in der <code class='py-0.5 px-0.5 bg-gray-100'>Dockerfile.release</code>: alle <code class='py-0.5 px-0.5 bg-gray-100'><<<HIER>>></code>-Stellen sinnvoll befüllen
|
||||
</li>
|
||||
|
||||
<li>
|
||||
in der Jenkinsfile die defs für “servicename” und “servicebinary” ausfüllen. Binary ist das, was bei stack exec aufgerufen wird; name ist der Image-Name für das docker-repository.
|
||||
in der <code class='py-0.5 px-0.5 bg-gray-100'>Jenkinsfile</code> die defs für “servicename” und “servicebinary” ausfüllen. Binary ist das, was bei stack exec aufgerufen wird; name ist der Image-Name für das docker-repository.
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
@ -1456,17 +1699,17 @@ myApiEndpointV1Post sc calls amqPost log req = do
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
git-repository url anpassen
|
||||
git-repository URL anpassen
|
||||
</li>
|
||||
|
||||
<li>
|
||||
Environment-Vars anpasses ($BRANCH = test & live haben keine zusatzdinger im docker-image-repository; ansonsten hat das image $BRANCH im namen)
|
||||
Environment-Vars anpassen ($BRANCH = test & live haben keine zusatzdinger im docker-image-repository; ansonsten hat das image $BRANCH im Namen)
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<p class='mb-3'>
|
||||
Wenn das durchgebaut ist, liegt im test/live-repository ein docker-image namens <code class='py-0.5 px-0.5 bg-gray-100'>servicename:version</code>.
|
||||
Wenn das fertig gebaut ist, liegt im test/live-repository ein docker-image namens <code class='py-0.5 px-0.5 bg-gray-100'>servicename:version</code>.
|
||||
</p>
|
||||
<h3 id='omg-ich-muss-meine-api-ändern-was-mache-ich-nun' class='mt-6 mb-2 text-3xl font-bold text-gray-700'>OMG! Ich muss meine API ändern. Was mache ich nun?</h3>
|
||||
<ul class='my-3 ml-6 space-y-1 list-decimal list-inside'>
|
||||
@ -1493,6 +1736,7 @@ myApiEndpointV1Post sc calls amqPost log req = do
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<!-- div class="flex items-center justify-center mt-2">
|
||||
<ema:metadata>
|
||||
<with var="template">
|
||||
@ -1515,14 +1759,14 @@ myApiEndpointV1Post sc calls amqPost log req = do
|
||||
<ul class='space-y-1'>
|
||||
|
||||
<li>
|
||||
<a class='text-purple-600 mavenLinkBold hover:bg-purple-50' href='Haskell/Webapp-Example/MyService_Types.hs'>
|
||||
<a class='text-purple-600 mavenLinkBold hover:bg-purple-50' href='Coding/Haskell/Webapp-Example/MyService_Types.hs'>
|
||||
Webapp-Example: MyService/Types.hs
|
||||
</a>
|
||||
|
||||
<div class='mb-4 overflow-auto text-sm text-gray-500'>
|
||||
|
||||
<div class='pl-2 mt-2 border-l-2 border-purple-200 hover:border-purple-500'>
|
||||
<div><p>Anleitung siehe <a href='Haskell/Webapp-Example' class='text-gray-600 font-bold hover:bg-gray-50' data-wikilink-type='WikiLinkTag'>Webapp-Development in Haskell</a>.</p></div>
|
||||
<div><p>Anleitung siehe <a href='Coding/Haskell/Webapp-Example' class='text-gray-600 font-bold hover:bg-gray-50' data-wikilink-type='WikiLinkTag'>Webapp-Development in Haskell</a>.</p></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@ -1530,14 +1774,29 @@ myApiEndpointV1Post sc calls amqPost log req = do
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class='text-purple-600 mavenLinkBold hover:bg-purple-50' href='Haskell/Webapp-Example/Main.hs'>
|
||||
<a class='text-purple-600 mavenLinkBold hover:bg-purple-50' href='Coding/Haskell/Webapp-Example/Main.hs'>
|
||||
Webapp-Example: Main.hs
|
||||
</a>
|
||||
|
||||
<div class='mb-4 overflow-auto text-sm text-gray-500'>
|
||||
|
||||
<div class='pl-2 mt-2 border-l-2 border-purple-200 hover:border-purple-500'>
|
||||
<div><p>Wie man das verwendet, siehe <a href='Haskell/Webapp-Example' class='text-gray-600 font-bold hover:bg-gray-50' data-wikilink-type='WikiLinkTag'>Webapp-Development in Haskell</a>.</p></div>
|
||||
<div><p>Wie man das verwendet, siehe <a href='Coding/Haskell/Webapp-Example' class='text-gray-600 font-bold hover:bg-gray-50' data-wikilink-type='WikiLinkTag'>Webapp-Development in Haskell</a>.</p></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class='text-purple-600 mavenLinkBold hover:bg-purple-50' href='Coding/OpenAPI'>
|
||||
Openapi-generator
|
||||
</a>
|
||||
|
||||
<div class='mb-4 overflow-auto text-sm text-gray-500'>
|
||||
|
||||
<div class='pl-2 mt-2 border-l-2 border-purple-200 hover:border-purple-500'>
|
||||
<div><p>Wie im <a href='Coding/Haskell/Webapp-Example' class='text-gray-600 font-bold hover:bg-gray-50' data-wikilink-type='WikiLinkNormal'>Webapp-Development in Haskell</a> kurz angerissen wird in Haskell nicht zwischen Server und Client unterschieden. Daher können hier sehr viele Optimierungen bei Änderungen passieren, die in anderen Sprachen nicht so einfach möglich sind.</p></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@ -1575,7 +1834,7 @@ myApiEndpointV1Post sc calls amqPost log req = do
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.7.3.0'>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.8.1.10'>
|
||||
<img class='w-6 h-6 hover:text-purple-700' src='_emanote-static/emanote-logo.svg' />
|
||||
</a>
|
||||
</div>
|
||||
@ -1607,6 +1866,9 @@ myApiEndpointV1Post sc calls amqPost log req = do
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
@ -9,7 +9,7 @@
|
||||
</title>
|
||||
|
||||
|
||||
<meta property='og:description' content='Wie man das verwendet, siehe ([[Webapp-Example]],[]).' />
|
||||
<meta property='og:description' content='Wie man das verwendet, siehe [[Webapp-Example]].' />
|
||||
<meta property='og:site_name' content='Home' />
|
||||
<meta property='og:image' content />
|
||||
<meta property='og:type' content='website' />
|
||||
@ -47,37 +47,65 @@
|
||||
|
||||
|
||||
|
||||
<link href='tailwind.css?instanceId=ecadcd50-ecaf-4d6e-98ea-7932c3b3d351' rel='stylesheet' type='text/css' />
|
||||
<link href='tailwind.css?instanceId=1ec53b8c-7991-423c-8b17-b92e36792648' rel='stylesheet' type='text/css' />
|
||||
|
||||
<!-- Heist error element -->
|
||||
<style>
|
||||
/* Heist error element */
|
||||
strong.error {
|
||||
color: lightcoral;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
/* External link icon */
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"])::after {
|
||||
/* filter converts black to rgb(156,163,175) */
|
||||
filter: invert(71%) sepia(3%) saturate(904%) hue-rotate(179deg) brightness(92%) contrast(87%);
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"]):hover::after {
|
||||
/* filter converts black to rgb(175,85,99) */
|
||||
filter: invert(32%) sepia(10%) saturate(834%) hue-rotate(176deg) brightness(92%) contrast(88%);
|
||||
}
|
||||
|
||||
a[data-linkicon=""]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon=none]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon="external"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
a[data-linkicon="external"][href^="mailto:"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z' /%3E%3C/svg%3E");
|
||||
}
|
||||
</style>
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'MavenPro';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf) format("truetype");
|
||||
font-family: 'WorkSans';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf) format("truetype");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
/* font-variation-settings: 'wght'300; */
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
font-variation-settings: 'wght' 350;
|
||||
}
|
||||
|
||||
a.mavenLinkBold {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h1,
|
||||
@ -88,14 +116,27 @@
|
||||
h6,
|
||||
header,
|
||||
.header-font {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-variation-settings: 'wght' 300;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<link rel='stylesheet' href='_emanote-static/inverted-tree.css' />
|
||||
|
||||
<link rel='stylesheet' href='https://files.stork-search.net/releases/v1.5.0/flat.css' />
|
||||
<link rel='stylesheet' href='_emanote-static/stork/flat.css' />
|
||||
<!-- Custom Stork-search styling for Emanote -->
|
||||
<style>
|
||||
#stork-search-container {
|
||||
@ -109,7 +150,7 @@
|
||||
</style>
|
||||
|
||||
|
||||
<script src='https://files.stork-search.net/releases/v1.5.0/stork.js'></script>
|
||||
<script src='_emanote-static/stork/stork.js'></script>
|
||||
|
||||
|
||||
<script data-emanote-base-url='/'>
|
||||
@ -135,6 +176,7 @@
|
||||
const indexUrl = baseUrl + '-/stork.st';
|
||||
if (document.readyState !== 'complete') {
|
||||
window.addEventListener('load', function () {
|
||||
stork.initialize(baseUrl + '_emanote-static/stork/stork.wasm');
|
||||
stork.register(indexName, indexUrl);
|
||||
});
|
||||
|
||||
@ -193,7 +235,16 @@
|
||||
</li>
|
||||
|
||||
<li class='inline-flex items-center'>
|
||||
<a class='px-1 font-bold' href='Haskell'>
|
||||
<a class='px-1 font-bold' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
<svg fill='currentColor' viewBox='0 0 20 20' class='w-auto h-5 text-gray-400'>
|
||||
<path fill-rule='evenodd' d='M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z' clip-rule='evenodd'></path>
|
||||
</svg>
|
||||
</li>
|
||||
|
||||
<li class='inline-flex items-center'>
|
||||
<a class='px-1 font-bold' href='Coding/Haskell'>
|
||||
Haskell
|
||||
</a>
|
||||
<svg fill='currentColor' viewBox='0 0 20 20' class='w-auto h-5 text-gray-400'>
|
||||
@ -202,7 +253,7 @@
|
||||
</li>
|
||||
|
||||
<li class='inline-flex items-center'>
|
||||
<a class='px-1 font-bold' href='Haskell/Webapp-Example'>
|
||||
<a class='px-1 font-bold' href='Coding/Haskell/Webapp-Example'>
|
||||
Webapp-Development in Haskell
|
||||
</a>
|
||||
<svg fill='currentColor' viewBox='0 0 20 20' class='w-auto h-5 text-gray-400'>
|
||||
@ -379,7 +430,43 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold hover:underline truncate' title='Haskell' href='Haskell'>
|
||||
<a class='font-bold hover:underline truncate' title='Coding' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-700' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path fill-rule='evenodd' d='M2 6a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1H8a3 3 0 00-3 3v1.5a1.5 1.5 0 01-3 0V6z' clip-rule='evenodd'></path>
|
||||
<path d='M6 12a2 2 0 012-2h8a2 2 0 012 2v2a2 2 0 01-2 2H2h2a2 2 0 002-2v-2z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold hover:underline truncate' title='Haskell' href='Coding/Haskell'>
|
||||
Haskell
|
||||
</a>
|
||||
|
||||
@ -401,6 +488,43 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Talks und Posts zu Haskell' href='Coding/Haskell/Advantages'>
|
||||
Talks und Posts zu Haskell
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -412,7 +536,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Code-Snippets' href='Haskell/Code%20Snippets'>
|
||||
<a class='hover:underline truncate' title='Code-Snippets' href='Coding/Haskell/Code%20Snippets'>
|
||||
Code-Snippets
|
||||
</a>
|
||||
|
||||
@ -452,7 +576,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Fortgeschrittene funktionale Programmierung in Haskell' href='Haskell/FFPiH'>
|
||||
<a class='hover:underline truncate' title='Fortgeschrittene funktionale Programmierung in Haskell' href='Coding/Haskell/FFPiH'>
|
||||
Fortgeschrittene funktionale Programmierung in Haskell
|
||||
</a>
|
||||
|
||||
@ -489,7 +613,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Lenses' href='Haskell/Lenses'>
|
||||
<a class='hover:underline truncate' title='Lenses' href='Coding/Haskell/Lenses'>
|
||||
Lenses
|
||||
</a>
|
||||
|
||||
@ -514,43 +638,6 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Talks und Posts zu Haskell' href='Haskell/Advantages'>
|
||||
Talks und Posts zu Haskell
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
@ -565,7 +652,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold hover:underline truncate' title='Webapp-Development in Haskell' href='Haskell/Webapp-Example'>
|
||||
<a class='font-bold hover:underline truncate' title='Webapp-Development in Haskell' href='Coding/Haskell/Webapp-Example'>
|
||||
Webapp-Development in Haskell
|
||||
</a>
|
||||
|
||||
@ -597,7 +684,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold text-purple-600 hover:underline truncate' title='Webapp-Example: Main.hs' href='Haskell/Webapp-Example/Main.hs'>
|
||||
<a class='font-bold text-purple-600 hover:underline truncate' title='Webapp-Example: Main.hs' href='Coding/Haskell/Webapp-Example/Main.hs'>
|
||||
Webapp-Example: Main.hs
|
||||
</a>
|
||||
|
||||
@ -634,7 +721,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Webapp-Example: MyService/Types.hs' href='Haskell/Webapp-Example/MyService_Types.hs'>
|
||||
<a class='hover:underline truncate' title='Webapp-Example: MyService/Types.hs' href='Coding/Haskell/Webapp-Example/MyService_Types.hs'>
|
||||
Webapp-Example: MyService/Types.hs
|
||||
</a>
|
||||
|
||||
@ -653,6 +740,46 @@
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Openapi-generator' href='Coding/OpenAPI'>
|
||||
Openapi-generator
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
@ -702,6 +829,82 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Opinions' href='Opinions'>
|
||||
Opinions
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Todo' href='TODO'>
|
||||
Todo
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -789,7 +992,7 @@
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href='Haskell/Webapp-Example'>
|
||||
<a href='Coding/Haskell/Webapp-Example'>
|
||||
Webapp-Development in Haskell
|
||||
</a>
|
||||
</div>
|
||||
@ -800,8 +1003,19 @@
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href='Haskell'>
|
||||
Haskell
|
||||
<a href='Coding/OpenAPI'>
|
||||
Openapi-generator
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@ -821,6 +1035,21 @@
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href='Coding/Haskell'>
|
||||
Haskell
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
@ -841,7 +1070,7 @@
|
||||
<!-- What goes in this file will appear on top of note body-->
|
||||
|
||||
<p class='mb-3'>
|
||||
Wie man das verwendet, siehe <a href='Haskell/Webapp-Example' class='text-purple-600 mavenLinkBold hover:underline' data-wikilink-type='WikiLinkTag'>Webapp-Development in Haskell</a>.
|
||||
Wie man das verwendet, siehe <a href='Coding/Haskell/Webapp-Example' class='text-purple-600 mavenLinkBold hover:underline' data-wikilink-type='WikiLinkTag'>Webapp-Development in Haskell</a>.
|
||||
</p>
|
||||
<div class='py-0.5 mb-3 text-sm'><pre><code class='haskell language-haskell'>{-# OPTIONS_GHC -Wno-name-shadowing #-}
|
||||
{-# LANGUAGE FlexibleContexts #-}
|
||||
@ -1025,6 +1254,7 @@ loggingMiddleware = liftIO $ mkRequestLogger $ def { outputFormat = CustomOutput
|
||||
| statusCode status > 399 && statusCode status < 500 = "Error code "<>toLogStr (statusCode status) <>" sent. Request-Payload was: "<> mconcat (toLogStr <$> payload) <> "\n"
|
||||
| otherwise = toLogStr (show r) <> "\n"
|
||||
</code></pre></div>
|
||||
|
||||
<!-- div class="flex items-center justify-center mt-2">
|
||||
<ema:metadata>
|
||||
<with var="template">
|
||||
@ -1047,14 +1277,14 @@ loggingMiddleware = liftIO $ mkRequestLogger $ def { outputFormat = CustomOutput
|
||||
<ul class='space-y-1'>
|
||||
|
||||
<li>
|
||||
<a class='text-purple-600 mavenLinkBold hover:bg-purple-50' href='Haskell/Webapp-Example'>
|
||||
<a class='text-purple-600 mavenLinkBold hover:bg-purple-50' href='Coding/Haskell/Webapp-Example'>
|
||||
Webapp-Development in Haskell
|
||||
</a>
|
||||
|
||||
<div class='mb-4 overflow-auto text-sm text-gray-500'>
|
||||
|
||||
<div class='pl-2 mt-2 border-l-2 border-purple-200 hover:border-purple-500'>
|
||||
<div><p><a href='Haskell/Webapp-Example/Main.hs' class='text-gray-600 font-bold hover:bg-gray-50' data-wikilink-type='WikiLinkEmbed'>Webapp-Example: Main.hs</a></p></div>
|
||||
<div><p><a href='Coding/Haskell/Webapp-Example/Main.hs' class='text-gray-600 font-bold hover:bg-gray-50' data-wikilink-type='WikiLinkEmbed'>Webapp-Example: Main.hs</a></p></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@ -1092,7 +1322,7 @@ loggingMiddleware = liftIO $ mkRequestLogger $ def { outputFormat = CustomOutput
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.7.3.0'>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.8.1.10'>
|
||||
<img class='w-6 h-6 hover:text-purple-700' src='_emanote-static/emanote-logo.svg' />
|
||||
</a>
|
||||
</div>
|
||||
@ -1124,6 +1354,9 @@ loggingMiddleware = liftIO $ mkRequestLogger $ def { outputFormat = CustomOutput
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
@ -9,7 +9,7 @@
|
||||
</title>
|
||||
|
||||
|
||||
<meta property='og:description' content='Anleitung siehe ([[Webapp-Example]],[]).' />
|
||||
<meta property='og:description' content='Anleitung siehe [[Webapp-Example]].' />
|
||||
<meta property='og:site_name' content='Home' />
|
||||
<meta property='og:image' content />
|
||||
<meta property='og:type' content='website' />
|
||||
@ -47,37 +47,65 @@
|
||||
|
||||
|
||||
|
||||
<link href='tailwind.css?instanceId=ecadcd50-ecaf-4d6e-98ea-7932c3b3d351' rel='stylesheet' type='text/css' />
|
||||
<link href='tailwind.css?instanceId=1ec53b8c-7991-423c-8b17-b92e36792648' rel='stylesheet' type='text/css' />
|
||||
|
||||
<!-- Heist error element -->
|
||||
<style>
|
||||
/* Heist error element */
|
||||
strong.error {
|
||||
color: lightcoral;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
/* External link icon */
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"])::after {
|
||||
/* filter converts black to rgb(156,163,175) */
|
||||
filter: invert(71%) sepia(3%) saturate(904%) hue-rotate(179deg) brightness(92%) contrast(87%);
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"]):hover::after {
|
||||
/* filter converts black to rgb(175,85,99) */
|
||||
filter: invert(32%) sepia(10%) saturate(834%) hue-rotate(176deg) brightness(92%) contrast(88%);
|
||||
}
|
||||
|
||||
a[data-linkicon=""]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon=none]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon="external"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
a[data-linkicon="external"][href^="mailto:"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z' /%3E%3C/svg%3E");
|
||||
}
|
||||
</style>
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'MavenPro';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf) format("truetype");
|
||||
font-family: 'WorkSans';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf) format("truetype");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
/* font-variation-settings: 'wght'300; */
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
font-variation-settings: 'wght' 350;
|
||||
}
|
||||
|
||||
a.mavenLinkBold {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h1,
|
||||
@ -88,14 +116,27 @@
|
||||
h6,
|
||||
header,
|
||||
.header-font {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-variation-settings: 'wght' 300;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<link rel='stylesheet' href='_emanote-static/inverted-tree.css' />
|
||||
|
||||
<link rel='stylesheet' href='https://files.stork-search.net/releases/v1.5.0/flat.css' />
|
||||
<link rel='stylesheet' href='_emanote-static/stork/flat.css' />
|
||||
<!-- Custom Stork-search styling for Emanote -->
|
||||
<style>
|
||||
#stork-search-container {
|
||||
@ -109,7 +150,7 @@
|
||||
</style>
|
||||
|
||||
|
||||
<script src='https://files.stork-search.net/releases/v1.5.0/stork.js'></script>
|
||||
<script src='_emanote-static/stork/stork.js'></script>
|
||||
|
||||
|
||||
<script data-emanote-base-url='/'>
|
||||
@ -135,6 +176,7 @@
|
||||
const indexUrl = baseUrl + '-/stork.st';
|
||||
if (document.readyState !== 'complete') {
|
||||
window.addEventListener('load', function () {
|
||||
stork.initialize(baseUrl + '_emanote-static/stork/stork.wasm');
|
||||
stork.register(indexName, indexUrl);
|
||||
});
|
||||
|
||||
@ -193,7 +235,16 @@
|
||||
</li>
|
||||
|
||||
<li class='inline-flex items-center'>
|
||||
<a class='px-1 font-bold' href='Haskell'>
|
||||
<a class='px-1 font-bold' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
<svg fill='currentColor' viewBox='0 0 20 20' class='w-auto h-5 text-gray-400'>
|
||||
<path fill-rule='evenodd' d='M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z' clip-rule='evenodd'></path>
|
||||
</svg>
|
||||
</li>
|
||||
|
||||
<li class='inline-flex items-center'>
|
||||
<a class='px-1 font-bold' href='Coding/Haskell'>
|
||||
Haskell
|
||||
</a>
|
||||
<svg fill='currentColor' viewBox='0 0 20 20' class='w-auto h-5 text-gray-400'>
|
||||
@ -202,7 +253,7 @@
|
||||
</li>
|
||||
|
||||
<li class='inline-flex items-center'>
|
||||
<a class='px-1 font-bold' href='Haskell/Webapp-Example'>
|
||||
<a class='px-1 font-bold' href='Coding/Haskell/Webapp-Example'>
|
||||
Webapp-Development in Haskell
|
||||
</a>
|
||||
<svg fill='currentColor' viewBox='0 0 20 20' class='w-auto h-5 text-gray-400'>
|
||||
@ -379,7 +430,43 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold hover:underline truncate' title='Haskell' href='Haskell'>
|
||||
<a class='font-bold hover:underline truncate' title='Coding' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-700' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path fill-rule='evenodd' d='M2 6a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1H8a3 3 0 00-3 3v1.5a1.5 1.5 0 01-3 0V6z' clip-rule='evenodd'></path>
|
||||
<path d='M6 12a2 2 0 012-2h8a2 2 0 012 2v2a2 2 0 01-2 2H2h2a2 2 0 002-2v-2z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold hover:underline truncate' title='Haskell' href='Coding/Haskell'>
|
||||
Haskell
|
||||
</a>
|
||||
|
||||
@ -401,6 +488,43 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Talks und Posts zu Haskell' href='Coding/Haskell/Advantages'>
|
||||
Talks und Posts zu Haskell
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -412,7 +536,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Code-Snippets' href='Haskell/Code%20Snippets'>
|
||||
<a class='hover:underline truncate' title='Code-Snippets' href='Coding/Haskell/Code%20Snippets'>
|
||||
Code-Snippets
|
||||
</a>
|
||||
|
||||
@ -452,7 +576,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Fortgeschrittene funktionale Programmierung in Haskell' href='Haskell/FFPiH'>
|
||||
<a class='hover:underline truncate' title='Fortgeschrittene funktionale Programmierung in Haskell' href='Coding/Haskell/FFPiH'>
|
||||
Fortgeschrittene funktionale Programmierung in Haskell
|
||||
</a>
|
||||
|
||||
@ -489,7 +613,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Lenses' href='Haskell/Lenses'>
|
||||
<a class='hover:underline truncate' title='Lenses' href='Coding/Haskell/Lenses'>
|
||||
Lenses
|
||||
</a>
|
||||
|
||||
@ -514,43 +638,6 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Talks und Posts zu Haskell' href='Haskell/Advantages'>
|
||||
Talks und Posts zu Haskell
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
@ -565,7 +652,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold hover:underline truncate' title='Webapp-Development in Haskell' href='Haskell/Webapp-Example'>
|
||||
<a class='font-bold hover:underline truncate' title='Webapp-Development in Haskell' href='Coding/Haskell/Webapp-Example'>
|
||||
Webapp-Development in Haskell
|
||||
</a>
|
||||
|
||||
@ -599,7 +686,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Webapp-Example: Main.hs' href='Haskell/Webapp-Example/Main.hs'>
|
||||
<a class='hover:underline truncate' title='Webapp-Example: Main.hs' href='Coding/Haskell/Webapp-Example/Main.hs'>
|
||||
Webapp-Example: Main.hs
|
||||
</a>
|
||||
|
||||
@ -634,7 +721,7 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold text-purple-600 hover:underline truncate' title='Webapp-Example: MyService/Types.hs' href='Haskell/Webapp-Example/MyService_Types.hs'>
|
||||
<a class='font-bold text-purple-600 hover:underline truncate' title='Webapp-Example: MyService/Types.hs' href='Coding/Haskell/Webapp-Example/MyService_Types.hs'>
|
||||
Webapp-Example: MyService/Types.hs
|
||||
</a>
|
||||
|
||||
@ -653,6 +740,46 @@
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Openapi-generator' href='Coding/OpenAPI'>
|
||||
Openapi-generator
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
@ -702,6 +829,82 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Opinions' href='Opinions'>
|
||||
Opinions
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Todo' href='TODO'>
|
||||
Todo
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -789,7 +992,7 @@
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href='Haskell/Webapp-Example'>
|
||||
<a href='Coding/Haskell/Webapp-Example'>
|
||||
Webapp-Development in Haskell
|
||||
</a>
|
||||
</div>
|
||||
@ -800,8 +1003,19 @@
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href='Haskell'>
|
||||
Haskell
|
||||
<a href='Coding/OpenAPI'>
|
||||
Openapi-generator
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@ -821,6 +1035,21 @@
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href='Coding/Haskell'>
|
||||
Haskell
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
@ -841,7 +1070,7 @@
|
||||
<!-- What goes in this file will appear on top of note body-->
|
||||
|
||||
<p class='mb-3'>
|
||||
Anleitung siehe <a href='Haskell/Webapp-Example' class='text-purple-600 mavenLinkBold hover:underline' data-wikilink-type='WikiLinkTag'>Webapp-Development in Haskell</a>.
|
||||
Anleitung siehe <a href='Coding/Haskell/Webapp-Example' class='text-purple-600 mavenLinkBold hover:underline' data-wikilink-type='WikiLinkTag'>Webapp-Development in Haskell</a>.
|
||||
</p>
|
||||
<div class='py-0.5 mb-3 text-sm'><pre><code class='haskell language-haskell'>{-# OPTIONS_GHC -Wno-orphans #-}
|
||||
{-# OPTIONS_GHC -Wno-name-shadowing #-}
|
||||
@ -920,6 +1149,7 @@ instance Out ServerConfig
|
||||
|
||||
instance Out Response
|
||||
instance FromBSON Repsonse -- FromBSON-Instanz geht immer davon aus, dass alle keys da sind (ggf. mit null bei Nothing).</code></pre></div>
|
||||
|
||||
<!-- div class="flex items-center justify-center mt-2">
|
||||
<ema:metadata>
|
||||
<with var="template">
|
||||
@ -942,14 +1172,14 @@ instance FromBSON Repsonse -- FromBSON-Instanz geht immer davon aus, dass alle k
|
||||
<ul class='space-y-1'>
|
||||
|
||||
<li>
|
||||
<a class='text-purple-600 mavenLinkBold hover:bg-purple-50' href='Haskell/Webapp-Example'>
|
||||
<a class='text-purple-600 mavenLinkBold hover:bg-purple-50' href='Coding/Haskell/Webapp-Example'>
|
||||
Webapp-Development in Haskell
|
||||
</a>
|
||||
|
||||
<div class='mb-4 overflow-auto text-sm text-gray-500'>
|
||||
|
||||
<div class='pl-2 mt-2 border-l-2 border-purple-200 hover:border-purple-500'>
|
||||
<div><p><a href='Haskell/Webapp-Example/MyService_Types.hs' class='text-gray-600 font-bold hover:bg-gray-50' data-wikilink-type='WikiLinkEmbed'>Webapp-Example: MyService/Types.hs</a></p></div>
|
||||
<div><p><a href='Coding/Haskell/Webapp-Example/MyService_Types.hs' class='text-gray-600 font-bold hover:bg-gray-50' data-wikilink-type='WikiLinkEmbed'>Webapp-Example: MyService/Types.hs</a></p></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@ -987,7 +1217,7 @@ instance FromBSON Repsonse -- FromBSON-Instanz geht immer davon aus, dass alle k
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.7.3.0'>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.8.1.10'>
|
||||
<img class='w-6 h-6 hover:text-purple-700' src='_emanote-static/emanote-logo.svg' />
|
||||
</a>
|
||||
</div>
|
||||
@ -1019,6 +1249,9 @@ instance FromBSON Repsonse -- FromBSON-Instanz geht immer davon aus, dass alle k
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
875
static_gen/Coding/OpenAPI.html
Normal file
875
static_gen/Coding/OpenAPI.html
Normal file
@ -0,0 +1,875 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang='en'>
|
||||
|
||||
<head>
|
||||
<meta charset='UTF-8' />
|
||||
<meta name='viewport' content='width=device-width, initial-scale=1' />
|
||||
<title>
|
||||
Openapi-generator – Home
|
||||
</title>
|
||||
|
||||
|
||||
<meta property='og:description' content='[[TODO]] Idee hinter einem API-Generator' />
|
||||
<meta property='og:site_name' content='Home' />
|
||||
<meta property='og:image' content />
|
||||
<meta property='og:type' content='website' />
|
||||
<meta property='og:title' content='Openapi-generator' />
|
||||
|
||||
|
||||
<base href='/' />
|
||||
<link href='favicon.svg' rel='icon' />
|
||||
|
||||
<script>
|
||||
window.MathJax = {
|
||||
startup: {
|
||||
ready: () => {
|
||||
MathJax.startup.defaultReady();
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script async id='MathJax-script' src='https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js'></script>
|
||||
|
||||
<!-- mermaid.js --><script src='https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js'></script>
|
||||
<script>
|
||||
mermaid.initialize({startOnLoad:false});
|
||||
mermaid.init(undefined,document.querySelectorAll(".mermaid"));
|
||||
</script>
|
||||
|
||||
<!-- highlight.js -->
|
||||
<link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/styles/hybrid.min.css' />
|
||||
<script src='https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/highlight.min.js'></script>
|
||||
<!-- Include languages that Emanote itself uses -->
|
||||
<script src='https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/languages/haskell.min.js'></script>
|
||||
<script src='https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/languages/nix.min.js'></script>
|
||||
<script>hljs.highlightAll();</script>
|
||||
|
||||
|
||||
|
||||
|
||||
<link href='tailwind.css?instanceId=1ec53b8c-7991-423c-8b17-b92e36792648' rel='stylesheet' type='text/css' />
|
||||
|
||||
<style>
|
||||
/* Heist error element */
|
||||
strong.error {
|
||||
color: lightcoral;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
/* External link icon */
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"])::after {
|
||||
/* filter converts black to rgb(156,163,175) */
|
||||
filter: invert(71%) sepia(3%) saturate(904%) hue-rotate(179deg) brightness(92%) contrast(87%);
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"]):hover::after {
|
||||
/* filter converts black to rgb(175,85,99) */
|
||||
filter: invert(32%) sepia(10%) saturate(834%) hue-rotate(176deg) brightness(92%) contrast(88%);
|
||||
}
|
||||
|
||||
a[data-linkicon=""]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon=none]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon="external"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
a[data-linkicon="external"][href^="mailto:"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z' /%3E%3C/svg%3E");
|
||||
}
|
||||
</style>
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'WorkSans';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf) format("truetype");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
font-variation-settings: 'wght' 350;
|
||||
}
|
||||
|
||||
a.mavenLinkBold {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6,
|
||||
header,
|
||||
.header-font {
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-variation-settings: 'wght' 300;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<link rel='stylesheet' href='_emanote-static/inverted-tree.css' />
|
||||
|
||||
<link rel='stylesheet' href='_emanote-static/stork/flat.css' />
|
||||
<!-- Custom Stork-search styling for Emanote -->
|
||||
<style>
|
||||
#stork-search-container {
|
||||
z-index: 1000;
|
||||
background-color: rgb(15 23 42/.8);
|
||||
}
|
||||
|
||||
.stork-overflow-hidden-important {
|
||||
overflow: hidden !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
<script src='_emanote-static/stork/stork.js'></script>
|
||||
|
||||
|
||||
<script data-emanote-base-url='/'>
|
||||
window.emanote = {};
|
||||
window.emanote.stork = {
|
||||
searchShown: false,
|
||||
toggleSearch: function () {
|
||||
document.getElementById('stork-search-container').classList.toggle('hidden');
|
||||
window.emanote.stork.searchShown = document.body.classList.toggle('stork-overflow-hidden-important');
|
||||
if (window.emanote.stork.searchShown) {
|
||||
document.getElementById('stork-search-input').focus();
|
||||
}
|
||||
},
|
||||
clearSearch: function () {
|
||||
document.getElementById('stork-search-container').classList.add('hidden');
|
||||
document.body.classList.remove('stork-overflow-hidden-important');
|
||||
window.emanote.stork.searchShown = false;
|
||||
},
|
||||
|
||||
init: function () {
|
||||
const indexName = 'emanote-search'; // used to match input[data-stork] attribute value
|
||||
const baseUrl = document.currentScript.getAttribute('data-emanote-base-url') || '/';
|
||||
const indexUrl = baseUrl + '-/stork.st';
|
||||
if (document.readyState !== 'complete') {
|
||||
window.addEventListener('load', function () {
|
||||
stork.initialize(baseUrl + '_emanote-static/stork/stork.wasm');
|
||||
stork.register(indexName, indexUrl);
|
||||
});
|
||||
|
||||
document.addEventListener('keydown', event => {
|
||||
if (window.emanote.stork.searchShown && event.key === 'Escape') {
|
||||
window.emanote.stork.clearSearch();
|
||||
event.preventDefault();
|
||||
} else if ((event.key == 'k' || event.key == 'K') && (event.ctrlKey || event.metaKey)) {
|
||||
window.emanote.stork.toggleSearch();
|
||||
event.preventDefault();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// Override existing on Ema's hot-reload
|
||||
stork.register(indexName, indexUrl, { forceOverwrite: true });
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
window.emanote.stork.init();
|
||||
</script>
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<!-- DoNotFormat -->
|
||||
|
||||
|
||||
|
||||
<!-- DoNotFormat -->
|
||||
|
||||
<body class='bg-gray-400 overflow-y-scroll'>
|
||||
|
||||
<div class='container mx-auto'>
|
||||
|
||||
<nav id='breadcrumbs' class='w-full text-gray-700 md:hidden'>
|
||||
<div class='flex justify-left'>
|
||||
<div class='w-full px-2 py-2 bg-gray-50'>
|
||||
<ul class='flex flex-wrap text-lg'>
|
||||
<li class='inline-flex items-center'>
|
||||
|
||||
|
||||
<img style='width: 1rem;' src='favicon.svg' />
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li class='inline-flex items-center'>
|
||||
<a class='px-1 font-bold' href=''>
|
||||
Home
|
||||
</a>
|
||||
<svg fill='currentColor' viewBox='0 0 20 20' class='w-auto h-5 text-gray-400'>
|
||||
<path fill-rule='evenodd' d='M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z' clip-rule='evenodd'></path>
|
||||
</svg>
|
||||
</li>
|
||||
|
||||
<li class='inline-flex items-center'>
|
||||
<a class='px-1 font-bold' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
<svg fill='currentColor' viewBox='0 0 20 20' class='w-auto h-5 text-gray-400'>
|
||||
<path fill-rule='evenodd' d='M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z' clip-rule='evenodd'></path>
|
||||
</svg>
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
<button class='inline px-2 py-1 bg-gray-50 outline-none cursor-pointer focus:outline-none' title='Search (Ctrl+K)' type='button' onclick='window.emanote.stork.toggleSearch()'>
|
||||
<svg xmlns='http://www.w3.org/2000/svg' style='width: 1rem;' class='hover:text-purple-700' f
|
||||
fill='none' viewBox='0 0 24 24' stroke='currentColor' stroke-width='2'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' d='M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z'></path>
|
||||
</svg>
|
||||
</button>
|
||||
<button class='inline px-2 py-1 text-white bg-purple-600 outline-none cursor-pointer focus:outline-none' title='Toggle sidebar' type='button' onclick="toggleHidden('sidebar')">
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4' fill='none' viewBox='0 0 24 24' stroke='currentColor'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 6h16M4 12h16M4 18h16'></path>
|
||||
</svg>
|
||||
</button>
|
||||
<script>
|
||||
function toggleHidden(elemId) {
|
||||
document.getElementById(elemId).classList.toggle("hidden");
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div id='container' class='flex flex-nowrap flex-col md:flex-row bg-gray-50 md:mt-8 md:shadow-2xl md:mb-8'>
|
||||
<!-- Sidebar column -->
|
||||
<nav id='sidebar' class='flex-shrink hidden leading-relaxed md:block md:sticky md:top-0 md:h-full md:w-48 xl:w-64'>
|
||||
<div class='px-2 py-2 text-gray-800'>
|
||||
<div id='indexing-links' class='flex flex-row float-right p-2 space-x-2 text-gray-500'>
|
||||
<a href='-/tags' title='View tags'>
|
||||
<svg style='width: 1rem;' class='hover:text-purple-700' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z'>
|
||||
</path>
|
||||
</svg>
|
||||
</a>
|
||||
<a href='-/all' title='Expand full tree'>
|
||||
<svg style='width: 1rem;' class='hover:text-purple-700' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8V4m0 0h4M4 4l5 5m11-1V4m0 0h-4m4 0l-5 5M4 16v4m0 0h4m-4 0l5-5m11 5l-5-5m5 5v-4m0 4h-4'>
|
||||
</path>
|
||||
</svg>
|
||||
</a>
|
||||
<a title='Search (Ctrl+K)' class='cursor-pointer' onclick='window.emanote.stork.toggleSearch()'>
|
||||
<svg xmlns='http://www.w3.org/2000/svg' style='width: 1rem;' class='hover:text-purple-700' f
|
||||
fill='none' viewBox='0 0 24 24' stroke='currentColor' stroke-width='2'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' d='M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z'></path>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div id='site-logo' class='pl-2'>
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
<a href='' title='Go to Home'>
|
||||
|
||||
|
||||
<!-- The style width attribute here is to prevent huge
|
||||
icon from displaying at those rare occasions when Tailwind
|
||||
hasn't kicked in immediately on page load
|
||||
-->
|
||||
<img style='width: 1rem;' class='transition transform hover:scale-110 hover:opacity-80' src='favicon.svg' />
|
||||
|
||||
|
||||
</a>
|
||||
<a class='font-bold truncate' title='Go to Home' href=''>
|
||||
Home
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='About' href='About'>
|
||||
About
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='3 children inside'>
|
||||
3
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Android' href='Android'>
|
||||
Android
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='1 children inside'>
|
||||
1
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-700' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path fill-rule='evenodd' d='M2 6a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1H8a3 3 0 00-3 3v1.5a1.5 1.5 0 01-3 0V6z' clip-rule='evenodd'></path>
|
||||
<path d='M6 12a2 2 0 012-2h8a2 2 0 012 2v2a2 2 0 01-2 2H2h2a2 2 0 002-2v-2z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold hover:underline truncate' title='Coding' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Haskell' href='Coding/Haskell'>
|
||||
Haskell
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='5 children inside'>
|
||||
5
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold text-purple-600 hover:underline truncate' title='Openapi-generator' href='Coding/OpenAPI'>
|
||||
Openapi-generator
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Logik für Dummies' href='Logik'>
|
||||
Logik für Dummies
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Opinions' href='Opinions'>
|
||||
Opinions
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Todo' href='TODO'>
|
||||
Todo
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Uni' href='Uni'>
|
||||
Uni
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Unix' href='Unix'>
|
||||
Unix
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='1 children inside'>
|
||||
1
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- Main body column -->
|
||||
<div class='flex-1 w-full overflow-x-auto bg-white'>
|
||||
<main class='px-4 py-4'>
|
||||
<!-- DoNotFormat -->
|
||||
<!-- DoNotFormat -->
|
||||
|
||||
<nav id='uptree' class='flipped tree' style='transform-origin: 50%;'>
|
||||
<ul class='root'>
|
||||
<li>
|
||||
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href=''>
|
||||
Home
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<h1 class='flex items-end justify-center mb-4 p-3 bg-purple-100 text-5xl font-extrabold text-black rounded'>
|
||||
<a class='z-40 tracking-tighter '>
|
||||
Openapi-generator
|
||||
</a>
|
||||
</h1>
|
||||
<article class='overflow-auto'>
|
||||
<!-- What goes in this file will appear on top of note body-->
|
||||
<h2 id='idee-hinter-einem-api-generator' class='inline-block mt-6 mb-4 text-4xl font-bold text-gray-700 border-b-2'>Idee hinter einem API-Generator</h2>
|
||||
<p class='mb-3'>
|
||||
<a href='TODO' class='text-purple-600 mavenLinkBold hover:underline' data-wikilink-type='WikiLinkNormal'>Todo</a> Idee hinter einem API-Generator
|
||||
</p>
|
||||
<h2 id='theorie-und-praxis' class='inline-block mt-6 mb-4 text-4xl font-bold text-gray-700 border-b-2'>Theorie und Praxis</h2>
|
||||
<p class='mb-3'>
|
||||
<a href='TODO' class='text-purple-600 mavenLinkBold hover:underline' data-wikilink-type='WikiLinkNormal'>Todo</a> Theorie und Praxis
|
||||
</p>
|
||||
<h2 id='spezialfall-in-haskell' class='inline-block mt-6 mb-4 text-4xl font-bold text-gray-700 border-b-2'>Spezialfall in Haskell</h2>
|
||||
<p class='mb-3'>
|
||||
<a href='TODO' class='text-purple-600 mavenLinkBold hover:underline' data-wikilink-type='WikiLinkNormal'>Todo</a> Veraltet
|
||||
</p>
|
||||
|
||||
<p class='mb-3'>
|
||||
Wie im <a href='Coding/Haskell/Webapp-Example' class='text-purple-600 mavenLinkBold hover:underline' data-wikilink-type='WikiLinkNormal'>Webapp-Development in Haskell</a> kurz angerissen wird in Haskell nicht zwischen Server und Client unterschieden. Daher können hier sehr viele Optimierungen bei Änderungen passieren, die in anderen Sprachen nicht so einfach möglich sind.
|
||||
</p>
|
||||
|
||||
<p class='mb-3'>
|
||||
Die generierte Library hat die Funktionen, die ein Client braucht direkt dabei und man muss lediglich die Verbindung initialisieren (Callback für Network-Requests, Serveradresse etc.) und kann dann direkt alle Funktionen benutzen. Partial Application hilft hier massiv und man bekommt z.b. Für die Beispiel-Tierhandlung aus dem ursprünglichem <code class='py-0.5 px-0.5 bg-gray-100'>getPet :: </code> direkt so etwas wie <code class='py-0.5 px-0.5 bg-gray-100'>getPet :: PetID -> IO Pet</code>
|
||||
</p>
|
||||
|
||||
|
||||
<!-- div class="flex items-center justify-center mt-2">
|
||||
<ema:metadata>
|
||||
<with var="template">
|
||||
<a class="text-gray-300 hover:text-${theme}-600 text-sm" title="Edit this page on GitHub"
|
||||
href="${value:editBaseUrl}/${ema:note:source-path}">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z" />
|
||||
</svg>
|
||||
</a>
|
||||
</with>
|
||||
</ema:metadata>
|
||||
</div -->
|
||||
</article>
|
||||
<div class='flex flex-col lg:flex-row lg:space-x-2'>
|
||||
|
||||
|
||||
<div class='flex-1 p-4 mt-8 bg-gray-100 rounded'>
|
||||
<header class='mb-2 text-xl font-semibold text-gray-500'>Links to this page</header>
|
||||
<ul class='space-y-1'>
|
||||
|
||||
<li>
|
||||
<a class='text-purple-600 mavenLinkBold hover:bg-purple-50' href='Coding/Haskell/Webapp-Example'>
|
||||
Webapp-Development in Haskell
|
||||
</a>
|
||||
|
||||
<div class='mb-4 overflow-auto text-sm text-gray-500'>
|
||||
|
||||
<div class='pl-2 mt-2 border-l-2 border-purple-200 hover:border-purple-500'>
|
||||
<div><p>Um die Anforderungen und Möglichkeiten des jeweiligen Services sauber zu erfassen und automatisiert zu prüfen, dummy-implementationen zu bekommen und vieles andere mehr, empfiehlt es sich den <a href='Coding/OpenAPI' class='text-gray-600 font-bold hover:bg-gray-50' data-wikilink-type='WikiLinkTag'>openapi-generator</a> zu nutzen.</p></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<section class='flex flex-wrap items-end justify-center my-4 space-x-2 space-y-2 font-mono text-sm'>
|
||||
|
||||
</section>
|
||||
|
||||
<!-- What goes in this file will at the very end of the main div -->
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<footer class='flex items-center justify-center mt-2 mb-8 space-x-4 text-center text-gray-800'>
|
||||
|
||||
<div>
|
||||
<a href='' title='Go to Home page'>
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-6 h-6 hover:text-purple-700' fill='none' viewBox='0 0 24 24' stroke='currentColor'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6'></path>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='-/all' title='View Index'>
|
||||
<svg class='w-6 h-6 hover:text-purple-700' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8V4m0 0h4M4 4l5 5m11-1V4m0 0h-4m4 0l-5 5M4 16v4m0 0h4m-4 0l5-5m11 5l-5-5m5 5v-4m0 4h-4'>
|
||||
</path>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.8.1.10'>
|
||||
<img class='w-6 h-6 hover:text-purple-700' src='_emanote-static/emanote-logo.svg' />
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='-/tags' title='View tags'>
|
||||
<svg class='w-6 h-6 hover:text-purple-700' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z'>
|
||||
</path>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='-/tasks' title='View tasks'>
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-6 h-6 hover:text-purple-700' fill='none' viewBox='0 0 24 24' stroke='currentColor'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z'></path>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<div id='stork-search-container' class='hidden fixed w-screen h-screen inset-0 backdrop-filter backdrop-blur-sm'>
|
||||
<div class='fixed w-screen h-screen inset-0' onclick='window.emanote.stork.toggleSearch()'></div>
|
||||
|
||||
<div class='container mx-auto p-10 mt-10'>
|
||||
<div class='stork-wrapper-flat container mx-auto'>
|
||||
<input id='stork-search-input' data-stork='emanote-search' class='stork-input' placeholder='Search (Ctrl+K) ...' />
|
||||
<div data-stork='emanote-search-output' class='stork-output'></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
@ -47,37 +47,65 @@
|
||||
|
||||
|
||||
|
||||
<link href='tailwind.css?instanceId=ecadcd50-ecaf-4d6e-98ea-7932c3b3d351' rel='stylesheet' type='text/css' />
|
||||
<link href='tailwind.css?instanceId=1ec53b8c-7991-423c-8b17-b92e36792648' rel='stylesheet' type='text/css' />
|
||||
|
||||
<!-- Heist error element -->
|
||||
<style>
|
||||
/* Heist error element */
|
||||
strong.error {
|
||||
color: lightcoral;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
/* External link icon */
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"])::after {
|
||||
/* filter converts black to rgb(156,163,175) */
|
||||
filter: invert(71%) sepia(3%) saturate(904%) hue-rotate(179deg) brightness(92%) contrast(87%);
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"]):hover::after {
|
||||
/* filter converts black to rgb(175,85,99) */
|
||||
filter: invert(32%) sepia(10%) saturate(834%) hue-rotate(176deg) brightness(92%) contrast(88%);
|
||||
}
|
||||
|
||||
a[data-linkicon=""]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon=none]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon="external"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
a[data-linkicon="external"][href^="mailto:"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z' /%3E%3C/svg%3E");
|
||||
}
|
||||
</style>
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'MavenPro';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf) format("truetype");
|
||||
font-family: 'WorkSans';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf) format("truetype");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
/* font-variation-settings: 'wght'300; */
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
font-variation-settings: 'wght' 350;
|
||||
}
|
||||
|
||||
a.mavenLinkBold {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h1,
|
||||
@ -88,14 +116,27 @@
|
||||
h6,
|
||||
header,
|
||||
.header-font {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-variation-settings: 'wght' 300;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<link rel='stylesheet' href='_emanote-static/inverted-tree.css' />
|
||||
|
||||
<link rel='stylesheet' href='https://files.stork-search.net/releases/v1.5.0/flat.css' />
|
||||
<link rel='stylesheet' href='_emanote-static/stork/flat.css' />
|
||||
<!-- Custom Stork-search styling for Emanote -->
|
||||
<style>
|
||||
#stork-search-container {
|
||||
@ -109,7 +150,7 @@
|
||||
</style>
|
||||
|
||||
|
||||
<script src='https://files.stork-search.net/releases/v1.5.0/stork.js'></script>
|
||||
<script src='_emanote-static/stork/stork.js'></script>
|
||||
|
||||
|
||||
<script data-emanote-base-url='/'>
|
||||
@ -135,6 +176,7 @@
|
||||
const indexUrl = baseUrl + '-/stork.st';
|
||||
if (document.readyState !== 'complete') {
|
||||
window.addEventListener('load', function () {
|
||||
stork.initialize(baseUrl + '_emanote-static/stork/stork.wasm');
|
||||
stork.register(indexName, indexUrl);
|
||||
});
|
||||
|
||||
@ -358,13 +400,13 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Haskell' href='Haskell'>
|
||||
Haskell
|
||||
<a class='hover:underline truncate' title='Coding' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='5 children inside'>
|
||||
5
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
@ -421,6 +463,82 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Opinions' href='Opinions'>
|
||||
Opinions
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Todo' href='TODO'>
|
||||
Todo
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -777,6 +895,7 @@
|
||||
Damit ist letztere qua definitionem mächtiger als Erstgenannte, da diese in letztgenannter enthalten ist.
|
||||
</p>
|
||||
|
||||
|
||||
<!-- div class="flex items-center justify-center mt-2">
|
||||
<ema:metadata>
|
||||
<with var="template">
|
||||
@ -822,7 +941,7 @@
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.7.3.0'>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.8.1.10'>
|
||||
<img class='w-6 h-6 hover:text-purple-700' src='_emanote-static/emanote-logo.svg' />
|
||||
</a>
|
||||
</div>
|
||||
@ -854,6 +973,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
@ -5,7 +5,7 @@
|
||||
<meta charset='UTF-8' />
|
||||
<meta name='viewport' content='width=device-width, initial-scale=1' />
|
||||
<title>
|
||||
Haskell – Home
|
||||
Opinions – Home
|
||||
</title>
|
||||
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
<meta property='og:site_name' content='Home' />
|
||||
<meta property='og:image' content />
|
||||
<meta property='og:type' content='website' />
|
||||
<meta property='og:title' content='Haskell' />
|
||||
<meta property='og:title' content='Opinions' />
|
||||
|
||||
|
||||
<base href='/' />
|
||||
@ -47,37 +47,65 @@
|
||||
|
||||
|
||||
|
||||
<link href='tailwind.css?instanceId=ecadcd50-ecaf-4d6e-98ea-7932c3b3d351' rel='stylesheet' type='text/css' />
|
||||
<link href='tailwind.css?instanceId=1ec53b8c-7991-423c-8b17-b92e36792648' rel='stylesheet' type='text/css' />
|
||||
|
||||
<!-- Heist error element -->
|
||||
<style>
|
||||
/* Heist error element */
|
||||
strong.error {
|
||||
color: lightcoral;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
/* External link icon */
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"])::after {
|
||||
/* filter converts black to rgb(156,163,175) */
|
||||
filter: invert(71%) sepia(3%) saturate(904%) hue-rotate(179deg) brightness(92%) contrast(87%);
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"]):hover::after {
|
||||
/* filter converts black to rgb(175,85,99) */
|
||||
filter: invert(32%) sepia(10%) saturate(834%) hue-rotate(176deg) brightness(92%) contrast(88%);
|
||||
}
|
||||
|
||||
a[data-linkicon=""]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon=none]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon="external"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
a[data-linkicon="external"][href^="mailto:"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z' /%3E%3C/svg%3E");
|
||||
}
|
||||
</style>
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'MavenPro';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf) format("truetype");
|
||||
font-family: 'WorkSans';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf) format("truetype");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
/* font-variation-settings: 'wght'300; */
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
font-variation-settings: 'wght' 350;
|
||||
}
|
||||
|
||||
a.mavenLinkBold {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h1,
|
||||
@ -88,14 +116,27 @@
|
||||
h6,
|
||||
header,
|
||||
.header-font {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-variation-settings: 'wght' 300;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<link rel='stylesheet' href='_emanote-static/inverted-tree.css' />
|
||||
|
||||
<link rel='stylesheet' href='https://files.stork-search.net/releases/v1.5.0/flat.css' />
|
||||
<link rel='stylesheet' href='_emanote-static/stork/flat.css' />
|
||||
<!-- Custom Stork-search styling for Emanote -->
|
||||
<style>
|
||||
#stork-search-container {
|
||||
@ -109,7 +150,7 @@
|
||||
</style>
|
||||
|
||||
|
||||
<script src='https://files.stork-search.net/releases/v1.5.0/stork.js'></script>
|
||||
<script src='_emanote-static/stork/stork.js'></script>
|
||||
|
||||
|
||||
<script data-emanote-base-url='/'>
|
||||
@ -135,6 +176,7 @@
|
||||
const indexUrl = baseUrl + '-/stork.st';
|
||||
if (document.readyState !== 'complete') {
|
||||
window.addEventListener('load', function () {
|
||||
stork.initialize(baseUrl + '_emanote-static/stork/stork.wasm');
|
||||
stork.register(indexName, indexUrl);
|
||||
});
|
||||
|
||||
@ -345,6 +387,82 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Coding' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Logik für Dummies' href='Logik'>
|
||||
Logik für Dummies
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -357,8 +475,8 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold text-purple-600 hover:underline truncate' title='Haskell' href='Haskell'>
|
||||
Haskell
|
||||
<a class='font-bold text-purple-600 hover:underline truncate' title='Opinions' href='Opinions'>
|
||||
Opinions
|
||||
</a>
|
||||
|
||||
|
||||
@ -379,45 +497,6 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Code-Snippets' href='Haskell/Code%20Snippets'>
|
||||
Code-Snippets
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -430,8 +509,8 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Fortgeschrittene funktionale Programmierung in Haskell' href='Haskell/FFPiH'>
|
||||
Fortgeschrittene funktionale Programmierung in Haskell
|
||||
<a class='hover:underline truncate' title='Editors' href='Opinions/Editors'>
|
||||
Editors
|
||||
</a>
|
||||
|
||||
|
||||
@ -467,89 +546,13 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Lenses' href='Haskell/Lenses'>
|
||||
Lenses
|
||||
<a class='hover:underline truncate' title='Keyboard-Layouts' href='Opinions/Layout'>
|
||||
Keyboard-Layouts
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Talks und Posts zu Haskell' href='Haskell/Advantages'>
|
||||
Talks und Posts zu Haskell
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Webapp-Development in Haskell' href='Haskell/Webapp-Example'>
|
||||
Webapp-Development in Haskell
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
@ -583,8 +586,8 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Logik für Dummies' href='Logik'>
|
||||
Logik für Dummies
|
||||
<a class='hover:underline truncate' title='Todo' href='TODO'>
|
||||
Todo
|
||||
</a>
|
||||
|
||||
|
||||
@ -710,73 +713,50 @@
|
||||
</nav>
|
||||
<h1 class='flex items-end justify-center mb-4 p-3 bg-purple-100 text-5xl font-extrabold text-black rounded'>
|
||||
<a class='z-40 tracking-tighter '>
|
||||
Haskell
|
||||
Opinions
|
||||
</a>
|
||||
</h1>
|
||||
<article class='overflow-auto'>
|
||||
<!-- What goes in this file will appear on top of note body-->
|
||||
<nav>
|
||||
<div class='mb-8'>
|
||||
<header class='pb-2 mb-2 font-semibold text-gray-600'>
|
||||
<header data-nosnippet class='pb-2 mb-2 font-semibold text-gray-600'>
|
||||
Pages matching path './*'
|
||||
</header>
|
||||
<ul>
|
||||
|
||||
<div class='flex flex-wrap my-2'>
|
||||
<li>
|
||||
<div class='flex flex-wrap my-2'>
|
||||
|
||||
<span class='mr-2 text-right text-gray-600'>
|
||||
</span>
|
||||
<span data-nosnippet class='mr-2 text-right text-gray-600'>
|
||||
</span>
|
||||
|
||||
<a class='flex-1 text-purple-600 mavenLinkBold border-l-2 pl-2 hover:underline' href='Haskell/Code%20Snippets'>
|
||||
Code-Snippets
|
||||
</a>
|
||||
</div>
|
||||
<a class='flex-1 text-purple-600 mavenLinkBold border-l-2 pl-2 hover:underline' href='Opinions/Editors'>
|
||||
Editors
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<div class='flex flex-wrap my-2'>
|
||||
<li>
|
||||
<div class='flex flex-wrap my-2'>
|
||||
|
||||
<span class='mr-2 text-right text-gray-600'>
|
||||
</span>
|
||||
<span data-nosnippet class='mr-2 text-right text-gray-600'>
|
||||
</span>
|
||||
|
||||
<a class='flex-1 text-purple-600 mavenLinkBold border-l-2 pl-2 hover:underline' href='Haskell/FFPiH'>
|
||||
Fortgeschrittene funktionale Programmierung in Haskell
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class='flex flex-wrap my-2'>
|
||||
|
||||
<span class='mr-2 text-right text-gray-600'>
|
||||
</span>
|
||||
|
||||
<a class='flex-1 text-purple-600 mavenLinkBold border-l-2 pl-2 hover:underline' href='Haskell/Lenses'>
|
||||
Lenses
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class='flex flex-wrap my-2'>
|
||||
|
||||
<span class='mr-2 text-right text-gray-600'>
|
||||
</span>
|
||||
|
||||
<a class='flex-1 text-purple-600 mavenLinkBold border-l-2 pl-2 hover:underline' href='Haskell/Advantages'>
|
||||
Talks und Posts zu Haskell
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class='flex flex-wrap my-2'>
|
||||
|
||||
<span class='mr-2 text-right text-gray-600'>
|
||||
</span>
|
||||
|
||||
<a class='flex-1 text-purple-600 mavenLinkBold border-l-2 pl-2 hover:underline' href='Haskell/Webapp-Example'>
|
||||
Webapp-Development in Haskell
|
||||
</a>
|
||||
</div>
|
||||
<a class='flex-1 text-purple-600 mavenLinkBold border-l-2 pl-2 hover:underline' href='Opinions/Layout'>
|
||||
Keyboard-Layouts
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</nav><div class='text-gray-400 border-t-2 inline-block pt-0.5'>
|
||||
<p class='mb-3'>
|
||||
Note: To override the auto-generated content here, create a file named one of: <span class='font-mono text-sm'>Haskell.md, Haskell.org</span>
|
||||
Note: To override the auto-generated content here, create a file named one of: <span class='font-mono text-sm'>Opinions.md, Opinions.org</span>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- div class="flex items-center justify-center mt-2">
|
||||
<ema:metadata>
|
||||
<with var="template">
|
||||
@ -822,7 +802,7 @@
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.7.3.0'>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.8.1.10'>
|
||||
<img class='w-6 h-6 hover:text-purple-700' src='_emanote-static/emanote-logo.svg' />
|
||||
</a>
|
||||
</div>
|
||||
@ -854,6 +834,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
865
static_gen/Opinions/Editors.html
Normal file
865
static_gen/Opinions/Editors.html
Normal file
@ -0,0 +1,865 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang='en'>
|
||||
|
||||
<head>
|
||||
<meta charset='UTF-8' />
|
||||
<meta name='viewport' content='width=device-width, initial-scale=1' />
|
||||
<title>
|
||||
Editors – Home
|
||||
</title>
|
||||
|
||||
|
||||
<meta property='og:description' content='Better said: why neovim is currently my favorite editor 😉' />
|
||||
<meta property='og:site_name' content='Home' />
|
||||
<meta property='og:image' content />
|
||||
<meta property='og:type' content='website' />
|
||||
<meta property='og:title' content='Editors' />
|
||||
|
||||
|
||||
<base href='/' />
|
||||
<link href='favicon.svg' rel='icon' />
|
||||
|
||||
<script>
|
||||
window.MathJax = {
|
||||
startup: {
|
||||
ready: () => {
|
||||
MathJax.startup.defaultReady();
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script async id='MathJax-script' src='https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js'></script>
|
||||
|
||||
<!-- mermaid.js --><script src='https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js'></script>
|
||||
<script>
|
||||
mermaid.initialize({startOnLoad:false});
|
||||
mermaid.init(undefined,document.querySelectorAll(".mermaid"));
|
||||
</script>
|
||||
|
||||
<!-- highlight.js -->
|
||||
<link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/styles/hybrid.min.css' />
|
||||
<script src='https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/highlight.min.js'></script>
|
||||
<!-- Include languages that Emanote itself uses -->
|
||||
<script src='https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/languages/haskell.min.js'></script>
|
||||
<script src='https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/languages/nix.min.js'></script>
|
||||
<script>hljs.highlightAll();</script>
|
||||
|
||||
|
||||
|
||||
|
||||
<link href='tailwind.css?instanceId=1ec53b8c-7991-423c-8b17-b92e36792648' rel='stylesheet' type='text/css' />
|
||||
|
||||
<style>
|
||||
/* Heist error element */
|
||||
strong.error {
|
||||
color: lightcoral;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
/* External link icon */
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"])::after {
|
||||
/* filter converts black to rgb(156,163,175) */
|
||||
filter: invert(71%) sepia(3%) saturate(904%) hue-rotate(179deg) brightness(92%) contrast(87%);
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"]):hover::after {
|
||||
/* filter converts black to rgb(175,85,99) */
|
||||
filter: invert(32%) sepia(10%) saturate(834%) hue-rotate(176deg) brightness(92%) contrast(88%);
|
||||
}
|
||||
|
||||
a[data-linkicon=""]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon=none]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon="external"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
a[data-linkicon="external"][href^="mailto:"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z' /%3E%3C/svg%3E");
|
||||
}
|
||||
</style>
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'WorkSans';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf) format("truetype");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
font-variation-settings: 'wght' 350;
|
||||
}
|
||||
|
||||
a.mavenLinkBold {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6,
|
||||
header,
|
||||
.header-font {
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-variation-settings: 'wght' 300;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<link rel='stylesheet' href='_emanote-static/inverted-tree.css' />
|
||||
|
||||
<link rel='stylesheet' href='_emanote-static/stork/flat.css' />
|
||||
<!-- Custom Stork-search styling for Emanote -->
|
||||
<style>
|
||||
#stork-search-container {
|
||||
z-index: 1000;
|
||||
background-color: rgb(15 23 42/.8);
|
||||
}
|
||||
|
||||
.stork-overflow-hidden-important {
|
||||
overflow: hidden !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
<script src='_emanote-static/stork/stork.js'></script>
|
||||
|
||||
|
||||
<script data-emanote-base-url='/'>
|
||||
window.emanote = {};
|
||||
window.emanote.stork = {
|
||||
searchShown: false,
|
||||
toggleSearch: function () {
|
||||
document.getElementById('stork-search-container').classList.toggle('hidden');
|
||||
window.emanote.stork.searchShown = document.body.classList.toggle('stork-overflow-hidden-important');
|
||||
if (window.emanote.stork.searchShown) {
|
||||
document.getElementById('stork-search-input').focus();
|
||||
}
|
||||
},
|
||||
clearSearch: function () {
|
||||
document.getElementById('stork-search-container').classList.add('hidden');
|
||||
document.body.classList.remove('stork-overflow-hidden-important');
|
||||
window.emanote.stork.searchShown = false;
|
||||
},
|
||||
|
||||
init: function () {
|
||||
const indexName = 'emanote-search'; // used to match input[data-stork] attribute value
|
||||
const baseUrl = document.currentScript.getAttribute('data-emanote-base-url') || '/';
|
||||
const indexUrl = baseUrl + '-/stork.st';
|
||||
if (document.readyState !== 'complete') {
|
||||
window.addEventListener('load', function () {
|
||||
stork.initialize(baseUrl + '_emanote-static/stork/stork.wasm');
|
||||
stork.register(indexName, indexUrl);
|
||||
});
|
||||
|
||||
document.addEventListener('keydown', event => {
|
||||
if (window.emanote.stork.searchShown && event.key === 'Escape') {
|
||||
window.emanote.stork.clearSearch();
|
||||
event.preventDefault();
|
||||
} else if ((event.key == 'k' || event.key == 'K') && (event.ctrlKey || event.metaKey)) {
|
||||
window.emanote.stork.toggleSearch();
|
||||
event.preventDefault();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// Override existing on Ema's hot-reload
|
||||
stork.register(indexName, indexUrl, { forceOverwrite: true });
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
window.emanote.stork.init();
|
||||
</script>
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<!-- DoNotFormat -->
|
||||
|
||||
|
||||
|
||||
<!-- DoNotFormat -->
|
||||
|
||||
<body class='bg-gray-400 overflow-y-scroll'>
|
||||
|
||||
<div class='container mx-auto'>
|
||||
|
||||
<nav id='breadcrumbs' class='w-full text-gray-700 md:hidden'>
|
||||
<div class='flex justify-left'>
|
||||
<div class='w-full px-2 py-2 bg-gray-50'>
|
||||
<ul class='flex flex-wrap text-lg'>
|
||||
<li class='inline-flex items-center'>
|
||||
|
||||
|
||||
<img style='width: 1rem;' src='favicon.svg' />
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li class='inline-flex items-center'>
|
||||
<a class='px-1 font-bold' href=''>
|
||||
Home
|
||||
</a>
|
||||
<svg fill='currentColor' viewBox='0 0 20 20' class='w-auto h-5 text-gray-400'>
|
||||
<path fill-rule='evenodd' d='M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z' clip-rule='evenodd'></path>
|
||||
</svg>
|
||||
</li>
|
||||
|
||||
<li class='inline-flex items-center'>
|
||||
<a class='px-1 font-bold' href='Opinions'>
|
||||
Opinions
|
||||
</a>
|
||||
<svg fill='currentColor' viewBox='0 0 20 20' class='w-auto h-5 text-gray-400'>
|
||||
<path fill-rule='evenodd' d='M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z' clip-rule='evenodd'></path>
|
||||
</svg>
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
<button class='inline px-2 py-1 bg-gray-50 outline-none cursor-pointer focus:outline-none' title='Search (Ctrl+K)' type='button' onclick='window.emanote.stork.toggleSearch()'>
|
||||
<svg xmlns='http://www.w3.org/2000/svg' style='width: 1rem;' class='hover:text-purple-700' f
|
||||
fill='none' viewBox='0 0 24 24' stroke='currentColor' stroke-width='2'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' d='M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z'></path>
|
||||
</svg>
|
||||
</button>
|
||||
<button class='inline px-2 py-1 text-white bg-purple-600 outline-none cursor-pointer focus:outline-none' title='Toggle sidebar' type='button' onclick="toggleHidden('sidebar')">
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4' fill='none' viewBox='0 0 24 24' stroke='currentColor'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 6h16M4 12h16M4 18h16'></path>
|
||||
</svg>
|
||||
</button>
|
||||
<script>
|
||||
function toggleHidden(elemId) {
|
||||
document.getElementById(elemId).classList.toggle("hidden");
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div id='container' class='flex flex-nowrap flex-col md:flex-row bg-gray-50 md:mt-8 md:shadow-2xl md:mb-8'>
|
||||
<!-- Sidebar column -->
|
||||
<nav id='sidebar' class='flex-shrink hidden leading-relaxed md:block md:sticky md:top-0 md:h-full md:w-48 xl:w-64'>
|
||||
<div class='px-2 py-2 text-gray-800'>
|
||||
<div id='indexing-links' class='flex flex-row float-right p-2 space-x-2 text-gray-500'>
|
||||
<a href='-/tags' title='View tags'>
|
||||
<svg style='width: 1rem;' class='hover:text-purple-700' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z'>
|
||||
</path>
|
||||
</svg>
|
||||
</a>
|
||||
<a href='-/all' title='Expand full tree'>
|
||||
<svg style='width: 1rem;' class='hover:text-purple-700' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8V4m0 0h4M4 4l5 5m11-1V4m0 0h-4m4 0l-5 5M4 16v4m0 0h4m-4 0l5-5m11 5l-5-5m5 5v-4m0 4h-4'>
|
||||
</path>
|
||||
</svg>
|
||||
</a>
|
||||
<a title='Search (Ctrl+K)' class='cursor-pointer' onclick='window.emanote.stork.toggleSearch()'>
|
||||
<svg xmlns='http://www.w3.org/2000/svg' style='width: 1rem;' class='hover:text-purple-700' f
|
||||
fill='none' viewBox='0 0 24 24' stroke='currentColor' stroke-width='2'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' d='M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z'></path>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div id='site-logo' class='pl-2'>
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
<a href='' title='Go to Home'>
|
||||
|
||||
|
||||
<!-- The style width attribute here is to prevent huge
|
||||
icon from displaying at those rare occasions when Tailwind
|
||||
hasn't kicked in immediately on page load
|
||||
-->
|
||||
<img style='width: 1rem;' class='transition transform hover:scale-110 hover:opacity-80' src='favicon.svg' />
|
||||
|
||||
|
||||
</a>
|
||||
<a class='font-bold truncate' title='Go to Home' href=''>
|
||||
Home
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='About' href='About'>
|
||||
About
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='3 children inside'>
|
||||
3
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Android' href='Android'>
|
||||
Android
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='1 children inside'>
|
||||
1
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Coding' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Logik für Dummies' href='Logik'>
|
||||
Logik für Dummies
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-700' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path fill-rule='evenodd' d='M2 6a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1H8a3 3 0 00-3 3v1.5a1.5 1.5 0 01-3 0V6z' clip-rule='evenodd'></path>
|
||||
<path d='M6 12a2 2 0 012-2h8a2 2 0 012 2v2a2 2 0 01-2 2H2h2a2 2 0 002-2v-2z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold hover:underline truncate' title='Opinions' href='Opinions'>
|
||||
Opinions
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold text-purple-600 hover:underline truncate' title='Editors' href='Opinions/Editors'>
|
||||
Editors
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Keyboard-Layouts' href='Opinions/Layout'>
|
||||
Keyboard-Layouts
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Todo' href='TODO'>
|
||||
Todo
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Uni' href='Uni'>
|
||||
Uni
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Unix' href='Unix'>
|
||||
Unix
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='1 children inside'>
|
||||
1
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- Main body column -->
|
||||
<div class='flex-1 w-full overflow-x-auto bg-white'>
|
||||
<main class='px-4 py-4'>
|
||||
<!-- DoNotFormat -->
|
||||
<!-- DoNotFormat -->
|
||||
|
||||
<nav id='uptree' class='flipped tree' style='transform-origin: 50%;'>
|
||||
<ul class='root'>
|
||||
<li>
|
||||
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href='Opinions'>
|
||||
Opinions
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href=''>
|
||||
Home
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<h1 class='flex items-end justify-center mb-4 p-3 bg-purple-100 text-5xl font-extrabold text-black rounded'>
|
||||
<a class='z-40 tracking-tighter '>
|
||||
Editors
|
||||
</a>
|
||||
</h1>
|
||||
<article class='overflow-auto'>
|
||||
<!-- What goes in this file will appear on top of note body-->
|
||||
|
||||
<p class='mb-3'>
|
||||
Better said: “why neovim is currently my favorite editor” <span class='emoji' data-emoji='wink' style='font-family: emoji'>😉</span>
|
||||
</p>
|
||||
<h2 id='current-config' class='inline-block mt-6 mb-4 text-4xl font-bold text-gray-700 border-b-2'>Current Config</h2>
|
||||
<p class='mb-3'>
|
||||
You can find my current Config along with other things in my <a href='https://gitea.dresselhaus.cloud/Drezil/snippets' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>gitea snippet-git</a>.
|
||||
</p>
|
||||
|
||||
<p class='mb-3'>
|
||||
<a href='TODO' class='text-purple-600 mavenLinkBold hover:underline' data-wikilink-type='WikiLinkNormal'>Todo</a>: write more awesomesauce <span class='emoji' data-emoji='wink' style='font-family: emoji'>😉</span>
|
||||
</p>
|
||||
|
||||
|
||||
<!-- div class="flex items-center justify-center mt-2">
|
||||
<ema:metadata>
|
||||
<with var="template">
|
||||
<a class="text-gray-300 hover:text-${theme}-600 text-sm" title="Edit this page on GitHub"
|
||||
href="${value:editBaseUrl}/${ema:note:source-path}">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z" />
|
||||
</svg>
|
||||
</a>
|
||||
</with>
|
||||
</ema:metadata>
|
||||
</div -->
|
||||
</article>
|
||||
<div class='flex flex-col lg:flex-row lg:space-x-2'>
|
||||
|
||||
|
||||
<div class='flex-1 p-4 mt-8 bg-gray-100 rounded'>
|
||||
<header class='mb-2 text-xl font-semibold text-gray-500'>Links to this page</header>
|
||||
<ul class='space-y-1'>
|
||||
|
||||
<li>
|
||||
<a class='text-purple-600 mavenLinkBold hover:bg-purple-50' href='Opinions/Layout'>
|
||||
Keyboard-Layouts
|
||||
</a>
|
||||
|
||||
<div class='mb-4 overflow-auto text-sm text-gray-500'>
|
||||
|
||||
<div class='pl-2 mt-2 border-l-2 border-purple-200 hover:border-purple-500'>
|
||||
<div><p>Thats why i also prefer <a href='Opinions/Editors' class='text-gray-600 font-bold hover:bg-gray-50' data-wikilink-type='WikiLinkNormal'>Neovim</a> as my primary editor - just not having to touch your mouse at any time for anything is such a godsend <span class='emoji' data-emoji='smile' style='font-family: emoji'>😄</span></p></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<section class='flex flex-wrap items-end justify-center my-4 space-x-2 space-y-2 font-mono text-sm'>
|
||||
|
||||
</section>
|
||||
|
||||
<!-- What goes in this file will at the very end of the main div -->
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<footer class='flex items-center justify-center mt-2 mb-8 space-x-4 text-center text-gray-800'>
|
||||
|
||||
<div>
|
||||
<a href='' title='Go to Home page'>
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-6 h-6 hover:text-purple-700' fill='none' viewBox='0 0 24 24' stroke='currentColor'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6'></path>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='-/all' title='View Index'>
|
||||
<svg class='w-6 h-6 hover:text-purple-700' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8V4m0 0h4M4 4l5 5m11-1V4m0 0h-4m4 0l-5 5M4 16v4m0 0h4m-4 0l5-5m11 5l-5-5m5 5v-4m0 4h-4'>
|
||||
</path>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.8.1.10'>
|
||||
<img class='w-6 h-6 hover:text-purple-700' src='_emanote-static/emanote-logo.svg' />
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='-/tags' title='View tags'>
|
||||
<svg class='w-6 h-6 hover:text-purple-700' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z'>
|
||||
</path>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='-/tasks' title='View tasks'>
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-6 h-6 hover:text-purple-700' fill='none' viewBox='0 0 24 24' stroke='currentColor'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z'></path>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<div id='stork-search-container' class='hidden fixed w-screen h-screen inset-0 backdrop-filter backdrop-blur-sm'>
|
||||
<div class='fixed w-screen h-screen inset-0' onclick='window.emanote.stork.toggleSearch()'></div>
|
||||
|
||||
<div class='container mx-auto p-10 mt-10'>
|
||||
<div class='stork-wrapper-flat container mx-auto'>
|
||||
<input id='stork-search-input' data-stork='emanote-search' class='stork-input' placeholder='Search (Ctrl+K) ...' />
|
||||
<div data-stork='emanote-search-output' class='stork-output'></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
875
static_gen/Opinions/Layout.html
Normal file
875
static_gen/Opinions/Layout.html
Normal file
@ -0,0 +1,875 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang='en'>
|
||||
|
||||
<head>
|
||||
<meta charset='UTF-8' />
|
||||
<meta name='viewport' content='width=device-width, initial-scale=1' />
|
||||
<title>
|
||||
Keyboard-Layouts – Home
|
||||
</title>
|
||||
|
||||
|
||||
<meta property='og:description' content='Since around 2006 i basically write only using the NEO2-Layout. There are many advantages that are not obvious to an onlooker right away.' />
|
||||
<meta property='og:site_name' content='Home' />
|
||||
<meta property='og:image' content />
|
||||
<meta property='og:type' content='website' />
|
||||
<meta property='og:title' content='Keyboard-Layouts' />
|
||||
|
||||
|
||||
<base href='/' />
|
||||
<link href='favicon.svg' rel='icon' />
|
||||
|
||||
<script>
|
||||
window.MathJax = {
|
||||
startup: {
|
||||
ready: () => {
|
||||
MathJax.startup.defaultReady();
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script async id='MathJax-script' src='https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js'></script>
|
||||
|
||||
<!-- mermaid.js --><script src='https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js'></script>
|
||||
<script>
|
||||
mermaid.initialize({startOnLoad:false});
|
||||
mermaid.init(undefined,document.querySelectorAll(".mermaid"));
|
||||
</script>
|
||||
|
||||
<!-- highlight.js -->
|
||||
<link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/styles/hybrid.min.css' />
|
||||
<script src='https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/highlight.min.js'></script>
|
||||
<!-- Include languages that Emanote itself uses -->
|
||||
<script src='https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/languages/haskell.min.js'></script>
|
||||
<script src='https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/languages/nix.min.js'></script>
|
||||
<script>hljs.highlightAll();</script>
|
||||
|
||||
|
||||
|
||||
|
||||
<link href='tailwind.css?instanceId=1ec53b8c-7991-423c-8b17-b92e36792648' rel='stylesheet' type='text/css' />
|
||||
|
||||
<style>
|
||||
/* Heist error element */
|
||||
strong.error {
|
||||
color: lightcoral;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
/* External link icon */
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"])::after {
|
||||
/* filter converts black to rgb(156,163,175) */
|
||||
filter: invert(71%) sepia(3%) saturate(904%) hue-rotate(179deg) brightness(92%) contrast(87%);
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"]):hover::after {
|
||||
/* filter converts black to rgb(175,85,99) */
|
||||
filter: invert(32%) sepia(10%) saturate(834%) hue-rotate(176deg) brightness(92%) contrast(88%);
|
||||
}
|
||||
|
||||
a[data-linkicon=""]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon=none]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon="external"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
a[data-linkicon="external"][href^="mailto:"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z' /%3E%3C/svg%3E");
|
||||
}
|
||||
</style>
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'WorkSans';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf) format("truetype");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
font-variation-settings: 'wght' 350;
|
||||
}
|
||||
|
||||
a.mavenLinkBold {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6,
|
||||
header,
|
||||
.header-font {
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-variation-settings: 'wght' 300;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<link rel='stylesheet' href='_emanote-static/inverted-tree.css' />
|
||||
|
||||
<link rel='stylesheet' href='_emanote-static/stork/flat.css' />
|
||||
<!-- Custom Stork-search styling for Emanote -->
|
||||
<style>
|
||||
#stork-search-container {
|
||||
z-index: 1000;
|
||||
background-color: rgb(15 23 42/.8);
|
||||
}
|
||||
|
||||
.stork-overflow-hidden-important {
|
||||
overflow: hidden !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
<script src='_emanote-static/stork/stork.js'></script>
|
||||
|
||||
|
||||
<script data-emanote-base-url='/'>
|
||||
window.emanote = {};
|
||||
window.emanote.stork = {
|
||||
searchShown: false,
|
||||
toggleSearch: function () {
|
||||
document.getElementById('stork-search-container').classList.toggle('hidden');
|
||||
window.emanote.stork.searchShown = document.body.classList.toggle('stork-overflow-hidden-important');
|
||||
if (window.emanote.stork.searchShown) {
|
||||
document.getElementById('stork-search-input').focus();
|
||||
}
|
||||
},
|
||||
clearSearch: function () {
|
||||
document.getElementById('stork-search-container').classList.add('hidden');
|
||||
document.body.classList.remove('stork-overflow-hidden-important');
|
||||
window.emanote.stork.searchShown = false;
|
||||
},
|
||||
|
||||
init: function () {
|
||||
const indexName = 'emanote-search'; // used to match input[data-stork] attribute value
|
||||
const baseUrl = document.currentScript.getAttribute('data-emanote-base-url') || '/';
|
||||
const indexUrl = baseUrl + '-/stork.st';
|
||||
if (document.readyState !== 'complete') {
|
||||
window.addEventListener('load', function () {
|
||||
stork.initialize(baseUrl + '_emanote-static/stork/stork.wasm');
|
||||
stork.register(indexName, indexUrl);
|
||||
});
|
||||
|
||||
document.addEventListener('keydown', event => {
|
||||
if (window.emanote.stork.searchShown && event.key === 'Escape') {
|
||||
window.emanote.stork.clearSearch();
|
||||
event.preventDefault();
|
||||
} else if ((event.key == 'k' || event.key == 'K') && (event.ctrlKey || event.metaKey)) {
|
||||
window.emanote.stork.toggleSearch();
|
||||
event.preventDefault();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// Override existing on Ema's hot-reload
|
||||
stork.register(indexName, indexUrl, { forceOverwrite: true });
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
window.emanote.stork.init();
|
||||
</script>
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<!-- DoNotFormat -->
|
||||
|
||||
|
||||
|
||||
<!-- DoNotFormat -->
|
||||
|
||||
<body class='bg-gray-400 overflow-y-scroll'>
|
||||
|
||||
<div class='container mx-auto'>
|
||||
|
||||
<nav id='breadcrumbs' class='w-full text-gray-700 md:hidden'>
|
||||
<div class='flex justify-left'>
|
||||
<div class='w-full px-2 py-2 bg-gray-50'>
|
||||
<ul class='flex flex-wrap text-lg'>
|
||||
<li class='inline-flex items-center'>
|
||||
|
||||
|
||||
<img style='width: 1rem;' src='favicon.svg' />
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li class='inline-flex items-center'>
|
||||
<a class='px-1 font-bold' href=''>
|
||||
Home
|
||||
</a>
|
||||
<svg fill='currentColor' viewBox='0 0 20 20' class='w-auto h-5 text-gray-400'>
|
||||
<path fill-rule='evenodd' d='M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z' clip-rule='evenodd'></path>
|
||||
</svg>
|
||||
</li>
|
||||
|
||||
<li class='inline-flex items-center'>
|
||||
<a class='px-1 font-bold' href='Opinions'>
|
||||
Opinions
|
||||
</a>
|
||||
<svg fill='currentColor' viewBox='0 0 20 20' class='w-auto h-5 text-gray-400'>
|
||||
<path fill-rule='evenodd' d='M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z' clip-rule='evenodd'></path>
|
||||
</svg>
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
<button class='inline px-2 py-1 bg-gray-50 outline-none cursor-pointer focus:outline-none' title='Search (Ctrl+K)' type='button' onclick='window.emanote.stork.toggleSearch()'>
|
||||
<svg xmlns='http://www.w3.org/2000/svg' style='width: 1rem;' class='hover:text-purple-700' f
|
||||
fill='none' viewBox='0 0 24 24' stroke='currentColor' stroke-width='2'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' d='M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z'></path>
|
||||
</svg>
|
||||
</button>
|
||||
<button class='inline px-2 py-1 text-white bg-purple-600 outline-none cursor-pointer focus:outline-none' title='Toggle sidebar' type='button' onclick="toggleHidden('sidebar')">
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4' fill='none' viewBox='0 0 24 24' stroke='currentColor'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 6h16M4 12h16M4 18h16'></path>
|
||||
</svg>
|
||||
</button>
|
||||
<script>
|
||||
function toggleHidden(elemId) {
|
||||
document.getElementById(elemId).classList.toggle("hidden");
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div id='container' class='flex flex-nowrap flex-col md:flex-row bg-gray-50 md:mt-8 md:shadow-2xl md:mb-8'>
|
||||
<!-- Sidebar column -->
|
||||
<nav id='sidebar' class='flex-shrink hidden leading-relaxed md:block md:sticky md:top-0 md:h-full md:w-48 xl:w-64'>
|
||||
<div class='px-2 py-2 text-gray-800'>
|
||||
<div id='indexing-links' class='flex flex-row float-right p-2 space-x-2 text-gray-500'>
|
||||
<a href='-/tags' title='View tags'>
|
||||
<svg style='width: 1rem;' class='hover:text-purple-700' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z'>
|
||||
</path>
|
||||
</svg>
|
||||
</a>
|
||||
<a href='-/all' title='Expand full tree'>
|
||||
<svg style='width: 1rem;' class='hover:text-purple-700' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8V4m0 0h4M4 4l5 5m11-1V4m0 0h-4m4 0l-5 5M4 16v4m0 0h4m-4 0l5-5m11 5l-5-5m5 5v-4m0 4h-4'>
|
||||
</path>
|
||||
</svg>
|
||||
</a>
|
||||
<a title='Search (Ctrl+K)' class='cursor-pointer' onclick='window.emanote.stork.toggleSearch()'>
|
||||
<svg xmlns='http://www.w3.org/2000/svg' style='width: 1rem;' class='hover:text-purple-700' f
|
||||
fill='none' viewBox='0 0 24 24' stroke='currentColor' stroke-width='2'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' d='M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z'></path>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div id='site-logo' class='pl-2'>
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
<a href='' title='Go to Home'>
|
||||
|
||||
|
||||
<!-- The style width attribute here is to prevent huge
|
||||
icon from displaying at those rare occasions when Tailwind
|
||||
hasn't kicked in immediately on page load
|
||||
-->
|
||||
<img style='width: 1rem;' class='transition transform hover:scale-110 hover:opacity-80' src='favicon.svg' />
|
||||
|
||||
|
||||
</a>
|
||||
<a class='font-bold truncate' title='Go to Home' href=''>
|
||||
Home
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='About' href='About'>
|
||||
About
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='3 children inside'>
|
||||
3
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Android' href='Android'>
|
||||
Android
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='1 children inside'>
|
||||
1
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Coding' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Logik für Dummies' href='Logik'>
|
||||
Logik für Dummies
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-700' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path fill-rule='evenodd' d='M2 6a2 2 0 012-2h4l2 2h4a2 2 0 012 2v1H8a3 3 0 00-3 3v1.5a1.5 1.5 0 01-3 0V6z' clip-rule='evenodd'></path>
|
||||
<path d='M6 12a2 2 0 012-2h8a2 2 0 012 2v2a2 2 0 01-2 2H2h2a2 2 0 002-2v-2z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold hover:underline truncate' title='Opinions' href='Opinions'>
|
||||
Opinions
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Editors' href='Opinions/Editors'>
|
||||
Editors
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold text-purple-600 hover:underline truncate' title='Keyboard-Layouts' href='Opinions/Layout'>
|
||||
Keyboard-Layouts
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Todo' href='TODO'>
|
||||
Todo
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Uni' href='Uni'>
|
||||
Uni
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Unix' href='Unix'>
|
||||
Unix
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='1 children inside'>
|
||||
1
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- Main body column -->
|
||||
<div class='flex-1 w-full overflow-x-auto bg-white'>
|
||||
<main class='px-4 py-4'>
|
||||
<!-- DoNotFormat -->
|
||||
<!-- DoNotFormat -->
|
||||
|
||||
<nav id='uptree' class='flipped tree' style='transform-origin: 50%;'>
|
||||
<ul class='root'>
|
||||
<li>
|
||||
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href='Opinions'>
|
||||
Opinions
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href=''>
|
||||
Home
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<h1 class='flex items-end justify-center mb-4 p-3 bg-purple-100 text-5xl font-extrabold text-black rounded'>
|
||||
<a class='z-40 tracking-tighter '>
|
||||
Keyboard-Layouts
|
||||
</a>
|
||||
</h1>
|
||||
<article class='overflow-auto'>
|
||||
<!-- What goes in this file will appear on top of note body-->
|
||||
<h1 id='my-keyboard-layout' class='pb-2 mb-2 text-5xl font-bold text-center'>My Keyboard-Layout</h1>
|
||||
<p class='mb-3'>
|
||||
Since around 2006 i basically write only using the <a href='https://neo-layout.org' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>NEO2</a>-Layout. There are many advantages that are not obvious to an onlooker right away.
|
||||
</p>
|
||||
|
||||
<p class='mb-3'>
|
||||
Don’t get me wrong. I still can type QWERTZ - just because you learn an additional layout does not mean that you forget everything from before.
|
||||
</p>
|
||||
|
||||
<p class='mb-3'>
|
||||
The secret sauce lies in the deeper layers. Especially layer 3 having all the “hard to reach” things like brackets, braces, etc. right on the home row. And the 4th layer is <em>magic</em> for text-navigation. Left hand has the full navigation, right hand has the complete Numpad - even on laptop-keyboards that are lacking those.
|
||||
</p>
|
||||
|
||||
<p class='mb-3'>
|
||||
For me as a person having the usual German Keyboard with AltGr this just means:
|
||||
</p>
|
||||
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
Putting the thumb down on AltGr - it is above there anyway.
|
||||
</li>
|
||||
|
||||
<li>
|
||||
Use left hand as normal arrow-keys (that work EVERYWHERE because they are just arrow keys)
|
||||
</li>
|
||||
|
||||
<li>
|
||||
Also use Home/End/PgUp/PgDown/…
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<p class='mb-3'>
|
||||
Before i always had to switch over or hope that a thing had support for vi-style “hjkl”.
|
||||
</p>
|
||||
|
||||
<p class='mb-3'>
|
||||
Thats why i also prefer <a href='Opinions/Editors' class='text-purple-600 mavenLinkBold hover:underline' data-wikilink-type='WikiLinkNormal'>Neovim</a> as my primary editor - just not having to touch your mouse at any time for anything is such a godsend <span class='emoji' data-emoji='smile' style='font-family: emoji'>😄</span>
|
||||
</p>
|
||||
|
||||
<p class='mb-3'>
|
||||
Best thing: If you don’t want to switch, there is also a “Neo-QWERTZ”-variant .. where you can just try the deeper layers while not leaving your QWERTZ-layout behind. But i have just seen and never tried it. Your experience may be sub-par.
|
||||
</p>
|
||||
|
||||
|
||||
<!-- div class="flex items-center justify-center mt-2">
|
||||
<ema:metadata>
|
||||
<with var="template">
|
||||
<a class="text-gray-300 hover:text-${theme}-600 text-sm" title="Edit this page on GitHub"
|
||||
href="${value:editBaseUrl}/${ema:note:source-path}">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z" />
|
||||
</svg>
|
||||
</a>
|
||||
</with>
|
||||
</ema:metadata>
|
||||
</div -->
|
||||
</article>
|
||||
<div class='flex flex-col lg:flex-row lg:space-x-2'>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<section class='flex flex-wrap items-end justify-center my-4 space-x-2 space-y-2 font-mono text-sm'>
|
||||
|
||||
</section>
|
||||
|
||||
<!-- What goes in this file will at the very end of the main div -->
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<footer class='flex items-center justify-center mt-2 mb-8 space-x-4 text-center text-gray-800'>
|
||||
|
||||
<div>
|
||||
<a href='' title='Go to Home page'>
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-6 h-6 hover:text-purple-700' fill='none' viewBox='0 0 24 24' stroke='currentColor'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6'></path>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='-/all' title='View Index'>
|
||||
<svg class='w-6 h-6 hover:text-purple-700' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8V4m0 0h4M4 4l5 5m11-1V4m0 0h-4m4 0l-5 5M4 16v4m0 0h4m-4 0l5-5m11 5l-5-5m5 5v-4m0 4h-4'>
|
||||
</path>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.8.1.10'>
|
||||
<img class='w-6 h-6 hover:text-purple-700' src='_emanote-static/emanote-logo.svg' />
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='-/tags' title='View tags'>
|
||||
<svg class='w-6 h-6 hover:text-purple-700' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z'>
|
||||
</path>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='-/tasks' title='View tasks'>
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-6 h-6 hover:text-purple-700' fill='none' viewBox='0 0 24 24' stroke='currentColor'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z'></path>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<div id='stork-search-container' class='hidden fixed w-screen h-screen inset-0 backdrop-filter backdrop-blur-sm'>
|
||||
<div class='fixed w-screen h-screen inset-0' onclick='window.emanote.stork.toggleSearch()'></div>
|
||||
|
||||
<div class='container mx-auto p-10 mt-10'>
|
||||
<div class='stork-wrapper-flat container mx-auto'>
|
||||
<input id='stork-search-input' data-stork='emanote-search' class='stork-input' placeholder='Search (Ctrl+K) ...' />
|
||||
<div data-stork='emanote-search-output' class='stork-output'></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
782
static_gen/TODO.html
Normal file
782
static_gen/TODO.html
Normal file
@ -0,0 +1,782 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang='en'>
|
||||
|
||||
<head>
|
||||
<meta charset='UTF-8' />
|
||||
<meta name='viewport' content='width=device-width, initial-scale=1' />
|
||||
<title>
|
||||
Todo – Home
|
||||
</title>
|
||||
|
||||
|
||||
<meta property='og:description' content='Todo List in backlinks below vvv' />
|
||||
<meta property='og:site_name' content='Home' />
|
||||
<meta property='og:image' content />
|
||||
<meta property='og:type' content='website' />
|
||||
<meta property='og:title' content='Todo' />
|
||||
|
||||
|
||||
<base href='/' />
|
||||
<link href='favicon.svg' rel='icon' />
|
||||
|
||||
<script>
|
||||
window.MathJax = {
|
||||
startup: {
|
||||
ready: () => {
|
||||
MathJax.startup.defaultReady();
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script async id='MathJax-script' src='https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js'></script>
|
||||
|
||||
<!-- mermaid.js --><script src='https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js'></script>
|
||||
<script>
|
||||
mermaid.initialize({startOnLoad:false});
|
||||
mermaid.init(undefined,document.querySelectorAll(".mermaid"));
|
||||
</script>
|
||||
|
||||
<!-- highlight.js -->
|
||||
<link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/styles/hybrid.min.css' />
|
||||
<script src='https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/highlight.min.js'></script>
|
||||
<!-- Include languages that Emanote itself uses -->
|
||||
<script src='https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/languages/haskell.min.js'></script>
|
||||
<script src='https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/languages/nix.min.js'></script>
|
||||
<script>hljs.highlightAll();</script>
|
||||
|
||||
|
||||
|
||||
|
||||
<link href='tailwind.css?instanceId=1ec53b8c-7991-423c-8b17-b92e36792648' rel='stylesheet' type='text/css' />
|
||||
|
||||
<style>
|
||||
/* Heist error element */
|
||||
strong.error {
|
||||
color: lightcoral;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
/* External link icon */
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"])::after {
|
||||
/* filter converts black to rgb(156,163,175) */
|
||||
filter: invert(71%) sepia(3%) saturate(904%) hue-rotate(179deg) brightness(92%) contrast(87%);
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"]):hover::after {
|
||||
/* filter converts black to rgb(175,85,99) */
|
||||
filter: invert(32%) sepia(10%) saturate(834%) hue-rotate(176deg) brightness(92%) contrast(88%);
|
||||
}
|
||||
|
||||
a[data-linkicon=""]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon=none]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon="external"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
a[data-linkicon="external"][href^="mailto:"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z' /%3E%3C/svg%3E");
|
||||
}
|
||||
</style>
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'WorkSans';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf) format("truetype");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
font-variation-settings: 'wght' 350;
|
||||
}
|
||||
|
||||
a.mavenLinkBold {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6,
|
||||
header,
|
||||
.header-font {
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-variation-settings: 'wght' 300;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<link rel='stylesheet' href='_emanote-static/inverted-tree.css' />
|
||||
|
||||
<link rel='stylesheet' href='_emanote-static/stork/flat.css' />
|
||||
<!-- Custom Stork-search styling for Emanote -->
|
||||
<style>
|
||||
#stork-search-container {
|
||||
z-index: 1000;
|
||||
background-color: rgb(15 23 42/.8);
|
||||
}
|
||||
|
||||
.stork-overflow-hidden-important {
|
||||
overflow: hidden !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
<script src='_emanote-static/stork/stork.js'></script>
|
||||
|
||||
|
||||
<script data-emanote-base-url='/'>
|
||||
window.emanote = {};
|
||||
window.emanote.stork = {
|
||||
searchShown: false,
|
||||
toggleSearch: function () {
|
||||
document.getElementById('stork-search-container').classList.toggle('hidden');
|
||||
window.emanote.stork.searchShown = document.body.classList.toggle('stork-overflow-hidden-important');
|
||||
if (window.emanote.stork.searchShown) {
|
||||
document.getElementById('stork-search-input').focus();
|
||||
}
|
||||
},
|
||||
clearSearch: function () {
|
||||
document.getElementById('stork-search-container').classList.add('hidden');
|
||||
document.body.classList.remove('stork-overflow-hidden-important');
|
||||
window.emanote.stork.searchShown = false;
|
||||
},
|
||||
|
||||
init: function () {
|
||||
const indexName = 'emanote-search'; // used to match input[data-stork] attribute value
|
||||
const baseUrl = document.currentScript.getAttribute('data-emanote-base-url') || '/';
|
||||
const indexUrl = baseUrl + '-/stork.st';
|
||||
if (document.readyState !== 'complete') {
|
||||
window.addEventListener('load', function () {
|
||||
stork.initialize(baseUrl + '_emanote-static/stork/stork.wasm');
|
||||
stork.register(indexName, indexUrl);
|
||||
});
|
||||
|
||||
document.addEventListener('keydown', event => {
|
||||
if (window.emanote.stork.searchShown && event.key === 'Escape') {
|
||||
window.emanote.stork.clearSearch();
|
||||
event.preventDefault();
|
||||
} else if ((event.key == 'k' || event.key == 'K') && (event.ctrlKey || event.metaKey)) {
|
||||
window.emanote.stork.toggleSearch();
|
||||
event.preventDefault();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// Override existing on Ema's hot-reload
|
||||
stork.register(indexName, indexUrl, { forceOverwrite: true });
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
window.emanote.stork.init();
|
||||
</script>
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<!-- DoNotFormat -->
|
||||
|
||||
|
||||
|
||||
<!-- DoNotFormat -->
|
||||
|
||||
<body class='bg-gray-400 overflow-y-scroll'>
|
||||
|
||||
<div class='container mx-auto'>
|
||||
|
||||
<nav id='breadcrumbs' class='w-full text-gray-700 md:hidden'>
|
||||
<div class='flex justify-left'>
|
||||
<div class='w-full px-2 py-2 bg-gray-50'>
|
||||
<ul class='flex flex-wrap text-lg'>
|
||||
<li class='inline-flex items-center'>
|
||||
|
||||
|
||||
<img style='width: 1rem;' src='favicon.svg' />
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
|
||||
<li class='inline-flex items-center'>
|
||||
<a class='px-1 font-bold' href=''>
|
||||
Home
|
||||
</a>
|
||||
<svg fill='currentColor' viewBox='0 0 20 20' class='w-auto h-5 text-gray-400'>
|
||||
<path fill-rule='evenodd' d='M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z' clip-rule='evenodd'></path>
|
||||
</svg>
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
<button class='inline px-2 py-1 bg-gray-50 outline-none cursor-pointer focus:outline-none' title='Search (Ctrl+K)' type='button' onclick='window.emanote.stork.toggleSearch()'>
|
||||
<svg xmlns='http://www.w3.org/2000/svg' style='width: 1rem;' class='hover:text-purple-700' f
|
||||
fill='none' viewBox='0 0 24 24' stroke='currentColor' stroke-width='2'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' d='M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z'></path>
|
||||
</svg>
|
||||
</button>
|
||||
<button class='inline px-2 py-1 text-white bg-purple-600 outline-none cursor-pointer focus:outline-none' title='Toggle sidebar' type='button' onclick="toggleHidden('sidebar')">
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4' fill='none' viewBox='0 0 24 24' stroke='currentColor'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 6h16M4 12h16M4 18h16'></path>
|
||||
</svg>
|
||||
</button>
|
||||
<script>
|
||||
function toggleHidden(elemId) {
|
||||
document.getElementById(elemId).classList.toggle("hidden");
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div id='container' class='flex flex-nowrap flex-col md:flex-row bg-gray-50 md:mt-8 md:shadow-2xl md:mb-8'>
|
||||
<!-- Sidebar column -->
|
||||
<nav id='sidebar' class='flex-shrink hidden leading-relaxed md:block md:sticky md:top-0 md:h-full md:w-48 xl:w-64'>
|
||||
<div class='px-2 py-2 text-gray-800'>
|
||||
<div id='indexing-links' class='flex flex-row float-right p-2 space-x-2 text-gray-500'>
|
||||
<a href='-/tags' title='View tags'>
|
||||
<svg style='width: 1rem;' class='hover:text-purple-700' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z'>
|
||||
</path>
|
||||
</svg>
|
||||
</a>
|
||||
<a href='-/all' title='Expand full tree'>
|
||||
<svg style='width: 1rem;' class='hover:text-purple-700' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8V4m0 0h4M4 4l5 5m11-1V4m0 0h-4m4 0l-5 5M4 16v4m0 0h4m-4 0l5-5m11 5l-5-5m5 5v-4m0 4h-4'>
|
||||
</path>
|
||||
</svg>
|
||||
</a>
|
||||
<a title='Search (Ctrl+K)' class='cursor-pointer' onclick='window.emanote.stork.toggleSearch()'>
|
||||
<svg xmlns='http://www.w3.org/2000/svg' style='width: 1rem;' class='hover:text-purple-700' f
|
||||
fill='none' viewBox='0 0 24 24' stroke='currentColor' stroke-width='2'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' d='M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z'></path>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div id='site-logo' class='pl-2'>
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
<a href='' title='Go to Home'>
|
||||
|
||||
|
||||
<!-- The style width attribute here is to prevent huge
|
||||
icon from displaying at those rare occasions when Tailwind
|
||||
hasn't kicked in immediately on page load
|
||||
-->
|
||||
<img style='width: 1rem;' class='transition transform hover:scale-110 hover:opacity-80' src='favicon.svg' />
|
||||
|
||||
|
||||
</a>
|
||||
<a class='font-bold truncate' title='Go to Home' href=''>
|
||||
Home
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='About' href='About'>
|
||||
About
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='3 children inside'>
|
||||
3
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Android' href='Android'>
|
||||
Android
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='1 children inside'>
|
||||
1
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Coding' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Logik für Dummies' href='Logik'>
|
||||
Logik für Dummies
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Opinions' href='Opinions'>
|
||||
Opinions
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='font-bold text-purple-600 hover:underline truncate' title='Todo' href='TODO'>
|
||||
Todo
|
||||
</a>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Uni' href='Uni'>
|
||||
Uni
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Unix' href='Unix'>
|
||||
Unix
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='1 children inside'>
|
||||
1
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- Main body column -->
|
||||
<div class='flex-1 w-full overflow-x-auto bg-white'>
|
||||
<main class='px-4 py-4'>
|
||||
<!-- DoNotFormat -->
|
||||
<!-- DoNotFormat -->
|
||||
|
||||
<nav id='uptree' class='flipped tree' style='transform-origin: 50%;'>
|
||||
<ul class='root'>
|
||||
<li>
|
||||
|
||||
<ul>
|
||||
|
||||
<li>
|
||||
|
||||
<div class='text-gray-900 forest-link'>
|
||||
<a href=''>
|
||||
Home
|
||||
</a>
|
||||
</div>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
<h1 class='flex items-end justify-center mb-4 p-3 bg-purple-100 text-5xl font-extrabold text-black rounded'>
|
||||
<a class='z-40 tracking-tighter '>
|
||||
Todo
|
||||
</a>
|
||||
</h1>
|
||||
<article class='overflow-auto'>
|
||||
<!-- What goes in this file will appear on top of note body-->
|
||||
|
||||
<p class='mb-3'>
|
||||
Todo List in backlinks below vvv
|
||||
</p>
|
||||
|
||||
|
||||
<!-- div class="flex items-center justify-center mt-2">
|
||||
<ema:metadata>
|
||||
<with var="template">
|
||||
<a class="text-gray-300 hover:text-${theme}-600 text-sm" title="Edit this page on GitHub"
|
||||
href="${value:editBaseUrl}/${ema:note:source-path}">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z" />
|
||||
</svg>
|
||||
</a>
|
||||
</with>
|
||||
</ema:metadata>
|
||||
</div -->
|
||||
</article>
|
||||
<div class='flex flex-col lg:flex-row lg:space-x-2'>
|
||||
|
||||
|
||||
<div class='flex-1 p-4 mt-8 bg-gray-100 rounded'>
|
||||
<header class='mb-2 text-xl font-semibold text-gray-500'>Links to this page</header>
|
||||
<ul class='space-y-1'>
|
||||
|
||||
<li>
|
||||
<a class='text-purple-600 mavenLinkBold hover:bg-purple-50' href='Coding/OpenAPI'>
|
||||
Openapi-generator
|
||||
</a>
|
||||
|
||||
<div class='mb-4 overflow-auto text-sm text-gray-500'>
|
||||
|
||||
<div class='pl-2 mt-2 border-l-2 border-purple-200 hover:border-purple-500'>
|
||||
<div><p><a href='TODO' class='text-gray-600 font-bold hover:bg-gray-50' data-wikilink-type='WikiLinkNormal'>Todo</a> Idee hinter einem API-Generator</p></div>
|
||||
</div>
|
||||
|
||||
<div class='pl-2 mt-2 border-l-2 border-purple-200 hover:border-purple-500'>
|
||||
<div><p><a href='TODO' class='text-gray-600 font-bold hover:bg-gray-50' data-wikilink-type='WikiLinkNormal'>Todo</a> Theorie und Praxis</p></div>
|
||||
</div>
|
||||
|
||||
<div class='pl-2 mt-2 border-l-2 border-purple-200 hover:border-purple-500'>
|
||||
<div><p><a href='TODO' class='text-gray-600 font-bold hover:bg-gray-50' data-wikilink-type='WikiLinkNormal'>Todo</a> Veraltet</p></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class='text-purple-600 mavenLinkBold hover:bg-purple-50' href='Opinions/Editors'>
|
||||
Editors
|
||||
</a>
|
||||
|
||||
<div class='mb-4 overflow-auto text-sm text-gray-500'>
|
||||
|
||||
<div class='pl-2 mt-2 border-l-2 border-purple-200 hover:border-purple-500'>
|
||||
<div><p><a href='TODO' class='text-gray-600 font-bold hover:bg-gray-50' data-wikilink-type='WikiLinkNormal'>Todo</a>: write more awesomesauce <span class='emoji' data-emoji='wink' style='font-family: emoji'>😉</span></p></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<section class='flex flex-wrap items-end justify-center my-4 space-x-2 space-y-2 font-mono text-sm'>
|
||||
|
||||
</section>
|
||||
|
||||
<!-- What goes in this file will at the very end of the main div -->
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<footer class='flex items-center justify-center mt-2 mb-8 space-x-4 text-center text-gray-800'>
|
||||
|
||||
<div>
|
||||
<a href='' title='Go to Home page'>
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-6 h-6 hover:text-purple-700' fill='none' viewBox='0 0 24 24' stroke='currentColor'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6'></path>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='-/all' title='View Index'>
|
||||
<svg class='w-6 h-6 hover:text-purple-700' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8V4m0 0h4M4 4l5 5m11-1V4m0 0h-4m4 0l-5 5M4 16v4m0 0h4m-4 0l5-5m11 5l-5-5m5 5v-4m0 4h-4'>
|
||||
</path>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.8.1.10'>
|
||||
<img class='w-6 h-6 hover:text-purple-700' src='_emanote-static/emanote-logo.svg' />
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='-/tags' title='View tags'>
|
||||
<svg class='w-6 h-6 hover:text-purple-700' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z'>
|
||||
</path>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='-/tasks' title='View tasks'>
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-6 h-6 hover:text-purple-700' fill='none' viewBox='0 0 24 24' stroke='currentColor'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z'></path>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
<div id='stork-search-container' class='hidden fixed w-screen h-screen inset-0 backdrop-filter backdrop-blur-sm'>
|
||||
<div class='fixed w-screen h-screen inset-0' onclick='window.emanote.stork.toggleSearch()'></div>
|
||||
|
||||
<div class='container mx-auto p-10 mt-10'>
|
||||
<div class='stork-wrapper-flat container mx-auto'>
|
||||
<input id='stork-search-input' data-stork='emanote-search' class='stork-input' placeholder='Search (Ctrl+K) ...' />
|
||||
<div data-stork='emanote-search-output' class='stork-output'></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
@ -47,37 +47,65 @@
|
||||
|
||||
|
||||
|
||||
<link href='tailwind.css?instanceId=ecadcd50-ecaf-4d6e-98ea-7932c3b3d351' rel='stylesheet' type='text/css' />
|
||||
<link href='tailwind.css?instanceId=1ec53b8c-7991-423c-8b17-b92e36792648' rel='stylesheet' type='text/css' />
|
||||
|
||||
<!-- Heist error element -->
|
||||
<style>
|
||||
/* Heist error element */
|
||||
strong.error {
|
||||
color: lightcoral;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
/* External link icon */
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"])::after {
|
||||
/* filter converts black to rgb(156,163,175) */
|
||||
filter: invert(71%) sepia(3%) saturate(904%) hue-rotate(179deg) brightness(92%) contrast(87%);
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"]):hover::after {
|
||||
/* filter converts black to rgb(175,85,99) */
|
||||
filter: invert(32%) sepia(10%) saturate(834%) hue-rotate(176deg) brightness(92%) contrast(88%);
|
||||
}
|
||||
|
||||
a[data-linkicon=""]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon=none]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon="external"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
a[data-linkicon="external"][href^="mailto:"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z' /%3E%3C/svg%3E");
|
||||
}
|
||||
</style>
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'MavenPro';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf) format("truetype");
|
||||
font-family: 'WorkSans';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf) format("truetype");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
/* font-variation-settings: 'wght'300; */
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
font-variation-settings: 'wght' 350;
|
||||
}
|
||||
|
||||
a.mavenLinkBold {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h1,
|
||||
@ -88,14 +116,27 @@
|
||||
h6,
|
||||
header,
|
||||
.header-font {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-variation-settings: 'wght' 300;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<link rel='stylesheet' href='_emanote-static/inverted-tree.css' />
|
||||
|
||||
<link rel='stylesheet' href='https://files.stork-search.net/releases/v1.5.0/flat.css' />
|
||||
<link rel='stylesheet' href='_emanote-static/stork/flat.css' />
|
||||
<!-- Custom Stork-search styling for Emanote -->
|
||||
<style>
|
||||
#stork-search-container {
|
||||
@ -109,7 +150,7 @@
|
||||
</style>
|
||||
|
||||
|
||||
<script src='https://files.stork-search.net/releases/v1.5.0/stork.js'></script>
|
||||
<script src='_emanote-static/stork/stork.js'></script>
|
||||
|
||||
|
||||
<script data-emanote-base-url='/'>
|
||||
@ -135,6 +176,7 @@
|
||||
const indexUrl = baseUrl + '-/stork.st';
|
||||
if (document.readyState !== 'complete') {
|
||||
window.addEventListener('load', function () {
|
||||
stork.initialize(baseUrl + '_emanote-static/stork/stork.wasm');
|
||||
stork.register(indexName, indexUrl);
|
||||
});
|
||||
|
||||
@ -358,13 +400,13 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Haskell' href='Haskell'>
|
||||
Haskell
|
||||
<a class='hover:underline truncate' title='Coding' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='5 children inside'>
|
||||
5
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
@ -421,6 +463,82 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Opinions' href='Opinions'>
|
||||
Opinions
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Todo' href='TODO'>
|
||||
Todo
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -602,36 +720,43 @@
|
||||
<!-- What goes in this file will appear on top of note body-->
|
||||
<nav>
|
||||
<div class='mb-8'>
|
||||
<header class='pb-2 mb-2 font-semibold text-gray-600'>
|
||||
<header data-nosnippet class='pb-2 mb-2 font-semibold text-gray-600'>
|
||||
Pages matching path './*'
|
||||
</header>
|
||||
<ul>
|
||||
|
||||
<div class='flex flex-wrap my-2'>
|
||||
<li>
|
||||
<div class='flex flex-wrap my-2'>
|
||||
|
||||
<span class='mr-2 text-right text-gray-600'>
|
||||
</span>
|
||||
<span data-nosnippet class='mr-2 text-right text-gray-600'>
|
||||
</span>
|
||||
|
||||
<a class='flex-1 text-purple-600 mavenLinkBold border-l-2 pl-2 hover:underline' href='Uni/Extracurricular'>
|
||||
Studium generale / University-Life
|
||||
</a>
|
||||
</div>
|
||||
<a class='flex-1 text-purple-600 mavenLinkBold border-l-2 pl-2 hover:underline' href='Uni/Extracurricular'>
|
||||
Studium generale / University-Life
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<div class='flex flex-wrap my-2'>
|
||||
<li>
|
||||
<div class='flex flex-wrap my-2'>
|
||||
|
||||
<span class='mr-2 text-right text-gray-600'>
|
||||
</span>
|
||||
<span data-nosnippet class='mr-2 text-right text-gray-600'>
|
||||
</span>
|
||||
|
||||
<a class='flex-1 text-purple-600 mavenLinkBold border-l-2 pl-2 hover:underline' href='Uni/Lernerfolg_an_der_Uni'>
|
||||
Wie lerne ich richtig an der Uni?
|
||||
</a>
|
||||
</div>
|
||||
<a class='flex-1 text-purple-600 mavenLinkBold border-l-2 pl-2 hover:underline' href='Uni/Lernerfolg_an_der_Uni'>
|
||||
Wie lerne ich richtig an der Uni?
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</nav><div class='text-gray-400 border-t-2 inline-block pt-0.5'>
|
||||
<p class='mb-3'>
|
||||
Note: To override the auto-generated content here, create a file named one of: <span class='font-mono text-sm'>Uni.md, Uni.org</span>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- div class="flex items-center justify-center mt-2">
|
||||
<ema:metadata>
|
||||
<with var="template">
|
||||
@ -677,7 +802,7 @@
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.7.3.0'>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.8.1.10'>
|
||||
<img class='w-6 h-6 hover:text-purple-700' src='_emanote-static/emanote-logo.svg' />
|
||||
</a>
|
||||
</div>
|
||||
@ -709,6 +834,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
@ -47,37 +47,65 @@
|
||||
|
||||
|
||||
|
||||
<link href='tailwind.css?instanceId=ecadcd50-ecaf-4d6e-98ea-7932c3b3d351' rel='stylesheet' type='text/css' />
|
||||
<link href='tailwind.css?instanceId=1ec53b8c-7991-423c-8b17-b92e36792648' rel='stylesheet' type='text/css' />
|
||||
|
||||
<!-- Heist error element -->
|
||||
<style>
|
||||
/* Heist error element */
|
||||
strong.error {
|
||||
color: lightcoral;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
/* External link icon */
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"])::after {
|
||||
/* filter converts black to rgb(156,163,175) */
|
||||
filter: invert(71%) sepia(3%) saturate(904%) hue-rotate(179deg) brightness(92%) contrast(87%);
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"]):hover::after {
|
||||
/* filter converts black to rgb(175,85,99) */
|
||||
filter: invert(32%) sepia(10%) saturate(834%) hue-rotate(176deg) brightness(92%) contrast(88%);
|
||||
}
|
||||
|
||||
a[data-linkicon=""]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon=none]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon="external"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
a[data-linkicon="external"][href^="mailto:"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z' /%3E%3C/svg%3E");
|
||||
}
|
||||
</style>
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'MavenPro';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf) format("truetype");
|
||||
font-family: 'WorkSans';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf) format("truetype");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
/* font-variation-settings: 'wght'300; */
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
font-variation-settings: 'wght' 350;
|
||||
}
|
||||
|
||||
a.mavenLinkBold {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h1,
|
||||
@ -88,14 +116,27 @@
|
||||
h6,
|
||||
header,
|
||||
.header-font {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-variation-settings: 'wght' 300;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<link rel='stylesheet' href='_emanote-static/inverted-tree.css' />
|
||||
|
||||
<link rel='stylesheet' href='https://files.stork-search.net/releases/v1.5.0/flat.css' />
|
||||
<link rel='stylesheet' href='_emanote-static/stork/flat.css' />
|
||||
<!-- Custom Stork-search styling for Emanote -->
|
||||
<style>
|
||||
#stork-search-container {
|
||||
@ -109,7 +150,7 @@
|
||||
</style>
|
||||
|
||||
|
||||
<script src='https://files.stork-search.net/releases/v1.5.0/stork.js'></script>
|
||||
<script src='_emanote-static/stork/stork.js'></script>
|
||||
|
||||
|
||||
<script data-emanote-base-url='/'>
|
||||
@ -135,6 +176,7 @@
|
||||
const indexUrl = baseUrl + '-/stork.st';
|
||||
if (document.readyState !== 'complete') {
|
||||
window.addEventListener('load', function () {
|
||||
stork.initialize(baseUrl + '_emanote-static/stork/stork.wasm');
|
||||
stork.register(indexName, indexUrl);
|
||||
});
|
||||
|
||||
@ -367,13 +409,13 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Haskell' href='Haskell'>
|
||||
Haskell
|
||||
<a class='hover:underline truncate' title='Coding' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='5 children inside'>
|
||||
5
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
@ -432,6 +474,82 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Opinions' href='Opinions'>
|
||||
Opinions
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Todo' href='TODO'>
|
||||
Todo
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
@ -692,15 +810,15 @@
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
<a href='https://ekvv.uni-bielefeld.de/kvv_publ/publ/vd?id=54004629' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Fortgeschrittene funktionale Programmierung in Haskell</a> (Haskell-Lecture)
|
||||
<a href='https://ekvv.uni-bielefeld.de/kvv_publ/publ/vd?id=54004629' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Fortgeschrittene funktionale Programmierung in Haskell</a> (Haskell-Lecture)
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
<a href='https://www.youtube.com/playlist?list=PLMqFm6rr-xOWhXGroUXzWx00FeaBNfbsa' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Lecture on YouTube</a>
|
||||
<a href='https://www.youtube.com/playlist?list=PLMqFm6rr-xOWhXGroUXzWx00FeaBNfbsa' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Lecture on YouTube</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='Haskell/FFPiH' class='text-purple-600 mavenLinkBold hover:underline' data-wikilink-type='WikiLinkBranch'>more details on the lecture</a>
|
||||
<a href='Coding/Haskell/FFPiH' class='text-purple-600 mavenLinkBold hover:underline' data-wikilink-type='WikiLinkBranch'>more details on the lecture</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
@ -712,11 +830,11 @@
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
<a href='https://ekvv.uni-bielefeld.de/kvv_publ/publ/vd?id=71172682' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Fortgeschrittene funktionale Programmierung in Haskell</a> (Haskell-Lecture)
|
||||
<a href='https://ekvv.uni-bielefeld.de/kvv_publ/publ/vd?id=71172682' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Fortgeschrittene funktionale Programmierung in Haskell</a> (Haskell-Lecture)
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
<a href='https://www.youtube.com/playlist?list=PLMqFm6rr-xOUEf2YjSxRn8BIhrdRIhZw6' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Lecture on YouTube</a> (differs from link above)
|
||||
<a href='https://www.youtube.com/playlist?list=PLMqFm6rr-xOUEf2YjSxRn8BIhrdRIhZw6' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Lecture on YouTube</a> (differs from link above)
|
||||
</li>
|
||||
|
||||
<li>
|
||||
@ -724,7 +842,7 @@
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='Haskell/FFPiH' class='text-purple-600 mavenLinkBold hover:underline' data-wikilink-type='WikiLinkBranch'>more details on the lecture</a>
|
||||
<a href='Coding/Haskell/FFPiH' class='text-purple-600 mavenLinkBold hover:underline' data-wikilink-type='WikiLinkBranch'>more details on the lecture</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
@ -736,11 +854,11 @@
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
<a href='https://ekvv.uni-bielefeld.de/kvv_publ/publ/vd?id=84763664' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Richtig Starten</a> (Start Right!)
|
||||
<a href='https://ekvv.uni-bielefeld.de/kvv_publ/publ/vd?id=84763664' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Richtig Starten</a> (Start Right!)
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='https://ekvv.uni-bielefeld.de/kvv_publ/publ/vd?id=79599350' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Tutor Introduction to Machine Learning</a> (Tutor in this Lecture)
|
||||
<a href='https://ekvv.uni-bielefeld.de/kvv_publ/publ/vd?id=79599350' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Tutor Introduction to Machine Learning</a> (Tutor in this Lecture)
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
@ -752,7 +870,7 @@
|
||||
</li>
|
||||
|
||||
<li>
|
||||
Remade and updated slides for <a href='https://ekvv.uni-bielefeld.de/kvv_publ/publ/vd?id=79016005' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Computergraphics-Lecture</a>
|
||||
Remade and updated slides for <a href='https://ekvv.uni-bielefeld.de/kvv_publ/publ/vd?id=79016005' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Computergraphics-Lecture</a>
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
@ -768,7 +886,7 @@
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
<a href='https://ekvv.uni-bielefeld.de/kvv_publ/publ/vd?id=94694136' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Fortgeschrittene funktionale Programmierung in Haskell</a> (Haskell-Lecture)
|
||||
<a href='https://ekvv.uni-bielefeld.de/kvv_publ/publ/vd?id=94694136' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Fortgeschrittene funktionale Programmierung in Haskell</a> (Haskell-Lecture)
|
||||
<ul class='my-3 ml-6 space-y-1 list-disc'>
|
||||
|
||||
<li>
|
||||
@ -780,7 +898,7 @@
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href='Haskell/FFPiH' class='text-purple-600 mavenLinkBold hover:underline' data-wikilink-type='WikiLinkBranch'>more details on the lecture</a>
|
||||
<a href='Coding/Haskell/FFPiH' class='text-purple-600 mavenLinkBold hover:underline' data-wikilink-type='WikiLinkBranch'>more details on the lecture</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
@ -789,6 +907,7 @@
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<!-- div class="flex items-center justify-center mt-2">
|
||||
<ema:metadata>
|
||||
<with var="template">
|
||||
@ -856,7 +975,7 @@
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.7.3.0'>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.8.1.10'>
|
||||
<img class='w-6 h-6 hover:text-purple-700' src='_emanote-static/emanote-logo.svg' />
|
||||
</a>
|
||||
</div>
|
||||
@ -888,6 +1007,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
@ -47,37 +47,65 @@
|
||||
|
||||
|
||||
|
||||
<link href='tailwind.css?instanceId=ecadcd50-ecaf-4d6e-98ea-7932c3b3d351' rel='stylesheet' type='text/css' />
|
||||
<link href='tailwind.css?instanceId=1ec53b8c-7991-423c-8b17-b92e36792648' rel='stylesheet' type='text/css' />
|
||||
|
||||
<!-- Heist error element -->
|
||||
<style>
|
||||
/* Heist error element */
|
||||
strong.error {
|
||||
color: lightcoral;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
/* External link icon */
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"])::after {
|
||||
/* filter converts black to rgb(156,163,175) */
|
||||
filter: invert(71%) sepia(3%) saturate(904%) hue-rotate(179deg) brightness(92%) contrast(87%);
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"]):hover::after {
|
||||
/* filter converts black to rgb(175,85,99) */
|
||||
filter: invert(32%) sepia(10%) saturate(834%) hue-rotate(176deg) brightness(92%) contrast(88%);
|
||||
}
|
||||
|
||||
a[data-linkicon=""]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon=none]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon="external"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
a[data-linkicon="external"][href^="mailto:"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z' /%3E%3C/svg%3E");
|
||||
}
|
||||
</style>
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'MavenPro';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf) format("truetype");
|
||||
font-family: 'WorkSans';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf) format("truetype");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
/* font-variation-settings: 'wght'300; */
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
font-variation-settings: 'wght' 350;
|
||||
}
|
||||
|
||||
a.mavenLinkBold {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h1,
|
||||
@ -88,14 +116,27 @@
|
||||
h6,
|
||||
header,
|
||||
.header-font {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-variation-settings: 'wght' 300;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<link rel='stylesheet' href='_emanote-static/inverted-tree.css' />
|
||||
|
||||
<link rel='stylesheet' href='https://files.stork-search.net/releases/v1.5.0/flat.css' />
|
||||
<link rel='stylesheet' href='_emanote-static/stork/flat.css' />
|
||||
<!-- Custom Stork-search styling for Emanote -->
|
||||
<style>
|
||||
#stork-search-container {
|
||||
@ -109,7 +150,7 @@
|
||||
</style>
|
||||
|
||||
|
||||
<script src='https://files.stork-search.net/releases/v1.5.0/stork.js'></script>
|
||||
<script src='_emanote-static/stork/stork.js'></script>
|
||||
|
||||
|
||||
<script data-emanote-base-url='/'>
|
||||
@ -135,6 +176,7 @@
|
||||
const indexUrl = baseUrl + '-/stork.st';
|
||||
if (document.readyState !== 'complete') {
|
||||
window.addEventListener('load', function () {
|
||||
stork.initialize(baseUrl + '_emanote-static/stork/stork.wasm');
|
||||
stork.register(indexName, indexUrl);
|
||||
});
|
||||
|
||||
@ -367,13 +409,13 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Haskell' href='Haskell'>
|
||||
Haskell
|
||||
<a class='hover:underline truncate' title='Coding' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='5 children inside'>
|
||||
5
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
@ -432,6 +474,82 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Opinions' href='Opinions'>
|
||||
Opinions
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Todo' href='TODO'>
|
||||
Todo
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
@ -636,11 +754,11 @@
|
||||
</p>
|
||||
<h2 id='etwas-lerntheorie' class='inline-block mt-6 mb-4 text-4xl font-bold text-gray-700 border-b-2'>Etwas Lerntheorie</h2>
|
||||
<p class='mb-3'>
|
||||
Es gibt einen sehr schönen <a href='https://yow.eventer.com/yow-2014-1222/stop-treading-water-learning-to-learn-by-edward-kmett-1750' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Talk</a> von Edwand Kmett in dem er über seine Erfahrungen berichtet. Kurzum: Man lernt durch stete Wiederholung. Und der beste Moment etwas zu wiederholen ist, kurz bevor man es vergisst. Das stimmt ziemlich genau mit meiner Erfahrung überein.
|
||||
Es gibt einen sehr schönen <a href='https://yow.eventer.com/yow-2014-1222/stop-treading-water-learning-to-learn-by-edward-kmett-1750' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Talk</a> von Edwand Kmett in dem er über seine Erfahrungen berichtet. Kurzum: Man lernt durch stete Wiederholung. Und der beste Moment etwas zu wiederholen ist, kurz bevor man es vergisst. Das stimmt ziemlich genau mit meiner Erfahrung überein.
|
||||
</p>
|
||||
<h3 id='auswendig-lernen' class='mt-6 mb-2 text-3xl font-bold text-gray-700'>Auswendig lernen</h3>
|
||||
<p class='mb-3'>
|
||||
Grade die oben genannte Theorie steht beim Auswendiglernen im Vordergrund. Wenn man etwas langfristig auswendig lernen will (Fremdsprachen, etc.), dann gibt es hierzu Software, die herausfindet, wann es der beste Zeitpunkt ist, dich wieder abzufragen: <a href='http://ankisrs.net/' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Anki</a> gibt es für jede Platform kostenlos (außer iPhone - hier 25$, weil Apple so viel Geld für das einstellen im AppStore haben will). Anki ist dazu gedacht, dass man zu jedem Thema einen Stapel hat (z.b. Klausurfragen, Sprachen, …) und jeden Tag lernt. Nach einiger Zeit wird die vorhersage der Lernzeit ziemlich genau. Anfangs beantwortet man noch viele Fragen täglich, aber je häufiger man die Antworten kennt, desto weiter hinten landen sie im Stapel. Schlussendlich kommt dieselbe Frage dann nur noch 1x/Monat oder noch seltener.
|
||||
Grade die oben genannte Theorie steht beim Auswendiglernen im Vordergrund. Wenn man etwas langfristig auswendig lernen will (Fremdsprachen, etc.), dann gibt es hierzu Software, die herausfindet, wann es der beste Zeitpunkt ist, dich wieder abzufragen: <a href='http://ankisrs.net/' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Anki</a> gibt es für jede Platform kostenlos (außer iPhone - hier 25$, weil Apple so viel Geld für das einstellen im AppStore haben will). Anki ist dazu gedacht, dass man zu jedem Thema einen Stapel hat (z.b. Klausurfragen, Sprachen, …) und jeden Tag lernt. Nach einiger Zeit wird die vorhersage der Lernzeit ziemlich genau. Anfangs beantwortet man noch viele Fragen täglich, aber je häufiger man die Antworten kennt, desto weiter hinten landen sie im Stapel. Schlussendlich kommt dieselbe Frage dann nur noch 1x/Monat oder noch seltener.
|
||||
</p>
|
||||
|
||||
<p class='mb-3'>
|
||||
@ -774,13 +892,14 @@
|
||||
</p>
|
||||
|
||||
<p class='mb-3'>
|
||||
Ein kleiner Hinweis hier noch auf das <a href='http://www.eurocentres.com/de/pr%C3%BCfungsangst-stipendium' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>Prüfungsangst-Stipendium</a>, dass einem eine Belohnung gibt, wenn man sich seinen Ängsten stellt und sie überwindet. :)
|
||||
Ein kleiner Hinweis hier noch auf das <a href='http://www.eurocentres.com/de/pr%C3%BCfungsangst-stipendium' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>Prüfungsangst-Stipendium</a>, dass einem eine Belohnung gibt, wenn man sich seinen Ängsten stellt und sie überwindet. :)
|
||||
</p>
|
||||
<h2 id='schlusswort' class='inline-block mt-6 mb-4 text-4xl font-bold text-gray-700 border-b-2'>Schlusswort</h2>
|
||||
<p class='mb-3'>
|
||||
Viel Erfolg bei euren Prüfungen. Falls euch dieser Artikel geholfen hat oder ihr noch Anregungen/Verbessenguswünsche habt, schreibt mir einfach unter <code class='py-0.5 px-0.5 bg-gray-100'>sdressel@techfak.uni-bi...</code>, ich werde die dann einbauen.
|
||||
</p>
|
||||
|
||||
|
||||
<!-- div class="flex items-center justify-center mt-2">
|
||||
<ema:metadata>
|
||||
<with var="template">
|
||||
@ -826,7 +945,7 @@
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.7.3.0'>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.8.1.10'>
|
||||
<img class='w-6 h-6 hover:text-purple-700' src='_emanote-static/emanote-logo.svg' />
|
||||
</a>
|
||||
</div>
|
||||
@ -858,6 +977,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
@ -47,37 +47,65 @@
|
||||
|
||||
|
||||
|
||||
<link href='tailwind.css?instanceId=ecadcd50-ecaf-4d6e-98ea-7932c3b3d351' rel='stylesheet' type='text/css' />
|
||||
<link href='tailwind.css?instanceId=1ec53b8c-7991-423c-8b17-b92e36792648' rel='stylesheet' type='text/css' />
|
||||
|
||||
<!-- Heist error element -->
|
||||
<style>
|
||||
/* Heist error element */
|
||||
strong.error {
|
||||
color: lightcoral;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
/* External link icon */
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"])::after {
|
||||
/* filter converts black to rgb(156,163,175) */
|
||||
filter: invert(71%) sepia(3%) saturate(904%) hue-rotate(179deg) brightness(92%) contrast(87%);
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"]):hover::after {
|
||||
/* filter converts black to rgb(175,85,99) */
|
||||
filter: invert(32%) sepia(10%) saturate(834%) hue-rotate(176deg) brightness(92%) contrast(88%);
|
||||
}
|
||||
|
||||
a[data-linkicon=""]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon=none]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon="external"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
a[data-linkicon="external"][href^="mailto:"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z' /%3E%3C/svg%3E");
|
||||
}
|
||||
</style>
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'MavenPro';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf) format("truetype");
|
||||
font-family: 'WorkSans';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf) format("truetype");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
/* font-variation-settings: 'wght'300; */
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
font-variation-settings: 'wght' 350;
|
||||
}
|
||||
|
||||
a.mavenLinkBold {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h1,
|
||||
@ -88,14 +116,27 @@
|
||||
h6,
|
||||
header,
|
||||
.header-font {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-variation-settings: 'wght' 300;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<link rel='stylesheet' href='_emanote-static/inverted-tree.css' />
|
||||
|
||||
<link rel='stylesheet' href='https://files.stork-search.net/releases/v1.5.0/flat.css' />
|
||||
<link rel='stylesheet' href='_emanote-static/stork/flat.css' />
|
||||
<!-- Custom Stork-search styling for Emanote -->
|
||||
<style>
|
||||
#stork-search-container {
|
||||
@ -109,7 +150,7 @@
|
||||
</style>
|
||||
|
||||
|
||||
<script src='https://files.stork-search.net/releases/v1.5.0/stork.js'></script>
|
||||
<script src='_emanote-static/stork/stork.js'></script>
|
||||
|
||||
|
||||
<script data-emanote-base-url='/'>
|
||||
@ -135,6 +176,7 @@
|
||||
const indexUrl = baseUrl + '-/stork.st';
|
||||
if (document.readyState !== 'complete') {
|
||||
window.addEventListener('load', function () {
|
||||
stork.initialize(baseUrl + '_emanote-static/stork/stork.wasm');
|
||||
stork.register(indexName, indexUrl);
|
||||
});
|
||||
|
||||
@ -358,13 +400,13 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Haskell' href='Haskell'>
|
||||
Haskell
|
||||
<a class='hover:underline truncate' title='Coding' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='5 children inside'>
|
||||
5
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
@ -423,6 +465,82 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Opinions' href='Opinions'>
|
||||
Opinions
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Todo' href='TODO'>
|
||||
Todo
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -565,26 +683,31 @@
|
||||
<!-- What goes in this file will appear on top of note body-->
|
||||
<nav>
|
||||
<div class='mb-8'>
|
||||
<header class='pb-2 mb-2 font-semibold text-gray-600'>
|
||||
<header data-nosnippet class='pb-2 mb-2 font-semibold text-gray-600'>
|
||||
Pages matching path './*'
|
||||
</header>
|
||||
<ul>
|
||||
|
||||
<div class='flex flex-wrap my-2'>
|
||||
<li>
|
||||
<div class='flex flex-wrap my-2'>
|
||||
|
||||
<span class='mr-2 text-right text-gray-600'>
|
||||
</span>
|
||||
<span data-nosnippet class='mr-2 text-right text-gray-600'>
|
||||
</span>
|
||||
|
||||
<a class='flex-1 text-purple-600 mavenLinkBold border-l-2 pl-2 hover:underline' href='Unix/SSH-Filter'>
|
||||
SSH-Filter
|
||||
</a>
|
||||
</div>
|
||||
<a class='flex-1 text-purple-600 mavenLinkBold border-l-2 pl-2 hover:underline' href='Unix/SSH-Filter'>
|
||||
SSH-Filter
|
||||
</a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</nav><div class='text-gray-400 border-t-2 inline-block pt-0.5'>
|
||||
<p class='mb-3'>
|
||||
Note: To override the auto-generated content here, create a file named one of: <span class='font-mono text-sm'>Unix.md, Unix.org</span>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- div class="flex items-center justify-center mt-2">
|
||||
<ema:metadata>
|
||||
<with var="template">
|
||||
@ -630,7 +753,7 @@
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.7.3.0'>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.8.1.10'>
|
||||
<img class='w-6 h-6 hover:text-purple-700' src='_emanote-static/emanote-logo.svg' />
|
||||
</a>
|
||||
</div>
|
||||
@ -662,6 +785,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
@ -47,37 +47,65 @@
|
||||
|
||||
|
||||
|
||||
<link href='tailwind.css?instanceId=ecadcd50-ecaf-4d6e-98ea-7932c3b3d351' rel='stylesheet' type='text/css' />
|
||||
<link href='tailwind.css?instanceId=1ec53b8c-7991-423c-8b17-b92e36792648' rel='stylesheet' type='text/css' />
|
||||
|
||||
<!-- Heist error element -->
|
||||
<style>
|
||||
/* Heist error element */
|
||||
strong.error {
|
||||
color: lightcoral;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
/* External link icon */
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"])::after {
|
||||
/* filter converts black to rgb(156,163,175) */
|
||||
filter: invert(71%) sepia(3%) saturate(904%) hue-rotate(179deg) brightness(92%) contrast(87%);
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"]):hover::after {
|
||||
/* filter converts black to rgb(175,85,99) */
|
||||
filter: invert(32%) sepia(10%) saturate(834%) hue-rotate(176deg) brightness(92%) contrast(88%);
|
||||
}
|
||||
|
||||
a[data-linkicon=""]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon=none]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon="external"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
a[data-linkicon="external"][href^="mailto:"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z' /%3E%3C/svg%3E");
|
||||
}
|
||||
</style>
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'MavenPro';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf) format("truetype");
|
||||
font-family: 'WorkSans';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf) format("truetype");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
/* font-variation-settings: 'wght'300; */
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
font-variation-settings: 'wght' 350;
|
||||
}
|
||||
|
||||
a.mavenLinkBold {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h1,
|
||||
@ -88,14 +116,27 @@
|
||||
h6,
|
||||
header,
|
||||
.header-font {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-variation-settings: 'wght' 300;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<link rel='stylesheet' href='_emanote-static/inverted-tree.css' />
|
||||
|
||||
<link rel='stylesheet' href='https://files.stork-search.net/releases/v1.5.0/flat.css' />
|
||||
<link rel='stylesheet' href='_emanote-static/stork/flat.css' />
|
||||
<!-- Custom Stork-search styling for Emanote -->
|
||||
<style>
|
||||
#stork-search-container {
|
||||
@ -109,7 +150,7 @@
|
||||
</style>
|
||||
|
||||
|
||||
<script src='https://files.stork-search.net/releases/v1.5.0/stork.js'></script>
|
||||
<script src='_emanote-static/stork/stork.js'></script>
|
||||
|
||||
|
||||
<script data-emanote-base-url='/'>
|
||||
@ -135,6 +176,7 @@
|
||||
const indexUrl = baseUrl + '-/stork.st';
|
||||
if (document.readyState !== 'complete') {
|
||||
window.addEventListener('load', function () {
|
||||
stork.initialize(baseUrl + '_emanote-static/stork/stork.wasm');
|
||||
stork.register(indexName, indexUrl);
|
||||
});
|
||||
|
||||
@ -367,13 +409,13 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Haskell' href='Haskell'>
|
||||
Haskell
|
||||
<a class='hover:underline truncate' title='Coding' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='5 children inside'>
|
||||
5
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
@ -432,6 +474,82 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Opinions' href='Opinions'>
|
||||
Opinions
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Todo' href='TODO'>
|
||||
Todo
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -633,9 +751,10 @@ else
|
||||
exit 1
|
||||
fi</code></pre></div>
|
||||
<p class='mb-3'>
|
||||
Installation of geoiplookup from <a href='https://wiki.ubuntuusers.de/geoiplookup/' class='text-purple-600 hover:underline' target='_blank' rel='noopener'>ubuntuwiki</a>
|
||||
Installation of geoiplookup from <a href='https://wiki.ubuntuusers.de/geoiplookup/' class='text-purple-600 hover:underline' data-linkicon='external' target='_blank' rel='noopener'>ubuntuwiki</a>
|
||||
</p>
|
||||
|
||||
|
||||
<!-- div class="flex items-center justify-center mt-2">
|
||||
<ema:metadata>
|
||||
<with var="template">
|
||||
@ -681,7 +800,7 @@ fi</code></pre></div>
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.7.3.0'>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.8.1.10'>
|
||||
<img class='w-6 h-6 hover:text-purple-700' src='_emanote-static/emanote-logo.svg' />
|
||||
</a>
|
||||
</div>
|
||||
@ -713,6 +832,9 @@ fi</code></pre></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -12,7 +12,7 @@ body .tree.flipped {
|
||||
body .tree {
|
||||
overflow: auto;
|
||||
/* See more-head.tpl */
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
font-variation-settings: 'wght' 475;
|
||||
|
||||
font-size: 0.8em;
|
||||
|
191
static_gen/_emanote-static/stork/flat.css
Normal file
191
static_gen/_emanote-static/stork/flat.css
Normal file
@ -0,0 +1,191 @@
|
||||
.stork-wrapper-flat {
|
||||
position: relative;
|
||||
font-family: inherit;
|
||||
box-sizing: border-box;
|
||||
font-size: 1em;
|
||||
|
||||
--stork-blue-2: #a5d8ff;
|
||||
--stork-blue-3: #74c0fc;
|
||||
--stork-blue-4: #4dabf7;
|
||||
--stork-blue-5: #339af0;
|
||||
--stork-blue-7: #1c7ed6;
|
||||
--stork-gray-8: #343a40;
|
||||
--stork-gray-9: #212529;
|
||||
--stork-yellow-2: #ffec99;
|
||||
|
||||
--stork-border-color: hsl(0, 0%, 80%);
|
||||
--stork-background-color: hsla(0, 0%, 97%);
|
||||
--stork-text-color: var(--stork-gray-9);
|
||||
|
||||
--stork-input-height: 2.4em;
|
||||
}
|
||||
|
||||
.stork-wrapper-flat *,
|
||||
.stork-wrapper-flat *:before,
|
||||
.stork-wrapper-flat *:after {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.stork-wrapper-flat .stork-input {
|
||||
width: 100%;
|
||||
height: var(--stork-input-height);
|
||||
font-size: 1em;
|
||||
padding: 0.4em 0.8em;
|
||||
position: relative;
|
||||
border: 2px solid var(--stork-border-color);
|
||||
border-radius: calc(var(--stork-input-height) / 2);
|
||||
background-color: var(--stork-background-color);
|
||||
color: var(--stork-text-color);
|
||||
font-family: inherit;
|
||||
}
|
||||
|
||||
.stork-wrapper-flat .stork-input:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.stork-wrapper-flat .stork-progress {
|
||||
position: absolute;
|
||||
display: block;
|
||||
content: "";
|
||||
bottom: 1px;
|
||||
background-color: var(--stork-blue-5);
|
||||
box-shadow: 0 0 8px var(--stork-blue-4);
|
||||
height: 1px;
|
||||
transition: width 0.25s ease, opacity 0.4s ease 0.4s;
|
||||
margin-left: calc(var(--stork-input-height) / 2);
|
||||
max-width: calc(100% - var(--stork-input-height));
|
||||
}
|
||||
|
||||
.stork-wrapper-flat .stork-output {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
margin-top: 0.5em;
|
||||
border-radius: 6px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
z-index: 100;
|
||||
color: var(--stork-text-color);
|
||||
font-weight: 400;
|
||||
font-family: inherit;
|
||||
}
|
||||
|
||||
.stork-wrapper-flat .stork-attribution a:link,
|
||||
.stork-wrapper-flat .stork-attribution a:visited {
|
||||
color: var(--stork-blue-7);
|
||||
}
|
||||
|
||||
.stork-wrapper-flat .stork-output-visible {
|
||||
border: 2px solid var(--stork-border-color);
|
||||
background: var(--stork-background-color);
|
||||
}
|
||||
|
||||
.stork-wrapper-flat .stork-message {
|
||||
width: 100%;
|
||||
padding: 0.5em 1em;
|
||||
color: var(--stork-text-color);
|
||||
}
|
||||
|
||||
.stork-wrapper-flat .stork-attribution {
|
||||
width: 100%;
|
||||
padding: 0.5em 1em;
|
||||
font-size: 0.8em;
|
||||
color: var(--stork-text-color);
|
||||
}
|
||||
|
||||
.stork-wrapper-flat .stork-results {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
list-style-type: none;
|
||||
max-height: 25em;
|
||||
overflow-y: scroll;
|
||||
border-top: 1px solid var(--stork-border-color);
|
||||
border-bottom: 1px solid var(--stork-border-color);
|
||||
}
|
||||
|
||||
.stork-wrapper-flat .stork-result:not(:last-child) {
|
||||
border-bottom: 1px solid var(--stork-border-color);
|
||||
}
|
||||
|
||||
.stork-wrapper-flat .stork-result.selected {
|
||||
background: var(--stork-blue-2);
|
||||
}
|
||||
|
||||
.stork-wrapper-flat .stork-result a:link {
|
||||
padding: 1em;
|
||||
display: block;
|
||||
color: currentcolor;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.stork-wrapper-flat .stork-result p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.stork-wrapper-flat .stork-title {
|
||||
font-weight: bold;
|
||||
font-size: 0.95em;
|
||||
margin: 0;
|
||||
color: var(--stork-text-color);
|
||||
|
||||
/* Flexbox container for the title and the score, when debugging */
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.stork-wrapper-flat .stork-excerpt-container {
|
||||
margin-top: 0.75em;
|
||||
}
|
||||
|
||||
.stork-wrapper-flat .stork-excerpt {
|
||||
font-size: 0.8em;
|
||||
line-height: 1;
|
||||
margin: 0;
|
||||
color: var(--stork-gray-8);
|
||||
|
||||
/* Flexbox container for the title and the score, when debugging */
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.stork-wrapper-flat .stork-excerpt:not(:last-of-type) {
|
||||
margin-bottom: 0.6em;
|
||||
}
|
||||
|
||||
.stork-wrapper-flat .stork-highlight {
|
||||
background-color: var(--stork-yellow-2);
|
||||
padding: 0 0.1em;
|
||||
}
|
||||
|
||||
.stork-wrapper-flat .stork-error {
|
||||
outline: 2px solid #c92a2a;
|
||||
}
|
||||
|
||||
.stork-wrapper-flat .stork-close-button {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
margin: 0.5em 0.5em;
|
||||
height: 1.4em;
|
||||
width: 1.4em;
|
||||
padding: 0px;
|
||||
background: hsl(0, 0%, 85%);
|
||||
border: 1px solid hsla(0, 0%, 70%);
|
||||
font-size: 1em;
|
||||
color: hsl(0, 0%, 50%);
|
||||
border-radius: 50%;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.stork-wrapper-flat .stork-close-button svg {
|
||||
width: 11px;
|
||||
height: 11px;
|
||||
}
|
||||
|
||||
.stork-wrapper-flat .stork-close-button:hover {
|
||||
background: hsla(0, 0%, 78%);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.stork-wrapper-flat .stork-close-button:active {
|
||||
background: hsla(0, 0%, 65%);
|
||||
}
|
2
static_gen/_emanote-static/stork/stork.js
Normal file
2
static_gen/_emanote-static/stork/stork.js
Normal file
File diff suppressed because one or more lines are too long
BIN
static_gen/_emanote-static/stork/stork.wasm
Normal file
BIN
static_gen/_emanote-static/stork/stork.wasm
Normal file
Binary file not shown.
@ -47,37 +47,65 @@
|
||||
|
||||
|
||||
|
||||
<link href='tailwind.css?instanceId=ecadcd50-ecaf-4d6e-98ea-7932c3b3d351' rel='stylesheet' type='text/css' />
|
||||
<link href='tailwind.css?instanceId=1ec53b8c-7991-423c-8b17-b92e36792648' rel='stylesheet' type='text/css' />
|
||||
|
||||
<!-- Heist error element -->
|
||||
<style>
|
||||
/* Heist error element */
|
||||
strong.error {
|
||||
color: lightcoral;
|
||||
font-size: 90%;
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
/* External link icon */
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"])::after {
|
||||
/* filter converts black to rgb(156,163,175) */
|
||||
filter: invert(71%) sepia(3%) saturate(904%) hue-rotate(179deg) brightness(92%) contrast(87%);
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
a[data-linkicon]:not([data-linkicon=""]):not([data-linkicon="none"]):hover::after {
|
||||
/* filter converts black to rgb(175,85,99) */
|
||||
filter: invert(32%) sepia(10%) saturate(834%) hue-rotate(176deg) brightness(92%) contrast(88%);
|
||||
}
|
||||
|
||||
a[data-linkicon=""]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon=none]::after {
|
||||
content: ""
|
||||
}
|
||||
|
||||
a[data-linkicon="external"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14' /%3E%3C/svg%3E");
|
||||
}
|
||||
|
||||
a[data-linkicon="external"][href^="mailto:"]::after {
|
||||
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='1em' fill='none' viewBox='0 0 24 24' stroke='black' stroke-width='2'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z' /%3E%3C/svg%3E");
|
||||
}
|
||||
</style>
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
<!-- What goes in this file will appear on near the end of <head>--><link rel='preload' href='_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf' as='font' type='font/ttf' crossorigin />
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'MavenPro';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Maven_Pro/MavenPro-VariableFont_wght.ttf) format("truetype");
|
||||
font-family: 'WorkSans';
|
||||
/* FIXME: This ought to be: ${ema:emanoteStaticLayerUrl}/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf */
|
||||
src: url(_emanote-static/fonts/Work_Sans/WorkSans-VariableFont_wght.ttf) format("truetype");
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
/* font-variation-settings: 'wght'300; */
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
font-variation-settings: 'wght' 350;
|
||||
}
|
||||
|
||||
a.mavenLinkBold {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
strong {
|
||||
font-variation-settings: 'wght'500;
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h1,
|
||||
@ -88,14 +116,27 @@
|
||||
h6,
|
||||
header,
|
||||
.header-font {
|
||||
font-family: 'MavenPro', sans-serif;
|
||||
font-family: 'WorkSans', sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-variation-settings: 'wght' 500;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-variation-settings: 'wght' 400;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-variation-settings: 'wght' 300;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
<link rel='stylesheet' href='_emanote-static/inverted-tree.css' />
|
||||
|
||||
<link rel='stylesheet' href='https://files.stork-search.net/releases/v1.5.0/flat.css' />
|
||||
<link rel='stylesheet' href='_emanote-static/stork/flat.css' />
|
||||
<!-- Custom Stork-search styling for Emanote -->
|
||||
<style>
|
||||
#stork-search-container {
|
||||
@ -109,7 +150,7 @@
|
||||
</style>
|
||||
|
||||
|
||||
<script src='https://files.stork-search.net/releases/v1.5.0/stork.js'></script>
|
||||
<script src='_emanote-static/stork/stork.js'></script>
|
||||
|
||||
|
||||
<script data-emanote-base-url='/'>
|
||||
@ -135,6 +176,7 @@
|
||||
const indexUrl = baseUrl + '-/stork.st';
|
||||
if (document.readyState !== 'complete') {
|
||||
window.addEventListener('load', function () {
|
||||
stork.initialize(baseUrl + '_emanote-static/stork/stork.wasm');
|
||||
stork.register(indexName, indexUrl);
|
||||
});
|
||||
|
||||
@ -347,13 +389,13 @@
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Haskell' href='Haskell'>
|
||||
Haskell
|
||||
<a class='hover:underline truncate' title='Coding' href='Coding'>
|
||||
Coding
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='5 children inside'>
|
||||
5
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
@ -412,6 +454,82 @@
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg xmlns='http://www.w3.org/2000/svg' class='w-4 h-4 flex-shrink-0 inline text-gray-500' viewBox='0 0 20 20' fill='currentColor'>
|
||||
<path d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z'></path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Opinions' href='Opinions'>
|
||||
Opinions
|
||||
</a>
|
||||
|
||||
|
||||
<span class='text-gray-300' title='2 children inside'>
|
||||
2
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
<div class='flex items-center my-2 space-x-2 justify-left'>
|
||||
|
||||
|
||||
<svg class='w-4 h-4 flex-shrink-0 inline' fill='none' stroke='currentColor' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'>
|
||||
<path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z'>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
|
||||
<a class='hover:underline truncate' title='Todo' href='TODO'>
|
||||
Todo
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Node's children forest, displayed only on active trees
|
||||
TODO: Use <details> to toggle visibility?
|
||||
-->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Variable bindings for this tree-->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- Rendering of this tree -->
|
||||
<div class='pl-2'>
|
||||
<!-- Node's rootLabel-->
|
||||
@ -513,6 +631,7 @@
|
||||
Keine Garantie auf Richtigkeit oder Trollfreiheit <span class='emoji' data-emoji='grin' style='font-family: emoji'>😁</span>
|
||||
</p>
|
||||
|
||||
|
||||
<!-- div class="flex items-center justify-center mt-2">
|
||||
<ema:metadata>
|
||||
<with var="template">
|
||||
@ -558,7 +677,7 @@
|
||||
</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.7.3.0'>
|
||||
<a href='https://emanote.srid.ca' target='_blank' title='Generated by Emanote 0.8.1.10'>
|
||||
<img class='w-6 h-6 hover:text-purple-700' src='_emanote-static/emanote-logo.svg' />
|
||||
</a>
|
||||
</div>
|
||||
@ -590,6 +709,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user