#+TITLE: Case-Study #+AUTHOR: Ivan Hörler und Andreas Zweili #+OPTIONS: toc:1 num:nil #+REVEAL_TRANS: linear #+REVEAL_THEME: solarized #+REVEAL_ROOT: https://cdn.jsdelivr.net/reveal.js/3.0.0/ #+LANGUAGE: de * Ausgangslage - Freie Software in Bezug auf Open-Source Code. Um einen ersten Anhaltspunkt zu haben, haben wir ein Mindmap gezeichnet in welchem wir unsere ersten Ideen erfassten. ** Vision Die Vision wurde anhand eines Mindmaps erstmals grob umfasst: #+ATTR_HTML: :width 70% [[file:pictures/webshop.png]] ** Vision - Artikel #+ATTR_HTML: :width 80% [[file:pictures/Vision-Artikel.png]] ** Vision - Warenkorb #+ATTR_HTML: :width 80% [[file:pictures/Vision-Warenkorb.png]] ** Vision - Abgaben #+ATTR_HTML: :width 80% [[file:pictures/Vision-Abgaben.png]] * Varianten ** C# und SQL Server [[file:pictures/csharp.png]] ** Laravel und MySQL [[file:pictures/laravel.png]] ** Django und MariaDB [[file:pictures/django.png]] ** Kriterien - Freie Software - Cross Plattform nutzbar - Lesbarkeit des Codes - Einfachheit des Setups - Ohne spezielle Tools nutzbar - Vorkenntnisse Lernfaktor ** Vergleich |------------------------+-----------------------| | *Variante* | *Erreichte Punktzahl* | |------------------------+-----------------------| | ASP.NET und SQL Server | 141 | | PHP und MySQL | 161 | | Django und MariaDB | 196 | |------------------------+-----------------------| ** Auswahl * Kosten ** Laravel Webshop | Sprache | Codezeilen | |---------+------------| | PHP | 8679 | |---------+------------| | *Total* | *8679* | |---------+------------| #+TBLFM: @>$2=vsum(@2..@-1);%.0f ** Django Webshop | Sprache | Codezeilen | |---------+------------| | Python | 1460 | | SQL | 4639 | |---------+------------| | *Total* | *6099* | |---------+------------| #+TBLFM: @>$2=vsum(@2..@-1);%.0f * Vorgehen ** Currencies - App - Wurde in Django als eigenen App entwickelt und sollte daher problemloos in andere Applikationen eingebunden werden können. - Die Quelle der Währungen ist die Schweizerische Nationalbank mit der URL: https://www.snb.ch | resp: https://www.snb.ch/selector/de/mmr/exfeed/rss #+ATTR_HTML: :width 80% [[file:pictures/currencies-rss-reader.png]] ** Currencies - Quelle #+ATTR_HTML: :width 80% [[file:pictures/currencies-rss-xml.png]] ** Currencies - Parsing - Das Konvertieren des XML's wurde mit Python eigener Module gemacht. - 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 ** Currencies - Ablauf #+ATTR_HTML: :width 55% [[file:pictures/currencies.png]] ** Infrastruktur #+BEGIN_NOTES Andreas erzählt wie die infrastruktur aufgebaut ist. #+END_NOTES #+ATTR_HTML: :width 60% [[file:pictures/Server-Architecture.png]] ** Programmierung vieleicht zwei Schwierigkeiten ** Programmierung - Hürde #1 - Django hat ein modul das die Forms speziell handelt so dass man mit wehnig Code Einen HTML Button oder ein Feld erzeugen kann. - Die schwierigkeit war nun heraus zu finden wie man dem Feld ein von der DB stammenden default wert mitgeben konnte. - Es stellte sich heraus dass das Feld ein Key: Value paar benötigte um zu wissen wohin es den wert schreiben soll.... Note: hier den code higlighter einfügen: amount_form = CartForm( initial={'amount_form': cart_position.amount} ) * Fazit special thanks to: - draw.io, - Python, - Django, - stackexchange and - Beer.