web_AI-5/presentation/presentation.html

438 lines
10 KiB
HTML
Raw Normal View History

2018-03-04 12:44:37 +01:00
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8"/>
<title>Case-Study</title>
<meta name="author" content="(Ivan Hörler und Andreas Zweili)"/>
<style type="text/css">
.underline { text-decoration: underline; }
</style>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/reveal.js/3.0.0/css/reveal.css"/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/reveal.js/3.0.0/css/theme/solarized.css" id="theme"/>
<!-- If the query includes 'print-pdf', include the PDF print sheet -->
<script>
if( window.location.search.match( /print-pdf/gi ) ) {
var link = document.createElement( 'link' );
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = 'https://cdn.jsdelivr.net/reveal.js/3.0.0/css/print/pdf.css';
document.getElementsByTagName( 'head' )[0].appendChild( link );
}
</script>
</head>
<body>
<div class="reveal">
<div class="slides">
2018-03-15 08:09:09 +01:00
<section id="sec-title-slide"><h1 class="title">Case-Study</h1><h2 class="author">Ivan Hörler und Andreas Zweili</h2><p class="date">Created: 2018-03-14 Wed 15:41</p>
2018-03-04 12:44:37 +01:00
</section>
<section id="table-of-contents">
2018-03-15 08:09:09 +01:00
<div id="table-of-contents">
2018-03-04 12:44:37 +01:00
<h2>Inhaltsverzeichnis</h2>
<div id="text-table-of-contents">
<ul>
2018-03-15 08:09:09 +01:00
<li><a href="#/slide-orgc489b83">Ausgangslage</a></li>
<li><a href="#/slide-orgb5dc558">Varianten</a></li>
<li><a href="#/slide-org150a574">Kosten</a></li>
<li><a href="#/slide-org5370538">Vorgehen</a></li>
<li><a href="#/slide-org62d970d">Fazit</a></li>
2018-03-04 12:44:37 +01:00
</ul>
</div>
2018-03-15 08:09:09 +01:00
</div>
2018-03-04 12:44:37 +01:00
</section>
<section>
2018-03-15 08:09:09 +01:00
<section id="slide-orgc489b83">
<h2 id="orgc489b83">Ausgangslage</h2>
<ul>
2018-03-14 14:53:25 +01:00
<li>Freie Software in Bezug auf Open-Source Code.</li>
</ul>
<p>
Um einen ersten Anhaltspunkt zu haben, haben wir ein Mindmap gezeichnet in
welchem wir unsere ersten Ideen erfassten.
</p>
2018-03-04 12:44:37 +01:00
</section>
2018-03-15 08:09:09 +01:00
<section id="slide-orgff3d075">
<h3 id="orgff3d075">Vision</h3>
<p>
Die Vision wurde anhand eines Mindmaps erstmals grob umfasst:
</p>
2018-03-04 12:44:37 +01:00
2018-03-15 08:09:09 +01:00
<div class="figure">
<p><img src="pictures/webshop.png" alt="webshop.png" width="70%" />
</p>
</div>
2018-03-07 21:35:49 +01:00
</section>
2018-03-15 08:09:09 +01:00
<section id="slide-orgb5960bc">
<h3 id="orgb5960bc">Vision - Artikel</h3>
2018-03-14 14:53:25 +01:00
2018-03-15 08:09:09 +01:00
<div class="figure">
<p><img src="pictures/Vision-Artikel.png" alt="Vision-Artikel.png" width="80%" />
</p>
</div>
2018-03-07 21:35:49 +01:00
</section>
2018-03-15 08:09:09 +01:00
<section id="slide-org723bfed">
<h3 id="org723bfed">Vision - Warenkorb</h3>
2018-03-07 21:35:49 +01:00
2018-03-15 08:09:09 +01:00
<div class="figure">
<p><img src="pictures/Vision-Warenkorb.png" alt="Vision-Warenkorb.png" width="80%" />
</p>
</div>
2018-03-07 21:35:49 +01:00
</section>
2018-03-15 08:09:09 +01:00
<section id="slide-orgafe16fc">
<h3 id="orgafe16fc">Vision - Abgaben</h3>
2018-03-14 14:53:25 +01:00
2018-03-15 08:09:09 +01:00
<div class="figure">
<p><img src="pictures/Vision-Abgaben.png" alt="Vision-Abgaben.png" width="80%" />
</p>
</div>
2018-03-04 12:44:37 +01:00
</section>
</section>
<section>
2018-03-15 08:09:09 +01:00
<section id="slide-orgb5dc558">
<h2 id="orgb5dc558">Varianten</h2>
<div class="outline-text-2" id="text-orgb5dc558">
2018-03-04 12:44:37 +01:00
</div>
</section>
2018-03-15 08:09:09 +01:00
<section id="slide-orgcc02b2b">
<h3 id="orgcc02b2b">C# und SQL Server</h3>
2018-03-15 08:09:09 +01:00
<div class="figure">
<p><img src="pictures/csharp.png" alt="csharp.png" />
</p>
</div>
2018-03-04 12:44:37 +01:00
</section>
2018-03-15 08:09:09 +01:00
<section id="slide-org5e9536b">
<h3 id="org5e9536b">Laravel und MySQL</h3>
2018-03-14 14:53:25 +01:00
2018-03-15 08:09:09 +01:00
<div class="figure">
<p><img src="pictures/laravel.png" alt="laravel.png" />
</p>
</div>
2018-03-04 12:44:37 +01:00
</section>
2018-03-15 08:09:09 +01:00
<section id="slide-org6a465f6">
<h3 id="org6a465f6">Django und MariaDB</h3>
2018-03-14 14:53:25 +01:00
2018-03-15 08:09:09 +01:00
<div class="figure">
<p><img src="pictures/django.png" alt="django.png" />
</p>
</div>
2018-03-04 12:44:37 +01:00
</section>
2018-03-15 08:09:09 +01:00
<section id="slide-org828caad">
<h3 id="org828caad">Kriterien</h3>
<ul>
<li>Freie Software</li>
<li>Cross Plattform nutzbar</li>
<li>Lesbarkeit des Codes</li>
<li>Einfachheit des Setups</li>
<li>Ohne spezielle Tools nutzbar</li>
<li>Vorkenntnisse Lernfaktor</li>
</ul>
2018-03-04 12:44:37 +01:00
</section>
2018-03-15 08:09:09 +01:00
<section id="slide-orgc207dd7">
<h3 id="orgc207dd7">Vergleich</h3>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
2018-03-15 08:09:09 +01:00
<col class="org-left" />
2018-03-15 08:09:09 +01:00
<col class="org-right" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left"><b>Variante</b></th>
<th scope="col" class="org-right"><b>Erreichte Punktzahl</b></th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">ASP.NET und SQL Server</td>
<td class="org-right">141</td>
</tr>
<tr>
<td class="org-left">PHP und MySQL</td>
<td class="org-right">161</td>
</tr>
<tr>
<td class="org-left">Django und MariaDB</td>
<td class="org-right">196</td>
</tr>
</tbody>
</table>
2018-03-04 12:44:37 +01:00
</section>
2018-03-15 08:09:09 +01:00
<section id="slide-orgd5e840b">
<h3 id="orgd5e840b">Auswahl</h3>
2018-03-04 12:44:37 +01:00
</section>
</section>
<section>
2018-03-15 08:09:09 +01:00
<section id="slide-org150a574">
<h2 id="org150a574">Kosten</h2>
<div class="outline-text-2" id="text-org150a574">
2018-03-04 12:44:37 +01:00
</div>
</section>
2018-03-15 08:09:09 +01:00
<section id="slide-org9461dcd">
<h3 id="org9461dcd">Laravel Webshop</h3>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
2018-03-15 08:09:09 +01:00
<col class="org-left" />
2018-03-15 08:09:09 +01:00
<col class="org-left" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">Sprache</th>
<th scope="col" class="org-left">Codezeilen</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">PHP</td>
<td class="org-left">8679</td>
</tr>
</tbody>
<tbody>
<tr>
<td class="org-left"><b>Total</b></td>
<td class="org-left"><b>8679</b></td>
</tr>
</tbody>
</table>
2018-03-04 12:44:37 +01:00
</section>
2018-03-15 08:09:09 +01:00
<section id="slide-org18e9a41">
<h3 id="org18e9a41">Django Webshop</h3>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
2018-03-15 08:09:09 +01:00
<col class="org-left" />
2018-03-15 08:09:09 +01:00
<col class="org-right" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">Sprache</th>
<th scope="col" class="org-right">Codezeilen</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">Python</td>
<td class="org-right">1460</td>
</tr>
<tr>
<td class="org-left">SQL</td>
<td class="org-right">4639</td>
</tr>
</tbody>
<tbody>
<tr>
<td class="org-left"><b>Total</b></td>
<td class="org-right"><b>6099</b></td>
</tr>
</tbody>
</table>
2018-03-04 12:44:37 +01:00
</section>
</section>
<section>
2018-03-15 08:09:09 +01:00
<section id="slide-org5370538">
<h2 id="org5370538">Vorgehen</h2>
<div class="outline-text-2" id="text-org5370538">
2018-03-04 12:44:37 +01:00
</div>
</section>
2018-03-15 08:09:09 +01:00
<section id="slide-orge7824f4">
<h3 id="orge7824f4">Currencies - App</h3>
2018-03-09 11:12:23 +01:00
<ul>
<li>Wurde in Django als eigenen App entwickelt und sollte daher problemloos in</li>
</ul>
<p>
andere Applikationen eingebunden werden können.
</p>
2018-03-09 11:12:23 +01:00
<ul>
<li>Die Quelle der Währungen ist die Schweizerische Nationalbank mit der URL:</li>
</ul>
<p>
<a href="https://www.snb.ch">https://www.snb.ch</a> | resp:
<a href="https://www.snb.ch/selector/de/mmr/exfeed/rss">https://www.snb.ch/selector/de/mmr/exfeed/rss</a>
</p>
2018-03-15 08:09:09 +01:00
<div class="figure">
<p><img src="pictures/currencies-rss-reader.png" alt="currencies-rss-reader.png" width="80%" />
</p>
</div>
</section>
2018-03-15 08:09:09 +01:00
<section id="slide-orgde14a58">
<h3 id="orgde14a58">Currencies - Quelle</h3>
2018-03-14 14:53:25 +01:00
2018-03-15 08:09:09 +01:00
<div class="figure">
<p><img src="pictures/currencies-rss-xml.png" alt="currencies-rss-xml.png" width="80%" />
</p>
</div>
</section>
2018-03-15 08:09:09 +01:00
<section id="slide-org6d79140">
<h3 id="org6d79140">Currencies - Parsing</h3>
<ul>
<li>Das Konvertieren des XML&rsquo;s wurde mit Python eigener Module gemacht.</li>
<li>für das Herunterladen des XML&rsquo;s wurde das Modul &rsquo;urllib&rsquo; verwendet (1)</li>
<li>für das Parsen über die einzelnen items/nodes das Modul xml.etree.ElementTree. (2)</li>
</ul>
<p>
(1) <a href="https://docs.python.org/2/library/urllib.html">https://docs.python.org/2/library/urllib.html</a>
(2) <a href="https://docs.python.org/2/library/xml.etree.elementtree.html">https://docs.python.org/2/library/xml.etree.elementtree.html</a>
</p>
</section>
2018-03-15 08:09:09 +01:00
<section id="slide-org22561e4">
<h3 id="org22561e4">Currencies - Ablauf</h3>
2018-03-15 08:09:09 +01:00
<div class="figure">
<p><img src="pictures/currencies.png" alt="currencies.png" width="55%" />
</p>
</div>
</section>
2018-03-15 08:09:09 +01:00
<section id="slide-orgeb66642">
<h3 id="orgeb66642">Infrastruktur</h3>
2018-03-14 14:53:25 +01:00
<aside class="notes">
<p>
Andreas erzählt wie die infrastruktur aufgebaut ist.
</p>
2018-03-14 14:53:25 +01:00
</aside>
2018-03-14 14:53:25 +01:00
2018-03-15 08:09:09 +01:00
<div class="figure">
<p><img src="pictures/Server-Architecture.png" alt="Server-Architecture.png" width="60%" />
</p>
</div>
</section>
2018-03-15 08:09:09 +01:00
<section id="slide-org50acd06">
<h3 id="org50acd06">Programmierung</h3>
<p>
vieleicht zwei Schwierigkeiten
</p>
2018-03-04 12:44:37 +01:00
2018-03-09 11:12:23 +01:00
</section>
2018-03-15 08:09:09 +01:00
<section id="slide-org4225190">
<h3 id="org4225190">Programmierung - Hürde #1</h3>
2018-03-09 11:12:23 +01:00
<ul>
<li>Django hat ein modul das die Forms speziell handelt so dass man mit wehnig Code</li>
</ul>
<p>
Einen HTML Button oder ein Feld erzeugen kann.
</p>
<ul>
<li>Die schwierigkeit war nun heraus zu finden wie man dem Feld ein von der DB stammenden</li>
</ul>
<p>
default wert mitgeben konnte.
</p>
<ul>
<li>Es stellte sich heraus dass das Feld ein Key: Value paar benötigte um zu wissen wohin es</li>
</ul>
<p>
den wert schreiben soll&#x2026;.
</p>
<p>
Note: hier den code higlighter einfügen:
amount_form = CartForm(
initial={&rsquo;amount_form&rsquo;: cart_position.amount}
)
</p>
2018-03-04 12:44:37 +01:00
</section>
</section>
<section>
2018-03-15 08:09:09 +01:00
<section id="slide-org62d970d">
<h2 id="org62d970d">Fazit</h2>
2018-03-14 14:51:44 +01:00
<p>
special thanks to:
</p>
<ul>
<li>draw.io,</li>
<li>Python,</li>
<li>Django,</li>
<li>stackexchange and</li>
<li>Beer.</li>
</ul>
2018-03-04 12:44:37 +01:00
</section>
</section>
</div>
</div>
<script src="https://cdn.jsdelivr.net/reveal.js/3.0.0/lib/js/head.min.js"></script>
<script src="https://cdn.jsdelivr.net/reveal.js/3.0.0/js/reveal.js"></script>
<script>
// Full list of configuration options available here:
// https://github.com/hakimel/reveal.js#configuration
Reveal.initialize({
controls: true,
progress: true,
history: false,
center: true,
slideNumber: 'c',
rollingLinks: false,
keyboard: true,
overview: true,
theme: Reveal.getQueryHash().theme, // available themes are in /css/theme
transition: Reveal.getQueryHash().transition || 'linear', // default/cube/page/concave/zoom/linear/fade/none
transitionSpeed: 'default',
multiplex: {
secret: '', // null if client
id: '', // id, obtained from socket.io server
url: '' // Location of socket.io server
},
// Optional libraries used to extend on reveal.js
dependencies: [
{ src: 'https://cdn.jsdelivr.net/reveal.js/3.0.0/lib/js/classList.js', condition: function() { return !document.body.classList; } },
{ src: 'https://cdn.jsdelivr.net/reveal.js/3.0.0/plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'https://cdn.jsdelivr.net/reveal.js/3.0.0/plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'https://cdn.jsdelivr.net/reveal.js/3.0.0/plugin/zoom-js/zoom.js', async: true, condition: function() { return !!document.body.classList; } },
{ src: 'https://cdn.jsdelivr.net/reveal.js/3.0.0/plugin/notes/notes.js', async: true, condition: function() { return !!document.body.classList; } }]
});
</script>
</body>
</html>