Skip to end of metadata
Go to start of metadata

tehtävien 1-10 palautus viikon 2 tapaan, deadline su 1.4. klo 23.59

  • tehtävät 1 ja 2 tehdään paikalliseen repositorioon, eli ne eivät näy palautuksessa mitenkään
  • palautusta varten yksityinen repositorio jolla collaboratorina käyttäjä mluukkai
    • kannattaa käyttää samaa repoa kuin viikon 2 tehtävissä
  • palautusrepositorion nimi ilmoitetaan tehtävien lopussa olevalla palautuslomakkeella

1 lisää git:iä: branchit

lue brancheja käsittelevät osuudet seuraavista: https://we.riseup.net/debian/git-development-howto ja http://www.ralfebert.de/tutorials/git/

  • tee samalla kaikki tekstien esimerkit

huom: kun liikut branchien välillä kannattaa pitää working tree ja staging -alue tyhjinä!

tee seuraavat paikalliseen git-repositorioosi

  • luo reposoitorio ja committaa masteriin tiedosto masteri1.txt
  • luo branch eka, siirry branchiin, luo sinne tiedosto eka.txt ja committaa
  • siirry takaisin master-branchiin. tiedoston eka.txt ei pitäisi nyt näkyä
  • lisää ja committaa masteriin tiedosto masteri2.txt
  • mene branchiin eka ja tarkasta, että masteriin lisätty tiedosto ei ole branchissa
  • lisää branchiin tavaraa, esim tiedosto eka2.txt ja committaa
  • siirry takaisin master-branchiin
  • tarkasta että eka-branchiin lisätyt muutokset eivät ole masterissa
  • tarkastele komennolla gitk --all miltä repositorio ja branchit näyttävät (ei tietoa toimiiko gitk windowsissa)
  • mergeä branchin eka sisältö masteriin
  • katso jälleen miltä näyttää gitk --all
  • tuhoa branchi eka

2 lisää git:iä: konflikti!

tee paikalliseen git-repoon seuraavat

  • lisää master-branchiin tiedosto tarkea.txt, kirjota sinne tekstiä ja committaa
  • tee uusi branchi toka, editoi tiedoston tarkea.txt loppua ja committaa
  • mene takaisin master-branchiin, editoi tiedoston tarkea.txt alkua ja committaa
  • mergeä branchin toka sisältö masteriin
    • katso tiedoston tarkea.txt-sisältöä, sen pitäisi sisältää nyt molemmissa brancheissa tehdyt muutokset
  • lisää jotain tiedoston loppuun ja committaa
  • siirry branchiin toka
  • lisää jotain tiedoston tarkea.txt loppuun ja committaa
  • mergeä branchin master sisältö branchiin toka
    • nyt pitäisi aiheutua konflikti
  • ratkaise konflikti:
    • editoi tiedoston tarkea.txt sisältö haluamaksesi
    • ja toimi ym. artikkelien ohjeen mukaan eli lisää konfliktoinut tiedosto staging-alueelle ja committoi

3 lisää git:iä: branchit ja GitHub

aloita lukemalla http://progit.org/book/:n luku Remote Branches

branch githubiin:

  • lisää tehtävien palauttamiseen käyttämäsi GitHub-reposition paikalliseen kopioon branchit haara1 ja haara2
  • mene branchiin haara1, lisää sinne tiedosto haara1.txt ja committaa
  • mene branchiin haara2, lisää sinne tiedosto haara2.txt ja committaa
  • pushaa uudet branchit GitHubiin
  • tarkastele GitHub-repositoria selaimella, varmista että branchit syntyvät ja niillä on haluttu sisältö

