Subversion ja versionhallinta

Kaikki enemmän tai vähemmän ohjelmointiin tutustuneet varmasti tietävät, että koodia on kätevää säilyttää versionhallinnassa. Pieniäkin projekteja on suhteellisen vaivatonta ja hyödyllistä säilyttää esimerkiksi Subversion-versionhallinnassa, vaikkapa ihan vain omalla työasemalla sijaitsevassa repositoryssä.

Versionhallinta on tietenkin omimmillaan isommissa projekteissa, joissa toteuttajia on useita ja repository sijaitsee keskitetysti jollain palvelimella. Versionhallinnan ei tarvitse rajoittua pelkästään sovelluskoodiin, vaan sen voi ulottaa muihinkin muuttuviin ja versioitaviin projekteihin, kuten esimerkiksi PL/SQL-paketteihin ja asetustiedostoihin.

Coding Horror -blogi ohjeistaa kätevästi Subversionin (SVN) asennuksessa omalle koneelle ja kattaa myös hieman versionhallinnan perusteita. Subversion onkin kohtalaisen hyvin tuettu eri ohjelmien toimesta ja sille on saatavilla useita eri ohjelmistoja eri alustoille kuten TortoiseSVN, SubCommander ja Eclipseen saatava Subversive. Muista ohjelmista mainittakoon Trac, joka tarjoaa projekteille viritellyn wikin, tikettiträkkerin ja liitynnän Subversioniin.

Jos versionhallinta yleisesti ei ole tuttu asia, kannattaa vilkaista visuaalinen opastus versionhallintaan ja sen toteuttamisesta keskitettynä mallina Subversionilla löytyy kattava Version Control with Subversion -kirja.

Vaihtoehtona hajautettu versionhallinta?
Versionhallintaa voi toteuttaa myös hajautettuna mallina, kuten Linuxin Kernelin kehittämisessä Gitiä käyttäen. Muita hajautettuja malleja ovat muun muassa Mercurial (mm. Mozilla) ja Bazaar (mm. Ubuntu). Keskitettyyn malliin verrattuna hajautetussa mallissa on esimerkiksi jokaisella kehittäjällä oma paikallinen repository. Hajautetuista lähteistä tulokset yhdistetään erilaisin perusteilla, kuten määrättyjen projektijäsenten päätöksillä mitkä muutokset siirretään eteenpäin tai sitten voidaan käyttää keskitetyn mallin tapaa. Hajautetun mallin järjestelmät ovat yleistymässä, mutta muutos keskitetystä mallista hajautettuun vaatii totuttelua. Pitämällä paikallista repositoryä, päästään aina käsiksi historiatietoon, sekä saadaan versionhallinnan tarjoamat edut ilman koodin yleisesti julkistamista.

Versionhallinta onkin osaltaan myös uskonnollinen kysymys samalla tavalla, kuten esimerkiksi käyttääkö vimiä vai emacsia, KDE:tä vai Gnomea tai Linuxia vai Windowsia. Erilaisista versionhallintamalleista löytyykin vahvoja mielipiteitä, kuten Linus Torvaldsin esitys hajautetun mallin Gitistä osoittaa. Yleisesti katsottuna tärkeintä kuitenkin on, että käytössä on edes jokin versionhallintajärjestelmä. Oli se sitten Subversion, Git, Mercurial, Bazaar tai vanha kunnon CVS.

Subversionilla alkuun
Tavallaan Subversionin ja yleisesti ottaen keskitetyn versionhallinnan voisi sanoa olevan jo hieman vanhentunutta, mutta Subversion tarjoaa tällä hetkellä helposti lähestyttävän ja hyvin tuetun kokonaisuuden versionhallintaan.

Toisaalta taas Subversionissa on heikkouksiakin, joten muihinkin vaihtoehtoihin kannattanee tutustua, kun perusteet ovat hallussa. Etenkin hajautettu malli vaikuttaa ihan kätevältä.

Helppoa ruudunkaappausta Windowsissa FSCapturella

Ruudunkaappausten ottaminen on teoriassa helppoa, vain yksi napin painallus, mutta kaapatun ruudun saattaminen kuvaksi onkin sitten hieman vaivalloisempaa. Jos haluaa ottaa useamman kuin muutaman ruudunkaappauksen, on kätevää jos kaapatun ruudun saa suoraan kuvatiedostoksi, eikä vasta erikseen kuvankäsittelyohjelman kautta kierrätettynä.

