[Orgyak] pótzh, csalók
kitlei at caesar.elte.hu
kitlei at caesar.elte.hu
Tue May 22 11:58:48 CEST 2012
Sziasztok!
Csatoltam négy feladat szövegét, ebből a 3. még csak koncepció. Várom
a lelkes hozzászólásokat. Ha jobb feladatod van, Artyom, küldd azt is.
Ezt a ZH-t meghajtom én az én beadórendszeremmel (AutoBead). Abban
másodpercre visszakövethető a másolás, és triviálisan támogatja az
alábbit is...
http://theory.stanford.edu/~aiken/moss/
A másolt kódrészleteket ezzel igen könnyen ki lehet szűrni. Balu,
beküldenéd az összes megoldást bele az EBR-ből, aztán pedig ide a
linket, amin mutatja az egyezéseket?
Robi
> Én elkezdtem írni egy feladatot, majd ha kész van beküldöm a listára!
>
> 2012-05-22 10:26 keltezéssel, Zaicsek Balázs írta:
>> Hi all!
>>
>> Mi van a pótZH-val? Írja valaki? Lesz EBR? Ha kell, összerakom,
>> már sokkal egyszerűbb, mert már csak az új feladatot kell
>> feltölteni. Szóval, mi van a pótZH-val?
>>
>> Balu
>> _______________________________________________
>> Orgyak mailing list
>> Orgyak at plc.inf.elte.hu
>> https://plc.inf.elte.hu/mailman/listinfo/orgyak
>
> _______________________________________________
> Orgyak mailing list
> Orgyak at plc.inf.elte.hu
> https://plc.inf.elte.hu/mailman/listinfo/orgyak
>
-------------- next part --------------
KĂŠszĂtsd el a kĂśvetkezĹ jĂĄtĂŠkot.
A jĂĄtĂŠk "tĂĄblĂĄja" egy olyan n elemĹą vektor,
amely az [1..n] intervallum elemeit tartalmazza pontosan egyszer,
azonban nem feltĂŠtlenĂźl sorrendben; itt n parancssori paramĂŠter.
A fĹprogram elindĂt egy szervert, amelynek portjĂĄt parancssori paramĂŠterkĂŠnt kapja meg.
A fĹprogram vĂĄr kĂŠt kliensre.
Mindegyik jĂĄtĂŠkos elĹszĂśr egy sorban kĂśzli a sajĂĄt nevĂŠt,
majd felvĂĄltva kĂśvetkeznek lĂŠpĂŠsre.
A jĂĄtĂŠkosok egy lĂŠpĂŠsben megcserĂŠlhetik a vektor kĂŠt pozĂciĂłjĂĄn talĂĄlhatĂł ĂŠrtĂŠkeket.
A jĂĄtĂŠk akkor ĂŠr vĂŠget, amikor a vektorban az ĂŠrtĂŠkek sorrendbe kerĂźlnek.
A jĂĄtĂŠkos minden lĂŠpĂŠs utĂĄn pontokat kapnak, az alĂĄbbiak kĂśzĂźl vĂŠletlenszerĹąen:
- +1 pont
- a megcserĂŠlt pozĂciĂłk indexĂŠnek kĂźlĂśnbsĂŠge
- annyi pont, ahĂĄny olyan elem talĂĄlhatĂł a vektor megcserĂŠlt pozĂciĂłi kĂśzĂśtt,
amelyek a kĂŠt cserĂŠlt elem ĂŠrtĂŠke kĂśzĂŠ esnek
--------------------------------------------------------------------------------
+1. MentĂŠs/tĂśltĂŠs
BĂĄrmelyik jĂĄtĂŠkos adhassa ki a kĂśvetkezĹ utasĂtĂĄst.
ment FAJLNEV
A rendszer mentse el a jĂĄtĂŠk aktuĂĄlis ĂĄllĂĄsĂĄt FAJLNEV fĂĄjlba.
tolt FAJLNEV
A rendszer tĂśltse vissza a jĂĄtĂŠkĂĄllĂĄst FAJLNEV fĂĄjlbĂłl.
Ezt az utasĂtĂĄst csak a legelsĹ jĂĄtĂŠkos adhatja ki a legelsĹ lĂŠpĂŠskĂŠnt,
ĂŠs csak akkor, ha a jĂĄtĂŠkosok szĂĄma megegyezik a mentĂŠsbelivel.
--------------------------------------------------------------------------------
+1. PĂĄrhuzamossĂĄg
A jĂĄtĂŠkosok egymĂĄssal pĂĄrhuzamosan lĂŠphetnek.
Ha egy jĂĄtĂŠkos megprĂłbĂĄl megcserĂŠlni kĂŠt csĂşcsot,
az nem tĂśrtĂŠnik meg azonnal: a csĂşcsok zĂĄrolĂłdnak.
Ha a kĂśzvetlenĂźl ezutĂĄn beĂŠrkezĹ cserĂŠlĂŠssel
egy mĂĄsik jĂĄtĂŠkos is megprĂłbĂĄl hozzĂĄfĂŠrni valamelyik csĂşcshoz,
akkor az eredeti cserĂŠlĹ jĂĄtĂŠkos kap egy pontot, a lĂŠpĂŠs megtĂśrtĂŠnik,
ĂŠs a csĂşcs hĂĄrom lĂŠpĂŠs erejĂŠig befagy.
Befagyasztott csĂşcs cserĂŠlĂŠse azonnal megtĂśrtĂŠnik,
de a cserĂŠlĹ jĂĄtĂŠkos kĂŠt pontot veszĂt.
A jĂĄtĂŠkosok a "zarolt" utasĂtĂĄssal lekĂŠrheti a zĂĄrolt (ĂŠs befagyasztott) csĂşcsok indexeit.
--------------------------------------------------------------------------------
+1. RMI
A jĂĄtĂŠkosok RMI hĂvĂĄsok segĂtsĂŠgĂŠvel lĂŠphetnek.
A jĂĄtĂŠkba belĂŠpĂŠskor a jĂĄtĂŠkosoknak meg kell adniuk a jelszavukat egy fĂźggvĂŠny meghĂvĂĄsĂĄval;
amĂg mindkĂŠt jĂĄtĂŠkos nem adott meg helyes jelszĂłt, a jĂĄtĂŠk nem kezdĹdhet el.
-------------- next part --------------
KĂŠszĂtsd el a kĂśvetkezĹ rendszert.
Az alapfeladatot Socket vagy RMI felhasznĂĄlĂĄsĂĄval oldhatod meg.
----------------
Alapfeladat.
KĂŠszĂts olyan programot, amely az alĂĄbbi mĂłdon mĹąkĂśdik.
A program indulĂĄskor kĂŠt szervert indĂt el;
a szerverek ismerik egymĂĄs portjĂĄt.
MindkĂŠt szerverhez tartozik egy-egy (ezredmĂĄsodperceket ĂĄbrĂĄzolĂł) Ăłra is,
amelyek azonban nem mĹąkĂśdnek tĂśkĂŠletesen:
10 ezredmĂĄsodpercenkĂŠnt nĂśvelik a szĂĄmlĂĄlĂłjukat 8 ĂŠs 12 kĂśzĂśtti ĂŠrtĂŠkkel.
A szerverek (sajĂĄt ĂłraszĂĄmlĂĄlĂłjuk szerint) 1 ĂŠs 3 mĂĄsodperc kĂśzĂśtti idĹ eltelte utĂĄn
szinkronizĂĄljĂĄk egymĂĄssal ĂłrĂĄikat,
azaz szĂśvegesen kĂźldjĂŠk ĂĄt egymĂĄsnak az ĂłrĂĄik aktuĂĄlis ĂĄllĂĄsĂĄt,
ĂŠs ĂĄllĂtsĂĄk be a sajĂĄt ĂłrĂĄjukat a nagyobbik ĂŠrtĂŠkre.
A program kimenete mutassa, hogy melyik ĂłrĂĄt mennyivel kellett ĂĄtĂĄllĂtani.
---------------------------------
+1. KĂŠszĂtsd el a feladat megoldĂĄsĂĄt a mĂĄsik technolĂłgiĂĄval: Socket <-> RMI.
+1. Legyen tĂśbb Ăłraszerver is, ĂŠs ezek vĂŠletlenszerĹąen vĂĄlasszĂĄk ki,
hogy melyik mĂĄsik Ăłraszerverrel szinkronizĂĄlnak.
Legyen tovĂĄbbĂĄ egy kĂśzponti szerver,
amelynek egyszerĹą szĂśveges Ăźzenet kĂźldĂŠsĂŠvel
hozzĂĄ lehet adni, illetve el lehet tĂĄvolĂtani egy Ăłraszervert.
+1. Ennek a feladatnak a megoldĂĄsĂĄhoz el kell kĂŠszĂteni az elĹzĹt.
Minden szerver tartalmazzon egy logikai vĂĄltozĂłt,
amely azt Ărja le, hogy szeretne-e vezetĹ lenni (errĹl bĹvebben lejjebb).
A vĂĄltozĂł tartalmĂĄt vĂŠletlenszerĹą idĹkĂśzĂśnkĂŠnt ĂĄllĂtsĂĄk ĂĄt a szerverek.
A szervereknek legyen tovĂĄbbĂĄ egy azonosĂtĂłja, egy egĂŠsz szĂĄm,
ami kĂźlĂśnbĂśzik a tĂśbbi szerver azonosĂtĂłjĂĄtĂłl.
Az azonosĂtĂł minden mĂĄsik szerver szĂĄmĂĄra ismert.
SzintĂŠn vĂŠletlenszerĹą idĹkĂśzĂśnkĂŠnt a szerverek dĂśntsenek Ăşgy,
hogy vezetĹt szeretnĂŠnek vĂĄlasztani. Ezt a kĂśvetkezĹkĂŠppen mĹąvelik.
A szerver megszĂłlĂt minden nĂĄla nagyobb azonosĂtĂłjĂş szervert
azonosĂtĂł szerint nĂśvekvĹ sorrendben.
A megszĂłlĂtott szerver vĂĄlaszol a sajĂĄt belsĹ ĂĄllapota szerint,
ĂŠs ha Ĺ szeretne vezetĹ lenni,
akkor hasonlĂłan szĂłlĂtja meg a nĂĄla nagyobb azonosĂtĂłjĂş szervereket.
Az a szerver lesz a vezetĹ, aki senkitĹl sem kap igenlĹ vĂĄlaszt a kĂŠrdĂŠsre.
A vezetĹ minden mĂĄsik szervernek kĂźld egy Ăźzenetet,
amelyben kihirdeti vezetĹi voltĂĄt.
A vezetĹi Ăźzenet fogadĂĄsĂĄnak tĂŠnyĂŠt a szerverek kiĂrjĂĄk a sztenderd kimenetĂźkre.
-------------- next part --------------
KĂŠszĂts egyszerĹą webszervert az alĂĄbbiak alapjĂĄn.
A program indulĂĄskor elindĂt egy szervert a parancssorban megadott paramĂŠterĹą porton.
EzutĂĄn a szerver vĂĄrakozik egy kapcsolatra.
A bejĂśvĹ kliens szĂśvegesen kĂźld Ăźzeneteket az alĂĄbbi formĂĄtumban.
Az elsĹ sor tartalma a kĂśvetkezĹ (a sor eleji szĂłkĂśzĂśk nĂŠlkĂźl):
GET <lekĂŠrt-oldal-cĂme> HTTP/1.1
ahol <lekĂŠrt-oldal-cĂme> helyĂŠn tetszĹleges szĂł ĂĄllhat, pl.
GET / HTTP/1.1
A kliens kĂźldhet tovĂĄbbi nem-Ăźres sorokat, amelyek formĂĄtuma a kĂśvetkezĹ:
<mezĹ-neve>: <mezĹ-tartalma>
PĂŠldĂĄul:
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:15.0) Gecko/15.0 Firefox/15.0a1
Ebben a pĂŠldĂĄban a mezĹ neve "User-Agent".
A kliens ĂźzenetĂŠnek a vĂŠgĂŠt az jelzi, ha egy Ăźres sort kĂźld.
A szerver kĂźldjĂśn olyan szintĂŠn szĂśveges vĂĄlaszt, amely a kĂśvetkezĹkĂŠppen nĂŠz ki.
Az Ăźzenet elsĹ sora legyen a kĂśvetkezĹ.
HTTP/1.1 200 OK
EzutĂĄn kĂśvetkezzen egy Ăźres sor.
Date: Fri, 11 May 2012 12:17:47 GMT
Server: Apache/2.2.16 (Debian)
Script-Control: X-stream-mode
Vary: Accept-Encoding
Transfer-Encoding: chunked
Content-Type: text/html;charset=utf-8
-------------- next part --------------
KĂŠszĂtsd el a kĂśvetkezĹ rendszert.
Az alapfeladatot Socket vagy RMI felhasznĂĄlĂĄsĂĄval oldhatod meg.
A tovĂĄbbi feladatok +1 jegyet ĂŠrnek,
azonban kettesnĂŠl jobb jegyĂŠrt RMI ĂŠs Socket alapĂş megoldĂĄst is kĂŠszĂtened kell.
----------------
Alapfeladat.
KĂŠszĂts kĂŠt osztĂĄlyt: Server1 ĂŠs Server2.
Az osztĂĄlyok RMI esetĂŠn a ServerInterface interfĂŠszt valĂłsĂtjĂĄk meg,
Socket esetĂŠn pedig a szervereknek ugyanolyan Ăźzenetek kĂźldhetĹek szĂśvegesen.
A program futĂĄsa elejĂŠn egy parancssorban megadott porton (RMI esetĂŠn nĂŠven)
elindul az elsĹ fajta szerver.
A szerverek rĂśgzĂtett idĹ eltelte utĂĄn "cserĂŠlnek":
a mĂĄsik szerver kezd el futni ĂŠs kezelni a portot (RMI: a mĂĄsik jegyzĹdik be).
Socket hasznĂĄlatĂĄnĂĄl az ĂŠppen levĂĄltott szerver mĂŠg fogadhatja az utolsĂł bejĂśvĹ hĂvĂĄst,
ezutĂĄn kezdheti meg a mĂĄsik szerver a port hasznĂĄlatĂĄt.
A szerverek belsĹ ĂĄllapotukban egy szĂĄmot tĂĄrolnak (jelĂślĂŠs: m).
A szerverek a bejĂśvĹ kliensektĹl egy szĂĄmot (jelĂślĂŠs: n) vĂĄrnak
(Socket: szĂśvegesen, RMI: a sendNumber fĂźggvĂŠnnyel).
A szerverek ĂĄtĂĄllĂtjĂĄk a belsĹ ĂĄllapotukat: Server1 (n+m)-re, Server2 (max(n,m)+1)-re,
ĂŠs ezt az Ăşj belsĹ ĂĄllapotot kĂźldik vissza.
----------------
+1. A szerverek kĂźlĂśnbĂśzĹ portokon/neveken legyenek elĂŠrhetĹek.
A server_location.txt fĂĄjl tartalmazzon portokat/neveket;
minden alkalommal, amikor a szerverek megcserĂŠlĹdnek,
a kĂśvetkezĹ szerver a megadott porton/nĂŠven fusson tovĂĄbb.
KĂŠszĂts olyan szervert (szabadon vĂĄlaszthatĂłan RMI vagy Socket alapĂşt),
amelytĹl le lehet kĂŠrdezni, hogy az ĂŠppen futĂł szerver milyen nĂŠven/porton ĂŠrhetĹ el.
+1. Tarts fenn egy szĂĄmlĂĄlĂłt, amely azt tartalmazza,
hogy a kĂŠtfajta szerverhez Ăśsszesen hĂĄny kĂŠrĂŠs ĂŠrkezett be.
Ezt lehessen lekĂŠrdezni a clientCount mĹąvelettel (RMI),
illetve Socket esetĂŠn Ăşgy, ha a kliens nem szĂĄmot kĂźld.
A lekĂŠrdezĂŠs is szĂĄmĂtson bele a kĂŠrĂŠsek szĂĄma kĂśzĂŠ.
+1. KĂŠszĂts kĂŠt, egymĂĄst vĂĄltogatĂł szerverpĂĄrt (Ăśsszesen tehĂĄt nĂŠgy szerverbĹl ĂĄll a rendszer,
ĂŠs egyszerre kettĹ vĂĄrja aktĂvan a kapcsolatokat).
Oldd meg, hogy egyszerre csak egy szerver szolgĂĄlhasson ki klienst.
Ha ekĂśzben a mĂĄsik aktĂv szerverhez kĂŠrĂŠs fut be,
akkor az vagy dobja el azonnal a kapcsolatot (Socket),
vagy vĂĄltson ki kivĂŠtelt (RMI).
A kĂŠrĂŠseket vĂŠgrehajtĂł kĂłdba kerĂźljĂśn lassĂtĂĄs,
hogy ki lehessen prĂłbĂĄlni a fent leĂrtakat.
More information about the Orgyak
mailing list