Beadandó feladatok - UNIX

Olvassa el figyelmesen a feladatok előtt levő (itt következő) tudnivalókat! (Hosszú, mert igyekszem mindent leírni, amit meg szoktak kérdezni, ha nincs leírva.)

A kiadott feladatok közül legalább kettőnek a megoldását kell beadni.

Legalább egyet legkésőbb november 22-én, összesen legalább kettőt, legkésőbb november 30-án. Más szavakkal (a félreértések ellen): november 30-al bezárólag összesen legalább kettőt, ebből legalább egyet november 22-ig.

A feladatok legkésőbb október közepén ki lesznek írva.

A beadás szabályai:

A megoldásokat tartalmazó fájlokat levél mellékleteként ("pine" Attchment) küldje el az alul is megadott progkor@fi.inf.elte.hu címre. (Vigyázat, a "fi" gépről van szó! Erre a címre a megoldásokat küldje, olyan levelet, amire "választ" vár, "csa@inf.elte.hu"-nak küldjön.)
Csak a panda-ról, pine-al küldött levelekben fogadok el Unix beadandókat!
Lehetőleg kettőnél nem több részletben küldje be a megoldásokat. (Ugyanazon feladat többszöri küldése esetén csak az utolsó küldés lesz feldolgozva.) A levél SUBJECT-je legyen "Unix-beadando".

A fájlok neve kezdődjön a unix szóval (csupa kis betűkkel!). Ezt minden feladat esetén a feladat sorszáma (1, 2, ...) kövesse. Ha egy feladat megoldása további fájlokból áll, azok neve kezdődjön ugyanúgy, mint a megoldás "fő"-fájljáé, és kapjon valami "kiterjesztést"-t. Pl. a 3. feladat megoldása a unix3 fájlba kerüljön, s ha további két fájl tartozik a megoldáshoz, akkor ezek neve lehet pl. unix3.awkpar ill. unix3.sedpar. (A szabálytalan neveket (pl. UNIX1, Unix1, unix01, unix1.sh, bead1 (unix1 helyett), unix1teszt) kénytelen vagyok átnevezni a feladatok értékelés előtt (ha nem veszem észre, értékelve sem lesznek).) Minden szabálytalan fájlnév -1 pontot ad a zh eredményéhez!

Nem szabad tesztadatokat és teszt eredményeket beküldeni! A scripteket külön-külön Attachment-ként, a megfelelő néven küldje be, (egy levélben akárhány fájlt). (Vagyis ne küldjön csomagolt (tar, zip, gzip, stb) fájlt!)

Csak igen indokolt esetben álljon a megoldás több fájlból. Írjon "alscript" helyett inkább function-t! Mindenképp tesztelje és biztosítsa (alscript esetén), hogy akkor is működik a megoldása, ha az egy feladat megoldására szolgáló scriptek azonos directoryban vannak, de az nem programkönyvtár, és (a script futtatásakor) nem az a munkadirectory.

Tehát a levél maga soha ne tartalmazza a megoldást ! (Kommentárokat se, a levelet el sem fogom olvasni, tehát legyen teljesen üres! Ennek megfelelően, minden, a megoldásra vonatkozó kommentárt a megoldást tartalmazó fájlokba tegyen, ill. a -help-be írja - ld. alább.)

Próbálja ki a panda-n és a pandora-n a beadott feladatokat akkor is, ha nem azokon készíti. Azokon kell működni a scripteknek. Az ékezetes betűk kezelésével kapcsolatos eltérő beállítások miatt inkább a panda-t ajánlom a tesztelésre. (Külön lapon talál az ékezetes betűk kezelésével kapcsolatos leírást. Olvassa el, ha ezzel kapcsolatos gondja akad.)

Fontos, mindegyik Unix beadandóra vonatkozó kötelező részfeladat: Ha a parancsfájlt a "-help" (nem --help!) opcióval hívják meg, akkor nem a feladatát kell ellátnia, hanem a standard outputra ki kell írnia minden fontos, a scriptre vonatkozó információt, de legalább az alábbiakat:

  • A script rövid leírását, beleértve a paraméterezését is.
  • Annak a leírását, hogy esetleges nehezítéseket tud-e a script (ha van ilyen a feladatban).
  • Azt, amit a konkrét feladat ezen felül kér (ha kér valamit).

Ha a feladat nem ír elő mást, akkor sikeres normál végrehajtás vagy "-help" esetén 0, hibaesetekben pedig 1 legyen a parancsfájl státusz kimenete, az esetleges hibaüzenetek a standard error-ra kerüljenek, és minden hibaüzenet sor végén felkiáltójel (!) legyen!