Windowsissa tämä onnistuu muun muassa käyttämällä FSCapture-ohjelmaa, joka tarjoaa kattavat ominaisuudet ruudun kaappaamiseen ja on ilmainen versioon 5.3 saakka. Ohjelman voi käynnistää taustalle Windowsin tehtäväpalkkiin ja kutsua esiin haluamillaan pikakomennoilla kaappaamaan koko ruudun, tietyn ikkunan tai halutun alueen.

Ilmeisesti Microsoftin Vistassa tulee mukana Snipping tool, joka melkein vastaa Applen Mac OS X:n yksinkertaiseen tapaan ottaa ruudunkaappauksia, joten tulevaisuudessa tämäkin on hieman helpompaa jo vakiona.

Toisena vaihtoehtona voi käyttää Gimpistä poimittua Lightscreeniä, joka myös tarjoaa riittävät ominaisuudet ruudunkaappausten kätevään napsimiseen.

FSCapture FSCapture FSCapture

Songbird: kehityskelpoinen musiikkisoitin

Musiikkia on kiva kuunnella ja sen mahdollistamiseksi on tarjolla useita erilaisia musiikkisoittimia. Linuxissa perinteiset vaihtoehdot kohdentuvat KDE:ssa AmaroKiin ja Gnomessa Exaileen, mutta muitakin vaihtoehtoja löytyy etenkin Gnomessa. Songbird on uudehko tulokas musiikkisoitin-valikoimassa ja on saatavissa Linuxin lisäksi sekä Windowsille että Mac OS X:lle.

Songbirdin kehitys on vielä alussa ja parisen viikkoa sitten julkaistiin versio 0.5, mutta perusominaisuudet vaikuttivat jo olevan ihan kunnossa. Kuten nimestäkin voi päätellä, Songbird on sukua Mozilla Foundationin tuotteille ja sen myös huomaa: tavallaan sekä huonossa että hyvässä mielessä. Songbirdiä voisi melkein kuvailla Firefoxiksi, joka näyttää iTunesilta ja osaa toistaa mediatiedostoja. Jei. Musiikkisoittimen takana on kuitenkin osaava kehittäjätiimi, jonka historiasta löytyy muun muassa Winamp.

Testailin Songbirdin Linux-versiota ja Gentoon ebuild löytyi perinteisesti Bugzillasta ja asennuskin hoitui heittämällä. Ulkoasultaan Songbird muistuttaa etäisesti iTunesia ja on vakioteemaltaan hillityn musta. Musiikkikokoelman lisäys onnistuu parilla napin painalluksella ja musiikki toistuu nätisti. Videoiden toistamiseen olisi tarvinnut jotain GStreamerin lisäpalikoita, joita en jaksanut lähteä säätämään kuntoon. Musiikin ja videoiden toistamisen lisäksi Songbirdistä löytyy Internet-selain.

Firefoxin tapaan Songbirdin toimintaa voi laajentaa erilaisilla lisäosilla, joista löytyy muun muassa tuki Last.fm:lle, Wikipedialle, kuvan kansien haulle ja vaikka mille. Lisäpalikoiden avulla saadaan myös tuki iPodille ja MTP-laitteille eli muille MP3-soittimille, mutta tietenkin vain Windowsissa, vaikka käytännössä tämä olisi mahdollista myös Linuxissa. En tosin oikein pidä Firefoxin tapaisesta ideasta, että jokainen vähänkin erikoisempi tai yleisempikin musiikkisoittimen ominaisuus löytyy lisäosana eikä musiikkisoittimesta jo valmiina.

Songbird vaikuttaa ihan lupaavalta projektilta Amarokin, Exailen, iTunesin ja Windows Media Playerin kilpailijaksi, mutta kehitystyötä vielä tarvitaan. Etenkin iTunesin asemaa Mac OS X:ssä ja Amarokin asemaa KDE-käyttäjien piirissä voi olla hankala horjuttaa, jos vaihtoehtoinen ohjelma ei tarjoa mitään erityisen oivallista.

Myös Arstechnica on kirjoittanut lyhyehkösti Songbirdistä.

Songbird Songbird Songbird
Songbird Songbird Songbird

Terminaalien nopeuksilla on eroja

Linuxissa on tarjolla useita erilaisia terminaaleja eli päätteitä ja eri terminaalien ominaisuuksia voidaan verrata myös nopeuden osalta. Terminaalin nopeuden voidaan olettaa olevan kohtalaisen merkityksetön detalji, mutta se vaikuttaa osaltaan muun muassa ohjelmien kääntämiseen terminaalissa. Kääntö tuottaa paljon tekstiä, jonka näyttäminen terminaalissa hidastaa varsinaista kääntämistä, ainakin teoriassa. Huomion arvoinen asia siis etenkin Gentoossa.

