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-09 11:12:23 +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-09 Fri 11:11< / p >
2018-03-04 12:44:37 +01:00
< / section >
< section id = "table-of-contents" >
2018-03-07 21:35:49 +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-09 11:12:23 +01:00
< li > < a href = "#/slide-org00286f2" > Ausgangslage< / a > < / li >
< li > < a href = "#/slide-orgfc0df96" > Varianten< / a > < / li >
< li > < a href = "#/slide-org0904086" > Kosten< / a > < / li >
< li > < a href = "#/slide-org4f0bd5f" > Vorgehen< / a > < / li >
< li > < a href = "#/slide-org1cda59f" > Fazit< / a > < / li >
2018-03-04 12:44:37 +01:00
< / ul >
< / div >
2018-03-07 21:35:49 +01:00
< / div >
2018-03-04 12:44:37 +01:00
< / section >
< section >
2018-03-09 11:12:23 +01:00
< section id = "slide-org00286f2" >
< h2 id = "org00286f2" > Ausgangslage< / h2 >
2018-03-05 12:56:16 +01:00
< ul >
< li > Freie Software in bezug auf open sourcecode.< / 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-09 11:12:23 +01:00
< section id = "slide-org87e5a8a" >
< h3 id = "org87e5a8a" > Vision< / h3 >
2018-03-05 12:56:16 +01:00
< p >
2018-03-09 11:06:10 +01:00
Die Vision wurde anhand eines Mindmaps erstmals grob umfasst:
2018-03-05 12:56:16 +01:00
< / p >
2018-03-04 12:44:37 +01:00
2018-03-07 21:35:49 +01:00
< div class = "figure" >
2018-03-09 11:06:10 +01:00
< p > < img src = "pictures/webshop.png" alt = "webshop.png" width = "70%" / >
2018-03-07 21:35:49 +01:00
< / p >
< / div >
< / section >
2018-03-09 11:12:23 +01:00
< section id = "slide-org645b039" >
< h3 id = "org645b039" > Vision - Artikel< / h3 >
2018-03-07 21:35:49 +01:00
< div class = "figure" >
< p > < img src = "pictures/Vision-Artikel.png" alt = "Vision-Artikel.png" width = "80%" / >
< / p >
< / div >
< / section >
2018-03-09 11:12:23 +01:00
< section id = "slide-org6942cbf" >
< h3 id = "org6942cbf" > Vision - Warenkorb< / h3 >
2018-03-07 21:35:49 +01:00
< div class = "figure" >
< p > < img src = "pictures/Vision-Warenkorb.png" alt = "Vision-Warenkorb.png" width = "80%" / >
< / p >
< / div >
< / section >
2018-03-09 11:12:23 +01:00
< section id = "slide-orgeabf72e" >
< h3 id = "orgeabf72e" > Vision - Abgaben< / h3 >
2018-03-04 12:44:37 +01:00
2018-03-07 21:35:49 +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-09 11:12:23 +01:00
< section id = "slide-orgfc0df96" >
< h2 id = "orgfc0df96" > Varianten< / h2 >
< div class = "outline-text-2" id = "text-orgfc0df96" >
2018-03-04 12:44:37 +01:00
< / div >
< / section >
2018-03-09 11:12:23 +01:00
< section id = "slide-orgfdf558a" >
< h3 id = "orgfdf558a" > C# und SQL Server< / h3 >
2018-03-05 12:56:16 +01:00
2018-03-07 21:35:49 +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-09 11:12:23 +01:00
< section id = "slide-org38c1745" >
< h3 id = "org38c1745" > Laravel und MySQL< / h3 >
2018-03-05 12:56:16 +01:00
2018-03-07 21:35:49 +01:00
< div class = "figure" >
< p > < img src = "pictures/laravel.png" alt = "laravel.png" / >
< / p >
< / div >
2018-03-05 12:56:16 +01:00
2018-03-04 12:44:37 +01:00
< / section >
2018-03-09 11:12:23 +01:00
< section id = "slide-org1d8f730" >
< h3 id = "org1d8f730" > Django und MariaDB< / h3 >
2018-03-05 12:56:16 +01:00
2018-03-07 21:35:49 +01:00
< div class = "figure" >
< p > < img src = "pictures/django.png" alt = "django.png" / >
< / p >
< / div >
2018-03-05 12:56:16 +01:00
2018-03-04 12:44:37 +01:00
< / section >
2018-03-09 11:12:23 +01:00
< section id = "slide-org329e90b" >
< h3 id = "org329e90b" > Kriterien< / h3 >
2018-03-05 12:56:16 +01:00
< 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-09 11:12:23 +01:00
< section id = "slide-org97b96ae" >
< h3 id = "org97b96ae" > Vergleich< / h3 >
2018-03-07 21:35:49 +01:00
< table border = "2" cellspacing = "0" cellpadding = "6" rules = "groups" frame = "hsides" >
2018-03-05 12:56:16 +01:00
< colgroup >
2018-03-07 21:35:49 +01:00
< col class = "org-left" / >
2018-03-05 12:56:16 +01:00
2018-03-07 21:35:49 +01:00
< col class = "org-right" / >
2018-03-05 12:56:16 +01:00
< / 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-09 11:12:23 +01:00
< section id = "slide-org3fb5ad4" >
< h3 id = "org3fb5ad4" > Auswahl< / h3 >
2018-03-04 12:44:37 +01:00
< / section >
< / section >
< section >
2018-03-09 11:12:23 +01:00
< section id = "slide-org0904086" >
< h2 id = "org0904086" > Kosten< / h2 >
< div class = "outline-text-2" id = "text-org0904086" >
2018-03-04 12:44:37 +01:00
< / div >
< / section >
2018-03-09 11:12:23 +01:00
< section id = "slide-org26ba0fc" >
< h3 id = "org26ba0fc" > Laravel Webshop< / h3 >
2018-03-07 21:35:49 +01:00
< table border = "2" cellspacing = "0" cellpadding = "6" rules = "groups" frame = "hsides" >
2018-03-05 12:56:16 +01:00
< colgroup >
2018-03-07 21:35:49 +01:00
< col class = "org-left" / >
2018-03-05 12:56:16 +01:00
2018-03-07 21:35:49 +01:00
< col class = "org-left" / >
2018-03-05 12:56:16 +01:00
< / 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-09 11:12:23 +01:00
< section id = "slide-orge1b0816" >
< h3 id = "orge1b0816" > Django Webshop< / h3 >
2018-03-07 21:35:49 +01:00
< table border = "2" cellspacing = "0" cellpadding = "6" rules = "groups" frame = "hsides" >
2018-03-05 12:56:16 +01:00
< colgroup >
2018-03-07 21:35:49 +01:00
< col class = "org-left" / >
2018-03-05 12:56:16 +01:00
2018-03-07 21:35:49 +01:00
< col class = "org-right" / >
2018-03-05 12:56:16 +01:00
< / 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-09 11:12:23 +01:00
< section id = "slide-org4f0bd5f" >
< h2 id = "org4f0bd5f" > Vorgehen< / h2 >
< div class = "outline-text-2" id = "text-org4f0bd5f" >
2018-03-04 12:44:37 +01:00
< / div >
< / section >
2018-03-09 11:12:23 +01:00
< section id = "slide-org42a0168" >
< h3 id = "org42a0168" > Currencies - App< / h3 >
< ul >
< li > Wurde in Django als eigenen App entwickelt und sollte daher problemloos in< / li >
< / ul >
2018-03-05 12:56:16 +01:00
< p >
2018-03-09 11:06:10 +01:00
andere Applikationen eingebunden werden können.
2018-03-05 12:56:16 +01:00
< / p >
2018-03-09 11:06:10 +01:00
2018-03-09 11:12:23 +01:00
< ul >
< li > Die Quelle der Währungen ist die Schweizerische Nationalbank mit der URL:< / li >
< / ul >
2018-03-09 11:06:10 +01:00
< 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 >
< div class = "figure" >
< p > < img src = "pictures/currencies-rss-reader.png" alt = "currencies-rss-reader.png" width = "80%" / >
< / p >
< / div >
< / section >
2018-03-09 11:12:23 +01:00
< section id = "slide-org0bf7a22" >
< h3 id = "org0bf7a22" > Currencies - Quelle< / h3 >
2018-03-09 11:06:10 +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-09 11:12:23 +01:00
< section id = "slide-orgf3c57c9" >
< h3 id = "orgf3c57c9" > Currencies - Parsing< / h3 >
2018-03-09 11:06:10 +01:00
< 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 >
< / 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 >
2018-03-05 12:56:16 +01:00
< / section >
2018-03-09 11:12:23 +01:00
< section id = "slide-orgcf1b487" >
< h3 id = "orgcf1b487" > Currencies - Ablauf< / h3 >
2018-03-09 11:06:10 +01:00
< div class = "figure" >
< p > < img src = "pictures/currencies.png" alt = "currencies.png" width = "55%" / >
< / p >
< / div >
< / section >
2018-03-09 11:12:23 +01:00
< section id = "slide-org00ac668" >
< h3 id = "org00ac668" > Infrastruktur< / h3 >
2018-03-05 12:56:16 +01:00
< p >
Andreas erzählt wie die infrastruktur aufgebaut ist.
< / p >
2018-03-09 11:06:10 +01:00
< div class = "figure" >
< p > < img src = "pictures/Server-Architecture.png" alt = "Server-Architecture.png" width = "60%" / >
< / p >
< / div >
2018-03-05 12:56:16 +01:00
< / section >
2018-03-09 11:12:23 +01:00
< section id = "slide-org112bf97" >
< h3 id = "org112bf97" > Programmierung< / h3 >
2018-03-05 12:56:16 +01:00
< p >
vieleicht zwei Schwierigkeiten
< / p >
2018-03-04 12:44:37 +01:00
2018-03-09 11:12:23 +01:00
< / section >
< section id = "slide-orgfa3b406" >
< h3 id = "orgfa3b406" > Programmierung - Hürde #1< / h3 >
< 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… .
< / p >
< p >
Note: hier den code higlighter einfügen:
amount_form = CartForm(
initial={’ amount_form’ : cart_position.amount}
)
< / p >
2018-03-04 12:44:37 +01:00
< / section >
< / section >
< section >
2018-03-09 11:12:23 +01:00
< section id = "slide-org1cda59f" >
< h2 id = "org1cda59f" > Fazit< / h2 >
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 >