IRC-Galleria

Garo

Garo

tänään geokätköilee. jei

Tehtävä: Etsi kuvastaKeskiviikko 18.02.2009 22:58

Galtsun yksinkertaisen ulkokuoren alla piilee monimutkainen järjestelmä, jonka sulava toiminta ei ole itsestäänselvyys, vaan sen hyväksi on tehtävä jatkuvasti töitä. Backend-tiimimme kerää tietoa ja suorituskykyarvoja palvelimien eri osista, joiden avulla pyritään löytämään järjestelmän pullonkaulat ja puristamaan viimeiset mehut irti tietokannasta. Tuhansista eri mittausparametreista koostuvan tiedon analysointi ei yleensä ole helppoa, mutta joskus jotkin yksittäiset asiat suorastaan paistavat esiin.

Oheisessa kuvassa näkyy galtsun hitrate, eli sivulatauksien määrä sekunnissa talvilomaviikon keskiviikkoillalta.

Tehtävä: Etsi kuvasta salkkareiden alkamisajankohta, salkkareiden mainoskatko ja salkkarien loppuminen.

Lisätty matkaviestimestäTiistai 17.02.2009 23:57

Kävin ensimmäistä kertaa oopperassa. Repliikit kuin kauniista ja rohkeista, melodioissa ei ollut mitään tarttuvaa ja juonta oli vaikea seurata. Toisaalta ei kuulemma ollut "helppo" teos. Ehkä tästä voi oppia tykkäämään :)
Blogasin jo kesällä (Garo&beid=16648551) uudesta ehdottavasta hakuominaisuudesta, joka ehdottaa käyttäjälle reaaliaikaisesti sopivia hakutuloksia. Tämä haku onkin ollut kuva- ja blogiluokitteluissa jo useita kuukausia ja käyttäjiltä saatu palaute on ollut positiivista. Kiitoksia tästä.

Hakua testattiin yläreunan yhteisö- ja kanavahakukentissä jo alkusyksystä, mutta ominaisuutta ei saatu julkaistua näissä ikävän banneriongelman takia: hakutulokset jäivät ikävästi joidenkin bannerien alle, jonka selvittäminen kesti ikävän pitkään.

Aikaa ei kuitenkaan tuhlattu, vaan mainososaston ratkoessa banneriongelmia, koodiporukkamme lisäsi alla olevaan hakumoottoriin useita uusia ominaisuuksia. Hakumoottori tukee nyt myös käyttäjien hakuja, joka saadaan testiryhmän testaukseen kunhan sille saadaan sopiva ulkoasu (nykyinen nimimerkkihaun ulkoasu on omaa käsialaani ja se ei ole erityisen kaunis). Käyttäjien ja yhteisöjen lisäksi hakumoottori voidaan säätää hakemaan lähes mitä tahansa sisältöä ja sitä onkin testattu onnistuneesti mm. uuden kaupan hakukoneena.

Itse hakumoottori on javalla ohjelmoitu komponentti, joka hakee haettavan tiedon gallerian tietokannasta muutamilla SQL-kyselyillä ja pitää haettavan tiedon koneen keskusmuistissa. Tieto pilkotaan sanoihin ja sanat talletetaan erilaisiin indekseihin. Esimerkiksi nimimerkkihaussa jokainen nimi talletetaan alkuperäisessä muodossa yhteen indeksiin ja toiseen indeksiin ilman erikoismerkkejä, joka helpottaa vaikeasti kirjoitettavien nimimerkkien löytämistä.

Käyttäjän selaimen hakukenttään kirjoittama teksti käsitellään javascriptilla ja välitetään hakupalvelimelle, jossa haku tehdään samanaikaisesti molempiin indekseihin ja näiden hakutuloksista kootaan yksi tulosjoukko. Tulokset järjestetään vielä supersalaisella hakualgoritmilla, jonka jälkeen käyttäjälle lähetetään noin kymmenen parasta hakutulosta.

Hakumoottorin suunnittelussa haettiin kolmea asiaa:
1) Käyttämisen helppoutta Galtsun käyttäjille: käyttämisen pitäisi olla helppoa, tuloksien pitäisi olla järkeviä ja käyttäjän pitäisi löytää hakemansa mahdollisimman hyvin.
2) Nopeutta: hakutuloksien on tultava mahdollisimman nopeasti käyttäjille. Käytännössä valtaosa hauista tapahtuu alle 30 millisekunnissa, mitä itse pidän mukavan nopeana.
3) Käyttämisen ja käyttöönoton helppoutta Galtsun koodaajille: Galtsun uusia ominaisuuksia kehittävät koodaajat voivat halutessaan ottaa haun käyttöön lähes missä tahansa hakukentässä noin puolen tunnin työmäärällä.

