朝顔日記2004/4月 -

暴風警報

publish
2004-04-02T00:00:00+09:00
tags
はてぶ
F川の桜並木

今日は暴風警報が出るくらいすさまじい風が吹き荒れているんですが、ふと桜はどうなっているのだろうかと気になり、近所のお花見スポットへ偵察に行ってきました。

確かに風はめちゃめちゃ強くて、乗っていった軽自動車が吹きさらしの堤防道路だとまっすぐ走られないような状態でしたが、幸いまだ桜はつぼみから少し進んだ程度で、風で散ってなくなっているということはありませんでした。見たところ3分咲きといったところでしょうか。

3分咲きくらいの桜の画像

だいぶ暖かくなってきたとはいえ、まだまだ朝晩は結構寒いので、見頃は1週間後くらいでしょうか。

[ 「暴風警報」へコメントをつける ]

この記事へのツッコミ

1: 某サルっぽいイキモノ (2004-04-02T17:19:37+09:00)
>身頃は1週間後
マジですか<体長ぉぉ
2: のり (2004-04-02T22:24:52+09:00)
ありゃ。:p) 今度直します。ご指摘感謝。
そっち(どっち)はまだでしょうか? <桜
3: 某サルっぽいイキモノ (2004-04-02T22:35:03+09:00)
こちらは、こんな感じです。
http://ohsaru.no-blog.jp/ese/
ちゅうか自分も typo してますた<体長
4: のり (2004-04-02T22:44:28+09:00)
おお、素晴らしい。って、違うとこ見てるんですが。:p)
つか、まだまだパウダーいけそうですねぇ。
5: ありみかさとみ (2004-04-02T23:39:19+09:00)
しかしすさまじくキレイなところですねー。
まるで和菓子のやうだ。
この記事の永続的 URI ならびに トラックバック ping URI
http://diary.noasobi.net/2004/04/diary_040402a.html

見出しアンカーをやめてみた

publish
2004-04-05T00:00:00+09:00
tags
はてぶ

どうも見出しアンカーだと紛らわしい感じがすると前から思っていたのですが、思っているだけは何ともならないので、試しに見出しアンカーをやめてみました。その代わり、記事の末尾に「この記事の永続的 URI」を明記することに。前の構造から今回の構造改革(?)を行うにあたっては、以下の xslt を使いました。また、使用した xslt プロセッサは msxsl.exe です。msxsl.exe は xhtml1.1 を処理できないので、例によってコマンドラインオプション -xe を使用しました。これで変換速度も上がります。:p)


<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns="http://www.w3.org/1999/xhtml"
  xmlns:x="http://www.w3.org/1999/xhtml"
  exclude-result-prefixes="x" >
  <xsl:output method="xml" version="1.0" encoding="Shift_JIS"
    doctype-public="-//W3C//DTD XHTML 1.1//EN"
    doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"
    media-type="application/xhtml+xml"
    omit-xml-declaration="no"/>
  <xsl:template match="/">
    <xsl:apply-templates/>
  </xsl:template>
  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>
  <xsl:template match="x:link|x:meta|x:br|x:img|x:hr|x:input">
    <xsl:copy>
      <xsl:apply-templates select="@*" />
    </xsl:copy>
  </xsl:template>
  <xsl:template match="x:h2">
    <h2><xsl:value-of select="." /></h2>
  </xsl:template>
  <xsl:template match="x:html/x:body/x:div/x:div/x:div/x:div[attribute::class='comment']">
    <xsl:copy-of select="node()" />
  </xsl:template>
  <xsl:template match="x:h3">
    <h3 class="{./@class}"><xsl:value-of select="." /></h3>
  </xsl:template>
  <xsl:template match="x:html/x:body/x:div/x:div/x:div[attribute::class='section']">
    <div class="section" id="{./@id}">
      <xsl:apply-templates/>
      <p class="topic-info">&#12371;&#12398;&#35352;&#20107;&#12398;&#27704;&#32154;&#30340;&#32;&#85;&#82;&#73; : <a href="{x:h3/x:a/@href}" title="{x:h3}">http://diary.noasobi.net/<xsl:value-of select="x:h3/x:a/@href"/></a></p>
    </div>
  </xsl:template>
