FinWX siirtymässä WAMP-konfiguraatiosta LAMP-konfiguraatioon

Aloittaja J.Jäntti, maanantai, 16.07.2018, 02:30

« edellinen - seuraava »

0 Jäsenet ja 1 Vieras katselee tätä aihetta.

weatherc

Lainaasellaiset määrät "Undefined value X, assuming 'X'"-tyyppisiä herjoja,

Näitä riittää kyllä nykyisissä PHP-versioissa ihan loputtomiin. Ainakin omissa on suurin osa puuttuvat heittomerkit arrayssä, $array["value"]

LainaaAsemakohtaiset yr.no-ennusteet ovat saamassa lähtöpassit. PHP 7.1 inhoaa sitä PHP-kokonaisuutta yli kaiken mahdollisen ja tein minä sille mitä hyvänsä, keskisormea tulee ja todella huolella.

Olisko häkkyrä alunperin meikäläisen käsialaa?  :)
En kyllä ole vielä yrittänyt syöttää EWN:än ennuste- tahikka pelkkää yr-parseria PHP 7:lle joten en tiiä mitä se siitä tykkää ja mikä siitä failaa, muuta kun että puskee ison kasan noita yllämainittuja undefined value sitä ja tätä....

J.Jäntti

Lainaus käyttäjältä: weatherc - maanantai, 23.07.2018, 23:24
Näitä riittää kyllä nykyisissä PHP-versioissa ihan loputtomiin. Ainakin omissa on suurin osa puuttuvat heittomerkit arrayssä, $array["value"]

Voisin piruuttani tuota testata vielä ennen kuin totaalisesti luovutan tuon kanssa. Tuo herja ei ole ainakaan minun ymmärryksen mukaan kovin informatiivinen sen suhteen, onko se nyt array, jolta puuttuu $-merkki edestä, kun sitä referoidaan, vai onko se value, jolta puuttuu heittomerkit. Sain tuon minun auringon sijainthäkkyrän toimimaan laittamalla referoitujen arrayden osoitusten eteen $-merkin. Huomasin nimittäin että siellä oli array määritettynä aiemmin. Tuo ennuste onkin sitten ihan eri seikka, sillä en ole 100% varma mistään sen herjoista koska en tiedä suoraan onko kyseessä vain arrayn nimestä puuttuvat heittomerkit vai sen $-merkin puuttuminen. Trial/Error/Perkele-metodi saattaa toimia tässäkin. :D

Lainaus käyttäjältä: weatherc - maanantai, 23.07.2018, 23:24
Olisko häkkyrä alunperin meikäläisen käsialaa?  :)
En kyllä ole vielä yrittänyt syöttää EWN:än ennuste- tahikka pelkkää yr-parseria PHP 7:lle joten en tiiä mitä se siitä tykkää ja mikä siitä failaa, muuta kun että puskee ison kasan noita yllämainittuja undefined value sitä ja tätä....

Kyllä se taitaa ihan sinun käsialaasi olla, mitä minä nyt sitä olin mutiloinut urakalla saadakseni siitä typistetymmän version:

// Template for showing yr.no's xml-forecast by Henkka, http://www.nordicweather.net
// Forecast cut down in size so only Meteogram shows by J.Jäntti, http://www.finwx.net
//

Ja tuo on vielä minun oikealla sukunimelläni varustettu, joten siihen ei ole kajottu sitten vuoden 2011. Virheelliseen sukunimeen tunnun törmäävän koko ajan tuolla koodissani sitä peratessani. Ei olisi hölmöyksissään pitänyt niitä mennä muuttamaan. Jos on oikein tarkka, saattaa havaita, että nykyversio FinWX:stä on yhtä Jäntti/Laiho-kompleksia, josta ei pirukaan ota tolkkua. ;D

Jotta saat vähän esimerkkiä mitä tapahtuu, ajoinpa tuon yr.no-ennustepalikan sellaisenaan kuin miten se PHP 5.2:ssa toimii ja tätä mieltä PHP 7.1 on siitä:

