2005.01.08

Movabletypeの横書きカレンダー・・・(Movabletype)

Movabletypeのカレンダーはデザイン上の意味はあっても、あまり利用価値はあるように思えません。
そこで、Netで調べたら横書きのカレンダーにしていらっしゃる方がおり、これなら、じゃまにならないで良い感じです。
しかし、オリジナルのものは単純に日にちの数字が横に並ぶだけで、月の初めでまだ記事を書き込んでいないときなどは、カレンダーの感じがしません。
せめて、日曜日ぐらいは色を付けたいと思い少し改造しました。

1.Main Indexの改造

横書きカレンダーの場合はBannerの下にくっ付けて表示するのが普通と思われますので、以下にbanner部分からの内容を書きます。

<div id="banner">
<h1><a href="<$MTBlogURL$>" accesskey="1">
<$MTBlogName encode_html="1"$></a></h1>
<h2><$MTBlogDescription$></h2>
</div>
<div id="calendar" class="calendar-head">
<table border="0" cellpadding="0" cellspacing="0" bgcolor="#9cbe8c"
summary="カレンダー">
<tr>
<td align="right" width="70">
<div class="calendar-month"><b><$MTDate format="%Y  %B :"$>
</b></div></td>
<td>
<MTCalendar>
<span class="calendar-date">
<MTCalendarWeekHeader><font color=#FF0000>
</MTCalendarWeekHeader>
<MTCalendarIfEntries>
<MTEntries lastn="1">
<a href="<$MTEntryLink archive_type="Daily"$>">
<$MTCalendarDay$></a></MTEntries>
</MTCalendarIfEntries>
<MTCalendarIfNoEntries><$MTCalendarDay$>
</MTCalendarIfNoEntries>
<MTCalendarWeekHeader></font>
</MTCalendarWeekHeader>
</span>
</MTCalendar>
</td>
</tr>
</table>
</div>

2. 次にStylesheetの変更です

#calendar {
padding-left: 50px;
background:  #9cbe8c;
}
.calendar-head {
font-family:"MS Pゴシック", "Osaka";
color:#FFF;
ont-size: small;
font-weight:bold;
padding-left:2px;
text-align:left;
}
.calendar-date {
font-family:"MS Pゴシック", "Osaka";
color:#FF0;
font-size:     small;
font-weight: normal;
background: #9cbe8c;
line-height:  100%;
padding-left: 2px;
text-align:    left;
}

2004.12.29

Majordomoのhtmlからの加入・脱退・・・(mail)

メーリングリストを開設すると、MLの総合ホームページなどから加入、脱退などが出来る方が便利でかっこ良く、一般の読者にも簡便で好まれる。
このためには、登録希望者に名前とメールアドレスを入れさせて、majordomoにsubscribeメールを出すようにすれば良いので比較的簡単に作ることができる。
ところが、自前で作らなくてもMajordomoにはそのツールも同梱されているので、これを利用する。
packageで入れるとツールは無いが、portsを入れていると
/usr/ports/mail/majordomo/work/majordomo-1.94.5/md-sub/ にあるmd-sub.cgiを使う。 
(1) md-sub.cgiの設定

このmd-sub.cgiを/web/cgi-binにコピーする。
また、cgi-lib.plがシステムにない場合は/usr/local/lib/perl5/site_perl/5.8.5/machにコピーしていれておく。
そして、md-sub.cgiを修正。

# cd /web/cgi-bin/
# vi md-sub.cgi
#!/usr/local/gnu/bin/perl を #!/usr/local/bin/perl に
$cgiloc   = "http://hogehoge/cgi-bin/md-sub.cgi";
運用するサーバmd-sub.cgiの場所(URL)を指定します。
$listsdb  = "/usr/local/mail/.md-subrc";
md-subが使用するdatabaseの位置
$logfile  = "/usr/local/mail/md-sub.log";
md-subのlogの位置
#$sendmail = "|/usr/lib/sendmail -t";
$sendmail = "|/bin/cat - > /tmp/test.out";
最初は/tmp/test.outに結果を書き出させます。