</xsl:stylesheet>

日記ファイルのすべての書き換えにかかった時間はほんの数秒でしたが、xslt を書くのにかかった時間は…。また今回の変更に伴い、ややこし更新システム(何)は機能しなくなり、今回は全部手作業での更新です。早く RSS の生成と見出し一覧の生成を自動化しなければ、面倒でやっていられない。:p)

[ 「見出しアンカーをやめてみた」へコメントをつける ]

この記事の永続的 URI ならびに トラックバック ping URI
http://diary.noasobi.net/2004/04/diary_040405a.html

RSS と見出し一覧の生成

publish
2004-04-06T00:00:00+09:00
tags
はてぶ

手作業で、この日記の RSS やら 見出し一覧やらを作るのはダルいので、またなんとかコンピタにやってもらうことにします。

以前は、神崎さんとこで配布されている perl スクリプト を改造して RSS を生成していたのですが、見出しアンカーをやめたために、このスクリプトを改造するのはかなり大変なので、xslt を使って生成することにしました。捏造した xslt は以下のとおり。

<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0"
  xmlns="http://purl.org/rss/1.0/"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:x="http://www.w3.org/1999/xhtml"
  exclude-result-prefixes="x" >
  <xsl:output method="xml" version="1.0" encoding="utf-8"
    media-type="application/xhtml+xml"
    indent="yes"
    omit-xml-declaration="no"/>
  <xsl:template match="/">
    <xsl:processing-instruction name="xml-stylesheet">type="text/xsl" href="rss2html.xsl"</xsl:processing-instruction>
    <xsl:call-template name="channel"/>
  </xsl:template>
  <xsl:template name="channel">
    <rdf:RDF
      xmlns="http://purl.org/rss/1.0/"
      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
      xml:lang="ja">
      <channel rdf:about="http://diary.noasobi.net/rss.rdf">
        <title>朝顔日記</title>
        <link>http://diary.noasobi.net/</link>
        <description>のりの日々のあれこれを綴った朝顔日記の最近の記事の一覧</description>
        <image rdf:resource="http://diary.noasobi.net/img/asagao-p.png"/>
        <xsl:call-template name="items"/>
      </channel>
      <xsl:call-template name="item"/>
    </rdf:RDF>
  </xsl:template>
  <xsl:template name="items">
    <items>
      <rdf:Seq>
        <xsl:for-each select="x:html/x:body/x:div/x:div/x:div/x:p[attribute::class='topic-info']/x:a">
          <rdf:li rdf:resource="{.}"/>
        </xsl:for-each>
      </rdf:Seq>
    </items>
  </xsl:template>
  <xsl:template name="item">
    <xsl:for-each select="x:html/x:body/x:div/x:div/x:div[attribute::class='section']">
      <item rdf:about="{x:p[attribute::class='topic-info']/x:a}">
        <title><xsl:value-of select="x:h3"/></title>
        <link><xsl:value-of select="x:p[attribute::class='topic-info']/x:a"/></link>
        <description><xsl:value-of select="x:p"/></description>
      </item>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>

xslt プロセッサは msxslで、msxsl -xe latest.html html2rss.xsl > rss.rdf のようにしてコマンドプロンプトで使用します。

見出し一覧の生成も、前は自作しょぼしょぼ perl スクリプトで作っていたのですが、これも見出しアンカーでなくなったので使えず、xslt で生成するようにしました。以下、月別のまとめファイルに適用する heading.xsl です。

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns="http://www.w3.org/1999/xhtml"
  xmlns:x="http://www.w3.org/1999/xhtml"
  exclude-result-prefixes="x" >
  <xsl:output method="xml" version="1.0" encoding="Shift_JIS"
    media-type="html"
    indent="yes"
    omit-xml-declaration="yes"/>
  <xsl:template match="/">
    <ul>
      <xsl:apply-templates select="x:html/x:body/x:div/x:div/x:div[attribute::class='section']"/>
    </ul>
  </xsl:template>
  <xsl:template match="x:html/x:body/x:div/x:div/x:div[attribute::class='section']">
      <li class="{x:h3/@class}"><xsl:value-of select="preceding::x:h2[position()=1]"/><a href="{x:p[attribute::class='topic-info']/x:a/@href}"><xsl:value-of select="x:h3"/></a></li>
  </xsl:template>
