Aja komentoja X:n käynnistyessä

Usein X-ikkunoinnin käynnistyessä on tarvetta ajaa erilaisia komentoja kuten esimerkiksi xmodmap. Tämä onnistuu muutamalla eri tavalla, kuten liittämällä komentojen ajaminen ikkunointimanagerin käynnistymiseen tai kirjautumisen yhteyteen. Gentoo Wikin mukaan useimmissa tapauksissa on kuitenkin yksinkertaisinta lisätä komennot .xprofile -tiedostoon.

Käyttäjän kotihakemistossa sijaitseva .xprofile ajetaan X:n käynnistymisen jälkeen ja on riippumaton X:n käynnistymistavasta (esim. KDM, GDM, xstart, xinit).

~/.xprofile voi näyttää vaikka tältä:

xbindkeys
xmodmap .Xmodmap

Aivan kaikkiin tapauksiin ~/.xprofile ei sovellu, sillä esimerkiksi conky jää piiloon KDE:n käynnistyessä. Conky ja muut KDE:n käynnistyessä ajettavat komennot voidaan ajaa tekemällä esimerkiksi ~/.kde/Autostart/basic -tiedosto:

#!/bin/bash
conky

Lisäksi kyseiselle tiedostolle kannattaa komentaa chmod u+x.

Nyt halutut komennot ajetaan aina X:n käynnistyessä käytettävästä ikkunointimanagerista huolimatta.

Linux-ytimen sääennustusta, mitä on odotettavissa

MBnetin net.nyt kirjoittaa Linux Foundationin pystyyn laittamasta ”Linux-ytimen sääennustuksesta. Sivuston tarkoituksena on kertoa, mitä uusia ominaisuuksia ytimeen on lähiaikoina ja hieman pidemmällä aikavälillä odotettavissa. Päämeteorologina toimii LWN.netin Jonathan Corbet ja sääennustus käsittelee Linus Torvaldsin julkaisemaa ytimen päälinjaa eli ns. vanilla-ydintä. Tällä hetkellä ytimessä ollaan versiossa 2.6.22.

Linuxin ytimestä löytyy mielenkiintoisia ominaisuuksia kuten 2.6.20-versioon lisätty Kernel Virtual Machine (KVM) ja tulossa on esimerkiksi 2.6.23-versiossa Completely Fair Scheduler (CFS) -ajanjakaja, sekä Xen ja Lguest -virtualisointiratkaisut. Vastaavasti Sun Microsystemsin Solariksesta löytyvää ZFS-tiedostojärjestelmää ei harmittavasti ole ihan heti odotettavissa. Myös Ext3:n seuraavaa versiota Ext4:sta saadaan odotella. NVidian näytönohjaimia käyttäville Nouveau-projekti on toteuttamassa avoimia ajureita, joita voitaisiin käyttää binääriajureiden asemesta.

Tietenkin jos mielenkiintoa ja osaamista löytyy, voi uusia ominaisuuksia testailla lisäämällä tarvittavat ominaisuudet itse, eli pätsäämällä ytimen. Esimerkiksi useat Linux distribuutiot lisäävät ytimeen omia pätsejään suorituskykyä ja toiminnallisuuksia varten. Lisäksi on olemassa erilaisia ydinpaketteja, joihin on lisätty testattavia ominaisuuksia. Tällaisia ovat muun muassa Git-, Mm-, Openvz-, Suspend2- ja äskettäin lopetettu Ck-ydin.

Linux-ytimen sääennustus -sivusto on hyvä idea, varsinkin jos ytimen kehitys ja uudet ominaisuudet kiinnostavat. Meille hieman ylemmän tason käyttäjille eri käyttöjärjestelmiin liittyviä uutisia ja kehittymistä voi seurata esimerkiksi OSnews-sivustolta.

Apachen ja MySQL:n optimointia vähille resursseille

Apache ja MySQL kuuluvat Linuxin peruskalustoon ja niin sanottu LAMP-ympäristö (Linux, Apache, MySQL, PHP/Perl) on kohtalaisen helppo asentaa. LAMP ei juuri erikoista säätämistä peruskäytössä vaadi, mutta joskus vakioasetukset eivät kuitenkaan riitä ja niitä on tarvetta hieman optimoida.

Asetuksia voidaan tarkastella useasta näkökulmasta, hieman riippuen palvelimen kokoonpanosta, ja esimerkiksi virtuaalipalvelimessa voidaan huomioida rajoitettu muistikapasiteetti. Tietenkin tarvittaessa myös prosessorikuorma ja vasteaika ovat syytä huomioida.

