Tiedostojen seurantaa

[viesti Survo-keskustelupalstalla (2001-2013)]

Kirjoittaja: Seppo Mustonen
Sähköposti:    -
Päiväys: 13.11.2007 17:49

Survossa on helppo tarkkailla tiedostojen sisältöä. Esim. datatiedostoja
voi katsella mm. FILE SHOW:lla, matriisitiedostoja /MATSHOW:lla jne.
Koska Survo ei kuitenkaan automaattisesti näytä tiedostoihin tulleita
muutoksia, lienee tarvetta jonkinlaiselle seurantajärjestelylle,
jolla näitä muutoksia voisi automaattisesti havaita niin, ettei seuranta
mitenkään häiritse tekeillä olevaa työtä. Näin saattaisi heti tarkistaa,
mitä olet viimeksi saanut aikaan. Etenkin opetustilanteissa (mutta
miksei myös tutkimushommissa) töiden monitoroinnista on hyötyä.

Olen tehnyt MONITOR-nimisen sukroperheen tähän tarkoitukseen.
Idea syntyi valmistellessani vuotuista Survon esittelyä Tampereen
yliopistoon syyskuussa. Halusin näyttää pienen esimerkin Survon
matriisitulkin käytöstä tarkastellen erityisesti Survo-ristikon
laadintaa. Tämä tapahtuu vaiheittain etupäässä peräkkäisillä
MAT-komennoilla, jotka eivät suoraan ilman eri pyyntöä tuota mitään
tuloksia toimituskenttään vaan ainoastaan matriisitiedostoihin. On
tietenkin joka vaiheen jälkeen mahdollista näyttää tuloksia
väliaikaisesti esim. /MATSHOW-komennolla, mutta se vaatii oman
ponnistuksensa.

Välttääkseni ylimääräiset, erilliset näyttämiset, päätin antaa
toisen Survo-istunnon seurata, mitä olen tekemässä.
Tässä esittelytilanteessa käynnistin toisen Survon erikseen ja siinä
/MONITOR-nimisen sukron, joka panin tarkkailemaan tiettyjä
data- ja matriisitiedostoja käyttäen CHECK-komentoa ja
löytäessään tiedostoja näyttämään niiden sisältöjä peräkkäin omassa
toimituskentässään.

Koska tällainen työtapa synnytti kiinnostusta, esittelin samaa
tilastollisen tietojenkäsittelyn seminaarissa Helsingissä
pari viikkoa sitten ja keskustelu asiasta on nyt johtanut
seuraavanlaiseen alkuperäisen MONITOR-sukron yleistykseen.

Kuvaan aihetta lyhyen esimerkin avulla.
Tarkasteltakoon pelkästään erään matriisin A käänteismatriisin B
laskemista ja tuloksen tarkistusta laskemalla matriisi TULO=A*B.
Olkoon matriisi A

MATRIX A
/// S1  S2  S3
R1   5   3   1
R2   2   7   0
R3   4   2  10

talletettuna matriisitiedostoksi A.MAT komennolla

MAT SAVE A

Aluksi tulee päättää, mitä tiedostoja haluaa tarkkailla (tätä voi
muuttaa työn aikana). Tarkkailtavat tiedostot, tarkemmin niiden
poimintaan tarkoitetut komennot, talletetaan tekstitiedostona
MONITOR.TXT esim. seuraavasti:

SAVEP CUR+1,CUR+3,MONITOR.TXT
MAT LOAD A.MAT
MAT LOAD B.MAT
MAT LOAD TULO.MAT

Sitten voikin jo aktivoida tarkkailuun tarkoitetun sukrokomennon
/MONITOR-START

Tämä sukro käynnistää toisen Survon (näyttösurvon) ja avaa sille oman
ikkunansa. Koska oletusarvoisesti ikkuna asettuisi nykyisen päälle,
ikkuna tulee siirtää sopivasti esim. nykyisen ikkunan oikealle puolelle.
Tämä tapahtuu niin, että /MONITOR-START kutsuu sukron
/MONITOR-DISPLAY tekemään tarvittavat asettelut eli se avaa
näyttösurvolle uuden ikkunan nykyisen oikealla puolella ja kasvattaa sen
rivien määrän mahdollisimman suureksi.

Kaavamaisesti esitettynä alkutilanne näyttää seuraavalta:

