396 lines
9.5 KiB
HTML
396 lines
9.5 KiB
HTML
<!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">
|
|
<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 Mit 15:56</p>
|
|
</section>
|
|
<section id="table-of-contents">
|
|
<nav id="table-of-contents">
|
|
<h2>Inhaltsverzeichnis</h2>
|
|
<div id="text-table-of-contents">
|
|
<ul>
|
|
<li><a href="#/slide-org32ea894">Ausgangslage</a></li>
|
|
<li><a href="#/slide-org3bf6c19">Varianten</a></li>
|
|
<li><a href="#/slide-orgdc12e46">Kosten</a></li>
|
|
<li><a href="#/slide-org2edfd64">Vorgehen</a></li>
|
|
<li><a href="#/slide-org6911068">Fazit</a></li>
|
|
</ul>
|
|
</div>
|
|
</nav>
|
|
</section>
|
|
|
|
<section>
|
|
<section id="slide-org32ea894">
|
|
<h2 id="org32ea894">Ausgangslage</h2>
|
|
<ul>
|
|
<li>Webshop erstellen</li>
|
|
<li>Währungsumrechnung CHF zu …</li>
|
|
<li>Freie Software in Bezug auf Open-Source Code.</li>
|
|
|
|
</ul>
|
|
|
|
</section>
|
|
<section id="slide-org5573951">
|
|
<h3 id="org5573951">Vision</h3>
|
|
<p>
|
|
Die Vision wurde anhand eines Mindmaps erstmals grob umfasst:
|
|
</p>
|
|
|
|
|
|
<figure>
|
|
<img src="pictures/webshop.png" alt="webshop.png" width="70%">
|
|
|
|
</figure>
|
|
|
|
</section>
|
|
<section id="slide-orgbe8457b">
|
|
<h3 id="orgbe8457b">Vision - Artikel</h3>
|
|
|
|
<figure>
|
|
<img src="pictures/Vision-Artikel.png" alt="Vision-Artikel.png" width="80%">
|
|
|
|
</figure>
|
|
|
|
</section>
|
|
<section id="slide-org96f7c15">
|
|
<h3 id="org96f7c15">Vision - Warenkorb</h3>
|
|
|
|
<figure>
|
|
<img src="pictures/Vision-Warenkorb.png" alt="Vision-Warenkorb.png" width="80%">
|
|
|
|
</figure>
|
|
|
|
</section>
|
|
</section>
|
|
<section>
|
|
<section id="slide-org3bf6c19">
|
|
<h2 id="org3bf6c19">Varianten</h2>
|
|
<div class="outline-text-2" id="text-org3bf6c19">
|
|
</div>
|
|
</section>
|
|
<section id="slide-orgab20119">
|
|
<h3 id="orgab20119">C# und SQL Server</h3>
|
|
|
|
<figure>
|
|
<img src="pictures/csharp.png" alt="csharp.png">
|
|
|
|
</figure>
|
|
|
|
</section>
|
|
<section id="slide-orgd5ad8ba">
|
|
<h3 id="orgd5ad8ba">Laravel und MySQL</h3>
|
|
|
|
<figure>
|
|
<img src="pictures/laravel.png" alt="laravel.png">
|
|
|
|
</figure>
|
|
|
|
</section>
|
|
<section id="slide-org2b8377e">
|
|
<h3 id="org2b8377e">Django und MariaDB</h3>
|
|
|
|
<figure>
|
|
<img src="pictures/django.png" alt="django.png">
|
|
|
|
</figure>
|
|
|
|
</section>
|
|
<section id="slide-org42ac8b9">
|
|
<h3 id="org42ac8b9">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 und Lernfaktor</li>
|
|
|
|
</ul>
|
|
|
|
</section>
|
|
<section id="slide-orgf3f0904">
|
|
<h3 id="orgf3f0904">Vergleich</h3>
|
|
<table>
|
|
|
|
|
|
<colgroup>
|
|
<col class="org-left">
|
|
|
|
<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 von 235</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>
|
|
|
|
</section>
|
|
</section>
|
|
<section>
|
|
<section id="slide-orgdc12e46">
|
|
<h2 id="orgdc12e46">Kosten</h2>
|
|
<div class="outline-text-2" id="text-orgdc12e46">
|
|
</div>
|
|
</section>
|
|
<section id="slide-orgda17a3e">
|
|
<h3 id="orgda17a3e">Laravel Webshop</h3>
|
|
<table>
|
|
|
|
|
|
<colgroup>
|
|
<col class="org-left">
|
|
|
|
<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>
|
|
|
|
</section>
|
|
<section id="slide-org32ae043">
|
|
<h3 id="org32ae043">Django Webshop</h3>
|
|
<table>
|
|
|
|
|
|
<colgroup>
|
|
<col class="org-left">
|
|
|
|
<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>
|
|
|
|
</section>
|
|
</section>
|
|
<section>
|
|
<section id="slide-org2edfd64">
|
|
<h2 id="org2edfd64">Vorgehen</h2>
|
|
<div class="outline-text-2" id="text-org2edfd64">
|
|
</div>
|
|
</section>
|
|
<section id="slide-orgc7783c4">
|
|
<h3 id="orgc7783c4">Currencies - App</h3>
|
|
<ul>
|
|
<li>Wurde in Django als eigenen App entwickelt und sollte daher problemlos in andere Applikationen eingebunden werden können.</li>
|
|
|
|
<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>
|
|
</p>
|
|
|
|
<p>
|
|
<a href="https://www.snb.ch/selector/de/mmr/exfeed/rss">https://www.snb.ch/selector/de/mmr/exfeed/rss</a>
|
|
</p>
|
|
|
|
|
|
<figure>
|
|
<img src="pictures/currencies-rss-reader.png" alt="currencies-rss-reader.png" width="80%">
|
|
|
|
</figure>
|
|
|
|
</section>
|
|
<section id="slide-orgbdbee89">
|
|
<h3 id="orgbdbee89">Currencies - Quelle</h3>
|
|
|
|
<figure>
|
|
<img src="pictures/currencies-rss-xml.png" alt="currencies-rss-xml.png">
|
|
|
|
</figure>
|
|
|
|
</section>
|
|
<section id="slide-org772234a">
|
|
<h3 id="org772234a">Currencies - Parsing</h3>
|
|
<ul>
|
|
<li>Das Konvertieren des XML’s wurde mit Python eigener Module gemacht.</li>
|
|
<li>für das Herunterladen des XML’s wurde das Modul ’urllib’ verwendet (1)</li>
|
|
<li>für das Parsen über die einzelnen items/nodes das Modul xml.etree.ElementTree. (2)</li>
|
|
|
|
<li><a href="https://docs.python.org/2/library/urllib.html">https://docs.python.org/2/library/urllib.html</a></li>
|
|
<li><a href="https://docs.python.org/2/library/xml.etree.elementtree.html">https://docs.python.org/2/library/xml.etree.elementtree.html</a></li>
|
|
|
|
</ul>
|
|
|
|
</section>
|
|
<section id="slide-org0ce0986">
|
|
<h3 id="org0ce0986">Currencies - Ablauf</h3>
|
|
|
|
<figure>
|
|
<img src="pictures/currencies.png" alt="currencies.png" width="55%">
|
|
|
|
</figure>
|
|
|
|
</section>
|
|
<section id="slide-org5ccb0d2">
|
|
<h3 id="org5ccb0d2">Infrastruktur</h3>
|
|
<aside class="notes">
|
|
<p>
|
|
Andreas erzählt wie die infrastruktur aufgebaut ist.
|
|
</p>
|
|
|
|
</aside>
|
|
|
|
|
|
<figure>
|
|
<img src="pictures/Server-Architecture.png" alt="Server-Architecture.png" width="90%">
|
|
|
|
</figure>
|
|
|
|
</section>
|
|
<section id="slide-org102e85d">
|
|
<h3 id="org102e85d">Programmierung</h3>
|
|
|
|
<figure>
|
|
<img src="pictures/form.png" alt="form.png" width="60%">
|
|
|
|
</figure>
|
|
|
|
<div class="org-src-container">
|
|
|
|
<pre class="src src-python"><span style="color: #657b83; background-color: #fdf6e3;">amount_form</span> = CartForm<span style="color: #268bd2;">(</span>
|
|
<span style="color: #93a1a1; background-color: #eee8d5;"> </span> <span style="color: #657b83; background-color: #fdf6e3;">initial</span>=<span style="color: #2aa198;">{</span><span style="color: #2aa198;">'amount_form'</span>: cart_position.amount<span style="color: #2aa198;">}</span>
|
|
<span style="color: #268bd2;">)</span>
|
|
</pre>
|
|
</div>
|
|
|
|
|
|
</section>
|
|
</section>
|
|
<section>
|
|
<section id="slide-org6911068">
|
|
<h2 id="org6911068">Fazit</h2>
|
|
<p>
|
|
special thanks to:
|
|
</p>
|
|
<ul>
|
|
<li>draw.io,</li>
|
|
<li>Python,</li>
|
|
<li>Django,</li>
|
|
<li>stackexchange and</li>
|
|
<li>Beer.</li>
|
|
|
|
</ul>
|
|
</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>
|