- Termín odovzdania je ________.
- Vypracujte obe zadania.
- jedno zadanie vypracujte v PowerShelli.
- druhé zadanie vypracujte v unixovskom shelli. Pozorne si prečítajte obmedzenia nižšie
- Zadanie musí implementovať celú požadovanú funkcionalitu. Vynechanie ktoréhokoľvek bodu má za následok zamietnutie zadania a hodnotenie FX. Hodnotenie sa odvíja od spôsobu implementácie zadania a od odpovedí na kontrolné otázky zamerané na pochopenie vypracovania.
- Zadanie spokojne vzájomne konzultujte. Vypracovanie však musí byť samostatné a jednoznačné.
- Plagiátorstvo a identický kód je trestaný okamžitým hodnotením FX.
- Ak využijete kusy kódu alebo rady z internetu, ste povinní uviesť do zdrojového kódu odkaz na zdroj (URL blogu, odkaz na StackOverflow a pod.) V opačnom prípade je zadanie zamietnuté ako plagiát.
- Zadanie bude obhájené individuálne a ústne v termíny uvedené vyššie.
Zadanie 1: Fortune Cookies
Fortune Cookies je sada užitočných citátov dostupná od najranejších časov operačných systémov. Príkaz fortune
vyberie náhodný citát a vypíše ho na štandardný výstup:
fortune
Výsledkom je napr. citát:
"Talk is cheap. Show me the code."
- Linus Torvalds
Citáty sú zoskupené v databázach, pričom každá z nich je reprezentovaná textovým súborom. Obvyklá databáza uvádza citáty oddelené znakom %
. Napr. databáza goedel
:
Beware of computerized fortune-tellers!
%
Chocolate chip
%
For 20 dollars, I'll give you a good fortune next time ...
%
Do not read this fortune under penalty of law.
Violators will be prosecuted.
(Penal Code sec. 2.3.2 (II.a.))
Požiadavky
Implementujte príkaz
fortune
, ktorý vyberie náhodný citát zo všetkých databáz a vypíše ho na štandardný výstup:fortune
Implementujte príkaz
fortune
, ktorý vyberie náhodný citát z jednej databázyfortune -d goedel
Implementujte príkaz, ktorý stiahne databázu z definovanej URL adresy a zaradí ju medzi dostupné databázy, spomedzi ktorých sa vyberajú citáty.
fortune-download http://ics.upjs.sk/databaza.txt
Pripravte si dve ukážkové databázy a aspoň jednu internetovú databázu, na ktorej demonštrujete všetky príkazy.
Zadanie 2: Spracovanie log súborov
Majme systém, ktorý generuje logovací súbor, ktorý vyzerá nasledovne:
2017-12-10 10:21:16.993 INFO --- [cTaskExecutor-1] o.s.a.r.l.SimpleMessageListenerContainer : unknown: Restarting Consumer: tags=[{amq.ctag-cIlAPNJRXDylTM1UAH5GsA=user.aml-check-status-requested}], channel=Cached Rabbit Channel: AMQChannel(amqp://ft-iam@127.0.0.1:5672/ft,11), conn: Proxy@56e7f0b Shared Rabbit Connection: SimpleConnection@2a5586ac [delegate=amqp://ft-iam@127.0.0.1:5672/ft, localPort= 50737], acknowledgeMode=AUTO local queue size=0
2017-12-10 10:21:17.007 INFO --- [cTaskExecutor-2] o.s.a.r.c.CachingConnectionFactory : unknown: Created new connection: SimpleConnection@1afb1d2f [delegate=amqp://ft-iam@127.0.0.1:5672/ft, localPort= 53079]
2017-12-10 10:21:17.953 WARN --- [cTaskExecutor-1] o.s.a.r.l.SimpleMessageListenerContainer : unknown: Consumer raised exception, processing can restart if the connection factory supports it
2017-12-10 10:21:18.212 WARN --- [cTaskExecutor-3] c.g.n.MessageService : root: Handling message: OK
Na každom riadku je jeden záznam v nasledovnom tvare:
- časová pečiatka (rok-mesiac-deň hodina:minúta:sekunda.milisekunda)
- dve medzery
- úroveň hlášky: jeden z reťazcov
DEBUG
aleboINFO
aleboWARN
aleboERROR
. - medzera a tri pomlčky a medzera
- názov vlákna (thread) v hranatých zátvorkách
- medzera
- názov Java triedy, ktorá vygenerovala hlásenie
- medzera, dvojbodka a medzera
- meno aktuálne prihláseného používateľa, pre ktorého sa vygenerovala hláška alebo
unknown
ak používateľ nie je známy - dvojbodka
- text logovacej hlášky
Požiadavky
Implementujte nástroj filter-log
s nasledovnou funkcionalitou:
- vypíšte logovacie záznamy za posledných 5 minút
- vypíšte logovacie záznamy za poslednú hodinu
- vypíšte logovacie záznamy pre zadaného používateľa
- vypíšte logovacie záznamy, ktoré obsahujú v texte logovacej hlášky zadaný text
- vypíšte logovacie záznamy, ktoré sa týkajú jednej zadanej Java triedy
- vypíšte logovacie záznamy, ktoré sú dôležitejšie alebo rovné ako zadaná úroveň hlášky. Ak používateľ vyžiada hlášky úrovne
WARN
, vypíšte hlášky úrovneWARN
aERROR
, ale už nieDEBUG
aINFO
. Priority úrovní súDEBUG
<INFO
<WARN
<ERROR
.
Obmedzenie unixovského shellu
- Zadanie v shelli demonštrujte na serveri
student.ics.upjs.sk
alebo na vlastnej inštalácii Linuxu. - V zadaní použite len nástroje vymenované v norme POSIX.
- Zadanie skontrolujte nástrojom
shellcheck
dostupnom buď online alebo na serveristudent.ics.upjs.sk
.