Kirotut tiaiset!

lokakuu 27, 2006

Jos on jättänyt ikkunan vähänkin raolleen, ei tarvitse kuin vessassa piipahtaa, ja jo on yksi tiainen tunkenut sisään ja toinen tulossa perästä. Otaniemessä tali- ja sinitiaiset pomppivat pitkin talojen seiniä ja etsivät ruokaa sisältä.

Monasti olen kuullut kavereiden kiroavan sitä, että jos kotoa lähtiessään sattuu unohtamaan ikkunan auki, pyykit on heti linnunjätöksissä kun kotiin tulee. Itse olen tajunnut onneksi aina sulkea ikkunan.

Pitäisikö tässä laittaa jokin haukan kuva ikkunaan tai asentaa ei hyttys- vaan lintuverkko ikkunaan? Jos torjuntakeinoja löytyy, otan ilomielin vastaan.

Tiainen
Rikollinen valmiina hyökkäämään

Firefox 2 on ulkona

lokakuu 25, 2006

Täältä kokeiden korjaamisen tuoksinasta vaan ajattelin tulla sanomaan, että Firefox 2 on nyt ulkona.

Lue lisää vaikkapa Mozilla Europen sivulta tai Mozilla.fi:n uutisblogipostauksesta.

PSPad 4.5.2:n käännös

lokakuu 23, 2006

Näin lauantaialkuillan iloksi päätin tutustua mieltäni silloin tällöin kutkuttaneeseen ongelmaan: kuinka tehdään modulaarisia, laajennettavia ohjelmia Delphillä? Takoituksena oli siis saada aikaan ohjelma, johon pystyisi lisäämään mitä tahansa toiminnallisuutta myös kolmannen osapuolen toimesta, vähän Mozilla-ohjelmien laajennusten tapaan (tosin ei suinkaan yhtä laajasti).

Päätin ottaa alkuaskeleeksi yksinkertaisen tapauksen: toimenpide, joka suorittaa kahdelle kokonaisluvulle jonkin operaation ja palauttaa yhden kokonaisluvun, esimerkkinä nyt vaikka yhteen- ja kertolasku. Hieman tutkimusta tehtyäni löysinkin lupaavan kuuloisen menetelmän: eksplisiittinen linkitys, joka hyödyntää DLL:iä. Normaalistihan DLL:istä tuotujen funktioiden käyttäminen on jokseenkin automaattista, esittelyn perään pitää vain lisätä direktiivi external DLLn_nimi;. Tämä mahdollistaa kuitenkin vain yhden DLL:n käyttämisen, ja sen nimi täytyy tietää etukäteen.

Eksplisiittisessä dynaamisessa linkityksessä voi määrätä ajonaikaisesti linkitettävän DLL:n nimen, pyytää linkitystä käyttöjärjestelmältä, etsiä tarvittavien funktioiden osoitteen muistista, käyttää funktioita ja lopuksi poistaa DLL:n muistista – mikä kuulosti juuri sopivalta tähän tarkoitukseen. Eksplisiittisestä linkityksestä vastaavat funktiot ovat LoadLibrary(LibName: PChar): THandle, GetProcAddress(LibHandle: THandle; ProcName: PChar): Pointer sekä FreeLibrary(LibHandle: THandle). Pienen näpertelyn jälkeen syntyivät seuraavat ohjelman osat.

Moduletest.pas tuottaa ohjelman, jossa voi valita haluamansa dll:n käytettäväksi sekä antaa parametrit.

unit moduletest;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, FileCtrl;

type
  TForm1 = class(TForm)
    Op1: TEdit;
    Op2: TEdit;
    Button: TButton;
    ResultBox: TEdit;
    ModList: TFileListBox;
    procedure ButtonClick(Sender: TObject);
  end;

type TOperationFunc = function(Op1: Integer; Op2: Integer): Integer;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ButtonClick(Sender: TObject);
var
  Handle: THandle;
  Retval: Integer;
  OpFunc: TOperationFunc;
begin
  Handle := LoadLibrary(PChar(ExtractFilePath(Application.ExeName) + '\\' +
      ModList.Items[ModList.ItemIndex]));
  if (Handle  0) then
  begin
    @OpFunc := GetProcAddress(Handle, 'Operate');
    if (@OpFunc <> nil) then
    begin
      Retval := OpFunc(StrToInt(Op1.Text), StrToInt(Op2.Text));
      ResultBox.Text := IntToStr(Retval);
    end;
    FreeLibrary(Handle);
  end;
