Sunday 28 November 2010

Koodaustavat, koodin laatu ja oliot

Sitä sanotaan että koodin laatua kannattaa tarkkailla. Oliokoodin sanotaan olevan helppolukuista. Koodin lohkoja kannattaisi eritellä. Kaikki nämä ovat myyttejä joita itseoppinut, monta vuotta proseduaalisella kielellä leikkinyt, koodari on kuullut. Onko näissä myyteissä todenperää?

Otetaanpa nyt aluksi käsittelyyn tuo koodin laatu. Esimerkkinä elävästä elämästä, koodari toteuttaa kokeiluaan pienen skaalan skriptimoottorista. Hän kääntää päänsä sisällä innoissaan suunnitelmiaan pseudoksi ja pseudoa lopulliseksi koodiksi. Ympäristö on proseduaalinen, kuten jo aiemmin sanoin, ja koodari on toteuttanut moottorinsa kaikkien taiteen sääntöjen mukaan muutaman, riippuvuussuhteita omaavan funktion sisään. Hänellä on iteraatiorakenne, jonka sisällä hän läpikäy tulkattavaa skriptiään läpi rivi riviltä. Tämän sisällä hänellä on Select- tai Switch – rakenne, jossa hän tarkistaa jokaisen rivin ensimmäisen sanan sisällön.

Projektin alkuvaiheessa homma kulkee helposti. Koodari kirjoittaa ’Case ”print”’ ja sen alle tulee tulostuskomennon toteutus. Komento tukee tietysti muuttujien tulostusta, joten se tarvitsee jonkinlaisen muuttujarajapinnan. Koodari ei ikävä kyllä ole vielä suunnitellut sellaista, mutta äkkiäkös sen tulostuskomennon kylkeen kasaa. Tämä luo 4-6 apumuuttujaa moottorin toteutukseen.
Koodari toteuttaa innoissaan uusia ominaisuuksia moottoriinsa oivallettuaan iteraatiorakenteen ja Select/Switchin yhteiskäytön tarjoamat riemut. ”Jatka painamalla mitä tahansa nappia” – ominaisuus ja ruudunpäivitys etenkin ovat kivoja toteutettavia, molemmat vaativat Case – avainsanan lisäksi tasan yhden rivin koodaajan käyttämässä ympäristössä.

Koodari toteutti nämä helpot jutut ensin, koska yleinen käytäntö on että vaikeat asiat jätetään päähän hautumaan ja helpot hoidetaan alta pois. Helppojen jälkeen on vuorossa vaikeista toteutuksista helpoin: kehittyneempi tekstintulostus. Koodari ajattelee kloonaavansa Printin kanssa käyttämänsä muuttujatsydeemin Text – komentoon. Asia ei ollutkaan aivan niin yksinkertainen, sillä Print välittää itselleen jostain kumman syystä iteraatioiden välissä dataa apumuuttujassa nimeltä apumuuttuja. Jos Text tulee tähän Printien väliin, niin yllätys on suuri kun printit eivät kommunikoi keskenään ja syntyy täysin odottamattomia bugeja.

Miten tämä olisi pitänyt hoitaa? Noh, kuten sanoin, tapaus on elävästä elämästä ja tuo koodari olin minä. Alun perin ratkaisin tapauksen kirjoittamalla moottorin seuraavaan versioon muuttuja-apin, järjestelmälle annetaan muuttujan nimi ja arvo ja se säilyttää muuttujia isossa läjässä. Myöhempi kokemus on osoittanut että homman olisi voinut toteuttaa myös niin, että toteuttaa moottorin luokkana niin, että mm. skriptin rivi ja muuttujasäilön osoite säilytetään privaatissa muuttujassa, skriptin komennot (kuten Text ja Print) toteutetaan luokan yksityisinä metodeina, ja julkinen Aja() – metodi tulkkaisi skriptin rakenteet, ja rivin ensimmäisen sanan perusteella kutsuisi näitä yksityisiä Text() tai Print() – metodeja. Näin voitaisiin käyttää Print()n kylkeen rakennettua muuttujapurkkaa myös Text()ssä. Tietysti kaikkein paras menettelytapa olisi toteuttaa jokainen skriptimoottorin tukema toiminto omana metodinaan, ja iskeä tähän rinnalle joku muuttujaolio, johon on toteutettu se muuttuja-api.

