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ä.

Päivän linkit 5.5.2008

  • Valokuvaaja Kimmo Taskinen, tunnettu paitsi luontokuvistaan myös Pahkasiassa julkaistuista sarjakuvistaan, keräsi 44 omasta edustavinta otosta kuvakoosteeksi HS.fi:n verkkosivuille. Lue kuvista myös kuvaajan kommentit.
  • Suomen ilmavoimien ja Frame Graphics Oy:n tuottama promootioelokuva Taivaan varjot on voittanut palkinnon WorldMediaFestival-kilpailussa Hampurissa. (via net.nyt)

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

Suomenkielinen WordPress 2.5 ja käännöstiedosto

WordPress 2.5:n myötä etenkin blogin hallintapaneelin suomennos jäi harmittavan vajanaiseksi, eikä tarjolla ollut eikä ole vieläkään suomenkielistä WordPressiä, jota aikaisemmin Kimmo Suominen on työstänyt.

Kuten aikaisemmin kerroin, yhdistinkin aikaisemman version suomenkielisen fi-FI.po -kielitiedoston tuoreimpaan englanninkieliseen kielitiedostoon, jonka jälkeen hieman paikkailin epäyhteneväisyyksiä ja uusia tekstejä. Lopputuloksena oli kelvollinen, mutta kaukana täydellisyydestä oleva fi_FI.mo-kielitiedosto WordPressin tekstien kääntämiseksi suomeksi.

Teknisesti asia onnistui käyttämällä joko Kbabel tai poEdit -ohjelmia, joilla kielitiedostoja voidaan käsitellä ja lopuksi kääntämällä fi_FI.po-työtiedostosta WordPressin ymmärtämä fi_FI.po -versio. Linuxissa tämä onnistuu msgfmt -o fi_FI.mo fi_FI.po -komennolla.

Myös muut suomenkielistä WordPressiä halajavat ovat olleet ahkeria ja WordPress omalla kielelläsi -sivuilta löytyykin linkki Rauli Haverisen tekemään suomenkieliseen kielitiedostoon. Kirjoitushetkellä kyseinen käännöstiedosto ei ole sekään vielä täydellinen, enkä ole katsonut minkälaista käännöstä se sisältää. Ei varmastikaan ainakaan huonompaa kuin omani :)

WordPress-FI sähköpostilistan mukaan tulevaisuudessa on tarkoitus ohjata suomenkielisten jakelupakettien rakentaminen ja jakelu fi.wordpress.org -osoitteen alle, joka tarjoaa tällä hetkellä vain täytesivua. Varsinaisesta käännöstyön jakamisesta ei sähköpostilistalla ole päästy oikein mihinkään lopputulokseen, vaikka erilaisia kääntämiseen tarkoitetuista ohjelmia onkin listalla käsitelty.

Olisi hyvä, että asiaan tulisi selkeys ja käännöstyö saataisiin yhteen keskitettyyn paikkaan. Pitänee seurailla asian etenemistä.

Päivän linkit 26.4.2008

Näppäimistöllä varustetut housut

Kekseliäisyydellä voidaan toteuttaa kaikenlaista enemmän ja vähemmän käytännöllistä. Suunnittelija Erik De Nijs on yhdistänyt tekniikan tarjoamiin mahdollisuuksiin ripauksen käsityötä ja toteuttanut näppäimistöllä varustetut housut. Käytännössä kokonaisuus sisältää housujen etumukseen ommellun Virtually Indestructible -näppäimistön ja polvien tasolle lisätyt kaiuttimet. Lisäksi hiirelle on oma taskunsa ja peliohjain löytyy vetoketjun takaa.

Näppäimistöllä varustetut housut -konsepti ei ole ehkä kovinkaan käytännöllinen, mutta ainakin erikoinen ja tyylikäs. Tarina ei kerro, miten näppäimistö liitetään haluttuun tietokoneeseen, mutta luultavasti ihan perinteisesti USB-piuhalla. Kenties seuraava toteutus on jo varustettu Bluetoothilla ja hiiritapilla tai -tasolla.