IBM:n developerWorksin artikkelit käsittelevät kattavasti LAMP-ympäristöön liittyviä asioita ja antavat hieman vinkkejä, miten suorituskykyä voi mitata ja säätää. IBM:n kolmiosainen artikkelisarja onkin hyvää luettavaa.

Emergent Properties -blogin vinkit aiheesta ovat hieman enemmän käytännöläheisiä. ”Optimizing MySQL and Apache for Low Memory Usage” -kirjoituksen ensimmäinen osa käsittelee Apachen asetuksia ja vastaavasti toinen osa keskittyy MySQL:n asetuksiin. Myös dltj-blogin vinkit ovat tarkistamisen arvoisia.

Mitään oikeata vastausta ei ole, vaan sopivat asetukset on haettava testaamalla ja kokeilemalla eri asetusten vaikutuksia. Esimerkiksi muistinkäyttöä voidaan seurata vmstatin avulla ja Apachea voidaan testata käyttämällä Apache Benchmarkia.

Liikuntasuoritusten seurantatyökalut: SportsTracker

Harrastan vapaa-ajallani tietotekniikan lisäksi myös liikuntaa, kesäisin maastopyöräilyä ja uintia ja talvisin lisäksi hiihtämistä. Toki aina ajoittain myös muitakin lajeja, kuten sulkapalloa, rullaluistelua, laskettelua ja lumilautailua. Koska tykkään seurata liikuntasuorituksiani, pidän taulukkolaskentaohjelman avulla taulukkoa mitä urheilin, missä, milloin ja kuinka paljon. Tilastoja onkin kertynyt jo useilta vuosilta.

Luin aiemmin keväällä Linux.com -sivustolla olleen esittelyn kahdesta avoimen lähdekoodin projektista, joilla voi pitää kirjaa urheilusuorituksista ja piirtää käppyröitä ja tilastotietoja. Jotenkin ei ole koskaan aikaisemmin tullut mieleen etsiä jotain ohjelmaa liikuntasuoritusten seurantaan, sillä omat taulukoinnit ovat olleet ja ovat edelleen ihan kätevä ja riittävä keino. Urheilusuoritusten seurantaan esiteltiin kaksi eri ohjelmaa: SportsTracker ja Pytrainer, josta kenties myöhemmin enemmän.

SportsTracker
SportsTracker on urheilusuoritusten seurantaohjelmisto, joka toimii käyttäjäystävällisesti sekä Linuxissa että Windowsissa. Ulkoasultaan ohjelma on selkeä ja erilaiset toiminnot ovat helposti löydettävissä. Sovellus on toteutettu käyttämällä C#:ia ja GTK#:ia, eli .NET:iä vastaavaa Mono -alustaa. Windowsille ei ole saatavilla valmista asennusohjelmaa, vaan käyttäjän pitää itse kääntää ohjelma skriptien avustuksella ja tarvittaessa asentaa vielä Mono-alusta. Kokonaisuutena ohjelman asennusprosessi oli kuitenkin yksinkertainen. Linuxissa valmiit paketoinnit löytyvät Ubuntulle, Debianille, Mandrivalle ja Gentoolle ebuild Bugzillasta. Testasin ohjelmasta 2.5.1-versiota.

Toiminnaltaan SportsTracker on selkeähkö ja ohjelmalla voidaan seurata urheilusuorituksia luomalla eri lajeille omat kategoriat ja alalajit kuten ”pyöräily” ja ”maastopyöräily”. Alalajien luonti on pakollista, joka tosin tuntuu hieman monimutkaiselta tavalta joidenkin lajien kohdalla. Harrasteuimarille uintityylien lajittelu krooliin ja sammakkoon tuntuu hieman turhalta, mutta urheilusuoritusten kategorisointi alaluokkiin on hyvä ja toimiva idea.

Käyttöliittymältään ohjelma on minimalistinen ja yleisesti ottaen hieman liiankin yksinkertainen ja asetuksia on vähän. Käyttö on helppoa, mutta urheilusuoritusten lisäämisessä toivoisi hieman enemmän kenttiä haluttujen tietojen tallentamiseen. Urheilusuoritusten tallettamisen jälkeen halutuista tai kaikista urheilulajeista näkee erilaisia tilastoja halutulta aikaväliltä, esimerkiksi kaikkien suoritusten kokonais-, keskimääräisen ja minimi ja maksimikeston. Suorituksista saa myös graafista tilastoa käppyrän muodossa, joka voi näyttää esimerkiksi matkaa, keskinopeutta ja kalorikulutusta. Graafisten tietojen näyttäminen ei tosin suostunut toimimaan Windowsissa, vaan ohjelma kaatui joka kerta kyseistä nappia painettaessa. Vielä on siis kehitettävää myös perustoiminnoissa.

