Arvojen poiminta nettisivulta

Anonyymi

Forecan sivuilla (foreca.fi) rullaa "SUOMEN SÄÄ JUURI NYT" boksissa lämpimimmät, kylmimmät ja tuulisimmat paikat. Voisiko nuo lukea jotenkin ohjelmallisesti?

"Suomen sää juuri nyt
Lämpimintä klo 12.50

24,0 °C

Ylivieska

24,0 °C

Oulunsalo Pellonpää

26,0 °C

Ylitornio Meltosjärvi

25,8 °C

Sodankylä

25,0 °C

Rovaniemi-Keskusta
Kylmintä klo 12.50

16,3 °C

Nahkiainen

17,0 °C

Muonio Laukukero

9,4 °C

Kilpisjärvi Saana

11,7 °C

Kilpisjärvi

13,9 °C

Kemi I
Tuulisinta klo 12.50

8,0 m/s SW

Rovaniemi Lentoasema Awos

77

3197

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Anonyymi

      Kyllä, kyllä voisi.

      • Anonyymi

        Menetelmällä on hieno englanninkielinen nimikin, web scraping.


    • Anonyymi

      Käykö python esimerkki?

    • Anonyymi

      Hakeudu nyt lekuriin.. ihan neuvona ystävänä.

    • Anonyymi

      Äkkiä vilkastuna esimerkiksi lämpimimmät paikat näyttäisi löytyvän luokan "tr_tmax" jälkeen olevan luokan "ccwrap" sisältä. Siellä on luokka "cclist", jossa "row"-luokkia, missä "val warm" luokassa lämpötila, ja "stn"-luokassa sääasema.

      Voi kokeilla nodejs:llä rustata jotain, kunhan ehdin.

    • Anonyymi

      ET SITTEN SAANUT KERROTTUA KÄYKÖ PYTHON, niin annan vain minimaalisen esimerkin.

      Tiedot voidaan noutaa näinkin vähällä koodilla, mutta tulostuvat vielä ikävästi peräkkäin, ilman välilyöntiä. Tuskin tuo on mikään ongelma sipistellä mieleisekseen.

      import requests
      from bs4 import BeautifulSoup
      url = 'https://www.foreca.fi/'
      reqs = requests.get(url)
      soup = BeautifulSoup(reqs.text, 'html.parser')
      print(soup.find('div', {'class' :'ccwrap'}).text)

    • Anonyymi

      Sinun täytyy tehdä sivustolle ns. API-kutsu. JavaScriptillä esimerkki:

      fetch('http://example.com/movies.json')
      .then(response => response.json())
      .then(data => console.log(data));

      Tämä tulostaa tiedot konsoliin JSON muodossa. Ainut vaan että tuo Forecan API näyttäisi olevan maksullinen, joskin ilmainen kokeiluversio löytyy:

      https://corporate.foreca.com/en/api-point-forecasts

      Etsi joku ilmainen API googlaamalla "free weather API"

      Jos haluat tallentaa tiedot niin laita console.login tilalle funktio joka tallentaa ne tiedot johonkin.

      T. Ammattikoodari

      • Anonyymi

        Jep, jotain tämmöstä (joka ei tosin tee sitä mitä pyydettiin, tsekkasin vaan tuon kuvion kondikseen):

        const fetch = require("node-fetch");
        const DomParser = require('dom-parser');
        const sivu = "https://foreca.fi"

        fetch(sivu)
        .then(function(response) {
        return response.text()
        })
        .then(function(html) {
        const parser = new DomParser();
        const doc = parser.parseFromString(html, "text/html");
        console.log(doc.getElementsByClassName('tr_tmax')[0].innerHTML);
        })
        .catch(function(e) {
        console.log('Virhe aukaistessa sivua: ', e);
        });


      • Anonyymi

        Itse en käyttäisi JavaScript -pohjaisia mentelmiä.

        Liian usein web -sivuston omistajat toteuutavat kaikenlaisia "Anti-JavaScript-WebScraping" -toimintoja. Mutta jos teet kuten neuvoin, eli kaappaat selaimen prosessissa ne Windows API -kutsut, joilla voi tulostaa tekstiä näytölle, niin sitä on web- sivun (tai -palvelimen) omistajan käytännössä mahdoton estää.


    • Anonyymi

      Tehtävä on niin yksinkertainen, että sen olisin voinut tehdä myös Bash Sell komennoin, pythonin sijasta.

      Ja tietysti myös JavaScript ja ihan toimivana, ilman mitään APEJA.

      • Anonyymi

        Jäi sanomatta, että myös kuvakaappaus kyseisestä elementistä voidaan noutaa Bash Shell komentokehotteesta käsin, SIIS siitä ja vain siitä elementistä joka lämpötilat näyttää, EI koko sivusta.


      • Anonyymi
        Anonyymi kirjoitti:

        Jäi sanomatta, että myös kuvakaappaus kyseisestä elementistä voidaan noutaa Bash Shell komentokehotteesta käsin, SIIS siitä ja vain siitä elementistä joka lämpötilat näyttää, EI koko sivusta.

        Ja vielä, näin toimii satunnainen harrastelija, josta ei koskaan toivon mukaan tule kusipäistä Ammattikoodaria.


      • Anonyymi
        Anonyymi kirjoitti:

        Ja vielä, näin toimii satunnainen harrastelija, josta ei koskaan toivon mukaan tule kusipäistä Ammattikoodaria.

        Näin toimii satunnainen harrastelija, jonka koodit eivät toimi. Mielessäsi ei käynyt, että aloittaja haluaa ehkä myös käsitellä niitä tietoja, ei pelkästään katsella kuvankaappausta?

        T. se sama Ammattikoodari


      • Anonyymi
        Anonyymi kirjoitti:

        Näin toimii satunnainen harrastelija, jonka koodit eivät toimi. Mielessäsi ei käynyt, että aloittaja haluaa ehkä myös käsitellä niitä tietoja, ei pelkästään katsella kuvankaappausta?

        T. se sama Ammattikoodari

        Minähän annoin toimivan python koodin, kerroin vain että olisi ollut vaihtoehtoja, ellei python olisi kelvannut.

        Kun taas kusipäinen "Ammattikoodari" ei kyennyt muuta kuin kehumaan itseään, mitään toimivaa ei tainnut netistä löytyä, jouduit kopioimaan asian liittymättömän koodipätkän.


      • Anonyymi
        Anonyymi kirjoitti:

        Minähän annoin toimivan python koodin, kerroin vain että olisi ollut vaihtoehtoja, ellei python olisi kelvannut.

        Kun taas kusipäinen "Ammattikoodari" ei kyennyt muuta kuin kehumaan itseään, mitään toimivaa ei tainnut netistä löytyä, jouduit kopioimaan asian liittymättömän koodipätkän.

        Olen puhelimella, mutta olettaen että aloittaja haluaa jotenkin järkevästi käsitellä niitä hakemiaan tietoja, tiedot on saatava puhtaana esimerkiksi JSON tai XML muodossa jolloin ne on haettava rajapinnasta (API). Tuo esimerkkikoodi on tosiaankin kopioitu Mozillan dokumentaatiosta, koska aloittaja ei kertonut mitä hän haluaa tiedoilla tehdä. Toki myös esim. Pythonin pandas-kirjastolla tiedot voi hakea, mutta edelleen niiden on oltava CSV/JSON/XML muodossa jotta niitä voi käsitellä. Lisää aiheesta:

        https://openweathermap.org/api

        https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch


      • Anonyymi
        Anonyymi kirjoitti:

        Olen puhelimella, mutta olettaen että aloittaja haluaa jotenkin järkevästi käsitellä niitä hakemiaan tietoja, tiedot on saatava puhtaana esimerkiksi JSON tai XML muodossa jolloin ne on haettava rajapinnasta (API). Tuo esimerkkikoodi on tosiaankin kopioitu Mozillan dokumentaatiosta, koska aloittaja ei kertonut mitä hän haluaa tiedoilla tehdä. Toki myös esim. Pythonin pandas-kirjastolla tiedot voi hakea, mutta edelleen niiden on oltava CSV/JSON/XML muodossa jotta niitä voi käsitellä. Lisää aiheesta:

        https://openweathermap.org/api

        https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

        Jos haluaa tiedot Forecan sivuilta, niin sivu pitää ladata ja suodatella halutut tiedot sieltä. Loppujen lopuksi se on vain pelkkää merkkijonojen käpistelyä, kunhan saa vaan sivun lähdekoodin ensin auki tekstimuodossa.


      • Anonyymi
        Anonyymi kirjoitti:

        Olen puhelimella, mutta olettaen että aloittaja haluaa jotenkin järkevästi käsitellä niitä hakemiaan tietoja, tiedot on saatava puhtaana esimerkiksi JSON tai XML muodossa jolloin ne on haettava rajapinnasta (API). Tuo esimerkkikoodi on tosiaankin kopioitu Mozillan dokumentaatiosta, koska aloittaja ei kertonut mitä hän haluaa tiedoilla tehdä. Toki myös esim. Pythonin pandas-kirjastolla tiedot voi hakea, mutta edelleen niiden on oltava CSV/JSON/XML muodossa jotta niitä voi käsitellä. Lisää aiheesta:

        https://openweathermap.org/api

        https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

        Höpö höpö, ja huommenna lisää, kun tiedot on noudettu, kuten jo esimerkissä tein, voidaan ne tallentaa minne haluaa, eikä siihen tarvita kuin kaksi komentoa lisää.


      • Anonyymi
        Anonyymi kirjoitti:

        Höpö höpö, ja huommenna lisää, kun tiedot on noudettu, kuten jo esimerkissä tein, voidaan ne tallentaa minne haluaa, eikä siihen tarvita kuin kaksi komentoa lisää.

        Pitääkö nyt vääntää rautalangasta? Kyllä, ne tiedot voi teknisesti ottaen hakea ja tallentaa myös ilman rajapintaa. Mutta niiden suodattaminen onkin sitten hauskaa kun datan joukossa on valtava määrä erilaista "roskaa" koska tiedot on tarkoitettu ihmisen luettavaksi, ei ohjelmakoodilla käsiteltäväksi. Jos nettisivu muuttuu, pitää koodi kirjoittaa uudestaan.


      • Anonyymi
        Anonyymi kirjoitti:

        Pitääkö nyt vääntää rautalangasta? Kyllä, ne tiedot voi teknisesti ottaen hakea ja tallentaa myös ilman rajapintaa. Mutta niiden suodattaminen onkin sitten hauskaa kun datan joukossa on valtava määrä erilaista "roskaa" koska tiedot on tarkoitettu ihmisen luettavaksi, ei ohjelmakoodilla käsiteltäväksi. Jos nettisivu muuttuu, pitää koodi kirjoittaa uudestaan.

        Jos ja jos. Yleensä API:t vaativat rekisteröitymisen ja maksuttomissa vaihtoehdoissa voi olla rajoituksia. Avointa www-rajapintaa voi käyttää vapaammin. Eihän se tietenkään mitään optimaalista ole, mutta tiedot saa, jos vaan viitsii kaivaa.


      • Anonyymi
        Anonyymi kirjoitti:

        Pitääkö nyt vääntää rautalangasta? Kyllä, ne tiedot voi teknisesti ottaen hakea ja tallentaa myös ilman rajapintaa. Mutta niiden suodattaminen onkin sitten hauskaa kun datan joukossa on valtava määrä erilaista "roskaa" koska tiedot on tarkoitettu ihmisen luettavaksi, ei ohjelmakoodilla käsiteltäväksi. Jos nettisivu muuttuu, pitää koodi kirjoittaa uudestaan.

        Suodattamisen 'hankaluus' riippu ihan siitä että minkälainen osaamiskyky ihmisellä on 'käsitellä' ja 'suodattaa' tuollaista 'roskaa'.

        Itse tein juuri yhden rivin ja vajaa parin tusinan merkin mittaisen komentojonokomennon 'bash'illä. joka suodattaa tuon halutun tiedon nyt lähes luettavaan muotoon, mutta, hienostella sitä todellakin vielä pitää että siitä saa järkevän näköisen, eli ei tässä todellakaan vaikeista asioista puhuta...

        Ja niin, tein tämän vain kokeeksi aiempien vastaavien pohjalta, ja tarkoituksenani ei todellakaan ole vääntää tästä mitään toimivaa softaa tai tekelettä vain syystä että asia ei kiinnosta minua.

        Ja jos vääntäisin siitä kunnollisen ja täysin toimivan softan, niin se olisi avoimen lähteen koodia, jota tehdään harrastuksen ja oman mielenkiinnon vuoksi, ja josta ei saa palkkaa.

        Ja tämä siis ei kiinnosta minua siitä yksinkertaisesta syystä että minkälaista kantaa täällä on otettu avoimeen lähdekoodiin että sen palkkaukseen.

        windows-tubuttajat nyt sitten puolestaan näyttäkööt kyntensä että kuinka se tehdään windowsilla...


      • Anonyymi
        Anonyymi kirjoitti:

        Pitääkö nyt vääntää rautalangasta? Kyllä, ne tiedot voi teknisesti ottaen hakea ja tallentaa myös ilman rajapintaa. Mutta niiden suodattaminen onkin sitten hauskaa kun datan joukossa on valtava määrä erilaista "roskaa" koska tiedot on tarkoitettu ihmisen luettavaksi, ei ohjelmakoodilla käsiteltäväksi. Jos nettisivu muuttuu, pitää koodi kirjoittaa uudestaan.

        Vielä siihen rajapitoja pitäisi sotkea, yksinkertainen teksti tiedosto jossa on vain se haettu tieto, EI MITÄÄN ROSKAA, luoja varjele mitä sekottamista, ei mikään ihme että on verkosta yritettävä jotain sinne päin olevaa kopioida, mukamas "Ammattikoodari", et ole edes nähnyt sellaista.


      • Anonyymi
        Anonyymi kirjoitti:

        Vielä siihen rajapitoja pitäisi sotkea, yksinkertainen teksti tiedosto jossa on vain se haettu tieto, EI MITÄÄN ROSKAA, luoja varjele mitä sekottamista, ei mikään ihme että on verkosta yritettävä jotain sinne päin olevaa kopioida, mukamas "Ammattikoodari", et ole edes nähnyt sellaista.

        Lisätäänpä vielä, koska avauksessa mainittiin vain "voidaanko ne lukea ohjelmallisesti" niin tämänkin pitäsi tehdä se, natiivisti selaimen omalla JavaScript moottorilla.

        var it = document.getElementsByClassName("ccwrap");
        console.log( it[0].innerText )
        console.log( it[1].innerText )
        console.log( it[2].innerText )

        Ei kun F12, Copy ja Paste, ja siinä ne on. Olisi nyt "Ammattikoodari" hätäpäissään vaikku tuon laittanut, eikä huuhaata mennyt verkosta kopioimaan, van kun ei rahkeissa ole varaa niin eipä tietysti.


      • Anonyymi
        Anonyymi kirjoitti:

        Lisätäänpä vielä, koska avauksessa mainittiin vain "voidaanko ne lukea ohjelmallisesti" niin tämänkin pitäsi tehdä se, natiivisti selaimen omalla JavaScript moottorilla.

        var it = document.getElementsByClassName("ccwrap");
        console.log( it[0].innerText )
        console.log( it[1].innerText )
        console.log( it[2].innerText )

        Ei kun F12, Copy ja Paste, ja siinä ne on. Olisi nyt "Ammattikoodari" hätäpäissään vaikku tuon laittanut, eikä huuhaata mennyt verkosta kopioimaan, van kun ei rahkeissa ole varaa niin eipä tietysti.

        Lisätäänpä vielä, kun tuollaisesta "Ammattikoodarista" on kysymys, koodi toimii vain kun ollaan kyseisellä sivulla.

        https://www.foreca.fi/


      • Anonyymi
        Anonyymi kirjoitti:

        Lisätäänpä vielä, kun tuollaisesta "Ammattikoodarista" on kysymys, koodi toimii vain kun ollaan kyseisellä sivulla.

        https://www.foreca.fi/

        Et voi ihan tosissasi olettaa että aloittaja haluaa tulostaa vain tuon tietyn sivun arvot konsoliin? Ei tuollaisesta ole mitään hyötyä, aloittajan pitää joka tapauksessa mennä selaimellaan sinne sivulle jotta voi edes upottaa tuon sinun koodin kyseiselle sivulle, ja olet vieläpä kovakoodannut elementtien indeksit :D

        Noh minäpä laitan huomenna (tai jos ehdin niin tänään) ammattimaisen ratkaisun niin ymmärrät nimimerkkini.


      • Anonyymi
        Anonyymi kirjoitti:

        Lisätäänpä vielä, koska avauksessa mainittiin vain "voidaanko ne lukea ohjelmallisesti" niin tämänkin pitäsi tehdä se, natiivisti selaimen omalla JavaScript moottorilla.

        var it = document.getElementsByClassName("ccwrap");
        console.log( it[0].innerText )
        console.log( it[1].innerText )
        console.log( it[2].innerText )

        Ei kun F12, Copy ja Paste, ja siinä ne on. Olisi nyt "Ammattikoodari" hätäpäissään vaikku tuon laittanut, eikä huuhaata mennyt verkosta kopioimaan, van kun ei rahkeissa ole varaa niin eipä tietysti.

        Tässäpä tämä ratkaisu, tallenna HTML-tiedostona ja kokeile. Saat esimerkin laadukkaasta ratkaisusta jollainen myös Windows 10 muuten on.

        <!DOCTYPE html>
        <html>
        <body>
        <h1>Ammattikoodarin lämpötilahaku</h1><br>
        <p>Käytä pistettä desimaalierottimena</p><br>
        <input type="text" id="latitude" placeholder="Syötä leveysasteet"><br><br>
        <input type="text" id="longitude" placeholder="Syötä pituusasteet"><br><br>
        <button onclick="fetchDataFromAPI()">Hae säätiedot</button><br>
        <script>
        function fetchDataFromAPI() {
        var latitude = document.getElementById("latitude").value;
        var longitude = document.getElementById("longitude").value;
        if (latitude && longitude) {
        fetch('http://www.7timer.info/bin/api.pl?lon=' longitude '&lat=' latitude '&product=astro&output=json')
        .then(response => response.json())
        .then(data => displayData(data));
        } else {
        document.write("Syötä molemmat koodinaatit.")
        }
        }
        function displayData(data) {
        console.log(data);
        for (var i=0;i<data.dataseries.length;i ) {
        document.write("Lämpötila tänään klo " (i 1) ": " data.dataseries[i].temp2m " astetta <br>");
        }
        }
        </script>
        </body>
        </html>


      • Anonyymi
        Anonyymi kirjoitti:

        Et voi ihan tosissasi olettaa että aloittaja haluaa tulostaa vain tuon tietyn sivun arvot konsoliin? Ei tuollaisesta ole mitään hyötyä, aloittajan pitää joka tapauksessa mennä selaimellaan sinne sivulle jotta voi edes upottaa tuon sinun koodin kyseiselle sivulle, ja olet vieläpä kovakoodannut elementtien indeksit :D

        Noh minäpä laitan huomenna (tai jos ehdin niin tänään) ammattimaisen ratkaisun niin ymmärrät nimimerkkini.

        Älä vaivaudu, minä ymmärrän erittäin hyvin tuon nimimerkin, ja se tarkoittaa sinun käyttämänä "mistään mitään ymmärtämätön paskanpuhuja".


      • Anonyymi
        Anonyymi kirjoitti:

        Älä vaivaudu, minä ymmärrän erittäin hyvin tuon nimimerkin, ja se tarkoittaa sinun käyttämänä "mistään mitään ymmärtämätön paskanpuhuja".

        Menipäs sinulla tunteisiin, minä kun yritän vain auttaa aloittajaa. Ei sinänsä ole uusi ilmiö, että ymmärtämättömät ihmiset haukkuvat niitä jotka ymmärtävät. Mutta kokeile nyt tuota koodia kun kerran vaivauduin käyttämään 10 minuuttia.


      • Anonyymi
        Anonyymi kirjoitti:

        Menipäs sinulla tunteisiin, minä kun yritän vain auttaa aloittajaa. Ei sinänsä ole uusi ilmiö, että ymmärtämättömät ihmiset haukkuvat niitä jotka ymmärtävät. Mutta kokeile nyt tuota koodia kun kerran vaivauduin käyttämään 10 minuuttia.

        Sen verran inhoan toisilta kopiointi ja omissa nimissä jakamista, etten varmasti koske pitkällä kepilläkään siihen, muualta kuin koodin alkuperäisestä lähteestä.


      • Anonyymi
        Anonyymi kirjoitti:

        Jos ja jos. Yleensä API:t vaativat rekisteröitymisen ja maksuttomissa vaihtoehdoissa voi olla rajoituksia. Avointa www-rajapintaa voi käyttää vapaammin. Eihän se tietenkään mitään optimaalista ole, mutta tiedot saa, jos vaan viitsii kaivaa.

        "Yleensä API:t vaativat rekisteröitymisen ja maksuttomissa vaihtoehdoissa voi olla rajoituksia. Avointa www-rajapintaa voi käyttää vapaammin"

        Aivan... web -sivujen omistajilla on jokin ihmeellinen into kontrolloida, miten sivun tietoja saa heidän mielestään käyttää.


    • Anonyymi
      • Anonyymi

        Lisätäänpä vielä:

        "Ammattikoodari" saa kopioitua joltakin ja jaettua sen omissa nimissään omien sanojensa mukaan 10 minuutissa. Mutta minulta satunnaisharrastajalta meni tuohon eilen reilu tunti, ja vielä tänä aamuna tuon tulostuksen muotoiluun noin 45 minuuttia.

        Ei 2 tunti 30 minuuttia ole mielestäni vielä pitkä aika, koska melko sujuvasti kaikki tarvittava löytyi omista muistiinpanoista tai verkosta. Siinä vaan käy aina niin että kun olet pitemmän aikaa vaikka Bash Shell skriptien parissa muut pääsee unohtumaan.


      • Anonyymi
        Anonyymi kirjoitti:

        Lisätäänpä vielä:

        "Ammattikoodari" saa kopioitua joltakin ja jaettua sen omissa nimissään omien sanojensa mukaan 10 minuutissa. Mutta minulta satunnaisharrastajalta meni tuohon eilen reilu tunti, ja vielä tänä aamuna tuon tulostuksen muotoiluun noin 45 minuuttia.

        Ei 2 tunti 30 minuuttia ole mielestäni vielä pitkä aika, koska melko sujuvasti kaikki tarvittava löytyi omista muistiinpanoista tai verkosta. Siinä vaan käy aina niin että kun olet pitemmän aikaa vaikka Bash Shell skriptien parissa muut pääsee unohtumaan.

        No eipä tuollaiseen mene ammattilaiselta pidempään kuin 10 - 20 minuuttia, koodi kuitenkin puhdasta JavaScriptiä ilman kirjastoja. Ei ole mistään kopioitu, voit aivan vapaasti googlailla. Surullista ettet usko, mutta eipä koodi ole sinulle tarkoitettu vaan aloittajalle.

        En ymmärrä miksi pahastuit nimimerkistäni noin.


      • Anonyymi
        Anonyymi kirjoitti:

        No eipä tuollaiseen mene ammattilaiselta pidempään kuin 10 - 20 minuuttia, koodi kuitenkin puhdasta JavaScriptiä ilman kirjastoja. Ei ole mistään kopioitu, voit aivan vapaasti googlailla. Surullista ettet usko, mutta eipä koodi ole sinulle tarkoitettu vaan aloittajalle.

        En ymmärrä miksi pahastuit nimimerkistäni noin.

        Kunpa se olisi ainut mitä et ymmärrä.


    • Anonyymi

      Ohessa javascriptillä tehty räpellykseni, joka on tehty leikkaa-liimaa hengessä pelkillä indexOf ja slice metodeilla.

      https://pastebin.com/egkGwMbT

      Esimerkkituloste konsoliin:

      $ node foreca.js
      Lämpimintä klo 13.00
      ==========================================
      Inari, Väylä 27,2 °C
      Oulunsalo Pellonpää 26,5 °C
      Utsjoki Nuorgam Rajavartioas. 26,0 °C
      Ylivieska 25,8 °C
      Pori Rautatieasema 25,5 °C

      Kylmintä klo 13.00
      ==========================================
      Kilpisjärvi Saana 13,1 °C
      Kemi I 16,0 °C
      Märket 16,4 °C
      Kilpisjärvi 16,5 °C
      Kristiinankaupunki-Majakka 17,1 °C

      Tuulisinta klo 13.00
      ==========================================
      Pelkosenniemi Pyhätunturi 15,4 m/s S
      Muonio Laukukero 13,9 m/s SW
      Inari Saariselkä Kaunispää 10,7 m/s S
      Muonio Sammaltunturi 10,2 m/s S
      Kilpisjärvi Saana 9,8 m/s S

      • Anonyymi

        Ei liity varsinaisesti aiheeseen, mutta watch-komennolla voi päivittää jonkun komennon tulostuksen halutun väliajoin. Esimerkiksi

        watch -n 600 node foreca.js

        Suorittaa komennon "node foreca.js" 600 sekunnin välein. Tulostus tulee "tyhjään" ruutuun, eli ei vieri kuten normaalisti komennot peräkkäin suorittaessa.


    • Anonyymi

      Viitsisikö joku tehdä bash-skriptin? Wgetillä html, ja sitten vähän filtteröintiä.

      • Anonyymi

        Tietysti viitsii joku, jopa minäkin. Ei siihen sitä filtteröintiä nyt sitten tullutkaan kuin 6 riviä, mutta sivun lähdekoodi oli tiivistetty, ja sen purkaminen vei 26 riviä. Kaiken kaikkiaan 58 riviä huippu osaamista.

        Kelpaako kuvana?


      • Anonyymi
        Anonyymi kirjoitti:

        Tietysti viitsii joku, jopa minäkin. Ei siihen sitä filtteröintiä nyt sitten tullutkaan kuin 6 riviä, mutta sivun lähdekoodi oli tiivistetty, ja sen purkaminen vei 26 riviä. Kaiken kaikkiaan 58 riviä huippu osaamista.

        Kelpaako kuvana?

        No, nyt tulkitaan hiljaisuus myötymisen merkiksi, niinpä tässä tämä kuvana. Mieluummin näin näiden "Ammattikoodarien" vuoksi:

        https://s6.gifyu.com/images/foreca.sh.png


      • Anonyymi
        Anonyymi kirjoitti:

        No, nyt tulkitaan hiljaisuus myötymisen merkiksi, niinpä tässä tämä kuvana. Mieluummin näin näiden "Ammattikoodarien" vuoksi:

        https://s6.gifyu.com/images/foreca.sh.png

        Tuota Bash Shell skriptiä yritin tiivistää että olisin saanut sopimaan yhteen kuvaan, pieneksi meni, mutta kyllä siitä selvän saa. Tässä sitten se mitä se tulostaa. Yhtä siisti kuin pythonillakin:

        https://s6.gifyu.com/images/foreca.png


      • Anonyymi
        Anonyymi kirjoitti:

        Tuota Bash Shell skriptiä yritin tiivistää että olisin saanut sopimaan yhteen kuvaan, pieneksi meni, mutta kyllä siitä selvän saa. Tässä sitten se mitä se tulostaa. Yhtä siisti kuin pythonillakin:

        https://s6.gifyu.com/images/foreca.png

        Ehkä ei kannata tuota sivun lähdekoodin avaamista toteuttaa samalla tavalla kuin se on tuossa minulla, vaan tekee siitä funktion ja HTML -tageista taulukon. Saattaa lyhentyä muutaman rivin.


      • Anonyymi
        Anonyymi kirjoitti:

        No, nyt tulkitaan hiljaisuus myötymisen merkiksi, niinpä tässä tämä kuvana. Mieluummin näin näiden "Ammattikoodarien" vuoksi:

        https://s6.gifyu.com/images/foreca.sh.png

        Mitä Linuxia käytät?


      • Anonyymi
        Anonyymi kirjoitti:

        Mitä Linuxia käytät?

        Kyllä tuo Bash Shell skripti toimii kaikissa jakeluissa, joissa on komentotulkkina Bash.


      • Anonyymi
        Anonyymi kirjoitti:

        Kyllä tuo Bash Shell skripti toimii kaikissa jakeluissa, joissa on komentotulkkina Bash.

        Ok, tarkennetaan kysymystä: Mikä ikkunointijärjestelmä käytössäsi on?


    • Anonyymi

      Erittäin hienoja ratkaisuja.

    • Anonyymi

      Mites tuollaisen yksittäisen sääaseman tietojen nappaaminen Ilmatieteenlaitoksen sivulta? Esimerkiksi Juupajoki, Hyytiälä. https://www.ilmatieteenlaitos.fi/api/weather/observations?fmisid=101317&observations=true&radar=true&daily=true (278,13 KB)

      Sieltä tulee jotain tämmöstä, 0–1008 mittausta, joista esimerkki on nro 34.

      {"34":{"name":"Hyytiälä","localtz":"Europe/Helsinki","localtime":"20210609T123000","t2m":20.5,"DewPoint":10.1,"Precipitation1h":null,"TotalCloudCover":3,"WindSpeedMS":null,"WindDirection":null,"WindGust":null,"Pressure":1017,"Humidity":51,"Visibility":20000,"SnowDepth":-1}}

      Tuo pitänee lukea kokonaan, ja sitten järjestää väärin päin, koska mittaus 1008 vaikuttaisi olevan tuorein. Tai ehkä tuohon kyselyyn (urliin) voi laittaa jonkun rajoituksen. Nyt siinä on "&daily=true", joka saattaisi ladata kuluvan päivän tai edellisen 24 tunnin arvot. Tosin timestamppien perusteella ensimmäinen arvo on viikon vanha, ja mittaukset tapahtuvat 10 minuutin välein.

      • Anonyymi

        Kyseessä on rajapinta eli API joka palauttaa tiedot JSON-muodossa. Ylempänä on esimerkki miten voit JavaScriptin Fetch:in avulla hakea tiedot ja käydä ne läpi. JSON tarkoittaa avain-arvo pareja eli jos sinulla on tiedot vaikkapa muuttujassa "info" niin voit tulostaa yksittäisiä tietoja tyyliin:

        console.log(info.WindSpeedMS);

        Palstatrollit suuttuivat viimeksi suunnattomasti kun laitoin esimerkkikoodin, mutta jos tarvitset apua niin kerro mitä haluat tehdä, vähät trolleista.


      • Anonyymi

        Mitkä tiedot tuosta listasta tulisi poimia mittausta kohde;
        Paikkakunta, aika, näkyvyys, paine, kosteus, jne. Laitetaanko puuttuvan tiedon kohdalle "Nul" tai jotain muuta.

        Voisin hyvinkin luoda vastaavan Bash Shell skriptin, aikani kuluksi. https://s6.gifyu.com/images/supla.png


      • Anonyymi

        Katsoin tuosta omasta paikkaliselta sää asemalta noita mittaustuloksia, jotka näyttävät päivittyvän 10min välein, mutta historiaa taaksepäin on vain 2021.06.09 saakka, eli noin 7 vuorokautta.


        2021.06.16 20:10:00 - 2021.06.09 20:40:00 = 552h = 6,98vrk


      • Anonyymi

        Voihan vitalis, olen tutustunut useamman tunnin näiden säähavaintoasemia koskeviin kyselyiden syntaksiin, kohta osaan asiat paremin kuin Pekka Pouta, mutta valmista ei vaan ala syntymään. Pakko ruveta tuota 7vrk DATA tumppiasi suodattelemaan, näin se tässä vaiheessa tuntuu paremmin onnistuvan.


      • Anonyymi

        Voisin kokeilla tehdä tuosta sellaisen version, joka hakisi lähimmän mittausaseman paikannimen perusteella, ja kertoisi nykyisen lämpötilan ja vaikka vuorokauden keskilämpötilan.


      • Anonyymi
        Anonyymi kirjoitti:

        Voisin kokeilla tehdä tuosta sellaisen version, joka hakisi lähimmän mittausaseman paikannimen perusteella, ja kertoisi nykyisen lämpötilan ja vaikka vuorokauden keskilämpötilan.

        Siinä on ajatusta, taitaa mennä työlääksi.


      • Anonyymi
        Anonyymi kirjoitti:

        Voisin kokeilla tehdä tuosta sellaisen version, joka hakisi lähimmän mittausaseman paikannimen perusteella, ja kertoisi nykyisen lämpötilan ja vaikka vuorokauden keskilämpötilan.

        Sen verran saanut tässä muiden hommien ohella tehtyä, että nyt jo paikannimen perusteella löytyy lähin sääasema, esim Juupajoen tapauksessa reilun 7 kilometrin päässä. Vielä pitää toteuttaa varsinaisten lämpötila-arvojen nouto ja keskiarvon laskenta ynnä tulostukset. Nyt lähden nauttimaan kesäsäästä.

        $ node sääsovellus.js juupajoki

        {
        fmisid: 101317,
        wmo: 2770,
        lpnn: 2303,
        y: 61.85,
        x: 24.29,
        z: 154,
        'visibility-maximum': 20000,
        started: 1956,
        ended: null,
        name: 'Juupajoki Hyytiälä',
        description: 'Asema sijaitsee noin 6 km luoteeseen Juupajoen kaupunkikeskustasta. Aseman paikkana on pieni niittyaukea lounaaseen viettävällä rinteellä. Lounaispuolella 100-200 m päässä on Kuivajärvi, koillisessa kalliomäki kohoaa 180 m:n korkeudelle merenpinnasta. Niittyaukean kaakkoissektorissa oleva tuuhea metsä varjostaa kesäisin auringon noususta n. klo 13:een asti. Ympäristö on metsäistä osittain soistunutta ylänköä sekä laajaa mäntykangasta.\n'
        'Minimilämpötilat ovat tyyninä ja selkeinä öinä keskimäärin n. 1-2 astetta liian korkeita johtuen kylmän ilman valumisesta aseman länsipuolella olevaan järvi-jokilaaksoon.',
        groups: 'sää, sade, ilmanlaatu (IL)',
        distance: 7.153752805011747
        }


      • Anonyymi
        Anonyymi kirjoitti:

        Sen verran saanut tässä muiden hommien ohella tehtyä, että nyt jo paikannimen perusteella löytyy lähin sääasema, esim Juupajoen tapauksessa reilun 7 kilometrin päässä. Vielä pitää toteuttaa varsinaisten lämpötila-arvojen nouto ja keskiarvon laskenta ynnä tulostukset. Nyt lähden nauttimaan kesäsäästä.

        $ node sääsovellus.js juupajoki

        {
        fmisid: 101317,
        wmo: 2770,
        lpnn: 2303,
        y: 61.85,
        x: 24.29,
        z: 154,
        'visibility-maximum': 20000,
        started: 1956,
        ended: null,
        name: 'Juupajoki Hyytiälä',
        description: 'Asema sijaitsee noin 6 km luoteeseen Juupajoen kaupunkikeskustasta. Aseman paikkana on pieni niittyaukea lounaaseen viettävällä rinteellä. Lounaispuolella 100-200 m päässä on Kuivajärvi, koillisessa kalliomäki kohoaa 180 m:n korkeudelle merenpinnasta. Niittyaukean kaakkoissektorissa oleva tuuhea metsä varjostaa kesäisin auringon noususta n. klo 13:een asti. Ympäristö on metsäistä osittain soistunutta ylänköä sekä laajaa mäntykangasta.\n'
        'Minimilämpötilat ovat tyyninä ja selkeinä öinä keskimäärin n. 1-2 astetta liian korkeita johtuen kylmän ilman valumisesta aseman länsipuolella olevaan järvi-jokilaaksoon.',
        groups: 'sää, sade, ilmanlaatu (IL)',
        distance: 7.153752805011747
        }

        Joko alkaa olla valmista.


      • Anonyymi
        Anonyymi kirjoitti:

        Joko alkaa olla valmista.

        Kyllä se vähitellen tuossa kehittyy. Tein siihen sellaisen ominaisuuden myös, että sääasemadata haetaan vain tarvittaessa, eli tallennetaan levylle, jos onnistuu. Laitan siihen päivitysväliksi ehkä sitten viikon. Vähentää hieman nettiliikennettä, kun ei tarvitse joka kerta ladata melkein puolen megan jsonia. Pitää vielä lopullista ulostusta miettiä. Kunhan valmistuu, niin avaan varmaan uuden ketjun, johon sitten lisätietoja.


        $ node sääsovellus.js juupajoki

        WeatherStationsData age in minutes: 55
        Arguments: [ 'juupajoki' ]
        Juupajoki Hyytiälä 7.2 km
        average5days: 16.5
        average3days: 18.1
        average1day: 21.1
        lastMeasurement: 18.2
        lastMeasurement time: [ '19.6.2021', '13.30' ]

        $ node sääsovellus.js kevo,utsjoki

        WeatherStationsData age in minutes: 55
        Arguments: [ 'kevo', 'utsjoki' ]
        Utsjoki Kevo 0.4 km
        average5days: 10.4
        average3days: 11.1
        average1day: 12.1
        lastMeasurement: 11.4
        lastMeasurement time: [ '19.6.2021', '13.30' ]


      • Anonyymi
        Anonyymi kirjoitti:

        Kyllä se vähitellen tuossa kehittyy. Tein siihen sellaisen ominaisuuden myös, että sääasemadata haetaan vain tarvittaessa, eli tallennetaan levylle, jos onnistuu. Laitan siihen päivitysväliksi ehkä sitten viikon. Vähentää hieman nettiliikennettä, kun ei tarvitse joka kerta ladata melkein puolen megan jsonia. Pitää vielä lopullista ulostusta miettiä. Kunhan valmistuu, niin avaan varmaan uuden ketjun, johon sitten lisätietoja.


        $ node sääsovellus.js juupajoki

        WeatherStationsData age in minutes: 55
        Arguments: [ 'juupajoki' ]
        Juupajoki Hyytiälä 7.2 km
        average5days: 16.5
        average3days: 18.1
        average1day: 21.1
        lastMeasurement: 18.2
        lastMeasurement time: [ '19.6.2021', '13.30' ]

        $ node sääsovellus.js kevo,utsjoki

        WeatherStationsData age in minutes: 55
        Arguments: [ 'kevo', 'utsjoki' ]
        Utsjoki Kevo 0.4 km
        average5days: 10.4
        average3days: 11.1
        average1day: 12.1
        lastMeasurement: 11.4
        lastMeasurement time: [ '19.6.2021', '13.30' ]

        Antaa nyt tuollaista pihalle mitä viestin lopussa. Jos ei kirjoita mitään parametrejä, niin hakee koodissa olevaa oletussääasemaa, joka on tässä tapauksessa id 100971, eli Kaisaniemi, Helsinki.

        Jos laittaa parametriksi kokonaisluvun, niin yritetään hakea sellaista sääasemaa.

        Asem,akoodit löytyy tuolta https://www.ilmatieteenlaitos.fi/havaintoasemat ja mukana on asemat, joissa on ryhmässä mainittu 'sää'. Niitä on vähän yli 200.

        Jos taas laittaa tekstiä, niin yksi sana etsii pelkkää paikkaa, ja tulos on se minkä Paikkatietoikkuna palauttaa ensimmäisenä. Jos taas on kaksi sanaa pilkulla erotettuna, niin haetaan ensimmäistä, mutta suodatetaan jälkimmäisellä sanalla kunta. Esimerkiksi 'Härmälä' hakee Härmälän Kruunupyystä, kun taas 'Härmälä,Tampere' Tampereelta.

        Teen jossain vaiheessa toisen ketjun, mihin postaan lisää toimintaperiaatteesta.

        $ node sääsovellus.js
        Sääasema 'Helsinki Kaisaniemi'
        Lämpötilojen keskiarvo edellisten 1 / 3 / 5 vrk aikana: 22,1°C / 18,8°C / 17,8°C
        Viimeinen mittausarvo 19.6.2021 klo 16.10 on 26,0°C

        $ node sääsovellus.js 101124
        Sääasema 'Tampere Härmälä'
        Lämpötilojen keskiarvo edellisten 1 / 3 / 5 vrk aikana: 21,6°C / 19,2°C / 17,4°C
        Viimeinen mittausarvo 19.6.2021 klo 16.10 on 27,7°C

        $ node sääsovellus.js härmälä
        Haettu 'Härmälä', lähin sääasema 'Kruunupyy Kokkola-Pietarsaari lentoasema', johon matkaa 29,0 km
        Lämpötilojen keskiarvo edellisten 1 / 3 / 5 vrk aikana: 15,9°C / 15,4°C / 14,5°C
        Viimeinen mittausarvo 19.6.2021 klo 16.10 on 17,9°C

        $ node sääsovellus.js härmälä,tampere
        Haettu 'Härmälä, Tampere', lähin sääasema 'Tampere Härmälä', johon matkaa 0,7 km
        Lämpötilojen keskiarvo edellisten 1 / 3 / 5 vrk aikana: 21,6°C / 19,2°C / 17,4°C
        Viimeinen mittausarvo 19.6.2021 klo 16.10 on 27,7°C

        $ node sääsovellus.js tampere
        Haettu 'Tampere', lähin sääasema 'Tampere Tampella', johon matkaa 0,3 km
        Lämpötilojen keskiarvo edellisten 1 / 3 / 5 vrk aikana: 21,4°C / 19,5°C / 17,7°C
        Viimeinen mittausarvo 19.6.2021 klo 16.10 on 23,8°C


      • Anonyymi
        Anonyymi kirjoitti:

        Antaa nyt tuollaista pihalle mitä viestin lopussa. Jos ei kirjoita mitään parametrejä, niin hakee koodissa olevaa oletussääasemaa, joka on tässä tapauksessa id 100971, eli Kaisaniemi, Helsinki.

        Jos laittaa parametriksi kokonaisluvun, niin yritetään hakea sellaista sääasemaa.

        Asem,akoodit löytyy tuolta https://www.ilmatieteenlaitos.fi/havaintoasemat ja mukana on asemat, joissa on ryhmässä mainittu 'sää'. Niitä on vähän yli 200.

        Jos taas laittaa tekstiä, niin yksi sana etsii pelkkää paikkaa, ja tulos on se minkä Paikkatietoikkuna palauttaa ensimmäisenä. Jos taas on kaksi sanaa pilkulla erotettuna, niin haetaan ensimmäistä, mutta suodatetaan jälkimmäisellä sanalla kunta. Esimerkiksi 'Härmälä' hakee Härmälän Kruunupyystä, kun taas 'Härmälä,Tampere' Tampereelta.

        Teen jossain vaiheessa toisen ketjun, mihin postaan lisää toimintaperiaatteesta.

        $ node sääsovellus.js
        Sääasema 'Helsinki Kaisaniemi'
        Lämpötilojen keskiarvo edellisten 1 / 3 / 5 vrk aikana: 22,1°C / 18,8°C / 17,8°C
        Viimeinen mittausarvo 19.6.2021 klo 16.10 on 26,0°C

        $ node sääsovellus.js 101124
        Sääasema 'Tampere Härmälä'
        Lämpötilojen keskiarvo edellisten 1 / 3 / 5 vrk aikana: 21,6°C / 19,2°C / 17,4°C
        Viimeinen mittausarvo 19.6.2021 klo 16.10 on 27,7°C

        $ node sääsovellus.js härmälä
        Haettu 'Härmälä', lähin sääasema 'Kruunupyy Kokkola-Pietarsaari lentoasema', johon matkaa 29,0 km
        Lämpötilojen keskiarvo edellisten 1 / 3 / 5 vrk aikana: 15,9°C / 15,4°C / 14,5°C
        Viimeinen mittausarvo 19.6.2021 klo 16.10 on 17,9°C

        $ node sääsovellus.js härmälä,tampere
        Haettu 'Härmälä, Tampere', lähin sääasema 'Tampere Härmälä', johon matkaa 0,7 km
        Lämpötilojen keskiarvo edellisten 1 / 3 / 5 vrk aikana: 21,6°C / 19,2°C / 17,4°C
        Viimeinen mittausarvo 19.6.2021 klo 16.10 on 27,7°C

        $ node sääsovellus.js tampere
        Haettu 'Tampere', lähin sääasema 'Tampere Tampella', johon matkaa 0,3 km
        Lämpötilojen keskiarvo edellisten 1 / 3 / 5 vrk aikana: 21,4°C / 19,5°C / 17,7°C
        Viimeinen mittausarvo 19.6.2021 klo 16.10 on 23,8°C

        Tuli mielenkiintoinen ongelma localen kanssa, kun kokeilin virtuaalikoneessa eri Node-versiolla. Tein ohjelman Noden versiolla 12 ja suomenkielisellä localella. Virtuaalikoneessa oli taas Node 10 ja olikohan englanti.

        Eihän ne päivämäärät ja kellonajat samalla tavalla toimineet. Myös ilmeisesti skandeissa oli ongelmia JSON-tiedoston kanssa, joka korjautui asentamalla Node 12. Silti piti muokata kellonaikarutiinia.

        Kokeilin nyt Docker-kontissa Noden versiolla 14, ja näyttäisi toimivan kuten pitää, esim:

        $ docker run -it --rm -v $PWD:/home/node node:14-alpine ash -c "cd /home/node && node sääsovellus.js juupajoki"
        Haettu 'Juupajoki', lähin sääasema 'Juupajoki Hyytiälä', johon matkaa 7,2 km
        Lämpötilojen keskiarvo edellisten 1 / 3 / 5 vrk aikana: 24,0°C / 22,4°C / 20,0°C
        Viimeinen mittausarvo 21.6.2021 klo 12.20 on 28,5°C


      • Anonyymi
        Anonyymi kirjoitti:

        Tuli mielenkiintoinen ongelma localen kanssa, kun kokeilin virtuaalikoneessa eri Node-versiolla. Tein ohjelman Noden versiolla 12 ja suomenkielisellä localella. Virtuaalikoneessa oli taas Node 10 ja olikohan englanti.

        Eihän ne päivämäärät ja kellonajat samalla tavalla toimineet. Myös ilmeisesti skandeissa oli ongelmia JSON-tiedoston kanssa, joka korjautui asentamalla Node 12. Silti piti muokata kellonaikarutiinia.

        Kokeilin nyt Docker-kontissa Noden versiolla 14, ja näyttäisi toimivan kuten pitää, esim:

        $ docker run -it --rm -v $PWD:/home/node node:14-alpine ash -c "cd /home/node && node sääsovellus.js juupajoki"
        Haettu 'Juupajoki', lähin sääasema 'Juupajoki Hyytiälä', johon matkaa 7,2 km
        Lämpötilojen keskiarvo edellisten 1 / 3 / 5 vrk aikana: 24,0°C / 22,4°C / 20,0°C
        Viimeinen mittausarvo 21.6.2021 klo 12.20 on 28,5°C

        Nyt kehittelet sitä siihen suuntaan, että hyvin harvalla on alustaa testata tuloksia.


      • Anonyymi
        Anonyymi kirjoitti:

        Nyt kehittelet sitä siihen suuntaan, että hyvin harvalla on alustaa testata tuloksia.

        Dockerin saa kyllä Windowsillekin, vaikka vaatiikin Hyper-V:n. Mielummin käytän tosin Windows-ympäristössä WSL2:sta ja siinä esimerkiksi Debian/Docker -yhdistelmää.


      • Anonyymi
        Anonyymi kirjoitti:

        Tuli mielenkiintoinen ongelma localen kanssa, kun kokeilin virtuaalikoneessa eri Node-versiolla. Tein ohjelman Noden versiolla 12 ja suomenkielisellä localella. Virtuaalikoneessa oli taas Node 10 ja olikohan englanti.

        Eihän ne päivämäärät ja kellonajat samalla tavalla toimineet. Myös ilmeisesti skandeissa oli ongelmia JSON-tiedoston kanssa, joka korjautui asentamalla Node 12. Silti piti muokata kellonaikarutiinia.

        Kokeilin nyt Docker-kontissa Noden versiolla 14, ja näyttäisi toimivan kuten pitää, esim:

        $ docker run -it --rm -v $PWD:/home/node node:14-alpine ash -c "cd /home/node && node sääsovellus.js juupajoki"
        Haettu 'Juupajoki', lähin sääasema 'Juupajoki Hyytiälä', johon matkaa 7,2 km
        Lämpötilojen keskiarvo edellisten 1 / 3 / 5 vrk aikana: 24,0°C / 22,4°C / 20,0°C
        Viimeinen mittausarvo 21.6.2021 klo 12.20 on 28,5°C

        Tuo docker-komento tarkoittaa siis seuraavaa:

        docker run -> käynnistetään kontti, tarvittaessa ladataan image (=docker pull)
        -it -> interaktiivinen, eli yhdistetään kontin stdiniin.
        --rm -> remove, poistetaan kontti automaattisesti suorituksen jälkeen
        -v $PWD:/home/node -> yhdistetään isännän nykyinen hakemisto kontin /home/node:en
        node:14-alpine -> imagen nimi ja versio
        ash -c "cd /home/node && node sääsovellus.js juupajoki" ->komennot mitkä suoritetaan

        Eli sääsovellus.js on isännän $PWD-kansiossa, jossa on myös esiladattu sääasemien json-tiedosto, joten sitä ei tarvitse ladata joka kerta uudelleen.


      • Anonyymi
        Anonyymi kirjoitti:

        Tuo docker-komento tarkoittaa siis seuraavaa:

        docker run -> käynnistetään kontti, tarvittaessa ladataan image (=docker pull)
        -it -> interaktiivinen, eli yhdistetään kontin stdiniin.
        --rm -> remove, poistetaan kontti automaattisesti suorituksen jälkeen
        -v $PWD:/home/node -> yhdistetään isännän nykyinen hakemisto kontin /home/node:en
        node:14-alpine -> imagen nimi ja versio
        ash -c "cd /home/node && node sääsovellus.js juupajoki" ->komennot mitkä suoritetaan

        Eli sääsovellus.js on isännän $PWD-kansiossa, jossa on myös esiladattu sääasemien json-tiedosto, joten sitä ei tarvitse ladata joka kerta uudelleen.

        Mitä pohjia tuohon tarvitaan, ei taida monellakaan olla valmiina.


      • Anonyymi

      • Anonyymi

      • Anonyymi
        Anonyymi kirjoitti:

        Dockerin asennus, ja imaget löytyy docker hubista.

        https://hub.docker.com/_/hello-world/

        Usko että olet ainut noiden taitaja. Ei ihan ensimmäiseksi tulisi tehdä "Hei maailma" juttuja tuolla tavalla.


      • Anonyymi
        Anonyymi kirjoitti:

        Usko että olet ainut noiden taitaja. Ei ihan ensimmäiseksi tulisi tehdä "Hei maailma" juttuja tuolla tavalla.

        Kontitusteknologiat ovat nykypäivää, kun kaikki alkaa pyörimään enemmän tai vähemmän pilvessä. Konttien etuna on niiden käyttökelpoisuus erilaisissa "orkesterointisysteemeissä", joissa pyöritellään dynaamisia kontteihin perustuvia mikropalveluita.

        Niissä on helppo toteuttaa kuormantasaus. Tarvittaessa voidaan skaalata palvelu hyödyntämään useampaa konttia ja varaamaan sitä kautta lisää rautaresursseja. Toisaalta taas voidaan ruuhkan hellittäessä vapauttaa resursseja.


    • Anonyymi

      Säätiedotukset on vain arvailuja arvausten joukossa. Huomenna on poutaa, taikka ei ole...

      • Anonyymi

        Näissä tiedostoissa joita nyt valkataan, ei säätä ennusteta, vaan katsotaan minkälainen se on nyt tai oli eilen.


    • Anonyymi

      Tämä kaavio koostuu kolmesta eri tiedostosta;
      https://s6.gifyu.com/images/TempChart.png

      1.) Lämpötilojen pominta (*.sh)
      2.) Kaavion piirto (*.sh)
      3.) Kaavio sivu (HTML)

      Kuten kuvastakin voi nähdä alareunan numero jokaista mittausta kohti on liikaa, joten jos tulostaisi vain päivien numeron, näyttäisi fiksummalta.

      • Anonyymi

        Lisätäänpä vielä:
        Kaavio käyttää Chart.min.js, joka lie ilmainen kaikille, ja lämpötilat poimitaan näin:

        wget -qO- "https://www.ilmatieteenlaitos.fi/api/weather/observations?fmisid=101317&observations=true&radar=true&daily=true" > st.txt

        sed -i 's/},{/}\n{/g' st.txt # },{ jossa pilkusta rivinvaihto
        while IFS= read -r line
        do
        if [[ "$line" == *"name"* ]]; then
        echo -e "$line" | awk -Fname '{print $2}' | cut -d ":" -f5- | cut -d "," -f-1 >> temp.txt
        fi
        done < "st.txt"

        Tuon suorittamisen jälkeen lämpötilat löytyvät temp.txt tiedostosta.


      • Anonyymi
        Anonyymi kirjoitti:

        Lisätäänpä vielä:
        Kaavio käyttää Chart.min.js, joka lie ilmainen kaikille, ja lämpötilat poimitaan näin:

        wget -qO- "https://www.ilmatieteenlaitos.fi/api/weather/observations?fmisid=101317&observations=true&radar=true&daily=true" > st.txt

        sed -i 's/},{/}\n{/g' st.txt # },{ jossa pilkusta rivinvaihto
        while IFS= read -r line
        do
        if [[ "$line" == *"name"* ]]; then
        echo -e "$line" | awk -Fname '{print $2}' | cut -d ":" -f5- | cut -d "," -f-1 >> temp.txt
        fi
        done < "st.txt"

        Tuon suorittamisen jälkeen lämpötilat löytyvät temp.txt tiedostosta.

        Kyllä ammattimies on aina ammattimies, hienoa työtä jälleen kerran.


      • Anonyymi

        Viikon pituisesta datasta voi tosiaan piirtää ihan hyvää käyrääkin.

        Itse olen nyt päässäni hahmotellut sovellusesimerkin, jolla voi hakea paikannimen perusteella lähintä sääasemaa, jonka arvoja sitten esitetään numeerisesti. Haversine-kaavaa on tarkoitus käyttää etäisyyden määrittelyyn.

        https://en.wikipedia.org/wiki/Haversine_formula

        Koodi tulee tietenkin pastebiniin vapaasti saataville.


      • Anonyymi
        Anonyymi kirjoitti:

        Lisätäänpä vielä:
        Kaavio käyttää Chart.min.js, joka lie ilmainen kaikille, ja lämpötilat poimitaan näin:

        wget -qO- "https://www.ilmatieteenlaitos.fi/api/weather/observations?fmisid=101317&observations=true&radar=true&daily=true" > st.txt

        sed -i 's/},{/}\n{/g' st.txt # },{ jossa pilkusta rivinvaihto
        while IFS= read -r line
        do
        if [[ "$line" == *"name"* ]]; then
        echo -e "$line" | awk -Fname '{print $2}' | cut -d ":" -f5- | cut -d "," -f-1 >> temp.txt
        fi
        done < "st.txt"

        Tuon suorittamisen jälkeen lämpötilat löytyvät temp.txt tiedostosta.

        Tuohon meni niin vähän koodia, että taidan tehdä minäkin jotain "parannuksia". Katsotaan nyt sitten, onko niin hyviä että viitsii esitellä muillekin.


    • Anonyymi

      Sämppärin kiusaksi.

      • Anonyymi

        Suodata "Sodat" katekoria pois, niin pahimmat idioottiketjut eivät näy.


    • Anonyymi

      Windows -ympäristössä tekisin asian näin.

      1. Injektoi omatekoinen DLL osaksi samaa prosessia kuin selain (vaatii konekielen osaamista, toki helpompi 32- kuin 64-bittisessä maailmassa, tosin jos teet tuon 32-bittisessä maailmassa, tarvitset myös selaimesta 32-bittisen version, kun käyttöjärjestelmä ei sa slli 32- ja 64 -bittisen koodin sotkemista samaan prosessiin, poikkeuksena Micrsoftin itsensä tekemä ns. systeemitason koodi).

      2. Tuo omatekoinen DLL koukuttaa kaikki nämä API -kutsut:

      TextOut
      ExtTextOut
      DrawText
      DrawTextEx
      PolyTextOut

      Kun selain luulee kutsuvansa mitä tahansa näistä funktioista, tekemäsi koukutus ohjaa funktiokutsun omaan versioosi kutsutusta funktiosta.

      Oma versiosi tekee 2 asiaa:

      1. Kutsuu alkuperäistä Windows API -funktiota.

      2. lähettää tiedon kutsutusta Windows API -funktiosta sekä sen parametreistä toiselle (omatekoiselle) sovellukselle.

      Tuo toinen sovellus voi sitten kaapata ko. tiedon ja tehdä sillä ihan mitä ikinä haluat !

      Edellä kuvattu toki tehoaa vain tekstimuotoiseen tietoon, eli esim. sääkarttaa et saa tuolla tavalla kopioitua.

      Tämäkin DLL on helpointa tehdä Delphillä, samoin kuin toinen sovellus, joka kaappaa itselleen ko. DLL:n selaimelta kaappaaman tiedon.

      Dll:n lataaminen:

      Tee apuohjelma, joka:

      1. käynnistää selaimen CreateProcess -funktiolla, mutta käytä flagia CREATE_SUSPENDED

      2. Lataa tuon tekemäsi DLL:n selaimen prosessiin.

      3. Lopuksi kutsutaan ResumeThread(hThread)

      missä hThread identifioi selainprosessin pääsäikeen.

      Huomaathan, että Windowsissa hThread ja ThreadID ovat 2 eri asiaa !

    • Anonyymi

      Minulla oli viime vuoden tai edellisin aikana, 2 - 3 kuukautta käytössä tuo sääkartan nouto ja liittäminen työpöydän taustakuvaan. Toimi ihan hyvin, mutta kiinnostus katosi tuota kohtaan. Pelkät Bash Shell komennot riittää siihen.

      • Anonyymi

        Tuolla samalla periaatteella päivystin myös torin rojuja, mutta se ei kauaa olut käytössä.


    Ketjusta on poistettu 3 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Nurmossa kuoli 2 Lasta..

      Autokolarissa. Näin kertovat iltapäivälehdet juuri nyt. 22.11. Ja aina ennen Joulua näitä tulee. . .
      Seinäjoki
      106
      5520
    2. Maisa on SALAKUVATTU huumepoliisinsa kanssa!

      https://www.seiska.fi/vain-seiskassa/ensimmainen-yhteiskuva-maisa-torpan-ja-poliisikullan-lahiorakkaus-roihuaa/1525663
      Kotimaiset julkkisjuorut
      145
      3683
    3. Vanhalle ukon rähjälle

      Satutit mua niin paljon kun erottiin. Oletko todella niin itsekäs että kuvittelet että huolisin sut kaiken tapahtuneen
      Ikävä
      50
      3245
    4. Mikko Koivu yrittää pestä mustan valkoiseksi

      Ilmeisesti huomannut, että Helenan tukijoukot kasvaa kasvamistaan. Riistakamera paljasti hiljattain kylmän totuuden Mi
      Kotimaiset julkkisjuorut
      453
      2568
    5. Purra hermostui A-studiossa

      Purra huusi ja tärisi A-studiossa 21.11.-24. Ei kykene asialliseen keskusteluun.
      Perussuomalaiset
      261
      1610
    6. Miten meinasit

      Suhtautua minuun kun taas kohdataan?
      Ikävä
      87
      1356
    7. Ensitreffit Hai rehellisenä - Tämä intiimiyden muoto puuttui suhteesta Annan kanssa: "Meillä ei..."

      Hai ja Anna eivät jatkaneet avioliittoaan Ensitreffit-sarjassa. Olisiko mielestäsi tällä parilla ollut mahdollisuus aito
      Ensitreffit alttarilla
      13
      1309
    8. Joel Harkimo seuraa Martina Aitolehden jalanjälkiä!

      Oho, aikamoinen yllätys, että Joel Jolle Harkimo on lähtenyt Iholla-ohjelmaan. Tässähän hän seuraa mm. Martina Aitolehde
      Suomalaiset julkkikset
      32
      1283
    9. Mitä sanoisit

      Ihastukselle, jos näkisitte?
      Tunteet
      77
      1248
    10. Miksi pankkitunnuksilla kaikkialle

      Miksi rahaliikenteen palveluiden tunnukset vaaditaan miltei kaikkeen yleiseen asiointiin Suomessa? Kenen etu on se, että
      Maailman menoa
      150
      1192
    Aihe