Category: Uncategorized

  • Kolumni: Äksästä kiinni

    Gnome-työpöydällä olevan ikkunan sulkemisnappi Vielä tänä aamuna olin varma siitä, että ohjelman pääikkunan sulkemisnapin valitsemisen tulee sammuttaa ohjelma riippumatta siitä, onko ohjelmalla ilmoitusaluekuvaketta vai ei. Ajattelin, että sellaisen ohjelman, joka haluaa tarjota käyttäjälle mahdollisuuden sulkea sen pääikkuna sammuttamatta itse ohjelmaa, tulee tehdä niin vain erillisen valitsimen kautta. Tyypillinen esimerkki tällaisesta erillisvalitsimesta on Tiedosto-valikossa oleva Pienennä-kohta.

    Sitten luin Launchpadissa tästä aiheesta käytyä keskustelua, joka pyörii Rytmilaatikon pääikkunan sulkunapin ympärillä. Tämän kirjoitushetkellä Rytmilaatikko toimii niin kuin yllä mainostin vielä aiemmin vankkumattomasti uskovani ohjelmien pitävänkin toimia. Nähtävästi se on jossain vaiheessa toiminut toisinkin. Jotkut käyttäjät haluaisivat palata entiseen käytäntöön, ja yllätyin huomatessani pitäväni joitakin näiden käyttäjien argumentteja varsin pätevinä.

    Olin ajatellut, että ohjelman pääikkunan sulkemisnapin tehtävä on sammuttaa ohjelma, ja niinpä tästä käytännöstä poikkeaminen rikkoo napin toiminnallisuuden. Mutta mikäli luen vastustajien argumentteja oikein, heidän tulkintansa on, että ikkunan kuin ikkunan sulkemisnapin tehtävä on sulkea ikkuna, eikä sen takia ole johdonmukaista, jos sulkemisnappi sulkee ohjelman silloin, kun sen graafisena ilmentymänä näytöllä on ikkunan lisäksi ilmoitusaluekuvake. Huomasin oman kantani alkavan horjua, kun en ainakaan ihan suoralta kädeltä kyennyt tyrmäämään tätä näkemystä perusteettomana.

    Itse asiassa ajatus ikkunan sulkemisesta ikkunan sulkunapin ensisijaisena tehtävänä tuntuu niin viehättävän yksinkertaiselta, että haluaisin kääntää kelkkani tälle ajatukselle perustuvaan suuntaan. Sekään ei kuitenkaan ole täysin ongelmatonta, sillä sovelluksen pääikkunan sulkemisen assosiointi ohjelman suorituksen päättymiseen on sekin hyvin perusteltu ratkaisu: tarvitsee vain kuvitella sitä painajaista, jonka pääikkunansa sulkemisen myötä — siis kaikkien graafisten ilmentymiensä kadottuakin — käyntiin jäävät ohjelmat aiheuttaisivat.

    Pääikkunan sulkemisesta kuvakkeeseen -ratkaisun kannattajat eivät tietenkään aja takaa ikkunan sulkunapin toiminnan rajaamista ikkunan sulkemiseen näin puristisessa merkityksessä. Pääikkunan sulkemiseen assosioitavan toiminnon pysyvyys ei kuitenkaan heidän mielestään ole ratkaisevinta. Ratkaisevinta on ohjelman suorituksen jatkuvuuden assosiointi kaikkiin sovelluksen näytölle tuottamiin graafisiin ilmentymiin. Tästä perspektiivistä tarkasteltuna ohjelman suorituksen päättyminen silloin, kun sen kahdesta jäljelläolevasta ilmentymästä toinen suljetaan, ei ole johdonmukaista.

    Ongelma on pohjimmiltaan kaksiosainen. Ensinnäkin tulisi luoda johdonmukainen käytäntö sille miten sovellukset, ikkunat ja ilmoitusaluekuvakkeet käyttäytyvät ja miten ne suhteutuvat toisiinsa. Toisekseen ohjelmien tulisi sen jälkeen sitoutua tähän käytäntöön. Tällä hetkellä käytäntö vaihtelee ohjelmasta toiseen siirryttäessä, sillä riittävästi perusteltua käytäntöä ei ole määrätty missään käyttöliittymien ohjenuorassa.

    Olisiko tällaisen käytännön siis perustuttava ohjelmien pysyvyyteen ja kaikkiin graafisiin ilmentymiin tämän pysyvyyden kuvastimena, vai pääikkunan sulkemiseen assosioitavan toiminnon pysyvyyteen? Vielä tänä aamuna olisin vannonut ikkunansulkemistoiminnon assosiaatioiden pysyvyyden nimeen, mutta nyt en enää osaakaan sanoa varmasti. Ainakin näin tuoreeltaan ohjelmien pysyvyys kuulostaa ikkunansulkemistoiminnon pysyvyyttä elegantimmalta peruslähtökohdalta.

  • [Ratkaisu] Tiedostojen turvallinen hävittäminen

    Ongelma
    Haluan tuhota salasanoja.txt -nimisen salasanatiedoston niin, ettei sitä varmasti enää pystytä lukemaan.
    Ratkaisu
    Asennan pakettienhallinnassa secure-delete -paketin, minkä jälkeen voin hävittää salasanatiedoston seuraavalla komennolla:

    srm salasanoja.txt
  • [Ratkaisu] Binääritiedoston sisällön tulostaminen komentoriviltä

    Lähtökohta
    Haluan tarkastella komentoriviltä esimerkki.mov -tiedoston sisältöä.
    Ongelma
    Tiedoston sisältö on videodataa, joten sitä ei pysty tarkastelemaan sujuvasti cat-komennolla.
    Ratkaisu
    Asennan Synaptic-pakettienhallinnassa hexcat-paketin, minkä jälkeen voin tarkastella tiedoston sisältöä sivutettuna komentokehoteikkunassa seuraavalla komennolla:

    hexcat esimerkki.mov | less
  • [Ratkaisu] Sovelluksen valikkosijainnin muuttaminen

    Lähtökohta
    Pakettienhallinnassa gprename-paketti on asennettuna.
    Ongelma
    GPRename-sovellus on työpöydän Sovellukset → Muut -valikossa. Haluan, että se löytyy sen sijaan Sovellukset → Apuohjelmat -valikosta.
    Ratkaisu
    Teen GPRenamen kuvaketiedostosta oman, käyttäjäkohtaisen sovellukseni.

    1. Teen GPRenamen kuvaketiedostosta käyttäjäkohtaisen kopion seuraavalla komennolla:
      cp /usr/share/applications/gprename.desktop \
      ~/.local/share/applications/
    2. Muutan omassa GPRenamen kuvaketiedostossani sen valikkoluokitteluriviä seuraavalla komennolla:
      sed -i -e \
      's/^Categories=Application;\(.*\)/Categories=Application;Utility;\1/' \
      ~/.local/share/applications/gprename.desktop

    Tämän jälkeen GPRename löytyy Sovellukset → Apuohjelmat -valikosta.

  • [Ratkaisu] Tiedostojoukkojen nimeäminen kerralla

    Lähtökohta
    Minulla on kansio jossa on paljon keskenään samantyyppisiä tiedostoja, mutta joiden nimillä ei ole keskenään juuri mitään yhteistä, sillä ne ovat peräisin eri lähteistä.
    Ongelma
    Haluan nimetä tiedostot siten, että jokaisen nimi muodostuu samasta sanasta ja sen perässä olevasta, juoksevasta numerosta, seuraavasti: esim-01.txt, esim-02.txt, exim-03.txt ja niin edelleen.
    Ratkaisu
    Asennan gprename-paketin, minkä jälkeen käynnistän Sovellukset → Muut -valikosta GPRename -sovelluksen ja käytän sitä kaikkien tiedostonimien muuttamiseen kerralla.
  • [Ratkaisu] FLAC-muotoisen levyn muuntaminen MP3-muotoon

    Lähtökohta
    Minulla on CD-levyllinen musiikkia FLAC-muotoisiin tiedostoihin pakattuna.
    Ongelma
    Haluan tehdä musiikkitiedostoista MP3-muotoiset kopiot käytettäviksi sellaisessa kannettavassa soittimessa, joka ei tue FLAC- eikä Ogg Vorbis -muotoa.
    Ratkaisu
    Asennan soundconverter-paketin, minkä jälkeen käynnistän Sovellukset → Ääni & video -valikosta Sound Converter -sovelluksen ja käytän sitä musiikkitiedostojen muuntamiseen.
  • Siivosin eilen saitin juurihakemistosta kaiken vanhan roskan pois. Osan heivasin varastoon, osan arkistoon. .htaccess-kikkailun ansiosta vanhojen linkkien ei pitäisi särkyä tämän seurauksena, vaan kaikki ohjataan sulavasti 301-viestien saattelemana uusiin osoitteisiin. Niinpä siivous ei myöskään vähentänyt nimiavaruuden saastuneisuuta yhtään, mutta pääasiallinen tarkoitukseni olikin vain tuolla saitin hakemistossa navigoimisen helpottaminen.

    Paljaasta juuresta kävijä ohjataan 302:lla tällä erää wikin etusivulle, eikä juuressa ole enää mitään suoraan ladattavaa (Kapsin sinne oletuksena lisäämiä php-skriptejä lukuunottamatta), vaan kaikki on alihakemistoissa. Which is nice.

  • [Ratkaisu] Tietokoneen kello ei siirry kesäaikaan

    Lähtökohta
    Tietokoneessani on Ubuntun lisäksi toisella kiintolevyosiolla Windows-käyttöjärjestelmä. Ubuntun asennuksen yhteydessä olen ilmoittanut paikalliseksi aikavyöhykkeekseni (eli tietokoneeni sijainniksi) Suomen aikavyöhykkeen (Europe/Helsinki).
    Ongelma
    Kun Suomessa siirrytään kesäaikaan, Ubuntun työpöydän paneelissa oleva kello ei ole siirtynyt kesäaikaan. Kesäaikaan siirtymisen jälkeen tietokoneeni kello on siis tunnin Suomen aikaa jäljessä. Järjestelmä → Ylläpito -valikon Aika ja päiväys -sovellus ilmoittaa aikavyöhykkeekseni Europe/Mariehamn.
    Ongelman syy
    Tietokoneeni kello on asetettu paikalliseen aikaan koordinoidun yleisajan (UTC) sijasta. Ubuntu on tietoinen tästä valinnasta, ja tulkitsee sen siten, että Windows huolehtii kesä- ja talviaikaan siirtymisistä. Jos en ole käynnistänyt Windowsia kesäaikaan siirtymisen tapahduttua, kello näyttää tuntia vähemmän kuin sen pitäisi, jolloin Ubuntu ilmeisesti olettaa aikavyöhykkeen muuttuneen.
    Ratkaisu
    Sammutan Ubuntun ja käynnistän Windowsin, jolloin Windows asettaa tietokoneen kellon kesäaikaan. Kun sen jälkeen sammutan Windowsin ja käynnistän uudelleen Ubuntun, työpöydän paneelin kellonaika on Suomen kesäaika. Valitsen sen jälkeen Järjestelmä → Ylläpito-valikon Aika ja päiväys -sovelluksessa aikavyöhykkeekseni jälleen Europe/Helsinki.
    Huomautuksia
    • Jos siirryn käyttämään yksinomaan Ubuntua, voin asettaa tietokoneen kellon koordinoituun yleisaikaan ja ilmoittaa siitä asettamalla /etc/default/rcS -tiedostossa olevan UTC-muuttujan arvosta no arvoksi yes. Sen jälkeen Ubuntu osaa laskea kulloinkin vallitsevan paikallisen ajan tietokoneen kellon ja asettamani paikallisaikavyöhykkeen perusteella.
    • En tiedä mistä Ubuntun asennusohjelma päätteli, että tietokoneeni kello on asetettu paikalliseen aikaan. Sen pitäisi tiettävästi olettaa kellon olevan yleisajassa. Ehkä se otti yhteyden aikapalvelimeen ja vertasi sieltä saamaansa aikaa tietokoneeni kellon näyttämään aikaan.
    • Jos aikavyöhykkeen korjaa ennen Windowsin käynnistämistä, se on Ubuntun uudelleenkäynnistämisen jälkeen jälleen Europe/Mariehamn.
  • [Ratkaisu] Skandinaavisten kirjainten korvaaminen tiedostonimissä

    Lähtökohta
    Minulla on joukko tiedostoja joiden nimissä on ä- ja ö-kirjaimia. Kaikki tiedostonimet koostuvat yksinomaan pienistä kirjaimista, eli kirjainmerkeistä a-ö. Haluan muuntaa nimet siten, että ä:t korvautuvat a-kirjaimilla ja ö:t o-kirjaimilla. Aion käyttää muuntamiseen tr-komentoa.
    Ongelma
    Tr-komento tulkitsee sille antamiani skandinaavisia kirjaimia sisältäviä muunnossääntöjä väärin ja ennalta-arvaamattomalla vaikuttavalla tavalla. Seuraavassa on tästä esimerkkejä:

    $ echo tiedostonnimi-jossa-on-ä | tr ä a
    tiedostonnimi-jossa-on-aa
    $ echo tiedostonnimi-jossa-on-ää | tr ä a
    tiedostonnimi-jossa-on-aaaa
    $ echo tiedostonnimi-jossa-on-äö | tr ä a | tr ö o
    tiedostonnimi-jossa-on-aaao
    $ echo tiedostonnimi-jossa-on-öö | tr ä a | tr ö o
    tiedostonnimi-jossa-on-aoao
    $ echo tiedostonnimi-jossa-on-öä | tr ä a | tr ö o
    tiedostonnimi-jossa-on-aoaa
    
    Ongelman syy
    Tr-komento ei tue komentotulkissani käytössä olevaa UTF-8 -koodausta.
    Ratkaisu
    Käytän tr-komennon sijasta sed-komentoa skandinaavisten kirjainten muuntamiseen, seuraavalla tavalla:

    for file in *ä*; do mv $file `echo $file | sed -e 's/ä/a/g'`; done
    for file in *ö*; do mv $file `echo $file | sed -e 's/ö/o/g'`; done
  • [Ratkaisu] Secret Maryo Chronicles on hidas

    Lähtökohta
    Näytönohjaimeni on Connect 3D:n valmistama, AGP-väylässä kiinni oleva Radeon 9600 -piirisarjalla varustettu All In Wonder. Olen valinnut näytönohjaimelle avoimen lähdekoodin ajurit käyttöön, ja ikkunointijärjestelmä ja työpöytä toimivat niiden kanssa hyvin.
    Käynnistän Secret Maryo Chronicles -pelin suorittamalla smc-komennon Päätteestä. Peli käynnistyy ja sen musiikki alkaa soida.
    Ongelma
    Pelin kuvanpäivittyminen on todella hidasta; vaikuttaa siltä kuin kuva päivittyisi vain noin kerran parissa sekunnissa. Näin hitaan kuvanpäivityksen kanssa pelin valikon käyttäminen on vaikeaa ja itse pelin pelaaminen mahdotonta. Pääteikkunassa, josta pelin käynnistin, näkyy seuraavanlainen virheilmoitus:

    *********************************WARN_ONCE****************************
    File r300_render.c function r300Fallback line 471
    Software fallback:ctx->Line.SmoothFlag
    **********************************************************************
    Ongelman syy
    Secret Maryo Chronicles käyttää R300-piirisarjan ominaisuutta jota ajuri ei vielä tue, jolloin ajuri turvautuu ohjelmalliseen kuvanpiirtoon.
    Ratkaisu
    Asennan DriConf-sovelluksen ja kiellän ajuria käyttämästä ohjelmallista kuvanpiirtoa pelin kanssa.

    1. Asennan Synaptic-pakettienhallinnassa driconf-paketin.
    2. Käynnistän DriConfin komentamalla Päätteessä driconf.
    3. Lisään sovelluskohtaisen asetuksen DriConfin Direct Rendering Preferences -ikkunan Application Settings -osion Lisää-napilla.
    4. Avautuvan Add Application -ikkunan Application Name -kenttään kirjoitan Secret Maryo Chronicles ja Executable Name -kenttään smc, jonka jälkeen suljen Add Application -ikkunan sen OK-napilla.
    5. Direct Rendering Preferences -ikkunan Application Settings -osiossa on nyt valittuna äsken luomani Secret Maryo Chronicles. Lisään sovellukselle Disable Low-impact fallback -asetuksen Add setting -kohtaan liittyvän alasvetovalikon Performance-alivalikosta.
    6. Kun Disable Low-impact fallback -asetus on valittavissa, asetan sen arvoksi Kyllä.
    7. Suljen DriConfin Direct Rendering Preferences -ikkunan Sulje-napilla.

    Kun tämän jälkeen käynnistän Secret Maryo Chronicles -pelin, sen kuvanpäivitys toimii niin nopeasti, että valikkoa voi käyttää ja itse peliäkin pelata.