Compare commits

...

11 Commits

Author SHA1 Message Date
Jan Meyer
92379f9480 chore: ignore css snippets and workspace.json 2026-04-16 11:49:48 +02:00
Jan Meyer
ec94b4ae3a vault backup: 2026-04-16 11:48:52 2026-04-16 11:48:52 +02:00
Jan Meyer
de10a87bd5 chore: manual sync 2026-04-16 11:47:56 +02:00
Jan Meyer
477e49c6f2 vault backup: 2026-04-16 09:11:26 2026-04-16 11:47:56 +02:00
Jan Meyer
aa169ffad0 vault backup: 2026-04-16 08:49:27 2026-04-16 11:47:56 +02:00
Jan Meyer
93f3c11b60 vault backup: 2026-04-16 08:46:37 2026-04-16 11:47:56 +02:00
Jan Meyer
78ea2a30c1 vault backup: 2026-04-16 08:40:12 2026-04-16 11:47:56 +02:00
Jan Meyer
0d4f07c5bc vault backup: 2026-04-16 08:33:48 2026-04-16 11:47:56 +02:00
Jan Meyer
9db4f43b39 vault backup: 2026-04-16 08:23:41 2026-04-16 11:47:45 +02:00
Jan Meyer
1194d23d6c vault backup: 2026-04-16 08:03:39 2026-04-16 11:47:45 +02:00
Jan Meyer
ca7771544d vault backup: 2026-04-16 08:01:08 2026-04-16 11:47:34 +02:00
15 changed files with 15080 additions and 306 deletions

2
.gitignore vendored
View File

@@ -1 +1,3 @@
.trash/
.obsidian/snippets/
.obsidian/workspace.json

View File

@@ -10,5 +10,6 @@
"darlal-switcher-plus",
"dataview",
"obsidian-vimrc-support",
"emoji-shortcodes"
"emoji-shortcodes",
"execute-code"
]

205
.obsidian/plugins/execute-code/data.json vendored Normal file
View File

