Anselista oikealle

logo

Semmonen jokin

Aika tiukka viikko takana. Tosin ei tullut tehtyä kuin kaksi isompaa harkkatyötä. Tänään sain graafisten käyttöliittymien ensimmäisen (ainoan pakollisen) harjoitustyön tehtyä. Vielä yksi (sama aihe, eri kieli) niin opintopisteitäkin saa 2 enemmän kuin yhden harkan versiossa.

Grakon aiheena oli kiintolevyn vapaan tilan visualisointi, toteutuskielenä C#. Kiitos tässä Microsoftille varsin toimivasta Visual Studio 2005 Express:sta. Ilmainen ja melko toimiva kokonaisuus, käyttölisenssikin taitaa olla aika vapaamielinen. Sharpdevelop:lla pääsi alkuun, mutta VSE se vasta helpotti ohjelman kirjoittamista automaattisella jäsenfunktioluonnilla ja refactorointikaluilla (muuttujan/funktion esittelyn uudelleennimeäminen muuttaa nimiä kaikissa tarpeellisissa paikoissa, helpottaa mm. fingelskan poistamista koodista).

Edellisen kappaleen 'melko' ja 'varsin' johtuvat yksinkertaisesti siitä että tuoolla pienelläkin ohjelmalla kirjoittaminen hidastui päivän lopuksi, editori lagasi silminnähden sitä kun kommentoin koodia. En tiedä mitä se siinä teki, mutta.. Yksi vähän outo ominaisuus on helppien (msdn-online) heikko latausnopeus, jokainen sivu latautui vähintään 10s ja alapalkki näytti tuhatta ja sataa erillistä latausta. Niinpä sitä ohjetta ei tullut käytettyä kuin koemielessä, google löysikin ohjeita paljon paremmin.

Itse C# -kielestä jäi vähän kaksijakoinen mielikuva. Yleisellä tasolla ihan kiva, melkein skriptimaisen helppo, joskaan en tarvinnut enkä kokeillut säännöllisten lausekkeiden tukea. Pythonista ja jopa C:stä jäätiin kauas mm. merkkijonomuotoilussa. Microsoftin vastine näille on käsittämättömän rujo (tai vaihtoehtoisesti en ymmärtänyt sitä, kyllä printf(3):n parametrien tajuamiseen meni oma tovinsa, enkä sitä tuohon kuluttanut). Funktiomaiset getteri/setterit olivat ihan hyviä ominaisuuksia, näiden käyttö ei vain ollut virtaviivaista automaattisen täydennyksen kanssa sillä näiden käyttö on erilaista kuin funktioiden. Olisikin ehkä ollut toimivampaa sallia näiden käyttö myös tyhjän parametrilistan (esim. Foo.Bar() <=> Foo.Bar ) kanssa. Kaunista näissä oli tavallaan se että täydennyksessä ei ollut tuplalistana getteri/settereitä eikä järjetöntä listaa samalla sanalla alkavia funktioita.

Nyt viikonloppuna viritin myös sisäverkon verkkolevypalvelimen toimimaan. Käytössä on samba linuxin päällä, sillä Tanju käyttää sitä Windosistaan (kuin myös välillä minä). Siirsin sinne dataa, olosuhteiden pakosta ensin Windowsista. 10-megaisesta putkesta dataa tuutin täydeltä ja muutaman gigan siirtäminen kesti pari tuntia. Nykyisestä kovalevystä kirjoitusnopeuden tiputus on noin 50-kertainen. Kokeilin samaa sitten Linuxista ja ainakin palvelimen käppyrät näytti että putki oli entistä enemmän tukossa, siis melkein teoreettisella kantorajalla. Välissä on kuitenkin yksi hubi, joten jonkin verran dataa ihan varmasti joutuu tippumaan. Kaiken lisäksi kaiken aikaa toimi hyvin, hyvin sulavasti ssh-yhteys palvelimelle. Olin tästä oikeasti tosi yllättynyt.

Tänään oli myös isänpäivä. Sain lahjan, söpön mukin Aksulta, siinä on semmosta tuhrittua maalia, aika taiteellista. Tanja uhkaili että pääsen heräämään aamuviideltä, palkintona äitienpäivästä, mutta näytti sitten heltyneen ja armahtaneen. Tehtiin ja syötiin suklaakakkua (Tanja teki taikinaa, minä popsin suklaata ja voitelin vuokaa..). Oli grakon takia vähän kiire olo, mutta käytiin kuitenkin vielä ulkonakin kävelemässä. Pitäisi tehdä sitä useammin.