Koska kyseessä kuitenkin oli proseduaalinen ympäristö, ei voitu konstruktoida ajettavasta skriptistä yhtä fyysistä oliota. Jos proseduaalisuus otetaan huomioon, lieneee fiksuinta kasata moottori joka tukee yhden skriptin muistissaoloa kerrallaan, ja mahdollistaa nopean skriptien poistamisen ja lataamisen. Tämän päälle moottorin sisäiset funktiot jokaiselle skriptin komennolle ja yhtenäinen muuttuja-API.

Tämä oli erittäin kehittynyttä koodin laadun tarkkailua, taisi mennä ajoittain jopa oliokoodin hehkutuksen puolelle. Yleistettynä ensiaskeleitaan ottava koodaaja ottaa koodin laadun huomioon kun hän tajuaa kuinka pääsilmukassa on 3-4 sisäistä silmukkaa ja sisentämättömän ja kommentoimattoman koodin vuoksi hän ei löydä salaperäisen kaatumisen syytä. Jos koodajan tapana olisi C:n sukuisissa jokaisen {-merkin jälkeen painaa tabia ja ennen jokaista }-merkkiä vähentää sisennystä noin tabin tai neljän välilyönnin verran, tai hänellä olisi Basicissa tapana jokaisen Whilen/Repeatin/Forin/Ifin/Functionin/Classin ja tälläisten rakenteiden aloitusavainsanan jälkeen painaa tabia ja vähentää sisennystä ennen näiden lopetusavainsanoja, olisi hänen helpompi lukea koodiaan. Sisennyssääntöjä kannattaa tarkemmin lukea vaikka täältä (http://www.coolbasic.com/phpBB3/viewtopic.php?f=12&t=2307 jos linkki ei toimi).

Jatketaan saman esimerkin kanssa. Sisennys auttaisi häntä lukemaan koodiaan, mutta etenkin jos hän on erehtynyt käyttämään taulukoita koodissaan, kannattaisi hänen lisätä aina taulukon käsittelylohkoon kommenttina kuinka taulukkoindeksit juoksevat (taulukko[0] == taulukko – nimisen taulukon ensimmäinen arvo, taulukko[TAULUKONKOKO-1]==taulukko – nimisen taulukon viimeinen arvo). Muutenkin vaikeammissa rakenteissa kannattaa viljellä kommentteja jotka A) helpottavat lukemista kun lukijan ei itse tarvitse arvailla että palauttaakohan se OBJWX(objekti) objektin maailma- vai ruutukoordinaatin ja B) antavat kommentoijan kertailla rakenteiden toimintaa.
Myöhemmin koodaajan uralla hän tulee kohtaamaan sen, ettei kaikkia muuttujia todellakaan kannata säilyttää samassa avaruudessa. Alussa kertomani skriptimoottoriesimerkki demonstroi jo mitä haittaa siitä on kun saman funktion sisällä on neljä apumuuttujaXää. Proseduaalikielissä näiden muuttuja-avaruuksien rajaaminen on tietääkseni mahdollista vain funktioiden voimalla, mutta ainakin C++ tarjoaa namespace – avainsanan jolla voi perustaa muistaakseni jopa funktioiden ja metodien sisällä omia avaruuksiaan. Puhumattakaan koko ohjelmalle näkyvistä nimiavaruuksista, jotka kykenevät sisältämään olioita(ja muuttujia), luokkia ja funktioita.

Avaruuksilla kikkailu helpottaa isojen datamäärien hallintaa. Jossain melko yksinkertaisessa 2D-pelissä (jotain miinaharavan ja tetriksen väliltä) voisi datan ja rakenteet järjestellä seuraavasti. Avaruuteen KIRJASTO toteutetaan luokat grafiikan ja IO:n hallintaan. Avaruus PELIOBJEKTIT sisältäisi sitten luokkarakenteet esim. tetriksen palikoilla tai miinaharavan miinoille. Avaruuteen PELINHALLINTA kirjoitetaan luokat pelin rakenteille, kuten luokalle joka ohjaa pelimoottoria. Lisäksi jos kaikki pelin vaatimat vakiot piilotetaan yhteen, globaaliin luokkaan, niin rakenne on melko selkeä suuremmallekin tiimille.