Martin Ankerl on toteuttanut eri terminaalien nopeuksia mittaavan testin, joka pistää terminaalit ainakin yhden ominaisuuden perusteella paremmuusjärjestykseen. Testi on toteutettu mittaamalla terminaalien eroja näyttää tekstiä ruudulla, joka on merkityksellistä etenkin laajoja ohjelmia käännettäessä. Testilaitteistona on käytetty Pentium M 1.5GHz -prosessorilla ja ATI Radion Mobile 9600 (fglrx-ajurilla) -näytönohjaimella varustettua tietokonetta, johon oli asennettu Ubuntu 7.04.

Tekstin tulostukseen käytettiin RFC3261: ”SIP: Session Initiation Protocol” -dokumenttia (632kb), joka tulostettiin ruudulle time cat rfc3261.txt -komennolla.

Tulokset:

  • Sekä gnome-terminal että konsole ovat erityisen nopeita, joka on selitettävissä muistinkäytöllä sekä tulostuksen päivitystahdilla, joka ei ole aivan sulavaa. Useat avoinna olevat gnome-terminaalit käyttävät vähemmän muistia kuin vastaava määrä konsole-ikkunoita.
  • Jos muistin käytöllä on merkitystä, kannattaa valita wterm, eterm tai aterm, jotka ovat kohtalaisen nopeita ja tekevät sen muistitehokkaasti.
  • xterm on hidas ja muistia tarvitaan ominaisuuksiin verrattuna runsaasti.

Testissä todetaan, että käytännössä asia ei ole aivan näin yksiselitteinen ja tuloksiin voivat vaikuttaa useat eri asiat kuten Linuxin tai X:n ajanjakaja. Jos terminaalien nopeuseroilla on merkitystä, kannattaakin ajaa omat testit, sillä se on kohtalaisen yksinkertaistakin.

KDE 4:n Konsole-terminaalin kehittäjä Robert Knight huomattaa OS Newsin -kommenteissa, että testauksessa käytetty tiedosto ei ole riittävän suuri hyödyllisten tulosten saavuttamiseksi; testiajojen välillä on liian paljon varianssia. Knight jatkaa toteamalla, että pohjimmiltaan paljon tekstiä ruudulle tuottavien prosessien ajaminen sujuu huomattavasti nopeammin, jos terminaali-ikkuna ei ole näkyvissä.

Knight myös kritisoi tekstitiedoston käyttämistä terminaalin nopeuden testaamisen, sillä se ei vastaa reaalimaailman tunnetta terminaalin sulavuudesta ja nopeudesta: kuinka hyvin tekstiä voidaan rullata ruudulla eli esimerkiksi liikkua Vimissä auki olevassa dokumentissa.

Kaiken kaikkiaan voidaan siis todeta, että eri terminaalien nopeuserot ovat käytännössä merkityksettömiä, vaikka mitattavia eroja löytyy.

Esimakua OpenOffice.org 3.0 -versiosta: oikeaan suuntaan

OpenOffice.org on hyvä toimisto-ohjelmistopaketti, mutta kokonaisuutena vielä kaukana kaupallisesta Microsoft Officen hiotusta paketista. Loppuvuodesta julkaistavaksi suunniteltu OpenOffice.org 3.0 tuo useita kaivattuja uudistuksia, mutta OpenOffice.org Ninja -blogin esikatsauksen perusteella, uudistukset eivät ole siltikään maata järisyttäviä.

Esikatseltuina uudistuksina mainitaan OpenOffice.org Writerin osalta useiden sivujen näyttäminen, muistiinpanot marginaalissa ja tuki Microsoft Office 2007 -formaatille. Calc saa Solverin sekä näyttää solujen valinnat läpinäkyvästi eikä enää mustalla. Lisäksi solujen määrä kasvaa 256:sta 1024:ään. Mac-käyttäjien ilona on virallinen tuki Aqua-käyttöliittymälle, jolloin OpenOffice.org toimii kauniimmin myös Maceissä. Tähän asti Aqua-versiot ovat olleet epävirallisia, mutta ihan kohtalaisesti toimivia.

