Skip to content

Commit

Permalink
✨ EOW check-in
Browse files Browse the repository at this point in the history
  • Loading branch information
LukvonStrom committed Apr 18, 2021
1 parent 8ff4bee commit d658d09
Show file tree
Hide file tree
Showing 32 changed files with 554 additions and 262 deletions.
2 changes: 1 addition & 1 deletion Bachelorarbeit.drawio

Large diffs are not rendered by default.

20 changes: 2 additions & 18 deletions code/bewertungen/beispiel.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[
{
"Produkt":"X",
"Produkt":"Beispiel 1",
"values":{
"Auswertungen":0,
"Performancegarantien":0,
Expand All @@ -16,23 +16,7 @@
}
},
{
"Produkt":"Y",
"values":{
"Auswertungen":0,
"Performancegarantien":0,
"Robustheit & Fehlertoleranz":0,
"Skalierbarkeit & serverlessness":0,
"Kosten":0,
"geringer Wartungsaufwand":0,
"Fehlertransparenz":0,
"Erweiterbarkeit":0,
"Generalisierung":0,
"Integration mit AWS":0,
"Übertragbarkeit zwischen Clouds":0
}
},
{
"Produkt":"Z",
"Produkt":"Beispiel 2",
"values":{
"Auswertungen":0,
"Performancegarantien":0,
Expand Down
66 changes: 20 additions & 46 deletions code/bewertungen/bewertung.js
Original file line number Diff line number Diff line change
@@ -1,28 +1,3 @@
/* let code = `
\begin{table}[H]
\centering
\begin{tabular}{|l|l|l|}
\hline
\multicolumn{1}{|c|}{Kriterium} & \multicolumn{1}{c|}{Priorität} & \multicolumn{1}{c|}{Punkte} \\ \hline
Auswertungen nach \autoref{chap:auswertungsarten} & 11 & \cellcolor[HTML]{ECF4FF}\arg[1] \\ \hline
Performancegarantien & 10 & \cellcolor[HTML]{ECF4FF}\arg[2] \\ \hline
Robustheit \& Fehlertoleranz & 9 & \cellcolor[HTML]{ECF4FF}\arg[3] \\ \hline
Skalierbarkeit \& \enquote{serverlessness} & 8 & \cellcolor[HTML]{ECF4FF}\arg[4] \\ \hline
Kosten & 7 & \cellcolor[HTML]{ECF4FF}\arg[5] \\ \hline
geringer Wartungsaufwand & 6 & \cellcolor[HTML]{ECF4FF}\arg[6] \\ \hline
Fehlertransparenz & 5 & \cellcolor[HTML]{ECF4FF}\arg[7] \\ \hline
Erweiterbarkeit & 4 & \cellcolor[HTML]{ECF4FF}\arg[8] \\ \hline
Generalisierung & 3 & \cellcolor[HTML]{ECF4FF}\arg[9] \\ \hline
Integration mit anderen \ac{AWS} Diensleistungen & 2 & \cellcolor[HTML]{ECF4FF}\arg[10] \\ \hline
Übertragbarkeit zwischen Clouds (ISO 9126) & 1 & \cellcolor[HTML]{ECF4FF}\arg[11] \\ \hline
\rowcolor[HTML]{ECF4FF}
\multicolumn{1}{|c|}{\cellcolor[HTML]{ECF4FF}Summe} & 66 & \arg[12] \\ \hline
\end{tabular}
\caption{Bewertungsmatrix #1}
\label{tab:bewertungsmatrix-#1}
\end{table}
` */

const fs = require('fs');
const path = require('path')

Expand All @@ -32,24 +7,25 @@ const vergleiche = ['batch', 'echtzeit', 'multimode', 'beispiel'].map(file => {

const mapping = JSON.parse(fs.readFileSync(path.join(__dirname, `mapping.json`)).toString())

const max = {
"Auswertungen":11,
"Performancegarantien":10,
"Robustheit & Fehlertoleranz":9,
"Skalierbarkeit & serverlessness":8,
"Kosten":7,
"geringer Wartungsaufwand":6,
"Fehlertransparenz":5,
"Erweiterbarkeit":4,
"Generalisierung":3,
"Integration mit AWS":2,
let max = {
"Übertragbarkeit zwischen Clouds":1,
"Summe": 66
"Integration mit AWS":3,
"Generalisierung":4,
"Erweiterbarkeit":4,
"Fehlertransparenz":5,
"geringer Wartungsaufwand":7,
"Skalierbarkeit & serverlessness":7,
"Kosten":7,
"Performancegarantien":8,
"Robustheit & Fehlertoleranz":9,
"Auswertungen":11
}
// https://stackoverflow.com/a/1026087
function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
max.Summe = Object.values(max).reduce((accumulator, currentValue) => accumulator + currentValue);


for (let { name, content } of vergleiche) {

Expand All @@ -64,27 +40,25 @@ for (let { name, content } of vergleiche) {

const produkte = content;

let keys = new Set();



const final = produkte.map((produktObj) => {
const sum = Object.values(produktObj.values).reduce((accumulator, currentValue) => accumulator + currentValue);
produktObj.values.Summe = `\\cellcolor[HTML]{ECF4FF}${sum}`;
return produktObj
}).sort((a, b) => (a.values.Summe < b.values.Summe) ? 1 : ((b.values.Summe < a.values.Summe) ? -1 : 0));
final.forEach(produktObj => {
Object.keys(produktObj.values).forEach(el => keys.add(el))
keys.add("Summe");
});

let rows = [];
let headerstr = [`\\multicolumn{1}{|c|}{Kriterium}`, `\\multicolumn{1}{c!{\\vrule width 2pt}}{\\begin{tabular}[c]{@{}c@{}}max.\\\\Punkte\\end{tabular}}`];
for (let { Produkt } of final) {
headerstr.push(`\\multicolumn{1}{c|}{\\begin{tabular}[c]{@{}c@{}}${Produkt.split('~').join('\\\\')}\\end{tabular}}`)
}
rows.push(headerstr.join(" & ") + ` \\\\ \\hline`)

let keysArray = [...keys]
for (let key of keysArray) {

for (let index = 0; index < Object.keys(max).length; index++) {
const key = Object.keys(max)[index];

let beginning = [];
beginning.push(mapping[key])
beginning.push(max[key])
Expand All @@ -97,7 +71,7 @@ for (let { name, content } of vergleiche) {
if (key === "Summe") {
rows.push('\\rowcolor[HTML]{ECF4FF}')
}
if(keysArray.indexOf(key) == keysArray.length -2){
if(index === Object.keys(max).length -2){
rows.push(string + ` \\\\ \\hlinewd{2pt}`)
}else{
rows.push(string + ` \\\\ \\hline`);
Expand Down
22 changes: 11 additions & 11 deletions code/bewertungen/multimode.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@
{
"Produkt":"AWS~IoT~Analytics",
"values":{
"Auswertungen":1,
"Performancegarantien":1,
"Robustheit & Fehlertoleranz":1,
"Skalierbarkeit & serverlessness":1,
"Kosten":1,
"geringer Wartungsaufwand":1,
"Fehlertransparenz":1,
"Erweiterbarkeit":1,
"Generalisierung":1,
"Integration mit AWS":1,
"Übertragbarkeit zwischen Clouds":1
"Übertragbarkeit zwischen Clouds":0,
"Integration mit AWS":3,
"Generalisierung":3,
"Erweiterbarkeit":4,
"Fehlertransparenz":4,
"geringer Wartungsaufwand":4,
"Skalierbarkeit & serverlessness":6,
"Kosten":5,
"Performancegarantien":7,
"Robustheit & Fehlertoleranz":7,
"Auswertungen":11
}
}
]
12 changes: 12 additions & 0 deletions code/kafka/average.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
final KTable<Long, CountAndSum> ratingCountAndSum =
ratingsById.aggregate(() -> new CountAndSum(0 L, 0.0),
(key, value, aggregate) -> {
aggregate.setCount(aggregate.getCount() + 1);
aggregate.setSum(aggregate.getSum() + value);
return aggregate;
},
Materialized.with(Long(), countAndSumSerde));

final KTable<Long, Double> ratingAverage =
ratingCountAndSum.mapValues(value -> value.getSum() / value.getCount(),
Materialized.as("average-ratings"));
4 changes: 4 additions & 0 deletions code/uml/iot-core.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
@startuml
"IoT Core"->Verarbeitender: Daten
Verarbeitender->Benachrichtigung: Alarmierung
@enduml
2 changes: 1 addition & 1 deletion content/02-theorie/1-datenanalyse/main.tex
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ \subsubsection{Median und Quantile}

\subsubsection{Anomaliedetektion}
Eine weitere gängige Datenanalysemethode ist die Anomaliedetektion.
Dabei kann als Anomalie jeder Datenpunkt gesehen werden, der die Komplexität eines Modells, welches die Daten beschreibt, substantiell erhöhen würde.\footcite[Vgl.][]{Guha.2016} Verwandt ist dabei das Feld der \enquote{Ausreissererkennung}/outlier detection.
Dabei kann jeder Datenpunkt als Anomalie gesehen werden, der die Komplexität eines Modells, welches die Daten beschreibt, substantiell erhöhen würde.\footcite[Vgl.][]{Guha.2016} Verwandt ist dabei das Feld der \enquote{Ausreissererkennung}/outlier detection.
Verwendet werden können dabei diverse Methodiken. Innerhalb von \ac{AWS} Produkten wird zur Anomalieerkennung ein Algorithmus basierend auf Random Cut Forest verwendet.\footcite[Vgl.][1]{Guha.2016} Weitere Methodiken wären aber auch Random Walk oder Logik basierend auf Standardannahmen.\footcite[Vgl.][]{Moonesinghe.2006}\nzitat\footcite[Vgl.][]{Angiulli.2008} Anomalien können kausal mit unterliegenden Problemen z.B. des Sensors zusammenhängen, weshalb es wichtig ist, auch abseits von den in \autoref{chap:schwellwert} gezeigten Schwellwertüberprüfungen die Daten auf Anomalien zu prüfen.

\begin{figure}[H]
Expand Down
Loading

0 comments on commit d658d09

Please sign in to comment.