From 4555491b5fdb3f38c731e409c2f98b46ac675efa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Karel=20Ko=C4=8D=C3=AD?= <cynerd@email.cz>
Date: Tue, 17 Oct 2017 07:59:09 +0200
Subject: Some directory movements

---
 2017-installfest/pres.tex | 304 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 304 insertions(+)
 create mode 100644 2017-installfest/pres.tex

(limited to '2017-installfest/pres.tex')

diff --git a/2017-installfest/pres.tex b/2017-installfest/pres.tex
new file mode 100644
index 0000000..1c36c4c
--- /dev/null
+++ b/2017-installfest/pres.tex
@@ -0,0 +1,304 @@
+\documentclass{beamer}
+\usetheme{metropolis}
+\usepackage{lmodern}
+\usepackage[czech]{babel}
+\usepackage[utf8x]{inputenc}
+%\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{graphicx}
+\usepackage{wrapfig}
+\usepackage{color}
+\usepackage{mathtools}
+\usepackage{hyperref}
+\usepackage{epstopdf}
+\usepackage{svg}
+\usepackage{amsmath}
+\usepackage{minted}
+\hypersetup{
+    colorlinks,
+    citecolor=black,
+    filecolor=black,
+    linkcolor=black,
+    urlcolor=black
+}
+\usepackage{pdflscape}
+
+\title{3 problémy při práci na 3 počítačích}
+\author{Karel Kočí}
+\date{4.3.2017}
+
+\begin{document}
+
+\frame{\titlepage}
+
+\begin{frame}
+	\begin{block}{\huge Napiš si skript!}
+		Přednášené skripty a více naleznete na:
+		\url{https://github.com/Cynerd/myconfigs}
+	\end{block}
+\end{frame}
+
+\begin{frame}
+	\frametitle{3 problémy}
+	\begin{itemize}
+		\item Synchronizace souborů
+		\item Synchronizace a správa konfigurací
+		\item Správa systému
+	\end{itemize}
+\end{frame}
+
+\begin{frame}
+	\frametitle{Synchronizace souborů}
+	\def\svgwidth{1cm}
+	\input{face_sad.pdf_tex}
+	\begin{itemize}
+		\item Dropbox
+		\item Mega
+		\item Google drive
+		\item \ldots
+	\end{itemize}
+
+	\def\svgwidth{1cm}
+	\input{face_cry.pdf_tex}
+	\begin{itemize}
+		\item Owncloud/Nextcloud
+	\end{itemize}
+
+	\def\svgwidth{1cm}
+	\input{face_happy.pdf_tex}
+	\begin{itemize}
+		\item Syncthing
+	\end{itemize}
+\end{frame}
+
+\begin{frame}
+	\frametitle{``Easy to use'' říkají}
+	\includegraphics[width=11cm]{syncthing.png}
+\end{frame}
+
+\begin{frame}
+	\frametitle{Matematický problém}
+	Přidání zařízení mezi N synchronizujících M složek.
+
+	\begin{itemize}
+		\item Nastav nové zařízení
+		\item $N$-krát přidej zařízení
+		\item $N$-krát spáruj s novým zařízením
+		\item $N \times M$ přidej k synchronizovaným složkám 
+		\item $M$-krát přidej složku na novém zařízení
+	\end{itemize}
+
+	\vspace{0.4cm}
+	\[
+		1+\left(M+2\right)N+M
+	\]
+\end{frame}
+
+\begin{frame}
+	\frametitle{Moje zařízení}
+	\def\svgwidth{27cm}
+	\input{scheme.pdf_tex}
+\end{frame}
+
+\begin{frame}[fragile]
+	\frametitle{Syncthing konfigurace hodně zjednodušeně}
+	\small
+	\begin{minted}{xml}
+<configuration version="18">
+    <folder id="a" label="A" path="/home/user/a/">
+        <device id="0000000-0000000-.."></device>
+        <device id="1111111-1111111-.."></device>
+    </folder>
+    <folder id="b" label="B" path="/home/user/b/">
+        <device id="0000000-0000000-.."></device>
+        <device id="1111111-1111111-.."></device>
+    </folder>
+    <device id="0000000-0000000-.." name="cynerd-pc">
+        <address>dynamic</address>
+    </device>
+    <device id="1111111-1111111-.." name="server">
+        <address>tcp://cynerd.cz</address>
+    </device>
+</configuration>
+\end{minted}
+\end{frame}
+
+\begin{frame}[fragile]
+	\frametitle{Napiš si skript, vstupní data}
+	\begin{minted}{bash}
+# Syncthing PC id
+ID="0000000-0000000-0000000-0000000-.."
+# Name of machine
+NAME="cynerd-pc"
+# Address to machine, can be tcp://address.com or dynamic
+ADDRESS="dynamic"
+
+# Directoris to be synchronized
+# Format is ID:PATH
+DIRS="Sync:/home/user/Sync
+Sync2:/home/user/SyncIt"
+
+# REST api key
+APIKEY="bT6dCxEds9JPwiXMXavGNsXsz7ZFpSC5"
+\end{minted}
+\end{frame}
+
+\begin{frame}[fragile]
+	\frametitle{Napiš si skript, generuj zařízení do XML}
+	\begin{minted}{bash}
+# ...
+for h in syncthing/*; do
+
+. "$h" # Source host
+# Set to configuration
+echo "<device id=\"$ID\" name=\"$NAME\">" >>$TMPCNF
+echo "<address>$ADDRESS</address>" >>$TMPCNF
+echo "</device>" >>$TMPCNF
+# Parse DIRS of this host
+eval `echo "$DIRS" | sed -ne \
+'s/^\([^:]*\):.*$/ST_DIR_HOSTS_\1="$ST_DIR_HOSTS_\1 $ID"/p'`
+
+done
+# ...
+\end{minted}
+\end{frame}
+
+\begin{frame}[fragile]
+	\frametitle{Napiš si skript, generuj složky do XML}
+	\begin{minted}{bash}
+# ...
+. syncthing/"$HOST"
+while read -r d; do
+NM="$(echo "$d" | sed 's/:.*$//')" # Directory name
+PTH="$(echo "$d" | sed 's/^[^:]*://')" # Get target path
+# Write folder init
+echo "<f id=\"$NM\" label=\"$NM\" path=\"$PTH\">" >>$TMPCNF
+# Specify every all devices
+for dev in eval `echo \$ST_DIR_HOSTS_$NM`; do
+	echo "<device id=\"$dev\"></device>" >>$TMPCNF
+done
+# ...
+done <<<"$DIRS"
+# ...
+\end{minted}
+\end{frame}
+
+\begin{frame}
+	\frametitle{Moje řešení}
+
+	\begin{itemize}
+		\item Nastav nové zařízení
+		\item Přidej do sdílené konfigurace
+		\item N-krát deploy konfigurace
+	\end{itemize}
+
+	\vspace{0.4cm}
+	\[
+		2+N < 1+\left(M+2\right)N+M
+	\]
+\end{frame}
+
+\begin{frame}
+	\frametitle{Synchronizace konfigurace}
+	\includegraphics[width=3cm]{git.eps}
+
+	\vspace{1cm}
+	\begin{block}{\$HOME dot soubory}
+		3 zařízení 3 různé požadavky
+		\begin{itemize}
+			\item Laptop, OpenRC, Bumblebee, 2 disky
+			\item Laptop, OpenRC
+			\item Desktop, Systemd
+		\end{itemize}
+	\end{block}
+\end{frame}
+
+\begin{frame}[fragile]
+	\frametitle{Skriptujeme jednoduše}
+	\begin{minted}{bash}
+# install.sh
+cd `dirname $0`
+rsync -rlpt bashrc ~/.bashrc
+rsync -rlpt profile ~/.profile
+
+
+# get.sh
+cd `dirname $0`
+rsync -rlpt ~/.bashrc bashrc
+rsync -rlpt ~/.profile profile
+\end{minted}
+\end{frame}
+
+\begin{frame}[fragile]
+	\frametitle{Skriptujeme s vimdiff}
+	\begin{minted}{bash}
+cd `dirname $0`
+checkdiff()  {
+	for f in `find "$1" -type f`; do
+		if ! cmp "$1" "$f" >/dev/null; then
+			F="${f#$1}"
+			vimdiff "$1/$F" "$2/$F"
+		fi
+	done
+}
+inst() {
+	[ -e "$2" ] && checkdiff "$1" "$2" \
+		|| rsync -rlpt "$1" "$2"
+}
+inst bashrc ~/.bashrc
+\end{minted}
+\end{frame}
+
+\begin{frame}[fragile]
+	\frametitle{Skriptujeme skupinky}
+	\begin{minted}{bash}
+# ...
+
+read -p "Install bashrc? (Y/n) "
+if [[ $REPLY =~ ^[Yy]?$ ]]; then
+	inst bashrc ~/.bashrc
+	inst profile ~/.profile
+fi
+
+read -p "Install VIM scripts? (Y/n) "
+if [[ $REPLY =~ ^[Yy]?$ ]]; then
+	inst vimrc ~/.vimrc
+	inst vim ~/.vim
+fi
+
+\end{minted}
+\end{frame}
+
+\begin{frame}[fragile]
+	\frametitle{Balíčky jako konfigurace}
+	Pro Archlinux:
+	\begin{minted}{bash}
+sudo pacman -D --asdeps pkg
+sudo pacman -D --asexplicit pkg
+\end{minted}
+
+	\begin{minted}{bash}
+m4 archlinux.pkgs | sort | uniq > /tmp/file1
+pacaur -Qqe | sort > /tmp/file2
+diff --supppress-common-lines -ay /tmp/file1 /tmp/file2
+\end{minted}
+\end{frame}
+
+\begin{frame}
+	\frametitle{Závěrem}
+	\begin{itemize}
+		\item Jeden git repositář s konfigurací
+		\item Skript pro přesun změn v konfiguračních souborech z a do repositáře
+		\item Skript porotnání explicitně nainstalovaných balíčků
+		\item Skript pro generování Syncthing konfigurace
+	\end{itemize}
+\end{frame}
+
+\begin{frame}
+	\begin{block}{\large Děkuji za pozornost}
+	\end{block}
+	\url{https://github.com/Cynerd/myconfigs}
+	% TODO
+\end{frame}
+
+\end{document}
-- 
cgit v1.2.3