@@ -0,0 +1,205 @@
{
"releaseNote2_1_0wasShowed": true,
"persistentOuput": false,
"timeout": 10000,
"allowInput": true,
"wslMode": false,
"shellWSLMode": false,
"onlyCurrentBlock": false,
"nodePath": "node",
"nodeArgs": "",
"jsFileExtension": "js",
"jsInject": "",
"tsPath": "ts-node",
"tsArgs": "",
"tsInject": "",
"latexCompilerPath": "lualatex",
"latexCompilerArgs": "-interaction=nonstopmode",
"latexDoFilter": true,
"latexTexfotPath": "texfot",
"latexTexfotArgs": "--quiet",
"latexDocumentclass": "article",
"latexAdaptFont": "obsidian",
"latexKeepLog": false,
"latexSubprocessesUseShell": false,
"latexMaxFigures": 10,
"latexFigureTitlePattern": "[^\\n][^%`]*\\\\title\\s*\\{(?<name>[^\\}]*)\\}",
"latexDoCrop": false,
"latexCropPath": "pdfcrop",
"latexCropArgs": "--quiet",
"latexCropNoStandalone": true,
"latexCropNoPagenum": true,
"latexSaveSvg": "poppler",
"latexSvgPath": "pdftocairo",
"latexSvgArgs": "-svg",
"latexInkscapePath": "inkscape",
"latexInkscapeArgs": "--pages=all --export-plain-svg",
"latexSavePdf": true,
"latexSavePng": false,
"latexPngPath": "pdftocairo",
"latexPngArgs": "-singlefile -png",
"latexOutputEmbeddings": true,
"latexInvertFigures": true,
"latexCenterFigures": true,
"latexInject": "",
"leanPath": "lean",
"leanArgs": "",
"leanInject": "",
"luaPath": "lua",
"luaArgs": "",
"luaFileExtension": "lua",
"luaInject": "",
"dartPath": "dart",
"dartArgs": "",
"dartFileExtension": "dart",
"dartInject": "",
"csPath": "dotnet-script",
"csArgs": "",
"csFileExtension": "csx",
"csInject": "",
"pythonPath": "python",
"pythonArgs": "",
"pythonEmbedPlots": true,
"pythonFileExtension": "py",
"pythonInject": "",
"shellPath": "bash",
"shellArgs": "",
"shellFileExtension": "sh",
"shellInject": "",
"batchPath": "call",
"batchArgs": "",
"batchFileExtension": "bat",
"batchInject": "",
"groovyPath": "groovy",
"groovyArgs": "",
"groovyFileExtension": "groovy",
"groovyInject": "",
"golangPath": "go",
"golangArgs": "run",
"golangFileExtension": "go",
"goInject": "",
"javaPath": "java",
"javaArgs": "-ea",
"javaFileExtension": "java",
"javaInject": "",
"maxPrologAnswers": 15,
"prologInject": "",
"powershellPath": "powershell",
"powershellArgs": "-file",
"powershellFileExtension": "ps1",
"powershellInject": "$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding",
"powershellEncoding": "latin1",
"cargoPath": "cargo",
"cargoEvalArgs": "",
"rustInject": "",
"cppRunner": "cling",
"cppFileExtension": "cpp",
"cppInject": "",
"cppArgs": "",
"cppUseMain": false,
"clingPath": "cling",
"clingArgs": "",
"clingStd": "c++17",
"rustFileExtension": "rs",
"RPath": "Rscript",
"RArgs": "",
"REmbedPlots": true,
"RFileExtension": "R",
"rInject": "",
"kotlinPath": "kotlinc",
"kotlinArgs": "-script",
"kotlinFileExtension": "kts",
"kotlinInject": "",
"swiftPath": "swift",
"swiftArgs": "",
"swiftFileExtension": "swift",
"swiftInject": "",
"runghcPath": "runghc",
"ghcPath": "ghc",
"ghciPath": "ghci",
"useGhci": false,
"haskellInject": "",
"mathematicaPath": "wolframscript",
"mathematicaArgs": "-file",
"mathematicaFileExtension": "wls",
"mathematicaInject": "",
"scalaPath": "scala",
"scalaArgs": "",
"scalaFileExtension": "scala",
"scalaInject": "",
"racketPath": "racket",
"racketArgs": "",
"racketFileExtension": "rkt",
"racketInject": "#lang racket",
"fsharpPath": "dotnet",
"fsharpArgs": "fsi",
"fsharpInject": "",
"fsharpFileExtension": "fsx",
"cArgs": "",
"cUseMain": true,
"cInject": "",
"rubyPath": "ruby",
"rubyArgs": "",
"rubyFileExtension": "rb",
"rubyInject": "",
"sqlPath": "psql",
"sqlArgs": "-d <database> -U <user> -f",
"sqlInject": "",
"octavePath": "octave",
"octaveArgs": "-q",
"octaveFileExtension": "m",
"octaveInject": "figure('visible','off') # Necessary to embed plots",
"maximaPath": "maxima",
"maximaArgs": "-qb",
"maximaFileExtension": "mx",
"maximaInject": "",
"applescriptPath": "osascript",
"applescriptArgs": "",
"applescriptFileExtension": "scpt",
"applescriptInject": "",
"zigPath": "zig",
"zigArgs": "run",
"zigInject": "",
"ocamlPath": "ocaml",
"ocamlArgs": "",
"ocamlInject": "",
"phpPath": "php",
"phpArgs": "",
"phpFileExtension": "php",
"phpInject": "",
"jsInteractive": true,
"tsInteractive": false,
"csInteractive": false,
"latexInteractive": false,
"leanInteractive": false,
"luaInteractive": false,
"dartInteractive": false,
"pythonInteractive": true,
"cppInteractive": false,
"prologInteractive": false,
"shellInteractive": false,
"batchInteractive": false,
"bashInteractive": false,
"groovyInteractive": false,
"rInteractive": false,
"goInteractive": false,
"rustInteractive": false,
"javaInteractive": false,
"powershellInteractive": false,
"kotlinInteractive": false,
"swiftInteractive": false,
"mathematicaInteractive": false,
"haskellInteractive": false,
"scalaInteractive": false,
"fsharpInteractive": false,
"cInteractive": false,
"racketInteractive": false,
"rubyInteractive": false,
"sqlInteractive": false,
"octaveInteractive": false,
"maximaInteractive": false,
"applescriptInteractive": false,
"zigInteractive": false,
"ocamlInteractive": false,
"phpInteractive": false
}

14220
.obsidian/plugins/execute-code/main.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,10 @@
{
"id": "execute-code",
"name": "Execute Code",
"version": "2.1.2",
"minAppVersion": "1.7.2",
"description": "Allows you to execute code snippets within a note. Support C, C++, Python, R, JavaScript, TypeScript, LaTeX, SQL, and many more.",
"author": "twibiral",
"authorUrl": "https://www.github.com/twibiral",
"isDesktopOnly": true
}

View File

