1(1) JAKELU Antti Tuomaala Tuomo Marttila Juha Parhankangas Niko Stenberg Vers Muuttaja Pvm Muutos Tarkastanut Hyväksynyt 1.0 12.11.2000 Alkuperäinen versio Luonnos 1 1.1 11.12.2000 Pari asiavirhettä korjattu. Luonnos 2 Ohjelmointiympäristö VYM projektissa 1. Yleistä 2. Tiedostot Tässä muistiossa kerrotaan miten VYM projektin kehitysympäristö asetetaan kuntoon. Ryhmän jäsennillä on vapaat kädet valita lopullinen kehitysympäristönsä, rajoitteena on lähinnä JDK:n ja versionhallinnan käyttö. Kaikkien seuraavien asennus on aika työläs prosessi, mutta se voi olla vaivan arvoista. Mikäli voi työskennellä nopean verkkoyhteyden päässä, niin on toki mahdollista saada tunnus hazard.iki.fi:n ja alkaa työskentelmään siellä. Kone ei ole mikään mylly, joten omalla koneella työskentely (isot käännökset) voi olla jouhevampaa. Tämän muistion pohjalta on tarkoitus sopia tarkemmat käytännöt ja kirjata ne dokuenttienhallintasuunnitelmaan. Kaikki tarvittavat tiedostot löytyvät osoitteista: http://hazard.iki.fi/vym/software/ tai ftp://vym@hazard.iki.fi/software/
2(2) 3. Ohjelmien asennus 3.1. JDK ympäristö Huom! Käytetään JDK versiota 1.2.2, kuten projektisuunnitelmassa on määrätty. Oheiset ohjeet pätevät, kunhan muutatte version 1.3 1.2.2. Windows Linux.../software/windows/j2sdk1_3_0-win.exe.../software/linux/j2sdk-1_3_0-linux-rpm.sh Asennus molempiin ympäristöihin on melko suoraviivaista ja tässä oletetaan, että kaikki osaavat asennuksen tehdä. Varmuuden vuoksi kerrotakkoon tässä vielä tarvittavat ympäristömuuttujat: Muuttuja JAVA_HOME PATH JDK:n sijainti. Ohessa esimerkit (muuta hakemisto sopivaksi) Windows: SET JAVA_HOME=c:\jdk1.3 Linux: export JAVA_HOME=/usr/java/jdk1.3 Windows: SET PATH=%PATH%;%JAVA_HOME%\bin Linux: export PATH=${PATH}:${JAVA_HOME}/bin 3.2. Versionhallinta 3.2.1. Asennus VYM palvelimelle on asennettu CVS niminen versionhallintaohjelmisto. Projektia varten on luotu oma moduuli, jonka käyttöönotto on melko suoraviivaista. Versionhallinnan avulla jokainen voi muokata koodia haluamassaan paikassa ja koodin yhtäaikanen muokkaaminen on mahdollista. Windows Linux.../software/windows/WinCvs106.zip.../software/linux/cvs-1.11-1.i386.rpm Windows versio pystyy toimimaan vain clienttinä. Linux versio toimii myös serverinä, mutta tässä projektissa ainut tarvittava palvelin toimii VYM palvelimella. Itse asennus on taas suoraviivaista, joten siitä ei tässä sen enempää.
3(3) 3.2.2. Konfigurointi (WinCvs) Kun WinCvs -ohjelman käynnistää ensimmäisen kerran tulee kuvaruudulle seuraavanlainen ikkuna: Kirjoita Enter the CVSROOT kenttään vastaava arvo, kuin kuvassa näkyy, mutta muuta siihen oma tunnuksesi. Tunnukset ovat: hazard ana juhis niko tuomo Jokainen saa arvata listasta omansa. Salasana ilmoitetaan kullekkin erikseen toisessa yhteydessä. Seuraavaksi logataan sisään järjestelmään eli valitaan Cvs Admin / Login
4(4) Tässä vaiheessa tulee tietää paikka, missä lähdekoodit aikoo säilyttää omalla koneellaan. Tuodaan lähdekoodit omalle koneelle valitsemalla Cvs Admin / Checkout Module Seuraavaan dialogiin tulee lisätä moduulin nimi vym. Nyt logi-ikkunassa pitäisi näkyä mitä tiedostoja on haettu. Mikäli vasemmalla ja ylhäällä olevassa puussa ja tiedostolistassa ei näy tiedostoja, niin ne pitäisi saada esille esim. F5 avulla (refresh).
5(5) Nyt kaikki pitäisi olla valmista ja hillitön koodaus voi alkaa. 3.2.3. Konfigurointi (Linux CVS) Joitakin ympäristömuuttujia pitää asettaa. Muuttuja CVSEDITOR CVSROOT Käytettävä editori kommenttien antoon. Jos ei määritelty, niin käyttää vi:tä. CVS repository root eli paikka mistä tiedot haetaan. Esimerkiksi: CVSROOT=:pserver:juhis@hazard.iki.fi:/var/loca l/vymrepos export CVSROOT Jos ympäristömuuttujat on kohdallaan, niin voidaan napata moduuli käyttöön. % cd ~juhis/paikka_jonne_sorsat_tulee % cvs login (Logging in to juhis@hazard.iki.fi) CVS password: (enter your password) % cvs checkout vym cvs server: Updating vym U vym/readme cvs server: Updating vym/com cvs server: Updating vym/com/comptel cvs server: Updating vym/com/comptel/vym U vym/com/comptel/vym/koe.java Nyt hakemistoon olisi pitänyt ilmestyä kansio vym ja hullu koodaus voi alkaa. 3.2.4. Käyttö CVS poikkeaa logiikaltaan melkoisesti Comptelin käyttämästä ClearCase:sta! Ohjelman logiikkaan ja käyttöön kannattaa siis perehtyä huolella. Isoin ero se, että CVS mahdollistaa saman tiedoston muokkauksen useammalle kuin yhdelle käyttäjälle yhtä aikaa (tämä voidaan estää tarvittaessa). Sen sijaan voidaan tarkistaa, ketkä tiedostoja milloinkin muokkaavat ja jos ristiriitatilanteita varten on omat mekanisminsa. Lisäksi CVS tiedostot eivät ole automaattisesti synkronissa muiden käyttäjien kanssa, vaan päivitykset on tehtävä manuaalisesti pyytämällä update. Myös komentojen nimet ovat CVS:ssä ja ClearCasessa hyvin erilaiset. Esim. checkout tarkoittaa em. järjestelmissä eri asioita!
6(6) Tärkeimmät komennot on listattu seuraavassa taulukossa. Milloin näitä tulee käyttää on selitetty päivitetyssä dokumenttienhallintasuunnitelmassa. WinCvs komennot voidaan valita suoraan ikoneista ja ne liene helppo löytää Komento cvs login cvs logout cvs update cvs update tiedosto.java cvs editors tiedosto.java cvs log tiedosto.java cvs diff tiedosto.java cvs watch add tiedosto.java cvs watch remove tiedosto.java cvs edit tiedosto.java cvs unedit tiedosto.java cvs commit tiedosto.java Järjestelmään sisäänkirjautuminen. Järjestelmästä uloskirjautuminen. Synkronisoi koodin palvelimelta omalle koneelle. Tämä kannattaa tietysti tehdä usein. Päivitykset ei ilmesty omalle koneelle automaattisesti! HUOM! Uudet hakemistot ei (ainakaan WinCvs versiossa) tule mukaan automaattisesti. Varmista että Create missing directories that exist in the repository. on valittu. Tiedostokohtainen synkronointi. Tarkistaa ketkä tiedostoa parhaillaan muokkaavat. Tiedostoa ei välttämättä kannata ottaa työn alle, jos joku muu muokkaa sitä parhaillaan. Tulostaa muutoshistorian (muutoskommentit). WinCvs osaa tehdä tehdä tästä melko kivannäköisen puun. Tehtyjen muutosten tulostus (todelliset muutokset). Lisää tiedostoon seurannan. Eli jos joku päättää editoida omistamaasi tiedostoa, niin sinulle lähetetään tieto siitä. Tätä ei ole vielä konfattu kuntoon. Poistaa seurannan. HUOM! Älä koskaan käytä komentoa watch off. Ottaa tiedoston muokkauksen alle. Ennen kuin tämä on tehty, tiedostoa ei pysty muokkamaan. Peruu tehdyt muutokset ja palauttaa tiedoston tilaan, jossa käyttäjä ei ole enää sen muokkaaja. Palauttaa tiedoston versionhallintajärjestelmään muutosten jälkeen. Tulee tehdä vasta, kun päivitys on todettu toimivaksi, sillä muuten muilla käyttäjille voi tullaongelmia. Tulee tehdä kuitenkin riittävän usein, jotta kaikilla olisi pääsy tuoreeseen lähdekoodiin ja jotta varmuuskopiointi toimisi. Näistä käytännöistä lisää myöhemmin päivitettävässä dokumenttienhallintasuunnitelmassa. 3.3. Make työkalu Projektin kääntämisen apuna käytetään Ant nimistä työkalua. Idealtaan Ant on vähän kuin normaalin Make:n ja Makefile:n käyttö, mutta systeemi on hieman joustavampi (etenkin Java käytössä). Java.../software/java/jakarta-ant-bin.zip Asennus on suoraviivaista eli puretaan oheinen paketti haluttuun paikkaan ja määritellään seuraavat ympäristömuuttujat: Muuttuja
7(7) ANT_HOME PATH Ant:n sijainti. Ohessa esimerkit (muuta hakemisto sopivaksi) Windows: SET ANT_HOME= c:\program file\ant Linux: export PATH=${PATH}:${ANT_HOME}/bin Windows: SET PATH=%PATH%;%ANT_HOME%\bin Linux: export PATH=${PATH}:${ANT_HOME}/bin Antin käyttö on varsin yksinkertaista. Kun olette hakeneet projektin versionhallinnalla itsellenne, niin huomaatte siellä olevan build.xml tiedoston. Se on varsin simppeli tiedosto ja ehkä sitä vielä viritellään projektin edetessä. Nytkin homma toimii jo niin, ettei Ant käännä mitään turhaan kahta kertaa ja se löytää aina automaattisesti uudet Java tiedostot. Tällä hetkellä siellä on komennot Komento ant tai ant compile ant dist ant clean ant doc ant doc_publish ant doc_clean Kääntää muutetut sorsat kansioon build. Tekee käännetyistä luokista JAR-kirjaston kansioon dist. Poistaa kansiot build ja dist sisältöineen. Dokumentoi JavaDoc kommentteja käyttäen Siirtää dokumentaation VYM-kotisivulle osoitteeseen: http://hazard.iki.fi/vym/api/ (Voit käydä katsomassa, että sehän toimii jo!) Poistaa dokumentoinnin (ei julkaistua versiota). 3.4. IDE kehitysympäristö Jokaisella on mahdollisuus käyttää haluamaansa kehitysympäristöä. Projektin käännökset tulee (ainakin ennen commit:ia) kuitenkin testata Ant-työkalulla. Mikäli joku haluaa käyttää jotain kaupallista kehitintä, niin kehityksessä on muistettava pitäytyä JDK:n omissa kirjastoissa ja niissä kolmannen osapuolen kirjastoissa, joista on sovittu. Kaupalliset kehittimet lisäävät helposti huomaamatta sellaisia ominaisuuksia, jotta ohjelma ei enää käänny muissa ympäristöissä. Windows puolella yksi vaihtoehto on ilmainen JCreator. Windows.../software/windows/jcrea151.zip Ohjelma on helppo käyttää ja asentaa. Suositeltavaa on kuitenkin asentaa JDK ensin. Kun JCreator:in käynnistää ensimmäisen kerran, niin pitää muistaa asettaa JDK Profile osoittamaan paikkaan, josta JDK1.3 löytyy.
8(8) 3.5. JSP palvelin Jakarta niminen JSP palvelin on asennettu VYM palvelimelle. Sitä ei ole vielä ole integroitu Apache webbiserveriin, eikä muutenkaan sen kummemmin konfattu. Toimivuutta voi kuitenkin kokeilla osoittessa: http://hazard.iki.fi:8080 Jos tarvitset kehtitää JSP sivuja muualla kuin VYM palvelimella, niin Jakarta on helppo asentaa purkamalla oheisen paketin sisältö ja lukemalla asennusohjeet. Java.../software/java/jakarta-tomcat.tar.gz 3.6. Tietokanta Tietokanta on hieman ongelmallisempi palikka. Kaikki ei varmastikaan halua ruveta omaa kantaa virittelemään. Ongelma on myös se, että vaatimusmäärittelyssä käytetään Oraclea, sillä sitä ei VYM palvelimelle voi asentaa. Erilaisia ratkaisumalleja voisi olla: Tehdään AMOK:sta tai AMOK:n käyttämästä tietokantaosasta versio, joka ei hae oikeasta kannasta mitään. Jos tyydytään PostreSQL kantaan, niin sitä voidaan käyttää VYM palvelimella. Tällöin ohjelmia pystyy ainakin testaamaan VYM palvelimella käsin. Kantaan voidaan ottaa yhteyttä myös verkon yli. Jos käytetään Oraclea, niin palomuuri estää pääsyn ulkopuolelta. Jos käytetään PostreSQL:ää VYM palvelimella, niin siihen pääsee käsiksi kaikkialta, PAITSI tietenkään Comptelin sisältä. VYM palvelimelta löytyy tällä hetkellä JDBC yhteys kantaan ja se muodostetaan Java koodina seuraavaan tyyliin: // avataan yhteys try { Class.forName("postgresql.Driver"); db = DriverManager.getConnection("jdbc:postgresql:kanta", "username", ""); st = db.createstatement(); } catch (Exception ex) { System.err.println("Could not find posgresql." + ex); } // haetaan tavaraa try { rs = st.executequery("select * FROM taulu;"); if (rs.first()) { do { numero = rs.getint("joku_kentta"); // tee jotain numerolla } while (rs.next()); } } catch (Exception ex) { System.err.println("Could not execure query. " + ex); }