Nettisivut hyötyvät myös viisaasta arkkitehtuurista. En usko että kukaan, joka ottaa itsensä vakavasti nettipuolella, tekee käsin jokaisen uuden ilmoituksen ja artikkelin omalle sivulleen. Itsenäisten julkaisijoiden, eli nykyisten blogaajien, keskuudessa 90-luvun tapa oli aloittaa artikkeli kopioimalla <html><head>.......</head> - osuudet vanhalta sivulta uudelle. Tämä oli äärimmäisen vaivalloista ja turhaa, etenkin jos käytti html 3:a, eli ei hyödyntänyt CSS:ää muotoilussa. 90-luvun loppupuolella CSS alkoi tulla mukaan kuvioihin, tuoden mukaan keskitetyn ulkoasunhallinnan.

Riittääkö tämä lapselle, joka haluaa kaiken helpoksi vaikka se vaatisi hieman taitoa? Ei todellakaan, kuten vanha sanonta kuuluu. Jos työpöytäsoftan puolella voi abstraktoida konkreettisen abstraktiokerroksen, niin miksi nettisivuilla pitäisi tyytyä silkkaan tyylejä tukevaan merkkaukseen? Ei tarvitsekaan! Avainsana on palvelinohjelmointi! Kun sivun muodostaa lennossa palvelimella, joka tukee PHP5:ttä, voi käyttää monia luokka-ominaisuuksia mitä työpöytä-OO-kielet omaavat. Sen sijaan että leikkisi html:llä ja FTP:llä aina päivittäessään sivua, voi kasata sivuilleen hallintatyökalun (CMS, content management system), johon syötettyyn materiaaliin palvelinskripti sitten lisää tarpeellisen merkkauksen.

Jos käyttää PHP5:ttä, voi palvelinarkkitehtuurin toteuttaa joko hyvin tai huonosti. Olen havainnut hyväksi tavaksi sen, että kirjoittaa lähes koko sivuston toiminnan luokkiin, ja sitten varsinaisilla sivuilla muodostaa sivut näitä luokkia hyväksikäyttäen. Sen sijaan siis että Include()ttaisi <head>in ja
<div id="navigoinni">n ulkoisista tiedostosta ja päälle kirjoittaisi<div class="leipäteksti"> Lorem ipsum.......................</div>:n, voisi Includettaa yhden, luokat sisältävän tiedoston, tehdä olion luokasta PALSTAT, ja syöttää leipätekstipalstan sisällön luokkadokumentaation mukaan. Pitkällä tähtäimellä uskon tämän helpottavan ylläpitoa erittäin paljon. Jos en sitä ole vielä tarpeeksi lujaa toitottanut, kokeilen tämän viimeisen kappaleen oppeja parhaillaan Pröngin ja Yoolin kanssa. Vain tulevaisuus näyttää mitä tästä lopulta tulee.

Tässä tekstissä ei ole yhtään täyttä faktaa, kaikki ovat subjektiivisia havaintojani. Jos jotain on väärin, en vastusta vaikka joku korjaisi käsitykseni.

Monday 22 November 2010

Valmistuu...

Pröng 2011 alkaa olla uudelleenohjauksien säätöä ja luonnosten siirtoa vaille käyttökunnossa. Lisäksi joku kiltti persoona voisi suunnitella indexin layoutin paremmin, minulla on jotain henkkohtongelmia sen kanssa. Sen jälkeen voisin laittaa koti.mbnet.fi/pilpo/Luonnokset/ - hakemiston indexiin javascriptillä uudelleenohjauksen oikeaan osoitteeseen ja sitten voisi säätää Prong.tk - osoitteen osoittamaan oikeaan paikkaan. Tämän jälkeen olisi aika alkaa rakentaa Pröngiin jotain oikeita lisäominaisuuksia :)

Sunday 21 November 2010

Aikataulumuutos

En takaa Yearofourlordin valmistumista vuodenvaihteeseen mennessä. Koulun kolmosjakson työssäoppimisen työajat sotkivat suunnitelmani täysin, eikä tämä nuhatautikaan lupaa hyvää koodausenergialle. Pröngin pitäisi valmistua vuodenvaihteeseen mennessä, mutta tämä johtuu ainoastaan siitä ettei siellä ole paljoa tekemistä enää. Pitäisi valmistaa muokkausmahdollisuudet kommenteille ja luonnoksille, tehdä hieman töitä hiekkapaperin kanssa, siirtää luonnokset ja se on valmis käyttöön.

Thursday 18 November 2010

LUNTA SATAA

Minä niin tykkään valkoisista talvista.