</xsl:stylesheet>

これで、これまでのややこしシステム(何)の復活です。しかし、日記書き用の xyzzy の 定型句挿入 lisp を書き換えなくては、やっぱり面倒でやっていられない。ここが一番苦手です。xslt も苦手なんですが。:p)

[ 「RSS と見出し一覧の生成」へコメントをつける ]

この記事の永続的 URI ならびに トラックバック ping URI
http://diary.noasobi.net/2004/04/diary_040406a.html

続・バランスチェア

publish
2004-04-06T00:00:00+09:00
tags
はてぶ

花見に行ったついででデジカメを持っていたので、3月にアキバへ行ったときにゲットしたバランスチェアをお披露目しとこう。

バランスチェアの画像

本物(何)はなかなか手の出ない値段なのですが、これはかなり安かったです。なんと、3,980円(税別)ですた! が、安かったせいか長時間座っていると疲れるので、普通のよくある事務用の椅子と交換したりして使っています。:p)

おまけで、再建なった会社の私のリアルデスクトップも晒しておきませう。

私のリアルデスクトップ

最近は、神崎さん謹製のマウスパッド(何)は使用していません。(謎)

[ 「続・バランスチェア」へコメントをつける ]

この記事へのツッコミ

1: のり (2004-04-06T23:08:48+09:00)
会社から更新したら、ややこしシステム(何)の更新が不完全でえらいこっちゃになって、あせった。:p)
この記事の永続的 URI ならびに トラックバック ping URI
http://diary.noasobi.net/2004/04/diary_040406b.html

vmware v4.5 を入れてみた

publish
2004-04-08T00:00:00+09:00
tags
はてぶ

vmware v4.5 が出たとのことで、30日間使えるお試し版を入れてみました。vmware というのは、windows もしくは linux などのホスト OS 上に別のバーチャルなマシンを作り、その仮想マシンに別のゲスト OS を使えるようにするという魔法のようなアプリケーションです。以前から興味があったのですが、敷居が高いような気がしていたのと、ゲスト OS を入れる HDD の物理的な容量がなくて、なかなか手が出せなかったのですが、今は HDD に余裕があるので、勢いで試してみました。:p)

ちなみに、マシンスペックは、duron 700MHz メモリ 384MB という古目のマシンで、win2000 が動いています。

vmware のインストール自体は、windows のアプリなので特に問題になることもなく終了。インストーラーも日本語でした。仮想マシンを作るのも、ウィザードに答えていくだけで、簡単に作成できます。とりあえず、未使用の領域に、NTFS なドライブを 10GB 作成して、その中に仮想マシン用のディレクトリを 4GB 割り当てました。

何を入れようか悩みましたが、昔入れたことのある plamo をいれることにして、Welcome to Plamo Linux Home Page より plamo 3.3 の CD イメージを落としてきて、CD-R に焼いて、インストールしました。後で気がついたのですが、vmware の機能でわざわざ CD に焼かなくとも、iso なイメージを仮想の CD-ROM ドライブに割り当てることで、HDD 上の iso イメージからインストールすることも可能でした。

インストールは順調に進み、最後にブートローダーをどこにインストールするのかというあたりで、どうしたものかと考え込み、うっかり windows が動かなくなっても困ると考えて「インストールしない」を選択しました。案の定バーチャルマシンを再起動しても plamo は起動しませんでした。:p)

あれこれしてみましたがうまくいかないので、思い切ってplamoのディレクトリごと削除。マシンが1台なくなりました。:p)

その後、またマシンを作って、さらにあれこれしているうちに研究会の中継(何)が始まったりして、ながらインストールしようとしたらさすがに正常に動作しなくなり、またまた、マシンごと削除。:p)

