From aronsson Tue Jan 26 10:41 EET 1988 Received: by hupu.HUT.FI (5.57/ida/5.17) id AA12304; Tue, 26 Jan 88 10:40:47 +0200 Date: Tue, 26 Jan 88 10:40:47 +0200 Message-Id: <8801260840.AA12304@hupu.HUT.FI> From: tkotyot@hupu.HUT.FI (Tko-76.163 Tietojenk{sittelyopin ty|t) Sender: aronsson@hupu (Hannu Aronsson) Subject: Kurssin Tik-76.163 kolmas harjoitysty|aihe Apparently-To: jutila ty|aihe numero: 5 Vastaanottaja: Jutila Juhana Postiosoite: jutila Tik-76.163 Tietojenk{sittelyopin ty|t Toinen shell-ty| Harjoitusty|ohje: Harjoitusty| tulee suorittaa normaaleja Unix komentoja ja Bourne Shelli{ (/bin/sh, sh(1)) k{ytt{en Unix k{ytt|j{rjestelm{n alaisuudessa. Omien C-ohjelmien tai manuaalista l|ytym{tt|mien komentojen k{ytt| on kielletty. Manuaalina k{ytet{{n System V Release 2 tai BSD 4.3 "User Reference Manual":ia. Useimmissa harjoitust|iss{ kannattaa tutustua varsin tarkoin sed(1) editoriin, sh(1) shellin komentoihin ja toimintoihin ja erikoisesti awk(1) ohjelmointikieleen. Prujuissa on tietoa awk(1):n k{yt|st{, lis{{ awkista ja muusta tietoa l|ytyy manuaaleista. Ty| palautetaan 27.2.1988 menness{ elektronisella maililla seuraavalla tavalla: Ne jotka tekev{t ty|ns{ Niksulan Altos-koneissa (tupu, hupu, lupu), l{hett{v{t tkotyot@hupu.hut.fi tunnukselle postin, jossa on seuraavat tiedot seuraavassa muodossa: ---- Tik-76.163 Toisen shell-ty|n palautus: Ty|n numero ja aihe: 12 awkkip|tsi ([l{ siis laita 1. ohjelma. Vaan ohjelma numero xx) Tekij{n nimi: Teemu Teekkari Tekij{n mail-osoite: teekkari@tietokone Tekij{n ososto&vsk: Ti N Tekij{n opintokirja: 12345z Ty| on hakemistossa: /hupu/usr2/users/teekkari/tko-harjoitus Palautus p{iv{m{{r{: 27.2.1988 (Muuta: jos ty| on viimevuotisesta aiheesta, muista mainita se selv{sti t{ss{ kohtaa!) ----- Kyseisess{ hakemistossa tulee erillisiss{ tiedostoissa olla seuraavat asiat: tiedostonimi mit{ t{ss{ tiedostossa tulee olla etusivu Etusivu, jolla on yll{mainitut tiedot HUOM! k{sittelyn helpottamiseksi laita t{m{ tiedosto yll{mainittuun muotoon tehtava teht{v{n aihe ratkaisu ohjelman ratkaisun kuvaus manuaali manuaalisivu (kirjoita itse, {l{ kopioi mist{{n) ohjelma ohjelman scripti (nimen{ teht{v{n nimi tms) Jos haluat, voit liitt{{ mukaan my|s arvioinnin ty|n vaikeudesta ("arviointi"-tiedosto). Mukana voi olla my|s muita tarpeellisia tiedostoja, mutta muista mainita ne, ja niiden merkitys selv{sti. Huomautus: Yleens{ teht{ess{ ohjelmia, ohjelmistoja ja muuta mukavaa ja jaettaessa sit{ muille on tapana laittaa mukaan seuraavanlaisia tiedostoja; README ja MANIFEST : * README tiedostossa on tarkoitus antaa yleinen kuvaus (suppea) siit{, mist{ ko. hakemistossa olevassa tauhkassa on kysymys. Jokaisessa hakemistossa tulisi olla yksi README tiedosto. * MANIFEST tiedostossa on listattu kaikki t{h{n hakemistoon kuuluvat tiedostot. T{m{ on tarpeellinen, jotta voit olla varma, onko sinulla tarvittavat tiedostot. Tiedostot kirjoitetaan isolla, jotta ne n{kyv{t ensimm{isin{ listattaessa hakemistoa. Muissa koneissa ty|ns{ tekev{t palauttavat ty|ns{ kokonaan yhten{ osana postina tunnukselle tkotyot@hupu.hut.fi, tiedoston tulee sis{lt{{ edell{mainitut osat, ja se on luotava shar -ohjelmalla (katso man shar) jotta se pystyt{{n purkamaan takaisin erillisiksi tiedostoiksi. Viestin alussa tulee olla yll{olevan esimerkin mukaiset tiedot. Katso, ettei tiedostoissasi ole mit{{n sinne kuulumattomia kontrolli tms. (esim. msdosin ^Z tiedoston lopussa tms) merkkej{, jotka saattavat sotkea postiohjelmien toimintaa, jolloin ty|si ei v{ltt{m{tt{ tule perille kunnolla! ----- Toisen shell ty|si aihe on seuraava ----- Harjoitusty|aihe 5: Tiedostodokumentaatio tietokanta ==================================================== Taustaa Er{s Unixin (hyv{ksi havaittu) piirre on se, ett{ k{ytt|j{rjestelm{ ei mitenk{{n erottele erilaisia tiedostoja toisistaan. K{ytt|j{rjestelm{ ei my|sk{{n tarjoa mink{{nlaisia mahdollisuuksia kertoa jossain t{llaista tiedostoihin liittyv{{ ylim{{r{ist{ tietoa. System V:n rajoittettu tiedoston nimen pituus (14 merkki{) ei my|sk{{n tarjoa kovin paljon t{llaista informaatiota varten. Harjoitusty| Harjoitusty|n aiheena on tehd{ yksinkertainen tietokanta, johon voi tallettaa tietoa tiedostoista. Tietokanta on aina hakemistokohtainen, ja se voidaan tallettaa esim tiedostoon ".file_info". Tietokantaan tulee voida tallettaa tiedostokohtaisesti n. yksi rivi (n. 65 merkki{) tietoa. Tietokannan k{sittely{ varten tulee tehd{ seuraavat toiminnot: (toiminnot voivat olla toteutettu joko samassa ohjelmassa tai usealla erillisell{ pienell{ ohjelmalla): a) tietokannan perustaminen Tietokantaa perustettaessa ohjelma kysyy jokaisesta hakemistossa olevasta tiedostosta tietokantaan talletettavan kommenttitiedon b) tietokannan p{ivitys Tietokantaa p{ivitett{ess{ tulee kysell{ kaikista uusista hakemistoon tulleista tiedostoista tiedot, sek{ lis{ksi antaa k{ytt{j{lle mahdollisuus p{ivitt{{ tiedot niist{ tiedostoista, jotka ovat muuttuneet sen j{lkeen, kun tietokantaa on viimeksi p{ivitetty. c) tiedoston dokumentaation vaihto T{m{ kannattaa olla erillinen komento, jolle argumenteiksi annetaan niiden tiedostojen nimet, joiden dokumentaatiota halutaan muuttaa. d) tiedoston poisto Harjoitusty|ss{ tulee tehd{ komento (joka voidaan nimet{ esim. rm:ksi), joka poistaa tiedoston ja sen dokumentaation tietokannasta. e) tiedoston nimen vaihto Samoin tulee tehd{ komento, joka tiedoston nime{ vaihdettaessa identifioi tietokannassa olevan kommenttitiedon uuden nimen kanssa ja optionaalisesti antaa k{ytt{j{lle mahdollisuuden muuttaa samalla tiedoston dokumentaatiota. Jos tiedosto siirret{{n johonkin muuhun hakemistoon tulee luonnollisesti sen dokumentaatio siirt{{ ao. hakemiston tietokantaan, jos sellainen on olemassa. Mik{li jokin tiedosto siirret{{n hakemistosta, jossa ei ole tietokantaa hakemistoon, jossa sellainen on, pyydet{{n k{ytt{j{{ antamaan tietokantaan kommenttirivi. (T{m{ piirre tulee tietysti olla optionaalinen), f) Tietojen kysely tiedostoista T{m{n voi toteuttaa esim. tekem{ll{ ls nimell{ uuden scriptin, joka annettaessa sopiva optio, esim. -v (verbose), joka tulostaa my|s tiedostokohtaiset kommenttirivit, ja muuten ajaa ls-komennon annetuilla optioilla. Vihjeit{: Tiedot kannattanee tallettaa tiedostoon siten, ett{ jokaista tiedostoa kohti on yksi rivi tietoa, ensin tiedoston nimi ja sitten kommenttitieto. Tietokannan k{sittely yleisesti lienee helpointa awk:illa. Tietokannan p{ivitykseen er{s mahdollisuus on generoida ed(1) tai sed(1) komentoscriptej{, jotka tietokannalle ajettuna saavat aikaan halutun tuloksen. Kannattaa mietti{ sit{, onko luultavaa tai mahdollista, ett{ useamman ihmiset saman aikaisesti haluavat muuttaa tietokantaa, ja jos n{in on, tietokanta varmaankin tulee jotenkin lukita muutoksen ajaksi. Helpoin tapa tehd{ shell scriptist{ lukko on linkata jokin teidosto erilliseksi lukkotiedostoksi (esim. ln -s /dev/null LOCK), jonka j{lkeen toiset vastaavanlaiset komennot ep{onnistuvat kunnes lukkolinkki on poistettu. .file_info tiedosto tulee lukita muutoksien ajaksi, ettei se mene sekaisin, jos useat henkil|t muuttavat tietoja yht{aikaisesti. (jos n{et t{m{n rivin, koko maili tuli perille :-)