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を買ってしまうところでした。

2004-07-16

ここにあげたきりで(中略)どうにかしないと。

更新情報

timestamp 1.09を公開しました。

ユーザーさんから要望をいただいていた機能の追加と、不具合の修正です。

2004-07-13

なんだこの映画……。

さくらインターネットの新サービス

このサイトも、さくらインターネットの「バーチャルドメイン」サービスを利用してるので、新サービスの「さくらのレンタルサーバ」に乗り換えるかどうかを決断しないといけません。というわけで、さくらインターネットからメールで送られてきた告知や、さくらインターネットのサイトにある情報、中村さんの更新履歴(「さくらインターネット新サービスについて」)を眺めているところです。

書かれていることだけから判断すると、乗り換えない理由はなにもない(スペックは上がり、価格は下がる)のですが、「バーチャルドメイン」の受付も継続するというからには、こちらのほうにもそれなりのメリットがあるに違いないと勘繰ってしまうのが人の性。

中村さんが心配されていたうちの、シェルにログインできるのかということについては、新サービスのFAQのページ「telnetやsshによって、サーバへのログインが可能」というのを見つけました (Q.18)。gccもcronも引き続き使えるようです。転送量制限があるわけでもなし、メモリやCPU時間の制限があるわけでもなし(さくらではMovable Typeは動かないといわれてたのはこれが原因だったのか)。むしろ自由度が高くなってる……。

PythonやIMAPでちょっと遊んでみたいし、「バーチャルドメイン」に固執する理由はないかな?

ところで、自分には直接関係ないところですが、「さくらの専用サーバ」と現在の「専用サーバ」サービスとの違いで (Q.5)、「ディスク故障時はサーバ丸ごと交換(その時点でデータが損失)」というのはちょっとあんまりなのでは。

どうでもいいこと

そのさくらインターネットからの新サービス告知メール。

現在弊社の「さくらウェブ」「バーチャルドメイン」のうち、いづれかの
サービスをご利用中で、新サービスへの乗り換えをご希望のお客様に対し
まして、下記の通り乗り換え優待キャンペーンを実施いたします。

「いずれ」が正しい。