Notice: Only variables should be passed by reference in /var/www/html/stations/helsinki-38/yrforecast.php on line 149
Notice: Use of undefined constant _c - assumed '_c' in /var/www/html/stations/helsinki-38/yrforecast.php on line 150
Notice: Use of undefined constant location - assumed 'location' in /var/www/html/stations/helsinki-38/yrforecast.php on line 154
Notice: Use of undefined constant _c - assumed '_c' in /var/www/html/stations/helsinki-38/yrforecast.php on line 155
Notice: Use of undefined constant name - assumed 'name' in /var/www/html/stations/helsinki-38/yrforecast.php on line 155
Notice: Use of undefined constant _v - assumed '_v' in /var/www/html/stations/helsinki-38/yrforecast.php on line 155
Notice: Use of undefined constant _c - assumed '_c' in /var/www/html/stations/helsinki-38/yrforecast.php on line 156
Notice: Use of undefined constant country - assumed 'country' in /var/www/html/stations/helsinki-38/yrforecast.php on line 156
Notice: Use of undefined constant _v - assumed '_v' in /var/www/html/stations/helsinki-38/yrforecast.php on line 156
Notice: Use of undefined constant _c - assumed '_c' in /var/www/html/stations/helsinki-38/yrforecast.php on line 157
Notice: Use of undefined constant location - assumed 'location' in /var/www/html/stations/helsinki-38/yrforecast.php on line 157
Notice: Use of undefined constant _a - assumed '_a' in /var/www/html/stations/helsinki-38/yrforecast.php on line 157
Notice: Use of undefined constant altitude - assumed 'altitude' in /var/www/html/stations/helsinki-38/yrforecast.php on line 157
Notice: Use of undefined constant _c - assumed '_c' in /var/www/html/stations/helsinki-38/yrforecast.php on line 158
Notice: Use of undefined constant location - assumed 'location' in /var/www/html/stations/helsinki-38/yrforecast.php on line 158
Notice: Use of undefined constant _a - assumed '_a' in /var/www/html/stations/helsinki-38/yrforecast.php on line 158
Notice: Use of undefined constant latitude - assumed 'latitude' in /var/www/html/stations/helsinki-38/yrforecast.php on line 158
Notice: Use of undefined constant _c - assumed '_c' in /var/www/html/stations/helsinki-38/yrforecast.php on line 159
Notice: Use of undefined constant location - assumed 'location' in /var/www/html/stations/helsinki-38/yrforecast.php on line 159
Notice: Use of undefined constant _a - assumed '_a' in /var/www/html/stations/helsinki-38/yrforecast.php on line 159
Notice: Use of undefined constant longitude - assumed 'longitude' in /var/www/html/stations/helsinki-38/yrforecast.php on line 159
Notice: Use of undefined constant _c - assumed '_c' in /var/www/html/stations/helsinki-38/yrforecast.php on line 160
Notice: Use of undefined constant timezone - assumed 'timezone' in /var/www/html/stations/helsinki-38/yrforecast.php on line 160
Notice: Use of undefined constant _a - assumed '_a' in /var/www/html/stations/helsinki-38/yrforecast.php on line 160
Notice: Use of undefined constant utcoffsetMinutes - assumed 'utcoffsetMinutes' in /var/www/html/stations/helsinki-38/yrforecast.php on line 160
Notice: Use of undefined constant meta - assumed 'meta' in /var/www/html/stations/helsinki-38/yrforecast.php on line 176
Notice: Use of undefined constant _c - assumed '_c' in /var/www/html/stations/helsinki-38/yrforecast.php on line 177
Notice: Use of undefined constant lastupdate - assumed 'lastupdate' in /var/www/html/stations/helsinki-38/yrforecast.php on line 177
Notice: Use of undefined constant _v - assumed '_v' in /var/www/html/stations/helsinki-38/yrforecast.php on line 177
Notice: Use of undefined constant _c - assumed '_c' in /var/www/html/stations/helsinki-38/yrforecast.php on line 179
Notice: Use of undefined constant nextupdate - assumed 'nextupdate' in /var/www/html/stations/helsinki-38/yrforecast.php on line 179
Notice: Use of undefined constant _v - assumed '_v' in /var/www/html/stations/helsinki-38/yrforecast.php on line 179
Notice: Use of undefined constant forecast - assumed 'forecast' in /var/www/html/stations/helsinki-38/yrforecast.php on line 182
Notice: Use of undefined constant _c - assumed '_c' in /var/www/html/stations/helsinki-38/yrforecast.php on line 182

Ja tätä jatkuu sitten "muutama" rivi, kauniisti sanottuna.
Kokonaisuutena voi todeta PHP 7.1:n kehottavan minua ottamaan skriptin kauniiseen käteen ja kävelemään järveen betonisaappaat jalassa. ;D

Mitä uutta WAMP => LAMP-muutosrintamalla?
Kun uusi sääasema liittyy mukaan jäseneksi, olen tehnyt käytännössä tuplana hommia. Olen sekä täyttänyt PHP:ta varten oman filun ja vielä käsin puukottanut HTML-filuun samat tiedot. Alkaako jo hahmottumaan miten tavattoman järkijättöisen tarpeetonta, toistuvaa puuhaa olen harrastanut?
Sääaseman pääsivu on ihan tavallinen HTML-sivu IFrameilla ryyditettynä, joka ei - jostain syystä - ollut koskaan dynamiikkaa nähnytkään ja ajattelin sitä testata hieman. Hämmennyin, sillä koko homma meni samantien päin kuusia: Koodin aloitus ja lopetus olivat täsmälleen oikein kirjoitettu ja PHP:n olisi se pitänyt osata parsia mutta näin ei kuitenkaan käynyt. Jostain syystä itse sivunäytössä kohdat jäivät tyhjiksi ja sourcessa ne puolestaan näkyivät tasan miten ne sinne olin kirjoittanut. Kokeilin kaikkea mahdollista mutta tulos oli silti sama. Yritin katsoa PHP:n omasta virhelokista ja Apachen virhelokeista vastauksia, mutta sieltä ei löytynyt yhtään mitään asiaan viittaavaakaan.

