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
Arvojen poiminta nettisivulta
77
3198
Vastaukset
- 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 AmmattikoodariMinä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_FetchJos 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_FetchHö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
Enpä sitten maltanut olla viemättä tuota minimaalista esimerkkiä pitemälle, ja nyt sitten jo menikin 21 riviä ( https://s6.gifyu.com/images/www.foreca.fi.py.png ).
Tulostaa tämän näköisen tilanteen ( https://s6.gifyu.com/images/www.foreca.fi.png ). Näitten "Ammattikoodarien" vuoksi olen usein, kuten tässäkin laittanut lähdekoodin kuvana, joutuvatpahan ainakin jotain kirjoittamaan, ettei ihan kopiona pääse omiin nimiinsä ottamaan.- 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.pngTuota 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.pngEhkä 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.pngMitä 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°CTuli 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°CNyt 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°CTuo 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 kirjoitti:
Mitä pohjia tuohon tarvitaan, ei taida monellakaan olla valmiina.
Dockerin asennus, ja imaget löytyy docker hubista.
https://hub.docker.com/_/hello-world/ - Anonyymi
Anonyymi kirjoitti:
Dockerin asennus, ja imaget löytyy docker hubista.
https://hub.docker.com/_/hello-world/Kuinka olet tuollaiseen sotkeutunut?
- 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.
Forecalla on oma (ilmainen) API olemassa.
https://developer.foreca.com/- 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
Nurmossa kuoli 2 Lasta..
Autokolarissa. Näin kertovat iltapäivälehdet juuri nyt. 22.11. Ja aina ennen Joulua näitä tulee. . .1367639Joel 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 Aitolehde361893Kaksi lasta kuoli kolarissa Seinäjoella. Tutkitaan rikoksena
Henkilöautossa matkustaneet kaksi lasta ovat kuolleet kolarissa Seinäjoella. Kolmas lapsi on vakasti loukkaantunut ja251870- 911613
Miksi pankkitunnuksilla kaikkialle
Miksi rahaliikenteen palveluiden tunnukset vaaditaan miltei kaikkeen yleiseen asiointiin Suomessa? Kenen etu on se, että1791535Tunnekylmä olet
En ole tyytyväinen käytökseesi et osannut kommunikoida. Se on huono piirre ihmisessä että ei osaa katua aiheuttamaansa p104978- 49910
Odotathan nainen jälleenkohtaamistamme
Tiedät tunteeni, ne eivät sammu johtuen ihanuudestasi. Haluan tuntea ihanan kehosi kosketuksen ja sen aikaansaamaan väri28810Taisit sä sit kuiteski
Vihjata hieman ettei se kaikki ollutkaan totta ❤️ mutta silti sanoit kyllä vielä uudelleen sen myöhemmin 😔 ei tässä oik4769- 32764