Päiväni alkoi ihan kivasti. Herätys, aamupala, DS matkaan ja kohti koulua. Ehdin yllättävästi jopa bussiin. Siitä eteenpäin alkoikin mennä hauskasti. Hitaasti, mutta varmasti, bussi eteni karhusuolle. Sieltä vilkaisin motarille: siellä oli jo aamuseitsemältä ruuhka. Noh, bussi eteni omaa tahtiaan. Viheri oli täysin jumissa, jono ylsi viherin liikennevaloista petakseen asti. Noh, ei mitään kiirettä, vaikka näen sieluni silmin kuinka karjajuna ja E ohittavat leppävaaran kun näprään DSää jossain viherissä. Lopulta pääsimme liikennevaloihin ja kuskinpuolikas tekee päätöksen kiertää jonku hemmetin kauniaisten kautta! Ikäänkuin en olisi ollut jo tarpeeksi myöhässä!? Noh, huokaan ja toivon että opettaja on armollisella päällä vaikka on koepäivä. Bussi kulki eteenpäin ja yhtäkkiä huomasin pelastuksen: U-junan, joka oli pysähtynyt Kauniaisten asemalle. Kurottauduin äkkiä stoppinapille ja jäin bussista. Kipitin ("jalka ylös hangesta, jalka eteenpäin, jalka takaisin hankeen. sitten toistetaan toisella jalalla. tätä proseduuria jatkaen pääset asemalle") asemalle, ja odottelin E:tä, joka juna sentään oli AJOISSA!!! Kuljin sillä Pasilaan, sillä lopputuloksella että olin vain vartin myöhässä kokeesta.

Saa nähdä mitä loppupäivä tuo mukanaan :P Ties vaikka aktivoituisin D&W:n puolella kunnolla.

Saturday 13 November 2010

Mihin ihminen pystyy yhdeksässä tunnissa?

Katsokaa Pröngistä.

Tänään olen säätänyt ulkoasun kanssa pitkästä aikaa, toteuttanut etusivulle Uusimmat Luonnokset - alueen, Uusimmat Kommentit - alueen, toteuttanut Satunnaiset - sivun, toteuttanut kommenttien ja luonnosten poiston jne. jne.

Huomiselle, jos äikän työskentelyltäni ehdin, on siis jäänyt luonnosten ja kommenttien muokkaustoiminnot. Sen jälkeen voisi miltei siirtyä toteuttamaan keskusteluketjua. Keskusteluketjun jälkeen taitaa olla vuorossa jo luonnosten siirtäminen uudelle sukupolvelle :S

Uusia saavutuksia

Viime keväänä valmistuneen Siputtanian Aikakirjojen jälkeen aloin luomaan tarinaa henkilöhahmoista joiden ikä on vanhempi kuin itse Siputtanian. Nämä Espanjan asukit, El Lol, Kuningas Roska ja Pedro Lollaros, taistelevat tarinassa kotikaupunkinsa Castilian puolesta. Tämän suuren tarinan ensimmäinen osa valmistui päättyvällä viikolla. Seuraava osa on nyt työn alla.

Työn alla on myös Sceadugenga (miten kirjoitetaankaan :P) - tarina. Siitä ei vain ole tullut hetkeen mitään julkaisemisen arvoista.

Thursday 11 November 2010

Pröngin ulkoasuratkaisu

Suunnittelin kasaavani Pröngin oikeaoppisesti vasemmalle floattaavista <div> - elementeistä, sen sijaan että olisin käyttänyt <table>a. Noh, jos luette tätä ennenkuin olen ehtinyt korjata sivuja, näette täällä miten hyvin divit pysyvät kasassa. Tästä varmaan osaatte vetää johtopäätöksen että muutan merkkausrakennetta niin, että vain (html:llä katsoen) uloimmat palstat pysyvät diveinä, ja pääpalstalle/leipätekstipalstalle kasaan ulkoasun huonotapaisesti, mutta toimivasti (katsokaa vaikka nykypröngiä!), taulukkona.

Samalla sivulla näette suunnitelmaani uudesta värimaailmasta ja elementtien rakenteesta. Saa kommentoida, tähän blogiin tai Yooliin tai F&C:hen tai Pröngiin tai vaikka minne, kunhan pitää huolen että minä luen kommentin.

Tuesday 9 November 2010

Kapuff, Kapöff, PRÖNG!!!!

Pröngissä pitäisi nyt toimia kirjautumisen, luonnosten lisäilyn ja tutkailun (vasemman palkin formi + arkisto). Seuraavaksi voisin kirjoittaa hieman lisää ulkoasua, ja sitten ihmetellä sellaisia uusia ominaisuuksia kuten luonnosten rankkaus, luonnoskommentit ja recent comments. Kaiken tämän lisäksi luonnosID-juokseva nro alkaa nykyään 1:stä eikä 111111stä, joka kyllä voisi näyttää paremmalta...

