Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 14 additions & 2 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,19 @@ end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
max_line_length = 130

[*.yml]
[*.{md,mf}]
trim_trailing_whitespace = false

[*.{yml,yaml}]
indent_size = 2
trim_trailing_whitespace = false

[flake.{lock,nix}]
indent_size = 2

[Makefile]
indent_style = tab

[{COPYING,LICENSE,NOTICE,*.{md,mf,xmp,xml}}]
indent_size = unset
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
atlassian-ide-plugin.xml

### VS-Code ###
.vscode/
.vscode/settings.json
.VSCodeCounter/

### Eclipse ###
Expand Down
20 changes: 20 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.5.0
hooks:
- id: end-of-file-fixer
- id: check-yaml
# - id: check-added-large-files
- repo: https://github.com/cmhughes/latexindent.pl.git
rev: V3.23.3
hooks:
- id: latexindent
args: ["--overwriteIfDifferent", "--silent", "-l=latexindent.yaml"]
- repo: https://github.com/editorconfig-checker/editorconfig-checker.python
rev: '2.7.3' # pick a git hash / tag to point to
hooks:
- id: editorconfig-checker
exclude_types: [tex]
alias: ec
20 changes: 12 additions & 8 deletions .teamcity/settings.kts
Original file line number Diff line number Diff line change
Expand Up @@ -70,25 +70,29 @@ fun createBuild(buildGroup: String, buildName: String): BuildType {
steps {
exec {
name = "Clean up old pdf"
workingDir = buildGroup
path = "rm"
arguments = "-f $buildGroup-$buildName-RC*.pdf"
path = "make"
arguments = "cleanBuild"
}
exec {
name = "Build $buildGroup/$buildName with AlgoTeX"
workingDir = buildGroup
path = "latexmk"
arguments = "--shell-escape -synctex=1 -interaction=nonstopmode -file-line-error -lualatex $buildName.tex"
path = "make"
arguments = "-j FILES=$buildGroup/$buildName.tex"
}
exec {
name = "Create final pdf"
workingDir = buildGroup
workingDir = "build"
path = "cp"
arguments = "$buildName.pdf $buildGroup-$buildName-RC%env.BUILD_NUMBER%.pdf"
}
exec {
name = "Create final pdf (darkmode)"
workingDir = "build"
path = "cp"
arguments = "$buildName-darkmode.pdf $buildGroup-$buildName-RC%env.BUILD_NUMBER%-darkmode.pdf"
}
}

artifactRules = "+:$buildGroup/$buildGroup-$buildName-RC%env.BUILD_NUMBER%.pdf"
artifactRules = "+:./build/$buildGroup-$buildName-RC%env.BUILD_NUMBER%*.pdf"
}
}
}
Expand Down
5 changes: 5 additions & 0 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"recommendations": [
"James-Yu.latex-workshop"
]
}
24 changes: 24 additions & 0 deletions .vscode/settings.default.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"latex-workshop.latexindent.args": [
"-c",
"%DIR%/",
"%TMPFILE%",
"-l=%WORKSPACE_FOLDER%/latexindent.yaml",
"-y=defaultIndent: '%INDENT%'"
],
"latex-workshop.latex.verbatimEnvs": [
"verbatim",
"lstlisting",
"minted",
"codeBlock"
],
"files.associations": {
"*.sty": "latex-expl3",
"*.cls": "latex-expl3",
"*.def": "latex",
"*.aux": "latex",
"*.toc": "latex",
"*.pygstyle": "latex",
"*.pygtex": "latex"
}
}
67 changes: 67 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@

