lauantai 12. syyskuuta 2020

Ekat kaksi viikkoa työharjoittelussa

 Ekat kaksi viikkoa työharjoittelussa

Kouluun liittyvä internship vaihe alkoi mun osalta Syyskuun eka päivä. Uutta (on pikkuusen tullu elämää nähtyä) on se että teen työtä tuotekehitysorganisaatiossa jossa en ole koskaan ollut. Harjoittelupaikkaa ja siihen liittyvää työtehtävää on viilattu jo pidempään (siitä olen kovasti iloinen) joka nopeutti työn aloittamista. Tuotekehitys on pääsääntöisesti (niin tämäkin) uusien asioiden tekemistä joten uusien asioiden oppiminen on ollut pääpainona ekat kaksi viikkoa. Kielen (ohjelmointi) suhteen on hyvä että käytämme pääsääntöisesti C-kieltä. C++ saatta tulla myös kysymykseen (ei tiärä viälä).

Projektissa ollaan kovasti rautaläheisten juttujen äärellä. Pariin kertaan on saatu (meitä kaksi opiskelijaa Hive Helsingistä) rauta niin jumiin että siitä ei ole selvitty kuin ”Power off/on” metodilla. Toikin hoituu etänä. Tulee mieleen tarina että voiko antaa edes varretonta lekaa... Sekin on tullu huomattua (ei ollut mikään yllätys) että google setä (tohon pitää keksiä uusi sana) ei juurikaan auta kun ollaan uusien asiooren äärellä (r on oikeen kiriootettu). Uusi asia koulussa ei oo sama asia kuin uusi asia tuotekehityksessä.

Koulussa projektit nimeltä init, rogers-skyline ja corewar (Hive termistöä noi) ovat olleet hyvin kohdalleen osuvia projekteja. Tietysti myös C-koodin kirjoittaminen viimeiset 11 kuukautta ovat tuoneet hyvät valmiudet juurikin tähän kyseiseen internship projektiin. Kiitokset Hive (Helsinki) koodikoulun pakkaamista evähistä reppuhun.

Seuraavat kirootukset tuloo siinä vaihees kun rupian tarkemmin pohtimahan työharjoittelun jälkeestä (opintovapaan jatko hyväksytty jo) opiskeluhun liittyviä tavootteita.




maanantai 31. elokuuta 2020

Viimeinen päivä koulussa ennen internshippiä

Viimeinen päivä koulussa ennen internshippiä

Tänään ajattelin tehdä kuvan käännön z-akselin ympärillä. Jännä kohta siinä on miten laattojen kallistaminen onnistuu. Saa nähärä.

Kuvat lähti kääntymään ihan hyvin. Alla muutama kuva. Kuvista huomaa että piirtäminen voisi olla parempi. Bresenham algoritmi ei oo se paras vaihtoehto. Ehkä kokeilen jo aikaisemmin mainitsemaa Xiaolin Wu’s algoritmia.


Nyt tämä FdF projekti jää jäähylle kun meen puoleksi vuodeksi työharjoitteluun.








perjantai 28. elokuuta 2020

Piirtoa vähän eri tavalla


Ajattelin että voisin kokeilla piirtää kuvan isoina laattoina (tile). Alla olevasta kuvasta saa vähän ymmärrystä mitä pääs pyärii.




Tämmönen siitä tuli.


Tein niin että piirsin nolla laatat mustina ja ne missä numero on laitoin punaiseksi. Ajattelin jatkaa tällä ajatuksella. Toteutuksessa on se puute että kuvan pyöritys X-akselin ympärillä ei toimi, kun kaikki laatat on samalla tasolla. En siis oo ottanut z-akselia käyttöön. Toinen ajatus seuraavaksi on kääntää kuvaa z-akselin ympäri silloin kuva liikkuisi jotenkin tälleen.

Tämä toteutus vaatii sen että teen matsiisien ja vektoreiden kertolaskua. Ei pitäis olla paha rasti. Saa nähärä kuinka käy.



torstai 27. elokuuta 2020

Eka kuva ikkunaan

 Itse itseäni pakottaen

Nyt on pakko (itse itseä pakottaen) sano ... kun häntää heilutti. Siis tänään tehdä eka kuva ikkunaan. Ei muuta plääniä tälle päivälle.


Sain tehtyä ekan kuva joka on jotain sinne päin mitä FdF projektissa pyydetään tekemään. Kuva on orthographic projection (top view) 42 palikasta. Jälkimmäinen kuva kertoo source datan jonka perusteella kuva on tehty. Jäin kyllä vielä pohtimaan että pitäisikö inputissa oleva yksi arvo käsittää koko ruutuna. Jos silleen tekisin niin silloin kuvan mustat alueet tulisivat joko valkoisiksi tai tolla punasella.



Tuli myös pohdittua vähän palikan kuvakulman kääntämistä. Ekaksi ajattelin tehdä kääntämisen z akselilla. Tarkoittaa silloin sitä että x ja y arvot muuttuu. 

Hakasulkujen sisään tulee laskemiseen tarvittava kaava. Kaavassa on sin ja cos arvoja. En nyt vielä osannut tosta lonkalta laittaa arvoja kohdilleen niin jätin tyhjäksi.




keskiviikko 26. elokuuta 2020

Vaihe yksi tuli opiskelussa päätökseen


Tänään oli viimeinen evaluointi (viides) corewar projektista. Se tarkoottaa nyt sitä että opiskelun eka vaihe on paketis ja tiistaina (syyskuun eka) alkaa puolen vuoden internship LM Ericssonilla. Miltä ny tuntuu. Ei tunnu miltää. Ai jaa. Maaliskuussa 2021 jatkuu opiskelut siitä mihin ne nyt jäi. Alla kuva koulun tähtikartasta.


Jatkanen internshipin jälkeen kuvassa oikealle. Siellä on algoritmit ja machine learning jutut. Pohdin tavoitteita lisää sitten joskus 2021 alkupuolella. Voi olla että innostun vähän summaamaan opiskelun ekan vaiheen tapahtumia kohta pian. Vahvasti positiivista se tarina tulee olemaan.

FdF projekti tässä jatkuu (en tiedä millä intensiteetillä) arvauksen mukaan viikonloppuisin.


tiistai 25. elokuuta 2020

Xiaolin Wu’s algorithm