Googletus antoi suurimmalta osin PHP 5:n suuntaan ja WAMP-alustaan viittaavia korjausehdotuksia, joiden kosketuspinta PHP 7:n suuntaan ja Linuxiin oli nolla. Lopulta sain haarukoitua sieltä vastausviidakosta pari ehdotusta ja niitä seuraten korjasin PHP:n - ja samalla rikoin sitä enemmän. Perkeleitä alkoi satelemaan ensin pään sisällä ja lopulta ulkopuolelle saakka, kun serveri alkoikin seuraavaksi tarjoamaan kaikkia PHP-filuja ladattavaksi koneelle, sen sijaan että olisi ne parsinut ja sisällön näyttänyt. Jännittävä aspekti oli vain se, että HTML-sivujen dynamiikka alkoi toimimaan, eli PHP toimi muutoin, mutta keksi nyt jostain syystä olla käsittelemättä .php-päätteisiä filuja lainkaan. Ei kun taaksepäin, httpd:lle kyykkyhyppyä ja katsomaan asioita uudelleen. Jostain syystä homma hajosi lisää: Nyt selain halusi ladata .php-filut sellaisenaan, mutta samalla myös dynamiikka katosi HTML-sivuilta. Tarkistin että kaikki oli aiemmassa tasossa ja kyllä oli; Silti sama toistui. Tein korjauksen .conf-filuun takaisin ja samalla toisenkin muutoksen samaan osoitteeseen ja kyykytin httpd:n. HTML-dynamiikka palasi mutta silti .php-filuille tarjottiin samaa käsittelyä. Palautin filun takaisin ja jälleen dynamiikka katosi, muun pysyessä samana. Aloin epäilemään omia kykyjäni ja tirvasin selaimen nurin. Mietin hetken aikaa mitä tehdä samalla kun katsoin lokitietoja jotka eivät kertoneet mitään. Tein muutoksen uudelleen takaisin ja avasin selaimen. Nyt ykskaks .php-filut parsittiinkin ja dynamiikka HTML-sivuilla alkoi toimimaan. Tässä kohtaa aivoni vetivät itsensä umpisolmuun, sillä en täysin sisäistänyt mitä tässä tapahtui. Vasta hetken päästä joku ratas liikahti ja tajusin:

Helvetin selaimen välimuisti. Sehän tyhjentyy kun sen suljen.
Samalla tajusin käytännossä turhaan kyykkyhypyttäneen systeemeitäni lähes loputtomassa silmukassa ja sitten tunsin oloni suorastaan pirun tyhmäksi.

Dynamiikkatesti suoritettiin FinWX Lohja-12A (Karjalohja, Nummijärvi):n sääsivurakenteella ja totesin sen toimivan lähes yli odotusten. Samalla keksin pari muutakin dynamiikan lisäysehdokasta sääaseman pääsivulle. Kirjasin paperille tiedon että dynaamisempi versio sivusta on kyseisessä hakemistossa, sekä lisäominaisuudet kehitystä varten, ettei tule unohdettua niitä.

Sitten päästiin seuraavaan aihealueeseen, joka on valitettavan tuttua FinWX:n nykyversiosta: säädatan haku https-sivujen yli. HQJaTu toimitti minulle aiemmin 10 minuutissa kasaan vääntämänsä, cURL:lla pyörivän PHP-skriptin. Kuinka ollakaan ja kuinka odotettavissa olikaan, se skripti pyörähti ilman mitään virheitä tai tyhjiä ruutuja ja haki https:n yli säädatan lähes juuri kuten pitikin. Muokkasin skriptiä ettei se puskisi HTTP 200-tulosilmoitusta säädatan eteen ja saatu data näytti nyt juuri sellaiselta, että parseriskripti pystyisi sen lukemaan. Testasin vielä toisellakin https-sivulla, mutta eri filulla ja sekin toimi loistavasti. Vielä en ole testannut http:n yli tuota sisältöä hakea, mutta uskaltaisin väittää katsomattakin että se tulee toimimaan. Seuraavana tehtävänä tuleekin olemaan tuon hakijaskriptin integrointi parseriskriptin kaveriksi siten, että cURL:n hakema säädata tallentuu välimuistiin kuten nykyversiokin tekee. Jos tässä ei onnistuta, niin sitten koko välimuistitusjärjestelmä romutetaan. Tähän en tosin usko tässä vaiheessa vielä, sillä välimuistijärjestelmä on datahakuskriptissä erillinen osansa. Tähän todennäköisesti pureudutaan torstain tai perjantain aikana. Lähtien siitä oletuksesta, että tuo saadaan toimimaan, se implementoidaan tuolloin myös FinWX:n nykyversioon samalla kertaa.
Juha Jäntti
Foorumin ja sivuston ylläpitäjä
Finland Weather Exchange (FinWX)