Uudistukset eivät pintapuolisesti näytä olevan mitään suuria, eikä OpenOffice.orgin suurimpiin kompastuskiviin tuoda uudistuksia. Writerin käyttö on luultavasti edelleen yhtä haastavaa ja jäykkää muun muassa sisällysluettelon, ristilinkitysten ja muotoilujen suhteen. Nämä ongelmat löytyvät toki myös osittain eri Wordin versioista. Tietenkin suurin OpenOffice.orgin hidaste on Microsoft Officen valta-asema ja erilaiset tiedostoformaatit, joita ei ihan pienellä murreta.

Microsoftin Office järkäleeseen verrattuna OpenOffice.org jättää toivomisen varaa, mutta kokonaisuutena tarjoaa hyvän ja varsinkin ilmaisen vaihtoehdon dokumenttien tuottamiseen. Kehityssuunta näyttää 3.0 -version esimaun perusteella hyvältä, mutta suurempia ja mullistavampia uudistuksiakin kaipaisi. Tarvittaisiin hieman Office 2007 -tasoista muutosta kokonaisuuden saattamiseksi uudelle käytettävyyden tasolle.

Kaavioiden piirtoa Linuxilla: kaukana Visiosta, mutta toimivaa

Erilaisia avoimen lähdekoodin kaavioiden piirtoon tarkoitettuja ohjelmia on saatavilla sekä Windowsille että Linuxille, mutta ei oikein vastaavan tasoista kokonaisuutta, kuin mitä esimerkiksi Microsoftin Visio tarjoaa. Kaavioiden piirrossa onkin tehtävä muutamia kompromisseja, sillä kattavaa ja viimeisteltyä kokonaisuutta useilla erilaisilla elementeillä varustettuna on turha odottaa. Hyviä vaihtoehtoja on kuitenkin tarjolla tarpeista riippuen.

Dia:
Dia on saanut vaikutteita Windowsin Visiosta, mutta suunnattu enemmän informatiivisiin piirroksiin ja yleiseen käyttöön. Dia tarjoaakin monipuoliset mahdollisuudet erilaisten kaavioiden ja piirrosten tekemiseen. GTK+-pohjainen Dia on käyttöliittymältään perinteikkään karu, mutta ominaisuuksiltaan erittäin käyttökelpoinen ohjelma kaavioiden piirtämiseen.

Valmiilla piirroselementeillä onnistuvat UML-kaaviot, verkkopiirrokset, vuokaaviot ja uusien piirroselementtien luonti onnistuu piirtämällä se SVG-muodossa ja tuomalla se Diaan tai kirjoittamalla yksinkertaisia XML-tiedostoja käyttäen SVG-määrityksiä. Lisäksi hieman monipuolisempia elementtikirjastoja (kuten UML) voidaan luoda lisäämällä piirroselementteihin C-koodia. Valmiit kaaviokuvat voidaan tallettaa omaan XML-formaattiinsa ja muun muassa EPS, SVG, PNG ja JPG-formaatteihin.

Dia tarjoaa ominaisuuksiltaan monipuolista kaaviopiirtoa, vaikka käyttö vaatiikin hieman totuttelua. Piirrokset syntyvät suhteellisen pienellä vaivalla ja on saatavissa sekä Linuxille että Windowsille.

Kivio

Kivio:
Kivio on osa KDE:n KOffice-toimisto-ohjelmistopakettia ja tarkoitettu vuokaavioiden ja diagrammien tekoon. Valmiit piirrokset on mahdollista tallentaa oman XML-formaatin lisäksi JPG, PNG ja BMP-formaatteihin. Piirroselementtejä voi tehostaa Pythonilla ja saatavilla on lisäksi maksullisia elementtejä.

Kivio jättää toiminnoiltaan hieman valjun kuvan, eikä yllä ihan Dian tasolle, vaikka tarjoaakin kelvolliset mahdollisuudet erilaisten kaavioiden piirtoon. Valmiiden ilmaisten piirroselementtien tarjonta on vähäistä, mutta Kivioon on mahdollista tuoda Dian piirtoelementtejä xfig2sml -projektin tarjoamana. Valitettavasti xfig2sml:n tuomat kuviot eivät ole yhtä laadukkaita kuin mitä Dia itsessään tarjoaa.

Toivottavasti tulevaisuudessa Kivion maksulliset piirroselementit löytävät tiensä myös ilmaisten elementtien joukkoon, sekä kuvien tallennus kaipaisi SVG-formaattia. Muilta osin Kivio onkin ihan kätevä kokonaisuus.

Kivio

VirtualBox tarjoaa helpohkoa ja nopeaa virtualisointia