てなことを、昨日やっていて、今日はまじめに取り組み、無事 plamo 3.3 のインストールに成功。試しに X を起動してみましたが、さすがにそのままでは起動できませんでした。なにか情報をと思って、plamo のサイトへ行ってみると、なんと 4.0 のベータが発表になっているではありませんか。ということで、またあっさりマシンごと削除。

plamo は 4.0b になって肥大化が進んだらしく、CD イメージは2枚になっていました。2枚ともダウンロードして、今度は HDD からインストール。CD-ROM ドライブを仮想的に 1枚目の ISO イメージに割り当てておきます。とりあえず、「お薦めパッケージ」の KDE なしを選択してインストール。KDE は2枚目の CD に入っているので、途中で入れ替えを求められたら、どうしたらいいのかわからないので、後で入れることにしました。で、無事インストール完了。plamo 付属の pkgtool から KDE のバイナリ一式をインストールしました。

root で自分のユーザーアカウントを作って、ログイン。startx であっさり KDE が立ち上がりました。素晴らしい。しかし、画面が 640*480 でさすがにちょっと狭い。うーんと思ったんですが、どうやら vmware tools というものを入れる必要があるようです。vmware もしきりに vmaware tools を入れよとうるさいことを言ってきます。

ならば入れねばなるまいということで入れました。まず linux を起動して rootでログイン。その後、vmware のメニューから、vmware tools のインストールを選択します。すると、仮想でインストールプログラムがCD-ROMドライブに割り当てられるようです。これにマウントして、/tmp に展開。インストール用のスクリプトを実行するとウィザード形式でツールがインストールされました。その後 KDE を走らせてみたところ、無事 800*600 になりました。いっそ 1024*768 にすればよかったと思ったのは後の祭りですが、まぁ後でもかえらるでしょうからとりあえずよしとしておきます。

vmware tools を入れる前は、マウスのホイールスクロールなんかもうまくいかなかったのが、ちゃんとスクロールするようになり快適になりました。なかなか面白いです。

とりわけ興味を引くのが、Konqueror という KDE 標準のブラウザです。Safari と同じエンジンというか、Safari はこの Konqukeror のエンジンで動いているのです。まったく同じレンダリングをするのかどうかはわかりませんが、いくらか見て回った感じでは同じようにレンダリングしているように思います。もっとも Safari 自体あまり使ったことがないので、当てになりませんが。:p)

以下、win2000上の vmware で動かす KDE のスクリーンショットのサムネイルです。例によって、フルサイズのものにリンクしているので、全貌を見たい方はどうぞ。(約52KB)

[ 「vmware v4.5 を入れてみた」へコメントをつける ]

この記事の永続的 URI ならびに トラックバック ping URI
http://diary.noasobi.net/2004/04/diary_040408a.html

声の出るページ

publish
2004-04-09T00:00:00+09:00
tags
はてぶ

IBM製無料音声エンジンとActiveXで音声読み上げ(inu-memo 2004-04-08) を読んで、なるほどホームページビルダー(以下、HPB と略)を使うと、音声読み上げなページが作れるのかということで、早速試してみました。といっても、私は HPB は持っていないので、つか、持ってるけど v2.0(!) なんでお話しにならないので、作るほうではなくて聞くほうを試してみました。

音声読み上げエンジンなどは何にも入っていない会社のマシンで試したので、まずは IBM より ProTALKER 97 エンジンProTALKER ActiveX コントロール をいただいてきてインストール。さて、これでそのようなページに会えば音声で読み上げてくれるはずです。が、一体それはどこ?(w ってことで inu-memo をよく読むと、この機能を導入しているサイトは、「このページは、音声読み上げ機能付きです」をフレーズ検索するとみつかるかもですとありました。なるほどと、ググってみると出てきました。が、ページを表示しても何事も起こりません。おかしいなぁ、と思ったら、IE ではなくて、Mozilla Firefox で見ていました。:p)

