Tietokoneen käytön ja ohjelmoinnin alkeet

Kurssin kotisivulle


11 Komentokielistä

awk, gawk

Alkuperäinen versio Aho, Weinberger, Kernighan; gawk on uudempi GNU-versio.

Awkille annetaan ohjelma ja syöttötiedosto. Ohjelma on operaatio, joka kohdistetaan syöttötiedoston jokaiseen riviin. Tiedostosta voidaan esimerkiksi poimia tietyt sarakkeet ja laatia niiden avulla raportti.

Seuraava tulostaa tiedoston lista jokaisen rivin toisen kentän:

   awk '{print $2}' lista

Awk-ohjelmassa voi olla 1) aloitusosa, joka suoritetaan kerran, 2) toimenpideosa, joka kohdistetaan jokaiseen syöttötiedoston riviin, ja 3) lopetusosa, joka suoritetaan lopuksi kerran.

Oletetaan, että tiedostossa table on seuraavaa

  1, a, b, c
  x, 1, 2, 3
  2, 2, a, a
  3, 4, b, a
  1, 2, 3, 4

Suoritetaan sitten komento

   awk 'BEGIN {FS=","} {if (/1/) { print $2 $1 } } END{print NR} ' table

Tässä ilmoitetaan aluksi, että kenttien erotin (FS, field separator) on pilkku, sitten tulostetaan tiedoston niiltä riveiltä, joilla esiintyy ykkönen, ensin toinen ja sitten ensimmäinen kenttä, ja lopuksi tulostetaan rivien määrä (NR number of lines):

 a  1
 1  x
 2  1
9

Perl

Practical Extraction and Report Language
Pathologically Eclectic Rubbish Lister

C:tä muistuttava tulkittava ohjelmointikieli.

Laajempi kuin sed tai awk, sisältää molempien ominaisuuksia. Sopii erityisesti yksinkertaisiin tehtäviin, joihin Unixin komentotiedostot eivät riitä, mutta joihin kunnollisen C-ohjelman kirjoittaminen veisi liikaa aikaa.

Tehdään tiedosto perlkoe

#!/usr/bin/perl 
  printf ("%6d\n", 2**3) 

Annetaan tälle suoritusoikeus:

  chmod 755 perlkoe

Suoritetaan tiedosto

  ./perlkoe

ja se tulostaa ruudulle luvun 8.

Skalaarimuuttujan nimen edessä on $:

  $a = 1 ;
  $b = $a + 2 ;
  $c = $a * $b ;

Suunnilleen samat kontrollirakenteet kuin C:ssä, mahdollisuus määritellä omia funktioita, laaja kirjasto varusfunktioita.

Muuttujien sidonta dynaamista; muuttujia ei määritellä, joten ei myöskään voida tarkistaa, käytetäänkö niitä oikein. Saattaa johtaa vaikeasti jäljitettäviin virheisiin.

Soveltuu pienehköihin tehtäviin, suuremmissa saattaa olla vaarallinen.

Python

Laaja ohjelmisto, jossa työkaluja myös käyttöliittymien ja verkkosovellusten laatimiseen.

Lisäohjeita löytyy pythonin kotisivuilta:\nl http://www.python.org.


