Archive for the 'Koodiklinikka' Category

Pikakertaus ja esimerkkitentti

Viimeisellä luennolla luodaan katsaus opintojakson sisältöön ja käydään läpi esimerkkitentti.

Tehtävä: Suunnittele hyvä tenttikysymys ja julkaise se vastaamalla tähän viestiin. Parhaiden ehdotusten esittäjille (1-3 kappaletta) myönnetään yksi (1) suoraan tenttitulokseen lisättävä piste. Tee ehdotus viimeistään huomenna torstaina 8. toukokuuta kello 14.

Koodiklinikka: Webin ohjelmointirajapinnat

Koodiklinikalla käydään läpi Webin ohjelmointirajapintojen soveltamiseen liittyviä käytäntöjä. Tarkemmassa tarkastelussa on Google Maps API, josta käydään läpi yksityiskohtainen esimerkki. Lisäksi tehdään yleiskatsaus erilaisiin rajapintavaihtoehtoihin. Hypermedian ohjelmoinnin del.icio.us-tililtä löytyy lisää Webin ohjelmointirajapintoihin liittyviä linkkejä.

Koodiklinikka: Esimerkkejä yhteisön ohjelmoinnista

Yhteisön visualisointi Vizster-visualisointityövälineellä. FOAF-muotoisen tiedon kyseleminen SPARQL-kyselykielellä. Audioscobbler ja rajapinta yhteisödataan. Ohjelmointi Facebookissa, ks. Facebook Developers.

Koodiklinikka: Ketterän Web-kehityksen käytäntöjä

Vaiheittain kehittyvät palvelut: pahimmillaan (vai parhaimmillaan?) ikuinen beta (”perpetual beta”)

  1. esim. Last.fm:
    • muutaman kuukauden välein tilaajat saavat käyttöönsä palvelun beta-version
    • palautetta, virheitä, ongelmia
    • uusien ominaisuuksien esittely: viimeksi Build Last.fm ja Last.HQ
    • beta-testaaminen on tuotteistettu!
    • Myös erillinen Last.fm-sovellus päivittyy silloin tällöin (”Uusia ominaisuuksia, haluatko ladata?”)
  2. Google on tässäkin edelläkävijä

Ketterämpi dokumentaatio

  • Wikit kasvattavat suosiotaan myös dokumentoinnissa
  • Vrt. Tapaus Aatu ja wikiin perustuva projektinhallinta
  • Projektin polttopiste: Work Burn-Down (controlchaos.com)

Testaaminen ja ketterä ohjelmistokehitys

Periaatteita:

Koodiklinikka: Tiedonhaun apuvälineet ja RSS

Koodiklinikalla esimerkkejä tiedonhaun apuvälineistä (ks. sanahaku, Web-ryömijän toimintaperiaate) ja RSS-virroista: RSS-virtojen toiminta, tuottajat (esimerkiksi WordPress, del.icio.us ja moni muu), koostajat (aggregator) (esimerkiksi Planet Planet), jäsentäjät (ks. Magpie RSS) ja lukijat (ks. hakutulos “rss reader”), RSS-versiot (ks. W3C Suomen toimisto / RSS 1.0, Blogi / RSS 2.0 tai Blogi / Atom). Validointikin onnistuu.

Koodiklinikka: Mukauttaminen

Koodiklinikalla käydään läpi esimerkkejä mukauttamisesta: User Agent Header: User-Agent: Nokia6085/1.0 (graafi RDF-validaattorissa), eräs musiikkikauppa ja laiteriippumattomuus (vrt. viesti keskusteluryhmässä), pandora.com, amazon.com, jakelukonteksti, mozilla.com ja Aatu.

Kooliklinikka: Tiedon esittäminen ja sivupohjamoottori

Koodiklinikalla aiheina esimerkkejä tiedon esittämisestä, käsittelystä ja julkaisemisesta: tiedon esittäminen (ks. tiedon-esittaminen), sisällön tuominen (ks. sisallon-tuominen), sivupohjamoottorit (ks. levylaari/v03, levylaari/smarty, levylaari/savant).

mod_rewrite neuvoja

Tere vaan kaikille,

Ne, jotka olivat keskiviikon 5.3. luennolla kuulivat muutamista ongelmista, jotka liittyvät esimerkiksi CakePHP:n, symfony:n ja muiden, ainakin PHP-kielisten sovelluskehysten käyttöönotton ensiaskeliin.

