IRC-Galleria

Bro

Bro

ei ole enää Galtsun ylläpitäjä, http://irc-galleria.net/feedback auttaa ongelmissa. :)

Retrospekti tulossa...Lauantai 30.08.2008 20:45

...Clint is not amused.

Mmm.. ateriaratkaisuja...Perjantai 29.08.2008 18:04

Aspan lempiääniPerjantai 22.08.2008 15:24

Kunto on selvästi nousussa!

Aika aikaansa kutakinMaanantai 18.08.2008 23:05

Ajan merkityksestä ja olemuksesta vois kirjotella kaikkea syvällistä, mutta keskitytään tällä kertaa hieman maallisempiin aiheisiin, nimittäin koodaamiseen. Kaikki vähänkin enemmän ohjelmointia harrastaneet tietävät, että päivämäärien ja aikojen käsittely on ohjelmoinnissa ja tietokannoissa melkoinen pain in the ass of Timo.

Galtsussa tämä on ilmennyt muun muassa sillä tavalla, että käyttäjien profiilissa näkyvä ikä on pyöristynyt ylöspäin päivän tai pari ennen syntymäpäivää. Syynä tähän on nuo paholaisen keksinnöt nimeltä karkauspäivät, joita itse kukin on ehtinyt elää syntymävuodesta riippuen erinäisiä määriä.

Kokonaisten vuosien laskeminen iästä on varsin simppeli operaatio, sen kun vähentää nykyisestä vuodesta syntymävuoden ja vielä yhden vuoden lisää, jos tänä vuonna ei vielä ole ollut syntymäpäivää, mutta Galtsussa näytetään ikä desimaalitarkkuudella, joten homma ei olekaan ihan niin simppeli.

Tässä reilun parin vuoden aikana mitä olen ollut töissä, on tuota iän laskemista koitettu korjata useampaankin kertaan, mutta kukaan ei oo koskaan jaksanut panostaa niin paljoa, että se olisi kunnolla saatu korjattua. Tähän asti ikä laskettiin seuraavalla kaavalla:

$age = ((int)(time() - $dob) / 315569.26) / 100;

Eli jaettiin eletyt sekunnit keskimääräisellä vuoden pituudella jaettuna sadalla ja pyöristetty lopputulos jaettiin vielä sadalla. Tuolla jakotempulla saadaan katkaistua desimaaliluku pyöristämättä sitä. Mutta tämä oli tosiaan se bugaava versio. Väkersin tuossa äsken tuner:in konsultoimana uuden ikäfunktion, joka menee näin:

/**
 * Calculates age from timestamp.
 *
 * @param int $stamp date of birth as unix timestamp
 * @param int $precision number of digits after the decimal point
 * @return float
 */
function stamp_to_age($stamp, $precision = 2) {
    // At first we count how many leap days there has been between the given stamp and current time
    $leap_count = 0;
    $time = time();

    $curr_year = date('Y', $time);
    $curr_month = date('m', $time);
    $stamp_month = date('m', $stamp);

    $year = date('Y', $stamp);

    if ($stamp_month > 2) {
        $year++;
    }

    while ($year < $curr_year) {
        if ($year % 4 == 0 && ($year % 100 != 0 || $year % 400 == 0)) {
            $leap_count++;
        }

        $year++;
    }

    if ($curr_month > 2 && date('L', $time)) {
        $leap_count++;
    }

    // Subtract the leap days from the current time to make the calculated years even and then just cut it to the wanted precision using multiply - round - divide
    return (int)(($time - $stamp - $leap_count * 24 * 60 * 60) / (24 * 60 * 60 * 365) * pow(10, $precision)) / pow(10, $precision);
}

Tässä siis lasketaan ensin kuinka monta karkauspäivää on ehtinyt kulua syntymäpäivän ja nykyisen ajankohdan välillä. Lopussa sitten lasketaan ikä sekunteina, vähennetään siitä karkauspäivät sekunteina ja jaetaan tasavuosilla. Kaiken päälle tehdään vielä tuo sama desimaalien pyöristysleikkaus ja avot, siinä on ikä desimaaleina.

