Karkausvuodet backendistä

Tuossa toisessa ketjussa onkin jo käsitelty karkausvuosien päättelyä Pythonilla. Nykyaikaisempi tapa on kuitenkin käyttää kyselyihin weppipalvelua.

Siksi voimmekin tehdä backend-palvelun, joka palauttaa kysyttäessä karkausvuodet. Esimerkiksi GET-pyyntö

[palvelin]/karkausvuodet/1901/2000

Palauttaisi JSON-muodossa:

{"vuodesta":"1901","vuoteen":"2000","karkausvuodet":[1904,1908,1912,1916,1920,1924,1928,1932,1936,1940,1944,1948,1952,1956,1960,1964,1968,1972,1976,1980,1984,1988,1992,1996,2000]}

Kunhan tuo saadaan ensin toteutettua, niin voidaan tehdä sille vielä simppeli frontend käyttöliittymäksi.
15810
Äänestä

Muut lukivat myös

Vastaukset 15

Vanhimmat

Jotkut haluaa aina vaan takaapäin...

Äänestä

Noin upeita ideoita ei kannata kertoa julkisesti. Nyt joku toinen voi ehtiä toteuttaa tuon idean ennen sinua ja tulee rikkaaksi kun laittaa kyselyn hinnaksi vaikka 1 € per karkausvuosi.

Äänestä
  • Tai laittaa sille sivulle 100 mainosta niin saa rahaa mainostuloilla...

    Äänestä

  • Miksi kukaan maksaisi 1 € per karkausvuosi?

    Delphillä voisi helposti kirjoittaa DLL:n

    function IsLeapYear(const Year:Longword):Boolean; stdcall;

    Jos joku tykkää Pythonilla koodata, niin kai Pythonista pystyy kutsumaan DLL:ssä olevaa funktiota?

    Windowsissa on valtava määrä usein käytettyjä funktioita esim. näissä:

    kernel32.dll, user32.dll, gdi32.dll advapi.dll

    Ja käsittääkseni jos ajat Python -ohjelmaa Windowsissa, niin ohjelmasti taatusti kutsuu useitakin funktioita noista.

    Ainoa ero on se, että nuo DLL:t on Microsoftin tekemiä, mutta jos teen Delphillä DLL:n niin se on minun tekemä dll.

    Kutsutapa on molemmissa sama - stdcall.

    Huom: jos joku käyttää GNU -systeemistä peräisin olevia DLL:iä windowsissa niin ne on hyvin usein cdecl eikä stdcall.

    Tästä seuraa mm. se, että jos kirjoitat C -koodiin funktion abc, niin DLL:ssä se funktio on oikeasti nimeltään _abc.

    Ja JOS koodaat C++:lla: muista exportoida DLL:ään julkiseksi tarkoitetut funktiot näin:

    extern "C" {

    // Laita funktiomäärittelysi tähän

    }

    jos ET tee noin - funktioidesi oikeista nimistä ei kukaan ota selvää - ja ne vieläpä vaihtelevat sen mukaan mitä C++ -kääntäjää käytät!

    Äänestä

  • Frontin html/js. Minulla on backend virtuaalikoneessa olevalla palvelimella ja siksi host on ip-osoitteella.

    https://pastebin.com/2RLF8LnK

    Kokeilin ekaa kertaa myös Bootstrappia, jotta sai nappulasta vähän siistimmän. Olen melkoisen aloittelija tuossa html-hommassakin.

    Äänestä

Pitää yrittää Flaskilla tuota.

