Jun 2003 | Jul 2003 »

June 26, 2003

c-mode追加

.emacs に c-mode の設定を追加しました。
(setq c-default-style "bsd")
cc-styles.el を見ると、"bsd" の他にも "k&r" や "gnu" などいろいろ発見。
Emacs21.2.1 を使っています。

;;
;; c-mode
;;
(setq c-default-style "bsd")
(add-hook 'c-mode-hook
    '(lambda ()
        (font-lock-mode 1)
        (local-set-key "\C-c\C-c" 'compile)
        (local-set-key "\C-c\C-d" 'gdb)
        (local-set-key "\C-c\C-n" 'next-error)
        (setq c-basic-offset 4)
        ))

June 24, 2003

表示タグあれこれ

MovableType のテンプレートで使ったタグをメモしておきましょ。

■ トップページ(Main Index)の各エントリーに所属カテゴリのリンクを表示する。

<MTEntries> と </MTEntries> の間に

<a href="<$MTEntryLink archive_type="Category"$>"><$MTEntryCategory$></a>

を追加。


■ トップページ(Main Index)にカテゴリーリストを表示する。

<MTCategories>
<a href="<$MTCategoryArchiveLink$>"><$MTCategoryLabel$></a>(<$MTCategoryCount$>)<br />
</MTCategories>


■ トップページ(Main Index)に最近のトラックバック一覧を表示する。

<MTPings lastn="10">
<a href="<$MTPingURL$>"><$MTPingBlogName$></a> (<$MTPingDate format="%m/%d %H:%M"$>)<br />
</MTPings>


■ カテゴリごとの表示でタイトルと日付だけ一覧表示する。

Category Archive のテンプレートにて
----
<div class="blog">
<h2 class="categorytitle"><a href="<$MTBlogURL$>">Top</a> > <$MTArchiveTitle$> (<$MTArchiveCount$>)</h2>

<MTEntries>
<$MTEntryTrackbackData$>

<div class="blogbody">
<a name="<$MTEntryID pad="1"$>"></a>
<h3 class="title"><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></h3>
<div class="categorydate"><$MTEntryDate format="%Y/%m/%d %H:%M"$></div>
</div>

</MTEntries>
</div>
----
を追加。


■ MovableTypeのバージョン番号を表示する。

Powered by <a href="http://www.movabletype.org">MT <$MTVersion$></a>

June 21, 2003

mt-rssfeed.pl & mt-list.pl

トップページの右側に他サイトの RSS を取り込んで表示させてみました。
RSS を提供しているサイトの一覧は、http://rss-jp.net/rss_list.html で紹介されています。

■ mt-rssfeed.pl の入手

mt-rssfeed.tar.gz (v1.04)
http://www.mplode.com/tima/files/mt-plugins/#mt-rssfeed

■ mt-list.pl の入手

mt-list.tar.gz (v0.21)
http://www.mplode.com/tima/files/mt-plugins/#mt-list

■ 日本語の文字化け対策と rssfeed のインストール参考ページ

euc-jp.enc
http://blog.bulknews.net/mt/archives/000006.html

mt-jcode.pl
http://blog.bulknews.net/mt/archives/000007.html

■ LP.pm モジュール追加

mt-rssfeed.tar.gz の中に含まれる LP.pm を $MT/extlib/XML/RSS 以下にコピーする。($MT は、MovableType を設置したディレクトリ)
RSS というディレクトリがない場合は作成して下さい。

■ XML::Parser の Encodings 追加

$MT/extlib/XML/Parser/Encodings 以下に euc-jp.enc を置く。

■ mt-rssfeed.pl の設定

my $RSSFEED_DATA_DIR = "/usr/home/yourname/rssfeed/";

RSS のキャッシュを保存するためのディレクトリを作成して指定します。ディレクトリのパーミッションは、CGI が書き込める 777 などにする必要があります。

■ プラグインの追加

$MT/plugins 以下に次のファイルをコピーする。

mt-rssfeed.pl
mt-list.pl
mt-jcode.pl

■ テンプレートの編集

トップページに表示させたいので Main Index に以下を追加しました。

<MTList name="feeds">
http://slashdot.jp/slashdot.rdf
http://japan.cnet.com/rss/index.rdf
http://www.hotwired.co.jp/news/index.rdf
http://pcweb.mycom.co.jp/haishin/rss/index.rdf
http://www.atmarkit.co.jp/rss/rss2dc.xml
</MTList>
 
<MTListLoop name="feeds">
<MTRSSFeed>
<div class="sidetitle">
<a href="<$MTRSSFeedLink$>" target="_blank"><$MTRSSFeedTitle jcode="euc"$></a>
</div>
 
<div class="side">
<MTRSSFeedItemsExist>
<MTRSSFeedItems lastn="10">
<a href="<$MTRSSFeedItemLink$>" target="_blank">
<MTRSSFeedItemTitleExists><$MTRSSFeedItemTitle jcode="euc"$></MTRSSFeedItemTitleExists>
</a><br />
</MTRSSFeedItems>
</MTRSSFeedItemsExist>
<MTRSSFeedTitleExists>> <$MTRSSFeedCacheDate format="%B %e, %Y %H:%M"$></MTRSSFeedTitleExists>
<br />
</div>
</MTRSSFeed>
</MTListLoop>

さらに詳しい説明は、

% perldoc mt-rssfeed.pl
% perldoc mt-list.pl

で表示されます。

これで Main Index をビルドすれば他サイトの RSS が取り込まれて表示されるようになります。以下は、もうちょっと便利に使う方法。

■ テンプレートの分割

トップページ(Main Index)などに上記のタグを追加すると、書込みするたびに RSS を取得しに行くので重くなってしまいます。

そこで、上記の記述を別のテンプレートに保存して Main Index のテンプレートに

<$MTInclude file="(出力ファイル名)"$>

を書いて取り込むと便利です。

新しい Index Template は、管理室の「Template の編集」で作成します。

今回は

◯Template の名前: RSS List
◯出力ファイル名: rss_list.html
◯「Index Template を Rebuild するときに自動的にこの Template を Rebuild する」のチェックを入れない。

で作りました。そして、取り込みたい所に

<$MTInclude file="rss_list.html"$>

を記述しておきます。

rss_list.html の更新は、mt-rssfeed.tar.gz の中に含まれる mt-rebuild.pl を $MT 以下に置いて cron で定期的に実行すると良いでしょう。

例えば以下のような感じです。

0 */1 * * * /path/to/mt-rebuild.pl -mode=index -blog_id=1 -template="RSS List" && \
/path/to/mt-rebuild.pl -mode=index -blog_id=1 -template="Main Index"

/path/to/ の部分は、mt-rebuild.pl があるディレクトリ($MT)までのパスを記述します。

-blog_id= で指定する番号は、MovableType の管理室にアクセスした時にブラウザに表示される URL を見ると分かります。 例えば

mt.cgi?__mode=view&_type=entry&id=14&blog_id=1

などになっていれば、blog_id が 1 なので -blog_id=1 を指定します。

余談ですが、ついでに各ページに表示するヘッダーとフッター部分も別のテンプレートに分けて

<$MTInclude file="header.html"$>
<$MTInclude file="footer.html"$>

で取り込むことにしました。

■ SSI を活用する(2003/11/24 追記)

cron で Main Index (index.html) をリビルドするのは無駄なので、トップページだけ SSI を使って rss_list.html を動的に読み込んで表示することにしました。そうすれば cron で rss_list.html を更新するだけで済みます。

トップページを SSI (index.shtml) で表示するための .htaccess の設定例

Options +IncludesNoExec
AddType "text/html;" .shtml
AddHandler server-parsed .shtml
DirectoryIndex index.html index.shtml

Main Index の出力ファイル名を index.html から index.shtml に変更して
テンプレート(Main Index) に記述していた

<$MTInclude file="rss_list.html"$>

<!--#include file="rss_list.html"-->

に変更します。

cron の設定は

0 */1 * * * /path/to/mt-rebuild.pl -mode=index -blog_id=1 -template="RSS List"

のみに変更しました。

2004/06/03 追記
サイトを増しすぎて右側がやけに長くなってしまった。少し整理。

June 20, 2003

Blogtimes

宮川さんの http://blog.bulknews.net/ でBlogtimes の存在を知りました。
書込みした時間帯をバーコードのように表示するだけだけど、ちょっとカッコいいぞ。

■ Blogtimes の入手

mtblogtimes-1.0.tar.gz
http://nilesh.org/mt/blogtimes/

■ GD.pm がインストールされていない場合は別途入手

FreeBSD の場合

# cd /usr/ports/graphics/p5-GD
# make install

で p5-GD-1.41 をインストールする。

■ プラグイン追加

mtblogtimes-1.0.tar.gz に含まれる blogtimes.pl を $MT/plugins 以下にコピーする。

■ テンプレートの編集

Blogtimes を表示させたいテンプレートにタグを追加する。

例えば以下のような感じ。
-----
<div class="blogtimes">
<MTBlogTimes fillcolor="#666666" textcolor="#666666" linecolor="#FFFFFF" bordercolor="#DDDDDD" width="190" height="10" save_dir="images" show_text="on">
<a href="http://nilesh.org/mt/blogtimes/" target="_blank"><img src="<$MTBlogTimesFileURL$>" width="<$MTBlogTimesWidth$>" height="<$MTBlogTimesHeight$>" border="0" alt="B L O G T I M E S" title="B L O G T I M E S" /></a>
</MTBlogTimes>
</div>
----

詳しい説明は、

% perldoc blogtimes.pl

で表示されます。

June 19, 2003

MovableTypeインストール

MovableTypeインストールしてみました。
ちょっといい感じ。

■ MovableType 入手

MT-2.64-full-lib.tar.gz
http://www.movabletype.org/

■ 日本語化 patch 入手

mt-ja.2.64.tgz
http://rebecca.ac/milano/mt/archives/000168.html

■ Jcode.pm がインストールされていない場合は別途入手

FreeBSD の場合

# cd /usr/ports/japanese/p5-Jcode/
# make install

で Jcode.pm (ja-p5-Jcode-0.82) をインストールする。

■ 解凍

% tar zxvf /path/to/MT-2.64-full-lib.tar.gz
% mv MT-2.64-full-lib $MT

■ 日本語化パッチ適用

文字コードは EUC にするため mt-ja.2.64.tgz に含まれる
MT.euc.patch を使う。

% cd $MT
% patch -p1 < /path/to/mt-ja/MT.euc.patch
% find . -type f -name "*.orig" -delete

■ 日本語化画像の用意

$MT/images 以下に mt-ja.2.64.tgz に含まれる lang-ja ディレクトリをコピーする。

% cp -r /path/to/mt-ja/lang-ja $MT/images/

■ $MT/mt.cfg の設定

データの保存は、MySQL や PostgreSQL が使えるようですが、とりあえず DBM を使うことにしました。

CGIPath http://www.domain.net/mt/
DataSource /usr/home/yourname/db
DBUmask 0022
HTMLUmask 0022
UploadUmask 0022
DirUmask 0022
TempDir /usr/home/yourname/tmp/
NoHTMLEntities 1
PublishCharset EUC-JP

CGI を実行するユーザIDと設置するときのログインIDが違う場合(SuExec環境でない場合)は、0022 の代りに、どちらのユーザも互いに読み書きできるようなマスク(0002 や 0000)にしておいたほうが良いかもしれません。

特に CGI でブラウザから記事を更新しつつ、cron で mt-rebuild.pl を使った時にエラーになりました。

■ 設定したディレクトリの作成

% cd /usr/home/yourname
% mkdir db
% mkdir tmp
% chmod 777 db (SuExecの場合は不要)
% chmod 777 tmp (SuExecの場合は不要)

■ 動作チェック

http://www.domain.net/mt/mt-check.cgi
http://www.domain.net/mt/mt-load.cgi

問題なければ、mt-load.cgi は削除しておく。
(残しておくとセキュリティ上問題があるらしい)

■ ログイン

http://www.domain.net/mt/mt.cgi にアクセスして、
UserNameに「Melody」
Passwordに「Nelson」
を入力してログインする。

■ Melody を自分用のアカウント名とパスワードに変える。

■ 既に存在する FIRST WEBLOG のウェブログを自分用に設定する。

Local Site Path:
/usr/home/yourname/www/weblog
Site URL:
http://www.domain.net/weblog
Local Archive Path:
/usr/home/yourname/www/weblog/archives
Archive URL
http://www.domain.net/weblog/archives/
Timezone:
UTC+9

■ スタイルシートの変更

標準のスタイルシート(styles-site.css)は、ちょっと物足りないので取り換える。サンプルは以下にいくつかあります。

http://www.movabletype.org/default_styles.shtml

Georgia Blue の CSS を元に変更しました。

■ その他参考 & メモ

Movable Type のヘルプ日本語訳
プロが教える Movable Type の構造デザイン
MovableTypeのプラグイン作成(邦訳)

RSS -- サイト情報の要約と公開
文章を書く心がけ

Jun 2003 | Jul 2003 »

Since 2003.6.19, Yutaka@smate.NET <yutaka@asmate.net>. Powered by MT 2.64