http://www.finwx.net/
------------------------------------------
Ukkoskausi avattu Suomessa: --.--.2024
Ukkoskausi avattu Helsingissä: --.--.2024
-------------------------------------------
Ukkospäivälaskuri 2024; Helsinki/Viikinmäki
0 ukkospäivää.
------------------------------------------
X, FinWX:n ylläpidon ilmoitukset
------------------------------------------

weatherc

#12
Notice: Use of undefined constant _v - assumed '_v' in /var/www/html/stations/helsinki-38/yrforecast.php on line 155
Notice: Use of undefined constant _c - assumed '_c' in /var/www/html/stations/helsinki-38/yrforecast.php on line 156
Notice: Use of undefined constant country - assumed 'country' in /var/www/html/stations/helsinki-38/yrforecast.php on line 156
Notice: Use of undefined constant _v - assumed '_v' in /var/www/html/stations/helsinki-38/yrforecast.php on line 156
Notice: Use of undefined constant _c - assumed '_c' in /var/www/html/stations/helsinki-38/yrforecast.php on line 157
Notice: Use of undefined constant location - assumed 'location' in /var/www/html/stations/helsinki-38/yrforecast.php on line 157
Notice: Use of undefined constant _a - assumed '_a' in /var/www/html/stations/helsinki-38/yrforecast.php on line 157
Notice: Use of undefined constant altitude - assumed 'altitude' in /var/www/html/stations/helsinki-38/yrforecast.php on line 157


Arrayn osia hyvinkin ovat nuo. Tuo YR-häkkyrähän on täynnä noita jättipitkiä arraynimiä tyyliin

$forecasts[$i+1][_c][location][_c][precipitation][_a][minvalue];

Ne pitäisi vissiin muuttaa tyyliin

$forecasts[$i+1]['_c']['location']['_c']['precipitation']['_a']['minvalue'];

Kyllähän tuo cUrl pitäisi mun mielestä ymmärtää https:ää ihan heittämällä. Mulla ei ole mitään erityistä kikkaa siinä käytössä, toi on mitä erwn:än datahaku käyttää:


<?php
  $ch 
curl_init();
  
curl_setopt ($chCURLOPT_URL$url);
  
curl_setopt ($chCURLOPT_USERAGENT'Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20120424 Firefox/12.0 PaleMoon/12.0');
  
curl_setopt ($chCURLOPT_FOLLOWLOCATION1);
  
curl_setopt ($chCURLOPT_RETURNTRANSFER1);
  
curl_setopt ($chCURLOPT_HEADERtrue);
  
curl_setopt ($chCURLOPT_TIMEOUT,2);
  
curl_setopt ($chCURLOPT_CONNECTTIMEOUT2);
  
$response curl_exec($ch);
  
curl_close($ch);

Jarkko

Kannattaa nuo ilmoitukset kiltisti korjata. Esimerkiksi tuossa "Notice: Use of undefined constant _v - assumed '_v'" ajaessa tarkistetaan onko "_v":lle määritetty define():llä arvo ja määritettyä arvoa ei löydy niin se käyttää "_v" merkkijonoa. Jos käyttää avaimena suoraan "'_v'" niin tuon määritetyn arvon tarkistamista ei tehdä. Tämä nopeuttaa toimintaa varsinkin while/for/foreach yms. silmukoissa.

Jos PHP:tä on koodannut ns. väärin, niin tälläisiä optimointeja on aika paljon. Esimerkkejä löytyy http://phpbench.com/ sivustolta. En tiedä mille PHP-versiolla noita benchmarkkeja on tehty, mutta pienetkin optimoinnit etenkin silmukoiden sisällä olevassa koodissa nopeuttaa suorittamista paljon.

PHP7:aan päivittäminen kannattaa muutenkin. Paljon taulukoiden pyörittämistä sisältävä koodi vie helposti PHP7:lla 70-80% ajasta mitä menisi vitos versioilla.

J.Jäntti

Tänään (26.07.2018) tapahtunutta:
Silmissä vilisee PHP-koodia ihan tosissaan. Olen koirien lenkkejä, koirien ruokintaa ja omaa ruokailuani, sekä paria vähäisempää taukoa lukuunottamatta takonut cURL:n varaan tukeutuvaa datahakuskriptiä siten, että se toimisi mahdollisimman suoraan jo olemassa olevien parseriskriptien kanssa yksiin. Työ on ollut yhtä yritys/erehdys/palautus/perkele-rutiinia, johon on tullut mukaan myös ripaus "ai miten niin error, haista..."-todentamisia, kun on debugannut tuota kummajaista. Pariin kertaan olin heittää hetkellisesti hanskat tiskiin, kun skripti ei toiminut kuten oletin sen toimivan, mutten aikonut jumaliste luovuttaa kuitenkaan kun oltiin niin pitkälle jo päästy. Modifioin HQJaTu:n lähettämää skriptiä ja sulautin osan weatherc:n cURL-skriptistä omaani. Lopputulos on erittäin hyvä, ainakin omasta mielestäni, sillä skripti toimii ja siihen on jopa ympätty mukaan virheen käsittelyäkin, jolloin ainakin vielä teoriassa järjestelmä pysäyttää datahaun ja ilmoittaa virheestä, eikä tee kuten vanha skripti, eli vain hakee sisällön riippumatta siitä onko se jotain järkijättöistä sillisalaattia ja yrittää sitä sitten syöttää parserille.