(2) データーベスを作る

# mkdir /usr/local/mail
# cd /usr/local/mail
ここで .md-subrcファイルを以下を参考に作る。
musicml             majordomo@greatcircle.com
info musicml        http://greatcircle.com/musicml/info.html
help                webmaster@greatcircle.com
default             musicml
test                majordomo@greatcircle.com
pcmlist             majordomo@greatcircle.com
info pcmlist        http://greatcircle.com/pcmlist/info.html

そして、

# /web/cgi-bin/md-sub.cgi -C /usr/local/mail/.md-subrc

とすれば、.md-subrc.dbが作られる。
あとは、Browserで http://hogehoge/cgi-bin/md-sub.cgiでアクセスすると、入力画面が現れる。 入力してボタンを押し /tmp/test.outに期待通りの出力が得られれば、

$sendmail = "|/bin/cat - > /tmp/test.out";  を
$sendmail = "|/usr/lib/sendmail -t";  に変える。

(3) 日本語化

<

blockquote>
日本語化パッチは無いので自分で訳す。
参考までに、私が作ったファイルを下に載せておく。
日本語化md-sub.cgi


Majordomoの日本語化・・・(mail)

日本国内でMLを開くときに、メッセージなどが日本語になっている方が便利である。
Majordomoはperlで書かれているのでmajordomoの中のメッセージ部分を自分で日本語訳しながら書き換えられるが、世の中には親切な人達がいらっしゃって、高知大学の菊地さんが作られたのを「Nobさん」が改良して日本語化パッチを公開されている。→ 遂にリンク先がなくなりました。
ダウンロード:1.94.5用パッチ → 遂にリンク先がなくなりました。

これを使って、majordomoにpatchを当てます。

$ su
# su - majordom
$ ls    (majordomoのあるディレクトリーであることを確認)
$ zcat majordomo-1.94.5-jp.patch.gz | patch

これで、メッセージ文は日本語化されたが、EUCコードであるためメールすると文字が読めないので、sendmailに送り込む前にjis(ISO-2022)にする。
このために、jsendmailの名前で以下の内容のスクリプトファイルを作る。

#! /bin/sh
/usr/local/bin/nkf -j | /usr/sbin/sendmail $*

そして、chmod +x jsendmailでjsendmailに実行権限を与えて、majordomo.cfの
$sendmail_commandを以下のように書き換えます。

$sendmail_command = "/usr/sbin/sendmail"; を
$sendmail_command = "/usr/local/majordomo/jsendmail"; とします。

これで、目出度し目出度し。 応答が日本文になります。


2004.12.28

DNSサーバの構築・・・(FreeBSD)

DNSサーバと言っても家庭内で1つのIPアドレスしかなく全てのサービスを1つのサーバで行うより無く、しかもどこかのプロバーダー経由の接続であるから、プロバーダーの提供しているDNSサーバを頼るだけでも事は足りる。
しかし、一応DNSサーバを立てて動作させることとしたがIPアドレスが一つでの運用であるため、専ら自宅内のローカルエリアの設定であり、外にアクセスするためのDomain Nameの解決が主目的となる。
FreeBSDも5.3になって設定ファイルの置き場のnamedbの場所が/etc/namedbより
/var/named/etc/nameddbに変わたが、/etc/namedbにリンクが貼られているので従来通り/etc/namedで作業ができる。
まず最初に./make-localhostとして設定ファイルのlocalhost.revを作る。
あれー、出来ないと思ってPROTO.localhost.revを使って自分で作ろうなどと思ってはいけない(私はやってしまった)。ちゃんとmasterというフォールダ内に出来ている。
次に正引きと逆引きの記述ファイルをつくる。
ファイルの名前は何でも良いが正引きをmyhome.zone 逆引きをmyhome.revとでもして話を進める。

