302 lines
12 KiB
TeX
302 lines
12 KiB
TeX
\documentclass[25pt, a0paper, landscape]{tikzposter}
|
|
\usepackage[utf8]{inputenc}
|
|
\usepackage[T1]{fontenc}
|
|
\usepackage[ngerman]{babel}
|
|
\usepackage{graphicx}
|
|
\usepackage[sfdefault]{FiraSans}
|
|
\usepackage{FiraMono}
|
|
\usepackage{pgfplots}
|
|
\pgfplotsset{compat=1.17}
|
|
\usetikzlibrary{shapes.geometric, shadows}
|
|
|
|
% Riesige Grundschrift, lesbar aus mehreren Metern
|
|
\makeatletter
|
|
\renewcommand\normalsize{\@setfontsize\normalsize{40}{54}}
|
|
\renewcommand\small{\@setfontsize\small{32}{42}}
|
|
\renewcommand\large{\@setfontsize\large{48}{60}}
|
|
\renewcommand\Large{\@setfontsize\Large{58}{70}}
|
|
\renewcommand\LARGE{\@setfontsize\LARGE{70}{84}}
|
|
\renewcommand\huge{\@setfontsize\huge{82}{96}}
|
|
\renewcommand\Huge{\@setfontsize\Huge{95}{110}}
|
|
\makeatother
|
|
\AtBeginDocument{\normalsize}
|
|
|
|
% Helles Design, kraeftige Akzente
|
|
\definecolor{bglight}{HTML}{FFFFFF}
|
|
\definecolor{card}{HTML}{FFFFFF}
|
|
\definecolor{cardline}{HTML}{E2E8F0}
|
|
\definecolor{strongline}{HTML}{CBD5E1}
|
|
\definecolor{rowbg}{HTML}{F1F5F9}
|
|
\definecolor{textdark}{HTML}{0F172A}
|
|
\definecolor{textmut}{HTML}{64748B}
|
|
\definecolor{textchart}{HTML}{334155}
|
|
\definecolor{accent}{HTML}{A855F7}
|
|
\definecolor{accentsoft}{HTML}{A855F7}
|
|
\definecolor{codekey}{HTML}{A855F7}
|
|
\definecolor{lilaa}{HTML}{A855F7}
|
|
\definecolor{liladeep}{HTML}{A855F7}
|
|
\definecolor{gruen}{HTML}{10B981}
|
|
\definecolor{rot}{HTML}{F43F5E}
|
|
\definecolor{gelb}{HTML}{F59E0B}
|
|
\definecolor{grau}{HTML}{64748B}
|
|
\definecolor{codebg}{HTML}{0F172A}
|
|
|
|
\definecolorstyle{RingStyle}{}{
|
|
\colorlet{backgroundcolor}{bglight}
|
|
\colorlet{framecolor}{bglight}
|
|
\colorlet{titlefgcolor}{textdark}
|
|
\colorlet{titlebgcolor}{bglight}
|
|
\colorlet{blocktitlebgcolor}{card}
|
|
\colorlet{blocktitlefgcolor}{textdark}
|
|
\colorlet{blockbodybgcolor}{card}
|
|
\colorlet{blockbodyfgcolor}{textdark}
|
|
\colorlet{innerblocktitlebgcolor}{card}
|
|
\colorlet{innerblocktitlefgcolor}{textdark}
|
|
\colorlet{innerblockbodybgcolor}{card}
|
|
\colorlet{innerblockbodyfgcolor}{textdark}
|
|
\colorlet{notefgcolor}{textdark}
|
|
\colorlet{notebgcolor}{card}
|
|
\colorlet{noteframecolor}{card}
|
|
}
|
|
\usecolorstyle{RingStyle}
|
|
|
|
% Ein Block ist eine weisse Karte mit weichem Schatten
|
|
\defineblockstyle{RingBlock}{
|
|
titlewidthscale=1, bodywidthscale=1, titleleft,
|
|
titleoffsetx=0pt, titleoffsety=0pt, bodyoffsetx=0pt, bodyoffsety=14mm,
|
|
bodyverticalshift=10mm, roundedcorners=26, linewidth=2pt,
|
|
titleinnersep=12mm, bodyinnersep=13mm
|
|
}{
|
|
\draw[color=cardline, line width=2pt, fill=blockbodybgcolor, rounded corners=26,
|
|
drop shadow={shadow xshift=0mm, shadow yshift=-2.5mm, opacity=0.10, fill=textdark}]
|
|
(blockbody.south west) rectangle (blocktitle.north east);
|
|
\ifBlockHasTitle
|
|
\fill[accentsoft, rounded corners=1] ([xshift=12mm, yshift=6mm]blocktitle.south west)
|
|
rectangle ([xshift=110mm, yshift=5mm]blocktitle.south west);
|
|
\fi
|
|
}
|
|
\useblockstyle{RingBlock}
|
|
|
|
% Unsichtbarer Block fuer das Fazit-Banner
|
|
\defineblockstyle{PlainBlock}{
|
|
titlewidthscale=1, bodywidthscale=1, titleleft,
|
|
titleoffsetx=0pt, titleoffsety=0pt, bodyoffsetx=0pt, bodyoffsety=0pt,
|
|
bodyverticalshift=0pt, roundedcorners=0, linewidth=0pt,
|
|
titleinnersep=0mm, bodyinnersep=0mm
|
|
}{}
|
|
|
|
% Weisser Hintergrund fuer den Druck
|
|
\definebackgroundstyle{RingBackground}{
|
|
\draw[color=bglight, fill=bglight] (bottomleft) rectangle (topright);
|
|
}
|
|
\usebackgroundstyle{RingBackground}
|
|
|
|
\usetitlestyle{Empty}
|
|
\tikzposterlatexaffectionproofoff
|
|
|
|
% Browserfenster um einen Screenshot
|
|
% #1 Breite in mm, #2 Hoehe des Bilds in mm, #3 Pfad
|
|
\newcommand{\browserframe}[3]{%
|
|
\begin{tikzpicture}[x=1mm, y=1mm]
|
|
\begin{scope}
|
|
\clip[rounded corners=16] (0,0) rectangle (#1, {#2+16});
|
|
\fill[codebg] (0, #2) rectangle (#1, {#2+16});
|
|
\node[anchor=south west, inner sep=0] at (0,0) {\includegraphics[width=#1 mm]{#3}};
|
|
\end{scope}
|
|
\fill[rot] (11, {#2+8}) circle (3.2);
|
|
\fill[gelb] (22, {#2+8}) circle (3.2);
|
|
\fill[gruen] (33, {#2+8}) circle (3.2);
|
|
\draw[strongline, line width=1.8pt, rounded corners=16] (0,0) rectangle (#1, {#2+16});
|
|
\end{tikzpicture}}
|
|
|
|
% Schmale Zeile fuer die Marktrecherche
|
|
% #1 Farbe, #2 Name, #3 Stichwort, #4 y-Position
|
|
\newcommand{\dbrow}[4]{%
|
|
\node[rounded corners=12, fill=rowbg, minimum width=352mm, minimum height=38mm, anchor=west] at (0, #4) {};
|
|
\begin{scope}
|
|
\clip[rounded corners=12] (0, #4-19) rectangle (352, #4+19);
|
|
\fill[#1] (0, #4-19) rectangle (8, #4+19);
|
|
\end{scope}
|
|
\node[anchor=west, font=\fontsize{36}{42}\selectfont\bfseries, text=#1] at (22, #4) {#2};
|
|
\node[anchor=east, font=\fontsize{26}{32}\selectfont, text=textmut] at (340, #4) {#3};
|
|
}
|
|
|
|
% Balken fuer das Ranking der Nutzwertanalyse
|
|
% #1 Farbe, #2 Name, #3 Punkte, #4 y-Position
|
|
\newcommand{\rankbar}[4]{%
|
|
\draw[fill=rowbg, draw=cardline, line width=1pt, rounded corners=8] (0, #4-15) rectangle (315, #4+15);
|
|
\draw[fill=#1, draw=none, rounded corners=8] (0, #4-15) rectangle ({55 + #3*7.0}, #4+15);
|
|
\node[anchor=west, text=white, font=\fontsize{31}{37}\selectfont\bfseries] at (8, #4) {#2};
|
|
\node[anchor=east, fill=white, text=#1, rounded corners=9, inner xsep=5mm, inner ysep=2mm,
|
|
font=\fontsize{29}{35}\selectfont\bfseries] at ({55 + #3*7.0 - 6}, #4) {#3};
|
|
}
|
|
|
|
\settitle{
|
|
\begin{minipage}[c]{0.63\linewidth}
|
|
{\color{textdark}\fontsize{108}{116}\selectfont\bfseries Ringstats}\par
|
|
\vspace{8mm}
|
|
{\color{accent}\fontsize{42}{52}\selectfont Live Spielerdaten aus dem Spiel, gespeichert in \textcolor{liladeep}{Key-Value-Datenbanken}}\par
|
|
\end{minipage}\hfill
|
|
\begin{minipage}[c]{0.35\linewidth}
|
|
\begin{flushright}
|
|
{\color{textmut}\fontsize{33}{44}\selectfont Justin Rost (7208260) \ \textcolor{strongline}{|}\ Michelle Reichelt (7216628) \ \textcolor{strongline}{|}\ Yasin Ergün (7215184)\par}
|
|
\vspace{4mm}
|
|
{\color{textmut}\fontsize{33}{44}\selectfont Moderne Datenbanken\par}
|
|
\end{flushright}
|
|
\end{minipage}
|
|
|
|
\vspace{6mm}
|
|
{\color{accentsoft}\rule{\linewidth}{3pt}\par}
|
|
}
|
|
|
|
\begin{document}
|
|
\maketitle[width=0.97\textwidth]
|
|
|
|
\begin{columns}
|
|
|
|
% ================= SPALTE 1 =================
|
|
\column{0.34}
|
|
|
|
\block{Was ist Ringstats?}{
|
|
\centering
|
|
\vspace{5mm}
|
|
\begin{tikzpicture}[x=1mm, y=1mm, line cap=round, line join=round]
|
|
% Boxen
|
|
\node[rounded corners=14, fill=rowbg, draw=cardline, line width=1.5pt, minimum width=74mm, minimum height=70mm] (a) at (0,0) {};
|
|
\node[rounded corners=14, fill=rowbg, draw=cardline, line width=1.5pt, minimum width=74mm, minimum height=70mm] (b) at (94,0) {};
|
|
\node[rounded corners=14, fill=liladeep, minimum width=74mm, minimum height=70mm] (c) at (188,0) {};
|
|
\node[rounded corners=14, fill=rowbg, draw=cardline, line width=1.5pt, minimum width=74mm, minimum height=70mm] (d) at (282,0) {};
|
|
\draw[-stealth, line width=4.5pt, accentsoft] (a) -- (b);
|
|
\draw[stealth-stealth, line width=4.5pt, accentsoft] (b) -- (c);
|
|
\draw[-stealth, line width=4.5pt, accentsoft] (c) -- (d);
|
|
% Icon Ring
|
|
\draw[accent, line width=5pt] (0, 15) circle (9);
|
|
% Icon Monitor
|
|
\draw[accent, line width=4pt, rounded corners=2] (83, 10) rectangle (105, 25);
|
|
\draw[accent, line width=4pt] (94, 10) -- (94, 6) (88, 6) -- (100, 6);
|
|
% Icon Datenbank (Zylinder)
|
|
\draw[white, line width=4pt] (179, 21) arc (180:360:9 and 3.2);
|
|
\draw[white, line width=4pt] (179, 21) -- (179, 9);
|
|
\draw[white, line width=4pt] (197, 21) -- (197, 9);
|
|
\draw[white, line width=4pt] (179, 9) arc (180:360:9 and 3.2);
|
|
\draw[white, line width=4pt] (188, 21) ellipse (9 and 3.2);
|
|
% Icon Globus
|
|
\draw[accent, line width=4pt] (282, 15) circle (9);
|
|
\draw[accent, line width=3pt] (282, 15) ellipse (4 and 9);
|
|
\draw[accent, line width=3pt] (273, 15) -- (291, 15);
|
|
% Beschriftung
|
|
\node[text=textdark, font=\fontsize{25}{31}\selectfont\bfseries, align=center] at (0, -16) {Elden\\Ring};
|
|
\node[text=textdark, font=\fontsize{25}{31}\selectfont\bfseries, align=center] at (94, -16) {Client\\Mod};
|
|
\node[text=white, font=\fontsize{25}{31}\selectfont\bfseries, align=center] at (188, -16) {Daten-\\bank};
|
|
\node[text=textdark, font=\fontsize{25}{31}\selectfont\bfseries, align=center] at (282, -16) {Website};
|
|
|
|
\end{tikzpicture}
|
|
|
|
\vspace{10mm}
|
|
{\large Spielerdaten \textcolor{accent}{\textbf{live}} erfassen und anzeigen.\par}
|
|
|
|
\vspace{9mm}
|
|
\begin{tikzpicture}
|
|
\node[rounded corners=14, fill=codebg, minimum width=0.95\linewidth, inner sep=9mm] at (0,0) {
|
|
\ttfamily\fontsize{29}{36}\selectfont\textcolor{codekey}{player:1} \textcolor{cardline}{\{ health, region\_id \}}
|
|
};
|
|
\end{tikzpicture}
|
|
|
|
\vspace{2mm}
|
|
{\small\color{textmut} Ein Schlüssel pro Entität, gleich in allen drei Datenbanken.\par}
|
|
}
|
|
|
|
\block{Marktrecherche}{
|
|
\centering
|
|
\begin{tikzpicture}[x=1mm, y=1mm]
|
|
\dbrow{rot}{Redis}{In-Memory, Hashes und Sets}{0}
|
|
\dbrow{gruen}{Memcached}{In-Memory, keine Persistenz}{-45}
|
|
\dbrow{liladeep}{ArangoDB}{multimodale Datenbank}{-90}
|
|
\dbrow{grau}{DynamoDB}{Cloud, kostet pro Anfrage}{-135}
|
|
\dbrow{grau}{etcd}{nur für Konfigurationen}{-180}
|
|
\dbrow{grau}{Riak KV}{kaum noch entwickelt}{-225}
|
|
\end{tikzpicture}
|
|
}
|
|
|
|
% ================= SPALTE 2 =================
|
|
\column{0.33}
|
|
|
|
\block{Live-Ansicht}{
|
|
\centering
|
|
\browserframe{338}{185}{assets/website-home-redis.png}
|
|
|
|
\vspace{8mm}
|
|
\browserframe{338}{185}{assets/website-search.png}
|
|
|
|
|
|
}
|
|
|
|
% ================= SPALTE 3 =================
|
|
\column{0.33}
|
|
|
|
\block{Nutzwertanalyse}{
|
|
\centering
|
|
\begin{tikzpicture}[x=1mm, y=1mm]
|
|
\rankbar{rot}{Redis}{37}{0}
|
|
\rankbar{gruen}{Memcached}{27}{-34}
|
|
\rankbar{lilaa}{ArangoDB}{22}{-68}
|
|
\rankbar{grau}{Riak KV}{22}{-102}
|
|
\rankbar{grau}{etcd}{21}{-136}
|
|
\rankbar{grau}{DynamoDB}{18}{-170}
|
|
\end{tikzpicture}
|
|
}
|
|
|
|
\block{Performancevergleich}{
|
|
\centering
|
|
\begin{tikzpicture}
|
|
\begin{axis}[
|
|
ybar,
|
|
bar width=12mm,
|
|
width=0.99\linewidth,
|
|
height=150mm,
|
|
ymin=0, ymax=2750,
|
|
symbolic x coords={Sync Schreiben, Sync Lesen, Region Lesen, Region Schreiben},
|
|
xtick=data,
|
|
axis line style={draw=none},
|
|
tick label style={color=textchart, font=\fontsize{23}{29}\selectfont},
|
|
ytick={0,1000,2000},
|
|
yticklabels={0, 1000, 2000},
|
|
x tick label style={color=textchart},
|
|
ymajorgrids=true,
|
|
grid style={cardline},
|
|
legend style={draw=none, fill=none, text=textdark, font=\fontsize{27}{34}\selectfont, at={(0.5,1.02)}, anchor=south, legend columns=3, column sep=10mm},
|
|
nodes near coords,
|
|
every node near coord/.append style={color=textmut, font=\fontsize{17}{21}\selectfont, /pgf/number format/1000 sep={}},
|
|
enlarge x limits=0.14,
|
|
]
|
|
\addplot[fill=rot, draw=rot] coordinates {(Sync Schreiben,2154) (Sync Lesen,2162) (Region Lesen,2153) (Region Schreiben,2299)};
|
|
\addplot[fill=gruen, draw=gruen] coordinates {(Sync Schreiben,2162) (Sync Lesen,2185) (Region Lesen,2153) (Region Schreiben,2075)};
|
|
\addplot[fill=lilaa, draw=lilaa] coordinates {(Sync Schreiben,1207) (Sync Lesen,1332) (Region Lesen,1321) (Region Schreiben,1217)};
|
|
\legend{Redis, Memcached, ArangoDB}
|
|
\end{axis}
|
|
\end{tikzpicture}
|
|
|
|
\vspace{8mm}
|
|
{\large\bfseries\color{textdark} Ops/s: \textcolor{liladeep}{ArangoDB} nur halb so schnell.\par}
|
|
}
|
|
|
|
\end{columns}
|
|
|
|
\useblockstyle{PlainBlock}
|
|
\block{}{
|
|
\centering
|
|
\begin{tikzpicture}[x=1mm, y=1mm]
|
|
\node[rounded corners=24, fill=liladeep, minimum width=0.99\linewidth, minimum height=104mm,
|
|
drop shadow={shadow xshift=0mm, shadow yshift=-3mm, opacity=0.15, fill=textdark}] (banner) at (0,0) {};
|
|
\node[text=white] at ([yshift=14mm]banner.center) {\Huge Unsere Wahl: \textbf{Redis}};
|
|
\node[rounded corners=22, fill=white, fill opacity=0.20, text opacity=1, text=white,
|
|
font=\fontsize{45}{55}\selectfont\bfseries, inner xsep=18mm, inner ysep=8mm] at ([xshift=-190mm, yshift=-26mm]banner.center) {schnell wie Memcached};
|
|
\node[rounded corners=22, fill=white, fill opacity=0.20, text opacity=1, text=white,
|
|
font=\fontsize{45}{55}\selectfont\bfseries, inner xsep=18mm, inner ysep=8mm] at ([yshift=-26mm]banner.center) {Hashes und Sets};
|
|
\node[rounded corners=22, fill=white, fill opacity=0.20, text opacity=1, text=white,
|
|
font=\fontsize{45}{55}\selectfont\bfseries, inner xsep=18mm, inner ysep=8mm] at ([xshift=142mm, yshift=-26mm]banner.center) {Persistenz};
|
|
\end{tikzpicture}
|
|
}
|
|
|
|
\end{document}
|