気を取り直して、IE を起動。アクセスしてみます。なるほど、ページによってはいきなり、あるいは、再生ボタンがあってそれを操作することで、ページのテキストや、任意の(ページ製作者の指定した)テキストを音声で読み上げてくれました。

ただ、行読みモードとか、リンクを別の声で読み上げてくれるとかの機能はないようで、これは、視覚に障害がある人がページを閲覧するためのものというよりは、ページの付加機能として、音声読み上げでページを彩るという意味合いが強い機能だなと感じました。私が閲覧した中で面白い使い方をしていたページをいくつかあげておきましょう。

発音機能付き単語集1
発音がかなりおかしい部分がありますが、外国製の読み上げエンジンならもう少しいい感じかも。
源氏物語
ラジオ感覚で、コンテンツを聞くことが出来る。以外と難しい漢字も上手に読み上げるので驚いた。
今日の特別お勧め料理のページ(このページは音声読み上げ機能付です。)
冷蔵庫にインターネット(何)がつくようになると、こういうのもありかも。:p)

その後、読み上げといえば、2ch to Speech! という2ちゃんねる専用の読み上げソフトがあったなぁと思い、久々に聞きたくなってまた試してみました。今度は別のマシンです。こっちには、Jaws の体験版が入っているので、読み上げエンジンは入れなくともそれが使えるのだろうけれども、件のサイトにはSAPI (ver.4.0)対応音声エンジンが別途必要(※無料版のインストールはこちら)と書いてあったのが目に付いて、ん?無料の音声エンジン? そんなのあったけ? という展開から、MicrosoftAgentText to Speech に行き着きました。そういえば、以前、Bilingual Emacspeak Project(BEP)を試してみたときに、なんかマイクロソフト製の音声エンジンを入れてみたことがあったなぁと思い出しました。そのときは英語版を入れたんで、英語しかしゃべってくれなかったんですが、日本語版もあったんですね。

てなことを考えつつ、あれこれ手繰っていくと、自己満足に Microsoft Agent というページに行き着きました。なるほど、windows にも変な(?)キャラクター付きでしゃべるページを作る仕組みが用意されていたんですね。:p)

話しは飛びますが、こないだ行われた 第1回 ACRI研究会 をネット中継で見ていました。その中で、ACRI 代表の持田さんは、いずれ無料もしくはそれに近い安価な音声読み上げブラウザの開発もしてみたい、みたいなことを言っておられたんですが、もしかすると、こういうのを使えば音声エンジンの問題はクリアできるのかなぁとか思ってみたり。もっとも、Text-to-speech engines を使用するにあたってのライセンス関係とかはまだ読んでいないので、そこらあたりがナニ(何)ですが。

と、今日はまったく何がいいたいのかわからない更新になってしまいました。:p)

[ 「声の出るページ」へコメントをつける ]

この記事の永続的 URI ならびに トラックバック ping URI
http://diary.noasobi.net/2004/04/diary_040409a.html

簡易音声ブラウザ?

publish
2004-04-13T00:00:00+09:00
tags
はてぶ

IBM の ProTALKER 97 エンジン もしくは、マイクロソフトの Text to SpeechSAPI 4.0 runtime support があれば、あれこれ読み上げることが出来るので、もしかして、音声ブラウザも出来るのではないかと思ってあれこれ探していたら、とりあえず、ブラウザで表示中のページを割に簡単に読み上げる方法がありました。

Speech Pad 2 というフリーのアプリを使います。これは何をするものかというと、任意のテキストを読み上げるものです。クリップボードを監視して、クリップボードの中身を自動的に読み上げるということもできます。まず、マイクロソフトの Text to Speech の日本語版(Lernout & HauspieR TTS3000 TTS engine - Japanese)を導入します。違う国のものを導入すると、日本語がしゃべれません。次に、SAPI 4.0 runtime support も導入します。これで、音声エンジンへの受け渡しのインターフェースが導入されたことになります。Speech Pad 2 を導入して、画面に何か入力してみます。書いた文字列が読み上げられるはずです。さて、これで準備完了。Speech Pad 2 のクリップボード監視にチェックを入れておいて、ブラウザで任意のページを開きます。ページを全部選択してコピーします。Ctrl+A して、Ctrl+C すればいいでしょう。すると、あら不思議、ちゃんと音声で読み上げてくれるではないですか。って、当たり前なんですが。:p)