(via Vous Pensez)

Näppishousut Näppishousut Näppishousut

Linux, näppäimistö, hiiri ja evdev

Linuxin käyttäminen on mukavaa, sillä aina välillä on tarjolla kivoja yllätyksiä, ettei tietokoneen käyttäminen olisi liian helppoa. Tietenkin tällä(kin) kertaa varsinainen vika löytyy penkin ja tuolin välistä, joka ei ole huomioinut muuttuneita asioita. Olen kiertänyt eteen tullutta evdev-laitteistoajurin ja hal-välipalikan aiheuttamaa ongelmaa onnistuneesti muutamisen kuukauden ajan, mutta nyt piti löytää ihan oikea ratkaisu.

Ongelmana oli siis, että asioista X ja Y johtuen näppäimistö ei toiminut X-ikkunamanagerissa halutulla tavalla, vaan näppäimet olivat sanan mukaisesti sekaisin: muun muassa nuolinäppäin ei toiminut alaspäin ja muuta mukavaa. Onneksi ongelma oli helposti korjattavissa muuttamalla X.orgin asetustiedostosta näppäimistön asetukset oikeaksi eli evdev-ajurin vaatimusten mukaiseksi.

X-ikkunoinnin xorg.conf-tiedoston näppäimistöosio näytti tämän jälkeen seuraavalta:

Section "InputDevice"
    Identifier  "Keyboard"
    Driver      "evdev"
    Option      "CoreKeyboard"
    Option      "Name"          "Logitech HID compliant keyboard"
    Option      "Device"        "/dev/input/event3"
    Option      "XkbRules"      "xorg"
    Option      "XkbModel"      "evdev"
    Option      "XkbLayout"     "fi"
EndSection

Aikaisemmin Driver-arvona oli siis kbd ja XkbModel-arvona pc105. Sekä Name että Device -kenttien arvot löytyvät kirjoittamalla terminaaliin cat /proc/bus/input/devices ja vilkaisemalla oikeat arvot N ja H-riveiltä.

I: Bus=0003 Vendor=046d Product=c30e Version=0110
N: Name="Logitech HID compliant keyboard"
P: Phys=usb-0000:00:1d.1-2/input0
S: Sysfs=/class/input/input3
U: Uniq=
H: Handlers=kbd event3
B: EV=120013
B: KEY=10000 7 ff800000 7ff febeffdf f3cfffff ffffffff fffffffe
B: MSC=10
B: LED=7

Tämän lisäksi suomalaisen näppäinasettelun saamiseksi kopioin /usr/share/hal/fdi/policy/10osvendor/10-keymap.fdi-tiedoston sijaintiin /etc/hal/fdi/policy/11-keymap.fdi ja päivitin input.xkb.layout-avaimen määritteen muotoon

<merge key="input.xkb.layout" type="string">fi</merge>

eli muutin oletuksena olleen us-arvon fi-arvoksi. Nyt X ottaa vakiona käyttöön suomalaisen näppäinasettelun eikä jenkkinäppistä.

Hiiren asetukset ovatkin toimineet evdev-ajurilla jo pidempään ihan oikein seuraavilla asetuksilla.

Section "InputDevice"
    Identifier  "Mouse"
    Driver      "evdev"
    Option      "CorePointer"
    Option      "Protocol"      "evdev"
    Option      "Name"          "Logitech USB-PS/2 Optical Mouse"
    Option      "Device"        "/dev/input/event2"
    Option      "Buttons"       "10"
    Option      "ZAxisMapping"  "9 10"
EndSection

Tämä kaikki on tietenkin suhteellisen päivän selvää, mutta hyvä nyt kirjata ainakin itselle ylhäälle.

Toinen mukava muutos järjestelmän perustaan oli Gentoon ~archin siirtyminen käyttämään OpenRC:tä sys-apps/baselayout-2:n myötä. Asiasta oli toki siirtymisohje, joka selvensi syitä ja muutoksia, joita oli ihan riittävästi.