Viikko 5

Opin tällä viikolla melko paljo ihan numeroiden esitysmuodoista ja toiminnasta asti koodatessani moduulin pääfunktiota. Sain myös lukea paljon muiden koodia ja MD5-implementaatioita, sillä RFC:ssä on muutamia epäselviä kohtia joista en oikein tiennyt mitä tehdä seuraavaksi, kuten miten saadaan 32-bittiset palikat oikeaan muotoon algoritmille, jotta saataisiin oikeat tulokset.
Paljon tuli myös tavujen käsittelyä harjoiteltua, kun niitä piti jakaa osiin luodessa bytedigestiä - jälkeenpäin ajateltuna kaikkea olisi voinut käsitellä suoraan tavuina, mutta en aio ohjelmaa muuttaa enää tässä vaiheessa sillä binäärimerkkijonot ovat mielestäni vahva abstraktio algoritmin ymmärtämiseen. Myös 32-bittisen esitysmuodon rajoitukset, erikoispiirteet ja tavujärjestys (endianness) tulivat vahvasti esille tällä viikolla.

Tällä viikolla sain vihdoin toimivan MD5-implementaation valmiiksi. Algoritmin oikeellisuutta on testattu hashlibin kirjastoon ja todettu oikeelliseksi sekä digestin että hexdigestin osalta. Onnistuin löytämään muutamia kriittisiä bugeja jotka vääristivät tuloksia ja korjaamaan ne. Linkitetyssä listassakin oli yksi bugi joka on nyt korjattu. 

En ollut aivan varma, mihin benchmarkkeja nopeustestauksesta piti laittaa vai oliko niiden kirjaaminen tarpeen ollenkaan, mutta pistin niitä testausdokumenttiin jossa käsitellään refaktorointia ja nopeustestejä (unittest kappale tulee viimeisellä viikolla kun saan koodin minimoitua).

Sain tällä viikolla hyvin kiinni viime viikon hidastelua. Ohjelma etenee nyt hyvin aikataulussa kohti viimeistä viikkoa.

Viimeinen viikko menee dokumentointien tekemiseen ja pienien puutteiden korjaamiseen . Optimoinnin saralla on vielä pari selkeää kohdetta, ja apufunktiot täytyy siivota moduulista paremmin, jotta saadaan yhtenevä moduuli hashlibin vastaavaan. Lisäksi yksikkötestejä tulee lisää, tällä viikolla testaaminen oli lähinnä debuggausta ja käsin testaamista.