Mika Tähtinen


Tuesday 31.3.2009 20.07

Miksi intiaani haluaa juuri tyttöhevosen luo?

Miksi intiaani haluaa juuri tyttöhevosen luo?

Tuesday 31.3.2009 11.37

Pakastin + limutölkki == fail

Pakastin + limutölkki == fail
irc-galleriaduuni

Monday 23.3.2009 9.33

Opetusmateriaali kunnossa

Opetusmateriaali kunnossa

Tuesday 17.3.2009 15.42

AJAX-kutsujen edelleenohjaus

Aika ajoin tulee tarve edelleenohjata ajaxilla tehtyjä kutsuja jonnekin muualle. Esimerkiksi, kun käyttäjä lähettää kommentin ajaxilla ja käyttäjän sessio on päässyt kuolemaan, tai tapahtuu jotain muuta odottamatonta, niin käyttäjä ohjataan etusivulle.

Ongelmana aiemmin on ollut se, että ajax-kutsu tapahtuu taustalla eikä sen varsinaisen http-kutsun redirraaminen toiseen paikkaan auta mitään, kun käyttäjän selaimessa oleva sivu säilyy paikallaan. Vielä ongelmallisempi tilanne on Ajax.Updater -kutsujen kanssa, kun saattaa käydä vaikka niin, että kommenttilaatikon tilalle ilmestyy etusivu.

Tutkailin tuossa hetken aikaa prototypen ajax-toteutusta, ja löysin sieltä Ajax.Responders-olion, jonka avulla sai helpon ratkaisun ongelmaan. Nyt käytössä onkin tällainen patchays:

Ajax.Responders.register({
    onComplete: function(request, json) {
        if (json && json.headerJSON && json.headerJSON.redir) {
            document.location.href = json.headerJSON.redir;
        }
    }
});

Eli PHP:n puolella voidaan nyt redirrailla käyttäjä ajax-kutsuistakin vaikka sinne etusivulle:

function redir($to) {
    if ($_SERVER == 'XMLHttpRequest') {
        // Use JSON for ajax redirs
        header('X-JSON: ' . json_encode(array('redir' => $to));
    } else {           
        header('Location: ' . $to);       
    }       

    exit;   
} 

Win \o/

irc-galleriagaltsudevduunijavascriptphpajax

Monday 16.3.2009 12.35

Sipsirieska

Näitä tuli pienenä vedettyä yhtenään.

ruoka

Tuesday 10.3.2009 8.27

Vapaa mies

Jälleen koitti palkkapäivä ja siitä historiallinen tapaus, että nyt, kun maksoin VISA-laskun nollille, oon ensimmäistä kertaa velaton sitten vuoden 2000, kun aloin nostamaan opintotukea. \o/

Nyt voi sitten vaikka paeta vuorille asumaan metsässä ja syödä pieniä kiviä, jos siltä tuntuu. Oikeesti pitäs varmaan alkaa miettimään, että haluunkohan kasvaa niin isoksi, että ostaisin oman kämpän, ja jos, niin mistä päin Helsinkiä ja mimmonen kämppä. Decisions, decisions…


Friday 6.3.2009 22.09

+++ Watchmen —-

Plussat

Miinukset

Aivan superrulesmahtava leffa kaikin puolin, kantsii kattoa ehdottomasti! Välissä alko vaan hymyillä ja hymähdellä mahtaville kohtauksille ja koko juonen kuljetus ja hahmot ja kaikki vaan toimi - ei mikään Spiderman, vaikka supersankarileffa onkin. Maailmanparannusteematkaan ei olleet rasittavasti tehtyjä ja supersankarit oli vedetty tarkoituksella vähän kornisti yli, kun taas muu maailma oli pidetty realistisena niin siitä tuli tosi hyvin toimiva kontrasti. =)

http://www.imdb.com/title/tt0409459/

leffat

Monday 23.2.2009 19.31

PHP - WTF

PHP tarjoaa toisinaan viihdettä enemmänkin kuin rahan edestä. Tänään koodaillessa törmäsin kummalliseen ongelmaan, jonka syyksi osoittautui vielä kummallisempi ongelma. Vastaan tuli nimittäin jokseenkin tällainen koodinpätkä:

$type = $this->classes[0];

switch ($type) {
    case 'eka':
        // ...
        break;

    case 'toka':
        // ...
        break;

    default:
        // ...
        break;
}

Eli olion classes-arraysta napattiin ensimmäisen solun sisältö ja sen perusteella switchailtiin, että mitä tehdään. Jostain syystä yhden olion kanssa päädyttiin kaiken järjen mukaan aina tuohon ensimmäiseen caseen. Tutkin asiaa hieman tarkemmin ja huomasin, että kyseisessä oliossa tuo classes-array oli tyhjä ja siten $type sai arvokseen null.

Jostain syystä tuo null ei kuitenkaan käyttäytynyt niin kuin nullin pitäisi käyttäytyä. Kun kokeilin var_dumpata tuon muuttujan, paljastui että sen arvo on null ja se on tyyppiä NULL, gettype($type) antoi saman tuloksen ja is_null($type) palautti true.

Jostain tyystä tuo null käyttäytyi kuitenkin vertailuissa oudosti. Esimerkiksi ($type == 'foo') palautti true ja heti perään ($type == 'bar') palautti myös true. Samalla tavalla tuossa switchissa $type matchas aina siihen caseen, joka sattui olemaan ekana. Sama ongelma toistui, jos jätin kokonaan pois tuon $type-muuttujan alustamisen kyseisessä funktiossa.

En löytänyt asiaan mitään ratkaisua muuten kuin kiertämällä sen enkä myöskään saanut toistettua sitä toisessa paikassa, kun yritin replikoida samanlaisen luokkarakenteen. Ratkaisuksi auttoi esimerkiksi tämä:

if (is_null($type)) {
    $type = null;
}

Hämmentävä bugi.

php

Sunday 15.2.2009 16.22

Ugly duckling

Auringon innoittamana pääsin kerrankin ulos sunnuntaina ja kävellä käpöttelin Töölönlahden ympäri. Porukka oli uskaltautunu luisteleen ja kävelemään jäälle, mutta tuolla Kallion puoleisessa nurkassa oli tommonen sula lätäkkö, missä oli miljoona sorsaa ja niiden keskellä sulassa sovussa yks joutsen! Piristävä reissu. ^_^


Sunday 1.2.2009 18.00

+++ Operaatio Valkyrie —-

Plussat

Miinukset

Hieno leffa, pitkästä aikaa jännäri, jonka aikana oikeesti rupes jännittämään, vaikka lopputuloskin oli tiedossa. Kantsii käydä kattoon.

http://www.imdb.com/title/tt0985699/