Múlt hét szerdától elérhető a git repó a SF-on, most már át is szerveztem: egy "Helló, Világ!" szintű Google Protobuf kommunikációs osztályt formálisan betettem a Maven projektbe (lásd a pom.xml-t). Ez lesz az alapja a YANonymous Construct és a YANonymous Puzzle közötti kommunikációnak.
Az API forgatása
Az előző laboron az immár IDE független (azaz Maven csomagként elkészített) YANO csomagot szereltük fel különféle riportokkal, s kicsit a projekt szakmai vezetőjeként ellenőriztünk néhány riportot, hogy például betartottuk-e a kódolási szabályokat? egyébként koránt sem...
A mostani poszt fővonala előtt jöjjön egy reguláris kitérő: 5 pontért ismételd meg az alábbi mérést. Nem haszontalan, hiszen ezt a Java (vagy saját, de ugyanezt végző) programot kell "félévközbeni védésként" bemutatnod.
Nyilván a prog1 után lerágott csont a humán genom 2. kromoszómája, de ismételjük meg most Javában a futtatást:
norbi@colossus:~/P2$ javac LZWBinFa.java
norbi@colossus:~/P2$ wget ftp.ncbi.nlm.nih.gov/genomes/H_sapiens/CHR_02/hs_alt_HuRef_chr2.fa.gz
norbi@colossus:~/P2$ gunzip hs_alt_HuRef_chr2.fa.gz
norbi@colossus:~/P2$ time java LZWBinFa hs_alt_HuRef_chr2.fa -o kimenet
real 4m22.409s
user 3m51.348s
sys 0m52.252s
norbi@colossus:~/P2$ tail kimenet
------------------------------------------------------------------------------------------0(29)
------------------------------------------------------------------------0(23)
------------------------------------------------------------------0(21)
------------------------------------------------0(15)
------------------------------------------0(13)
------------------------0(7)
------------------0(5)
depth = 291
mean = 77.910095987775
var = 8.81903638228341
Ha menet közben elszállna a program, pl. notebook-okonez tipikus lesz, akkor add ki a jconsole parancsot, ha a JDK bin könyvtára szokás szerint benne van a PATH-ban, akkor ez indulni fog simán, s látni fogod, hogy a heap használatával volt a gond, ez esetben a java nem sztenderd opcióit kell használnod (lásd java -X, a képen nem volt gond egyébként, ahogyan látszik is)
S most jöjjön maga a mérés, aki az átírásban a java.io.PrintWriter helyett eleve a java.io.PrintStream osztályt használta, az alapban élvezheti a 2. kromóra futtatást :) Egyébként elég formálisan cserélni a Writer-t Stream-re, illetve a main-ben az alábbi pár sort tedd a szereplő helyére:
java.io.PrintStream kiFile =
new java.io.PrintStream(
new java.io.FileOutputStream(args[2]));
Csak ki tudtam várni az eredményt:
norbi@colossus:~/P2$ javac LZWBinFa.java
norbi@colossus:~/P2$ time java LZWBinFa hs_alt_HuRef_chr2.fa -o kimenet
real 63m31.260s
user 17m31.872s
sys 47m20.944s
15 pontot ér, ha megmagyarázod a futási idő 5 percről 1 óra 5 percre növekedését, 5 pont, ha jeéentkezik memóriagond, de elhárítod, további 10, ha a Stream-el is lefut jó időben.
Védési szezon
A következő két hétben javaslom beütemezni az első védést, ahol éppen az iménti programot kell védeni, lehat akár már holnap is! Laborközösségenként az első 3 sikeres védőnek holnap, de csak holnap 10-10 pont is üti a markát. Védeni természetesen teljesen saját programot is lehet, feltéve, ha ugyanazt adja, mint a fenti (természetesen minden félévben más és más az eredmény, s nyilván nem a 2. kromoszóma változott meg, hanem a programunk javult, de most igazodjunk a default progi kimenetéhez.)
A védések lesznek tehát a fókuszban, de íme néhány feladat a következő két laborra:
- 5 pontért végezd el a BBP-s sebességtesztet, ahol a C és a Java implementációt veted össze. További 25 pontot könyvelhetsz el magadnak, ha ehhez a 2 nyelves összehasonlításhoz további nyelveken (pl.: C#, Python stb.) is implementálod a programot (nyilván ugyanazt adja). Ne felejts el elolvasni a Javát tanítok ezeket a programokat tárgyaló részét! Hiszen itt találod a szóban forgó forrásokat is.
- 15 pont, ha ezt a Maven alapú "Helló Világ!" szervletes példát feléleszted tetszőleges környezetben, s további 15 pont minden más környezetért (pl. az előadás fóliák alapján defaultban deployolod Tomcat-re, majd további ismerkedésként az alkalmazásszerverek használatával: GlassFish 2, GlassFish 3-ra, vagy ébben JBoss-ra).
- 30 pont, ha feltöröd ezt a hibásan implementált RSA-val kódolt titkos szövege. Indulj ki az előadás fóliáiból és szótár alapon törd! Ilyen törés lesz az írásbeli vizsga szokásos "beugrója", ezért szerintem semmiképen ne hagyd ki!