OUT_DIR := build/
TOPTARGETS := clean all
FILES := $(wildcard git-days/*.tex sheet/*.tex)

define compile_latex_with_jobname_and_env
cd $(4) && $(3) latexmk --shell-escape -synctex=1 -interaction=nonstopmode -file-line-error -lualatex -jobname=$(2) "$(1)"
endef

define build_latex_with_jobname_and_env
$(eval DIR := $(dir $(1)))
$(eval FILE := $(notdir $(1)))
@echo -e "\e[1;32mCompiling \"$(FILE)\" in \"$(DIR)\" with jobname \"$(2)\"$<\e[0m"
@$(call compile_latex_with_jobname_and_env,$(FILE),$(2),$(3),$(DIR))
@echo -e "\e[1;32mSuccessfully compiled \"$(FILE)\" in \"$(DIR)\" with jobname \"$(2)\"$<\e[0m"
@mkdir -p $(OUT_DIR)
@cp $(DIR)/$(2).pdf $(OUT_DIR)/
endef

all:
$(MAKE) compile

$(FILES:.tex=.tex.regular):
$(eval FILE := $(patsubst %.tex.regular,%.tex,$@))
$(call build_latex_with_jobname_and_env,$(FILE),$(notdir $(patsubst %.tex,%,$(FILE))),)

$(FILES:.tex=.tex.darkmode):
$(eval FILE := $(patsubst %.tex.darkmode,%.tex,$@))
$(call build_latex_with_jobname_and_env,$(FILE),$(notdir $(patsubst %.tex,%-darkmode,$(FILE))),DARK_MODE=1)

compile: $(FILES:.tex=.tex.regular) $(FILES:.tex=.tex.darkmode)
@echo -e "\e[1;42mAll Done. PDFs can be found in $(OUT_DIR)\e[0m"

clean:
@echo -e "\e[1;34mCleaning up leftover build files...$<\e[0m"
@latexmk -C -f git-days
@find . -ignore_readdir_race -not \( -path "*/.git/*" -prune \) -wholename '**/options.cfg' -exec rm -rf {} \;
@find . -ignore_readdir_race -maxdepth 1 -not \( -path "*/.git/*" -prune \) -wholename '**/*.pdf' -exec rm -rf {} \;
@find . -ignore_readdir_race -not \( -path "*/.git/*" -prune \) -wholename '**/*.aux' -exec rm -rf {} \;
@find . -ignore_readdir_race -not \( -path "*/.git/*" -prune \) -wholename '**/*.fdb_latexmk' -exec rm -rf {} \;
@find . -ignore_readdir_race -not \( -path "*/.git/*" -prune \) -wholename '**/*.fls' -exec rm -rf {} \;
@find . -ignore_readdir_race -not \( -path "*/.git/*" -prune \) -wholename '**/*.len' -exec rm -rf {} \;
@find . -ignore_readdir_race -not \( -path "*/.git/*" -prune \) -wholename '**/*.listing' -exec rm -rf {} \;
@find . -ignore_readdir_race -not \( -path "*/.git/*" -prune \) -wholename '**/*.log' -exec rm -rf {} \;
@find . -ignore_readdir_race -not \( -path "*/.git/*" -prune \) -wholename '**/*.out' -exec rm -rf {} \;
@find . -ignore_readdir_race -not \( -path "*/.git/*" -prune \) -wholename '**/*.synctex.gz' -exec rm -rf {} \;
@find . -ignore_readdir_race -not \( -path "*/.git/*" -prune \) -wholename '**/*.toc' -exec rm -rf {} \;
@find . -ignore_readdir_race -not \( -path "*/.git/*" -prune \) -wholename '**/*.nav' -exec rm -rf {} \;
@find . -ignore_readdir_race -not \( -path "*/.git/*" -prune \) -wholename '**/*.snm' -exec rm -rf {} \;
@find . -ignore_readdir_race -not \( -path "*/.git/*" -prune \) -wholename '**/*.vrb' -exec rm -rf {} \;
@find . -ignore_readdir_race -not \( -path "*/.git/*" -prune \) -wholename '**/*.bbl' -exec rm -rf {} \;
@find . -ignore_readdir_race -not \( -path "*/.git/*" -prune \) -wholename '**/*.blg' -exec rm -rf {} \;
@find . -ignore_readdir_race -not \( -path "*/.git/*" -prune \) -wholename '**/*.idx' -exec rm -rf {} \;
@find . -ignore_readdir_race -not \( -path "*/.git/*" -prune \) -wholename '**/*.ilg' -exec rm -rf {} \;
@find . -ignore_readdir_race -not \( -path "*/.git/*" -prune \) -wholename '**/*.ind' -exec rm -rf {} \;
@find . -ignore_readdir_race -not \( -path "*/.git/*" -prune \) -wholename '**/*.pyg' -exec rm -rf {} \;
@find . -ignore_readdir_race -not \( -path "*/.git/*" -prune \) -wholename '**/*.bak[0-9]*' -exec rm -rf {} \;
@find . -ignore_readdir_race -not \( -path "*/.git/*" -prune \) -wholename '**/_minted-*' -exec rm -rf {} \;
@find . -ignore_readdir_race -not \( -path "*/.git/*" -prune \) -wholename '**/svg-inkscape' -exec rm -rf {} \;
@echo -e "\e[1;44mDone cleaning up leftover build files.$<\e[0m"

cleanBuild:
@echo -e "\e[1;34mCleaning up build directory...$<\e[0m"
@rm -rf $(OUT_DIR)
@echo -e "\e[1;44mDone cleaning up build directory.$<\e[0m"

cleanAll: clean cleanBuild
22 changes: 11 additions & 11 deletions chapters/commits.tex
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,16 @@ \section{Commits}\label{sec:commits}
\slidehead
\begin{itemize}
\item Ein Commit ist ein logischer Snapshot von einer Repository
\begin{itemize}
\item Zeitpunkt
\item Dateisystemzustand
\end{itemize}
\begin{itemize}
\item Zeitpunkt
\item Dateisystemzustand
\end{itemize}
\item Datei hinzugefügt, geändert, verschoben oder gelöscht
\item mit Nachricht versehen
\item \enquote{kryptische} Bezeichnung (Hash), z.B. \texttt{bc7f1a9e22bc7f19e22bc}\dots
\begin{itemize}
\item erste fünf Zeichen zur Identifizierung meist ausreichend
\end{itemize}
\begin{itemize}
\item erste fünf Zeichen zur Identifizierung meist ausreichend
\end{itemize}
\end{itemize}
\end{frame}

Expand Down Expand Up @@ -122,10 +122,10 @@ \subsection{Exkurs: Hashing}\label{subsec:exkurs:-hashing}
\end{tikzpicture}
}
\begin{align*}
\mathbb{B} &:= \{0, 1\}^* \quad \text{(binäre Zahl, beliebige Länge)} \\
\mathbb{B}_n &:= \{0, 1\}^n \quad \text{(binäre Zahl, Länge $n$)} \\
h &: \mathbb{B} \rightarrow \mathbb{B}_n \\
h(x) &= y \quad \forall x \in \mathbb{B}, \, \exists y \in \mathbb{B}_n
\mathbb{B} & := \{0, 1\}^* \quad \text{(binäre Zahl, beliebige Länge)} \\
\mathbb{B}_n & := \{0, 1\}^n \quad \text{(binäre Zahl, Länge $n$)} \\
h & : \mathbb{B} \rightarrow \mathbb{B}_n \\
h(x) & = y \quad \forall x \in \mathbb{B}, \, \exists y \in \mathbb{B}_n
\end{align*}
\end{frame}