@@ -0,0 +1,276 @@
/* @settings
name: Execute Code Settings
id: obsidian-execute-code
settings:
-
id: color-section-title
title: Color Settings
type: heading
level: 3
-
id: use-custom-output-color
title: Custom Code Output Color
description: Use a custom color for the output of code blocks
type: class-toggle
default: false
-
id: code-output-text-color
title: Output Text Color
type: variable-color
format: hex
opacity: false
default: '#FFFFFF'
-
id: use-custom-error-color
title: Custom Code Error Color
description: Use a custom color for the error output of code blocks
type: class-toggle
default: false
-
id: code-error-text-color
title: Error Text Color
type: variable-color
format: hex
opacity: false
default: '#FF0000'
*/
button.run-code-button {
display: none;
color: var(--text-muted);
position: absolute;
bottom: 0;
right: 0;
margin: 5px;
padding: 5px 20px 5px 20px;
z-index: 100;
}
button.clear-button {
display: none;
color: var(--text-muted);
position: absolute;
bottom: 0;
left: 0;
margin: 5px;
padding: 5px 20px 5px 20px;
z-index: 100;
}
pre:hover .run-code-button,
pre:hover .clear-button {
display: block;
}
pre:hover .run-button-disabled,
pre:hover .clear-button-disabled {
display: none;
}
.run-button-disabled,
.clear-button-disabled {
display: none;
}
pre:hover code.language-output {
margin-bottom: 28px;
}
:not(.use-custom-output-color) code.language-output span.stdout {
color: var(--text-muted) !important;
}
.use-custom-output-color code.language-output span.stdout {
color: var(--code-output-text-color) !important;
}
:not(.use-custom-error-color) code.language-output span.stderr {
color: red !important;
}
.use-custom-error-color code.language-output span.stderr {
color: var(--code-error-text-color) !important;
}
code.language-output hr {
margin: 0 0 1em;
}
.settings-code-input-box textarea,
.settings-code-input-box input {
min-width: 400px;
min-height: 100px;
font-family: monospace;
resize: vertical;
}
input.interactive-stdin {
font: inherit;
}
.manage-executors-view h3 {
margin: 1em;
}
.manage-executors-view ul {
margin: 1em;
padding: 0;
list-style-type: none;
}
.manage-executors-view ul li {
padding: 0.5em;
background: var(--background-primary-alt);
border-radius: 4px;
display: grid;
flex-direction: column;
margin-bottom: 0.5em;
}
.manage-executors-view small {
text-transform: uppercase;
font-weight: bold;
letter-spacing: 0.1ch;
grid-row: 1;
}
.manage-executors-view .filename {
grid-row: 2;
}
.manage-executors-view li button {
grid-column: 2;
grid-row: 1 / 3;
margin: 0;
padding: 0.25em;
display: flex;
align-items: center;
justify-content: center;
color: var(--text-muted);
background: none;
}
.manage-executors-view li button:hover {
background: var(--background-tertiary);
color: var(--icon-color-hover);
}
.manage-executors-view>div {
position: relative;
}
.manage-executors-view .empty-state {
color: var(--text-muted);
padding: 0.5em;
}
.has-run-code-button {
position: relative;
}
.load-state-indicator {
position: absolute;
top: 0.1em;
left: -2em;
width: 2em;
height: 2em;
background: var(--background-primary-alt);
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
color: var(--tx1);
transform: translateX(2em);
transition: transform 0.25s, opacity 0.25s;
opacity: 0;
pointer-events: none;
cursor: pointer;
}
.load-state-indicator svg {
width: 1.5em;
height: 1.5em;
margin: 0.25em;
}
.load-state-indicator.visible {
transform: translateX(0);
opacity: 1;
pointer-events: all;
}
.load-state-indicator::before {
content: "";
box-shadow: -1em 0 1em -0.75em inset var(--background-modifier-box-shadow);
position: absolute;
display: block;
width: 100%;
height: 100%;
transform: translateX(-2em);
opacity: 0;
transition: transform 0.25s, opacity 0.25s;
pointer-events: none;
}
.load-state-indicator.visible::before {
transform: translateX(0);
opacity: 1;
}
/* Hide code blocks with language-output only in markdown view using "markdown-preview-view"*/
.markdown-preview-view pre.language-output {
display: none;
}
.markdown-rendered pre.language-output {
display: none;
}
/* Do not hide code block when exporting to PDF */
@media print {
pre.language-output {
display: block;
}
/* Hide code blocks with language-output only in markdown view using "markdown-preview-view"*/
.markdown-preview-view pre.language-output {
display: block;
}
.markdown-rendered pre.language-output {
display: block;
}
}
/* Center LaTeX vector graphics, confine to text width */
.center-latex-figures img[src*="/figure%20"][src$=".svg"],
.center-latex-figures img[src*="/figure%20"][src*=".svg?"],
.center-latex-figures .stdout img[src*=".svg?"] {
display: block;
margin: auto;
max-width: 100%;
}
/* Invert LaTeX vector graphics in dark mode */
.theme-dark.invert-latex-figures img[src*="/figure%20"][src$=".svg"],
.theme-dark.invert-latex-figures img[src*="/figure%20"][src*=".svg?"],
.theme-dark.invert-latex-figures .stdout img[src*=".svg?"] {
filter: invert(1);
}
/* Allow descriptions in LaTeX settings to be selected and copied. */
.selectable-description-text {
-moz-user-select: text;
-khtml-user-select: text;
-webkit-user-select: text;
-ms-user-select: text;
user-select: text;
}
.insert-figure-icon {
margin-left: 0.5em;
}
/* Try to keep description of cmd arguments in LaTeX settings on the same line. */
code.selectable-description-text {
white-space: nowrap;
}