Tänään (corewar) evaluointien lisäksi ajatuksena on tehdä [Xiaolin Wu’s algoritmilla viivoja. Algoritmi on hitaampi (niin olen lukenut) kuin Bresenham’s algoritmi. Hyviä puolia siinä on se että viivan pitäisi olla suorempi ja alku ja loppupisteet ovat paremmin paikallaan. Ennen sitä rakennan loopin joka pyörittää viivoja (hullun lailla) ikkunassa. Tarkoitus on mitata millä nopeudella piirtohjelma (kaks oota muka tuolla. Toinen on ihan turha, sanoo Laihialaanen) toimii. Jos aikaa on lähden piirtämään niitä pisteitä josta jo pari päivää sitten haaveilin. Jotenki on hassua että kun aamulla ajattelee (pläänää) tekevänsä jotain niin sitten päivällä tulee tehtyä jotain muuta. Toisaalta kun projekti on (tässä tapauksessa FdF) asettanut inputin ja outputin niin jotenkin kirjoitukset (C-koodaus) on ohjautunut siihen suuntaan että edellisetkin pojektit on tavoitteeseen päässy. Joku vois sanoa että taiteilijan vapaus (mä en sano niin, moon hiliaa).


Tälleen Xiaolin Wu’s algoritmi toimii. Idea siinä on maalata (jännä sana toi) pikseli molemmin puolin (ylhäällä ja alhaalla). Pikselin kirkkaus on sen mukaan miten vahvasti viiva osuu pikselin keskiosaan.




Jäi Xiaolin Wu’s algoritmi tekemättä tänäänkin (aamun innostukset ei aina ota tuulta alleen). Meni aikaa paljon kirjoitetun koodin re-strukturointiin. Haaveena oli että piirtäminen vähän nopeutuisikin. Ei nopeutunut ainakaan näkyvästi. Tein vertailevaa tutkimusta koulukaverin kanssa ja huomasimme että eroa ei ole midän toteutusten välillä nopeuden suhteen (siis niinku silmämääräisesti katsottuna). Keskustelimme myös sdl2 kirjastosta (libsdl2 lienee oikea nimi), joka ollee nopeampi kuin minilibx. sdl2 kirjastossa on paljon valmiita palikoita piirtämiseen. Se kait lienee syy miksi käytämme minilibx kirjastoa. Elikkä saamme tehdä kaikki piirtämiseen liittyvät palikat itse. Corewar evaluointi söi illan (reilut 2 tuntia). Sain vielä tehtyä FdF-mapin luku funktion (se josta kuva eilen).


maanantai 24. elokuuta 2020

Viivoja kahdella eri algoritmilla.

Aamun innostus ei tarkoita yhtään mitään

Tänään innostuin (siihen se sitten jäikin) junassa lukemaan toisesta algoritmista, jolla viivaa voi piirtää. Semmonen kuin Xiaolin Wu’s algorithm. Sitä ajattelin kokeilla tänään. Kunhan saan ensin Bresenham’s algoritmin valmiiksi. Tänään on myös corewar projektin evaluointeja. Tulee (ja niin tulikin) taas normipäivä 12+ tuntia.

Tuli möhellettyä tänään tavallista enemmän. Corewar evaluoinnit meni ihan kivasti. Viivapiirto sen sijaan takkus. Tein virheitä koodiin (jos joku kysyy, en myönnä) ja niiden metsästäminen otti aikansa. Lopulta sain Bresenham’s algoritmin valmiiksi. Kirjoitin Bresenham koodin wikipediassa olevan rakenteen mukaan. Jäi vielä vaivaamaan olisko sen saanut nopeammaksi. Alla olevassa videossa näkyy hitautta. Tein myös silleen että viivaa voi liikuttaa nuolinäppäinten avulla. Se toinen algoritmi jäi tulevaisuuteen. Koulukaveri vinkkas mulle koodinpätkän jossa oli toteutettu Bresenham’s algoritmi lyhyesti ja ytimekkäästi. Mun toteutuksessa käytetään integer lukuja ja tässä minkä sain tehdään laskutoimituksia float (double) luvuilla. Ajattelin että testaan kumpi on nopeampi toteutus. Alla kolme kuvaa tämän päivän tuloksista.






sunnuntai 23. elokuuta 2020

Pisteitä ikkunaan

Ei mennyt päivä suunnitelmien mukaan

Ajattelin tänään tehdä silleen että (sen ajatellun tutorial opiskelun sijaan) teen suorakaiteen ikkunaan alla näkyvän inputin perusteella. Toinen kuva ei oo ihan se mitä siitä tulee, mutta jotain sinne päin. Teen 2D kuvan plane of projection ajatuksella (jos sitä voi ajatukseksi sanoa). Kuvassa on vain pisteitä (ehkä väreillä) ja kuvakulma on ylhäältä (orthographic projection). Elikkä tämmönen plääni tälle päivälle.


Ekaksi tein viivanpiirron vasemmasta yläkulmasta about siihen kohtaan missä hiiri on. Samaten kirjoitin että ESC-nappula sulkee ikkunan. AamuAamu meni siinä kun laitoin libft kirjastoon jo aikaisemmin tehtyjä funktioita (strtoi, abs ja step_args). Nyt on kirjasto taas hyvässä järjestyksessä.

Projektin alut on aina tiedon valtavan määrän kanssa painimista (pohojalaaset on hyviä siinä). Sain vinkkinä koulukaverilta tänään yhden sivuston missä kerrotaan vektorilaskennasta, jipii.

Jutut joita pläänäsin aamulla jäi jonnekin (junaan unohtu tai jotain). Huomiselle jäävät ne.

 Muutin viivanpiirtoa siten että se noudattaa Bresenham’s basic versiota jossa piirtäminen toimii ainoastaan nollakulmasta (vasen ylhäällä) oikealle ja max 45astetta alas. Huomenna tarvii tehdä silleen että toimii jokasuuntaan. Kuvan päivitysnopeutta jäin vielä pohtimaan (tai siis kuvan vilkkumista). Nyt tyhjään koko näytön joka kerta kun hiiri liikkuu ja sen jälkeen viiva uusiksi. Ehkä olisi pitänyt tehdä silleen että piirrän uuden imagen ensin valmiiksi sitten resetoin ikkunan ja sen jälkeen heti uusi valmiina oleva image päälle. Huomiselle menee toi ajatus.

 Video alla näyttää miten se nyt toimii.


Tekstiäkin (C-koodi) on tullu kirjoitettua. Tässä kuvat aiheeseen liittyen.






 

lauantai 22. elokuuta 2020

FdF imagen opiskelu

Piirtamisen perusfunktiot hanskaan

Tänään ajattelin opiskella miten saan minilibx ikkunaan lisättyä imagen. Sen tehtävä on päivittää ikkunan sisältöä mahdollisimman nopeasti (ei viliku eikä väläky) siten että image rakennetaan valmiiksi ja sen jälkeen lätkäistään johonkin kohtaan ikkunaa. Aiheeseen liittyviä harjoittelu löytyy täältä. Kuten huomaat oon siirtyny enemmän ja enemmän hakemaan netistä opiskelun palasia joilla preparoin itseäni että varsinainen projekti (tässä tapauksessa FdF) sujuu mahdollisimman hyvin. Tässä oli plääni tälle päivälle. Saas nähärä kuinka menöö.

Sain tehtyä image kokeilun silleen että ymmärrys funktioista syntyi. Nyt just huamasin että get_color_value ja destroy_image jäi kokeelematta. Ne jää huamiselle. Junamatkalla aloin pohtimaan miten asioita pitäisi ajatella (siis tätä FdF projektia ajatellen). Ajattelin piirtää kuvaa sanajotaentiedä näkökulmasta.

No, ei tuasta kuvasta mitään tullu. Päädyn nyt siihen että teen huomenna sellaasen toteutuksen jossa piirrän viivan kulmasta siihen kohtaan missä hiirtä klikkaan. Toinen toteutus on semmonen jossa yhden pikselin koko on useampi pientä pikseliä. Esim jos yksi pikseli on 10 pikkupikseliä niin viivoista tulee röpelöösempiä. Sillä tavalla näen miten mun viivanpiirto algoritmi toimii. Eiköhän siinä oo plääniä huomiselle. Niinku tapoohin kuuluu, saattaa suunnitelma muuttua aamulla. Ja mitä lopuuksi teen ei tiärä viälä kukaa.

 

Tässä muutamia kuvia tämän päivän toteutuksista:





Tehdäkkö neliö kahdesta vai neljästä kolmiosta?




perjantai 21. elokuuta 2020

One more time

Meinasin että huilaan, mutta en viittiny

Ajattelin vielä tässä ennen työharjoitteluun menoa (Reseach Ericsson) tehdä vielä yhden projektin. Valmistuuko ennen syyskuun ekaan, en tiedä, eikä oo niin väliksikään (On tietysti väliä, kunhan selitän).

Innostuin aiheesta lopulta kun algoritmi branchissä  bonus tehtävänä kysytään usein visualisointia. Elikkäs, aloitin tänään FdF projektin. Siinä tehtävänä on piirtää alla näkyvän kaltaisia kuvia ja esittää niitä eri kuvakulmista (Graphical projections). Tänään otin asiaksi (pohojalaasilla on tapana ruveta tekemähän) hariootella kuinka mlx libraryn (C kirjasto) tarjoamat funktiot toimii. Parin koulukaverin kanssa pidin kaffeetunteja asian tiimoolta ja sain paljon hyviä vinkkejä (muummoassa toi mlx library linkki. FdF on eka projekti jossa saa käyttää valmista kirjastoa. Tähän asti on kaikki tehty itte (hyviähän nistä on pakannu tulla). Alla olevissa kuvissa pohdin (sinisiä ja keltaasia kolomioota väritetty kuvassa) että miten käsittelen kuvan pikseleitä. Kolmioina vai neliöinä vai jonain muina. Selevyyttä ei vielä tullu. Kaffi keskusteluissa (non just yks Hive koodikoulun parhaita juttuja) tuli juttua myös matriisien ja vektoreiden yhteenlaskuista ja kertolaskuista. Vektorit (ja niiden implementointi) jäi vielä orotustilahan. Sen verran pääsin alkuun että sain avattua C-koodilla kirjoitetulla ohjelmalla mlx ikkunan ja siihen piirrettyä viivan (vihriällä värillä, joka ei näy alla olevas kuvas). Siihenkin sain apua yhdeltä koulukaverilta. Huomenna teen vielä lisää mlx hariootuksia jotta osaan käsitellä imageja (mlx termi on toi) jollakin tavalla. Sen jälkeen ajattelin käydä läpi tutorial pagen (linkki sinne täs) jonka sain vinkkinä kahviittelun lomas. Oli muuten taas 12 tuntinen koulupäivä. Siihen kuului myös eka evaluointi corewar projektista. Se on se viimeinen projekti joka tarvii olla läpäästy ennen kuin internship voi alkaa. Hyvältä näyttää sen suhteen (siis sen suhteen että corewar projekti valamistuu ajoos). 



Täs yks kuva kirootetusta C-koodista (siinon vikoja).


sunnuntai 28. kesäkuuta 2020

Corewar päivä

Hackerrank

Hackerrank sivusto ehdotti kirjastolainauksen myöhästymissakon laskemista. Tutorialissa puhuttiin unit testauksesta, se meni vähän ohi kun koulussa teen testit bash shell scripteillä. C:llä en unit testejä oo rakentanu. En osaa heti sanoa onko hyvä ajatus. Tarvii pohtia.

Koulussa

Putsasin aluksi levytilaa. 5Gi on aika vähän. Riittää kun ei säilytä mitään ylimääräistä. Corewar projektissa keskityin cycles funktion tekemiseen. Tarkoittaa sitä että jokainen asa käsky (käskyjä ne kait on. Vai olisko instruction tai operation code) kuluttaa tietyn määrän kellojaksoja.
Tutkin valmista toteutusta (binääri, C koodia siitä ei ole saatavilla) miten cyclet toimii. Alla on taulukko miten corewar projektissa määritellyt asa käskyt syö kellojaksoja. live käsky kertoo ”cpu”:lle että koodi on hengissä. Tarkoittaa sitä että asa koodissa pitää olla live käsky riittävän usein ettei ”cpu” ajattele koodin kuolleen. Jos ”cpu” niin ajatteleen niin sota on hävitty.
Tein pari asa ohjelmaa ymmärtääkseni miten cycle funktion pitää toimia.
Alla kuva yhdestä niistä. Siinä ohjelma on luupissa live ja zjmp komennoissa. Elikkä varmistetaan että live komentoa tehdään riittävän usein.



lauantai 27. kesäkuuta 2020

Prime number ja big-O

Kotipäivä.

Hackerrank sivusto ehdottaa päivittäin jotain koodaustehtävää. Aiheena on big-O ja siihen liittyen prime numbers (alkuluvut). Tehtävänä on selvittää, onko annettu luku alkuluku. Big-O on kaava, jonka avulla lasketaan funktion kuluttama aika. Toteutin prime number funktion kolmella eri tavalla (tai jos rehellisiä ollaan niin kahdella). Kolmas jäi tekemättä kun en ole tehnyt neliöjuuri funktiota kirjastooni. Ihan hyvä harjoitus liittyen koodin nopeuden maksimoimiseen.
Huomenna ajattelin fokusoida corewar prjoektiin. Tässä linkki corewar projektin yleiseen kuvaukseen. Lyhyesti sanottuna projektissa tehdään assembler --> konekoodi kääntäjä ja toisena osana tehdään virtual machine, jonka tehtävänä on ajaa konekoodille käännettyä ohjelmaa. Projekti on kolmen henkilön tiimiprojekti.

perjantai 26. kesäkuuta 2020

Lem-in projekti pakettiin


hackerrank.com sivusto



Aamulla hakkasin hackerrank.com sivuston koodiharjoituksia. Sain vinkin yhdeltä opiskelijalta liittyen hackerrank sivustoon. Oon tykännyt sivuston harjoituksista, siksi siellä harjoittelen päivittäin. Oli jäänyt muutama päivä väliin niin tein kolme tehtävää. Pieniä tehtäviä ovat. Kaikki liittyivät linked listan käsittelyyn. Linked list on kyllä ihan hanskassa mutta kun mennään printtaamaan asioita eri järjestyksessä kuten layereittain niin hetki tarvii miettiä miten tehdä. Toteutin layer levelin printtauksen jono metodilla. Jonon tein kahdella stackillä. Ihan kiva toteutustapa. Samaten weigthin laskeminen vaati hiukkasen pohdintaa.

Koulussa

Kouluun lähdin vasta joskus kahden jälkeen. Siellä varmistelin että mun lem-in projekti on riittävän nopea ja että riittävän hyvät polut löytyy.

Muurahaiset jonossa

Alla on piirrustuksia joita piirtelin kun pohdin muurahaisten kuljettamiseks (lem-in projekti siis)i start huoneesta end huoneeseen. Tehtävänä on kuljettaa muurahaiset mahdollisimman vähillä siirroille siten että alku ja loppuhuonetta lukuunottamatta huoneessa saa olla vain yks murkku kerrallaan.
Kuvissa liikutaan vasemmalta oikealle. Haasteen projektissa tuo se että pienellä määrällä murkkuja 1-3 yhden lyhimmän polun valinta on paras. Kun murkkuja tulee lisää kannattaa valita yhden lyhimmän sijaan kaksi toiseksi lyhintä. Syy valintaan on se että jos lyhin reitti blokkaa kaks seuraavaksi lyhintä. Esim alimmassa kuvassa sininen reitti toimii muutamalle murkkulle. Jos on lisää murkkuja niin paras valinta vihreät polut. Jos murkkuja on kauhia kasa, paras valinta on vihreät plus monivärinen polku.







torstai 25. kesäkuuta 2020

Takas kouluun

Nyt on semmonen fiilis että koulunkäynnin (vyysisen) vois aloottaa ihan säännöllisesti. En lähäre nyt siihen keskusteluun että voiko opiskella etänä. Eilen olin kolmannen kerran koulussa kesäkuun alusta lukien. Sitä edeltävä kerta oli maaliskuun 13. Semmonen on fiilis että nyt rupiaa taas tapahtumahan, elikkä projektit alakaa etenemähän. Eilinen oli siinä miäles hyvä esimerkki. Päätin laittaa lem-in projektin (palaan retaleihin joskus myähemmin) evaluoitavaksi. Eka evaluointi meni läpi 118 (max 125) pistettä. Päätin piänen pohoriskelun jäläkehen givupata projektin. Siitä seurasi 7:n päivän cooldown. Syy luovuttamiseen (pohojalaasella ei oo tapana luavuttaa) liittyi siihen että evaluoinnin aikana löytyi vika, jonka itse rankkasin erittäin pahaksi. En olisi voinu elää sen kanssa, siksi päätin korjata sen (korjasin eilen ja tänään). Elikkä seuraavat evaluoinnit alkaa viikon päästä. Tämä päivä on menny toisten projekteja evaluoidessa. Kivaa hommaa jota tehdään etänä vaikka koulussa oonkin. Teamviewer on ihan toimiva laite siihen tarkoitukseen.
Sain päivän pillalle (jos rasat pärkyää niin sitte on oikiasti huano päivä) kun yritin tehdä parannuksia lem-in (muurahaisten kuljetus) projektiin. Polkujen selektointi metodi (algoritmi) jonka ajattelin olevan parempi ei sitten jostain syystä ollutkaan parempi. Päivä päättyi ”git checkout .” komentoon.


keskiviikko 24. kesäkuuta 2020

Korona-aika

Opiskelun intensiteetti laski huomattavasti. Ei ollu mun vika, siis se korona. Koulussa peer2peer oppiminen on vahva toimintatapa.
Siksi koulun sulkeminen 13.3 -- 31.5 väliseksi ajaksi oli lievä katastrofi.

Koulun ilmaisi selkeästi että lockdown aikana ei edellytetä etenemistä opinnoissa. Opiskelu oli kyllä hyvin mahdollista kun tein ubuntu18 serverin Amazonin pilveen ja lainasin koululta USA näppiksen (siinä suluut oikas kohoras). Tuli miälehen että minkähänlaanen olis pohojalaanen näppäämistö johona olis tuloo, menöö ja notta ristus nappulat oikioos kohoris. Etenemisen mun kohdalta pysäytti se että projekteja ei voinut evaluoida joten valmiiksi niitä ei lockdownin aikana saanut. Lockdownin aikana käytin paljon aikaa maximum flow algoritmien oppimiseen.
Algoritmit liittyivät suoraan lem-in projektiin, joka mulla oli menossa.
Kahden muun opiskelijan kanssa saimme myös corewar (tarinaa siitä myöhemmin) ryhmäprojektin liikkeelle.

Alla on kuva jossa eteneminen graafisesti kuvattuna. Tekemättä on lem_in projekti (Evaluointeja vaille valmis). Viimeinen projekti on corewar team projekti, jonka aloitimme lockdownin aikana. Elikkä ajallisesti etenen hyvässä vauhdissa. Syksyllä on opiskeluun liittyvä the first internship, joka on kuuden kuukauden mittainen. Sen teen toisen opiskelijan kanssa Ericsson nimisessä yrityksessä.

l



sunnuntai 12. tammikuuta 2020

Päiväkirjamerkintöjä yhdestä mun HiveHelsinki koodausprojektista alusta loppuun saakka

Tämä on tarina siitä miten mun koodausprojekti (ft_printf) etenee alusta loppuun.

Blogiteksitssä on päiväkohtaisia suunnitelmia ja toteutumia. Tarinasta saanee kuvan miten koodausprojekti mun osalta etenee HiveHelsinki koodikoulussa.


Projektissa toetutan printf funktion C-koodilla alusta loppuun saakka.

Printf on funtio jonka löytää googlaamalla (man 3 printf). Tai vaikka täältä.

Keskiviikko 4. December 2019


6:30 pyörä varastosta ja kouluun. Ekaksi ajattelen ottaa ft_printf projektikuvauksen ja paloitella se vaatimuksiksi. Siitä sitte kun väsyy ja kyllästyy dokumentin lukemiseen ja paloitteluun niin aloitan koodaamisen. 


Koodaus lähti hyvin liikkeelle. Valitsin ekan mieleen tulevan toteutustavan ja aloin kirjoittamaan. Jotenkin toi koodaaminen on kivaa kun tekee vaan sen enempää pohtimatta. Alkaa olla C-kieli silleen hyvin hanskassa ettei tarvi hirveesti miettiä. Tekee vaan miten parhaalta tuntuu. Repussa alkaa olla hyvät eväät.

Joku vois ajatella että pitää tehdä ensin high level design ja sitten low level. Niin voi tehdä jos tietää tasan tarkkaan miten kannattaa tehdä. Ajattelen että kannattaa tehdä pari prototyyppiä ensin ja sen jälkeen varsinainen toteutus. Tässä tapauksessa tarkoittaa että ft_printf saattaa mennä uusintaan joskus tulevaisuudessa. Ei olisi mun eka funktio jolle niin käy.

Torstai 5. December 2019


Junalla vaihteeksi kouluun. Oli muuta tekemistä aamulla. Siksi vasta 12:00 menossa koululle. Tänään ajattelin saada kaikki konvertterit ft_printf projektiin. Elikkä ne mitä ”man 3 printf” pagesta löytyy. Ei silleen että olisivat valmiit vaan silleen että parseri tunnistaa kaikki vaihtoehdot. Flagit tulee sitte seuraavaksi. En vielä tiedä toteutusta tarkemmin. Muotoutuu siinä kun saan pääsen koululle. Pieni ajatus on olemassa.

Mun ajatus on saada projekti valmiiksi heti uudenvuoden jälkeen. Mutta voi olla että se on valmis jo ensviikolla. Yhtään en osaa tarkemmin arvioida.


Olin vain viiteen saakka koulussa tänään. Hyvin syntyi koodia ja toteutusidea konverttereille syntyi kuin itsestään. Hiukkasen piti googlailla miten funktion pointteri talletetaan muuttujaan. Laitoin muuttujan void * tyyppisenä niin sain siihen joustavuutta. Jotenkin jännää kun pyhon koodia osaavana ihmisenä en sen suuremmin kaipaa luokka-ajattelua. C-koodissa struktuurit on vähän sinne päin. Siksi kait niitä kovasti innokkaasti käytän. ft_printf projektin kuvauksessa painotettiin koodin selkeyttä. Siihen pyrin.


Huomisesta tullee vapaapäivä (niin ajattelen).


Jotenkin jäi koodi taas jännään kohtaan. Tuli paljon koodia päässä vielä illalla. Kiva fiilis oli se. Ei ollu eka kerta. 


Perjantai 6. December 2019


En mee kouluun tänään. On muuta tekemistä.




Lauantai 7. December 2019


9:00 ja kouluun matkalla. Päivän tauon jälkeen en oikein muista mihin jäin. Palautuu kyllä kun pääsen koodin ääreen. Mietin tässä kuumeisesti josko siirtyisin vimin (ei ole se vanha pesuaine) VisualStudioCoden käyttöön. Syy miksi olen sinnitellyt vimillä liittyy kokeisiin joita meillä on. Niissä pitää käyttää vimiä tai emasia. Riski on se että vimin kikat unohtuu ja kokeet feilaa sen takia. Ehkä pieni riski ja toisaalta myös (ehkä) pieni vaikutus.

Katotaan jos tänään teen muutoksen tähän asiaan.


Jäi VSC väliin. Tein ft_printf projektia eteenpäin. Oli lepposaa tekemistä. Eteni hyvin, en tiedä pitäiskö edetä vauhdikkaammin. Ajattelin tehdä koodia sen enempää hätäilemättä. Pieniä taukoja välillä ja nauttien tekemisestä. Haluan kokea miten pysyy aikataulussa tällaisella toimintatavalla.






Sunnuntai 8. December 2019


7:00 pyörän selkään ja menoksi kohti koulua. Opiskelin vähän VisuaStudioCoden shortcutteja heti aamusta (siis ennen heräämistä). 

Tänään otan (lupaus) VSCn käyttöön. Vimillä hinkkaaminen loppuu nyt.


Aamupäivä meni fine tuunatessa koodia. Kovasti olen iloinen koodin rakenteesta. Iltapäivä meni pointer converterin tekemisessä. Koodaus eteni lepposasti. Lähdin kotiin joskus viiden maissa. Jo lähtiessä tuli fiilis että on kiva jatkaa tästä taas huomenna. Nyt on koodaus osaaminen hyvällä levelillä. Ei tarvi paljoa opetella, kunhan tekee vaan. Kotimatka meni vesisateessa pyöräillessä. Ihan ok sekin.





Maanantai 9. December 2019


ft_printf projekti jatkuu. Sanoisin tätä kivaksi ja leppoisaksi koodausprojektiksi. Tässä voi hyödyntää kaikkia opittuja C-ohjelmoinnin ominaisuuksia. Tänään jatkan converttereiden tekemistä tai keskityn release (allokoitujen muistialueiden vapautus) funktion tekemiseen. Flag jutut jäänevät vielä tuonnempaan. Flagit vois toteuttaa format nimisillä funktioilla. Nimi siitä että flagien tehtävä on formatoida output stringiä. Hyvä nimi toi format, lähen sillä ajatuksella. Ehkä jo tänään. Joskus tuntuu että edellinen lause kumoutuu seuraavalla lauseella. Se on sitä ”elä hetkessä” koodaajan elämää. 


Float convertteri jäi vielä tekemättä. Kirjastofunktioista löytyi tuunattavaa. Allokoidun muistin vapautus tuli valmiiksi. Flageja en vielä aloittanut. Aamulla kaks ekaa tuntia meni ihan pieleen. Kirjoitin ”git checkout .”. Se komento putsasi aamun kaikki koodaukset. Lähdin kahville ja aloitin uudelleen. Sen jälkeen koodaus eteni hyvin. Ilmoittauduin huomiseen kokeeseen. Se on sitte huomenna taas se päivä kun on tarjolla hyvää tai pahaa mieltä. Oma valinta. 



Tiistai 10. December 2019


Harjoittelin aamulla yhtä mahdollista koetehtävää (brainfuck). Huomasin että olin tehnyt sen väärin (kauhia paikka) edellisellä kerralla. Samalla leikin vähän pointtereilla ja pointterin pointtereilla. Samaten sulkujen merkityksen. Huomasin että muuttujan perässä oleva ++ tehdään ennen kuin muuttujan edessä oleva tähti. Suluilla ton järjestyksen saa muutettua. Ilmeisesti ajatus on että pointermuuttujaa plussataan ensin yhdellä ja sen jälkeen otetaan sisältö. Joissain tilanteessa tarvii plussata sisältöä yhdellä. Silloin tarvitaan sulut. Toi on asia jonka kanssa pitää olla tarkkana.


Koulussa ajattelin fokusoida flägeihin (joskus äällä ja joskus aalla). Nimeän funktion vaikka formatteriksi. Ajattelin käsitellä flägit yhtenä nippuna ja niiden perusteella teen formatterin. On vaara että tämä idea tuhoutuu saman tien. Jää nähtäväksi.


En saanut tänään mitään aikaan. Paitsi että muokkasin libft kirjaston ft_strjoin funktion paremmaksi. Sen verran kokeet hermostutti. Kokeet meni hyvin. Sain tehtävän tehtyä. Taas kerran en edes yrittänyt seuraavaa tehtävää. Toisaala, kirjoittelin sen kotona illalla innostuksen puuskassa. Kokeessa tuli pari blokki tilannetta. Olin hetken hukassa että mikä mättää. Rutiini on kuitenkin sen verran kovaa luokkaa että sain rajattua ongelman tarpeeksi pienelle alueelle. Toinen oli ajatusvirhe. En tiedä miten tommosia pääsee tapahtumaan ja toinen oli typo. Toteutuksen rakenteellisuudesta olen kovasti iloinen. Koodia syntyy hyvällä rakenteella koetilanteessakin. 80/100 pisteet tästä kokeesta. Kolme koetta on nyt läpäisty. Loput kaksi jätän ens vuoteen. Aikaa on kuitenkin kesään saakka ja ekat kolme on selvitetty kuukauden aikana.







Keskiviikko 11. December 2019


Pientä plääniä tälle päivälle. Ekaksi fokusoin formatterin tekemiseen. Rakennan struktuurin flägeille. Enummeilla nimeän kaikki flägit. Sillä ajatuksella saan ne sopimaan yhteen variaabeliin. Bittioperaatiolla ton hanskaan. Eiköhän tolla saa päivän vauhtiin.


Sain formatterit prosessin valmiiksi. Itse formatterit ei vielä tuota mitään formaattia. Päivä oli semmonen peruskoodauspäivä. 


Futurice kävi kylässä. Kertoi yrityksestä ja mitä tekevät. Ihan hyvä ja kongreettinen kuvaus. Konsulttifirmana eivät pysty specifioimaan tarkemmin millaista osaamista tarvitaan. Oman Oppimisen kannalta haluan tietää hyvinkin tarkkaan millaista osaamista vaaditaan. 


Torstai 12. December 2019


Tämän päivän tavoite on saada formatterit valmiiksi. Length information jää vielä tekemättömien listalle. Ajattelin että teen sen myös linkatulla listalla. Siinä ajatuksena on tallentaa casting tyyppi muuttujaan. Saa nähdä miten käy. Päiväkirjaa kirjoittaessa olen huomannut että tämä toimii samalla hyvänä ”mitä teen tänään” työkaluna. 



Perjantai 13. December 2019


En mennyt kouluun tänään. Oli muuta tekemistä.



Lauantai 14. December 2019


En mennyt tänään kouluun. Oli muuta tekemistä.




Sunnuntai 15. December 2019


ft_printf projekti jatkuu. Tänään ajattelin saada valmiiksi formatterit. Ja jos hyvin menee niin ehkä width ja precision jutut kans. Ne on vähän niinku formattereita kans. Ja jos tarkkaan ajattelee niin pitänee tehdä ennen formattereita. Length, joka on numero tyyppisen parametrin tyyppi, on listalla sitte seuraavana.

Josko noilla eväillä tämä päivä.


Nyt on formatterit jotenkin kasassa. width ja pre jutut jäi väliin ja keskityin numerotyyppeihin. Tässä kohtaa tuli vastaan uusi juttu. Elikkä voiko parametrin tyypin tallettaa muuttujaan ja käyttää sitä castaukseen. Sen kokeilen huomenna.





Maanantai 16. December 2019


Jotenki on pieni paha olo kun olen menossa kouluun ja kello on jo kahdeksan.

Elikkä vasta joskus yhdeksältä koulussa. No se siitä olosta, piänet on murheet jos tua on niistä suurin.

Tänään ajattelin keskittyä tyypin parsimiseen. Siis siihen minkä eilen aloitin. Ajatus on saada se valmiiksi. Tuli miälehen että huomenna olis kokeet. Lupasin viimeviikolla että en osallistu, mutta nyt rupes vähä kiinnostamahan. Että josko kumminkin. Siinähän voi käydä hyvin tai huonosti. Toisaalta voisin keskittyä tämän viikon ft_printf projektin tekemiseen. No, saa nähärä kuinka käy.


Tyypit on parsittu. Joskaan en tehnyt vielä lopullista lukemista kaikille konverttereille. Jätin sen lopputuunaukseen. Tiedostorakenne täytyy pohtia kans. Ehkä teen jokaiselle konvertterille (conversion specifiers) oman tiedoston. Siis se file joka loppuu .c. Tarvii toi tiedostojen nimeäminen miettiä kokonaisuutena. Ehkä innostun mallintamaan UML tyyppisesti asioita.


Width ja precision tuli valmiiksi kans. Tai siis melkein valmiiksi. Lopputuunausta vaille.




Tiistai 17. December 2019


Menen kouluun vasta kolmen maissa. Oli aamulla hidasteita.

Tänään alkaa tuunausvaihe. Elikkä meen konvertterit läpi yksi kerrallaan. Katotaan siinä samalla millainen tiedostorakenne syntyy. c ja s konvertterit meni ihan hienosti. Sit kosahti p konvertterin kohdalla. Päädyin tekemään funktiot jokaiselle width_precision jutulle konvertteri kohtaisesti. Se aiheutti struktuuriin muutoksia. Saan tällä muutoksella pidettyä rakenteen kasassa. Se on se mihin tässä projektissa pyrin. 




Keskiviikko 18. December 2019


Tänään paloittelen tiedostot converttereittain. Character, string, pointer jne... Sen ajattelen olevan kestävän kehityksen perusta. Elikkä yhteen tiedostoon tulee converteri, adjust ja niihin tarvittavat apufunktiot.

Ehkä teen yhden tiedoston splittereille. Yksi tiedosto kun norminetten mukaan saa sisältää maximissaan 5-6 (nyt en muista ihan tarkasti) funktiota.

Ihan hyvä sääntö toi. Pakottaa paloittelemaan.


Nyt oli vaihteeksi kuranen päivä. Vertasin python readline ja mun get_next_line funktioiden nopeutta. Python versio oli nopeampi 100,000 rivin lukemisessa. Kuvittelin että olis toisin päin. En ymmärrä syytä. Sain 4 konvertteria tuunattua kuntoon. Jotenki tuntuu että etenen koodaamisessa hitaasti. Varsinkin kun testasin yhdellä nettiohjelmalla joka testasi nopeutta. Elikkä mun hitaasti tehty printf funktio myös toimii hitaasti. Järkytys on kauhia. Standardi printf toimintaan verrattuna mun funktio tekee 8% samassa ajassa kun standardi versio tekee 100%. Siinä meni joulun välipäivät. Tarvii tehdä vähän extraa.


Nvdia kävi kylässä. Kertomassa tekemisiään Suomessa. Lyhyt ytimekäs esitys.


Yks asia joka mulla on jääny mainittematta näissä blogeissa liittyy kahvitauoilla ideointiin. Se on paikka jossa tulee kasapäin ideoita, kun jutellaan eri projekteista. Palaan noihin juttuihin jatkossa (jos muistan).

Siellä ideoita syntyy.


Torstai 19. December 2019


Tänään josko saisin loput convertterit tuunattua. Huomasin kyllä eilen että koodiin tarvii tehdä lisää strukturointia. Modify_common file olis hyvä. Sinne voisi laittaa funktiot joita voi hyödyntää kaikissa konverttereissa.

Left ja right adjust on siitä hyvä esimerkki. Left adjust on haastavampi kun joissain tilanteissa (+ ja - ja space ja 0 ja 0x ja 0X) filler merkit lisätään ylimääräisten 0-merkkien jälkeen. Kun nyt oon valinnu struktuurin kasassa pitämisen, en luovu siitä minkään kiireen tai muu kummallisen syyn vuoksi. ”Teen sitte joskus paremmin”-termi on hylätty. Nyt on se aika kun tehdään.


Ei tullu convertterit valmiiksi. Meni aika evaluoinneissa. Evaluoin projektin jossa tehdään web serveri virtualboxiin. On niin tuttua juttua toi. Tuli silti opittua muutama uus juttu. Tunnin evaluointi kesti melkein 2 tuntia. Hyvää keskustelua aiheesta.

Pari ihmistä jostain security firmasta kierteli koulun tiloissa. Tulevat kait kertomaan itsestään joskus tulevaisuudessa. Kerroin heille miten koulussa opitaan. Ja opitaanhan me.




Perjantai 20-21. December 2019


Ei oo koulupäivä tänään. On muuta tekemistä.




Sunnuntai 22. December 2019


ft_printf projekti jatkuu. u, x ja X konvertterit on tavoitteena tänään. Ekaksi tarvii lisätä flägs muuttuja substring struktuuriin. Se helpottaa flägi formattereiden lisäämisvaiheessa. sama flägi voi olla useampaan kertaan, mutta toteutetaan vain kerran . Mutta voipi olla että teen ton pohdinnan vasta sub-stringin muokkausvaiheessa.


Otin yhden init evaluoinnin. Init on projekti, jossa käydään ip verkon perusasioita läpi. Evaluoinnissa tuli paljon keskusteltavaa. Kolme tuntia kesti evaluointi. Pisin koskaan pitämäni evaluointi. Antoisa keskustelu.



Maanantai 23. December 2019


Paikkauspäivä. Eilinen evaluointi söi sen verran aikaa että päätin tulla jatkamaan eilisiä juttuja tänään.


Nyt on u, x ja X konvertterit hyvässä hapessa. Tein ton flägi jutunkin, mutta sen käyttö jäi vähemmälle. Ehkä puran sen tarpeettomana.

Kokoajan tässä joutuu pohtimaan kerralla oikein tekemisen merkitystä. Nyt oon tehnyt monta osaa useampaan kertaan. Toisaalta jos saan tässä vaiheessa iteroitua hyvän rakenteen saattaa hyöty realisoitua kuukausia myöhemmin. Silti, voishan sitä tehdä oikein heti ekalla kerralla.



Tiistai 24. December 2019


Ei koulussa


Keskiviikko 25. December 2019


Ei koulussa.



Torstai 26. December 2019


Nyt tarvii saada % konvertteri ja ei konvertointi erilleen. Oli jääny erottelematta. Johtuu siitä että ajattelin että % konvertteri käsitellään samalla tavalla kuin teksti jota ei konvertoida. Se oli väärä ajatus. Sen laitan tänään kuntoon. Tarkoittaa pientä säätöä struktuurissa.


% konvertteri on nyt hyvässä hapessa. Josko vaikka chekkais leaksit. On jääny muistia vapauttamatta. Arvaan missä ongelmat lienevät. Kuitenkin, näitä ei pitäis jäädä yhtään. Pitäisi olla peruskoodausta noi muistien vapauttamiset. 


Nyt meni taas libft kirjaston yksi funktio pohdintaan. Leaksit syntyi kun laitoin allokoidun struktuurin linkattuun listaan lstnew funktio allokoi uuden alueen ja kopioi struktuurin. Elikkä alkuperäinen struktuuri pitää vapauttaa. Nopeuttaisi toimintaa jos lstnew ainoastaan tallettaisi pointterin jo tehtyyn struktuuriin. Tarvii vähän pohtia kumpi on parempi vaihtoehto.

Nyt on % konvertteri kunnossa.





Perjantai 27. December 2019


Tänään korjaan muutamia yksittäisiä kummallisuuksia. Ei näitä pitäisi olla, mutta on kumminkin. Samaten voisin pohtia miten funktiota voi nopeuttaa. Yksi ajatus on pakata tulostettava string ennen write operaation kutsumista. Nyt kaikki substringit kirjoitetaan yksi kerrallaan. Write operaation on todettu olevan hidas. Elikkä yksi write kutsu monen sijasta vois nopeuttaa. Saa nähärä, kuinka äijän käy.


Parameter

Hash

Zero

Minus

Plus

Space

Width

Precision

Prefix


                               Pre-fillers|Prefix|Zero-fillers|Parameter|Post-fillers




Lauantai 28. December 2019


Sen verran tukkoonen olo vieläkin että ajattelin (huanosti kävi) että skippaan koulun tänään. Innostus vei voiton. Piirtelin eilen kuvausta ft_printf funktiosta. Siinä prosessissa sain uuden idean miten strukturoida output data. Joku sanoos että ei saa koskia toimivaan osaan. Moon sitä miältä että parasta löytyy sokeri pohojalta (huanosti kiriootettu lause). Ja toisaalta miksi jättää oppiminen pualimoohin kun on just löytäny jännän jutun.

Toisaalta tuli eilen ja aamulla luettua float tyyppisen muuttujan syvempään olemusta. Voi olla että teen sitäkin. lstnew funkio tarttis kirioottaa uurestaan. On sen verran säälittäväsi (hiras) kiriootettu. Se voi hajottaa nykyysen get_next_line funktion toimivuuren. Koriaan sen kans jos niin käy.


Float konvertterin kanssa meni koko päivä. Eikä valmista tullut. Tein toteutuksen paloittelemalla integer ja desimaaliosan erikseen. Siitä ajauduin ongelaan jossa integeriä tarvii lisätä yhdellä jos desimaalin pyöristys sen vaatii. Tarvi pohtia asia uudelleen.





Sunnuntai 29. December 2019


Floatin tekoa ajattelen jatkaa. Nyt teen pyöristyksen precision arvon perusteella ennen integer desimaali splittausta. Se ehkä toimii. Bigint metodi on mahdollinen ratkaisu isompien desimaalien tarkkuuteen. Siihen en tässä vaiheessa mene.

Toisena juttuna ajattelin toteuttaa jo edellisinä päivinä pohtimani output stringin paloittelun. Jalostin asiaa aamulla eteenpäin. Nyt se alkaa olla totutuskelpoinen. Teen sen ensin float konvertterille ja sen perusteella päätän miten jatkan.


Nyt on float konvertteri hyvässä hapessa. Sain tehtyä sen uudella struktuurilla. Seuraavaksi siirrän muut konvertterit uuteen struktuuriin. Niin ja sain piirrettyä open officella kuvan toteutuksesta. Hyvä alku solutionin esittämiseen. 




Maanantai 30. December 2019


Lisään pari input variablea mun struktuuriin. conv_type ja param_type.

param_value ajattelin laittaa void tyyppiseksi. Sitten voin laittaa sinne mitä tyyppiä tahansa. Tai se kait pitää laittaa void* tyyppisenä. Pointterin koko on sama riippumatta mitä sinne tunkee.  Yks juttu täs projektis on alkanu kiinnostaa (siis häirittöö). Elikkä kärsiikö koodin nopeus jos teen koodista strukturoidun ja helposti luettavan. Toteutuksen pitää olla hyvin strukturoitu, helposti luettava ja nopea. Jos joku kolmesta puuttuu, tarkoittaa se face to face keskustelua peilin edessä (miten meni niinku omasta mielestä). Nyt mun koodi on 6% (eli mun funktio printtaa 6 riviä siinä kun standardi funktio printtaa 100 riviä) siitä mitä libc kirjaston printf on. Elikkä säälittävän hidas on mun toteutus.


Nyt oli eka päivä semmonen fiilis että printf funktio on valmis. Okei, hajotin sen kun haluan tehdä kaikki palat uudella struktuurilla. Nyt ainoastaan float (double) on uudessa formaatissa. Eli tekemistä on vielä.



Tiistai 31. December 2019


Innostuin lähteen kouluun. Toisaalta oli vähän pakko kun eilen tajusin vasta kotimatkalla miten uutta struktuuria kannattaa hyödyntää. Kannattaa lukea man 3 printf sivulta vaatimukset ja toteuttaa ne yksi kerrallaan . Höh, sanon minä.

Menee kyllä aika haastavaksi iteroida vaatimukset. Ei ne ihan yks yhteen oo man sivulle kirjoitettu. Iteroimalla sain o ja f convertterit toimimaan uudessa struktuurissa. Nyt on se hyvä juttu että samalla sain kuvattua open officeen miten solution on tehty ylemmällä tasolla. Samalla rulet eri konverttereille on helpompi lukea sieltä.




Keskiviikko 1. January 2020


Ei oo koulupäivä tänään. Pohdin vähän termiä ”muutos” nuan niinku omasta näkökulmasta. Vaikka menneenä vuonna (2019) aloitin täyspäiväisen opiskelun, otin opintovapaata töistä ja aloin kirjoittamaan blogia en koe mitään sen isompaa muutosta. On ollu mulla ennenkin tapana innostua jostain asiasta ja lähteä toteuttamaan sitä. Nyt vaan satuin innostumaan opiskelusta hivehelsinki koodikoulussa ja kaiken lisäksi innostuin toteuttamaan innostuksen kohteen. Siinä miäles voi muutoksesta puhua että työtehtävät todennäköisesti muuttuu kun töihin taas jossain kohtaa palaan. Toisaalta on työtehtävät ennenkin muuttuneet. Tavoitteita en täskään kohtaa aseta. Keskityn nyt opiskelemiseen. Toisaalta, muistan kyllä kirjoittaneeni aika selkeät tavoitteet (liittyen oppimiseen) ennen kuin kouluun menin. Koitannu päättää, onko sulla tavoitteita vai ei, sanoos pohojalaanen. Pää kiinni, vastaas toinen.



Tiistai 7. January 2020


Kouluun, pitkän (viikko) tauon jälkeen. Kokeisiin ajattelin osallistua. Saa nähdä miten menee kun on tauko takana. Luottavaisin mielin, joskaan ei sitä koskaan tiedä.

80/100 tuli kokeesta, elikkä läpi meni. Yks enää puuttuu niin sitten on kaikki 5 saavutettu. Oli kyllä tuskaa tehtävien teko. Hain yhtä muistin allokointivikaa reilun tunnin. Lopulta löyty. Selvästi rutiinit on hukkunu lomalla. Toisaalta rauhallisuus ja sinnikkyys oli kohdillaan.

Printf projektissa sain c konvertterin uuteen struktuuriin. Integer (d ja i) vaatii pientä säätöä struktuuriin. Sinällään jännä juttu että en heti tiedä onnistuuko niin kuin ajattelin sen toteuttaa. Elikkä pienen uuden oppimisen paikka.


Keskiviikko 8. January 2020


Tänään vois olla se päivä kun saan ft_printf projektin valmiiksi. Aika kova tavoite. Ajattelin että en tee sen enempää lisäfunktioita. Teen niitä sitten kun tarvetta ilmenee. Rakenne on nyt sellainen että sen pitäisi kestää tulevaisuuden haasteet tosi hyvin. Mutta eihän sitä tiedä jos innostuu.


Toisaalta binary muunnos vois olla hyvä. Sille on usein tarvetta. Toisena printable string. Elikkä jos haluu nähdä onko jossain muistialueella lukukelpoista tekstiä. Värit, tietysti. Nopeutta tarvii saada lisää. No, taitaa mennä valmistuminen huomiselle.


Sain siirrettyä kaikki konvertterit uuteen struktuuriin. Jäi vielä putsattavaa vanhoista tarpeettomista apufunktioista. Leakseja on jäänyt. Voi liittyä tarpeettomiin apufunktioihin. Kaikki ei ole norminetten mukaisia. Liian pitkiä rivejä, liika rivejä apufunktioissa ja liian monta funktiota yhdessä tiedostossa.


Tuli innostuttua yhdestä haastavasta palikasta liittyen design projektien hallintaan. Tavoite on tehdvä hiveHelsinkiin web pohjainen sovellus jolla hallitaan oppilaiden tekemiä projekteja. Keskusteltiin pari tuntia aiheeseen liittyen. Frontend, backend ja access koulun tietokantaan on valmiina. Elikkä hyvää pohjaa on olemassa. Kiitos meidän osaavien oppilaiden. 



Torstai 9. January 2020


Tänään putsaan koodia tarpeettomaksi käyneiden apufunktioiden osalta. Leaksit pitää saada kans pois. Sen jälkeen on ft_dtoi funktio, joka tarvii rakentaa uudella ajatuksella. Nyt siinä on liikaa rivejä. Tiedostoissa saattaa olla liikaa funktioita. Powerpoint tarvii päivittää kans. Ehkä lisään sinne kuvat liittyen parametrin käsittelyyn. Se on oma jokaisella konvertterilla.


Reilut kymmenen apufunktiota lähti pois. Se kertoo siitä että struktuuria on uusittu useampaan kertaan. Leaksit lähti pois. Osaavampana olisin voinut tehdä muistin vapautukset heti koodia tehtäessä. Normin mukaiset korjaukset. Elikkä muutama liian pitkä rivi, liian monta riviä funktiossa (paloittelu korjaa asian) ja funktion nimet tabuloitu eri kohtiin.



Perjantai 10. January 2020


Tänään tarvii saada ft_printf normien mukaiseksi. Siinä tavoitetta tälle päivälle.


Valmista tuli. Tein samalla pari bonus funktiota. dprintf ja sprintf. Toinen printtaa tiedostoon käyttäen file descriptoria (fd) ja toinen printtaa stringiin. Nopeus on järkyttävällä tasolla. 6% standardista. Ei hyvä. Jätän asian nyt hautumaan. Palaan aiheeseen joskus in future.


Oli taas kerran hyvää keskustelua kahvipöydässä fdf projektista. Mä niin tykkään näistä keskusteluista. Siinä oppii käsittelemään graafista interfacea. Mun ajatus oli (ei oo enää) tehdä push_swap projekti, jossa opitaan sort algoritmeja. Nyt näyttää siltä että grafiikan osaaminen on hyvä asia siinä projektissa. Siksi tehnen fdf projektin ensin. Saa nähärä kuinka käy.


Huomenna ehkä pushaan ft_print projektin ja otan evaluointeja.



Lauantai 11. January 2020


Vielä pari tuunausta ft_printf projektiin. Sitten push ja evaluoinnit käyntiin. Ehkä luen vielä projektin kuvauksen läpi. Ettei mitään unohtunut. Vaatimusten käsittely on se asia mikä ei oo vieläkään sillä levelillä kuin pitäis olla.  Tuloo se kauhia kiirus (ei mihinkää) saara projekti valamihiksi.


Löyty vielä yks issue Makefilestä. Ei tehnyt obj folderia jos folder puuttui. Tämä on case kun git repo kloonataan. Onneksi testasin kloonauksen. Ft_sprint funktiossa oli kans vika liittyen stringin lopetusmerkkiin. Nyt on sekin korjattu. Pidän kaffepaussen ja sen jälkeen settaan projektin valmiiksi. Evaluoinnit alkaa sen jälkeen. Koulussa on aika vähän porukkaa. Se tarkoottaa haasteita evaluoijien löytämiseen.


Muutama asia jäi vaivaamahan ft_printf projektissa. Elikkä jos feilaa niin tiedän muutaman asian jotka parannan seuraavalla kerralla.


Kaks evaluointia meni detaleista jutellessa. Huomenna on kolmas. Sitte hähärähän kuinka käy. On hiukan epävarma olo miten käy. Toisaalta on jo kymmenen+ ideaa mitä parantaa jos mulinette (se purnukka pilvessä) antaa tylyn tuomion. Jos joku kysyy mikä on miäles niin vastaan että push_swap (seuraava projekti) mutta teherähän tämä ft_printf projekti valamihiksi ensin.




Sunnuntai    12. January 2020


Kolmas evaluointi ft_printf projektille tänään. Sen jälkeen mulinette (purnukka pilvessä) antaa tuomion funktion toimivuudesta. Evaluointien hyöty mulle on siinä että saan kertoa funktion toteutuksen ja huomaan siinä kertoessa asioita jotka olisin voinut tehdä paremmin. 


Nyt on projekti finaalissa. Jäi nippu asioita parannettavaksi. Laitoin ne todo listalle tulevaisuutta varten. Eniten jäi kaivelemaan funktion nopeus. On vain 6% standardi funktiosta. Tua on kauhia nöyryytys. Pahinta on etten heti tiedä mistä se tarkkaan ottaen johtuu. Ideoita parantamiseen on miäles. Hyvä miäli on poistette ja nyt taas fokusoorahan kohti seuraavia haasteita. Notta ri...s, sanoos pohojalaanen (ei hiano sana tua).


 Push_swap projekti on seuraava. Siinä sortataan integer lukuja mahdollisimman tehokkaasti. Elikkä nopeesti ja vähillä siirroilla.