Hakumoottorin kehittämistä jatketaan vielä tulevaisuudessa, jonka johdosta saatamme esimerkiksi nähdä vain yhden hakukentän, joka osaa hakea samanaikaisesti käyttäjiä, yhteisöjä ja irc-kanavia.

i want com your cunteryPerjantai 07.11.2008 12:04

Joku pakistanista kotoisin oleva henkilö otti minuun yhteyttä irkin välityksellä tänään aamulla. En ole vieläkään varma mitä hän oikeastaan halusi, veikkauksia voi antaa kommentteina.

[Youi(~lil@117.18.241.236)] hi
[msg(Youi)] hi
[Youi(~lil@117.18.241.236)] hi 2
[msg(Youi)] hello, how can I help you? =)
[Youi(~lil@117.18.241.236)] what?
[Youi(~lil@117.18.241.236)] have you yahoo id
[msg(Youi)] you got my yahoo id?
[Youi(~lil@117.18.241.236)] ya
[Youi(~lil@117.18.241.236)] hello are you there?
[msg(Youi)] yeah, I am
[msg(Youi)] I though you went away
[msg(Youi)] how have you got my yahoo id?
[Youi(~lil@117.18.241.236)] ya
[Youi(~lil@117.18.241.236)] mosa_ali99@yahoo.com
[msg(Youi)] is that your id?
[msg(Youi)] that's not mine
[msg(Youi)] are you from pakistan?
[Youi(~lil@117.18.241.236)] ya
[Youi(~lil@117.18.241.236)] hello
[msg(Youi)] yeah
[msg(Youi)] what do you want? =)
[Youi(~lil@117.18.241.236)] nothing
[Youi(~lil@117.18.241.236)] were are you from/
[msg(Youi)] I'm from finland
[Youi(~lil@117.18.241.236)] ok
[Youi(~lil@117.18.241.236)] m or f?
[msg(Youi)] male
[Youi(~lil@117.18.241.236)] ok
[Youi(~lil@117.18.241.236)] i want com your cuntery
[msg(Youi)] sorry?
[Youi(~lil@117.18.241.236)] ok
[msg(Youi)] what do you mean?
[msg(Youi)] I did not understant
[Youi(~lil@117.18.241.236)] nothing
[msg(Youi)] ok
[Youi(~lil@117.18.241.236)] you com my cuntry
[msg(Youi)] oh, you want me to come to pakistan?
[Youi(~lil@117.18.241.236)] ya
[msg(Youi)] why?
[Youi(~lil@117.18.241.236)] do u not my friend
[Youi(~lil@117.18.241.236)] ?
[msg(Youi)] pakistan is quite far away
[Youi(~lil@117.18.241.236)] ok
[msg(Youi)] 4500 kilometers
[msg(Youi)] so I need a good reason why I should travel there
[Youi(~lil@117.18.241.236)] do u not com?
[msg(Youi)] maybe if you give me a good reason
[Youi(~lil@117.18.241.236)] i dont no
[msg(Youi)] :(
[Youi(~lil@117.18.241.236)] call me
[msg(Youi)] what's your number?
[Youi(~lil@117.18.241.236)] 009203007433003
[msg(Youi)] why do you want me to call you?
[Youi(~lil@117.18.241.236)] i am your real friend
[msg(Youi)] that's so sweet
[Youi(~lil@117.18.241.236)] ok
[msg(Youi)] you know this communication is quite hard as you seem to be pretty bad in english :(
[msg(Youi)] we have problems understanting each others
[Youi(~lil@117.18.241.236)] ok

Stealla virgin oil co:ssa la 15.11Tiistai 04.11.2008 13:30

Lähteekö joku mukaan kuuntelemaan?
Loppukohtauksen idea syntyi vasta tuotannon viimeisellä viikolla: Halusin pöytäanimoinnin zoomaavan ulos, joka paljastaisi ison IRC-Galleria -logon. Efekti koostettiin luomalla kaksi identtistä IRC-Galleria -tekstiä, joista toista käytettiin ns. luma mattena. Tätä layeriä käytettiin maskina Pöytäanimointi-kompositiolle. Tämä tarkoittaa sitä, että Pöytäanimointi-kompositiosta näkyy vain se kohta mikä osuu päälle IRC-Galleria tekstin kanssa. Molemmat tekstilayerit ja Pöytäanimointi-kompositio sijoitettiin 3D-avaruuteen yhdessä kameran kanssa. Pöytäanimointi-kompositio pidettiin paikallaan, mutta tekstilayereitä siirrettiin koordinaatiston syvyyssuunnassa kauemmaksi kamerasta.

Tekstin valoefekti saatiin käyttämällä useaa eri valoefektiä: CC Light Sweep, CC Light Burst 2.5:sta ja kahta eri Glow:ta. Valoefektien valon lähde animoitiin siirtymään kuvan vasemmasta reunasta oikealle, jolloin valonloiste liikkuu vastaavasti tekstin poikki. Taustalle lisättiin muutaman perinteisen "swoooh"-ääniefektin miksaus ja runsaasti erittäin matalia taajuuksia, joiden toivoin tuntuvan fyysisesti rintakehässä jos tilassa on tarpeeksi bassoa.

Lopullinen projektitiedosto vei noin kolme megatavua ja kaikki tiedostot yhteensä 3.23 gigatavua. Yksittäisiä tiedostoja kertyi 1812 kappaletta. Kaksiytiminen 2.4 Ghz työasema renderöi projektia parhailla asetuksilla noin seitsemän tuntia.


Katso myös muut osat:
Garo Osa 1: Taustakuva
Garo Osa 2: jaffan ja shalafin irkkauskohtaus
Garo Osa 3: Pöydän animointi ja kuvatekstit
Garo Osa 4: Taustan häivyttäminen huomiokuvia varten
Projektin alussa ongelmaksi muodostui huomiokuvien erottaminen taustasta. Koska katsojan haluttiin kiinnittävän kaikki huomio tiettyihin tarinaa kuljettaviin huomiokuviin, keksittiin sopivaksi ratkaisuksi himmentää taustalla oleva pohjakuva. Kun kameran liikkeen nopeus laskee tarpeeksi, taustalla oleva pohjakuva blurrataan ja sen saturaatio vähennetään nolliin (jolloin kuvasta tulee mustavalkoinen). Tämä saa katseen kohdistumaan värillisenä pysyviin huomiokuviin.

Koska yksittäisiä huomiokuvia oli pitkälle toistakymmentä, taustan blurrauksen animointi erikseen olisi ollut huomattavan työlästä. Lisäksi jos kameran animointia olisi muutettu (mitä muutettiin useita kertoja projektin aikana), blurrauksen animointi olisi pitänyt tehdä uudestaan vastaamaan kameran animointia. Onneksi After Effectsistä löytyy tähän helppo ratkaisu sen sisäisellä javaskriptiin pohjautuvalla skriptaustavalla. Alkuperäinen idea saatiin VideoCoPilot-sivuston tutoriaalista: http://www.videocopilot.net/tutorials/speed_particles/

Oheisessa kuvassa näkyy muutama säädin, joiden arvoja ohjataan kameran liikkeen mukaan. Kameran liike saadaan expressiosta "thisComp.layer("Camera 1").transform.position.speed, joka muokataan ensiksi "Kameran raw nopeus"-säätimessä sopivaksi. Koska lopussa haluttiin ohittaa automaattinen blurraus, tässä vaiheessa mukaan yhdistettiin "nopeuden ohitus"-säätimen arvo, jolla automaattinen blurraus voidaan ohittaa tietyssä kohtaa aika-janaa.

Tämä esikäsitelty nopeus muokattiin sopivaksi kahdessa säätimessä, toinen blurraukselle ja toinen saturaation vähentämiselle (jolloin taustakuvasta tulee mustavalkoinen): Jos nopeus (V) on yli 200, annetaan säätimen arvoksi nolla. Jos nopeus laskee alle 200 yksikön, annetaan säätimen arvoksi (200-V)/2. Näiden kahden säätimen arvojen avulla ohjataan erillisiä saturointi ja blurrauslayeri -efektejä, jotka vaikuttavat pohjalla oleviin kuviin.


Katso myös muut osat:
Garo Osa 1: Taustakuva
Garo Osa 2: jaffan ja shalafin irkkauskohtaus
Garo Osa 3: Pöydän animointi ja kuvatekstit
huomiokuvia varten
hhttp://irc-galleria.net/user/Garo/blog/21451347 Osa 5: loppukohtaus
Pohjalla käytettävän taustakuvan kahdeksan osaa koostetaan yhdeksi pohjaksi Pöytäanimointi-nimisessä kompositiossa. Samassa kompositiossa on 3D-avaruudessa lentävä kamera ja kaikki yksittäiset huomiokuvat. Kamera animoidaan siirtymään eri huomiokuvien päälle tiettyinä ajanhetkinä, jolloin tausta hämärtyy ja katsojan huomio keskittyy haluttuun kuvaan.

Näiden lisäksi tässä kompositiossa toteutetaan TG-tekstit (tg on lyhenne text generator:sta, millä tarkoitetaan ruudun edessä olevia (kuva) tekstejä, joilla kerrotaan esimerkiksi toimittajan nimi). Yksittäiset TG tekstit ovat layereitä 2D avaruudessa. Koska kamera liikkuu 3D avaruudessa, TG teksteinä toimivat layerit pysyvät paikallaan aina kameran edessä, koska ne ovat 2D avaruudessa. Tämä johtuu After Effectsin toiminnallisuudesta erottaa 2D ja 3D avaruudessa olevat koordinaatistot toisistaan.

Yksittäiset TG-layerit asetettiin ilmestymään näkyviin tiettyinä ajanhetkinä. Oheisessa kuvassa näkyy osa Pöytäanimointi-komposition TG-layereista ja kamera, sekä näiden animointi aikajanalla.


Katso myös muut osat:
Garo Osa 1: Taustakuva
Garo Osa 2: jaffan ja shalafin irkkauskohtaus
Garo Osa 4: Taustan häivyttäminen huomiokuvia varten
Garo Osa 5: loppukohtaus
Videon alkuun haluttiin jaffan ja shalafin irkkauskohtaus, joka ei paljastaisi vielä videon todellista luonnetta. Videon piti alunperin näyttää pelkästään irkkaukselta, tosin mukaan haluttiin kamerazoomaus, jotta tekstistä saisi paremmin selvää. Vasta irkkauksen loputtua kamera siirtyisi ulos irkki-"valokuvasta" ja lähtisi pyörimään pitkin virtuaalista pöytätilaa kuvaten muita valokuvia.

Kohtaus jaettiin kolmeen eri kompositioon: Pohjalla on irssi-ikkuna, joka esittää putty:n ja irssin kokonaisuudessaan: irssi on kuvattu yhtenä isona kuvana ja yksittäiset tekstirivit ovat yksittäisiä kuvia, jotka paljastetaan tietyssä kohtaa aika-janaa. Päälimmäisenä on lisäksi kaksi efektilayeriä: yksi tekee Cell Pattern -efektillä kohinaa, jonka tarkoituksena on saada pinta muistuttamaan näyttöä ja toinen on ns. adjustment layer, jolla tehdään Glow-efekti tekstille. Lopputuloksena saadaan hieman monitorin pintaa muistuttava kuva.

Irkki-ikkunan kamera-ajo -kompositiolla tehdään kamera-ajo ikkunan eri kohtien välillä. Kompositiossa on irssi-ikkuna -kompositio 3D-avaruudessa, jota kuvataan avaruudessa liikkuvalla kameralla.

Kolmannessa kompositiossa (irkki-ikkuna) asetetaan irkki-ikkunan kamera-ajo -kompositio, sekä tämän komposition viimeinen frame yksittäisenä kuvana. Pohjalla on lisäksi valkoinen väriläyeri (ns. solid layer), jolla tekee kompositioon valkoiset reunukset.


Katso myös muut osat:
Garo Osa 1: Taustakuva
Garo Osa 3: Pöydän animointi ja kuvatekstit
Garo Osa 4: Taustan häivyttäminen huomiokuvia varten
Garo Osa 5: loppukohtaus
Tässä lyhyt kooste miten Galtsun 500k-bileiden kunniaksi tehty historiavideo syntyi. Videon voi katsoa 500k yhteisöstä. Video tuotettiin Adobe After Effects -ohjelmistolla, joka on käytännössä "Photoshop videolle." Osa kuvista esikäsiteltiin Photoshopilla.

10000 x 5000 pikselin kokoiseen pohjaan käytettiin 217 yksittäista valokuvaa, joille jokaiselle asetettiin valkoiset reunat käyttäen Photoshopin skriptiä. Ensiksi etsittiin Galtsusta sopiva kuva käyttäen Satunnainen-sivua, kopioitiin kuva leikepöydälle, ja luotiin uusi ikkuna Ctrl+N -yhdistelmällä, jonka jälkeen ajettiin kuvanduunaus-makro Ctrl+F3 -napilla. Makro liittää kuvan leikepöydältä uuteen kuvapohjaan, suurentaa siihen valkoiset reunat, kopioi muokatun kuvan uudelleen leikepöydälle ja liittää sen lopuksi isoon kuvapohjaan muiden kuvien joukkoon. Tämän jälkeen uusi kuva asetellaan muiden kuvien joukkoon.

Lopullinen pohja vei muistia 725.5 megatavua yksittäisten layerien kanssa. Ensimmäisissä kokeiluissa After Effectsin kanssa törmättiin renderöintiongelmiin: AE ei pystynyt renderöimään 10000x5000x4x2 (~380 megatavua) tavun kokoista kuvaa, ainakaan omalla koneellani. Tämän takia pohjakuva pilkottiin 2500x2500 pikselin kokoisiin osakuviin, jotka aseteltiin AE:n kompositioon muodostamaan kokonaisen pohjakuvan.

Katso myös muut osat:
Garo Osa 2: jaffan ja shalafin irkkauskohtaus
Garo Osa 3: Pöydän animointi ja kuvatekstit
Garo Osa 4: Taustan häivyttäminen huomiokuvia varten
Garo Osa 5: loppukohtaus