View File

@@ -1,5 +1,5 @@
{
"cascadeColors": false,
"cascadeColors": true,
"colorBackground": false,
"palette": [],
"fileColors": []

View File

@@ -6,113 +6,113 @@
.theme-dark, .theme-light {
/* ── Material You RGB helpers ──────────────────────────── */
--mat-bg-rgb: 19, 18, 29;
--mat-surface-rgb: 19, 18, 29;
--mat-on-surface-rgb: 228, 224, 240;
--mat-primary-rgb: 195, 192, 255;
--mat-on-primary-rgb: 29, 0, 165;
--mat-bg-rgb: 14, 21, 13;
--mat-surface-rgb: 14, 21, 13;
--mat-on-surface-rgb: 221, 229, 215;
--mat-primary-rgb: 88, 225, 104;
--mat-on-primary-rgb: 0, 57, 13;
/* ── Core Backgrounds ──────────────────────────────────── */
--background-primary: #13121d;
--background-primary-alt: #13121d;
--background-secondary: #1b1a25;
--background-secondary-alt: #1f1e29;
--background-primary: #0e150d;
--background-primary-alt: #0e150d;
--background-secondary: #161d15;
--background-secondary-alt: #1a2219;
/* ── Titlebar ──────────────────────────────────────────── */
--titlebar-background: #13121d;
--titlebar-background-focused: #1b1a25;
--titlebar-text-color: #e4e0f0;
--titlebar-background: #0e150d;
--titlebar-background-focused: #161d15;
--titlebar-text-color: #dde5d7;
/* ── Borders & Dividers ────────────────────────────────── */
--background-modifier-border: #464557;
--background-modifier-border-focus: #918fa3;
--background-modifier-border-hover: #918fa3;
--background-modifier-border: #3d4a3b;
--background-modifier-border-focus: #879583;
--background-modifier-border-hover: #879583;
/* ── Text Colors ───────────────────────────────────────── */
--text-normal: #e4e0f0;
--text-muted: #c7c4da;
--text-faint: #918fa3;
--text-on-accent: #1d00a5;
--text-selection: rgba(195, 192, 255, 0.25);
--text-normal: #dde5d7;
--text-muted: #bccbb7;
--text-faint: #879583;
--text-on-accent: #00390d;
--text-selection: rgba(88, 225, 104, 0.25);
/* ── Accent & Interactive ──────────────────────────────── */
--interactive-accent: #c3c0ff;
--interactive-accent-hover: #3c24f6;
--interactive-accent-rgb: 195, 192, 255;
--text-accent: #c3c0ff;
--text-accent-hover: #3c24f6;
--interactive-accent: #58e168;
--interactive-accent-hover: #16af3e;
--interactive-accent-rgb: 88, 225, 104;
--text-accent: #58e168;
--text-accent-hover: #16af3e;
/* ── Hover & Active Modifiers ──────────────────────────── */
--background-modifier-hover: rgba(var(--mat-on-surface-rgb), 0.06);
--background-modifier-active-hover: rgba(var(--mat-primary-rgb), 0.15);
--background-modifier-success: #a32200;
--background-modifier-success: #fe5f8c;
--background-modifier-error: #93000a;
--background-modifier-error-hover: #ffb4ab;
/* ── Obsidian Color Scale (--color-base-XX) ────────────── */
--color-base-00: #13121d;
--color-base-05: #13121d;
--color-base-10: #0d0d17;
--color-base-20: #1b1a25;
--color-base-25: #1f1e29;
--color-base-30: #292934;
--color-base-35: #34343f;
--color-base-40: #464557;
--color-base-50: #918fa3;
--color-base-60: #c7c4da;
--color-base-70: #e4e0f0;
--color-base-100: #e4e0f0;
--color-base-00: #0e150d;
--color-base-05: #0e150d;
--color-base-10: #091008;
--color-base-20: #161d15;
--color-base-25: #1a2219;
--color-base-30: #242c23;
--color-base-35: #2f372d;
--color-base-40: #3d4a3b;
--color-base-50: #879583;
--color-base-60: #bccbb7;
--color-base-70: #dde5d7;
--color-base-100: #dde5d7;
/* ── Semantic Colors ───────────────────────────────────── */
--color-red: #ffb4ab;
--color-orange: #ffb4a3;
--color-yellow: #c3c0ff;
--color-green: #a32200;
--color-cyan: #3e3a96;
--color-blue: #c3c0ff;
--color-purple: #c3c0ff;
--color-pink: #ffb4a3;
--color-orange: #ffb1c1;
--color-yellow: #98d695;
--color-green: #fe5f8c;
--color-cyan: #1a5422;
--color-blue: #58e168;
--color-purple: #98d695;
--color-pink: #ffb1c1;
/* ── Headings ──────────────────────────────────────────── */
--h1-color: #c3c0ff;
--h2-color: #c3c0ff;
--h3-color: #c3c0ff;
--h4-color: #ffb4a3;
--h5-color: #c7c4da;
--h6-color: #918fa3;
--h1-color: #58e168;
--h2-color: #58e168;
--h3-color: #98d695;
--h4-color: #ffb1c1;
--h5-color: #bccbb7;
--h6-color: #879583;
/* ── Links ─────────────────────────────────────────────── */
--link-color: #c3c0ff;
--link-color-hover: #faf6ff;
--link-external-color: #ffb4a3;
--link-unresolved-color: #918fa3;
--link-color: #58e168;
--link-color-hover: #000601;
--link-external-color: #ffb1c1;
--link-unresolved-color: #879583;
/* ── Tags ──────────────────────────────────────────────── */
--tag-color: #faf6ff;
--tag-background: #3c24f6;
--tag-border-color: #c3c0ff;
--tag-color-hover: #1d00a5;
--tag-background-hover: #c3c0ff;
--tag-color: #000601;
--tag-background: #16af3e;
--tag-border-color: #58e168;
--tag-color-hover: #00390d;
--tag-background-hover: #58e168;
/* ── Checkboxes ────────────────────────────────────────── */
--checkbox-color: #c3c0ff;
--checkbox-color-hover: #3c24f6;
--checkbox-border-color: #918fa3;
--checkbox-marker-color: #1d00a5;
--checkbox-color: #58e168;
--checkbox-color-hover: #16af3e;
--checkbox-border-color: #879583;
--checkbox-marker-color: #00390d;
/* ── Code Blocks ───────────────────────────────────────── */
--code-background: #1b1a25;
--code-normal: #e4e0f0;
--code-comment: #918fa3;
--code-function: #c3c0ff;
--code-background: #161d15;
--code-normal: #dde5d7;
--code-comment: #879583;
--code-function: #58e168;
--code-important: #ffb4ab;
--code-keyword: #c3c0ff;
--code-operator: #ffb4a3;
--code-property: #c7c4da;
--code-punctuation: #464557;
--code-string: #ffb4a3;
--code-keyword: #98d695;
--code-operator: #ffb1c1;
--code-property: #bccbb7;
--code-punctuation: #3d4a3b;
--code-string: #ffb1c1;
--code-tag: #ffb4ab;
--code-value: #c3c0ff;
--code-value: #98d695;
/* ── Scrollbar ─────────────────────────────────────────── */
--scrollbar-thumb-bg: rgba(var(--mat-on-surface-rgb), 0.12);
@@ -121,16 +121,16 @@
/* ── Inputs ────────────────────────────────────────────── */
--input-shadow: none;
--input-shadow-hover: 0 0 0 2px #918fa3;
--input-shadow-hover: 0 0 0 2px #879583;
/* ── Graph View ────────────────────────────────────────── */
--graph-node: #c3c0ff;
--graph-node-unresolved: #918fa3;
--graph-node-focused: #faf6ff;
--graph-node-tag: #c3c0ff;
--graph-node-attachment: #ffb4a3;
--graph-line: #464557;
--graph-background: #13121d;
--graph-node: #58e168;
--graph-node-unresolved: #879583;
--graph-node-focused: #000601;
--graph-node-tag: #98d695;
--graph-node-attachment: #ffb1c1;
--graph-line: #3d4a3b;
--graph-background: #0e150d;
}

View File

@@ -1,220 +0,0 @@
{
"main": {
"id": "687d1c86232da224",
"type": "split",
"children": [
{
"id": "a9fc2a0864d18743",
"type": "tabs",
"children": [
{
"id": "668037a66202e3ed",
"type": "leaf",
"state": {
"type": "empty",
"state": {},
"icon": "lucide-file",
"title": "New tab"
}
}
]
}
],
"direction": "vertical"
},
"left": {
"id": "9ec91dab2caa0289",
"type": "split",
"children": [
{
"id": "3eac170f3e784f0a",
"type": "tabs",
"children": [
{
"id": "7a0e7b37bd89861d",
"type": "leaf",
"state": {
"type": "file-explorer",
"state": {
"sortOrder": "alphabetical",
"autoReveal": false
},
"icon": "lucide-folder-closed",
"title": "Files"
}
},
{
"id": "4f49c1281d39a560",
"type": "leaf",
"state": {
"type": "search",
"state": {
"query": "",
"matchingCase": false,
"explainSearch": false,
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical"
},
"icon": "lucide-search",
"title": "Search"
}
},
{
"id": "2e48ff6ec7a1cd18",
"type": "leaf",
"state": {
"type": "bookmarks",
"state": {},
"icon": "lucide-bookmark",
"title": "Bookmarks"
}
}
]
}
],
"direction": "horizontal",
"width": 200
},
"right": {
"id": "8a65bc0c1d4d98f2",
"type": "split",
"children": [
{
"id": "9a7ddad3818b86d0",
"type": "tabs",
"children": [
{
"id": "93d7330db83403ee",
"type": "leaf",
"state": {
"type": "backlink",
"state": {
"file": "Studium.md",
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
"showSearch": false,
"searchQuery": "",
"backlinkCollapsed": false,
"unlinkedCollapsed": true
},
"icon": "links-coming-in",
"title": "Backlinks for Studium"
}
},
{
"id": "6d8323e062c2ca0a",
"type": "leaf",
"state": {
"type": "outgoing-link",
"state": {
"linksCollapsed": false,
"unlinkedCollapsed": true
},
"icon": "links-going-out",
"title": "Outgoing links"
}
},
{
"id": "10b1fc99e21f5952",
"type": "leaf",
"state": {
"type": "tag",
"state": {
"sortOrder": "frequency",
"useHierarchy": true,
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-tags",
"title": "Tags"
}
},
{
"id": "9ef86e6061e150c0",
"type": "leaf",
"state": {
"type": "outline",
"state": {
"followCursor": false,
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-list",
"title": "Outline"
}
},
{
"id": "7cc839bdf6f45717",
"type": "leaf",
"state": {
"type": "git-view",
"state": {},
"icon": "lucide-file",
"title": "Plugin no longer active"
}
}
],
"currentTab": 4
}
],
"direction": "horizontal",
"width": 300,
"collapsed": true
},
"left-ribbon": {
"hiddenItems": {
"switcher:Open quick switcher": false,
"graph:Open graph view": false,
"canvas:Create new canvas": false,
"daily-notes:Open today's daily note": false,
"templates:Insert template": false,
"command-palette:Open command palette": false,
"obsidian-git:Open Git source control": false,
"templater-obsidian:Templater": false,
"darlal-switcher-plus:Open in Headings Mode": false,
"darlal-switcher-plus:Open Symbols for the active editor": false
}
},
"active": "7a0e7b37bd89861d",
"lastOpenFiles": [
"10 Courses/02 - SoSe 2026/Automatentheorie und formale Sprachen/29593952 - Regular Languages.md",
"10 Courses/02 - SoSe 2026/Automatentheorie und formale Sprachen/29593852 - Strings.md",
"00 Inbox/29593975 - Regular Expressions.md",
"10 Courses/02 - SoSe 2026/Automatentheorie und formale Sprachen/29593940 - Formal Languages.md",
"10 Courses/02 - SoSe 2026/Automatentheorie und formale Sprachen/29593958 - Kleene star of languages.md",
"30 Library/29593962 - atfl-st2026-l02-finite-representation-of-languages-full.pdf",
"30 Library/normalize_name.sh",
"30 Library/atfl-st2026-l02-finite-representation-of-languages-full.pdf",
"10 Courses/02 - SoSe 2026/Automatentheorie und formale Sprachen/29593935 - Kleene.md",
"30 Library/29593895 - atfl-st2026-l01-formal-languages-full.pdf",
"10 Courses/02 - SoSe 2026/Automatentheorie und formale Sprachen/29593929 - Alphabets.md",
"30 Library/29592593 - ET_II_Folien_gesamt_020426.pdf",
"30 Library/29592593 - 29592593 - ET_II_Folien_gesamt_020426.pdf",
"30 Library/atfl-st2026-l01-formal-languages-full.pdf",
"10 Courses/02 - SoSe 2026/Automatentheorie und formale Sprachen/29593850 - Automationtheory.md",
"10 Courses/02 - SoSe 2026/ET II/29592673 - Elektrotechnik II.md",
"99 Templates/New File Template.md",
"99 Templates/New File Template.md~",
"00 Inbox/29593849 - Automationtheory.md",
"00 Inbox/29593844 - Basics of formal languages.md",
"00 Inbox/29593844 - Automationtheory.md",
"00 Inbox/29593843 - newFile.md",
"00 Inbox/29593843 - newFile.md",
"lol.md",
"Natural and Formal Languages.md",
"00 Inbox/newfile.md",
"00 Inbox/29593832 - 2026-04-08.md",
"10 Courses/02 - SoSe 2026/ET II/29592733 - Zählpfeilsysteme.md",
"10 Courses/02 - SoSe 2026/Automatentheorie und formale Sprachen",
"10 Courses/02 - SoSe 2026/ET II/29592751 - Übungsaufgabe 1.md",
"10 Courses/02 - SoSe 2026/ET II/29592755 - Übungsaufgabe 2.md",
"20 Atlas/ET II - Map of Content.md",
"00 Inbox/29593226 - ET_II_Folien_gesamt_020426.pdf.md",
"10 Courses/02 - SoSe 2026/ET II/29592722 - Zeitabhängige Größen.md",
"10 Courses/02 - SoSe 2026/ET II/29592709 - Klausur.md",
"20 Atlas",
"10 Courses/01 - WiSe 2025_26/ET/images/beispiel_knotenregel.png"
]
}

View File

@@ -0,0 +1,71 @@
---
created: 2026-04-08 08:52
course: "[[29593850 - Automationtheory]]"
topic: strings
related: "[[29593929 - Alphabets]]"
type: lecture
status: 🔴
tags:
- university
---
## 📌 Summary
> [!abstract]
> Overview of lecture 1 on `Wednesday, 2026/Apr/08`
---
## 📝 Content
A word (or _string_) is a finite sequence $w = a_1 a_2 ... a_n$ if characters from $Sigma$.
> [!CONVENTION]
> We will use small letters to describe strings that are part of a language.
> [!EXAMPLE]
> $"aa", "ab", "bba"$ and $"baab"$ are strings over $Sigma = {a, b}.
#### Length of a string
The _length_ $abs(x)$ of a string $x = a_1 ... a_n$ is its number $abs(x) = n$ of characters.
#### Empty String
The empty string is denoted by $epsilon$, this is the neutral element.
-> $abs(epsilon) = 0$
## String Operations
### Concatenation
String can be concatenated, where one string is appended to another.
For strings $x = a_1 ... a_n$ and $y = b_1 ... b_m$ over alphabets $Sigma_x$ and $Sigma_y$, their _concatenation_ over the alphabet $Sigma = Sigma_x union Sigma_y$ is the string
$$x circle.small y = x y = a_1 a_2 ... a_n b_1 b_2 ... b_m$$
> This string is of the length $abs(x y) = n + m$
> [!EXAMPLE]
> $x = "apple"$
> $y = "pie"$
> $x circle.small y = "applepie"$
Order of operations / Brackets do _not matter_. (Concatenation is associative but **not** commutative $x y eq.not y x$)
> $(x circle.small y) circle.small z = x circle.small (y circle.small z)$
Any string concatenated with the empty string $epsilon$ will result in itself.
> $x circle.small epsilon = x = epsilon circle.small x$
### Exponentiation
The $n^"th"$ power $x^n$ of a string $x$ is the $(n-1)$-fold concatenation of $x$ with itself.
> $x^0 := epsilon$
> $x^n := x^(n-1) circle.small x$ for $n in NN$
> [!Example]
> $x^4 = x x x x$
> $(a b)^3 = a b a b a b$
### Reversing / Mirroring
For a string $x = a_1 a_2 ... a_(n-1) a_n$ of length $n$, it's _mirrored string_ is given by
$$ x^("Rev") = a_n a_(n-1)...a_2 a_1$$
## Substrings
A string $x$ is a _substring_ of a string $y$ if $y = u x v$, where $u$ and $v$ can be arbitrary strings.
- If $u = epsilon$ then $x$ is a _prefix_ of $y$.
- If $v = epsilon$ then $x$ is a suffix of $y$.
For strings $x$ and $y$ the quantity $abs(y)_x$ is the number of times that $x$ is a substring of $y$.

View File

@@ -0,0 +1,18 @@
---
created: 2026-04-16 11:47
course: "[[29605547 - 29605397 - OOP]]"
tags:
- university
topic:
related:
type: lecture
status: 🔴
---
## 📌 Summary
> [!abstract]
>
---
## 📝 Content

View File

@@ -0,0 +1,18 @@
---
created: 2026-04-16 11:48
course: "[[29605548 - 29605397 - OOP]]"
tags:
- university
topic:
related:
type: lecture
status: 🔴
---
## 📌 Summary
> [!abstract]
>
---
## 📝 Content

View File

@@ -1,7 +1,18 @@
---
created: 2026-04-08 08:50
created: 2026-04-16 11:46
course: "[[29593850 - Automationtheory]]"
type: overview
type: lecture
tags:
- university
topic:
related:
status: 🔴
---
## 📌 Summary
> [!abstract]
>
---
## 📝 Content

View File

@@ -0,0 +1,161 @@
---
created: 2026-04-16 08:01
course: "[[29605548 - 29605397 - OOP]]"
topic: classes
related:
type: lecture
status: 🔴
tags:
- university
- cpp
---
## 📌 Summary
> [!abstract]
> Introduction of Classes and visibility modifiers
>
---
## 📝 Content
C approach of defining a Pokemon:
```C
typedef struct {
int exp;
int level;
int attack;
int defense;
int speed;
int hp;
} Pokemon;
void upgrade(*Pokemon p, int gainedExp) {
p->exp += gainedExp;
if (p->exp >= 4000) {
p->exp -= 4000;
p->level += 1;
}
}
int main() {
Pokemon fukano = {3600, 1, 400, 400, 20, 1200};
printf("Exp of fukano: %d", fukano);
upgrade(&fukano, 400);
printf("Exp of fukano: %d", fukano);
return 0;
}
```
In C++ we use classes:
```C++
class Pokemon {
public: // visibility modifier
int exp;
int level;
int hp;
void upgrade(int gainedExp) {
exp += gainedExp;
if (exp >= 4000) {
exp -= 4000;
level += 1;
}
}
}
int main() {
Pokemon fukano = {3600, 1, 1200};
cout << "Exp of fukano: " << fukano.exp << endl;
fukano.upgrade(400);
cout << "Exp of fukano: " << fukano.exp << endl;
}
```
### Scope Modifiers
If we want to hide data beyond the class itself we can use the `private` visibility modifier:
```C++
class Pokemon {
public:
string name;
private:
int exp;
int level;
int hp;
public:
void upgrade(int gainedExp) {
exp += gainedExp;
if (exp >= 4000) {
exp -= 4000;
level += 1;
}
}
}
int main() {
Pokemon fukano = {3600, 1, 1200};
fukano.upgrade(400); // this is OK
fukano.exp += 400; // this is not OK
}
```
### Getters and Setters
_Getters and Setters_ allow **controlling the change** like:
- ensuring a number is in a range
- update depending parameters (like level with exp)
```c++
class Pokemon {
// ...
public:
void setExp() { /*...*/ }
int getExp() { /*...*/ }
}
```
### Constructors
Given the class:
```C++
class Pokemon {
private:
int exp;
int level;
}
```
We can create a new instance using the _basic constructor_:
```C++
class Pokemon {
// ...
public:
// Default constructor: allows Pokemon <name>; -> exp = 0, level = 0;
Pokemon(): exp(0), level(0) {};
// or
Pokemon(0, 0);
// Base constructor
Pokemon(int e, int l) {
exp = e;
level = l;
}
// or as
Pokemon(int e, int l): exp(e), level(l) {};
}
int main() {
Pokemon fukano(3600, 1);
}
```
We can also create an instance as a copy of another object of the _same class_:
```C++
class Pokemon {
// ...
public:
Pokemon(const Pokemon& other): exp(other.exp), level(other.level) {}
}
```

1
40 Extras/OOP_Lecture Submodule

Submodule 40 Extras/OOP_Lecture added at 55aef6d92e