なんかアンテナにせかされているので(謎)、ネタも無いのに更新するのもアレなので最近使っている Mozilla Firebird の拡張の一覧を書いておきます。ま、プロファイルを完全に作り直したときなんかの為の自分用の便利リンクだったりするわけですが。:p)
Another 朝顔日記見出し一覧の作り方
2003-12-25
さっき作ったAnother 朝顔日記見出し一覧の作り方を忘れないうちに書いておきます。
初めは、月ごとの html ファイルを落としてきてそれに xslt かまして、見出し一覧を作れば一発だろうと考えましたが、考えてみたらはてなダイアリーは xhtml ではないので、そのままでは使えないということに気が付きました。のちのち自動生成できるようにしたいので、エディタでちまちま編集するのは避けたかったので、perl を使うことにします。
以下が、私のはてな日記から、日記の見出し行(h2 および h3 )を抽出して多少加工する perl スクリプトです。このサイトの文字コードはメインが Shift_JIS なので、euc なはてな日記 の見出し行を Shift_JIS でするようにしています。名付けて、hatena_midasi.pl
#!/usr/bin/perl
require "jcode.pl";
print
<<__HTML__;
<?xml version="1.0" encoding="Shift_JIS"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>見出し一覧</title>
</head>
<body>
__HTML__
while(<>){
@midasi = /<h[23]><a href=.+/g;
foreach $midasi (@midasi){
&jcode'convert(\$midasi,'sjis');
$midasi =~ s/href=".\//href="http:\/\/d\.hatena\.ne\.jp\/nyama\//g;
$midasi =~ s/■//g;
$midasi =~ s/<a href=[^>]+>編集<\/a>//g;
print "$midasi\n";
}
}
print "</body>\n</html>\n";
例えば、2003年2月の日記のファイルは、200302 というファイルなので、コマンドプロンプトで以下のようにスクリプトを走らせます。
perl hatena_midasi.pl 200302 > 200302.xml
これで、こんな感じの日記の見出し行だけが得られます。
<h2><a href="http://d.hatena.ne.jp/nyama/20030228"><span class="date">2003-02-28</span></a> <span class="title">(fri)</span> </h2>
<h3><a href="http://d.hatena.ne.jp/nyama/20030228#1046413439" name="1046413439"><span class="sanchor"></span></a> [<a href="http://d.hatena.ne.jp/nyama/searchdiary?word=%2a%5b%c6%fc%b5%ad%5d" class="sectioncategory">日記</a>]続・髭剃り <span class="timestamp">15:23</span></h3>
<h3><a href="http://d.hatena.ne.jp/nyama/20030228#1046404750" name="1046404750"><span class="sanchor"></span></a> [<a href="http://d.hatena.ne.jp/nyama/searchdiary?word=%2a%5b%c6%fc%b5%ad%5d" class="sectioncategory">日記</a>]髭剃り <span class="timestamp">12:59</span></h3>
(後略)
これに、midasi.xsl という以下の xslt をかませます。
<?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="html" version="1.0" encoding="Shift_JIS"
indent="yes"
omit-xml-declaration="no"/>
<xsl:template match="/">
<ul>
<xsl:apply-templates select="x:html/x:body/x:h3"/>
</ul>
</xsl:template>
<xsl:template match="x:html/x:body/x:h3">
<li><xsl:value-of select="preceding::x:h2[position()=1]"/> <a href="{child::x:a/@href}"><xsl:value-of select="self::node()"/></a></li>
</xsl:template>
</xsl:stylesheet>
コマンドラインで、以下のようにして実行します。
msxsl 200302 midasi.xsl -o h200302
これにより、こんな感じの見出しのリストが得られます。
<ul xmlns="http://www.w3.org/1999/xhtml">
<li>2003-02-28 (fri) <a href="http://d.hatena.ne.jp/nyama/20030228#1046413439"> [日記]続・髭剃り 15:23</a></li>
<li>2003-02-28 (fri) <a href="http://d.hatena.ne.jp/nyama/20030228#1046404750"> [日記]髭剃り 12:59</a></li>
(後略)
これを各月ごとに行い、得られたリストを、見出し一覧ページで SSI を使ってインクルードして出来上がりです。
ul要素になんかくっついていますが、気にしない方向で。:p)
つか、インクルードしないで、各月の見出しを連結して見出し一覧のページ全体を生成させればいいのか。と今気が付きました。ま、また今度ね。:p)
Another 朝顔日記の見出し一覧を作った
2003-12-25
はてなダイアリーのほうでやっているAnother 朝顔日記の見出し一覧を作ってみました。
作り方のほうは又のちほど。つか、作り変えるかも知れんし…。:p)
続・よく使う置換をダイアログから
2003-12-22
20日の「よく使う置換をダイアログから」の lisp がバージョンアップして、複数文字列の置換に対応しました。multiple-replace の機能を利用するので、multiple-replace が必要です。もっとも、昨夜、multiple-replace 自体バージョンアップして multiple-replace 単体でも検索文字列、置換文字列のセットの設定を保存できるようになっています。xyzzyの使い方が分からぬやし 励ましあえ その3(793〜796) あたりがそれ。
こういう有用なものは2ちゃんの外にも保存しておいたほうがいいと思うので、自分用にlispファイルに仕立てたものをここにも書いておきます。以下、myreplace.l
;;; -*- Mode: Lisp; Package: User -*-
;;置換リスト
;;http://pc2.2ch.net/test/read.cgi/software/1063367821/ 793番さん
(require "multiple-replace")
(defvar *replace-dialog-list-replace-list* nil)
(define-history-variable *replace-dialog-list-replace-selection* nil)
(defun replace-dialog-list-replace (&optional (replace-list *replace-dialog-list-replace-list*)
&key (interactive-p t) noerror)
(interactive)
(multiple-value-bind (result data)
(dialog-box `(dialog 5 5 219 450
(:caption "置換")
(:font 10 "MS Pゴシック")
(:control
(:static nil "置換リスト(&L)" #x50020000 7 5 113 10)
(:listbox list nil #x50a10111 7 15 200 264)
(:button whole "バッファの先頭から(&O)" #x50010003 22 284 113 14)
(:button selection "セレクション内(&S)" #x50010003 22 301 113 14)
(:button query "確認あり(&Q)" #x50010000 152 284 50 14)
(:button all "全て置換(&A)" #x50010000 152 301 50 14)
(:button IDCANCEL "&Cancel" #x50010000 152 318 50 14)))
`((list . ,replace-list)
(list . ,(car replace-list))
(whole . ,ed::*replace-whole-buffer*)
(selection . ,*replace-dialog-list-replace-selection*))
`((selection :disable (whole))))
(when (and result data)
(let ((replace-list (nth 2 (assoc 'list data)))
(regexp (nth 3 (assoc 'list data)))
(whole (cdr (assoc 'whole data)))
(selection (cdr (assoc 'selection data))))
(setq ed::*replace-whole-buffer* whole
*replace-dialog-list-replace-selection* selection)
(when *replace-whole-buffer* (goto-char (point-min)))
(cond (*replace-dialog-list-replace-selection*
(ed::map-selection #'(lambda (start end)
(goto-char (point-min))
(ed::perform-multiple-replace replace-list
(eq result 'query)
regexp
interactive-p
noerror))))
(t (ed::perform-multiple-replace replace-list
(eq result 'query)
regexp
interactive-p
noerror)))))))
(define-key *global-keymap* #\M-R 'replace-dialog-list-replace);Alt+Shift+R
こういうファイルを仕立てて、Siteinit.l に
(require "myreplace")
として、.xyzzy によく使う置換のリストを以下のような感じで書いておきます。
;;置換リスト
(setq *replace-dialog-list-replace-list*
'(;("表示名" ("置換リスト(alist)") regexp(nil以外で正規表現を使う))
("実体参照化" (("&"."&") ("<"."<") (">".">")) nil)
("改行のみの行を削除" (("^\n" . "")) t)
("インデント解除" (("^[ \t]+" . "")) t)
("行末空白文字削除" (("[ \t]+$" . "")) t)
))
あらかじめ、multiple-replace を導入しておく必要がありますが、multiple-replace は今回のバージョンアップで NetInstaller 対応になったので導入も楽チンです。:-)
Alt+Shift+R すると、以下のスクリーンキャプチャのようなダイアログが出て、手軽に常用する置換が使えます。
OHKUBO Hiroshi さん、793さん、ありがとうございます。
RSS Reader が装備された Opera 7.50
2003-12-21
Opera 7.50 Preview 1 にRSS Reader が装備されているとのことで、さっそくゲット。7.23に上書きインストールしようと思っていましたが、これまでとちがって違うフォルダを勧めてくるので、大事を取って(?)それに従います。:p)
インストール完了後さっそく起動。ありゃ、えらい感じが変わっちゃたなぁ。なんかいろいろついてます。とりあえず気にしないでお目当ての RSS Reader を探すが見当たらない。困った時は人様のリソースというわけで、サル並日記(2003-12-21-Sun)で使い方を調べる。わかりました! なぜか mail のところにあるのですね。以下がRSS Reader@Opera7.5 のスクリーンショットのサムネイルです。例によって等倍画像にリンクしてあります。(約19KB)
もしやと思い、OPML のインポート・エクスポートにも対応しているのではないかと思って探してみましたが見つかりませんでした。メールとしてエクスポートはできるみたいですが。
- 参照
-
RSS Reader panel v1.6 とv1.7b1(Another 朝顔日記)
それにしても Opera が RSS reader を標準装備することで、今後ますます RSS が一般的なものになっていきそうですね。