Ongelma

Ongelma ilmenee siten, että kehittäjä saa 404 vastauksen, vaikka yrittää kuinka kirjoittaa URL:in. Esivaatimuksena tähän on omien kokemuksieni perusteella se, että yrittää käyttää sovelluskehystä kotihakemistonsa public_html hakemistosta, eikä omalta virtuaalipalvelimelta tai palvelimen juuresta (esim. /var/www/).

Syy tähän löytyy siitä, että useimmat sovelluskehykset olettavat, että niitä käytetään (virtuaali)palvelimen juuresta. Ongelma on kuitenkin ainakin CakePHP 1.1 ja 1.2 sekä symfonyn kanssa nopeasti ratkaistavissa.

Ratkaisu

Kun olet purkanut valitsemasi sovelluskehyksen paketin esimerkiksi hakemistoon $HOME/public_html/projekti, avaa kyseisen hakemiston juuresta löytyvä .htaccess tiedosto jollain tekstieditorilla.

CakePHP 1.1.* tapauksessa sieltä löytyy seuraavaa:

1 <IfModule mod_rewrite.c>
2    RewriteEngine on
3    RewriteRule    ^$ app/webroot/    [L]
4    RewriteRule    (.*) app/webroot/$1 [L]
5 </IfModule>

Lisää rivin kaksi jälkeen rivi:

ReWriteBase /~<käyttäjätunnuksesi>/projekti

Joka kertoo mod_rewrite enginelle että kaikkia tämän hakemistorakenteen alle tehtäviä URL:ja muokattaessa on lisättävä alkuun tämä URL. Huomatkaa että parametri alkaa kenoviivalla (”/”).

Jos unohdat kenoviivan alusta, saat todennäköisimmin 500 Internal server errorin, joka tulee mod_rewriteltä.

Täysin sama “kikka” (ei oikeastaan, vaan täysin dokumentoitu ominaisuus) toimii melko varmasti muidenkin sovelluskehysten kanssa.

Ei toimi vieläkään?

Mikäli ongelmat jatkuu, etsi käsiisi käyttämäsi http-palvelimen virheloki.

Ainakin apache2:sen tapauksessa vakioasetuksena taitaa olla /var/log/apache2/error.log ja sieltä tarkistaa joko viimeiseltä riviltä tai jaetulla koneella viimeiseltä riviltä, jonka sinun kone on sinne aiheuttanut (cat error.log | grep <oma-ip-osoitteeni> | tail).

Logiriviltä voit päätellä tiedoston/hakemiston jota apache oikeasti yrittää hakea. Mikäli et pääse käsiksi palvelimen error.logeihin niin yritä saada mod_rewriten oma loggaustoiminto toimimaan.

Lisäksi kannattaa varmaan kommenttia pistää tähän blogimerkintään ja korjataan/laajennetaan tätä tekstiä sitä mukaan kun ratkaisuja keksitään! Älkää pastetko mitään pitkiä virheilmoituksia vaan käyttäkää pastebin -tyylisiä ratkaisuja.

Koodiklinikka: PHP-sovelluskehykset

Koodiklinikalla katselmoidaan kaksi PHP-sovelluskehystä, CodeIgniter ja CakePHP.

Linkkejä ja lisätietoa:

Vuonna 2007 osa Hypermedian ohjelmoinnin suorittajista käytti CakePHP-kehystä harjoitustyön toteuttamiseen. Palaute oli pääosin negatiivista: automatisoitu pysyvän tietosisällön hallintakerros osoittautui haasteelliseksi ymmärrettäväksi. URI-tunnisteiden uudelleenkirjoitus ei toiminut halutulla tavalla. Myös kehyksen dokumentaatio todettiin puutteelliseksi. Näyttäisi siltä, että etenkin aloitteleva PHP-soveltaja kohtaa väistämättä ongelmia CakePHP-kehyksen kanssa.

Koodiklinikka: toteutusesimerkkejä

Koodiklikikalla käytiin läpi tukku käytännön esimerkkejä (ks. sl-testipenkki, verkkopalvelun-toteuttaminen, syote) syötteen käsittelemisen käytännöistä ja verkkopalvelun toteuttamisen yleisistä periaatteista.