kloonaa GitHub-repositoriosta koneellesi toinen kopio

  • kuten huomaat, eivät branchit tule kloonattuun kopioon
  • tee paikalliseen kopioon branch joka "träkkää" GitHub:issa olevan projektisi branchia haara1 (ks. http://progit.org/book/ kohta Tracking Branches)
  • lisää "träkkäävään" branchiin joku tiedosto, committaa ja pushaa branchi GitHubiin
  • tarkastele GitHub-repositoria selaimella, varmista että branchi päivittyy

mene GitHub-repon alkuperäiseen paikalliseen kopioon

  • mene branchiin haara1 ja pullaa muutokset GitHub:in vastaavasta branchista
    • huom: koska kyseessä ei ole "träkkäävä" branchi, joudut pullaamaan komennolla git pull origin haara1
  • mene branchiin haara2, lisää sitten tiedosto, committaa ja pushaa branchi GitHubiin
    • huom: koska kyseessä ei ole "träkkäävä" branchi, ei git push riitä vaan joudut määrittelemään

mene jälleen toiseen kopioon

  • tee sinne GitHub:issa olevan projektisi branchia haara2 träkkäävä branch
  • tee branchiin muutoksia ja pushaa ne githubiin
    • huom: koska kyseessä träkkäävä branch, riittää git push
  • tarkastele GitHub-repositoria selaimella, varmista että branchi päivittyy

Branchien kanssa työskentely voi aluksi tuntua sekavalta varsinkin jos GitHub:issa on myös useita brancheja.

4 mihin brancheja käytetään?

Lue artikkeli http://nvie.com/posts/a-successful-git-branching-model/ Se esittelee yhden tavan käyttää brancheja ohjelmistoprojektissa. Pienemmissä projekteissa selviää yksinkertaisemmillakin branching-malleilla. Projektissa tulee kuitenkin sopia minkälaista mallia käytetään ja kaikkien kehittäjien on mallia noudatettava.

5 lisää mavenia: koodin staattinen analyysi

mene nyt johonkin valmiiseen projektiisi, esim viikon 2 verkkokauppaan

  • kokeile suorittaa mvn jxr:jxr checkstyle:checkstyle
    • avaa raportti selaimella polulta /target/site/checkstyle.html
  • oletusarvoisesti raportoidaan paljon kaikenlaista. checkstylen toiminta on täysin konfiguroitavissa. hae ositteesta http://www.cs.helsinki.fi/u/mluukkai/ohtu2012/my_checks.xml konfiguraatiotiedoston pohja, talleta se sopivaan paikkaan, kokeile:
    • mvn jxr:jxr checkstyle:checkstyle -Dcheckstyle.config.location=../my_checks.xml
    • komennossa oleva polku olettaa että konfiguraatiotiedosto sijaitsee hakemistossa jossa projektihakemistosi sijaitsee
  • tee alkuperäisestä kopio, ja kommentoi kopiosta kaikki elementin <tree walker> sisällä olevat tarkistukset (modules) pois
  • määrittele seuraavat säännöt (ks. available checks ja standard checkins checkstylen sivuilta):
    • metodien pituus max 10 riviä
    • sisäkkäisiä if:ejä ei yli kahta
    • ei sisäkkäisiä for:eja
    • syklomaattinen koodikompleksisuus korkeinaan 3 (selvitä mitä tarkoittaa!)
    • ei yli 3 rivin copy-pasteja (eli duplicated codea), huom: tätä tarkastusta ei tule laittaa tree-walkerin sisälle vaan "samalle tasolle" walkerin kanssa
  • tee koodiin muutoksia jolla testaat että rikkoutuvat ehdot huomataan

6 tutustuminen easyB:hen

lue seuraava https://wiki.helsinki.fi/display/ohtu2012/laskari3-easyB, tutustu ohjelman rakenteeseen ja aja testit

7 Kirjautumisen testit

tee User Storyn User can log in with valid username/password-combination kaikista testeistä ajettavia

8 Uuden käyttäjän rekisteröitymisen testit

tee A new user account can be created if a proper unused username and a proper password are given kaikista testeistä ajattavia.

  • käyttäjätunnuksen on oltava merkeistä a-z koostuva vähintään 3 merkin pituinen merkkijono joka ei ole vielä käytössä
  • salasanan on oltava pituudeltaan vähintään 8 merkkiä ja sen tulee sisältää vähintään yksi numero tai erikoismerkki
  • Täydennä ohjelmaa siten että testit menevät läpi

9 Spring jälleen kerran

Ennen kuin sovellus päästään käynnistämään, on se konfiguroitava:

Muuta ohjelmaa siten, että sovelluksen konfigurointi hoidetaan Springin avulla (joko xml- tai annotaatioperustaisesti), ja main:iksi riittää:

10 FileUserDAO

Laita ohjelma tallettamaan käyttäjätiedot tiedostoon. Hoida asia siten, että teet luokan FileUserDAO joka toteuttaa rajapinnan UserDAO. Anna FileUserDAO:lle sen käyttämä tiedosto konstruktoriparametrina. Testatessa on edelleen mielekästä käyttää InMemoryUserDAO:a.

  • Jos tiedostojen käsittely on päässyt unohtumaan, ohjeita esim. täällä
  • päätä itse mitä tapahtuu tilanteessa, jossa parametrina annettua tiedostoa ei ole olemassa

Jos teit edellisen tehtävän, muokkaa Spring-konfiguraatiosi ottamaan huomioon uusi tilanne. Huom: joutunet konfiguroimaan FileUserDAO:n xml:ssä, sillä merkkijonomuotoista konstruktoriparametria ei pysty injektoimaan @Autowired-annotaatiolla. Ohje String-tyyppisen arvon injektointiin xml-konfiguraatiossa täällä

tehtävien kirjaus:

  • Kirjaa tekemäsi tehtävät tänne
    • huom: tehtävien palautuksen deadline on su 1.4. klo 23.59
  • Kirjauksen onnistumisen ja aiemmat kirjauksesi voit tarkistaa täältä

palaute tehtävistä:

  • Lisää viikon 1 tehtävässä 8 forkaamaasi repositorion omalla nimelläsi olevaan hakemistoon tiedosto nimeltä viikko3
  • tee viime viikon tehtävän tapaan pull-request
    • anna tehtävistä palautetta avautuvaan lomakkeeseen
    • huom: jos teet tehtävät alkuviikosta, voi olla, että edellistä pull-requestiasi ei ole vielä ehditty hyväksyä ja et pääse vielä tekemään uutta requestia

miniprojekti

  • viikon kulessa jakaudutaan noin 3-4 hengen ryhmiin
  • jokaisen ryhmän käytävä tapaamassa asiakasta (45min tapaaminen) torstaina tai perjantaina, varatkaa aika ao. linkin takaa
  • tarkemmat ohjeet muodostumassa tänne
Labels
  • None