Testit ovat olleet pieni riemun aihe: Datahaku https-sivuilta toimii uudella serverillä ja säädata esittäytyy nyt niilläkin sääasemilla, jotka vielä nykyversiossa ovat tavoittamattomissa. Testipenkissä oli FinWX Helsinki-38. Seuraava juttu onkin sitten tuon datahakuskriptin heittäminen vanhalle alustalle. Sen voisi testata esimerkiksi tulevana viikonloppuna, yön pimeimpinä tunteina, jotta homman voi palauttaa pikimmiten takaisin ennalleen, jos skripti ei toimikaan. En anna sille kovinkaan suuria toimintavarmuuspisteitä vanhassa serverissä, pääosin PHP 5.2:n tähden.

Yksi teemoista myös oli saada välimuistijärjestelmää toimimaan, mutta epäonnistuin siinä. Vaikka mitä kikkoja kokeilin, se ei vain kertakaikkisesti toiminut ja kaikki data haettiin aina netistä, vaikka asetti sääaseman ruuhkahakuajaksi 3600 sekuntia (=1 tunti). Mitään herjoja en saanut PHP:n toimesta. Voi olla että olen nyt sen datahakufunktion jotenkin hakannut kiveen niin että se hakee datan riippumatta siitä onko se tiedosto välimuistin puolesta käyttökelpoinen vai ei. En ole 100% varma siitä miten tuo skripti pitäisi rakentaa, mutta oletan että jos olen tehnyt skriptiin funktion, sitä ei ajella ellei sitä erikseen pyydetä ja että funktioiden edessä on itse ns. "runtime"- tai aktiivinen-osuus, joka sitten ajaa funktion kun se kuuluu ajaa.

Tällä hetkellä datahakujärjestelmä lukee netistä säädatan, kirjoittaa sen serverin levylle kuten vanha välimuistijärjestelmä teki, mutta pitääkseni näppini irti parsereista, kun ne eivät ole rikki, ne käyvät vanhaan tapaan lukemassa datan levyn pinnalta onnellisen tietämättöminä siitä että koko välimuistijärjestelmä loistaa poissaolollaan. Koska datahaku näyttää toimivan varsin kiltisti, olen kahden vaiheilla sen suhteen, iskenkö nyt vain sille välimuistisysteemille DEPRECATED-leiman otsaan ja potkin lopullisesti roskakoriin siinä vaiheessa, kun uusi serveri ottaa ohjat vai vieläkö yritän sitä implementoida mukaan. Tahto kajota edeltäjäänsä selvästi luotettavammin toimivaan datahakuun ei nyt ihan hirveästi nappaa.

Rakentelin myös samalla sääsivun automaatiota pari askelta pidemmälle. Nyt mukana on raakile sääaseman sääkameran/webcam-kuvan osuudesta, jossa PHP täyttää muuttuvia kohtia sääasemasta riippuen. Vielä puuttuu automaatio, joka määrittelee mitä näytellään webcamin IFramessa, jos esim. sääkameraa ei ole. Se olisi tarkoitus saada rakenneltua huomisen (=perjantain) aikana. IFramesta paiskattiin hornantuuttiin sivuston osoite Copyright-klausuulin perästä sillä sama tieto löytyy sääaseman tiedoista joka tapauksessa.

Tällä hetkellä FinWX Helsinki-71:n sääsivut ovat ne jotka ovat nyt uudella serverillä automatisoinnin parantamisen piirissä. Kun sivusto on saatu kasattua niin automaattiseksi kuin mahdollista, siitä tehdään sapluuna, josta loput noin 100 (köhh) muuta asemaa sitten rakennetaan - manuaalisesti tottakai sillä tinkimättömällä(?) ammattitaidolla(??) pitää asiat tehdä, kuten eräs kahvikin. ;D

Entäpä aikataulu? Avoin. En pysty vielä sanomaan mitään selkeää aikataulua.
I-vaihe on siis menossa: Se on saada tämä ruosteisen, liitoksistaan natisevan nykykammotuksen sisältö kasattua sellaiseksi että sen ylläpitäminen tulee olemaan paljon kevyempää. Sivustolta on löytynyt piileviä ylläreitä paljon ja niiden yllätysten saaminen pois on ollut eniten aikaavievää puuhaa. Tähän vaiheeseen kuuluu myös järjestelmätason työt, jotta serveriä pystyy päivittämään muullakin tavalla, kuin hakkaamalla PuTTY:n kautta nanolla html-koodia.
II-vaiheessa sitten lähdetään näpertelemään ruostepommiserverini kloonin päivittämisessä tuoreemmilla PHP- ja MySQL-versioilla ja askelmerkkien tekemisellä sen suhteen miten tämä foorumi saadaan myös uuteen versioonsa.
III-vaihe on implementaatiovaihe, joka on näistä vaiheista lyhytkestoisin ja samalla kertaa myös eniten käyttäjille näkyvä. Ensimmäiseksi kaikki sääasemien tilanteet jäädytetään paikoilleen ja melkein heti perään foorumi. Seuraavan kerran kun ne näette uudelleen, se on uudella serverillä, joka on ottanut ohjat ja foorumin versio on myös vaihtunut.

