2004-08-11

試作品、pyedit.txc

※ ceditsよりも下に登録してください(IDM_INSERTRETURNが回ってこないので……)。

2004-08-09

ごめんなさい、だらだら書いてみたかっただけで、主張があるわけでも話にオチがあるわけでもありません。

迷惑メール

ウイルスやワームなのか、あるいはメールアドレスを収集するロボットのようなものかはわかりませんが、かつてここで公開していたInfoWebのメールアドレスをFromに騙って、僕の知らない人に空のメールを送りつけるやつがあるようです(こちらがウイルス/ワームにやられているというのはないと思う、たぶん)。逆に、こちらにそのようなメールが送られてくることも結構あります。

こうしたメールではFromは詐称されているので、そもそも差出人に問いただしてみてもあまり意味がないというのは、ウイルスやジャンクメールに慣れた人にとっては常識ですが、パソコンでメールをあまり使わず、掲示板やチャットスペースにちょっと書き込んでみたときにメールアドレスをWebに残していっただけというような人などは、やはり知らない人からメールが来るというのはなかなかショッキングなんじゃないでしょうか(と、ここまで書いて思ったけど、イマドキの人はケータイメールがそんなだったりして意外と慣れてたりするのかな)。

「このアドレス(かつてここで公開していたInfoWebのメールアドレス)から件名も本文も空のメールが来ましたが、どちら様ですか?」というメールが先日届いていましたが、これもそんな人がびっくりして送ってきたのだと思われます。

ところで、POPFileはこのメッセージをspamと判定していて、そのメールに気づいたのは受信してからだいぶたってからのことでした。しかし、このメールをsapmでないとPOPFileに学習させるかどうかでちょっと迷ってしまいました。結局は、こういったメールに対しては「何もしない」というのが最善なので、結果としてはPOPFileの判定はまんざら間違いでもないような気もするわけです(こういうメールに気を煩わしたくないという、POPFileを使う動機からすると)。

POPFileの判定精度は、これはもう素晴らしすぎるといってもよいくらいで(分類精度はいまや99.41%)、素人目には「よくこれがspamだと(あるいはspamでないと)わかるなあ」と感心してしまうほどですが、もし、こういう微妙な文面を騙った日本語spamが一般的になったら(やっぱりspamはいまだに英語が9割以上なので)、はたしてどこまで通用するのかというのはちょっと気になるところです(POPFileは、日本語メールはKakasiで解析している)。もっとも、日本語spamで「これをよく判定できたなあ」というケースはすでにいくつも見てるので、あんまり心配はしていませんが(むしろ楽しみに近いというか)。

それよりも、本当にspamを減らしたいのだったらメールアドレスを変えるべきかな。spamまみれ(約8割がspam)になるのはそのアドレスひとつだけなので。ところがそれはプロバイダ(@nifty)のメインのメールアカウントで、廃止するにはプロバイダを解約しなければならず、そうなるとプロバイダのその他のメールアカウント(プライベートで使っているのでこっちのほうが大事)も使えなくなるという。

考えどころだ。

2004-08-08

今日(もう昨日だけど)は、急いでいるのに電車が遅れたり、それを埋め合わせるためにタクシーに乗ろうとしたら後ろにいたおっさんにからまれたり、夕飯を食べ損ねたりと、散々な一日。

しかし、修理に出していたThinkPadが戻ってきた。木曜に電話、土曜に回収、そして翌週土曜の帰還であった。明日(もう今日だけど)セットアップしよう。

2004-08-07

「チュートリアル」にリンクをお願いしてみたけど、3週間たっても返事がないや。あはは。

英数・日本語間スペース調整

いわゆる半角英数字と全角日本語文字との間に、スペースを入れたいと思うこともあるわけです。普段は面倒だからしないけど、たとえば「マクロ入門」のページではそのようになっています。標準の機能として、[英数字と全角文字との間に空白を開ける] というのがあるのですが([編集]-[変換])、これはちょっと挙動が単純すぎるのであまり使えません。そこで以下のようなマクロを使っています。