Monday 8 November 2010

Tiivistystä

Eli, jos se ei vielä ollut selvää, niin naamakirjan tarkoitus on tarjota sirpaloitunut kuva projekteistani, ja tänne yhteenvedän projektikuulumiset järkevämmässä muodossa. Yhteenvedän seuraavassa viimeaikaiset naamakirjauutiset:

  • Yool - editor on palannut ideapöydälle
  • Pröng 2011n kirjautumisongelmat johtuivat nähtävästi huonosta kirjautumisliittymästä
  • C#:tä voisin jossain välissä harjoitella
  • Ja elämä edistyy

Kirjoitan bloggeriin, tänne, yool.blogspottiin parhaillaan pidempää esseetä koodin laadun tarkkailusta ja olio-ohjelmoinnin kivuuksista. Sen luulisi avaavan vielä tarkemmin Yool- ja Pröng 2011 - päivitysten perusteita.

Friday 5 November 2010

Yool-Editori

Tänään kun koodailin ruokatunnilla Pröngiä koulussa, mietin että alan kasvaa Notepad++:sta PHP:n suhteen ulos. Kaipailin lenteleviä koodi-ikkunoita á la Visual Studio, ennakoivaa kirjoitusta á la VS, ja paria muuta olioiden kanssa erittäin kivaa ominaisuutta joita VS:stä (etenkin Visual C#:stä) löytyy.

Yksi asia johti toiseen, ja yhtäkkiä löysin itseni Visual C#:n äärestä hakkaamasta koodia. Minulla oli valmiina alkeellinen UI, ja olin vääntämässä jonkinlaista syntaksivärjäystä PHP:lle.

Editorin rakenne on sellainen, että jos koodari omaa editorin koodin, on siihen ainakin vielä helppo ohjelmoida syntaksinvärjäystä muille kielille. Korvaa vain avainsanataulukot uusilla. Yritän pitää sen sellaisena, mutta en lupaa mitään.

Dokumentaatiota ja uuden opiskelua

Eilinen päivä meni uusia asioita opetellessa. Uuden Pröngin taustalla on nyt ~5 ajokelpoista luokkaa ja kaksi operointikelpoista, vielä-tyhjää myslitaulua. Toivotaan että osaan vielä muodostaa perus INSERT INTO, UPDATE ja DELETE - kyselyitä.

En tiedä kuinka moni lukijani A) ymmärtää näitä B) tarvitsee näitä C) kuinka monelle näitä dokumentaatioita kannattaa edes jaella, mutta kaikesta huolimatta dokumentoin suunniteltua Pröng 2011 - arkkitehtuuria.

Luonnokset tallennetaan tietokantaan tauluun, joka sisältää kentät {LID*, luonnos, pvm, sender}. (*luonnosID) Nämä tiedot menevät jo nykyisessäkin järjestelmässä "tietokantaan" eli kansioon täynnä tekstitiedostoja. Tämän lisäksi on kommenttitaulu, joka sisältää kommentit kauniissa sekamelskassa, ja kommentit assosioidaan luonnoksiin niissä olevan lid-kentän mukaan. Kommenttitaulun rakenne on jotain tyyliin {kid, kommentti, pvm, sender}.

Taustalla olevista luokista muutama sana: luokkia on html-<head>in luomiseen, fyysisten palstojen kirjoittamiseen, käyttäjille, tyyleille ja luonnosten käsittelyyn. Etenkin käyttäjäluokan toimintaa pitää vielä uudelleenmiettiä kiitos tämän, mutta muuten luokat alkavat olla valmiita koeajoon. Kun käyttäjäluokka on täysin toiminnassa, luon pari testikäyttäjää ja kokeilen floodata tietokantaa sormet ristissä Mekkaan kumarrellen Vishnua palvoen.

Muuten, jos joku käyttää naamakirjaa ja tietää nimeni, floodaan naamakirjaa nykyään näistä samoista asioista omalla nimelläni.

Tuesday 2 November 2010

Huono arkkitehtuuri