Tämän jälkeen sitten aletaan katsomaan miten FinWX:n ulkonäköä saa päivitettyä nykyaikaisempaan muotoon ja sivustotekniikkaan. Tällä hetkellä mennään sivuston versiossa 3, jonka julkaisin 01.06.2009, eli vaatimattomat 9 vuotta sitten ja kohta siihen on tehty 1000 erinäistä pienempää päivitystä. Tuo maaginen 1000 päivityksen raja rikkoontuu kun uusi serveri ottaa ohjat, mutta versiopohja pysyy samana vielä hetken aikaa.

Miltä sitten versio 4 tulee näyttämään? En tiedä vielä itsekään, mutta ideoinnin aika tulee olemaan vasta sitten, kun serveri pyörii jollain muulla kuin yli vuosikymmenen vanhalla WAMPilla. Olen onneksi virheistä oppiva olento; olen ottanut opiksi olemaan tunkematta liian montaa rautaa tuleen kerralla. ;D
Juha Jäntti
Foorumin ja sivuston ylläpitäjä
Finland Weather Exchange (FinWX)

http://www.finwx.net/
------------------------------------------
Ukkoskausi avattu Suomessa: --.--.2024
Ukkoskausi avattu Helsingissä: --.--.2024
-------------------------------------------
Ukkospäivälaskuri 2024; Helsinki/Viikinmäki
0 ukkospäivää.
------------------------------------------
X, FinWX:n ylläpidon ilmoitukset
------------------------------------------

weatherc

LainaaYksi teemoista myös oli saada välimuistijärjestelmää toimimaan, mutta epäonnistuin siinä. Vaikka mitä kikkoja kokeilin, se ei vain kertakaikkisesti toiminut ja kaikki data haettiin aina netistä, vaikka asetti sääaseman ruuhkahakuajaksi 3600 sekuntia (=1 tunti).

Jos vinkkiä haluat tuohon niin yr:n parseri käyttää juuri tuollaista välimuistia että haetaan tuore filu vain jos vanha on vanhempi kuin x sekuntia.

LainaaTällä hetkellä FinWX Helsinki-71:n sääsivut ovat ne jotka ovat nyt uudella serverillä automatisoinnin parantamisen piirissä. Kun sivusto on saatu kasattua niin automaattiseksi kuin mahdollista, siitä tehdään sapluuna, josta loput noin 100 (köhh) muuta asemaa sitten rakennetaan - manuaalisesti tottakai sillä tinkimättömällä(?) ammattitaidolla(??) pitää asiat tehdä, kuten eräs kahvikin

Oma malli joka käytössä nordicin 4 asemalle on seuraava:
- Asemien datat menee mysliin samalla kaavalla kaikille. Kannan nimi erottaa ne toisistaan (tyyliin pertteli_daily).
- Sääasemasivut ovat pohjimmiltaan suoraan kopiot siitä ensimmäisestä, ja ainut "pakollinen muutos" on käytettävän kannan nimi jonka voi laittaa helposti filun alkuun tyyliin $station="pertteli". Nörtimpi versiohan käyttäisi suoraan samaa skriptiä kaikkiin mutta tein ne kopioina koska helpompi tehdä asemakohtaiset muokkaukset.

J.Jäntti

Lainaus käyttäjältä: weatherc - perjantai, 27.07.2018, 09:53
LainaaYksi teemoista myös oli saada välimuistijärjestelmää toimimaan, mutta epäonnistuin siinä. Vaikka mitä kikkoja kokeilin, se ei vain kertakaikkisesti toiminut ja kaikki data haettiin aina netistä, vaikka asetti sääaseman ruuhkahakuajaksi 3600 sekuntia (=1 tunti).

Jos vinkkiä haluat tuohon niin yr:n parseri käyttää juuri tuollaista välimuistia että haetaan tuore filu vain jos vanha on vanhempi kuin x sekuntia.