Ha egy parancsfájl ideiglenes fájlokat (más szóval munkafájlokat) vagy directorykat hoz létre, akkor:

  • A /tmp directoryba (ne a "./tmp"-be!) tegye ezeket!
  • Ha az alábbiak egyikét választja, akkor a script több példánya egyidőben is tud dolgozni.
    • A fájl/directory neve kezdődjön így: /tmp/$USER.$$
    • Használja az mktemp parancsot a "véletlen" nevű fájl/directory ellenőrzött létrehozására.
        TMP1=`mktemp /tmp/$USER.XXXXXXXX`; ... >"$TMP1"
      (Directoryhoz kell a "-d" opció.)
  • A script törölje maga után az ideiglenes fájlokat/directorykat!

Tesztfájl neve ne legyen "beégetve" a scriptbe.

A script csak azt írja ki, amit a feladat kér! Tehát ne legyen benne (ha nem kéri a feladat) képernyő törlés ("clear" parancs), a script ne írjon kéretlen kommentárokat (pl. a script saját magának vagy a készítőjének a "reklámozása", kommentárok, üres sorok, ...). A Unix parancsok sem tesznek ilyet.

Ha a feladat nem kéri, ne jelenjenek meg semmilyen esetben Unix parancsok hibaüzenetei a képernyőn!

Csak az itt leírtaknak megfelelő megoldást fogadom el. (Ezt tudom Unix scripttel feldolgozni.)

A tananyagban nem szereplő, Unix alatt (is) használható programozási eszközökkel (pl. c, perl, Pascal) megvalósított megoldásokat nem fogadunk el.

Shell scriptet kell írni, vagyis a "/bin/bash script_neve" paranccsal végrehajtható parancsfájlt. Tehát ha pl. awk programot ír, akkor az awk-t direkt meg kell hívnia a shell scriptnek, a tesztelő program nem fogja jól futtatni a "#!/bin/awk" kezdetű awk scripteket.

A feladatokat mindenkinek egyedül kell megoldania, semmiféle "csapatmunka" nem megengedett !
A puskázás gyanúját is kerülje ! (Puskázásból több baja származhat a beadottakkal kapcsolatban, mint akármi másból.)

Nem működő beadott annyival rosszabb a be se adottnál, hogy az azt kiértékelőt feleslegesen dolgoztatja. A nem tesztelt beadott nem számít beadottnak, az utólagos javítására nincs lehetőség! (Annyit sem ér, mint ha be se küldte volna.)

Az elküldéskor a pine-ba "Cc:"-ként írja be a saját címét, így hamar ellenőrízheti, hogy mit küldött.

Megjegyzések:

  • Azért érdemes kettőnél több megoldást beadni, mert így akkor is marad két jó, ha az értékelés valamelyiket rossznak találja. Másrészt "féljegyre" megírt ZH eredményének megajánlott gyakjeggyé kerekítését a nagyon szép vagy kettőnél több jó beadott fölfele irányítja.
  • Ha valaki másolatot (azaz közös terméket) küld be, "csalt" megjegyzéses elégtelent szerez, még akkor is, ha emellett önálló(nak látszó) megoldásokat is küld. (Attól is függetlenül, hogy ő volt-e a közös beadott szerzője.)
  • "Másolat"-nak minősül az interneten (véletlenül, vagy nem véletlenül) megtalálhatóval nagyban egyező megoldás is!
  • Ne hagyja a határidő előtti órákra vagy napra a munkát. Mindenkinek a saját rizikója, ha ezt a kockázatot mégis vállalja (vagyis pl. párnapos gépkiesés miatt nincs határidő hosszabbítás).

Tesztadatok:

Töltse le a teszt.tgz fájlt, és csomagolja ki:
    tar -xvzf teszt.tgz
A pand(or)a-n egyszerűbb így megszerezni:
    tar -xvzf /h/public/c/csa/public_html/200506.1/teszt.tgz

A kapott TESZT directory teszt1, teszt2, ... aldirectoryjaiban a következők vannak:

  • README fájl. Olvassa el, használja fel az információit.
  • Tesztelő scriptek.
  • Olyan aldirectoryk, amikben tesztadatok ill. teszteredmények vannak.

Amelyik script nem jut túl sikerrel ezeken a tesztadatokon és a "-help" teszten, azt "teszteletlennek" minősítjük, ami a beadott megoldás "diszkvalifikálása". ("Teszteletlennek" minősítjük még az olyan megoldást, amibe a kiadott tesztadatokra történő helyes működés be van drótozva. Más szóval: ami szemmel láthatóan csak azokra működik.)

Korábbi, megoldott beadottak:

Másik lapon egy korábbi félév beadandóira talál (akkor elfogadott) megoldásokat.

A beadás visszaigazolása:

A beadást követő egy héten belül (az utolsó két héten egy-két napon belül) felkerül a neve és a beadott feladatainak a directory listája egy másik html-lapra. Ha ez nem történik meg, reklamáljon, és küldje újra a megoldásokat.


A feladatok.

1. feladat.

2. feladat.

3. feladat.

4. feladat.

5. feladat (nehéz).

6. feladat.

7. feladat.

8. feladat.

9. feladat (nehéz).


Csizmazia Albert progkor@fi.inf.elte.hu