Expand Down
78 changes: 39 additions & 39 deletions chapters/filesystem.tex
Original file line number Diff line number Diff line change
Expand Up @@ -55,14 +55,14 @@ \subsection{Was ist ein Dateisystem?}\label{subsec:was-ist-ein-dateisystem}
[<+->]
\item Programme, um Dateien zu verwalten
\item Diese Dateien befinden sich auf einem Dateisystem
\begin{itemize}
\item NTFS
\item exFAT
\item ext4
\item APFS
\item ZFS
\item \dots und viele mehr
\end{itemize}
\begin{itemize}
\item NTFS
\item exFAT
\item ext4
\item APFS
\item ZFS
\item \dots und viele mehr
\end{itemize}
\end{itemize}
\end{frame}

Expand All @@ -84,21 +84,21 @@ \subsection{Zusammenarbeit}\label{subsec:zusammenarbeit}
\slidehead
\begin{itemize}[<+->]
\item Dateisysteme sind oberflächlich sehr ähnlich
\begin{itemize}
\item Ordner
\item Dateien
\end{itemize}
\begin{itemize}
\item Ordner
\item Dateien
\end{itemize}
\item Es gibt auch sehr viele Unterschiede
\begin{itemize}
\item OS Kompatibilität
\item Line-Endings
\item Metadaten
\end{itemize}
\begin{itemize}
\item OS Kompatibilität
\item Line-Endings
\item Metadaten
\end{itemize}
\item Für die Zusammenarbeit besonders wichtig:
\begin{itemize}
\item Wie können wir ein Dateisystem verteilen?
\item Wie können wir den Zustand an einem bestimmten Zeitpunkt wiederherstellen?
\end{itemize}
\begin{itemize}
\item Wie können wir ein Dateisystem verteilen?
\item Wie können wir den Zustand an einem bestimmten Zeitpunkt wiederherstellen?
\end{itemize}
\end{itemize}
\end{frame}

Expand Down Expand Up @@ -144,21 +144,21 @@ \subsection{Replikation}\label{subsec:replikation}
\begin{itemize}
[<+->]
\item Ein Fileserver agiert als zentrale Schnittstelle und \enquote{Single source of truth}
\begin{itemize}
\item Writes werden direkt im Globalen Zustand geschrieben und sind für alle direkt sichtbar
\item Reads liefern immer den aktuellsten Zustand
\end{itemize}
\begin{itemize}
\item Writes werden direkt im Globalen Zustand geschrieben und sind für alle direkt sichtbar
\item Reads liefern immer den aktuellsten Zustand
\end{itemize}
\item \enquote{Single point of failure} (SPOF)
\item Keine klare \enquote{history}
\begin{itemize}
\item Veränderungen werden nicht gruppiert
\item Unmöglich\footnote{Ja, es gibt Backups - dazu kommen wir noch} auf einen alten Zustand zurückzugehen
\end{itemize}
\begin{itemize}
\item Veränderungen werden nicht gruppiert
\item Unmöglich\footnote{Ja, es gibt Backups - dazu kommen wir noch} auf einen alten Zustand zurückzugehen
\end{itemize}
\item Unabhängige Arbeit unmöglich!
\begin{itemize}
\item Wenn gerade am Code gearbeitet wird, kompiliert er meistens nicht
\item Dateien werden gegenseitig überschrieben
\end{itemize}
\begin{itemize}
\item Wenn gerade am Code gearbeitet wird, kompiliert er meistens nicht
\item Dateien werden gegenseitig überschrieben
\end{itemize}
\end{itemize}
\end{frame}