Pääsurvo                           Näyttösurvo
----------------------------------|-------------------------------------
                                  |
 /MONITOR-START_                  | MAT LOAD A.MAT
                                  | MATRIX A.MAT
                                  | A
                                  | ///            S1       S2       S3
                                  | R1              5        3        1
                                  | R2              2        7        0
                                  | R3              4        2       10
                                  | ....................................
                                  |
                                  |
----------------------------------|-------------------------------------

Kun matriisi A käännetään pääsurvossa komennolla
MAT B=INV(A)
näkymä muuttuu seuraavan kaltaiseksi:

Pääsurvo                           Näyttösurvo
----------------------------------|-------------------------------------
                                  |
 /MONITOR-START                   | MAT LOAD A.MAT
 MAT B=INV(A)_   / *B~INV(A) 3*3  | MATRIX A.MAT
                                  | A
                                  | ///            S1       S2       S3
                                  | R1              5        3        1
                                  | R2              2        7        0
                                  | R3              4        2       10
                                  | ....................................
                                  | MAT LOAD B.MAT
                                  | MATRIX B
----------------------------------| INV(A)
                                  | ///            R1       R2       R3
                                  | S1        0.26316 -0.10526 -0.02632
                                  | S2       -0.07519  0.17293  0.00752
                                  | S3       -0.09023  0.00752  0.10902
                                  | ....................................

ja kun lasketaan tarkistuksena tulo A*B komennolla
MAT TULO=A*B
asetelmaksi tulee

Pääsurvo                           Näyttösurvo
----------------------------------|-------------------------------------
                                  |
 /MONITOR-START                   | MAT LOAD A.MAT
 MAT B=INV(A)    / *B~INV(A) 3*3  | MATRIX A.MAT
 MAT TULO=A*B_   / *TULO~A*INV(A) | A
                                  | ///            S1       S2       S3
                                  | R1              5        3        1
                                  | R2              2        7        0
                                  | R3              4        2       10
                                  | ....................................
                                  | MAT LOAD B.MAT
                                  | MATRIX B
----------------------------------| INV(A)
                                  | ///            R1       R2       R3
                                  | S1        0.26316 -0.10526 -0.02632
                                  | S2       -0.07519  0.17293  0.00752
                                  | S3       -0.09023  0.00752  0.10902
                                  | ....................................
                                  | MAT LOAD TULO.MAT
                                  | MATRIX TULO.MAT
                                  | A*INV(A)
                                  | ///            R1       R2       R3
                                  | R1       1.000000 0.000000 0.000000
                                  | R2       0.000000 1.000000 0.000000
                                  | R3       0.000000 0.000000 1.000000
                                  |.....................................

Monitorointi lopetetaan pääsurvossa yksinkertaisesti komennolla
/MONITOR-EXIT
joka itse asiassa tarkoittaa sitä, että pääsurvossa tehdään
talletus

SAVEP CUR+1,CUR+1,MONITOR.TXT
EXIT

Tällöin näyttösurvo sulkeutuu ja sen ikkuna katoaa.

                       * * *

Tähän aiheeseen palaan vielä piakkoin saatuani lisää palautetta.
On muutenkin syytä kertoa enemmän pelisäännöistä sitten, kun ne
ovat tarkentuneet.

Laajempana näytteenä olen tallentanut Survo-ristikon laadintaa
koskevan jutun Flah-demona
http://www.survo.fi/flash/f_monitor.html 

/MONITOR-sukroperhe on saatavilla kokeiltavaksi osoittesta
http://www.survo.fi/tmp/MONITOR.TUT 
Kun MONITOR.TUT on talletettu Survossa sukrohakemistoon, komento
/MONITOR-EXAMPLE1
näyttää tuon ristikkodemon.

-Seppo

Vastaukset:
[ei vastauksia]

Survo-keskustelupalstan (2001-2013) viestit arkistoitiin aika ajoin sukrolla, joka automaattisesti rakensi viesteistä (yli 1600 kpl) HTML-muotoisen sivukokonaisuuden. Vuoden 2013 alusta Survo-keskustelua on jatkettu entistäkin aktiivisemmin osoitteessa forum.survo.fi. Tervetuloa mukaan!

Etusivu  |  Keskustelu
Copyright © Survo Systems 2001-2013. All rights reserved.
Updated 2013-06-15.