core.tex 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414
  1. \documentclass[aspectratio=169]{beamer}
  2. % get rid of clickable beamer buttons
  3. \beamertemplatenavigationsymbolsempty
  4. % parse most utf-8 correctly
  5. \usepackage[utf8]{inputenc}
  6. \usepackage[ngerman]{babel}
  7. % better graphics
  8. \usepackage{graphicx}
  9. \title{
  10. Eine Email-Client-App entwickeln\\
  11. \vspace{.1cm}
  12. \normalsize snailmail
  13. }
  14. \author{Noah Vogt \& Simon Hammer}
  15. \date{5. Februar 2022}
  16. \institute{Gymnasium Kirschgarten}
  17. \usetheme{Copenhagen}
  18. \usepackage{varwidth}
  19. \usepackage{graphicx,calc}
  20. \newlength\myheight
  21. \newlength\mydepth
  22. \settototalheight\myheight{Xygp}
  23. \settodepth\mydepth{Xygp}
  24. \setlength\fboxsep{0pt}
  25. \newcommand*\inlinegraphics[1]{
  26. \settototalheight\myheight{Xygp}
  27. \settodepth\mydepth{Xygp}
  28. \raisebox{-\mydepth}{\includegraphics[height=\myheight]{#1}}%
  29. }
  30. % for code snippits
  31. \usepackage{listings}
  32. \usepackage{color}
  33. \definecolor{dkgreen}{rgb}{0,0.6,0}
  34. \definecolor{gray}{rgb}{0.5,0.5,0.5}
  35. \definecolor{mauve}{rgb}{0.58,0,0.82}
  36. \definecolor{background}{rgb}{0.36,0.36,0.36}
  37. \lstset{
  38. numbersep=3pt,
  39. keywordstyle=\color{blue},
  40. commentstyle=\color{dkgreen},
  41. stringstyle=\color{mauve},
  42. breaklines=true,
  43. numbers=left,
  44. numberstyle=\scriptsize\color{black},
  45. frame=none,
  46. basicstyle = \small\ttfamily,
  47. breaklines=true
  48. breakatwhitespace=false,
  49. columns=flexible,
  50. xleftmargin=0.5cm,framesep=8pt,framerule=0pt,
  51. aboveskip=3mm,
  52. belowskip=3mm,
  53. }
  54. % Package to use videos
  55. \usepackage{movie15}
  56. \usepackage{media9}
  57. %for table
  58. \usepackage{array}
  59. \newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}
  60. %% Putting the background image in the frames
  61. \usebackgroundtemplate{%
  62. %\vbox to \paperheight{\hfil\hbox to \paperwidth{\hfil\includegraphics[width=1\paperwidth]{../../logo/version2grey.pdf}\hfil}\vfil}
  63. \hspace{5.2cm}\includegraphics[width=0.8\paperwidth]{../logo/version2grey.pdf}
  64. }
  65. \begin{document}
  66. \begin{frame}[plain]
  67. \maketitle
  68. \end{frame}
  69. \begin{frame}[plain]{Inhaltsverzeichniss}
  70. \tableofcontents
  71. \end{frame}
  72. \section{Vorwort}
  73. \subsection{Motivation}
  74. \begin{frame}[plain]{Motivation}
  75. \begin{varwidth}{.5\textwidth}
  76. \begin{figure}
  77. \centering
  78. \includegraphics[width=.9\textwidth]{media/macbook.jpg}
  79. \end{figure}
  80. \end{varwidth}
  81. \hfill
  82. \begin{varwidth}{.5\textwidth}
  83. \begin{itemize}\pause
  84. \item allgemeines Interesse\pause
  85. \item fehlender Edubs-Mail-Client\pause
  86. %\item fehlender Edubs-Mail-Client\inlinegraphics{media/baslerstab-1.jpg}\pause
  87. \item persönliche Bedürfnisse
  88. \end{itemize}
  89. \end{varwidth}
  90. \end{frame}
  91. \subsection{Ziele}
  92. \begin{frame}[plain]{Ziele}
  93. \begin{varwidth}{.5\textwidth}
  94. \begin{figure}
  95. \centering
  96. \includegraphics[width=.8\textwidth]{../logo/version3d.png}
  97. \end{figure}
  98. \end{varwidth}
  99. \hfill
  100. \begin{varwidth}{.5\textwidth}
  101. \begin{itemize}\pause
  102. \item Basisfunktionen \inlinegraphics{media/mail.png} \pause
  103. \item Account Manager\inlinegraphics{media/business.png}\pause
  104. \item Mobil und Modern\inlinegraphics{media/mobile.png}\pause
  105. \item Einstellungen\inlinegraphics{media/settings.png}\pause
  106. \item Schnell, Frei und Simpel\inlinegraphics{media/run.png}
  107. \end{itemize}
  108. \end{varwidth}
  109. \end{frame}
  110. \begin{frame}[plain]{Inspiration Design}
  111. \begin{varwidth}{.3\textwidth}\pause
  112. \begin{figure}
  113. \centering
  114. \includegraphics[width=.8\textwidth]{media/gmail-screenshot.png}\\
  115. \vspace{.5cm}
  116. \includegraphics[width=.25\textwidth]{media/gmail-logo.png}
  117. \end{figure}
  118. \end{varwidth}
  119. \hfill
  120. \begin{varwidth}{.3\textwidth}\pause
  121. \begin{figure}
  122. \centering
  123. \includegraphics[width=.8\textwidth]{media/k9-screenshot.png}\\
  124. \vspace{.5cm}
  125. \includegraphics[width=.25\textwidth]{media/k9-logo.png}
  126. \end{figure}
  127. \end{varwidth}
  128. \hfill
  129. \begin{varwidth}{.3\textwidth}\pause
  130. \begin{figure}
  131. \centering
  132. \includegraphics[width=.8\textwidth]{media/fairmail-screenshot.png}\\
  133. \vspace{.5cm}
  134. \includegraphics[width=.25\textwidth]{media/fairmail-logo.png}
  135. \end{figure}
  136. \end{varwidth}
  137. \end{frame}
  138. % TODO: consider using external player
  139. \section{Haupteil}
  140. \subsection{App mit Film}
  141. \begin{frame}[plain]{Demo}
  142. \centering
  143. %\movie[externalviewer]{\includegraphics[width=.8\textwidth]{media/bug.png}}{media/appNoSound.mp4}
  144. %\includemovie[externalviewer, autoplay]{20pt}{20pt}{media/appNoSound.mp4}
  145. % \includemedia[
  146. % width=5cm,height=5cm,
  147. % activate=pageopen,
  148. % addresource=media/appNoSound.mp4,
  149. % flashvars={
  150. % source=media/appNoSound.mp4
  151. % &autoPlay=true
  152. % &scaleMode=letterbox
  153. % }
  154. %]{}{VPlayer.swf}
  155. \end{frame}
  156. \subsection{App Inhalte}
  157. \begin{frame}[plain]{Was alles drin ist}
  158. \centering
  159. \begin{figure}[h]
  160. \includegraphics[height=.9\textheight]{media/errorMessage.png}
  161. \hspace{2.5cm}
  162. \pause
  163. \includegraphics[height=.9\textheight]{media/moreSettings.jpg}
  164. \end{figure}
  165. \end{frame}
  166. \subsection{App-Struktur}
  167. \begin{frame}[plain]{Allgemeine App-Struktur}
  168. \begin{varwidth}{.3\textwidth}
  169. \pause
  170. \begin{figure}
  171. \centering
  172. \includegraphics[height=.8\textheight]{../maturText/media/AppStructureFull.png}
  173. \end{figure}
  174. \end{varwidth}
  175. \hfill
  176. \begin{varwidth}{.5\textwidth}
  177. \begin{itemize}\pause
  178. \item User Interface \pause
  179. \item Server Connection \pause
  180. \item Database
  181. \end{itemize}
  182. \end{varwidth}
  183. \end{frame}
  184. \begin{frame}[plain]{Database}
  185. \begin{block}{Allgemein}
  186. \textbf{Datenbank:} eine organisierte Ansammlung von strukturierter Information oder Daten
  187. \end{block}
  188. \begin{block}{in Der App}
  189. %:TODO finish this simon
  190. \pause
  191. \begin{tabular}{ |C{1.4Cm} |C{0.9Cm} |C{0.5Cm} |C{0.65Cm} |C{0.95Cm} |C{0.85Cm} |C{1.05Cm} |C{1.55Cm} |C{1.05Cm} |C{0.8Cm}|}
  192. %\begin{tabular}{ c c c c c c c c c c}
  193. \hline
  194. \multicolumn{10}{|c|}{Database Table} \\
  195. \hline
  196. \small{ObejctKey} &To & cc & bcc & from & date & subject & \small{textContent} & folder & seen \\
  197. \hline
  198. \pause
  199. 01 & \small{Sam} & null & null & \small{Anna} & \small{1.3.13} & Schule & Hallo Herr & Draft & true \\
  200. \hline
  201. \end{tabular}
  202. \end{block}
  203. \end{frame}
  204. \begin{frame}[plain]{Mail Server Connection}
  205. \centering
  206. \includegraphics[height=.8\textheight]{media/empty.png}
  207. \end{frame}
  208. \begin{frame}[plain]{Mail Server Connection}
  209. \centering
  210. \includegraphics[height=.8\textheight]{media/mail-diagram-01.png}
  211. \end{frame}
  212. \begin{frame}[plain]{Mail Server Connection}
  213. \centering
  214. \includegraphics[height=.8\textheight]{media/mail-diagram-02.png}
  215. \end{frame}
  216. \begin{frame}[plain]{Mail Server Connection}
  217. \centering
  218. \includegraphics[height=.8\textheight]{media/mail-diagram-03.png}
  219. \end{frame}
  220. \begin{frame}[plain]{Mail Server Connection}
  221. \centering
  222. \includegraphics[height=.8\textheight]{media/mail-diagram-04.png}
  223. \end{frame}
  224. \begin{frame}[plain]{Mail Server Connection}
  225. \centering
  226. \includegraphics[height=.8\textheight]{media/mail-diagram-05.png}
  227. \end{frame}
  228. \begin{frame}[plain]{Mail Server Connection}
  229. \centering
  230. \includegraphics[height=.8\textheight]{media/mail-diagram-06.png}
  231. \end{frame}
  232. \begin{frame}[plain]{Mail Server Connection}
  233. \centering
  234. \includegraphics[height=.8\textheight]{media/mail-diagram-07.png}
  235. \end{frame}
  236. \begin{frame}[plain]{Mail Server Connection}
  237. \centering
  238. \includegraphics[height=.8\textheight]{media/mail-diagram-08.png}
  239. \end{frame}
  240. % TODO: not use lstlisting?
  241. \defverbatim[colored]\makeset{
  242. \lstset{language=python}
  243. \begin{lstlisting}
  244. def sendStarttls(host, sendingMail, receivingMail, password, message="",
  245. subject="", port=587, cc=[], bcc=[]):
  246. context = ssl.create_default_context()
  247. if type(cc) is not str:
  248. cc = ",".join(cc)
  249. if type(bcc) is not str:
  250. bcc = ",".join(bcc)
  251. utf8Message = ("Subject: " + subject + "\nCC: " + cc + "\nBCC: " + bcc +
  252. "\n\n" + message)
  253. decoded = utf8Message.encode('cp1252').decode('utf-8')
  254. with smtplib.SMTP(host, port) as serverConnection:
  255. serverConnection.starttls(context=context)
  256. serverConnection.login(sendingMail, password)
  257. serverConnection.sendmail(sendingMail, receivingMail, decoded)
  258. \end{lstlisting}
  259. }
  260. \begin{frame}[plain]{Senden einer Email}
  261. %\makeset
  262. %\lstset{language=Python}
  263. %\lstinputlisting[language=Python]{code/sentMail.py}
  264. \begin{figure}[h]
  265. \includegraphics[width=.8\textwidth]{media/codeFragment.png}
  266. \end{figure}
  267. \end{frame}
  268. \subsection{Librarys}
  269. \begin{frame}[plain]{Material Design}
  270. \begin{varwidth}{.5\textwidth}
  271. \begin{figure}
  272. \centering
  273. \includegraphics[width=\textwidth]{media/material-design-in-action.jpg}
  274. \end{figure}
  275. \end{varwidth}
  276. \hfill
  277. \begin{varwidth}{.4\textwidth}
  278. \includegraphics[width=\textwidth]{media/material-android.png}
  279. \begin{itemize}\pause
  280. \item GUI-Framework\pause
  281. \item beliebt\pause
  282. \item in Google Apps
  283. \end{itemize}
  284. \end{varwidth}
  285. \end{frame}
  286. % TODO: insert bugs
  287. \begin{frame}[plain]{Bugs}
  288. \begin{figure}[h]
  289. \includegraphics[width=.8\textwidth]{media/bug.png}
  290. \end{figure}
  291. \end{frame}
  292. \section{Resultate}
  293. \begin{frame}[plain]{Resultate}
  294. \begin{itemize}\pause
  295. \item User Interface\pause
  296. \item chaquopy\pause
  297. \item Funktionalität\pause
  298. \item abschliessend
  299. \end{itemize}
  300. \end{frame}
  301. \section{Gelerntes}
  302. \begin{frame}[plain]{Was wir gelernt haben}
  303. \begin{varwidth}{.5\textwidth}
  304. \begin{figure}
  305. \centering
  306. \includegraphics[width=.95\textwidth]{media/monetary-success.jpeg}
  307. \end{figure}
  308. \end{varwidth}
  309. \hfill
  310. \begin{varwidth}{.5\textwidth}
  311. \begin{itemize}\pause
  312. \item Java\inlinegraphics{media/java-only-logo.png}\pause
  313. \item Android Apps\inlinegraphics{media/android-robot.png}\pause
  314. \item Android Studio\inlinegraphics{media/android-studio-logo.png}\pause
  315. \item Database \& SQL\inlinegraphics{media/database.png}\pause
  316. \item Gradle\inlinegraphics{media/gradle.png}\pause
  317. \item Zusammenarbeit\inlinegraphics{media/handschlag.jpeg}
  318. \end{itemize}
  319. \end{varwidth}
  320. \end{frame}
  321. \section{Persönliche Meinung}
  322. \begin{frame}[plain]{Persönliche Meinung: Simon}
  323. \begin{varwidth}{.4\textwidth}
  324. \begin{figure}
  325. \centering
  326. \includegraphics[width=.95\textwidth]{media/git-logo.png}
  327. \end{figure}
  328. \end{varwidth}
  329. \hfill
  330. \begin{varwidth}{.5\textwidth}
  331. \begin{itemize}\pause
  332. \item VCS $\rightarrow$ Git $\rightarrow$ GitHub\pause
  333. \item Treffen \& Absprachen \& VoIP\pause
  334. \item texdiary
  335. \end{itemize}
  336. \end{varwidth}
  337. \end{frame}
  338. \begin{frame}[plain]{persönliche Meinung: Noah}
  339. \begin{varwidth}{.4\textwidth}
  340. \begin{figure}
  341. \centering
  342. \includegraphics[width=.95\textwidth]{media/gradle-logo.png}
  343. \end{figure}
  344. \end{varwidth}
  345. \hfill
  346. \begin{varwidth}{.5\textwidth}
  347. \begin{itemize}\pause
  348. \item fehlende Erfahrung\pause
  349. \item Java Libraries\pause
  350. \item persönlicher \& beruflicher Vorteil
  351. \end{itemize}
  352. \end{varwidth}
  353. \end{frame}
  354. \begin{frame}[plain]{Zukunft: Wie geht es weiter?}
  355. \begin{figure}
  356. \centering
  357. \includegraphics[height=.7\textheight]{media/github-repo.jpg}
  358. \end{figure}
  359. \begin{itemize}
  360. \centering
  361. \item https://github.com/noahvogt/snailmail
  362. \item https://git.noahvogt.com/me/snailmail
  363. \end{itemize}
  364. \end{frame}
  365. \end{document}