valg01 / Svetovna-prvenstva-v-nogometu

MIT License
0 stars 1 forks source link

Zaključek projekta, prošnja za pomoč pri Binderju #9

Closed tjazerzen closed 1 year ago

tjazerzen commented 1 year ago

Pozdravljeni,

projekt je pripravljen za oddajo, manjše probleme sva imela samo z deploymentom v binderju.

Ob vnašanju sledečih podatkov na binder deployment:

image

dobim napako

404 : Not Found
You are requesting a page that does not exist!

Ta problem lahko replicirate z obiskom linka https://hub.ovh2.mybinder.org/user/valg01-svetovna-stva-v-nogometu-c8qerse5/proxy/8080.

kakšna ideja zakaj se to dogaja? Sploh ne dobim drugega feedbacka, kaj bi bilo lahko narobe ali kje se je zataknilo.

Hvala,

Tjaž

majbc1999 commented 1 year ago

Živjo,

hja, Binder je kar nepregleden kar se tiče tega, težko je najti napako. Edino kar se da storiti je to, da obiščete repozitorij na Binderju (namesto porta 8080). To storite tako, da v urlju (stran, kjer piše 404 Error) na koncu pobrišete proxy/8080.

image

Tukaj nato v (online) terminalu poženete vašo aplikacijo (python app.py) in gledate feedback (torej kateri exception vrne). Se pa zna zgoditi, da terminal takoj crasha in potem dejansko lahko samo ugibaš, v čem so težave. V vašem primeru mi izpiše:

image

Problem je v tem, da uporabljate vrata 5432, ki pa niso ustrezna za Binder. Potrebno je uporabiti okoljsko spremenljivko POSTGRES_PORT, ki jo definirate v binder/start. Morala bosta torej spremeniti v Data/auth_public.py:

import os

connection_port = os.environ.get('POSTGRES_PORT', 5432)

def connect():
    return psycopg2.connect(
        host=host, port=connection_port, database=db, user=user, password=password
    )

Podobno tudi v Data/Database.py:

class Repo:
    def __init__(self):
        self.conn = psycopg2.connect(
            database=auth.db,
            host=auth.host,
            user=auth.user,
            password=auth.password,
            port=os.environ.get('POSTGRES_PORT', 5432),
        )
        self.cur = self.conn.cursor(cursor_factory=psycopg2.extras.DictCursor)

Upam, da bo potem normalno pognalo Binder.

Kar se tiče samega projetka, vaju moram pohvaliti za dobro opravljeno delo. Všeč mi je čistost in organiziranost vajine kode. Edino, kar bo pred zagovorom še potrebno popraviti, je povezava z bazo. Zaenkrat uporabljata kar vajino uporabniško ime in geslo, kar ni pravilno. Podobno kot pri drugih projektih, morata uporabiti uporabnika javnost z geslom javnogeslo. Seveda morata temu uporabniku dodati potrebne pravice, da bo aplikacija normalno delovala. Spremenita torej auth_public.py , dodajta pravice in nato sporočita, da še enkrat pregledam (in odobrim) vajin projekt. @valg01, prosim tudi, da na http://baza.fmf.uni-lj.si/ spremeniš geslo, saj nočemo kakšnemu neznancu podariti dostop na fmfjevo podatkovno bazo ;).

valg01 commented 1 year ago

Živjo, uporabnik je v auth_public.py spremenjen v javnost, tako da bi sedaj moralo biti OK, hkrati sem si spremenil geslo.

tjazerzen commented 1 year ago

Pozdravljeni,

@valg01 je posodobil binder/ folder po vaših predlogih, pa se zdaj aplikacija "nekako" zažene.

Ob kliku na link, priloženem v najinem README-ju, naju binder preusmeri na naslov https://notebooks.gesis.org/binder/jupyter/user/valg01-svetovna-stva-v-nogometu-fkyjo5py/lab, kjer na UI-ju dobim nek jupyter urejevalnik, namesto dejanske preusmeritve na projekt:

image

@majbc1999, mogoče kakšna ideja zakaj in kako lahko poskrbiva za direktno preusmeritev na najin UI projekta?

majbc1999 commented 1 year ago

Aha, že vidim kje je zmeda. Torej, pravilen naslov za zagon vajine aplikacije je https://mybinder.org/v2/gh/valg01/Svetovna-prvenstva-v-nogometu/main?urlpath=proxy%2F8080. Če pa želita testirati, kje v vajini aplikaciji se pojavi napaka, obiščeta stran, ki si mi jo poslal, klikneta terminal in vpišeta ukaz python app.py. Vidim, da aplikacijo normalno požene, vendar še vedno vrne 404 : Not Found. Morda je problem v tem, da sicer nekonsistentno uporabljata funkcijo url. Vanjo je za pravilno delovanje vedno potrebno dati ime funkcije, ki jo želita klicati in ne poti (narobe je recimo v base.html na nekaterih mestih). Popravita še to.

Poleg tega lahko datoteko bottle.py izbrišeta iz repozitorija (saj imata bottle že v requirementsih). Morda to moti pravilno delovanje. Razen tega nisem prepričan, kaj drugega bi lahko šlo narobe. Popravite ta dva popravka, in bomo videli, če bo aplikacija pravilno delovala. Pa brez panike, če ne bomo mogli usposobiti Binderja, lahko še vedno zagovarjata projekt.