Sykemittarin omistajat voivat tallettaa sykemittarin harjoitustiedostot integroidun PolarViewerin kautta ja liittää ne urheilusuorituksiin. Harmillisesti omasta sykemittaristani ei tietokoneliitäntää löydy. Ohjelma tukee Polarin ja CicloSportin sykemittareita, mutta SportsTracker ei osaa itse ladata harjoitustiedostoja mittareista, joten niiden lisäämiseksi tarvitaan vielä sykemittarien omia työkaluja.

SportsTracker tallentaa kaiken datansa XML -muodossa, joten urheilusuoritusten lukeminen onnistuu ilman ohjelmaakin ja myös mahdollinen siirto toisiin ohjelmiin on kohtalaisen helppoa verrattuna jos tiedot olisivat binäärimuodossa tai ohjelman omassa formaatissa.

SportsTrackerin sivuilta löytyy ruudunkaappauksia ohjelman eri toiminnoista Linuxissa käytettynä ja Windowsiin verrattuna ulkoasu on Linuxissa kyllä paljon nätimpi. Totesin ohjelman muutaman suorituksen lisäyksen jälkeen hieman liian yksinkertaiseksi omiin tarpeisiini, joten omien ruudunkaappausten näyttäminen ei sanoisi ohjelmasta mitään.

SportsTracker on varmasti ihan hyvä ohjelmisto urheilusuoritusten seuraamiseen ja suorituksista saa irti erilaisia tilastoja, jos sellaisia haluaa. Ohjelman ominaisuudet vain ovat hieman rajatut, mutta riippuen käyttötarpeista, varmasti ihan riittävät. Pikaisella testauksella ohjelman toimivuudesta on vaikea sanoa enempää, mutta ainakin Windowsissa asennuspaketoinnissa ja käppyrän piirrossa riittää vielä kehitettävää. Myös ohjelman ominaisuuksiin toivoisi hieman lisäystä.

WebKit-selaimen asentaminen ja käyttö Windows- ja Linux-ympäristöissä: melkein kuin OS X:n Safari

Monday By Noon -blogi kirjoittaa WebKit -selaimen kääntämisestä Linuxille Qt-kirjaston kanssa. Koska tällä hetkellä pääkäyttöjärjestelmäni on vaihteeksi Windows XP, tuli mieleen kokeilla WebKit -selaimen kääntämistä Windowsin puolella. Linuxissahan se näytti onnistuvan helposti.

WebKit on avoimen lähdekoodin web-selainmoottori. WebKit nimellä tunnetaan myös Mac OS X:n järjestelmäympäristön versio kyseisestä moottorista, jota käytetään muun muassa Mac OS X:n Safari, Dashboard ja Mail -sovelluksissa. On kuitenkin huomattava, että Safari ja WebKit ovat kaksi täysin eri asiaa; Safari on selain, joka käyttää WebKitiä sivujen renderöimiseen. WebKitin HTML ja JavaScript koodit ovat saaneet alkunsa KDE -projektin KHTML ja KJS kirjastoista ja joitain WebKitiin tehtyjä muutoksia ja korjauksia nähdään myös KHTML:n koodissa.

Ennen WebKit-selaimen kääntämistä testasin Monday by Noon -blogikirjoituksen kommenteissa viitattua Swift -selainta Windowsille, joka käyttää moottorinaan WebKitiä. Swift on kehitysasteeltaan vasta 0.2 alpha ja osoittautuikin epävakaaksi. Myös selaimen perusominaisuuksissa oli suuria puutteita, eikä kestänyt kauaa, kun jo sain Swiftin kaatumaan. Jutun kommenteissa hieman viitattiin, että Swift näyttäisi CSS-renderöintivirheet samalla tavalla kuin Safari, mutta en tätä itse testannut. Jos kommentti pitää paikkansa, on Swift helppo, joskin tässä vaiheessa vielä epävakaa testiselain www-sivujen ulkonäön tarkasteluun.