さて、myhome.zoneの中身の例だが、次のように書き./slave Directoryに入れる。

--------------------------------------------
; /etc/namedb/myhome.zone
; host name --> IP address for fam.cx
;
@       IN SOA uls.fam.cx. root.fam.cx. (
1999120500      ; Serial
3600                  ; Refresh
900                    ; Retry
3600000            ; Expires
3600 )                ; TTL
;
IN NS uls.fam.cx.
IN MX 10 uls.fam.cx.
uls                    IN A 192.168.1.5
uls2                  IN A 192.168.1.6
localhost           IN A 127.0.0.1
luna                  IN A 192.168.1.2
soleil                 IN A 192.168.1.4
satoru               IN A 192.168.1.10
nakamura         IN A 192.168.1.11
uls.flets.cds.ne.jp     IN CNAME uls.fam.cx.
----------------------------------------------

サーバのhostnameはプロバイダーから貰ったものとDynamicDNSに登録したのと2つあるのでどちらでも良いようにCNAMEにもう1つの名前を書いておいた。
逆引きのmyhome.revは次のように書き、./slave Drirctoryに入れる。

----------------------------------------------
; /etc/named/myhome.rev
; IP address --> host name for fam.cx
;
@       IN SOA uls.fam.cx. root.fam.cx. (
1999120500      ; Serial
3600                  ; Refresh
900                    ; Retry
3600000            ; Expires
3600 )                ; TTL
IN NS uls.fam.cx.
2       IN PTR luna.fam.cx.
4       IN PTR soleil.fam.cx.
5       IN PTR uls.fam.cx.
6       IN PTR uls2.fam.cx.
10     IN PTR satoru.fam.cx.
11     IN PTR nakamura.fam.cx.
---------------------------------------

最後にname.confを以下のように書く。

------------------------------------------
options {
directory       "/etc/namedb";
pid-file        "/var/run/named/pid";
dump-file       "/var/dump/named_dump.db";
statistics-file "/var/stats/named.stats";
forwarders {
210.254.64.10;
};
};
zone "." {
type hint;
file "named.root";
};
zone "0.0.127.IN-ADDR.ARPA" {
type master;
file "master/localhost.rev";
};
zone "fam.cx" {
type slave;
file "slave/myhome.zone";
masters {
192.168.1.5;
};
allow-transfer {192.168.1/24;
127.0.0.1;};
allow-query {192.168.1/24;
127.0.0.1;};
};
zone "1.168.192.in-addr.arpa" {
type slave;
file "slave/myhome.rev";
masters {
192.168.1.5;
};
allow-transfer {192.168.1/24;
127.0.0.1;};
allow-query {192.168.1/24;
127.0.0.1;};
};
-------------------------------------------------

ここまで、準備が出来たら/etc/rc/confにnamed_enable=”YES”を追加してサーバを
再起動すればDNSサーバが動くはずである。
nslookup www.yahoo.co.joなどとやって、IPアドレスが表示されるか試してみよう。 
また、IPアドレスから名前が引けるかも同様に確認する。


2004.12.25

mail-entry.cgi(自動化成功)・・・(Movabletype)

手動では成功するが、cronだとメールがどうしても拾えないので別手段を講じることにした。
テキストベースのブラウザのw3mの利用です。
以下はその手順

  • abcblogのhome directory内に .forwardの名前でファイルを作り以下の内容とした。

¥abcblog
"| /usr/local/bin/w3m -dump http://hogehge/blog/mt/abc/mail-entry.cgi"

  • 同様にxyzblogのhome ditrectoryにも作成
  • そしてabcblogとxvzblogにメールを出した。

見事に成功した。
メールを受けると直ちに反映されるのもcronで10分毎に処理するよりサーバに負荷も掛からず好都合。
それに、この方法だと何人分でも簡単に作れる。


« Previous | Next »