Tosin tämäkään ei ota huomioon sitä, että karkaamatonkaan vuosi ei ole tasan 365 päivää pitkä, vaan sinne tasoitellaan maapallon epätasaisesta pyörimisestä johtuvia karkaussekunteja, mutta ehkäpä tämä tarkkuus riittää Galtsussa iän laskemiseen.. paitsi jos se bugaa ja seuraavana karkauspäivänä joudutaan taas koodaamaan jotain uusiksi. ;P

MopoilPerjantai 15.08.2008 22:09

19:03:01 <@Bro> huippu
19:03:04 <@Bro> mopoilin tos töistä kotiin
19:03:33 <@Bro> mansku oli ihan vitun tukossa ku siellä oli joku remppa ja keskustaan tule kaista kiinni ja keskustasta lähtevä kaista jaettu kahtia molemmille suunnille
19:03:51 <@Bro> noh, vetelin sit mopolla kaistojen välistä autoista ohi ku oli hyvin tilaa
19:04:01 <@Bro> sit joku bemarikuski veti ihan täydet läsärit ku menin siitä ohi
19:04:15 <@Bro> ajoin sen ohi ja pysähdyin suojatielle kaistojen väliin
19:04:23 <@Bro> niin se hivuttautu siihen ihan viereen ja yritti ajaa mun jalan päälle
19:04:34 <@Bro> läväytin sit sen konepeltiä kämmenellä ja näytin keskaria
19:04:43 <@Bro> niin se nousi ulos autosta ja alko jotain avautuun eka
19:04:56 <@Bro> sit jono liikku joku 10 metriä eteenpäin niin ajoin ja se ajo perässä ja taas nousi autosta ja tuli jotain itkemään
19:05:27 <@Bro> sit tylytin sitä siinä ja se lähti käveleen takas autolleen niin avautu sen verran että pääsin koko korttelin läpi jalkakäytävän ja autojen välistä ja se jäi sinne seisomaan
19:05:33 <@Bro> noh, ei SIINÄ vielä kaikki
19:05:45 <@Bro> tossa kaisaniemen kohdalla päätin, että se ei ehkä ollu ihan tarpeeksi vittuuntunut vielä
19:06:04 <@Bro> niin käännyin unionkadulle ja sieltä takas espalle ja taas vetelin kaistojen välistä manskulle
19:06:18 <@Bro> ja tavotin sen siinä forumin risteyksessä ja ajoin rinnalle ja vilkutin sille ja jatkoin taas matkaa =D
19:06:53 <@Bro> se oli ehkä edenny sen 1,5 korttelinväliä sinä aikana ku meikä kiersi koko kaisaniemen
19:07:00 <@Bro> saatto vähän kiristää

PS. Tätä ei tietenkään oikeesti tapahtunut, enhän koskaan rikkois liikennesääntöjä. Keksin vaan tämmösen tarinan irkkiin huvin vuoksi!

Hyvin käytettyä työaikaaTiistai 12.08.2008 19:34

Viime viikolla tuli tehtyä paljon ylitöitä - tulokset näkyy heti!

VoimaeläinTorstai 31.07.2008 22:57

Mun voimaeläin on SIIKA, tiiän sen tekemättä sitä testiäki!

Rules-juttujaTorstai 24.07.2008 05:00

* Uuden Batman-leffan mahtavuus
* Meneillään oleva kesäloma ja sen myötä tullut aivojen rentoutuminen
* Tänään alkaneet helteet yhdistettynä edelliseen kohtaan
* Pitkän sinkkuilun myötä tullut Zenmäisen leppoisa olotila

Tässä tiukka läpileikkaus tän hetkisestä elämäntilanteesta. Ens kerralla kirjoitan ehkä vaihteeksi oikeita lauseita!

Mistä tietää shoppailleensa riittävästi?Keskiviikko 09.07.2008 00:18

Siitä, että löytää eteisen lattialta muovipusseja, joissa on vielä vaatteita, joita ei edes muistanu ostaneensa. =D Ne on aina kivoja yllätyksiä, ku löytää valmiiksi sopivia uusia vaatteita, jotka on jo maksettuki! ^_^

Kanan rintafile balsamicolla ja voileipäSunnuntai 06.07.2008 20:16

Tuli ähky. Oon pieni.

PS. Onko kananpojat aina poikia?