Käyttöjärjestelmien virtualisointi on nykyään helppoa ja tarjolla on useita erilaisia virtualisointiohjelmistoja ja -tekniikoita. Olen aikaisemmin käyttänyt VMware Serveriä ja testannut muun muassa Qemua, KVM:ää, VMware Workstationia ja VMware Playeria. Nyt testausvuorossa oli VirtualBox, joka on puheiden perusteella toimiva ratkaisu ja vastannee nopeudeltaan VMwarea. VirtualBox on saatavilla sekä Linuxille, Macille että Windowsille.

VirtualBoxin asennus onnistui helposti Gentoo Wikin ohjeilla. Pakettien kääntämisen jälkeen VirtualBoxin Wizard ohjaa uuden virtuaalikoneen tekemisessä ja parilla klikkailulla kaikki on valmista käyttöjärjestelmän asennusta varten. Virtuaalikoneen asetuksista kun vielä määrittelemme käytettävän levyimagen ja tarkistamme verkkoasetukset, voimme käynnistää virtuaalikoneemme. Verkkoasetuksista on mahdollista käyttää sillattua verkkoa, mutta kätevämpi vaihtoehto on käyttää NAT-verkkoa, joka toimii suoraan paketista.

Asensin VirtualBoxista avoimen lähdekoodin GPL-lisenssin alla julkaistun OSE-version (Open source edition) ja tarjolla on myös suljetumpi binääriversio, joka tarjoaa muutamia lisäominaisuuksia kuten kehittyneemmän USB-kontrollerin, sisäänrakennetun Remote Desktopin (RDP) ja tuen iSCSI-levyille. VirtualBoxin binääriversio on Personal Use and Evaluation License (PUEL) -lisenssin alainen ja tarkoitettu yksityiseen ja akateemiseen käyttöön tai tuotteen testaukseen. Käytännössä avoimen lähdekoodin versio on kuitenkin ominaisuuksiltaan peruskäyttäjälle riittävä.

Virtuaalikoneeseen kannattaa asentaa vielä ”guest additions” -lisäosa, jolla saadaan käyttöön saumaton liikkuminen isäntäkoneen ja vieraskoneen välillä, eli hiirtä ei tarvitse aina irroittaa erikseen Ctrl-näppäimellä. Lisäpalikan asentamisen jälkeen saadaan myös isommat resoluutiot käyttöön ja VirtualBox osaa säätää virtuaalikoneen resoluution ikkunan koon mukaiseksi. Käteviä ominaisuuksia, jotka helpottavat virtuaalikoneen käyttämistä. Pikaisesti testattuna VirtualBox tarjoaa ainakin peruskäyttäjän näkökulmasta samoja ominaisuuksia kuin kaupallinen VMware Workstation. Hieman harmillisesti VirtualBoxin ”guest additions” -lisäosa ei ole GPL-lisensoitu, vaan on PUEL-lisenssin alainen.

Menemättä tarkemmin virtualisoinnin toteutustapoihin, sanottakoon että VirtualBox hyödyntää osia QEMU-projektin ratkaisuista muun muassa rautatason osalta ja käyttää QEMUn kääntäjää varamekanismina tilanteiden varalta, joita oma Virtual Machine Manager (VMM) ei pysty hallitsemaan. VirtualBox tukee lisäksi virtualisointitekniikoita kuten Intelin VT-x (Vanderpool) ja AMD:n SVM (Secure Virtual Machine), mutta ei hyödynnä niitä vakiona. Tähän on hyvä syy, sillä VirtualBoxin oma x86 virtualisointi on hienostunut ja useimmissa tapauksissa tarjoaa parempaa suorituskykyä kuin esimerkiksi VT-x. Tähän löytyy tarkempi selitys VirtualBoxin kehittäjien FAQ:sta. Lisää VirtualBoxin teknisistä ratkaisuista voi lukea esimerkiksi VirtualBoxin teknistä arkkitehtuuria käsittelevältä sivulta tai lyhyemmin Wikipediasta.

VirtualBox OSE vaikuttaa hyvältä vaihtoehdolta virtualisoinnin toteuttamiseksi, etenkin kun VMwaren ilmaisen VMware Serverin käyttö muuttuu hankalammaksi kuin aikaisemmin. VirtualBox tarjoaa hyvän kokonaisuuden ja hyvät ominaisuudet helposti käytettävässä paketissa ja on suorituskyvyltään mutu-tuntumalta nopeampi kuin QEMU tai KVM ja VMware Serveriin verrattavissa.

VirtualBox VirtualBox VirtualBox VirtualBox