Month: April 2008

  • [Ratkaisu] Tiedoston salasanasuojaaminen GPG:llä

    Lähtökohta
    Pakettienhallinnassa gnupg on asennettuna. Kotihakemistossani on salainen.txt -niminen tiedosto, joka sisältää salaisen viestin.
    Ongelma
    Haluan salata salaisen viestin GPG:llä siten, että salauksessa käytetyn salasanan tietäminen riittää salatun tiedoston avaamiseen — avaintiedostoa ei siis tarvita.
    Ratkaisu
    Käytän GPG:n symmetristä salausta tiedoston salaamiseen, komentamalla seuraavasti:

    gpg -c ~/salainen.txt

    Komennon suorittamisen jälkeen GPG kysyy tiedoston salauksessa käytettävää salasanaa kahdesti. Sen jälkeen kotihakemistossani on alkuperäisen tiedoston lisäksi salainen.txt.gpg -niminen tiedosto, jonka avaamiseen GPG:llä tarvitaan salasana. Hävitän alkuperäisen tiedoston srm-komennolla.
    Salatun tiedoston avaaminen GPG:llä tapahtuu seuraavalla komennolla:

    gpg -d ~/salainen.txt.gpg > ~/salainen.txt

    Komennon suorittamisen jälkeen kotihakemistossani on jälleen salainen.txt -niminen tiedosto, joka sisältää alkuperäisen viestin salaamattomana.

    Huomautus
    Viestiä purettaessa GPG antaa seuraavanlaisen varoituksen:

    gpg: VAROITUS: viestin eheyttä ei oltu suojattu

    Varoituksen voi ilmeisesti jättää huomiotta.

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

  • Firefox, updated extensions, and "Continue"

    I wish they’d do away with the completely useless Continue prompt after an extension update has taken place in Firefox.

    It’s good to prompt me before updating (in case I want to skip it), and obviously I’d like to be notified in case installing the update fails for some reason, but what is the purpose of prompting me to “continue starting Firefox, something which I’ve already requested, and for which there’s no longer anything requiring my intervention”? It’s just plain stupid.

    Sadly, I don’t see this change in Firefox 3’s changelog.

  • [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.