Äänestä
  • Olipa helppo, muutaman minuutin homma, vaikka en ole koskaan ennen Flaskia käyttänytkään.

    https://pastebin.com/Kv37Cey0

    $ curl http://localhost:3334/karkausvuodet/1901/2000
    {"vuodesta":"1901","vuoteen":"2000","karkausvuodet":[1904,1908,1912,1916,1920,1924,1928,1932,1936,1940,1944,1948,1952,1956,1960,1964,1968,1972,1976,1980,1984,1988,1992,1996,2000]}

    Äänestä

  • Anonyymi kirjoitti:

    Olipa helppo, muutaman minuutin homma, vaikka en ole koskaan ennen Flaskia käyttänytkään.

    https://pastebin.com/Kv37Cey0

    $ curl http://localhost:3334/karkausvuodet/1901/2000
    {"vuodesta":"1901","vuoteen":"2000","karkausvuodet":[1904,1908,1912,1916,1920,1924,1928,1932,1936,1940,1944,1948,1952,1956,1960,1964,1968,1972,1976,1980,1984,1988,1992,1996,2000]}

    CORS on hyvä lisätä myös, niin toimii paremmin frontin kanssa.

    https://flask-cors.readthedocs.io/en/latest/

    Eli importilla flask_cors ja sitten appin jälkeen

    cors = CORS(app, resources={r"/*": {"origins": "*"}})

    Äänestä

  • Anonyymi kirjoitti:

    CORS on hyvä lisätä myös, niin toimii paremmin frontin kanssa.

    https://flask-cors.readthedocs.io/en/latest/

    Eli importilla flask_cors ja sitten appin jälkeen

    cors = CORS(app, resources={r"/*": {"origins": "*"}})

    Frontti Windowsissa Microsoft Edgellä. Backend on virtuaalikoneessa Ubuntu serverillä pyörivällä Python Flaskilla.

    https://ibb.co/Q7WsMQg

    Äänestä

"Ketjusta on poistettu 1 sääntöjenvastaista viestiä."

Mitähän tästä ketjusta on poistettu ja miksi?

Äänestä
  • Se kontitussäie. Sain sen kyllä pelaamaan kolmella kontilla. Eli nginx portinvartijana reverseproxynä jakaa liikennettä frontille ja backille, jotka pyörivät omissa konteissaan.

    Docker-composen ymliä en viitsi tähän laittaa, mutta nginx:n conffi on seuraavanlainen:

    upstream backend {
    server backend:3334;
    }

    upstream frontend {
    server frontend:8081;
    }

    server {
    listen 80;
    server_name localhost karkausvuodet.test www.karkausvuodet.test;

    location / {
    proxy_pass http://frontend;
    }

    location /karkausvuodet {
    proxy_pass http://backend;
    }

    location ~ /\.ht {
    deny all;
    }
    }

    Äänestä

Hyvä näin.

Äänestä

MISTÄ kumpuaa tämä käsittämätön vimma tehdä kaikesta web -palvelua ????

Jos itse tarvitsen tiedon siitä, mikä on karkausvuosi ja mikä ei, niin palanen paikallista ohjelmakoodia hoitaa tuon tarpeen parhaiten.
Itse en näe mitään järkeä kaiken työntämisessä web -aplvelurajapinnan taakse.

Noh toisaalta, City tekee rahaa (vai tekeekö ENÄÄ - on ainakin tehnyt aiemmin) ihmisten matemaattisella osaamattomuudella ja/tai laiskuudella, ks:

https://www.city.fi/mobiili/painoindeksi/

noh, nyt toisaalta saman cityn toisella sivulla, kerrotaan ihan ilmaiseksi, miten voit itse laskea painoindeksin:

https://www.city.fi/ilmiot/ela ja anna toisten kuolla/1027

Äänestä
  • Esitetty toteutuskin on amatöörimäinen. Karkausvuoden tunnistaa helposti (ohjelmointikielestä riippuen) yhden rivin yhtälöllä, jossa on modulo 4 ja modulo 100.

    Äänestä

Ketjusta on poistettu 1 sääntöjenvastainen viesti.

Kommentoi aloitusta


Anonyymi kirjoitti:

Tuossa toisessa ketjussa onkin jo käsitelty karkausvuosien päättelyä Pythonilla. Nykyaikaisempi tapa on kuitenkin käyttää kyselyihin weppipalvelua.

Siksi voimmekin tehdä backend-palvelun, joka palauttaa kysyttäessä karkausvuodet. Esimerkiksi GET-pyyntö

[palvelin]/karkausvuodet/1901/2000

Palauttaisi JSON-muodossa:

{"vuodesta":"1901","vuoteen":"2000","karkausvuodet":[1904,1908,1912,1916,1920,1924,1928,1932,1936,1940,1944,1948,1952,1956,1960,1964,1968,1972,1976,1980,1984,1988,1992,1996,2000]}

Kunhan tuo saadaan ensin toteutettua, niin voidaan tehdä sille vielä simppeli frontend käyttöliittymäksi.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu