7.4 KiB
Zadania domowe
W ramach tego modułu do zdobycia są 4 punkty. Wszystkie zadania bazują na platformie Heroku. W przypadku rozwiązania (poprawnego) zadania 1.2 nie ma potrzeby wykonywania zadania 1.1.
Zadanie 1.1 (2 punkty)
Uruchom dowolną aplikacje na swoim koncie Heroku. Nazwa aplikacji musi być ustawiona na uam-wmi-pzc-<INDEX>-z-1-1
. Strona musi być renderowana w całości po stronie serwera i zawierać w tagu body tylko bieżący czas UTC w formacie ISO 8601 (YYYY-MM-DDThh:mm:ss+00:00) jak w poniższym przykładzie:
<html>
<head>
<title>Rozwiązanie zadania PZC 1.1</title>
</head>
<body>
2021-07-29T11:15:02+00:00
</body>
Sposób sprawdzania zadania
Poprawność wykonania zadania można sprawdzić korzystając ze skryptu. Konieczne jest podstawienie poprawego numeru indeksu w pierwszej lini skryptu.
from __future__ import print_function
!pip3 install bs4 --user
INDEX="329575"
from bs4 import BeautifulSoup
import urllib.request
from datetime import datetime
from datetime import timezone
import sys
def eprint(*args, **kwargs):
print(*args, file=sys.stderr, **kwargs)
def test_solution(index):
valid = False
try:
with urllib.request.urlopen('https://uam-wmi-pzc-'+index+'-z-1-1.herokuapp.com/') as response:
html = response.read()
soup = BeautifulSoup(html, 'html.parser')
try:
dateText = soup.body.get_text().strip()
try:
now = datetime.now(tz=timezone.utc)
date = datetime.fromisoformat(dateText)
eprint("Data na stronie %s"%date)
if abs(date - now).seconds < 1:
valid = True
except:
eprint("Błędny format daty:")
eprint(dateText)
except:
eprint("Nie udało się pobrać treści tagu <body>")
except urllib.error.URLError as e:
eprint(e.status)
return valid
print("\n========================================\n")
if test_solution(INDEX):
print("Zadanie 1.1 zaliczone")
else:
print("Zadanie 1.1 nie zaliczone")
print("\n========================================")
Requirement already satisfied: bs4 in /home/faculty/bikol/.local/lib/python3.7/site-packages (0.0.1) Requirement already satisfied: beautifulsoup4 in /home/faculty/bikol/.local/lib/python3.7/site-packages (from bs4) (4.10.0) Requirement already satisfied: soupsieve>1.2 in /home/faculty/bikol/.local/lib/python3.7/site-packages (from beautifulsoup4->bs4) (2.2.1) [33mWARNING: You are using pip version 21.2.3; however, version 21.3 is available. You should consider upgrading via the '/usr/bin/python3 -m pip install --upgrade pip' command.[0m ======================================== Zadanie 1.1 nie zaliczone ========================================
Błędny format daty: test 2021-10-27T10:27:33+00:00
Zadanie 1.2 (4 punkty)
Celem tego zadania jest poznanie bardziej zaawansowanych możliwości wdrażania aplikacji na platformę Heroku.
Zadanie polega na uruchomieniu na platformie Heroku systemu Gitea. W tym celu konieczne jest przygotowanie odpowiedniego pliku YAML, który umożliwi utworzenie odpowiednich zasobów w ramach platformy Heroku oraz dokona ich konfiguracji.
Jako punkt odniesienia proszę korzystać z oficjalnej instrukcji instalacji Gitea z wykorzystaniem Dockera w trybie rootless. W szczególności następujący plik docker-compose.yml
zawiera wszystkie niezbędne informacje do wykonania zadania (należy go przetłumaczyć na plik heroku.yml
):
version: "2"
services:
server:
image: gitea/gitea:1.14.5-rootless
environment:
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=db:5432
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=gitea
restart: always
volumes:
- ./data:/var/lib/gitea
- ./config:/etc/gitea
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "2222:2222"
depends_on:
- db
db:
image: postgres:13
restart: always
environment:
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=gitea
- POSTGRES_DB=gitea
volumes:
- ./postgres:/var/lib/postgresql/data
Wskazówka:: Skorzystaj z usługi Managed PostgreSQL from Heroku oraz sekcji
setup
plikuheroku.yml
.
Sposób sprawdzania zadania
Zadanie to sprawdzane będzie ręcznie, jesteś zobowiązany udostępnić:
repozytorium Git zawierające całe rozwiązanie zadania
Kod na repozytorium musi być kompletny, oraz umożliwiać automatyczne wdrożenie na platformę Heroku poprzez:
heroku git:remote git push heroku master
Zakładamy przy tym, że odpowiednia aplikacja Heroku została już utwożona i skonfigurowana pod odpowiedni _stack.
link do wdrożonej aplikacji
Wdrożona Gitea powinna hostować przynajmniej jedno repozytorium git.