//## 英数・日本語間スペース調整
static void spacingonMain(TX *text)
{
    // 英数・日本語間にスペースを開ける(メイン処理ルーチン)
    txJumpFileTop(text);
    TXCHAR ccur, cprev;
    // これら文字の前にスペースは入れない(¥x1f, ¥x1eはTMLタグ)
    mchar szIgnoreEnd[] = "¥x1f¥x1e¥x0d ¥t¥"'‾/)]}<>|,.:;+-*@?!¥¥()「」『』【】[]〔〕《》@$!?・、。,.<> …◇◆□■●○◎☆★※§〜―−‐";
    // これら文字の後にスペースは入れない(¥x1f, ¥x1eはTMLタグ)
    mchar szIgnoreTop[] = "¥x1f¥x1e¥x0d ¥t¥"'‾/([{<>|:;+-*@¥¥()「」『』【】[]〔〕《》@$!?・、。,.<> …◇◆□■●○◎☆★※§〜―−‐";
    while (txRight(text)) {   // ファイル先頭にはスペースを入ることはないからこれでよい
        if (!txIsCurParaTop(text) && !txIsCurReturn(text)) {
            ccur = txGetChar(text);
            cprev = txGetPrevChar(text);
            if ((txchIsKanji(cprev) && !txchIsKanji(ccur)) || (!txchIsKanji(cprev) && txchIsKanji(ccur))) {
                if (!strichr(szIgnoreEnd, ccur) && !strichr(szIgnoreTop, cprev)) {
                    // 無視する文字に一致するものがない
                    txInsert(text, " ");
                }
            }
        }
    }
}

void spacingon(TX *text)
{
    txSetBusy(text);
    txSetUndispEx(text);
    if (text->fClip) {
        TX *text2 = textnew();
        if (text2) {
            txInsertTextSelect(text2, text);
            spacingonMain(text2);
            txSelectDelete(text);
            txInsertText(text, text2);
            textclose(text2);
        }
    } else {
        spacingonMain(text);
    }
    txSetDispEx(text);
    txSetUnbusy(text);
}

void spacing(TX *text)
{
    HDIALOG hd = dialog("英数・日本語間スペース調整");
    dialogCaption(hd, "英数・日本語間にスペースを挿入します。");
    if (dialogOpen(hd)) {
        spacingon(text);
        information("変換が終了しました。");
    }
}

spacing関数を実行して使います。

もう何年も前に書いたやつなので、よく見ると幼稚なところもあるかもしれませんが、とりあえず動いているのでそのまま使い続けています。

2004-07-28

トラブル

ThinkPad X24の電源が入らなくなった。正確にいうと、電源は入るけどそこから先にはまったく進まない状態(起動時のIBMロゴすら出ない)。

これはX24の前に使っていたPC (ThinkPad X20) で書いてます。3日ほどかかって、ようやく必要なアプリケーションを入れたり、X24のハードディスクからデータを移行させたところ(作業しながらなもので)。しばらくはまたX20でがんばっていかなくては。X24は「ThinkPad拡張サービス」という、保証期間の延長サービスのようなものを購入しているので、これで直してもらえるはず。

今回新しく覚えたこと。レジストリエディタ (regedit) は [ファイル]-[ハイブの読み込み] で任意のレジストリファイルのキーをオープンできる(常識?)。これのおかげでX20にインストールしたアプリケーションを軒並みカスタマイズし直すという手間ははぶけた。ハードディスクが飛んだわけではないので、X24のドライブを抜いてX20から読むことができたのは不幸中の幸いというべきか……。

それともうひとつ、予備として動くThinkPadがあったのも助かった。1台しかないと、故障したときにそこにあった仕事すべてが停止してしまうところでした、あるいは、ここぞとばかりに理由をつけてX40を買ってしまうところでした。