Merge branch 'master' of git.2li.ch:ibz/web_AI-5

* 'master' of git.2li.ch:ibz/web_AI-5:
  some minor changes

# Conflicts:
#	presentation/presentation.html
This commit is contained in:
Ivan Hörler 2018-03-16 11:21:50 +01:00
commit 15b5f7304d
2 changed files with 14 additions and 403 deletions

View File

@ -1,397 +0,0 @@
<!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-16 Fri 10:48</p>
</section>
<section id="table-of-contents">
<div id="table-of-contents">
<h2>Inhaltsverzeichnis</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#/slide-orgb93ca56">Ausgangslage</a></li>
<li><a href="#/slide-org43148b5">Varianten</a></li>
<li><a href="#/slide-orgac26bc3">Kosten</a></li>
<li><a href="#/slide-orgff3147f">Vorgehen</a></li>
<li><a href="#/slide-org6f735a2">Fazit</a></li>
</ul>
</div>
</div>
</section>
<section>
<section id="slide-orgb93ca56">
<h2 id="orgb93ca56">Ausgangslage</h2>
<ul>
<li>Webshop erstellen</li>
<li>Währungsumrechnung CHF zu &#x2026;</li>
<li>Freie Software in Bezug auf Open-Source Code.</li>
</ul>
</section>
<section id="slide-orga157492">
<h3 id="orga157492">Vision</h3>
<p>
Die Vision wurde anhand eines Mindmaps erstmals grob umfasst:
</p>
<div class="figure">
<p><img src="pictures/webshop.png" alt="webshop.png" width="70%" />
</p>
</div>
</section>
<section id="slide-orge879aba">
<h3 id="orge879aba">Vision - Artikel</h3>
<div class="figure">
<p><img src="pictures/Vision-Artikel.png" alt="Vision-Artikel.png" width="80%" />
</p>
</div>
</section>
<section id="slide-org11bc238">
<h3 id="org11bc238">Vision - Warenkorb</h3>
<div class="figure">
<p><img src="pictures/Vision-Warenkorb.png" alt="Vision-Warenkorb.png" width="80%" />
</p>
</div>
</section>
</section>
<section>
<section id="slide-org43148b5">
<h2 id="org43148b5">Varianten</h2>
<div class="outline-text-2" id="text-org43148b5">
</div>
</section>
<section id="slide-org141ed21">
<h3 id="org141ed21">C# und SQL Server</h3>
<div class="figure">
<p><img src="pictures/csharp.png" alt="csharp.png" />
</p>
</div>
</section>
<section id="slide-orgf8ae7e6">
<h3 id="orgf8ae7e6">Laravel und MySQL</h3>
<div class="figure">
<p><img src="pictures/laravel.png" alt="laravel.png" />
</p>
</div>
</section>
<section id="slide-org8fe0596">
<h3 id="org8fe0596">Django und MariaDB</h3>
<div class="figure">
<p><img src="pictures/django.png" alt="django.png" />
</p>
</div>
</section>
<section id="slide-org3d1f7a1">
<h3 id="org3d1f7a1">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-orgff4b0ef">
<h3 id="orgff4b0ef">Vergleich</h3>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<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-orgac26bc3">
<h2 id="orgac26bc3">Kosten</h2>
<div class="outline-text-2" id="text-orgac26bc3">
</div>
</section>
<section id="slide-org4529987">
<h3 id="org4529987">Laravel Webshop</h3>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<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-orge369227">
<h3 id="orge369227">Django Webshop</h3>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<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-orgff3147f">
<h2 id="orgff3147f">Vorgehen</h2>
<div class="outline-text-2" id="text-orgff3147f">
</div>
</section>
<section id="slide-orge053f46">
<h3 id="orge053f46">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>
<div class="figure">
<p><img src="pictures/currencies-rss-reader.png" alt="currencies-rss-reader.png" width="80%" />
</p>
</div>
</section>
<section id="slide-org5ee58ea">
<h3 id="org5ee58ea">Currencies - Quelle</h3>
<div class="figure">
<p><img src="pictures/currencies-rss-xml.png" alt="currencies-rss-xml.png" />
</p>
</div>
</section>
<section id="slide-orga57f0be">
<h3 id="orga57f0be">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>
<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-orga0e1065">
<h3 id="orga0e1065">Currencies - Ablauf</h3>
<div class="figure">
<p><img src="pictures/currencies.png" alt="currencies.png" width="55%" />
</p>
</div>
</section>
<section id="slide-org339a584">
<h3 id="org339a584">Infrastruktur</h3>
<aside class="notes">
<p>
Andreas erzählt wie die infrastruktur aufgebaut ist.
</p>
</aside>
<div class="figure">
<p><img src="pictures/Server-Architecture.png" alt="Server-Architecture.png" width="90%" />
</p>
</div>
</section>
<section id="slide-org8d149bf">
<h3 id="org8d149bf">Programmierung</h3>
<div class="figure">
<p><img src="pictures/form.png" alt="form.png" width="60%" />
</p>
</div>
<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-org6f735a2">
<h2 id="org6f735a2">Fazit</h2>
<ul>
<li>Trotz Model View Controll, SQL unerlässlich.</li>
<li>Vagrant (up, suspend, provision, destroy)</li>
<li>Git, Python/Django, JS brauchts trotzdem.</li>
</ul>
</section>
<section id="slide-org80b7db8">
<h3 id="org80b7db8">Besten Dank für die Aufmerksahmkeit.</h3>
<p>
Ivan &amp; Andreas
</p>
</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>

View File

@ -29,11 +29,11 @@ Die Vision wurde anhand eines Mindmaps erstmals grob umfasst:
* Varianten
** C# und SQL Server
** ASP.NET (C#) und SQL Server
[[file:pictures/csharp.png]]
** Laravel und MySQL
** Laravel (PHP) und MySQL
[[file:pictures/laravel.png]]
@ -55,11 +55,19 @@ Die Vision wurde anhand eines Mindmaps erstmals grob umfasst:
| *Variante* | *Erreichte Punktzahl von 235* |
|------------------------+-------------------------------|
| ASP.NET und SQL Server | 141 |
| PHP und MySQL | 161 |
| Laravel und MySQL | 161 |
| Django und MariaDB | 196 |
|------------------------+-------------------------------|
* Kosten
** Tools
- Ausgaben während der Case-Study: 0.00 CHF
- 100% freie Software
- "Let's Encrypt" für SSL
- "freenom.com" für Domain
** Laravel Webshop
| Sprache | Codezeilen |
@ -85,7 +93,6 @@ Die Vision wurde anhand eines Mindmaps erstmals grob umfasst:
** Currencies - App
- Wurde in Django als eigenen App entwickelt und sollte daher problemlos in andere Applikationen eingebunden werden können.
- Die Quelle der Währungen ist die Schweizerische Nationalbank mit der URL:
https://www.snb.ch
@ -105,8 +112,9 @@ https://www.snb.ch/selector/de/mmr/exfeed/rss
- für das Herunterladen des XML's wurde das Modul 'urllib' verwendet (1)
- für das Parsen über die einzelnen items/nodes das Modul xml.etree.ElementTree. (2)
1. https://docs.python.org/2/library/urllib.html
2. https://docs.python.org/2/library/xml.etree.elementtree.html
(1) https://docs.python.org/2/library/urllib.html
(2) https://docs.python.org/2/library/xml.etree.elementtree.html
** Currencies - Ablauf