Speech Pad 2 のスクリーンキャプチャ

もちろん、この方法では、リンクを辿ったりすることはできないし、そもそも、リンクとそうでないテキストの判別すらつかないわけですが。それでも、音声読み上げがどんな感じで行われるのかを体験してみる程度には、使えると思います。

きっとブラウザのレンダリング済み画面をコピーするのではなくて、ソースをコピーして、リンクとそれ以外の部分くらいの解析を行い、SAPI に渡す際に、ピッチとか、読み上げ音声の種類を変更するようにすれば、もっと本物の音声読み上げブラウザぽく出来るのかもしれません。あるいは、さらに media="aural" な css までをも読んで、細かく制御できれば、音声スタイルに対応したものに出来るのかも、と夢想してみたり。Mozilla Firefox の拡張とかで、そういうのできんものかなぁ。

[ 「簡易音声ブラウザ?」へコメントをつける ]

トラックバック

1: 腹這いの日々/音声で読むブログ (2005-01-24T01:45:30+09:00)
自分のブログをPCに読み上げてもらおうと
この記事の永続的 URI ならびに トラックバック ping URI
http://diary.noasobi.net/2004/04/diary_040413a.html

山へスキーに行ってきた

publish
2004-04-18T00:00:00+09:00
tags
はてぶ

昨日、久々に山へスキーしに行ってきました。行ったのは、小日向のコルというところです。白馬岳登山の基地、猿倉のすぐ上の山です。

同行したM田君の滑り

通常は猿倉まで車が入るのですが、今はまだ道が通行止めになっていてずっと下の二股というところから歩いて入りました。道の除雪はすでにほぼ完了しているのですが、まだ雪崩などの危険があるということでしょうか。道の所々に落ちてきたばかりの雪のブロックが散乱しているところもありました。開通は5月1日とのこと。

8時に歩き出して、途中一度休憩を入れて9時半頃猿倉に到着。スキーとスキー靴を背負っているのでいやなアプローチでした。:p) 帰りもまた同様に歩かないといけないのでげっそり。雪があればスキーで降りて来れるのですが…。

猿倉より、スキーにシールを貼って登行開始。1時間程度で、猿倉台地に到着。下は結構いい天気だったのですが、上がるに連れて曇ってきました。高い山はガスの中で、白馬岳も上は見えません。時折、激しい風も吹き出し、ゴォーと唸りをあげています。風の吹く向きと上空の雲の流れは無関係のようで、風が回っているようです。

猿倉台地までは、シール登行だったのですが、ここからはやや斜面が急になるのと、雪は結構しまっているので、ツボ足にアイゼンの方がはかどるだろうと判断してまたスキーを担ぎます。

コルについて、コルの向こう側へ回れば、風はないのではないかと期待していたのですが、そんなことはなく、やはり時折強い風が吹いていました。ダケカンバの木の根元に穴を掘って風を避けるようにして、宴会タイム。何しろ寒い。グローブをしてオニギリ食べました。:p)

コルから猿倉台地への下りの画像

帰りは滑走の楽しみがあるのですが、どうも前夜に雨が降っていたらしく、ベチョベチョの雪質でスキーはあまり滑りませんでした。ま、それでも途中、コーヒーを入れて飲んだり、楽しい山行でした。

猿倉台地にてコーヒーを楽しむ私の画像

帰りは、またアスファルト道を1時間歩いてぐったりしました。:p)

[ 「山へスキーに行ってきた」へコメントをつける ]

この記事の永続的 URI ならびに トラックバック ping URI
http://diary.noasobi.net/2004/04/diary_040418a.html

鯖を移転した

publish
2004-04-23T00:00:00+09:00
tags
はてぶ

サーバを移転しました。この日記が見えれば DNS が浸透したということです。なんか忘れていることがあるかもしれないので、どっか不都合があるかもしれません。