Se sattuu olemaan yr.no-parserista peräisin tuo välimuistisysteemini, itseasiassa, mutta siitä on niin pitkä aika kun se tuohon implementoitiin, etten parhaalla tahdollakaan nyt muista miten sen tuonne sain. Sitä järjestelmää yritin saada alunperinkin toimimaan, mutta vain niiltä osin, että skripti joko  kutsuu cURLia hakemaan datan netistä tai sitten lukee datan suoraan levyllä olevasta filusta, jos se on filemtime():lla lasketun kaavan mukaan vielä käyttökelpoinen. Testit tyssäsivät koko ajan siihen että se if/else-ehdollistaminen ei toiminut lainkaan (if filu käyttökelpoinen, lue se; else aja funktio, joka hakee datan netistä ja kirjoittaa samalla sen levyn pinnalle. Loppujen lopuksi, (Aamu)yön yli nukuttuani tulin siihen tulokseen, että välimuisti/ruuhkaluentajärjestelmä on tässä vaiheessa Deprecated. Asiaan palataan, jos sen puuttumisesta tulee ongelmia. cURL toimii vauhdikkaasti ja on tähän mennessä pelannut yli odotusteni.

Lainaus käyttäjältä: weatherc - perjantai, 27.07.2018, 09:53
Oma malli joka käytössä nordicin 4 asemalle on seuraava:
- Asemien datat menee mysliin samalla kaavalla kaikille. Kannan nimi erottaa ne toisistaan (tyyliin pertteli_daily).
- Sääasemasivut ovat pohjimmiltaan suoraan kopiot siitä ensimmäisestä, ja ainut "pakollinen muutos" on käytettävän kannan nimi jonka voi laittaa helposti filun alkuun tyyliin $station="pertteli". Nörtimpi versiohan käyttäisi suoraan samaa skriptiä kaikkiin mutta tein ne kopioina koska helpompi tehdä asemakohtaiset muokkaukset.

Jos nyt en täysin väärin ole ymmärtänyt, meidän sivujen toiminnan erottavana tekijänä se, että sinulla vissiinkin käy järjestelmä pollaamassa asemien säätietoja määrävälein ja kirjoittaa ne tietokantaan ja kannasta haetaan viimeisimmät tiedot kun sivuillasi käy, menikö oikein?
Tämän tyyppinen periodinen datahaku FinWX:ltä puuttuu vielä tässä vaiheessa. Tarkoitus on saada tuo toiminto mukaan, mutta se tosin vaatii sitten opiskelua, sillä sen verran karttoittamaton tuo PHP:n ja MySQL:n välinen maailma on vielä minulle.

Tämä helle käy kyllä jaksamisen päälle jonkin verran, mutta aion silti tehdä uudelle serverille muutoksia vaikka vähän kerrallaan. Tämä koodaaminen on tällä hetkellä saman tyyppistä, kuin sarvikuonon liike: Se lähtee hitaasti liikkeelle, mutta kun se on saavuttanut täyden vauhdin, sitten mennään massan mahdollistaman inertian voimin vaikka minkälaisen esteen läpi. Tärkeintä on pitää nyt yllä tätä vauhtia, ettei seuraava potentiaalinen este pysäytä kehitystä uudella serverillä.
Juha Jäntti
Foorumin ja sivuston ylläpitäjä
Finland Weather Exchange (FinWX)

http://www.finwx.net/
------------------------------------------
Ukkoskausi avattu Suomessa: --.--.2024
Ukkoskausi avattu Helsingissä: --.--.2024
-------------------------------------------
Ukkospäivälaskuri 2024; Helsinki/Viikinmäki
0 ukkospäivää.
------------------------------------------
X, FinWX:n ylläpidon ilmoitukset
------------------------------------------

weatherc

LainaaJos nyt en täysin väärin ole ymmärtänyt, meidän sivujen toiminnan erottavana tekijänä se, että sinulla vissiinkin käy järjestelmä pollaamassa asemien säätietoja määrävälein ja kirjoittaa ne tietokantaan ja kannasta haetaan viimeisimmät tiedot kun sivuillasi käy, menikö oikein?

Juu, niin tekee. Taka-ajatushan siinä on se että tällöin tulee datat haettua tasaisen väliajoin ja hallitusti, mutta toki myös siksi että silloin on esim mahdollista kerätä noita toplista-datoja.


J.Jäntti

Tänään tapahtunutta (27.07.2018):

cURLin toimivuuden ja sitä kautta myös https-sivujen takana majailevien säädatojen saatavuuden varmistuminen antoi viimeinkin mahdollisuuden tehdä sivustolle muitakin päivityksiä. Katseeni kohdistui sääaseman pääsivuun, jonka automatisointia paransin entisestään, tehden sivusta käytännössä kokonaan dynaamisen. Sääaseman tiedot omaava .php-tiedosto on nyt käytännössä koko yksittäisen sääaseman hermokeskus. Siellä olevat variablet ovat vastuussa käytännössä 90% asioista, jota sivulla tapahtuu mikä vähentää ylläpidollista tuskaa huomattavasti, kun kaikki sääaseman asiat ovat nyt yhden filun alla.

Asiasta innostuneena ajattelin myös tehdä pienen keskittämisoperaation, jossa osa .php-filuista, jotka vastaavat mm. parsitun säädatan näyttämisestä, webcam-kuvan näyttämisestä, sekä muista pikkujutuista jota sivulla esiintyy, olisivat yhdessä paikassa ja että nämä elementit olisivat kaikille samat, mutta se epäonnistui. Siirsin nämä .php-filut hakemistoon jossa muutkin sivuston roippeet, kuten parserit, pyörivät, mutta kun muutoksien jälkeen yritin avata sääsivua, sain huomata että rakentamani hierarkia ei ihan toimikaan niin suoraviivaisesti ja herjoja saatiin ruutu puolilleen.
Homma tyssäsi siihen, että nämä sivuston osia näyttävät .php-filut eivät saaneet avattua sääaseman tietoa sisältävää php-tiedostoa, koskapa eivät tienneet mistä sen avata.

Niille, jotka osaavat minua enemmän, voisivat vinkata/auttaa hieman hölmöä:
Tällä hetkellä homma menee niin, että esim. parsitun datan näytöstä vastaava skripti wxout.php on samassa hakemistossa sääaseman tietoja sisältävän init.php:n kanssa.
include - ja include_once:t menevät tietty tässä tilanteessa läpi koska init.php on samassa hakemistossa.

Mutta siirräpäs wxout.php ulos hakemistosta ja ykskaks yllättäen include/include_once ei löydäkään enää tuota init.php-filua luettavaksi ja tässä on nyt se ongelman ydin:
Minulla on 80 kappaletta sääasemia, jolla kaikilla on tuo init.php-filu. Se isoin kysymys onkin, että millä pirulla saan kerrottua wxout.php:lle että kun tietyn sääaseman (vaikka helsinki-71:n) dataa halutaan hakea, sen pitäisi saada includella avattua sen tietyn sääaseman init.php:n?

Mikä minua tässä hämää erityisen paljon on se, että cURL:a käyttävä wxcache.php osaa jollain ihme kikalla kyllä avata tasan oikeasta paikasta init.php:n ja mikä hämmentävintä, sen include_once on 1:1 täysin sama kuin mikä on wxout.php-filussa. En tältä istumalta keksinyt mitään mikä ihmeen ero noilla kahdella filulla muka on, joten palautin kaikki takaisin tilanteeseen ennen tätä keskittämis-säätöä.

Luulen että olen vain liian väsynyt tästä rupeamasta ja tarkkaavaisuuteni alkaa pettämään. Siinä on riski että väsymyksissäni tulen rikkoneeksi asioita, mikä ei ole ajatuksena varsinkaan kun sivustoon viikon aikana tehdyt muutokset toimivat kaikki odotetusti. Jos vaikka irtautuisi pariksi päiväksi koodaamisen ihmeellisestä maailmasta ja hypähtää takaisin vaikka ensi viikon alkupuolella. Jos vaikka sitä olisi viisaampi ja/tai saanut hyviä vinkkejä tuon kummallisuuden debuggaamiseen.

Askel askeleelta sitä kuitenkin tässä edetään kohti LAMP-konfiguraatiota. Mitään tavatonta kiirettähän tässä ei ole.
Juha Jäntti
Foorumin ja sivuston ylläpitäjä
Finland Weather Exchange (FinWX)

http://www.finwx.net/
------------------------------------------
Ukkoskausi avattu Suomessa: --.--.2024
Ukkoskausi avattu Helsingissä: --.--.2024
-------------------------------------------
Ukkospäivälaskuri 2024; Helsinki/Viikinmäki
0 ukkospäivää.
------------------------------------------
X, FinWX:n ylläpidon ilmoitukset
------------------------------------------

weatherc

LainaaTällä hetkellä homma menee niin, että esim. parsitun datan näytöstä vastaava skripti wxout.php on samassa hakemistossa sääaseman tietoja sisältävän init.php:n kanssa.
include - ja include_once:t menevät tietty tässä tilanteessa läpi koska init.php on samassa hakemistossa.

Mutta siirräpäs wxout.php ulos hakemistosta ja ykskaks yllättäen include/include_once ei löydäkään enää tuota init.php-filua luettavaksi ja tässä on nyt se ongelman ydin:
Minulla on 80 kappaletta sääasemia, jolla kaikilla on tuo init.php-filu. Se isoin kysymys onkin, että millä pirulla saan kerrottua wxout.php:lle että kun tietyn sääaseman (vaikka helsinki-71:n) dataa halutaan hakea, sen pitäisi saada includella avattua sen tietyn sääaseman init.php:n?

Polku on mahdollisesti väärä.
Itse käytän trial/error-tilanteissa usein echo:a avuksi, eli että se printtaa ulos ongelman eli esim polun jotta näen että mistä se yirttää sitä filua hakea ja sitten katson että onko se edes sinneppäin siitä mitä pitäisi olla. Toki error-logikin kertonee saman asian.
Yksi auttava keino on myös että käyttää aina "koko polkua" tyyliin "/home/web/sivut/" eikä kikkaile "../../"-tyylisillä poluilla.

Kannattaa toki myös muistaa että includessa olevien filujen mahdolliset polut menee sen "ylimmäisen filun mukaan". Eli tässäkin on se fail-safe tyyli tuo "koko polku".

Vähemmän filuja-tyyli olisi yksi init.php jota kaikki asemat käyttäisi ja sille kerrottais $variablella että mikä asema kyseessä. Vaatinee pientä uudelleenkoodaamista jos kaikilla on omat init.php:t mutta palkitsinee loppupeleissä vähemäällä "point to fail" ja siinä ettei ole kun yksi init.php jota tarvii tarvittaessa muokata mikä taas helpottaisi ylläpitoa jatkossa.