\bibcite{Ndukwe}{{Ndu17}{}{{}}{{}}} | \bibcite{Ndukwe}{{Ndu17}{}{{}}{{}}} | ||||
\bibcite{Shelest}{{She09}{}{{}}{{}}} | \bibcite{Shelest}{{She09}{}{{}}{{}}} | ||||
\providecommand\NAT@force@numbers{}\NAT@force@numbers | \providecommand\NAT@force@numbers{}\NAT@force@numbers | ||||
\@writefile{toc}{\contentsline {chapter}{Referenzen}{11}{chapter*.4}} | |||||
\@writefile{toc}{\contentsline {chapter}{Referenzen}{13}{chapter*.6}} |
This is XeTeX, Version 3.14159265-2.6-0.99999 (TeX Live 2018) (preloaded format=xelatex 2018.6.7) 28 SEP 2018 16:57 | |||||
This is XeTeX, Version 3.14159265-2.6-0.99999 (TeX Live 2018) (preloaded format=xelatex 2018.6.7) 2 OCT 2018 18:40 | |||||
entering extended mode | entering extended mode | ||||
\write18 enabled. | \write18 enabled. | ||||
file:line:error style messages enabled. | file:line:error style messages enabled. | ||||
(babel) in language on input line 5. | (babel) in language on input line 5. | ||||
Package babel Info: Redefining german shorthand "~ | Package babel Info: Redefining german shorthand "~ | ||||
(babel) in language on input line 5. | (babel) in language on input line 5. | ||||
File: figures/MVP.png Graphic file (type bmp) | |||||
<figures/MVP.png> | |||||
File: figures/request-response-cycle.png Graphic file (type bmp) | |||||
<figures/request-response-cycle.png> | |||||
Package babel Info: Redefining german shorthand "f | Package babel Info: Redefining german shorthand "f | ||||
(babel) in language on input line 9. | |||||
(babel) in language on input line 22. | |||||
Package babel Info: Redefining german shorthand "| | Package babel Info: Redefining german shorthand "| | ||||
(babel) in language on input line 9. | |||||
(babel) in language on input line 22. | |||||
Package babel Info: Redefining german shorthand "~ | Package babel Info: Redefining german shorthand "~ | ||||
(babel) in language on input line 9. | |||||
(babel) in language on input line 22. | |||||
Package babel Info: Redefining german shorthand "f | Package babel Info: Redefining german shorthand "f | ||||
(babel) in language on input line 10. | |||||
(babel) in language on input line 22. | |||||
Package babel Info: Redefining german shorthand "| | Package babel Info: Redefining german shorthand "| | ||||
(babel) in language on input line 10. | |||||
(babel) in language on input line 22. | |||||
Package babel Info: Redefining german shorthand "~ | Package babel Info: Redefining german shorthand "~ | ||||
(babel) in language on input line 10. | |||||
(babel) in language on input line 22. | |||||
[3 | |||||
] | |||||
Package babel Info: Redefining german shorthand "f | Package babel Info: Redefining german shorthand "f | ||||
(babel) in language on input line 11. | |||||
(babel) in language on input line 27. | |||||
Package babel Info: Redefining german shorthand "| | Package babel Info: Redefining german shorthand "| | ||||
(babel) in language on input line 11. | |||||
(babel) in language on input line 27. | |||||
Package babel Info: Redefining german shorthand "~ | Package babel Info: Redefining german shorthand "~ | ||||
(babel) in language on input line 11. | |||||
(babel) in language on input line 27. | |||||
Package babel Info: Redefining german shorthand "f | |||||
(babel) in language on input line 28. | |||||
Package babel Info: Redefining german shorthand "| | |||||
(babel) in language on input line 28. | |||||
Package babel Info: Redefining german shorthand "~ | |||||
(babel) in language on input line 28. | |||||
Package babel Info: Redefining german shorthand "f | |||||
(babel) in language on input line 29. | |||||
Package babel Info: Redefining german shorthand "| | |||||
(babel) in language on input line 29. | |||||
Package babel Info: Redefining german shorthand "~ | |||||
(babel) in language on input line 29. | |||||
Package babel Info: Redefining german shorthand "f | |||||
(babel) in language on input line 30. | |||||
Package babel Info: Redefining german shorthand "| | |||||
(babel) in language on input line 30. | |||||
Package babel Info: Redefining german shorthand "~ | |||||
(babel) in language on input line 30. | |||||
) | ) | ||||
Underfull \vbox (badness 2671) has occurred while \output is active [] | |||||
Package babel Info: Redefining german shorthand "f | Package babel Info: Redefining german shorthand "f | ||||
(babel) in language on input line 56. | (babel) in language on input line 56. | ||||
Package babel Info: Redefining german shorthand "| | Package babel Info: Redefining german shorthand "| | ||||
(babel) in language on input line 56. | (babel) in language on input line 56. | ||||
Package babel Info: Redefining german shorthand "~ | Package babel Info: Redefining german shorthand "~ | ||||
(babel) in language on input line 56. | (babel) in language on input line 56. | ||||
[3 | |||||
] | |||||
[4] | |||||
Package babel Info: Redefining german shorthand "f | |||||
(babel) in language on input line 56. | |||||
Package babel Info: Redefining german shorthand "| | |||||
(babel) in language on input line 56. | |||||
Package babel Info: Redefining german shorthand "~ | |||||
(babel) in language on input line 56. | |||||
Package babel Info: Redefining german shorthand "f | |||||
(babel) in language on input line 56. | |||||
Package babel Info: Redefining german shorthand "| | |||||
(babel) in language on input line 56. | |||||
Package babel Info: Redefining german shorthand "~ | |||||
(babel) in language on input line 56. | |||||
[5] | |||||
\openout2 = `chapters/prototyp.aux'. | \openout2 = `chapters/prototyp.aux'. | ||||
(./chapters/prototyp.tex | (./chapters/prototyp.tex | ||||
(babel) in language on input line 1. | (babel) in language on input line 1. | ||||
Package babel Info: Redefining german shorthand "~ | Package babel Info: Redefining german shorthand "~ | ||||
(babel) in language on input line 1. | (babel) in language on input line 1. | ||||
[4 | |||||
[6 | |||||
(babel) in language on input line 57. | (babel) in language on input line 57. | ||||
Package babel Info: Redefining german shorthand "~ | Package babel Info: Redefining german shorthand "~ | ||||
(babel) in language on input line 57. | (babel) in language on input line 57. | ||||
[5] | |||||
[7] | |||||
\openout2 = `chapters/ergebnis.aux'. | \openout2 = `chapters/ergebnis.aux'. | ||||
(./chapters/ergebnis.tex | (./chapters/ergebnis.tex | ||||
(babel) in language on input line 1. | (babel) in language on input line 1. | ||||
Package babel Info: Redefining german shorthand "~ | Package babel Info: Redefining german shorthand "~ | ||||
(babel) in language on input line 1. | (babel) in language on input line 1. | ||||
[6 | |||||
[8 | |||||
(babel) in language on input line 58. | (babel) in language on input line 58. | ||||
Package babel Info: Redefining german shorthand "~ | Package babel Info: Redefining german shorthand "~ | ||||
(babel) in language on input line 58. | (babel) in language on input line 58. | ||||
[7] | |||||
[9] | |||||
\openout2 = `chapters/ausblick.aux'. | \openout2 = `chapters/ausblick.aux'. | ||||
(./chapters/ausblick.tex) | (./chapters/ausblick.tex) | ||||
(babel) in language on input line 1. | (babel) in language on input line 1. | ||||
Package babel Info: Redefining german shorthand "~ | Package babel Info: Redefining german shorthand "~ | ||||
(babel) in language on input line 1. | (babel) in language on input line 1. | ||||
[8 | |||||
[10 | |||||
(babel) in language on input line 60. | (babel) in language on input line 60. | ||||
Package babel Info: Redefining german shorthand "~ | Package babel Info: Redefining german shorthand "~ | ||||
(babel) in language on input line 60. | (babel) in language on input line 60. | ||||
[9] (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/bachelorabeit_EstherKleinhenz.bbl | |||||
[11] (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/bachelorabeit_EstherKleinhenz.bbl | |||||
Package babel Info: Redefining german shorthand "f | Package babel Info: Redefining german shorthand "f | ||||
(babel) in language on input line 1. | (babel) in language on input line 1. | ||||
Package babel Info: Redefining german shorthand "| | Package babel Info: Redefining german shorthand "| | ||||
(babel) in language on input line 1. | (babel) in language on input line 1. | ||||
Package babel Info: Redefining german shorthand "~ | Package babel Info: Redefining german shorthand "~ | ||||
(babel) in language on input line 1. | (babel) in language on input line 1. | ||||
[10 | |||||
[12 | |||||
(babel) in language on input line 75. | (babel) in language on input line 75. | ||||
Package babel Info: Redefining german shorthand "~ | Package babel Info: Redefining german shorthand "~ | ||||
(babel) in language on input line 75. | (babel) in language on input line 75. | ||||
[11] | |||||
[13] | |||||
Package atveryend Info: Empty hook `AfterLastShipout' on input line 75. | Package atveryend Info: Empty hook `AfterLastShipout' on input line 75. | ||||
(/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/bachelorabeit_EstherKleinhenz.aux (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/titlepage/titlepage.aux) (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/abstract/abstract.aux) (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/chapters/einleitung.aux) (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/chapters/framework.aux) (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/chapters/prototyp.aux) (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/chapters/ergebnis.aux) (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/chapters/ausblick.aux) (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/chapters/fazit.aux)) | (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/bachelorabeit_EstherKleinhenz.aux (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/titlepage/titlepage.aux) (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/abstract/abstract.aux) (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/chapters/einleitung.aux) (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/chapters/framework.aux) (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/chapters/prototyp.aux) (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/chapters/ergebnis.aux) (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/chapters/ausblick.aux) (/Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/chapters/fazit.aux)) | ||||
Package atveryend Info: Empty hook `AtVeryEndDocument' on input line 75. | Package atveryend Info: Empty hook `AtVeryEndDocument' on input line 75. | ||||
) | ) | ||||
(\end occurred when \ifnum on line 5 was incomplete) | (\end occurred when \ifnum on line 5 was incomplete) | ||||
Here is how much of TeX's memory you used: | Here is how much of TeX's memory you used: | ||||
26504 strings out of 492970 | |||||
475230 string characters out of 6133939 | |||||
545186 words of memory out of 5000000 | |||||
30130 multiletter control sequences out of 15000+600000 | |||||
26514 strings out of 492970 | |||||
475468 string characters out of 6133939 | |||||
546201 words of memory out of 5000000 | |||||
30138 multiletter control sequences out of 15000+600000 | |||||
553864 words of font info for 60 fonts, out of 8000000 for 9000 | 553864 words of font info for 60 fonts, out of 8000000 for 9000 | ||||
1348 hyphenation exceptions out of 8191 | 1348 hyphenation exceptions out of 8191 | ||||
58i,11n,50p,10437b,822s stack positions out of 5000i,500n,10000p,200000b,80000s | 58i,11n,50p,10437b,822s stack positions out of 5000i,500n,10000p,200000b,80000s | ||||
Output written on /Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/bachelorabeit_EstherKleinhenz.pdf (17 pages). | |||||
Output written on /Users/Esthi/thesis_ek/doc/bachelorarbeit_EstherKleinhenz/.texpadtmp/bachelorabeit_EstherKleinhenz.pdf (19 pages). |
\BOOKMARK [1][-]{section.1.2}{Ziel\040der\040Arbeit}{chapter.1}% 4 | \BOOKMARK [1][-]{section.1.2}{Ziel\040der\040Arbeit}{chapter.1}% 4 | ||||
\BOOKMARK [0][-]{chapter.2}{Framework}{}% 5 | \BOOKMARK [0][-]{chapter.2}{Framework}{}% 5 | ||||
\BOOKMARK [1][-]{section.2.1}{Django}{chapter.2}% 6 | \BOOKMARK [1][-]{section.2.1}{Django}{chapter.2}% 6 | ||||
\BOOKMARK [1][-]{section.2.2}{Erweiterung}{chapter.2}% 7 | |||||
\BOOKMARK [1][-]{section.2.2}{Erweiterungen}{chapter.2}% 7 | |||||
\BOOKMARK [2][-]{subsection.2.2.1}{Taggable-Manager}{section.2.2}% 8 | \BOOKMARK [2][-]{subsection.2.2.1}{Taggable-Manager}{section.2.2}% 8 | ||||
\BOOKMARK [1][-]{section.2.3}{Bootstrap}{chapter.2}% 9 | |||||
\BOOKMARK [0][-]{chapter.3}{Prototyp}{}% 10 | |||||
\BOOKMARK [1][-]{section.3.1}{Organisation}{chapter.3}% 11 | |||||
\BOOKMARK [2][-]{subsection.3.1.1}{Verwaltung\040im\040Administrator-Backend}{section.3.1}% 12 | |||||
\BOOKMARK [2][-]{subsection.3.1.2}{Berechtigung\040der\040User}{section.3.1}% 13 | |||||
\BOOKMARK [1][-]{section.3.2}{Funktion}{chapter.3}% 14 | |||||
\BOOKMARK [2][-]{subsection.3.2.1}{Abonnieren}{section.3.2}% 15 | |||||
\BOOKMARK [2][-]{subsection.3.2.2}{Filtern}{section.3.2}% 16 | |||||
\BOOKMARK [2][-]{subsection.3.2.3}{Benachrichtigung}{section.3.2}% 17 | |||||
\BOOKMARK [0][-]{chapter.4}{Ergebnis}{}% 18 | |||||
\BOOKMARK [1][-]{subsection.4.0.1}{Evaluierung}{chapter.4}% 19 | |||||
\BOOKMARK [0][-]{chapter.5}{Zusammenfassung\040und\040Ausblick}{}% 20 | |||||
\BOOKMARK [0][-]{chapter*.4}{Referenzen}{}% 21 | |||||
\BOOKMARK [2][-]{subsection.2.2.2}{Taggable-Manager}{section.2.2}% 9 | |||||
\BOOKMARK [1][-]{section.2.3}{Bootstrap}{chapter.2}% 10 | |||||
\BOOKMARK [0][-]{chapter.3}{Prototyp}{}% 11 | |||||
\BOOKMARK [1][-]{section.3.1}{Organisation}{chapter.3}% 12 | |||||
\BOOKMARK [2][-]{subsection.3.1.1}{Verwaltung\040im\040Administrator-Backend}{section.3.1}% 13 | |||||
\BOOKMARK [2][-]{subsection.3.1.2}{Berechtigung\040der\040User}{section.3.1}% 14 | |||||
\BOOKMARK [1][-]{section.3.2}{Funktion}{chapter.3}% 15 | |||||
\BOOKMARK [2][-]{subsection.3.2.1}{Abonnieren}{section.3.2}% 16 | |||||
\BOOKMARK [2][-]{subsection.3.2.2}{Filtern}{section.3.2}% 17 | |||||
\BOOKMARK [2][-]{subsection.3.2.3}{Benachrichtigung}{section.3.2}% 18 | |||||
\BOOKMARK [0][-]{chapter.4}{Ergebnis}{}% 19 | |||||
\BOOKMARK [1][-]{subsection.4.0.1}{Evaluierung}{chapter.4}% 20 | |||||
\BOOKMARK [0][-]{chapter.5}{Zusammenfassung\040und\040Ausblick}{}% 21 | |||||
\BOOKMARK [0][-]{chapter*.6}{Referenzen}{}% 22 |
\contentsline {section}{\numberline {1.2}Ziel der Arbeit}{1}{section.1.2} | \contentsline {section}{\numberline {1.2}Ziel der Arbeit}{1}{section.1.2} | ||||
\contentsline {chapter}{\numberline {2}Framework}{3}{chapter.2} | \contentsline {chapter}{\numberline {2}Framework}{3}{chapter.2} | ||||
\contentsline {section}{\numberline {2.1}Django}{3}{section.2.1} | \contentsline {section}{\numberline {2.1}Django}{3}{section.2.1} | ||||
\contentsline {section}{\numberline {2.2}Erweiterung}{3}{section.2.2} | |||||
\contentsline {subsection}{\numberline {2.2.1}Taggable-Manager}{3}{subsection.2.2.1} | |||||
\contentsline {section}{\numberline {2.3}Bootstrap}{3}{section.2.3} | |||||
\contentsline {chapter}{\numberline {3}Prototyp}{5}{chapter.3} | |||||
\contentsline {section}{\numberline {3.1}Organisation}{5}{section.3.1} | |||||
\contentsline {subsection}{\numberline {3.1.1}Verwaltung im Administrator-Backend}{5}{subsection.3.1.1} | |||||
\contentsline {subsection}{\numberline {3.1.2}Berechtigung der User}{5}{subsection.3.1.2} | |||||
\contentsline {section}{\numberline {3.2}Funktion}{5}{section.3.2} | |||||
\contentsline {subsection}{\numberline {3.2.1}Abonnieren}{5}{subsection.3.2.1} | |||||
\contentsline {subsection}{\numberline {3.2.2}Filtern}{5}{subsection.3.2.2} | |||||
\contentsline {subsection}{\numberline {3.2.3}Benachrichtigung}{5}{subsection.3.2.3} | |||||
\contentsline {chapter}{\numberline {4}Ergebnis}{7}{chapter.4} | |||||
\contentsline {subsection}{\numberline {4.0.1}Evaluierung}{7}{subsection.4.0.1} | |||||
\contentsline {chapter}{\numberline {5}Zusammenfassung und Ausblick}{9}{chapter.5} | |||||
\contentsline {chapter}{Referenzen}{11}{chapter*.4} | |||||
\contentsline {section}{\numberline {2.2}Erweiterungen}{5}{section.2.2} | |||||
\contentsline {subsection}{\numberline {2.2.1}Taggable-Manager}{5}{subsection.2.2.1} | |||||
\contentsline {subsection}{\numberline {2.2.2}Taggable-Manager}{5}{subsection.2.2.2} | |||||
\contentsline {section}{\numberline {2.3}Bootstrap}{5}{section.2.3} | |||||
\contentsline {chapter}{\numberline {3}Prototyp}{7}{chapter.3} | |||||
\contentsline {section}{\numberline {3.1}Organisation}{7}{section.3.1} | |||||
\contentsline {subsection}{\numberline {3.1.1}Verwaltung im Administrator-Backend}{7}{subsection.3.1.1} | |||||
\contentsline {subsection}{\numberline {3.1.2}Berechtigung der User}{7}{subsection.3.1.2} | |||||
\contentsline {section}{\numberline {3.2}Funktion}{7}{section.3.2} | |||||
\contentsline {subsection}{\numberline {3.2.1}Abonnieren}{7}{subsection.3.2.1} | |||||
\contentsline {subsection}{\numberline {3.2.2}Filtern}{7}{subsection.3.2.2} | |||||
\contentsline {subsection}{\numberline {3.2.3}Benachrichtigung}{7}{subsection.3.2.3} | |||||
\contentsline {chapter}{\numberline {4}Ergebnis}{9}{chapter.4} | |||||
\contentsline {subsection}{\numberline {4.0.1}Evaluierung}{9}{subsection.4.0.1} | |||||
\contentsline {chapter}{\numberline {5}Zusammenfassung und Ausblick}{11}{chapter.5} | |||||
\contentsline {chapter}{Referenzen}{13}{chapter*.6} |
\relax | \relax | ||||
\providecommand\hyper@newdestlabel[2]{} | \providecommand\hyper@newdestlabel[2]{} | ||||
\@setckpt{chapters/ausblick}{ | \@setckpt{chapters/ausblick}{ | ||||
\setcounter{page}{8} | |||||
\setcounter{page}{10} | |||||
\setcounter{equation}{0} | \setcounter{equation}{0} | ||||
\setcounter{enumi}{0} | \setcounter{enumi}{0} | ||||
\setcounter{enumii}{0} | \setcounter{enumii}{0} | ||||
\setcounter{Item}{0} | \setcounter{Item}{0} | ||||
\setcounter{Hfootnote}{0} | \setcounter{Hfootnote}{0} | ||||
\setcounter{Hy@AnnotLevel}{0} | \setcounter{Hy@AnnotLevel}{0} | ||||
\setcounter{bookmark@seq@number}{19} | |||||
\setcounter{bookmark@seq@number}{20} | |||||
\setcounter{NAT@ctr}{0} | \setcounter{NAT@ctr}{0} | ||||
\setcounter{lstlisting}{0} | \setcounter{lstlisting}{0} | ||||
\setcounter{section@level}{0} | \setcounter{section@level}{0} |
\relax | \relax | ||||
\providecommand\hyper@newdestlabel[2]{} | \providecommand\hyper@newdestlabel[2]{} | ||||
\@writefile{toc}{\contentsline {chapter}{\numberline {4}Ergebnis}{7}{chapter.4}} | |||||
\@writefile{toc}{\contentsline {chapter}{\numberline {4}Ergebnis}{9}{chapter.4}} | |||||
\@writefile{lof}{\addvspace {10\p@ }} | \@writefile{lof}{\addvspace {10\p@ }} | ||||
\@writefile{lot}{\addvspace {10\p@ }} | \@writefile{lot}{\addvspace {10\p@ }} | ||||
\newlabel{ch:ergebnis}{{4}{7}{Ergebnis}{chapter.4}{}} | |||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.0.1}Evaluierung}{7}{subsection.4.0.1}} | |||||
\newlabel{ch:ergebnis}{{4}{9}{Ergebnis}{chapter.4}{}} | |||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.0.1}Evaluierung}{9}{subsection.4.0.1}} | |||||
\@setckpt{chapters/ergebnis}{ | \@setckpt{chapters/ergebnis}{ | ||||
\setcounter{page}{8} | |||||
\setcounter{page}{10} | |||||
\setcounter{equation}{0} | \setcounter{equation}{0} | ||||
\setcounter{enumi}{0} | \setcounter{enumi}{0} | ||||
\setcounter{enumii}{0} | \setcounter{enumii}{0} | ||||
\setcounter{Item}{0} | \setcounter{Item}{0} | ||||
\setcounter{Hfootnote}{0} | \setcounter{Hfootnote}{0} | ||||
\setcounter{Hy@AnnotLevel}{0} | \setcounter{Hy@AnnotLevel}{0} | ||||
\setcounter{bookmark@seq@number}{19} | |||||
\setcounter{bookmark@seq@number}{20} | |||||
\setcounter{NAT@ctr}{0} | \setcounter{NAT@ctr}{0} | ||||
\setcounter{lstlisting}{0} | \setcounter{lstlisting}{0} | ||||
\setcounter{section@level}{0} | \setcounter{section@level}{0} |
\relax | \relax | ||||
\providecommand\hyper@newdestlabel[2]{} | \providecommand\hyper@newdestlabel[2]{} | ||||
\@writefile{toc}{\contentsline {chapter}{\numberline {5}Zusammenfassung und Ausblick}{9}{chapter.5}} | |||||
\@writefile{toc}{\contentsline {chapter}{\numberline {5}Zusammenfassung und Ausblick}{11}{chapter.5}} | |||||
\@writefile{lof}{\addvspace {10\p@ }} | \@writefile{lof}{\addvspace {10\p@ }} | ||||
\@writefile{lot}{\addvspace {10\p@ }} | \@writefile{lot}{\addvspace {10\p@ }} | ||||
\newlabel{ch:zusammenfassung}{{5}{9}{Zusammenfassung und Ausblick}{chapter.5}{}} | |||||
\newlabel{ch:zusammenfassung}{{5}{11}{Zusammenfassung und Ausblick}{chapter.5}{}} | |||||
\@setckpt{chapters/fazit}{ | \@setckpt{chapters/fazit}{ | ||||
\setcounter{page}{10} | |||||
\setcounter{page}{12} | |||||
\setcounter{equation}{0} | \setcounter{equation}{0} | ||||
\setcounter{enumi}{0} | \setcounter{enumi}{0} | ||||
\setcounter{enumii}{0} | \setcounter{enumii}{0} | ||||
\setcounter{Item}{0} | \setcounter{Item}{0} | ||||
\setcounter{Hfootnote}{0} | \setcounter{Hfootnote}{0} | ||||
\setcounter{Hy@AnnotLevel}{0} | \setcounter{Hy@AnnotLevel}{0} | ||||
\setcounter{bookmark@seq@number}{20} | |||||
\setcounter{bookmark@seq@number}{21} | |||||
\setcounter{NAT@ctr}{0} | \setcounter{NAT@ctr}{0} | ||||
\setcounter{lstlisting}{0} | \setcounter{lstlisting}{0} | ||||
\setcounter{section@level}{0} | \setcounter{section@level}{0} |
\@writefile{lot}{\addvspace {10\p@ }} | \@writefile{lot}{\addvspace {10\p@ }} | ||||
\newlabel{ch:framework}{{2}{3}{Framework}{chapter.2}{}} | \newlabel{ch:framework}{{2}{3}{Framework}{chapter.2}{}} | ||||
\@writefile{toc}{\contentsline {section}{\numberline {2.1}Django}{3}{section.2.1}} | \@writefile{toc}{\contentsline {section}{\numberline {2.1}Django}{3}{section.2.1}} | ||||
\@writefile{toc}{\contentsline {section}{\numberline {2.2}Erweiterung}{3}{section.2.2}} | |||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2.1}Taggable-Manager}{3}{subsection.2.2.1}} | |||||
\@writefile{toc}{\contentsline {section}{\numberline {2.3}Bootstrap}{3}{section.2.3}} | |||||
\@writefile{lof}{\contentsline {figure}{\numberline {2.1}{\ignorespaces Vereinfachter MVP\relax }}{3}{figure.caption.4}} | |||||
\@writefile{lof}{\contentsline {figure}{\numberline {2.2}{\ignorespaces Request-Response-Kreislauf des Django Frameworks\relax }}{4}{figure.caption.5}} | |||||
\@writefile{toc}{\contentsline {section}{\numberline {2.2}Erweiterungen}{5}{section.2.2}} | |||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2.1}Taggable-Manager}{5}{subsection.2.2.1}} | |||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2.2}Taggable-Manager}{5}{subsection.2.2.2}} | |||||
\@writefile{toc}{\contentsline {section}{\numberline {2.3}Bootstrap}{5}{section.2.3}} | |||||
\@setckpt{chapters/framework}{ | \@setckpt{chapters/framework}{ | ||||
\setcounter{page}{4} | |||||
\setcounter{page}{6} | |||||
\setcounter{equation}{0} | \setcounter{equation}{0} | ||||
\setcounter{enumi}{0} | \setcounter{enumi}{0} | ||||
\setcounter{enumii}{0} | \setcounter{enumii}{0} | ||||
\setcounter{subsubsection}{0} | \setcounter{subsubsection}{0} | ||||
\setcounter{paragraph}{0} | \setcounter{paragraph}{0} | ||||
\setcounter{subparagraph}{0} | \setcounter{subparagraph}{0} | ||||
\setcounter{figure}{0} | |||||
\setcounter{figure}{2} | |||||
\setcounter{table}{0} | \setcounter{table}{0} | ||||
\setcounter{float@type}{8} | \setcounter{float@type}{8} | ||||
\setcounter{parentequation}{0} | \setcounter{parentequation}{0} | ||||
\setcounter{Item}{0} | \setcounter{Item}{0} | ||||
\setcounter{Hfootnote}{0} | \setcounter{Hfootnote}{0} | ||||
\setcounter{Hy@AnnotLevel}{0} | \setcounter{Hy@AnnotLevel}{0} | ||||
\setcounter{bookmark@seq@number}{9} | |||||
\setcounter{bookmark@seq@number}{10} | |||||
\setcounter{NAT@ctr}{0} | \setcounter{NAT@ctr}{0} | ||||
\setcounter{lstlisting}{0} | \setcounter{lstlisting}{0} | ||||
\setcounter{section@level}{0} | \setcounter{section@level}{0} |
\relax | \relax | ||||
\providecommand\hyper@newdestlabel[2]{} | \providecommand\hyper@newdestlabel[2]{} | ||||
\@writefile{toc}{\contentsline {chapter}{\numberline {3}Prototyp}{5}{chapter.3}} | |||||
\@writefile{toc}{\contentsline {chapter}{\numberline {3}Prototyp}{7}{chapter.3}} | |||||
\@writefile{lof}{\addvspace {10\p@ }} | \@writefile{lof}{\addvspace {10\p@ }} | ||||
\@writefile{lot}{\addvspace {10\p@ }} | \@writefile{lot}{\addvspace {10\p@ }} | ||||
\newlabel{ch:prototyp}{{3}{5}{Prototyp}{chapter.3}{}} | |||||
\@writefile{toc}{\contentsline {section}{\numberline {3.1}Organisation}{5}{section.3.1}} | |||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.1}Verwaltung im Administrator-Backend}{5}{subsection.3.1.1}} | |||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.2}Berechtigung der User}{5}{subsection.3.1.2}} | |||||
\@writefile{toc}{\contentsline {section}{\numberline {3.2}Funktion}{5}{section.3.2}} | |||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.1}Abonnieren}{5}{subsection.3.2.1}} | |||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.2}Filtern}{5}{subsection.3.2.2}} | |||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.3}Benachrichtigung}{5}{subsection.3.2.3}} | |||||
\newlabel{ch:prototyp}{{3}{7}{Prototyp}{chapter.3}{}} | |||||
\@writefile{toc}{\contentsline {section}{\numberline {3.1}Organisation}{7}{section.3.1}} | |||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.1}Verwaltung im Administrator-Backend}{7}{subsection.3.1.1}} | |||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.2}Berechtigung der User}{7}{subsection.3.1.2}} | |||||
\@writefile{toc}{\contentsline {section}{\numberline {3.2}Funktion}{7}{section.3.2}} | |||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.1}Abonnieren}{7}{subsection.3.2.1}} | |||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.2}Filtern}{7}{subsection.3.2.2}} | |||||
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.3}Benachrichtigung}{7}{subsection.3.2.3}} | |||||
\@setckpt{chapters/prototyp}{ | \@setckpt{chapters/prototyp}{ | ||||
\setcounter{page}{6} | |||||
\setcounter{page}{8} | |||||
\setcounter{equation}{0} | \setcounter{equation}{0} | ||||
\setcounter{enumi}{0} | \setcounter{enumi}{0} | ||||
\setcounter{enumii}{0} | \setcounter{enumii}{0} | ||||
\setcounter{Item}{0} | \setcounter{Item}{0} | ||||
\setcounter{Hfootnote}{0} | \setcounter{Hfootnote}{0} | ||||
\setcounter{Hy@AnnotLevel}{0} | \setcounter{Hy@AnnotLevel}{0} | ||||
\setcounter{bookmark@seq@number}{17} | |||||
\setcounter{bookmark@seq@number}{18} | |||||
\setcounter{NAT@ctr}{0} | \setcounter{NAT@ctr}{0} | ||||
\setcounter{lstlisting}{0} | \setcounter{lstlisting}{0} | ||||
\setcounter{section@level}{0} | \setcounter{section@level}{0} |
\chapter{Einleitung} | \chapter{Einleitung} | ||||
\textcolor{red}{Die vorliegende Arbeit beschäftigt sich mit der wachsenden E-Mail-Flut in den Postfächern der Studierenden und wie man diese reduzieren kann.} | \textcolor{red}{Die vorliegende Arbeit beschäftigt sich mit der wachsenden E-Mail-Flut in den Postfächern der Studierenden und wie man diese reduzieren kann.} | ||||
Schon seit geraumer Zeit ist bekannt, dass das Versenden von Informationen über elektronische Post nicht nur Vorteile mit sich bringt. Wie der Spezialist für Gesundheitsprozesseratung in einem Bericht der Mitteldeutschen Zeitung erwähnt, "macht es die stets wachsende E-Mail-Menge unmöglich sich vernünftig mit den Informationen zu befassen"([Ver13]). Nicht nur am Arbeitsplatz sondern auch in Hochschulen wird Gebrauch gemacht, weitere Empfänger oder sogar ganze Verteiler mit in die Kopie einer E-Mail zu integrieren. Um die Prioritäten der Informationen besser bilden zu können, sollen Studierende selbst entscheiden, welche Nachrichten relevant sind. Hierfür wird eine Social Media Plattform mit personalisierbarem Dashboard implementiert. | |||||
Schon seit geraumer Zeit ist bekannt, dass das Versenden von Informationen über elektronische Post nicht nur Vorteile mit sich bringt. Wie der Spezialist für Gesundheitsprozessberatung in einem Bericht der Mitteldeutschen Zeitung erwähnt, "macht es die stets wachsende E-Mail-Menge unmöglich sich vernünftig mit den Informationen zu befassen"([Ver13]). Nicht nur am Arbeitsplatz sondern auch in Hochschulen wird Gebrauch gemacht, weitere Empfänger oder sogar ganze Verteiler mit in die Kopie einer E-Mail zu integrieren. Um die Prioritäten der Informationen besser bilden zu können, sollen Studierende selbst entscheiden, welche Nachrichten relevant sind. Hierfür wird eine Social Media Plattform mit personalisierbarem Dashboard implementiert. | |||||
\section{Ausgangssituation} | \section{Ausgangssituation} | ||||
Alle Informationen der Fakultät Elektrotechnik Feinwerktechnik Informationstechnik, kurz efi, werden über die globalen Verteiler des Hochschulinternen Postfaches versendet. Viele dieser Daten sind jedoch nur für eine geringe Schnittmenge der Empfänger relevant und lassen sich nur schwer priorisieren. Das ständig überlastete Postfach muss somit regelmä"sig gepflegt werden. Einen massiven Administrativen Aufwand bedeutet es, E-Mails zu filtern und nach persönlichem Ermessen zu verwalten. | Alle Informationen der Fakultät Elektrotechnik Feinwerktechnik Informationstechnik, kurz efi, werden über die globalen Verteiler des Hochschulinternen Postfaches versendet. Viele dieser Daten sind jedoch nur für eine geringe Schnittmenge der Empfänger relevant und lassen sich nur schwer priorisieren. Das ständig überlastete Postfach muss somit regelmä"sig gepflegt werden. Einen massiven Administrativen Aufwand bedeutet es, E-Mails zu filtern und nach persönlichem Ermessen zu verwalten. | ||||
Zudem leidet die Nachhaltigkeit der Informationen. Möchten die Empfänger ältere E-Mails abrufen, mussten diese meist schon entfernt werden um Platz für den neuen, eintreffenden E-Mail-Verkehr zu schaffen. | Zudem leidet die Nachhaltigkeit der Informationen. Möchten die Empfänger ältere E-Mails abrufen, mussten diese meist schon entfernt werden um Platz für den neuen, eintreffenden E-Mail-Verkehr zu schaffen. | ||||
Diese Situation führt dazu, dass Empfänger die Informationen meist nicht lesen und sofort entfernen. Die Ersteller dieser haben keinerlei Möglichkeiten zu überprüfen ob und wie viele Studierende und Dozenten eingehende Nachrichten öffnen und lesen. | |||||
Diese Situation führt dazu, dass Empfänger die Informationen meist nicht lesen und sofort entfernen. Die Ersteller haben keinerlei Möglichkeiten zu überprüfen ob und wie viele Studierende und Dozenten eingehende Nachrichten öffnen und lesen. | |||||
\section{Ziel der Arbeit} | \section{Ziel der Arbeit} | ||||
Ziel der Arbeit ist es, durch die Einbindung einer Social Media Plattform den Speicheraufwand des Hochschulpostfaches für Studierende der Efi-Fakultät zu reduzieren. Die Flut an E-Mails soll durch das Verwenden eines personalisierte Dashboard gedrosselt werden. Hierbei wird zunächst der Fokus auf die grundlegenden Funktionen der Website wert gelegt. | |||||
Zudem sollen die Verfasser der Informationen benachrichtigt werden, in welchem Umfang die hochgeladenen Informationen bereits abonniert und gelesen wurden. | |||||
Ziel der Arbeit ist es, durch die Einbindung einer Social Media Plattform den Speicheraufwand des Hochschulpostfaches für Studierende der Efi-Fakultät zu reduzieren. Die Flut an E-Mails soll durch das Verwenden eines personalisierte Dashboard gedrosselt werden. Hierbei wird zunächst der Fokus auf die grundlegenden Funktionen der Website gelegt. Dazu gehört das Abonnieren, einpflegen von neuen und löschen von alten Nachrichten. | |||||
Zudem sollen die Autoren benachrichtigt werden, in welchem Umfang die hochgeladenen Informationen bereits abonniert und gelesen wurden. |
\chapter{Framework} | \chapter{Framework} | ||||
\label{ch:framework} | \label{ch:framework} | ||||
Um die Website-Erweiterung realisieren zu können, wird zunächst festgelegt welche Programmierschnittstellen verwendet werden. Im Web-Backend fällt die Wahl auf die objektorientierte Sprache Python, das ausschlie"slich Serverseitig anwendbar ist. Der Programmaufbau Pythons macht den Code leicht lesbar und der einfache Syntax ermöglicht einen strukturierte Implementierung der Website([Ndu17]). Ein entscheidende Vorteil hierbei ist das dazugehörige Web-Framework Django, auf das im folgenden Kapitel genauer eingegangen wird. | |||||
Um die Website-Erweiterung realisieren zu können, wird zunächst festgelegt welche Programmierschnittstellen verwendet werden. Im Web-Backend fällt die Wahl auf die objektorientierte Sprache Python, die ausschlie"slich Serverseitig anwendbar ist. Der Programmaufbau Pythons macht den Code leicht lesbar und der einfache Syntax ermöglicht einen strukturierte Implementierung der Website([Ndu17]). Ein entscheidender Vorteil hierbei ist das dazugehörige Framework Django, auf das im folgenden Kapitel genauer eingegangen wird. | |||||
\section{Django} | \section{Django} | ||||
Django ist eine Erweiterung, die auf einer Model-View-Presenter (MVP) Architektur basiert. Ähnlich wie der Model-View-Controller sind die Interaktionen zwischen Model und View die Auswahl und Ausführung von Befehlen und das Auslösen von Ereignissen. Da die View aber hier bereits den Gro"steil des Controllers übernimmt, ist der MVP eine Überarbeitung. Der Teil, der Elemente des Modells auswählt, Operationen durchführt und alle Ereignisse kapselt, ergibt die Presenter-Klasse([She09]). | |||||
auf die Daten vom Model zurück und das Model teilt der View mit, wenn sich Daten ändern. Da nun aber nahezu alle Aufgaben des Controllers von der View übernommen werden, | |||||
Django ist ein Web-Framework, das auf einer Model-View-Presenter (MVP) Architektur basiert. Ähnlich wie der Model-View-Controller sind die Interaktionen zwischen Model und View die Auswahl und Ausführung von Befehlen und das Auslösen von Ereignissen (vgl. Abbildung 2.1). Da die View aber hier bereits den Gro"steil des Controllers übernimmt, ist der MVP eine Überarbeitung. Der Teil, der Elemente des Modells auswählt, Operationen durchführt und alle Ereignisse kapselt, ergibt die Presenter-Klasse([She09]). Durch die direkte Bindung von Daten und View, geregelt durch den Presenter, wird die Codemenge der Applikation stark reduziert. | |||||
\section{Erweiterung} | |||||
\begin{figure}[!h] | |||||
\centering | |||||
\includegraphics[width=0.5\textwidth]{figures/MVP} | |||||
\caption{Vereinfachter MVP} | |||||
\hfill | |||||
\end{figure} | |||||
Der Prozess vom Anfragen der URL über den Server, bis hin zur fertig gerenderten Website kann wie folgt vereinfacht darstellen. Der User gibt eine URL im Browser ein und sendet sie an den Web-Server. Dieser leitet den Request an das Django-Backend weiter. Da das Framework über eine explizite Zuweisung der verschiedenen Seiten verfügt, iteriert der urlresolver über die vorhandene URL-Struktur im Code (url.py). Gibt es eine Übereinstimmung, wird die damit verknüpfte Funktion in der View (view.py) aufgerufen. Hier ist die gesamte Logik der Website lokalisiert. Wie bereits erwähnt, ist es möglich unter Anderem auf die Datenbank der Applikation zuzugreifen und Eingaben des Users über eine Form zu verarbeiten. Nachdem werden die Informationen der View an das Template weitergereicht. Es handelt sich dabei um eine einfache HTML-Seite in der der strukturelle Aufbau im Frontend festgelegt wird. Die Informationen der View können hier zwischen doppelt-geschweiften Klammern eingebunden werden und, wenn nötig, mit einfachen Python-Befehlen anpassen. Nun kann das Template einen Response an den Web-Server schicken und die fertige Seite wird beim Klienten im Browser gerendert (vgl. Abbildung 2.1). | |||||
\begin{figure}[!h] | |||||
\centering | |||||
\includegraphics[width=0.5\textwidth]{figures/request-response-cycle} | |||||
\caption{Request-Response-Kreislauf des Django Frameworks} | |||||
\hfill | |||||
\end{figure} | |||||
Sicherheit | |||||
Die Django-Administratoroberfläche ist eines der hilfreichsten Oberflächen des gesamten Frameworks. Es stellt die Metadaten der Modelle aus dem Code visuell dar. Verifizierte Benutzer können die Daten nicht nur schnell erfassen, sondern diese auch editieren und verwalten. Die Rechte, das Admin-Backend benutzen zu dürfen kann man im Terminal beim erstellen der Datenbank festlegen. Ist man "superuser" kann man diese Rechte auch an weiter User übertragen. | |||||
\section{Erweiterungen} | |||||
\subsection {Taggable-Manager} | |||||
\subsection {Taggable-Manager} | \subsection {Taggable-Manager} | ||||
\section{Bootstrap} | \section{Bootstrap} | ||||