Seuraavaksi testivuoroon WebKitin kääntäminen Windowsissa ja nopea katsaus Googlen löytämiin tuloksiin tarjosikin WebKitin Wikistä löytyvät ohjeet WebKitin kääntämiseksi Windowsissa, käyttäen cygwiniä ja muutamia tarvittavia lisäkirjastoja.

Windowsissa WebKitin kääntäminen vaati hieman pohjustusta muun muassa cygwin -ympäristön asentamisessa, mutta ohjeet olivat selkeät. Lisäksi tarvittiin WebKit -projektin checkout, eli lähdekoodien hakeminen, versionhallinnasta, muutamia lisäkirjastoja asennusskriptillä, muutaman paketin lataaminen ja lopulta kaikki tarvittavat materiaalit olivat valmiina. Kun vielä kääntämiseen oli tarjolla valmis skripti cygwiniä tai Visual Studio -projektia käytettäessä, tarvitsi vain aloittaa kääntäminen haluamallaan tavalla.

Rivit vilisivät ruudulla, kun kääntöprosessi sulatteli lähdekoodeja, mutta koska mikään ei ole koskaan liian helppoa, antoivat sekä cygwinissä että Visual Studiossa ajettu kääntö saman vastauksen: ”Build failed”. Ei onnistu. Liian helpoltahan tämä jo vaikuttikin.

Windows-arpa oli tällä erää kokeiltu ja tyhjähän sieltä paljastui. Kääntö aiheutti vielä sen verran runsaasti virheitä ja varoituksia, ettei mielenkiinto eikä aika riittänyt niiden tutkimiseen. Vaihtoehtona oli vielä WebKitin kääntäminen Linuxille Qt-kirjaston kanssa ja Linux-arvan katsomisen vuoro. Samalla tämän kirjoituksen otsikkokin muuttui aiheen lipsuessa Windowsista Linuxiin.

Linuxiin löytyikin jo valmiit ohjeet, joten terminaali auki, tarvittavien lisäkirjastojen asennus ja kääntö käyntiin annettujen ohjeiden avulla. Rivit vilisivät ruudulla, kunnes kääntö pysähtyi virheeseen. Ongelmaan auttoi WebKitin Wikistä lötyvän ”Building the Qt port on Linux” -kirjoituksen ohjeet muutamiin yleisiin käännösongelmiin. Tämän jälkeen WebKit kääntyikin ongelmitta. Vielä LD_LIBRARY_PATHin asettaminen osoittamaan ”WebKit/WebKitBuild/Releases/lib/”-hakemistoon, jotta QtLauncher löysi libWebKitQt:n ja selain oli käynnissä. Vaikka ohjeet olivat tehty käyttäen Ubuntua, onnistui kääntäminen samoilla ohjeilla myös 64-bittisessä Gentoossa.

Ei siis WebKit-selainta Windowsille, ohjeista huolimatta, vaan WebKit Linuxille. Voi hyvinkin olla, että tekiessäni checkoutin, oli kyseinen versio jostain hajalla ja ei siksi kääntynyt Windowsissa. Toisaalta veikkaan, että käyttäjässä oli vikaa. Onneksi kääntöprosessi on tehty kohtalaisen helpoksi, joten kääntämistä voi yrittää myöhemminkin vain parilla klikkauksella.

Linuxissa Qt-kirjastoa käyttävä WebKit on käytettävyydessä jotakuinkin hieman samaa tasoa, kuin aikaisemmin mainitsemani Swift-selain Windowsissa: näyttää web-sivut safarimaisesti ja sivuhistoriassa voi liikkua eteen- ja taaksepäin. Ja siihen selaimen toiminnallisuus rajoittuukin. Ulkoasukin on karu, sisältäen vain muutamat navigointinapit ja osoitekentän. Kokonaisuutena Swift tarjoaa kuitenkin parempaa selausta välilehtien ja viimeistellymmän ulkoasunsa ansiosta.

Odotin Linuxissa toimivalta WebKitiltä hieman enemmän, mutta kuten aikaisemmin kirjoitin, WebKit ja Safari ovat kaksi eri asiaa. Mielikuvat liikkuivat Safarimaisessa selaimessa, mutta sain pelkän selainmoottorin ja pari hassua nappia. Ohjesivuilla oli kyllä ruudunkaappauksia, mutta jotenkin sivuutin koko asian.

