FinWX Foorumi
tiistai, 22.05.2012, 19:17 *
Tervetuloa, Vieras. Ole hyvä ja kirjaudu tai rekisteröidy.
Jäikö aktivointi sähköposti saamatta?

Kirjaudu käyttäjätunnuksen, salasanan ja istunnonpituuden mukaan
Uutiset:
06.05.2012
Toivotamme tervetulleeksi FinWX:n 69. jäsen-sääaseman, FinWX Turku-54:n.
Sääasema on Länsi-Suomen läänin 25. FinWX-asema.

Lue lisää uudesta jäsenasemasta täältä.
 
   Etusivu   Ohjeet Haku Kalenteri Kirjaudu Rekisteröidy  
Sivuja: [1]
  Tulostusversio  
Kirjoittaja Aihe: NWN sai uuden master-scriptin  (Luettu 214 kertaa)
0 jäsentä ja 1 vieras katselee tätä aihetta.
weatherc
Foorumin Yleismoderaattori
*****
Poissa Poissa

Viestejä: 4546


« : lauantai, 10.07.2010, 22:49 »

NWN sai näin hellepäivän ratoksi jolloin kivempaa olla sisällä kun ulkona uudet master-scriptit, eli nuo jotka takoo taustalla.

Samalla pieneni skriptien määrä 6:sta (Järkyttynyt) 3:een, josta vielä 1 napsitaan pois kunhan keretään. Myös koodin määrä väheni kolmanneksella Näyttää kieltä

Pääidea oli järjestää funktiot järkevämmin sekä esim. napsia pois turhia mysql-kyselyjä.
Funkitot käytiin myös läpi ja paranneltiin tarvittaessa.

Pääpiirteet:
Datan keruu-skripti
Tämä kerää datat (esim clientraw.txt) ja tallentaa ne sellaisenaan tiedostoon. Koska asemia on yli 200 jaetaan ne 4 osaan ja riippuen minuutista haetaan aina yksi osa kerrallaan, eli esim minuutti 1 haetaan ensimmäinen neljäsosa asemista jne. Näin pysyy ajo-aika per kerta hallinnassa eikä kasva liian suureksi. Käytössä datahaussa on cUrl jossa toiminnot esim. yhteyden keston rajoittamiseen jossa käytössä on 4 sekunnin raja, eli yhteys napsitaan poikki 4 sekunnin jälkeen jollei dataa ole kuulunut ennen sitä.
Tämä elää ihan omaa elämää ja on täysin riippumaton muusta skriptistä ja ajetaan ajastuksella 6 minuutin kierrolla (todellisuudessa ajetaan 4 kertaa tuon 6 minuutin aikana jotta saadaan kaikki asemat haettua).

Datan prosessointi
Tämä on varsinainen elefantti Iskee silmää
4500 riviä koodia joka tekee kaiken kovan työn Iskee silmää
Jaettu 3 osaan:
1. Datan prosessointi, eli raakadatan parsiminen, vika-testi, max/min-taulukoiden päivttäminen ja tietokantojen päivittäminen.
Vikatesti tarkistaa:
- lämpötila on numeerinen (aika oleellista eikö?)
- lämpötila on määrätyn rajan sisällä, vaihtelee kuukausien mukaan, rajat aika väljät,etelän asemille (< 60°N) on omat rajat a´la DMI:n pws-osasto, pohjoisen hitusen yli suomen ennätykset +/- jokunen aste
- lämpötila ei ole joidenkin vikalämpötilojen listalla, lista on täysin manuaalinen ja koostuu joistakin softien käyttämistä "vika-lämpötiloista", esim. -20.0 jota WD käyttää välillä.
- asema ei ole "ilman säteilysuojaa"-listalla, tämäkin on manuaalinen lista johon "joutuu" jos lämpötila alkaa olemaan 40 asteessa jatkuvasti, on ollut jonkin aikaa pois käytöstä ja heti tuli palautetta asiasta joten palautin toimintaan Iskee silm&#228;&#228;
Lista aktiivinen 09-21 CET, muulloin pääsevät nekin asemat läpi, listalla tällä hetkellä 6 asemaa josta ei ainuttakaan Suomalaista.

Tarkistaa lähinnä lämpötilaa koska seurattuani datoja huomasin että se on eniten vikoja aiheuttava ja samalla vaikein hallittava koska ei ole mitään "turvasatamaa" jota vois käyttää, muut, esim tuulen voi pistää nollaan kun vikalukema ilmenee ja jatkaa matkaa mutta lämpötilassa ei sellaista ole ilman että toplistat sekoavat.
Varsinaisen vikatestin lisäksi tarkistetaan lähes kaikkia lukemia että ovat "inhimilliset", esim sateet ja tuulet positiivisia lukemia ja numeerisia, ettei ole satanut -45 mm eikä tuulta 90 m/s tai abc m/s ja sen sellaisia hassuja lukemia Iskee silm&#228;&#228;
Mikäli sellainen vika ilmenee, laittaa skripti sen hetken lukeman 0.0:ksi niiltä osin.

Tämä koske vain PWS-asemia, Synop- ja Metar-tiedot (jotka erillinen skripti hakee ja tallentaa omaan tietokantaan) ovat "sellaiset kun tulevat".

Säätyyppi-ikonit käyttävät päivä/yö-vaihtelussa php:n aurinko-aikoja perustuen koordinaateihin, näin saadaan kaikille asemille esim. auringon nousu/laskuajat riippumatta siitä onko asemalta sitä saatavilla.
Kastepiste, sama asia, lasketaan paikan päällä perustuu lämpötilaan ja kosteuteen kunhan molemmat ovat saatavilla.

2. Datatiedoston laatiminen user-kartoille, pistää kasaan JSON-filun kartta-sivuille jossa PWS-, Synop- ja METAR-datat
3. Toplistan laatiminen, kerää tiedot kannasta ja laatii top-listan ja tekee siitä JSON-filun sekä lopuksi zipin molemmista JSON-filuista jota user-kartta sitten hakee.

Tämä skripti ajetaan 6 minuutin välein.

 Virnist&#228;&#228;
« Viimeksi muokattu: lauantai, 10.07.2010, 23:07 kirjoittanut weatherc » tallennettu

Sivuja: [1]
  Tulostusversio  
 
Siirry:  

MySQL pohjainen foorumi PHP pohjainen foorumi Powered by SMF 1.1.16 | SMF © 2011, Simple Machines Validi XHTML 1.0! Validi CSS!