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.
Näitä on kiva lukea. Itsekkin melkein menin Hiveen, mutta sitten iskikin kiva työpaikka muualta.
VastaaPoista