> python
Python 2.5.1 (r251:54863, May  2 2007, 16:56:35) 
[GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 1+2
3
>>> import math
>>> math.sqrt(5)
2.2360679774997898
>>> quit()
>


12 Tietoliikenne

Jokaisella koneella on yksikäsitteinen IP-numero, joka koostuu neljästä kentästä. Kunkin kentän arvo voi olla välillä 0--255.

IP-numerossa merkitsevin kenttä on ensimmäisenä. Kutakin numeroa vastaa symbolinen nimi, jossa merkitsevin kenttä on viimeisenä.

Nimipalvelin (DNS) pitää yllä luetteloa lähiympäristön koneista ja niiden osoitteista. Jos tarvitaan tietoa kaukaisemmista koneista, nimipalvelin lähettää kyselyn eteenpäin.

Numeroiden ja nimien välisen yhteyden näkee komennolla host:

   host unix.utu.fi
   unix.utu.fi has address 130.232.203.196

   host phobos
   phobos.astro.utu.fi has address 130.232.73.18

   host 130.232.73.18
   130.232.73.18.in-arpa domain name pointer phobos.astro.utu.fi

Verkossa olevat tietokoneet voivat saada käynnistyessään oman IP-osoitteensa ja muut verkkoyhteyksiin tarvittavat tiedot DHCP-palvelimelta (Dynamic Host Configuration Protocol).

Vielä joitakin vuosia sitten käytettyjä tietoliikenneohjelmia olivat telnet (pääteyhteys) ja ftp (tiedostojen siirtoon). Näissä liikennettä ei salakirjoiteta, joten mikä tahansa verkossa oleva kone saattaa seurata sitä. Näiden käyttö on nykyisin yleensä estetty.

Suojatussa yhteydessä tieto salakirjoitetaan. Pääteyhteyteen on ohjelma ssh (secure shell) ja tiedostojen siirtoon scp.

Sekä ssh että scp kysyvät etäkoneen salasanan. Jos yhteyttä käytetään usein, se voidaan myös määritellä niin, ettei salasanaa tarvitse antaa. Määrittely on tehtävä erikseen kaikille eri koneiden välisille yhteyksille.

ssh

Jos etäkoneessa on sama käyttäjätunnus, ssh-yhteys saadaan komennolla

ssh {\it etäkone}

esimerkiksi

  ssh unix.utu.fi

Optiolla -l voidaan antaa käyttäjätunnus:

  ssh -l hankar unix.utu.fi

Pääteyhteys lopetetaan komennolla exit (tai ctrl-D:llä).

scp

Komento scp toimii samaan tapaan kuin cp, mutta tiedostoja siirretään eri koneiden välillä.

Etäkoneen nimen perään kirjoitetaan kaksoispiste:

  scp *.txt unix.utu.fi:

Tämä kopioi koneeseen unix.utu.fi kaikki nykyhakemiston tiedostot, joiden nimi päättyy merkkeihin .txt. Tämä muoto edellyttää, että käyttäjällä on sama käyttäjätunnus kummassakin koneessa. Kopiointi toiselle käyttäjätunnukselle käy seuraavasti:

  scp *.txt hankar@unix.utu.fi:

Koneen nimen perässä voidaan antaa myös hakemisto, johon tiedosto(t) kopioidaan:

  scp *.txt unix.utu.fi:tekstit/

Kopiointi etäkoneesta omalle koneelle käy samaan tapaan:

  scp unix.utu.fi:*.txt .
  scp unix.utu.fi:tekstit/*.txt .

ftp

Vanha tiedostojen siirto-ohjelma ftp (file transfer protocol) on vielä jonkin verran käytössä anonyymi-ftp-palveluissa.

Anonyymi-ftp:llä siirretään julkisesti saatavilla olevia tiedostoja. Varsinaista salasanaa ei tarvita, joten tietoturvaongelmaa ei ole. Palvelin voi vaatia ilmoittamaan salasanaksi oman sähköpostiosoitteen.

Tietoturva

Otetaan yhteys koneesta A koneeseen B, siitä koneeseen C jne. Jos yksikin yhteyksistä on suojaamaton (kryptaamaton), muiden yhteyksien suojauksilla ei ole merkitystä.

Salasanan on oltava riittävän pitkä; sen olisi hyvä sisältää isoja ja pieniä kirjaimia, numeroita ja erikoismerkkejä sekaisin (ei mielellään skandeja, koska niiden konversiot voivat aiheuttaa ongelmia). Kirjoita salasanat paperille; siitä on tuskin koskaan haittaa toisin kuin liian helposta salasanasta.

Yliopiston sähköpostijärjestelmä suodattaa suurimman osan roskapostista pois. Jäljelle jäävistä osa on merkitty mahdollisesti roskaksi. Jos näissä on liitetiedostoja, niitä ei pidä avata, ellei ole ehdottoman varma, että viesti on tulkittu väärin roskaksi.

Epäilyttävät postit on tuhottava. Missään tapauksessa niihin ei saa vastata.

Tyypillisiä huijausyrityksiä ovat:

Jos hoidat pankkiasioita, teet tilauksia tms. yleisessä käytössä olevalla tietokoneella, verkkoselaimen välimuisti (cache) on tyhjennettävä, ettei joku sivullinen pääse tietoihin käsiksi.


13 Kuvien käsittelystä

Kuvaformaatteja

FITS (Flexible Image Transfer System) Tähtitieteessä yleisin kuvien talletusformaatti. CCD-kameroiden ohjausohjelmat osaavat yleensä tallettaa kuvan FITS-muodossa. Tiedoston alussa on selväkielisiä kommenttirivejä ja sen jälkeen itse pikselikuva. Kommenteissa määritellään mm.\ kuvan geometria. Kuvien lukemista ja kirjoittamista varten on valmiita aliohjelmakirjastoja (cfitsio). Kotisivu
http://heasarc.gsfc.nasa.gov/docs/heasarc/fits.html

ps (PostScript) Tekstiä, oikeastaan ohjelmointikieli, helppo siirtää. Sopii hyvin vektorigrafiikkaan, huonommin pikselikuviin. Kielen kehittyneiden rakenteiden avulla monimutkaisiakin kuvia voi toteuttaa hyvin lyhyesti. Esitystapa on riippumaton tulostuslaitteen resoluutiosta. Kuvan rasterointi on tulostimen tehtävä. Adoben lisenssi nostaa PS-tulostimien hintaa. Monet piirto-ohjelmat osaavat tallettaa kuvan PS-muodossa, mutta tekevät usein törkeän huonoa ja tilaa vievää koodia.

eps (Encapsulated PostScript) PostScript-kuva tietyillä rajoituksilla. EPS-kuva on tarkoitettu upotettavaksi toiseen kuvaan, joten siinä ei saa käyttää tiettyjä komentoja. Valitettavasti monet piirto-ohjelmat eivät noudata sääntöjä, jolloin kuvien käytön kanssa on ongelmia.

tif (Tagged Image format) Pikselikuva, ei pakattu, tiedostot isoja.

gif (CompuServe graphics interchange format) Pakattu kuva, ei hukkaa informaatiota.

jpg (Joint Photographic Experts Group file interchange format) Informaatiota hukkaava pakattu kuva. Tarkkuus kärsii hieman, mutta tilansäästö on huomattava.

mpg (Motion Picture Experts Group file interchange format) Liikkuvan kuvan pakkausmenetelmä. Tietyn pikselin väri ei yleensä muutu kahden kuvan välillä, joten koko kuvan sijasta talletetaan vain niissä tapahtuvat muutokset.

pdf (Portable Document Format) Lähinnä julkaisualan uusi standardi. Tiedosto ASCII-tekstiä, joten helposti siirrettävissä.

Ohjelmia

Seuraavassa on lueteltu joitakin Linuxin mukana tulevia tai siihen saatavi hyödyllisiä ohjelmia, joilla kuvia voi tutkia tai käsitellä.

convert muuntaa useita kymmeniä eri kuvaformaattia toisikseen. Ohjelmalla runsaasti erilaisia valitsimia, ks. convert -help. Kuvan tyyppi tunnistetaan yleensä nimen perusteella.

dvipdf on ohjelma, joka muuntaa TeXin dvi-tiedostoja PDF-formaattiin.

xpdf on ohjelma, jolla voi katsella PDF-tiedostoja.

gv eli ghostview. Tällä ohjelmalla voi katsella PS- ja EPS-tiedostoja. Esimerkiksi TeXillä tai LaTeXilla tehdyt PS-tiedostot kannattaa tarkistaa gv:llä ennen kuin lähettää ne tulostimelle. Ohjelmalla voi myös zoomata kuvan yksityiskohtiin.

xv-ohjelmalla voi katsella useimpien eri formaattien kuvia. Ohjelma tuli aikaisemmin Linuxin mukana, mutta sittemmin se muuttui kaupalliseksi tuotteeksi, joten uudemmissa versioissa sitä ei enää ole.

eog on ohjelma, jolla uudemmissa Linuxeissa voi katsella eri formaattien kuvia. Ikävä kyllä ohjelma on paljon primitiivisempi kuin xv.

gimp on kuvankäsittelyohjelma. Ohjelmasta on useita eri versioita, joiden käyttöliittymät valitettavasti kovin erilaisia. Ohjelmalla voi tehdä suunnilleen saman kuin Adoben Photoshopillakin. Kotisivu
http://www.gimp.org/.

dcraw on ohjelma, joka osaa konvertoida useimpien digitaalikameroiden raakakuvia johonkin yleiseen formaattiin (kuten tif). Kotisivu
http://cybercom.net/~dcoffin/dcraw/.


14 Varusohjelmia

Iraf Erityisesti tähtitieteellisten havaintojen (kuten ccd-kuvien) käsittelyyn kehitetty ohjelmisto. Tehokas työkalu, mutta käyttöliittymä perustuu ikivanhoihin päätetyyppeihin. Kotisivu

Pyraf Edellisen ympärille rakennettu käyttäjäystävällisempi Python-käyttöliittymä.

Midas ESOn Irafia vastaava ohjelmisto. Tämänkin alkuperäinen käyttöliittymä on neopaleoliittiselta kaudelta.

PyMidas Edellisen päälle kehitetty Python-käyttöliittymä, joka on täysin suomalaista tuotantoa.

Matlab Matrix laboratory, erityisesti matriisien käsittelyyn kehitetty ohjelmisto, tehokas, laaja, monipuolinen. Esimerkiksi yhtälöryhmän Ax=b ratkaisu:

     A = [ 1 2 3 ; 2 1 1 ; 1 0 1 ] ;
     b = [ 1 2 2 ]' ;
     x = A\b

      x  =
 
     !   1.25 !
     ! - 1.25 !
     !   0.75 !

Jos yhtälöitä on enemmän kuin tuntemattomia, saadaan automaattisesti pienimmän neliösumman sovitus.

Matlabin komennot voidaan kirjoittaa tiedostoiksi. Kieli on melko samantapaista kuin Fortran 90.

Matlab on kaupallinen ja melko kallis tuote. Vastaavanlaisia ilmaisia ohjelmistoja ovat esimerkiksi octave ja scilab.

IDL Erityisesti (tähti)tieteellisen datan käsittelyyn tarkoitettu ohjelma, jonka ohjelmointikieli on samantapaista kuin F90:n ja Matlabin kieli, ehkä hiukan kömpelömpää. Myös kaupallinen tuote, mutta saatavana on myös suppeampi vastaava GNU-ohjelma GDL.

Macsyma Symbolisen matematiikan ohjelmistojen lippulaiva. Saatavana nyt myös maxima-nimisenä ilmaisversiona. Tällä voit laskea vaikka funktion Taylorin sarjan termit, jotka ovat korkeintaan potenssia 10:

> maxima
...

(%i1) taylor(sin(x),x,0,10);
                          3    5      7       9
                         x    x      x       x
(%o1)/T/             x - -- + --- - ---- + ------ + . . .
                         6    120   5040   362880
(%i2) 

Maple Toinen varsin hyvä symbolisen matematiikan ohjelmisto. Kaupallinen tuote, mutta hieman rajoitettu opiskelijaversio saatavana kohtuulliseen hintaan.

Mathematica Stephen Wolframin kehittämä laskentaympäristö, johon kuuluu symbolista matematiikkaa ja grafiikkaa. Notaatio on turhan hankala.

Openoffice Microshi.. eikun ..softin Office-paketin vastine Linux-ympäristössä. Osaa käsitellä Wordin doc-tiedostoja, excel-taulukoita ja powerpoint-esityksiä. Eikä maksa mitään.