TDDD83 Kandidatprojekt datateknik
Laboration 0
# Utvecklingsmiljö
I den här laborationen kommer vi steg för steg skapa en utvecklingsmiljö och
installera webb-ramverket Flask. Efter genomförd labb kommer ni ha
en färdig utvecklingsmiljö tillsammans med en fungerande Flask-server.
## Del 1: Git - [Läs mer](https://sv.wikipedia.org/wiki/Git_%28datorprogram%29)
1. Lägg in din publika ssh-nyckel på ditt [gitlab-konto](https://gitlab.liu.se).
Läs [denna guide](https://docs.gitlab.com/ee/gitlab-basics/create-your-ssh-keys.html) vid behov
2. Skapa ett nytt projekt på gitlab.liu.se med namnet "tddd83-labs-[liu id 1]-[liu id 2]". Bocka i "Initialize repository with a README". Detta projekt kommer att användas under hela laborationsserien. Se till att projektet är privat (endast tillgängligt till de som ni bjuder in).
3. Navigera till projektet och bjud in din labbpartner som *Developer* och din labbassistent som *Maintainer* via Members i vänstermenyn
4. Gå till Settings->General, expandera Merge Requests och bocka i "All discussions must be resolved"
5. Gå till Settings->General, expandera Merge Request Approval och klicka på "Add approval rule".
1. Sätt "Rule name" till "Rättning"
2. Välj `main` (eller `master` beroende pÃ¥ hur Gitlab skapade ditt repository) som "Target Branch"
3. Lägg till er labbassist i "Approvers"
4. Klicka på "Add approval rule"
5. Sätt "Approvals required" för alla rader till 1
6. Gå till Settings->Repository, expandera "Protected Branches" och ändra "Allowed to push" till "No one" för main-branchen.
7. Klona ner projektet till en mapp på datorn via ssh. Detta görs med hjälp av
kommandot `git clone`
8. Öppna projektmappen (ert klonade repo) i Visual Studio Code.
På IDAs system görs detta genom att köra följande i terminalen:
```
$ module add prog/vscode
```
```
$ code (sökväg-till-projektmapp)
```
T.ex. om terminalen står i den mapp ni vill köra VS Code i
skriver ni följande i terminalen:
```
$ code .
```
9. Följ instruktionerna för [påbörjande av ny labb](inlamning-och-git#p%E5b%F6rjande-av-ny-labb).
10. Skapa två nya mappar, __server__ och __client__. Mappen server kommer i princip
innehålla er Python-kod och mappen client er HTML, CSS och JavaScript.
Skapa en readme-fil i varje mapp och skriv in en valfri text i varje fil.
Skapa även en .gitignore-fil med följande innehåll:

11. Lägg till alla nya filer i git-repot, gör en commit och ladda upp till GitLab.
När allt är klart ska mappstrukturen se ut som bilden nedan.

Observera att filen .gitignore ligger i samma mapp som client och server.
## Del 2: Virtuell miljö, Venv - [Läs mer](https://docs.python.org/3/library/venv.html)
För att enkelt hålla koll på Python-version samt kunna
installera nödvändiga paket lokalt (i projektet) ska ni
använda er av en virtuell miljö. Gör det genom att följa
nedanstående steg.
1. Navigera er till mappen server/ i projektmappen och skapa en virtuell
miljö där genom att köra följande kommando:
```
$ python3 -m venv venv
```
2. Aktivera miljön med följande kommando; detta kommer ni behöva
göra varje gång ni öppnar projektet.
```
$ source venv/bin/activate
```
Resultatet blir att en text _(venv)_ placeras i terminalens inmatningsrad. Detta
betyder att den virtuella miljön är aktiverad och att ni nu använder den.
Observera att den virtuella miljön __inte__ ska versionshanteras. Mappen `venv/`
ska alltså inte finnas på GitLab.
__Tips:__ Om ni skulle vilja använda vissa funktioner i VSCode, exempelvis
den integrerade terminalen, kan det vara bra att tala om för VSCode vilken
virtuella miljö ni vill att programmet ska använda. Mer information om detta
finns på deras [hemsida](https://code.visualstudio.com/docs/python/environments).
## Del 3: Flask - [Läs mer](http://flask.palletsprojects.com/en/1.1.x/)
Flask är ett litet ramverk för att bygga webbapplikationer. Ni kommer att använda det
för att på ett enkelt sätt ta emot och svara på HTTP-förfrågningar.
Med hjälp av Flask ska ni i Labb 1 bygga ett enklare API.
För att installera Flask (och andra paket) använder vi oss av pakethanteraren PIP.
Med hjälp av PIP kan ni enkelt installera paket i er virtuella miljö.
1. Installera flask i er virtuella miljö:
```
(venv)$ pip install flask
```
2. Skapa en ny fil i server-mappen och döp den till main.py och skriv in följande:

3. Starta sedan flask-servern genom att köra python-filen i terminalen med
följande kommando:
```
(venv)$ python main.py
```

4. Öppna valfri webbläsare och gå till adressen _localhost:5000/hello_. Om allt
genomförts korrekt ska webbläsaren visa en text; _Hello, World!_.
5. När ni har fått allt att fungera, gör då en commit och pusha till GitLab. Om ni är osäkra på hur ni ska gå tillväga finns det [instruktioner om "Arbete med en labb" att följa](inlamning-och-git#arbete-med-en-labb).
## Redovisning:
Denna laboration redovisas lite omvänt än resternande labbar.
Börja med att följa [instruktionerna för "Inlämning"](inlamning-och-git#inl%E4mning) (skapa en Merge Request) och redovisa sedan för er labbassistent.
Sidansvarig: Martin Sjölund
Senast uppdaterad: 2022-01-19