Periaatteessa WebKit-moottorilla Windowsissa tai Linuxissa renderöidyn web-sivun pitäis näyttää samalta kuin OS X:n Safarissa, mutta käytännössä tämä ei välttämättä toteudu. WebKitiä voi kuitenkin soveltaa nopeaan testaukseen, jos Safaria ei ole saatavilla. Linuxissa myös Konqueror, joka käyttää myös WebKitin pohjana olevaa KHTML-moottoria, soveltuu web-sivujen testaamiseen ja lukemani perusteella näyttää sivustot Safarimaisesti lomakkeita lukuunottamatta.

Parhain ja varmin testitulos web-sivujen testauksessa saavutetaan kuitenkin käyttämällä autenttista OS X -ympäristöä, virtualisoiden tai ilman. WebKit on kuitenkin vain osa Safarin tarjoamaa kokonaisuutta.

Lisäys 17.7.2007:
Apple julkaisi kesäkuussa WWDC:n yhteydessä Safari-selaimensa myös Windowsille. Nyt ei ole enää ei ole tarvetta viritellä WebKitiä ihan vain web-sivujen testaamiseksi. Safari 3 Public Beta tosin käynnistyi hieman ontuen, kun Windows-versiossa oli ikäviä toimivuusongelmia. Varsinaista Beta-tasoa.

vim: eroon turhista merkeistä tekstitiedostossa

Kaikkien tehokäyttäjien rakastama (tai vihaama) Vim on tehokas komentorivieditori ja sen käyttöön löytyy paljon vinkkejä.

Joskus tekstitiedostoja muokatessa ja niitä siirtäessä Windowsin ja Unixin välillä, tulee tiedostoon rivien loppuun ^M -merkkejä. Nämä on helppo poistaa Vimin vinkillä #26: Eroon ^M -merkeistä.

Ohjeessa käytetään :%s/^M$//g -komentoa, jolla rivin lopussa olevat ^M -merkit korvataan tyhjällä. ^M -merkki saadaan aikaan CTRL-V ja CTRL-M yhdistelmällä.

Vinkin kommenteissa on lisää vinkkejä ^M -merkkien korvaamiseen, komennon lisäämistä pikanäppäimen alle ja useiden tiedostojen käsittelyä kerralla.

Sammuta Linux virtanapista

Tietokoneen sammuttaminen on yleensä helppoa, valikoista valitaan ”sammuta” ja kone sammuu nätisti. Hieman vaikeampaa on tietokoneen sammuttaminen, jos koneessa ei ole näyttöä kiinni, mutta usein tämäkin ongelma ratkeaa ottamalla etäyhteys. Aina tämäkään ei ole mahdollista, joten tarvitaan jotain muuta, kuten ACPI ja sen avulla tehtävät tapahtumat.

Gentoo Wiki:ssä on asiasta hyvät ohjeet, jossa koneen virtanappi laitetaan tekemään tietty tapahtuma, jonka acpid -daemon prosessoi. Tai oikeastaan acpid -daemon tarkkailee, jos virtanappia painetaan ja suorittaa tämän jälkeen halutun skriptin.

Yksinkertaisuudessaan virtanapin virittämiseen tarvitaan seuraavat asiat:

  1. Laitteisto, joka tukee ACPI virranhallintaa
  2. Kerneliin on käännetty tuki ACPI:lle
  3. Virtanappi on rekisteröity ACPI tapahtumaksi
  4. acpid kuuntelee ACPI tapahtumia
  5. Skripti virtanapin tapahtuman käsittelyyn

Kohdat 1, 2 ja 4 ovat triviaaleja, joten en niitä tähän (itselleni muistiin) kirjoita.

Virtanapin rekisteröiminen tapahtuu seuraavasti:

~ # cat >> /etc/acpi/events/default <<EOT

# handle the power button press
event=button[ /]power
action=/etc/acpi/onButtonPress-Power.sh
EOT

Ja sammutusskripti:

~ #cat > /etc/acpi/onButtonPress-Power.sh <<EOT
#!/bin/sh
# /etc/acpi/onButtonPress-Power.sh
# Shutdown when the power button is pressed

logger ”Power button pressed — shutting system down”
/sbin/shutdown -h now
EOT

Lopuksi skriptille annetaan suoritusoikeudet chmod 750 /etc/acpi/onButtonPress-Power.sh ja käynnistetään acpid -daemon uudestaan.

Nyt tietokoneen pitäisi sammua hallitusti virtanapista painamalla. Helppoa ja yksinkertaista. Testattu Gentoo Linuxissa ja toimivuudesta muissa Linux distribuutioissa ei tietoa, joten tarvittaessa sovella.