Vuodenvaihde lähestyy. Viime vuodenvaihteen eläneet tietävät mitä tämä tarkoittaa. Aivan, vuodenvaihteessa 2008->2009 Yool syntyi internettiin, Webs-palveluun (ex-freewebs). Silloin kaikki oli vielä helppoa, ei tarvinnut osata edes html:ää ja nettiin sai... ei nyt kauniit, mutta lukukelpoiset sivut. Vuodenvaihde 2009->2010 muutti taas kaiken. Yhtäkkiä omiin, henkilökohtaisiin standardeihini nousivat mm. PHP ja jonkinlainen lukukelpoinen, selkeä ja helposti toteutettava ulkoasu. Tämä kaikki onnistui mbnetissä.

Uuden vuodenvaihteen myötä suunnittelen taas uutta uudistusta. Sivustojen (Yool & Pröng) käyttäjille sen ei pitäisi näkyä muuten kuin paljon parantuneena käyttökokemuksena. Kuten tiedätte, on Pröngin luonnoskommenttisysteemi ollut puoli-valmis koko elämänsä ajan. Tämä johtuu huonosta arkkitehtuurisuunnittelusta pröngin kasauksen alkuvaiheessa. Huomasin myös eräänä päivänä että A) Yoolin Vaihda Salasanaa - sivu on rikki. Latasin sivun ftp:llä työpöydälle ja yritin puukottaa sitä toimivaksi, huonolla menestyksellä.

Nämä molemmat (ja muutama muukin) ongelmat johtuivat siis typerästä arkkitehtuurista. Lähdekoodi on kauniissa sekamelskassa. Kyseessä on siis ns. CoolBasic-syndrooma: minulla ei ollut mitään tietoa siitä mitä mikin muuttuja Yoolin salasananvaitosivun lähdekoodissa tekee, mistä se on lähtöisin ja mihin se menee. Helpompaa on siis suunnitella kaikki (jälleen :)) alusta ja kunnolla.

Niinkuin taisin sanoa, ainakaan Yool 4.1 ei tule kokemaan suuria ulkoasumuutoksia. Toki jos joillain on hyviä ideoita, olen avoin ajatuksille. Pröngin ulkoasu pysyy myös entisenlaisena. Siellä lähinnä yhdenmukaistan tyylejä, säädän uudelleenohjauksia ja toteutan ehdotettuja ominaisuuksia (kuten: "sen sijaan että hakisi luonnosta 111212, sivusto ymmärtää hakuIDllä 212 että haetaan sitä luonnosta").

Pröng tulee kokemaan suuria arkkitehtuurisia muutoksia. Rakennan uuden systeemin PHP5:n olioilla, samasta syystä kuin C++aa suositaan enemmän kuin C:tä (täällä, kappaleessa The Procedural Way, koodiin asti, selitetään mielestäni melko kivasti A) miksi oliot ovat äärettömän kivoja B) miksi tämä vuodenvaihdepäivitys tulee molemmille sivustoille), ja todennäköisesti perustan ikiomaan tietokantaani Pröngtaulun.

Tämä, Pröngin perustaminen tietokantataulun päälle, tarkoittaisi sitä että joutuisin sorvaamaan tiedonsiirtosysteemin koti.mbnet.fi/pilpo/Luonnokset - hakemiston ja feuer.viuhka.fi/prong - hakemiston (joka, osta tie, ei ole vielä olemassa!) välille. Syy sille etten voi vain kopioida luonnokset säilövää hakemistoa mbnetistä viuhkaan on, että A) luonnokset eivät ole tietokannassa, jossa niiden käsittely olisi helppoa, vaan ne ovat tekstitiedostoja, ja B) nämä tekstitiedostot eivät ole täysin yhteensopivia nykyisenkään pröngin kanssa.

Yoolin konepellin alaisista uudistuksista taas... En usko että niitä on kovin paljon ja kummallisia. Siellä vain selkeytän koodia. Nykyisessäkään Yoolissa ei ole niin paljon typeriä ratkaisuja, että niiden määrällä voisi perustella päivitystä. Yoolissa hiertää enemmän koodin lukukelvottomuus.

YHTEENVETO: Molemmat sivut päivittyvät, ja deadline on tällä hetkellä vuodenvaihteessa. Ulkoasupäivityksiä ei kannata odottaa, ellei niistä erikseen vihjata. Pröngin toimivuus paranee ja Yoolin huolimattomuusvirseitä korjataan.

Ulkoasu muuttui

Kuten huomaatte, on blogin ulkoasu lopultakin siirtynyt 90-luvulta tähän päivään. Taustakuva tuli hieman puukotettuna yoolin puolelta ja tyyli on jokin bloggerin valmistyyli. Nauttikaa.