3.6 KiB
3.6 KiB
Case-Study
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:
Vision - Artikel
Vision - Warenkorb
Vision - Abgaben
Varianten
C# und SQL Server
Laravel und MySQL
Django und MariaDB
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 |
Django Webshop
Sprache | Codezeilen |
---|---|
Python | 1460 |
SQL | 4639 |
Total | 6099 |
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
Currencies - Quelle
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
Infrastruktur
Andreas erzählt wie die infrastruktur aufgebaut ist.
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.