[ 「鯖を移転した」へコメントをつける ]

この記事へのツッコミ

1: のり (2004-04-25T17:51:52+09:00)
もしもし、ツッコミがうまく動いていませんでしたよ。と自己ツッコミ。:p)
2: のり (2004-04-27T10:32:10+09:00)
「くっつき」の RSS とサイト全体の RSS も出ていませんでした。:p)
この記事の永続的 URI ならびに トラックバック ping URI
http://diary.noasobi.net/2004/04/diary_040423a.html

日記書き用 Lisp

publish
2004-04-26T00:00:00+09:00
tags
はてぶ

先日、この日記書きのフォーマットを変えてから、今まで使っていたひとつの記事を括る div 要素周りのあれこれ(何)を自動で書いてくれる xyzzy の lisp が使えなくなっていて、手で書くというやたら面倒なことをしていたら日記が書けなくなっていたので、これではいかんということでなんとかこれまで使っていたものを改造して、今使っているものに合うようにしてみた。

実行すると、以下のような文字列を自動で吐き出してくれます。

    <div class="section" id="diary_040426b">
<h3 class=""></h3>



<p class="topic-info">この記事の永続的URI : <a href="0404.html#diary_040426b">http://diary.noasobi.net/0404.html#diary_040426b</a></p>
    </div><!-- [topic end] -->

Lisp は以下のとおり。


;;; -*- Mode: Lisp; Package: User -*-

(defvar *mydiary-id-format-pattern* "    <div class=\"section\" id=\"diary_%y%m%d\\(.\\)"
  "id のフォーマット")
(defvar *mydiary-change-of-day-hour* 0
  "日付の変わる時間")
(defvar *mydiary-cursor-pattern* "${cursor}"
  "テンプレート挿入後のカーソル位置")
(defvar *mydiary-sequence-pattern* "${seq}"
  "テンプレートで連番に置換される")
(defvar *mydiary-section-start-pattern* "    <div class=\"section\""
  "テンプレートでの section の開始パターン")
(defvar *mydiary-template*
  "    <div class=\"section\" id=\"diary_%y%m%d${seq}\">
<h3 class=\"${cursor}\"></h3>



<p class=\"topic-info\">この記事の永続的URI : <a href=\"%y%m.html#diary_%y%m%d${seq}\">http://diary.noasobi.net/%y%m.html#diary_%y%m%d${seq}</a></p>
    </div><!-- [topic end] -->

")

(defun mydiary-succ (c)
  "mydiary: 連番生成関数(超簡易版)"
  (cond ((characterp c)
         (string (code-char (1+ (char-code c)))))
        ((stringp c)
         (mydiary-succ (char c 0)))
        (t
         "a")))

(defun h3 ()
  "mydiary: 日記テンプレート挿入関数"
  (interactive "*")
  (let* ((now (- (get-universal-time) (* *mydiary-change-of-day-hour* 60 60)))
         (id (format-date-string *mydiary-id-format-pattern* now))
         (opoint (point))
         (seq))
    (save-excursion
      (when (scan-buffer *mydiary-section-start-pattern* :regexp t :reverse t)
        (scan-buffer id :regexp t :limit opoint)
        (setf seq (match-string 1))))
    (save-excursion
      (insert (substitute-string (format-date-string *mydiary-template* now)
                                 *mydiary-sequence-pattern*
                                 (mydiary-succ seq))))
    (replace-buffer *mydiary-cursor-pattern* "" :reverse t)))

オリジナルは、xyzzyでタグ打ってる人の数 →の566さん作です。改めてありがとうございます。>556さん

なんか、適当な xml でもでっち上げて日記を書いて、それを xslt で html に仕立てたほうが、いいかなという気もしましたが、こっちの方が早いし、せっかく xhtml で書いているんだから、それを使わないのももったいない気がしたり。:p)

[ 「日記書き用 Lisp」へコメントをつける ]

この記事の永続的 URI ならびに トラックバック ping URI
http://diary.noasobi.net/2004/04/diary_040426a.html