14/11/2005 @ 01:56 | /anseli/koulu/tyon-tayteista | Kirj. 3 | #

Tykillä ankkoja lammikossa

Pääsin tänään eroon puolikkaasta työläästä kurssista. Tai en tiedä kuinka työläs se toinen varsinainen tehtävä siinä on, tämä oli kaikkiaan noin 18 tunnin työn takana.

Kyseessä siis testauskurssin yksikkötestaus-osio. Testattiin Mozillan URL-parseria, sen muutamaa funktiota. Tarkoituksena oli (päällepäin) saada ohjelmavuo kulkemaan jokaisesta mahdollisesta koodissa olevasta ehdosta.

Meidän ratkaisu oli käyttää perustestejä ja sen lisäksi permutoida muuttujia (funktiot palauttavat tiettyjä arvoja muuttujiin jos niille annetaan sopivat parametrit). Tämä osuus 'räjähti käsiin'.

Vähän lukuja. Testataan 8:aa funktiota. Skripti joka generoi testit on 600 riviä pitkä, pythonia. Perustestejä joita varioidaan on 45. Generoituja testejä on yhteensä 7216. Generoidun koodin koko on 6Mt, siis 4:n korpun verran. Käännöksen jälkeen itse ohjelma joka suorittaa testit on 21Mt:n kokoinen. Koulun tarjolla oleva quota ei oletuksena riittänyt sen kääntämiseen niin että kaikki testit olisivat olleet kerralla mukana.

Näin jälkeenpäin ajateltuna muutama tarkemmin suunnattu testi hyvin pienellä permutoinnilla olisi ajanut aivan samaa tarkoitusta, pienemmällä vaivalla. Tässä tapauksessa itse testien kääntäminen muodostui pullonkaulaksi, niiden ajaminen ei ollut kuin parin sekunnin homma. Toisaalta tuo toteutustapa oli vaan niin pirun hauska.

09/11/2005 @ 20:11 | /anseli/koulu/tykilla-ankkoja-lammikossa | Kirj. 0 | #

Semmoinen koulun alku

Nyt alkaa sitten N:s vuosi koululla. Viikot ylibuukattuna, mutta mitäs jätin kursseja kesken niin paljon, pitää nyt reipastaa tahtia entisestään. Tein kalenterin koulukursseista (kun siitä oli sen verran paljon hyötyä viimekin vuonna) KOrganizerilla, ja kun sitä olisi mukavaa katsoa muualtakin kuin omalta koneelta, käytin PHPiCalendar:ia kalenterin esittämiseen. Nyt olisi vielä hakusessa joku webikilke jolla saisi myös lisättyä tapahtumia kalenteriin, niin ei olisi niin riippuvainen omalla koneella olosta.

Tein viikonloppuna kaavion siitä miten suoritettujen opintoviikkojen määrä on kasvanut ajan suhteen. Käppyrä oli eksponentiaalinen.

Aksullakin alkaa pian 'koulutie'. Tai ainakin yhteiskuntaan muljuuttaminen. Viime viikolla käytiin päiväkodissa tutustumassa, Tanja on siellä sitten käynyt päivisin Aksun kanssa totuttautumassa. Torstaina mennään sitten yhdessä Aksun kanssa ja vain toinen tulee ulos.

30/08/2005 @ 23:54 | /anseli/koulu/ns-vuosi | Kirj. 0 | #

Opiskelijan elämä on perseestä

Parental Advisory: Explicit Content Vihaan näitä puoli vuotta kerrallaan jatkuvia työpäiviä. Jos on oikeassa työssä, työpäivä loppuu kun lähdet töistä, tai sinulle maksetaan loppuajastakin. Opiskelijana pääset tekemään hommaa jatkuvasti, käytännössä taukoamatta ja kun otat breikkiä, mietit vain että olisi voinut tehdä tuotakin pidempään.

Sitten on näitä ääliöitä jotka luulevat että opiskelijalla ei saisi olla elämää, kaikki aika pitäisi pyhittää opinahjolle ja valmistua mahdollisimman nopeasti. No haistakaa tuore paska. Jeesuksen perkele kun tekisi mieli ostaa jotain joutumatta miettimään kuinka monen viikon ruuat siinä menee.