Expand Down Expand Up @@ -237,12 +237,12 @@ \subsection{Snapshots}\label{subsec:snapshots}
\begin{itemize}
[<+->]
\item Projektzustand nur zu bestimmten Zeitpunkten gespeichert.
\begin{itemize}
\item Wiederherstellen von einzelnen Veränderungen sehr schwierig
\item Vergleich von Zuständen sehr schwierig
\item Kein \enquote{Blame}
\item Backups sind keine Versionsverwaltung!
\end{itemize}
\begin{itemize}
\item Wiederherstellen von einzelnen Veränderungen sehr schwierig
\item Vergleich von Zuständen sehr schwierig
\item Kein \enquote{Blame}
\item Backups sind keine Versionsverwaltung!
\end{itemize}
\item USB-Stick Verfahren ist noch ungeeigneter
\end{itemize}
\end{frame}
20 changes: 10 additions & 10 deletions chapters/git.tex
Original file line number Diff line number Diff line change
Expand Up @@ -20,17 +20,17 @@ \subsection{Kurzer Überblick über die Historie}\label{subsec:kurzer-uberblick-
\item 1991--2002 wurden Änderungen am Linux Kernel in Form von Patches herumgereicht
\item Ab 2002 mit DVCS Bitkeeper (\enquote{Distributed Version Control System})
\item 2005 ging die Beziehung \enquote{in die Brüche}
\begin{itemize}
\item Die zuvor ausgesprochene Erlaubnis, BitKeeper kostenlos zu verwenden, wurde widerrufen
\end{itemize}
\begin{itemize}
\item Die zuvor ausgesprochene Erlaubnis, BitKeeper kostenlos zu verwenden, wurde widerrufen
\end{itemize}
\item April 2005 - Linus Torvalds fängt an, Git zu entwickeln.\ Die Ziele waren unter Anderem:
\begin{itemize}
\item Geschwindigkeit
\item Einfaches Design
\item Gute Unterstützung von nicht-linearer Entwicklung (tausende parallele Entwicklungszweige)
\item Vollständig dezentrale Struktur
\item Fähigkeit, große Projekte, wie den Linux Kernel, effektiv zu verwalten (Geschwindigkeit und Datenumfang)
\end{itemize}
\begin{itemize}
\item Geschwindigkeit
\item Einfaches Design
\item Gute Unterstützung von nicht-linearer Entwicklung (tausende parallele Entwicklungszweige)
\item Vollständig dezentrale Struktur
\item Fähigkeit, große Projekte, wie den Linux Kernel, effektiv zu verwalten (Geschwindigkeit und Datenumfang)
\end{itemize}
\end{itemize}
\renewcommand{\thefootnote}{\relax}\footnotetext{https://git-scm.com/book/de/v2/Erste-Schritte-Kurzer-\%C3\%9Cberblick-\%C3\%BCber-die-Historie-von-Git}
\end{frame}
12 changes: 6 additions & 6 deletions chapters/gitignore.tex
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@ \section{.gitignore}\label{sec:.gitignore}
\slidehead
\begin{itemize}[<+->]
\item Manche Ordner (und Dateien) sollten nie committed werden
\begin{itemize}
\item .idea
\item .vscode
\item build
\item node\_modules
\end{itemize}
\begin{itemize}
\item .idea
\item .vscode
\item build
\item node\_modules
\end{itemize}
\item Diese Regeln können in eine \enquote{.gitignore} Datei festgelegt werden
\end{itemize}
\end{frame}
Expand Down
4 changes: 2 additions & 2 deletions chapters/workflows/centralized.tex
Original file line number Diff line number Diff line change
Expand Up @@ -121,8 +121,8 @@ \subsection{Normallfall Review}\label{subsec:normallfall-review}
\textcolor{TUDa-10a}{\textbf{Meet Alice}}
\only<2->{
\begin{itemize}
\item<2-> Alice ist eine Softwareentwicklerin
\item<3-> Alice arbeitet zusammen mit Bob
\item<2-> Alice ist eine Softwareentwicklerin
\item<3-> Alice arbeitet zusammen mit Bob
\end{itemize}
}
\end{column}
Expand Down
Loading