end;

end.

Addition.pas, joka tuottaa yhteenlaskun suorittavan addition.dll:n

library addition;

uses
  SysUtils,
  Classes;

{$R *.res}

function Operate(Op1: Integer; Op2: Integer): Integer;
begin
  Operate := Op1 + Op2;
end;

exports
Operate;

begin
end.

Viimeiseksi multipl.pas, joka on lähes sama kuin addition, muutoksena vain se, että operaatio on nyt kertolasku

library multipl;

uses
  SysUtils,
  Classes;

{$R *.res}

function Operate(Op1: Integer; Op2: Integer): Integer;
begin
  Operate := Op1 * Op2;
end;

exports
Operate;

begin
end.

Ja tämä toimii juuri niin kuin pitääkin!

Juhlimme Firefox 2:n julkaisua perjantaina 27.10.2006 klo 19 alkaen. Paikaksi on nyt päätetty Cafe Mascot, joka löytyy osoitteesta Neljäs Linja 2.

Lisätietoja kemuista löytyy Mozilla.fi:n blogista tai Firefox Party -sivulta. Olisi mukava, jos mahdolliset tulijat ilmoittautuisivat tuonne Party-sivulle.

Firefox 2:n julkaisu lähestyy päivä päivältä, ja tällä puolen tiskiä alkaa olla jo vähän kaikenlaista kuhinaa. (En tiedä saako julkaisupäivää kertoa, joten jätettäköön se tässä nyt mainitsematta.)

Mozilla.comin ja Mozilla Europen sivustojen ulkoasukin uudistuu varsin miellyttäväksi – ei sillä etteikö se ihan hyvä olisi jo nyt. Harmi vain, ettei kukaan muu vielä sitä pääse näkemään :)

Lopuksi vielä muistutus: ensi viikon perjantaina on Firefox 2 -pippalot jossain päin Helsinkiä (ja Oulussakin järjestettäneen juhlat, oliko ihan samana päivänäkin). Paikka ja aika päätetään tarkemmin tänään, ja asioiden selvittyä postailen lisää.

Songbirdin testiversio 0.2 on nyt kypsynyt julkaisukuntoon. Lisää aiheesta kertoo Songbird Nest -blogi.

Sb0.3 jatkoa

lokakuu 17, 2006

Kielipaketti on nyt valmis. Paketin kasaamisessa jouduin tahkoamaan pitkään, sillä se halusi koko ajan antaa XML-jäsennysvirheitä. Lopulta syyksi paljastui pienen pieni typo kasausskriptissäni.

Vielä pitää kääntää julkaisutiedot sekä päivittää ohjeet, ja sitten voin laittaa kielipaketin nähtäville.

Muoks: Kielipakettiin ja muihin Sunbirdiin liittyviin suomenkielisiin resursseihin pääset käsiksi siis Mozilla.fi:n Sunbird-wikisivun kautta.

Olen paraikaa väsäämässä tuoreelle Sunbird 0.3:lle kielipakettia. Olen aikataulusta hieman jäljessä, sillä Sb0.3:han ilmestyi jo ainakin viikko sitten.

Kielipaketin tekeminen on hieman hidasta, vaikka 0.3a2-version kielipakettini onkin apuna. Hitaus johtuu siitä, että 0.3:ssa useita merkkijonoja on siirretty tiedostosta toiseen tai aikaisemmasta poikkeavalle nimelle, ja myös joidenkin tiedostojen nimet ovat muuttuneet. Tämän johdosta Mozilla Translator ei osaa päivittää kaikkia vanhoja käännöksiäni paikoilleen, joten joudun tuomaan ohjelmaan osan tiedostoista – ja uudet merkkijonot joudun tietenkin naputtelemaan itse.

Kaikesta huolimatta voisin kuitenkin kuvitella, että saan paketin käännettyä tämän illan aikana, tai ainakin huomenna. Ja tänäänhän voi harrastaa yödatailuakin, kun koulua on huomenna vasta 14–18 :)

Talviko on tulossa

lokakuu 16, 2006

Olipas sangen kylmä yö (ja aamu): mittari on hipaissut nollan tienoita. Joko se talvi kolkuttaa ovella :O