'Laina on hyvä tapa rahoittaa elämää, sillä minäkin pärjäsin N vuotta sitten'. Ja se näkyy. Maksoit sitä mahalaukku haava-arvilla pois, söit tonnikalaa makarooneilla, sitä samaa paskaa mitä opiskelijanakin, sen 15 vuotta, onnittelut. Menepä nyt kertomaan psykiatrillesi kuinka elämä on niin suorituskeskeistä ja kuinka tekisi mieli muuttaa maalle hakkaamaan halkoja. Mutta älä tule minulle tyrkyttämään tuota samaa hirttosilmukkaa.

Kevyttä liioittelua, tietenkin. Tulipa miettineeksi että asiat voisivat olla huonomminkin. Pankissa viiskyt tonnia lainaa, vakuuttamaton talo palamassa, itse juuri valmistunut udmurtian kielen asiantuntijaksi, kaksikymmentä allergiaa ja puoluekannaltaan perussuomalainen. Ehkäpä tämä tästä.

15/05/2005 @ 00:31 | /anseli/koulu/opiskelijan-elama-on-perseesta | Kirj. 0 | #

Haluatko tuplata?

Eilen (jos lasketaan heräämiset, kellon mukaan toissapäivänä) oli kaksi tenttiä. Tänään oli kaksi. Huomenna on kanssa kaksi tenttiä. Ylihuomenna on yksi ja ensi maanantaina taas kaksi. Hyvin suunniteltu tenttilukkari mulla.

Jäljellä olisi enää yksi harjoitustyö, tietokonegrafiikka. Valitettavasti se on 'hyvällä alulla', ts. siinä on ongelma jota en kevyellä pähkäilyllä saanut auki ja nyt koodin kirjoittamisen uudelleen-aloittaminen on mäkilähtöistä.

Toinen ongelma sen kanssa on se että minulla ei ole tällä hetkellä toimivaa 3D -rautaa. Tai rauta toimisi, mutta ajurit eivät, ainakaan siinä ympäristössä jossa on mahdollista ohjelmoida. Tietysti voisi käynnistää windowsiin, asentaa siihen vmwaren+linuxin, ohjelmoida siinä ja ajaa 3D GLX:n yli itse windoesissa. God bless my convoluted mind.

11/05/2005 @ 02:44 | /anseli/koulu/eka-kerta-sitten | Kirj. 0 | #

Montako kuukautta

Kirjoittelen tässä maanantaiksi esseetä aiheesta 'Mieliohjelmointikieleni sisältämät ominaisuudet'. Kohteeksi valitsin pythonin, tietenkin.

Aihetta 'avatessani' en voi kuin muistella venäläisen kirjailijan, Sergej Dovlatovin, esittämää anekdoottia.

Jutun juoni on siinä että Dovlatov käy katsomassa kielitieteellisellä osastolla tenttiä valvovaa kaveriaan ja kysyy siltä: "Kuinka kauan sinulla menee että avaat Pushkinin alkukauden tuotannon kielikuvien kehittymistä?" (tmsv.), kaveri vastaa että siihen mennee puolisen kuukautta. Tähän Dovlatov: "Ja näiltä tyypeiltä se sujuu vähän alle kolmessa tunnissa".

Kovin laajasti en siis aihetta pysty käsittelemään, mutta esseen tehtävänannon päätarkoitus lienee saavutettu jo sillä että saadaan ajattelemaan yksittäisten ominaisuuksien vaikutusta ympäristöön. Ajattelemaan kokonaisuutta ja sitä ohjaavaa kättä (harva ohjelmointikieli on muotoutunut täysin sattumanvaraisesti, ilman yksittäisen instanssin suurempaa näkemystä).

08/05/2005 @ 00:05 | /anseli/koulu/aiheen-avaus | Kirj. 0 | #

120 pikkelsiä/sek

tgraf05-fin-2.png Hitaaksi kävi minunkin koneen prosessori kun jauhoi oheista kuvaa. Kuva on tulos tietokonegrafiikan harjoitustehtävänä olleesta POVRay -osiosta.

Edellinen osio, algoritmit, meni kannaltani huonosti; palautin kolme työtä, sain läpi vain kaksi. Virhe oli pieni, mutta olin jo saanut tilaisuuden korjata työtä (ja korjasinkin sen ongelman), mutta en huomannut siihen jäänyttä virhettä. Aluksi ketutti jumalattomasti, kuitenkin asiaa ajateltuani ymmärsin että turhaan. Ei se ole henkilökohtainen loukkaus vaikkei assari aja kaikkia testejä ja kerro kaikki näkemänsä ongelmat. Koulutus on kuitenkin diplomi-insinöörin tutkintoon tähtäävä ja siinä hommassa on osattava tehdä asiat kunnolla eikä sinnepäin.

