Hieman synopsista, että mistä allolevat selostukset ehkä kertovat, eli tällä hetkellä käynnissä ainakin seuraavaa:
microjournal.org:
Mikroartikkelipalvelu, jonka keskeisiin toimintoihin kuuluu artikkelien hallinnointi ja erilaiset sosiaaliset rating ja kommentointimahdollisuudet.
Toteutetaan symfonylla, joka on varsin kehittynyt php/mysql-pohjainen framework.
Ja tässä menneet seikkailut:
kännykkävideokurssi
Santerin kanssa suunnitellaan ja vedetään kännykkävideokurssi yläasteella, sekä lukiossa.
Allekirjoittanut vastaa tekniikasta ja tuo kauniisti sanottuna reflektiona aiemmista mobiilivideohommista.
edu.parvi
urbaanin yhteisprojektin opiskelijoiden ohjaus:
Todetaan pedagogisten lahjojen puute ja koetetaan saada ykköset olemaan pelkäämättä pahaa koodia.
Ajateltu myös tuputtaa niille jQuerya flashin sijaan/tueksi.
Satuinpa joulun tienoilla hankkimaan wii:lle Mega Man 9 nimisen teoksen.
Kyseessä on nykymittapuulla sadistisen vaikea ja turhauttava retrohenkinen peli (eli aika normaalia meininkiä näin entiselle 7-vuotiaalle).
Siitä voi kuitenkin nähtävästi oppia paljonkin, sillä googlaillessani törmäsin tähän artikkeliin:
Opinion: How Mega Man 9 Resembles... Real Life?
Artikkelissa käsitellään aika nokkelasti nykyisten pelien, vanhojen (helvetin vaikeiden) pelien ja tosielämän oppimisen suhdetta.
Löydän välittömästi esimerkiksi yhteneväisyyksiä erilaisten koodaushommien yms. opettelun kanssa, ja sen millaisessa mindsetissä niitä täytyy tehdä.
"Pena kommentoi Kallen tekemisiä 4 tuntia sitten."
"Mauri postasi uuden jutun hetki sitten."
Tämäntyyppistä uutisfeediä koetin tässä rakentaa ja kyseessä on itseasiassa aika monimutkainen ja mielenkiintoinen design-haaste.
Noin äkkiseltään tulee mieleen 2 päävaihtoehtoa:
1) yksinkertaisesti logataan viestejä html-muodossa omaan tauluunsa, josta ne sitten nykäistään esille.
Jes helppoa, paitsi että sellaiset viestit eivät enää luomisensa jälkeen päivity, joten jos esim. linkkien rakenne tai joku muu sisältöasia muuttuu, se ei päivity.
Myöskään ylläolevan kaltaista ajan esitystä ei voi tehdä, koska aikatiedot eivät päivity luotuihin viesteihin.
2) luodaan koko feedi dynaamisesti tietokannasta. Tässä tulee hieman arkkitehtuuriongelmia, koska symfony ei kovin notkeasti taivu hakemaan tietoja usemmasta taulusta ja lisäksi täytyisi renderöintivaiheessa ottaa aina selville, minkä tyyppistä tietoa ollaan näyttämässä ja mitä semanttisia lisälausahduksia siihen tulee lisätä. Myöskään kaikki mitä sovelluksessa voi mahdollisesti tapahtua ei näy suoraan tietokantatauluista ellei sitä erikseen logata omaan tauluunsa.
En tiedä miten facebook ja muut sen tekevät (saa kertoa jos tietää), mutta itselle tulee mieleen jonkinlainen puolittainen toteutus, missä viestien rungot haetaan jostain ja log-tiedoksi tallennetaan id-tietoja tietokannasta. Tyyliin kommenttipostaus näyttäisi logattuna tältä:
id:1, kommentoija_id:5, kommentti_id: 3, kommentoitava_id: 7, viestityyppi: kommentointi
Josta tietämällä yhteyden(viestityyppi) pystyy säveltämään asianmukaisen viestin uutisiin.
Mutta hiukan monimutkaisempaa kuin miltä se vaikuttaa(jostain syystä kaikki semantiikkaan ja ohjelmointiin liittyvä on).
Profiilikuvien uploadauksen arvoitus on ratkaistu. Koodattu kaikenlaisia tukitoimintoja helpottamaan jatkokehitystä.
Myös käyttöliittymää siistitty. Mitään kauhean jännittäviä ulottuvuuksia ei näistä säädöistä irtoa, ehkä enemmän raportoivaa kun pääsen viimein tunkemaan vähän javascriptiä käyttikseen.
Versiointiplugari asennettu. Ei ongelmia.
Se toimii periaatteessa jo nyt, mutta nyt täytyy tehdä hieman design-valintoja niin ulkoasun kuin toiminnankin puolesta.
Lisäksi samassa yhteydessä havaitsin, että muille kirjoitusoikeuksien jakamisessa on vielä säädettävää. Todennäköisesti täytyy romukopata tuo symfonyn valmis lista-widgetti ja tehdä omia säätöjä sen sijaan (saa samalla sitten toivottavasti kivemman käyttöliittymän).
Tällä hetkellä ainoa mikä ärsyttää on se, että tietokannan versiointi ei onnistu bazaarissa olevan pikku bugin johdosta ja nykyinen työvaihe vaatii paljon tietokannan resettailua, joka hieman vaikeuttaa yhteistyötä leiskauspuolen kanssa.
Ajattelin vaan testata, että ulkopuoliselle julkaisuserverille siirto onnistuu. Ja eihän se onnistunut, mutta pienellä kiroilulla ja ihmettelyllä saatiin tuonne nyt versio joka sisältää seuraavaa:
- uusi logo!
- rekisteröityminen
- mikroartikkelien luonti/editointi
- äänestäminen, favorointi
- artikkelin järjestely nimen, pvm, kirjoittajan, äänien ja äänimäärän mukaan
- kommentointi
Perjantaiksi saataneen koodattua myös "follow"-napit (pitää tehdä vielä vähän säätöä, että käyttäjä ei voi seurata itseään jne.).
Nyt hommaa voi kämmiä käsin "author/follow/id/1" jne.
Tag-hakusysteemi myös hajosi jossain välissä vaihdettaessa tietokantasysteemejä, en keksinyt mitään järjellistä syytä sen toiminnan loppumiselle, mutta sain siitä ajatuksen, että kirjoitan siihen oman jatkeen niin, että tagit toimivat filttereinä tuossa artikkelien järjestelyssä. Niin ja urleissa pomppii tuo helvetin public_html joka vielä myrkytetään siitä pois.
Tänään saavutettiin se, että Mikaelillakin on nyt suht. toimiva versio sovelluksesta ja täten ulkoasun muokkaustyö voi nytkähtää kunnolla käyntiin.
Myös omalla tontilla näyttää poikkeuksellisen vahvalta: formeista on korjattu ja paranneltu lukuisia asioita, follow-systeemit toimivat ja käyttiskin alkaa heijastella näitä muutoksia. Hyvällä säkällä jonkinlainen ihan oikeasti käytttökelpoinen beta-versio saadaan pystyyn jo heinäkuun aluksi(jos näin ihan kolmannesta persoonasta arvioidaan omaa työtahtia).
Yhä useammin alkaa käydä niin, että ajattelen jonkin featuren miten se menisi, ja sitten se melko helposti loksahtaa kohdalleen. Alan myös nähdä, että projektin alussa tehty koodi on nykytietämyksen valossa välillä tarpeettoman mutkikasta ja kömpelöä.
Seuraavaksi pitäisi perehtyä symfonyn routing-systeemiin, koska sen kautta saisi yksinkertaisempaa koodia ja kierrätettävyyttä.
Myös jotain ajax-kikkailua voisi huvin ja urheilun vuoksi laittaa johonkin sopivaan kohtaan.
Olen tiivistänyt tuntemukseni yrityksestäni viritellä symfonysta ja versionhallinnasta helppo paketti otsikkoon ja oheiseen kuvaan.
Nyt olen kuitenkin saanut mielestäni jotain ihan toimivaa aikaiseksi ja .bat tiedostojen siivittämänä setti saattaa olla jopa ihan ihmisekin käytettävissä.
Tämän lisäksi virittelin vähän tietokantaa ja yritin toteuttaa profiilikuvien uploadaus-toiminnon, joka on periaatteessa aivan umpihelppoa, mutta ei toimi symfonyn keinoilla jostain mystisestä syystä. Tapeltuani päivän asian kanssa otin aiheesta hieman tiliä ja totesin, että näin huipputärkeän 100x100 pikseliä kuvan-uppaus featuren ehtii tehdä joskus myöhemmin ja siirryin virittämään muita asioita.
Eikö se sitäpaitsi ole rasittavaa, että niitä kuvia joutuu uploadaamaan sinne ja tänne? Ehkä pitäisi sivukoodata profiilikuvan-hostaus palvelu, ja miksei siellä voisi samantien arvioida ja kommentoida toisten profiilikuvia ja esittää niitä nelikenttinä ja...siis jos se uploadaus toimisi.
Bazaar (bzr) tuli nyt sitten valittua homman versiointiin. Se vaikuttaa kaikkinensa jonkin verran notkeammalta kuin svn, ja toisaalta yksinkertaiselta käyttää. Microjournalin setupista muodostui nyt siis sellainen, että linux-serverillä on aloitettu bzr-versiointi (joka johtaa automaagisesti siihen, että sftp:llä + bzr:n clienttiohjelmalla saa ulos versioita microjournalista varsin kätevästi). Samalla vaihdoin tietokannan mysql:sta sqliteen, koska sqlite-tietokannoista tulee tiedostoja joita voi myös versioida(muuten joutuisi hankalasti synccailemaan kahta mysql-settiä toisiinsa).
Projektiin kiinnitetyn leiskaajan näkökulmasta ideaalisti tapahtuu ainoastaan seuraavaa:
- bzr koneelle
- lighty2go portable serveripaketti koneelle, mihin asennettu tarpeelliset symfony-kilkkeet(tätä voi nyt periaatteessa levittää vaikka usb-tikulla)
- bzr checkout (lataa uusimman version kehitysserveriltä)
- tehdään töitä!
- bzr commit (lähettää muutokset kehitysserverille)
- viikonloppu, juodaan viinaa niin paljon kuin 9e/h lähtee
- bzr update lataa keskusserveriltä koodarin (allekirj.) uusimmat sekoilut paikalliseen kopioon
Hommassa on vielä ainakin mystinen cache-bugi ja se, että setti on kehitetty mysql:llä aiheuttaa välillä pieniä ongelmia sqliten suppeamman käskyvalikoiman kanssa.
Muutaman päivän lukeminen yhdistettynä kompuroivaan toimintaa on johtanut jonkinlaiseen ymmärrykseen versionhallinnan periaatteista ja mahdollisista käytännön sovelluksista omiin projekteihin. Aivan täysin tyydyttäviä ratkaisuja ei ole vielä löytynyt, ainakaan sen osalta, että ei tarvitsisi viritellä useampaa eri versiota mysql-kannasta pystyyn. Tutkimassani svn:ssä on myös muutamia muita asioita (kuten uusien tiedostojen lisääminen versionhallintaan), jotka minun puolestani saisivat hoitua ilman käyttäjän tekemisiä.
Kokeiluissa käyttelin Google Coden svn-hostausta palvelua, joka toimii leppoisasti, tosin tässä miettiessä oman svn/jonkun muu repositoryn virittely oman palvelimen päätyyn omaa myös selkeitä plussapuolia. Yksi toimiva mahdollisuus olisi kuitenkin tuutata koodit googleen ja rakennella sitten siihen yhteensopiva sandbox-toteutus vaikkapa xampp:in päälle. Edelleen olisin tosin iloinen jos vastaan kävelisi jokin ratkaisu missä välttyisi ylimääräisten apache-serverien ja tietokantojen kanssa säätämiseltä(eli minun päässäni jotenkin niin, että keskuskopio olisi livenä kiinni kannassa ja sieltä otettais sit checkouttina vain se haluttu tiedosto -> muutokset -> commit -> revert jos tuli mokattua).
Microjournal etenee kivasti. Juhanan kanssa "kehitelty" fläppitauluformaatti speksissä on oikeastaan todella hyödyllinen, koska sen voi teipata seinälle, josta se vihaisesti tuijottaa takaisin ja kysyy, että eikö herran kannattaisi välillä tehdä muutakin kuin soittaa kitaraa ja juoda kaljaa. Ns. pystyminen on nyt myös korkealla, koska papereissa mainittu "satunnaisen kaverin 10 uusinta favorittia" onnistui varsin kivuttomasti, joskin huomasin että kaikenlaista dataa kuten luontipäivämääriä kannattaa kerätä aivan kaikesta.
Santerin kanssa käytiin Aurinkolahdessa juttelemassa kännykkävideokurssin nimellä kulkevasta hommasta, se meni oikein kivasti ensiviikolla käydään sitten espoon puolella lukiossa samoissa merkeissä. Mielenkiintoinen tehtävä on myös testata ja viritellä kamat, että saadaan videot kuvattua ja editoitua. Kurssiin tulee myös hieman teoriasisältöä, josta keskusteleminen on ollut varsin stimuloivaa ja toivottavasti myös kohdeyleisö kokee sen kiinnostavaksi.