Eihän sitä sillanrakennustakaan yritetä virhe kerrallaan; rakentaen aina uusiksi pienin korjauksin. Sellaisessa hommassa työ tehdään kerralla hyvin. Softan kirjoittaminen (tässä siis algoritmin toteutus) on ihan yhtä tärkeää tehdä kunnolla.

15/04/2005 @ 03:12 | /anseli/koulu/tgraf2005 | Kirj. 0 | #

Parempaa tyyliä kaivataan

Yliopistossa ohjelmointia/tietotekniikkaa opiskelemisessa on mielestäni erityisen hyvänä puolena se että ohjelmistaan saa palautetta. Työssä koodistaan ei oikeastaan voi saada kunnolla palautetta. Ehkä jotain 'kylläpäs sä olit taas kännissä kun tuon väänsit' -läppää erityisen kulmikkaasta pätkästä, mutta mistään syvällisemmästä on isommassa paikassa turha unelmoidakaan.

Vai pystyykö joku kuvittelemaan tilanteen jossa peri kuukautta projektin parissa viettänyt tyyppi kutsutaan pomon boksiin ja kerrotaan että 'nyt sulla on tyyli ollut vähän hukassa, kokeile käyttää enemmän välilyöntejä if() -lauseissa ja koodilohkojen alussa'. Eihän tämä palaute yliopistollakaan ole ihan sellaista, mutta likelle liippaa ainakin 'alkeis' -kurssien kanssa.

Tämän kevään/talven kurssit ovat tässä mielessä olleet minulle haastavia. Jo useampaan kertaan olen saanut palautetta että koodini ei vastaa laitoksen 'tyyliä'. Kohtuullisen pitkään (8v) C -sukuisten kielten kanssa pelehtineenä on hyvin vaikea oppia käyttämään jotain muita konventioita kuin niitä mitä on itse hyväksi havainnut. Töissä oli helppo kirjoittaa sen tyylin mukaista koodia, koska siellä enimmäkseen lisäili valmiiseen koodiin. Uusi koodi olikin sitten helposti vanhan tyylin mukainen. Täällä joutuu sen sijaan kirjoittamaan ohjelmat enimmäkseen uusiksi alusta asti ja siten noudattamaan tyyliä ilman vertaisesimerkkiä.

Ongelmallisinta onkin ollut hyväksyä ylipäätään kritiikkiä koodistaan. Tänäänkin onnistuin meuhkaamaan asiasta aivan liian pitkään ennen kuin paksuun kalloon upposi että 'hei, assari oli ihan oikeassa, tuo koodi on tyylillisesti sheissea, jopa minulle'.

19/03/2004 @ 23:24 | /anseli/koulu/palaute | Kirj. 0 | #

Tänään sen tajusin.

Tajusin mikä on minua niin pitkään matematiikassa ja fysiikassa hämännyt. Pohja on siinä että näen kaiken ohjelmoijan silmin, iteroitavana ja laskettavana. Sen takia matemaattiset tarkkojen ratkaisujen keinot ovat näyttäneet hyvin vetoavilta, nehän ovat suorat vastaukset, ilman pitkällistä iteraatiota.

Kuitenkin matematiikassa on se rajoite ettei se voi kunnolla esittää iteraatiota. Jonot näyttävät olevan vähän sinne päin, mutteivät ihan kaikkea mitä toivoisin niiden olevan. Matematiikan syntaksi ei palvele minua niin hyvin kuin ehkä voisi. Matlabin syntaksi näyttää syntyneen lähinnä matriisioperaatioiden tietokoneellistamisesta, eikä ole mitenkään luonnollisen tuntuinen, Mathematican ohjelmointisyntaksiin en taas ole vielä ehtinyt pahemmin perehtymään.

10/06/2003 @ 16:16 | /anseli/koulu/luonnont | Kirj. 0 | #

matikan välikoe

Ja taas se nähdään kuinka käytännön kokemus on tärkeämpää kuin teorian tunteminen. Eipä yksinkertaisistakaan matriisilaskuista oikein saanut järkevää tulosta aikaiseksi kun ei tehnyt laskua enempää kuin yhden kerran laskareita varten. Olipa vielä sellaista että olisi hyvää tietää muutenkin (kannan vaihto).
06/03/2003 @ 14:34 | /anseli/koulu/irl | Kirj. 0 | #
Voit tarkistaa HTML:n ja CSS:n oikeellisuuden.