メイン

2005年9月 2日

blog あずきン 閉鎖のお知らせ

今週をもちまして、本blogを一旦閉鎖することになりました。
多くの方々に支えられて2年もやってきましたが、ここいらで一旦リセット致します。

今までのご愛顧、ありがとうございました。

なお、本blogは9/4頃、参照できなくなります。

連絡先: mega.cc★gmail.com (★=@)

2005年5月31日

blog名変更 「あずきン」をヨロシク!

noblog7.gif →→→ noblog.gif

変えました。

「あずき」はもちろんアレです。

2005年2月21日

ダイナミック・パブリッシングにしてみた


いやぁ、突然雪が降り始めてビックリ。

ということで、ダイナミックパブリッシングに二度目の挑戦です。
色々と不都合がありますね〜。


一番の問題は、次のようなものです。

<MTEntryCategories>
<?php include("http://japo.net/miya/archives/cat_<$MTCategoryLabel dirify="1"$>.html"); ?>
</MTEntryCategories>

ここで、<$MTCategoryLabel dirify="1"$> がinclude実行時に展開されない!
これは以前はSSIのincludeで読み込んでいた部分なので、単にPHPのinclude(あるいはrequire)に置き換えようとしたらダメだった。

これは困った。

[追記]
コメントに書いたように、元々これはアーカイブテンプレートとして作ってあるので、

<MTEntryCategories>
<$MTInclude module="index of category"$>
</MTEntryCategories>
というようにインクルードしてやることで解決!
ヒントをありがとう>岩井さん

2005年2月 1日

Trackback spam

とうとう来ました。
これまでもポツリポツリと来ることはあってその都度削除していましたが、
とうとうまとめて40個以上来ました。

TB spamはちょっと簡単には防げないので、どうするのがいいか思案中。

(MT3ではTB一覧から削除ができるので助かった。これがMT2だったらと思うとぞっとする)

[追記] 再び20個ほど来たので、取り敢えずmt-tb.cgiの名前を変更。

2005年1月25日

スタイル変更

Screenshot.pngとても久しぶりにMTの表示方法を変更しました。

基本は週毎、トップページは最大二週間分の記事が並びます。
トップページから「前の週」を辿る事ができて、以後古いものを順に見て行く事ができます。週の切れ目にナビゲーションのリンクがあります。

週毎のアーカイブの部分は追記部分も一覧で見ることができ、ざっと流し読みする事ができます。

バックグラウンドも少し色気を付けました。:-)

2004年11月17日

Newマーク: より簡単に

新着エントリにマークを付けるのは、以前行ったが、エントリが増えるとコード量が結構なサイズになるのが不満だった。また、コードも冗長だった。 そこで、これを改定した。より簡単に、使い易くなったと思う。 なお、最後のサンプルはMT3.1専用だが、この機構自体はMT2でもMT3.0でも動作する。
JavaScript
これを見ると分かるように、関数CKNには対象となる物の作成(あるいは更新)年月日時分を渡すようにする。あと、何日(duration)間Newマークを表示するかを渡す。Newマークは上記のdocument.write()の中を各人の環境に合わせてほしい。 これを呼び出す側のテンプレートは次のようになる。(以下では、いずれもduration=2日)
エントリの場合(作成日時)
エントリの場合(更新日時=プラグイン必要)
コメントの場合
トラックバックの場合(プラグイン必要)
なお、プラグインが必要なものは、各々のタグで検索等行い、プラグインをインストールする必要がある。
最後に、最近某所で使った動作例(© miya and Meganiste Japon)を載せる。これは、カテゴリ一覧に、そのカテゴリ内に新規エントリがあればNewマークを付ける。また、カテゴリの前の画像をクリックすれば、カテゴリ内のエントリを表示する。エントリが新規のものであればそこにもNewマークを表示する。
実例

SH()は有名なShowHide()である。
ShowHide

2004年11月 8日

ガーン!

MT 3.1のダイナミックパブリッシングを使おうとしたら、予想外なプラグイン等でエラーが出ている。
これは困った。

沢山アクセスしていただいているのに、空のページが表示されたとか、エラーになったとかの方々、申し訳ありません。

現在、個別ページのみ、ダイナミックになってます。それも左右のサイドバーはなし&応急処置でコンテンツの一部も表示できていません。

[追記] コメント書き込みが失敗していました。(not permitted) すみません。(泣きっ面に蜂とはこの事か)

はい、申し訳ありません。私が悪うございました。
perlのプラグインは一切使えないのですね。はいはい。
wrapperを入れるとかすればいいのかなぁ。きっと誰かが作っているだろうね。

ダイナミックパブリッシングは暫く延期します。

2004年10月20日

MT3.11-ja Upgrade

きっと、あちこちで書かれていると思うので、自分のメモだけ。
[2004/10/22更新]

バグ修正
MT3.01-jaを使っていて、MaiLogで(XMLRPC)、あるいはPost2MT(Perl API)を使って投稿するとゴミみたいなエントリができる事があった。また、Perl APIでドラフト(下書き)でエントリを作っているのに、index.htmlに公開されてしまう(individualは存在しない)問題もあって途方に暮れる事もあったが、いずれも直っている。自分のプログラミングが悪いのかと悩んでいたが、MTの問題でした。

以下、メモ。

ダイナミックパブリッシング関係


  • ドキュメントルートに template_cディレクトリを作る事。パーミッションは 0757か。

  • PHPの環境(php.ini)でEUC-jpがデフォルトとなっていると、UTF-8のページがダイナミックページで文字化けする。これは、ページはUTF-8で出力されるが、httpヘッダがEUC-jpで出力されるため。→php.iniでデフォルトを定義しない。

  • 同じく、php.iniでsafe_mode=onになっていると、実行パスを設定しなければエラーになる。includeも同様。→余りにも面倒なので、取り敢えずphp.iniでsafe_mode=offとした。

  • ページがダイナミックだと、当然の事ながらSSIが使えない。PHP流に書き換えればいいのだが、やっかいだな、どれだけあるか調べなければ…。

MT-Notifier関係


  • [MT]/lib/, [MT]/extlib/, [MT]/tmpl/ 下が変更されているので、再インストール後、[MT]/lib/MT/App/Comments.pmを再度書き換えさせる。(MT-Notifier/Configure/Install)

コメントスパム回避関係


  • [MT]/lib/ 下が変更されているので、[MT]/lib/MT/App/Comments.pmを再度書き換える。

  • これをやる直前、コメントスパムが一通来た。油断も隙もない。

2004年10月12日

お願い、他に移って!

Screenshot-1.png二箇所でコメントを書いて遭遇。最近ちょっと見直していた矢先にこうだ。
ダメダメ。

次いで、別の所でも…
Screenshot-2.png
何だか、もう見るなって言われてるみたい。

2004年10月 5日

最近のコメントスパムの傾向

直近のログから抜粋(一部伏せ字)。

>2004.10.04 11:56:36 38.119.107.88 online texas hold em, http://www.online-texas-hold-em.xxxx, top@xxxx.com, 0 banned because comment posted without valid yyyy and zzzz
>2004.10.04 13:45:36 213.172.36.62 home, http://www.buy-ambien-online-top-pharmacy.xxxx/, bushmills2300@xxxx.com, 1 banned because comment posted without valid yyyy and zzzz

先日、コメントスパムが対策をすり抜けて来るので追加対策をしたと書きました。最近のコメントスパムはFORMを読み取ってPOSTして来るようです。
上記、赤字に注目してください。
「0」の物はFORMの入力部を読み取っていますが、でも、それは限られた部分(特定?)だけみたいです。「1」の物はFORMに置いてある入力を全て持ってきているようです。ここまでやられると対処する側も結構キツイものになります。

いつまでこのような事態が続くのでしょう。このようなコメントスパムに反応してクリックし、本当に買う所まで行く人が居るという事なのでしょうか。それが信じられないですが、それが現実にあり、そしておそらく解決できない根本的な問題なのでしょう。

2004年9月23日

コメントスパム対策 again

少し前から徐々に、そして、昨日から今日にかけて多くの(まだ10くらいですが)コメントスパムが対策をすり抜けて来ていますので、新たに対策を強化しました。
これで少し様子を見ます。

この30分くらいの間にコメントしようとしてくれた方、申し訳ありません。エラーになってしまいました。

2004年7月29日

コメントスパム対策[MT3]

Movable Type 3.01D-ja用。
MT2用と同じように、記事のサブジェクトをキーとしてスパムかどうかをチェックします。

[2004/10/22追記]
ここに書いたように、最近のコメントスパムは巧妙になってきていて、一筋縄では回避できない。そのため、9/23に更に回避コードを入れました。**********を使ってダイナミックに*を設定しています。(明記したくないので、ソース等ご希望の方はコメントください)

[追記]
このパッチの主眼点は、
・キーをエントリ毎に替える事で安易なクラックを抑止できる
というものです。

まず、コメントフォームに以下のキーを設定します。

[MT-dir]/lib/MT/App/Comments.pmを以下のように変更します。

$ diff Comments.pm.bak20040729 Comments.pm
135a136,147
> #-- 2004/07/29 miya; reject comment spams
> {
> my $author = $q->param('author') || '';
> my $url = $q->param('url') || '';
> my $email = $q->param('email') || '';
> unless (defined $q->param('tid') && $q->param('tid') eq $entry->title) {
> $app->log("$author/$url/$email banned because comment posted without valid tid");
> return $app->error("comment posting is not permitted");
> }
> }
> #-- end

コメントスパムはMTのシステムログに記録されます。(以下例。改行してます)
2004.07.29 09:03:34 210.xxx.yyy.zzz miya/http://japo.net/miya//mailaddress@example.net 
banned because comment posted without valid tid

MT-Notifier 2.2 [MT3]

特に難しい事はないと思うので、ポインタのみ。

なお、2.2はMT3専用で、MT2には1.4.1を使えとのことです。

MT-Notifier

コメントメールのCRを取る[MT3]

MT3でコメントメール(管理者)の余計なCRを取り除く。

コメントが追加されるとblog運用者にメールが来ますし、MT-Notifierを入れていると登録した人に同様のメールが届きますが、この時、コメントの各行の最後に余計なCR(0x0d、^M)が付いて来ます。

これを取るには、[MT]/lib/MT/App/Comments.pm をハックします。

$ diff Comments.pm.bak20040729 Comments.pm
406c406,410
<     $comment->text($q->param('text'));
---
>     #$comment->text($q->param('text'));
>     # miya
>     my $comt = $q->param('text');
>     $comt =~ s/\r\n/\n/g;
>     $comment->text($comt);

なお、MT2用はこちらです。

2004年7月28日

Movable Type 3.01D-jaにした

取り敢えず、ここのMTを3.01D-jaにしてみました。
結果は良好。様子をみて、良さそうなら個人ライセンスを買おうかな。

ただ、いくつか問題点もあります。
・コメントを(管理者に)メールする際、依然として行末にCRが一個多い。
・「新しいコメントがあったら(ユーザに)メールする」機能は標準ではないので、現在使えません。TypeKeyとの絡みで、簡単には実装できないか!?(できるけど、面倒だな)
・コメントスパム対策としてのTypeKeyは非力。普通のユーザは登録しないでしょう?(してる人もいるとは思いますが) TypeKeyユーザだけを相手にしてるサイトなんてないでしょう? 結局、また別途対策が必要なのではないだろうか。
・エントリの個別リビルドがない。「保存」では最終更新日時が変わるから、私には必要。

[7/30 更新] 上記strike部分は自己解決済み。

2004年5月20日

検索ワード

このblogには食物の話題が多いから食物や店の名前で多くヒットするのは当然として、それ以外でここ一週間の検索ワードを見てみよう。

記念硬貨
東京オリンピック記念硬貨
うむ。確かに書いた。一度だけ。しかし、その一回で1%ものヒット。それも書いて以来ずっとヒットし続けているのはなぜだろう。世の中の人々は記念硬貨情報に餓えているのか?

ふくらはぎ
ふくらはぎが痛い
ふくらはぎである。これは間違いない、ふくらはぎフェチが相当数いるのであろう。しかし、後者はどうなんだ?なんでこんなのでサーチするんだ?検索してなぜ痛いのか知りたかったのか?それくらい痛かったという事だろうか?一件二件じゃないのだが…。

エアコン 世田谷
ワケわかんない。エアコンと世田谷にどういう繋がりがあるというのだ?電器屋さんなら別の探し方があると思う。

ジャングルコング
ラブホ ジャングルコング
仙台 ラブホ
ラブホ 仙台駅
ジャングルコングは仙台の街中、超一等地にあるラブホ ブティックホテル。うん、うん、そういう情報は前もって調べて置かなきゃね。万一の場合に備えてさ。検索してる姿を想像すると微笑ましい。

岩手県
こりゃまた、、目的の情報はあったのだろうか?

仙台 面白い 場所
これは素敵な検索だ。面白い場所があったのかどうか、ぜひ聞いてみたいNo.1。

それ
それは見付かったかな?

楊枝
……。

不思議ちゃん
彼女の事だ。

2004年5月14日

Movable Type 3.0D First Impression

mt3.jpg

取り敢えず、使ってみた。大きく変わった点はないが、コメント関係がTypeKeyに絡む事か。でも、コメントするのにいちいちtypekeyにログインするというのも面倒&余計なお世話なものだな。もちろん、TypeKeyを使わないようにもできるし、TypeKeyを使っても未登録ユーザを許す事も、それを管理者の承認方式にする事もできるのは優れている。ちょっと複雑だけどね。

MaiLogのテストのためにインストールしたが、MaiLogでは特に問題は発生しなかった。
デフォルトのテンプレートはこんな感じ。typekey関係のアイコンが目新しい。これをクリックするとそのユーザのプロフィールが表示されるようになっている。

アーカイブのファイル形式が変わったかな。年月がディレクトリになって、おっと、ファイル名はタイトルを使っているか。。これはカテゴリ名同様、日本語で問題になるね。ディレクトリ内一連番号か日付+時間+一連番号くらいで良かったように思うが。

Milanoさん

2004年4月25日

Mapoint プラグイン


ダウンロード Mapointプラグイン Updated: 2004/4/27: version 1.0.2 released Updated: 2004/4/26: version 1.0.1 released テンプレート例(↑のように出力するテンプレート例=実際にテストで使っているもの) [quote][code]
撮影日時: <$MTMapointDateTime$>
場所: <$MTMapointLocation$> (<$MTMapointPoint type="N" format="北緯%1度%2分%3秒"> <$MTMapointPoint type="E" format="東経%1度%2分%3秒"> <$MTMapointPoint type="A" format="(標高%1m)">)
撮影データ:
<$MTMapointExif$>
[/code][/quote] Movable Type: Mapoint プラグインについて 本プラグインは、画像に含まれるExif情報を元にしたデータをエントリから 取り出すためのプラグインです。 [code] ◎条件 ・Movable Typeの各エントリのKeywords項目に、以下のものが含まれている場 合に有効となります EXIF={..} Exif情報のうち、有効と思われる情報。GPS情報は含まない。 DATE=yyyy/mm/dd TIME=HH:MM:SS Exif情報のうちDateTimeOriginalを取り出したもの。 WGS84=aaa.bbb.ccc.dd/eee.fff.ggg.hh/ii (各digitの長さは適当) GPSの経緯度情報が含まれていれば、単独で取り出される。 aaa.bbb.ccc.dd: 緯度 eee.fff.ggg.hh: 経度 ii: 高度 (含まれない場合がある) ・上記情報が複数ある場合、最初に見付かった情報が取得されます ・なお、現在上記情報を出力するのは、MaiLog(http://mailog.japo.net)だけ ですが、他の方法で同様な出力をすれば、このプラグインはそのまま利用で きるはずです。また、MaiLogの古い形式での出力にも対応しています。ですか ら、これまでMaiLogで出力したエントリもそのまま使えます。 ◎インストール方法 ・Mapoint.pl を[MTがインストールされているディレクトリ]/plugins/ に置い てください ◎プラグインを実行させるのに必要なパッケージ Jcode URI::URL LWP::Protocol::http LWP::UserAgent ◎利用方法 ・コンテナタグ Exif情報を扱う宣言 同、終了 ・条件タグ DATEキーが存在すれば以下を実行 同、終了 Exif情報が存在すれば以下を実行 同、終了 GPS情報が存在すれば以下を実行 同、終了 ・タグ <$MTMapintPoint type={N|E|A} format=string $> 経緯度情報出力 type=N 緯度を出力 type=E 経度を出力 type=A 標高を出力 format=string stringに含まれる %1, %2, %3 (高度の場合は%1のみ) がそれぞれの度、分、秒に置き換えられる。 例 "北緯%1度 %2分 %3秒" 標高の場合は %1は標高値で、()で括られた場合で、 標高値が存在しない場合は出力されない。 例 "(標高 %1m)" <$MTMapointMap$> @NAVIの地図URLを出力する。 <$MTMapointLocation$> @NAVIから得た地名を表示する。(日本語はPublishCharsetに従う) <$MTMapointDate$> 画像のDateTimeOriginalのうち、日付を出 力する。 出力フォーマットは以下の通り。 yyyy/mm/dd <$MTMapointDateTime$> 画像のDateTimeを出力する。 出力フォーマットは以下の通り。 yyyy/mm/dd HH:MM:SS <$MTMapointExif convert_breaks="{0|1}"$> 画像情報を出力する。 各項目は改行で区切られている。 convert_breaks="0": 改行をそのまま出力。 convert_breaks="1": 改行を
に置換する。 [/code] ◎EUC blogについて Locationの出力で日本語を使いますが、EUC blogでも文字化けしないようプラグイン内部でPublishCharsetを元に文字コード変換を行います。 ◎問題の報告 ・何か問題が発生した場合は、 miya@japo.net までご連絡ください。 できる限り対応しますが、保証するものではありません。 ◎作成者 Nobuhiro Miyatake Copyright (c) 2004 Nobuhiro Miyatake ◎本プラグインを利用したことによって、利用者が何らかの不利益を被っても、 本プラグイン作者は一切の補償は致しません。 ◎本プラグインは Copyright表示を残せば、改変利用する事ができます。 ◎本プラグインは個人での利用に限り無料で使えます。

2004年4月21日

コメントスパム対策

コメントスパムが少し多くなってきたので、Movable Typeのコメントスパム対策をやってみました。
副作用が心配なもの(MTBlackListなど?)は除外して、オーソドックスな方法で入れてあります。
(でも、ちょっと凝った部分もあります)

早くスパムが来ないかなぁっと心待ちにしてるのですが、こういう時に限ってなかなか来ないので先に公開します。(笑)

まず、テンプレートのコメントフォームに以下を追加します。
[quote][code]
[/code][/quote]
これは、要するにコメントを投稿する際にパラメータとして記事のタイトルを渡しますよということです。
Individual Entry Archive, Comment Listing, Comment Preview, Comment Errorの四箇所に入れます。
これを入れたら、Individual Archiveの再構築が必要になります。(古いエントリに反映させるため)

次に、[MT]/lib/MT/App/Comment.pm に以下を追加します。sub post の中で、$entry を得た直後になります。
(行番号は少しずれているかも知れません)

[quote][code]69,81d68
< #-- 2004/04/20 miya; reject comment spams
< {
< my $uip = $app->remote_ip;
< my $author = $q->param('author') || '';
< my $url = $q->param('url') || '';
< my $email = $q->param('email') || '';
< unless (defined $q->param('tid') && $q->param('tid') eq $entry->title) {
< $app->log("$uip/$author/$url/$email banned because comment posted without valid tid");
< return $app->error("comment posting is not permitted");
< }
< }
< #-- end
[/code][/quote]

なぜmt-comments.cgiじゃないかと云えば、エントリ内容(タイトル)の参照や標準のロギングを使いたかったからです。
タイトルをパラメータにしたのは、日本語である(ことが多い)のと、毎回異なる(だろう)といった事からです。

ログ(メインメニューの「Movable Typeのログ確認」)には以下のように表示されます。
[quote][code]2004.04.21 01:47:44 210.zzz.xxx.yyy
210.zzz.xxx.yyy/miya/http://japo.net/miya//XXXXXX@japo.net
banned because comment posted without tid (折り返しています)
[/code][/quote]

2004年3月21日

フォトライブラリ始めました

n-photo.jpg何度かやろうとしてその都度面倒で挫折していたフォトライブラリを懲りずにまた始めました。
今度はQuixotic PixelsMaiLogとの連係でとにかく簡単にエントリできるようにしています。
興味ある方がいらっしゃれば、必要な情報を公開していきます。

2004年3月15日

固定リンクの変更


今までデフォルトのシーケンス番号にしていた固定リンクを変更しました。アーカイブ設定で、individual entryのテンプレートを次のようにしました。
<$MTArchiveDate format="%Y%m%d_%H%M%S" dirify="1"$>.html

古いアーカイブをどうするかという問題がありましたが、簡単解決法により解決しました。
つまり、「何もしない」です。今までのファイルはアーカイブに残ってますので、そのままにしておきます。
一部、メインインデックスにあるものだけは、新しいものに変更しました。

これで何か不都合があるのでしょうか? あれば教えてください。お願いします。

この作業を行う前、同じ時間にしてあったエントリをいくつか時間を変更しました。
その際、一括編集モードで行ったのですが、あることに気づきました。
そう、例えば20個を表示して、そのうち数個のエントリを編集して保存すると……
20個全部の更新日時が変わってしまいます!! そりゃないよ〜

前に、何故か更新日時が変わるエントリがあって、不思議な思いをしていたのですが、その疑問も解消です。
(嬉しくない…)

ということで、何十個かのエントリに旗が立ってますが、それは気のせいです。(泣)

2004年3月 3日

アーカイブは日時順に

今まで、メインもアーカイブも新しいもの順(新しいものが先)にしていたが、やはり読み易さを考えると、アーカイブ系は古いもの順の方がいい。
ここ(noblog)では続き物はほとんどないので、どうでもいいと云えばどうでもいいんですが、一応考えてるんだぞと宣言しておきましょう。(笑) 脈脈と幾つかの話題が繰り返し続くようなサイトではぜひこうしていただけたら嬉しい(読み易い)なと思います。

メイン=新しい順(sort_order="decend")
一覧(全記事、カテゴリ内全記事)=新しい順
アーカイブ(daily, monthly, category)=古い順(sort_order="ascend")

というように変更してみました。

こういうのが簡単に変えられるのがblog系(CMS)システムの良いところですね。

ps. ついでに、今までindividual以外では本文を隠した状態で表示してましたが、アーカイブ系では全て表示に変えました。やっぱりこの方が読み易いですね。

2004年2月27日

画像アップロード時のHTML

備忘録 画像をアップロードした際に生成されるHTMLを使い易いように修正。 [quote][code][MT]/lib/MT/App/CMS.pm [miya@mace App]$ diff CMS.pm.orig CMS.pm 1406c1406 < my $link = $thumb ? qq() : "View image"; --- > my $link = $thumb ? qq() : "View image"; 1408c1408 < $link --- > $link 1414c1414 < $fname --- > $fname 1418c1418 < $fname --- > $fname [/code][/quote]

2004年2月14日

バレンタインTB

バレンタインデーですね。blogの世界ではやっぱりバレンタインデーには日頃気になっているあの人/サイトに告るTBやコメントというのが流行っているのでしょうか?そういう一日があるのも面白いよね。(笑)

sendai-style.net仙道さんからTBとコメントを貰ったのでサイトを見させてもらうと、その気の効いた内容には笑ってしまいました。
ぜひ次は体育館の裏に呼び出してください。って、男同士じゃや〜よ。;-)

2004年2月 7日

テンプレートの外部ファイル化

備忘録


これはMTのテンプレートをデータベースだけでなく、外部にファイルとしても持つ方法です。
これを行うと、MTの管理ページでの編集はもちろん外部ファイルにも反映されます。また、外部ファイルをエディタ等で編集し、その後MTの管理画面でテンプレート編集やRebuildなどを行うとデータベースの方にも反映される。両方向のSYNCが成されるわけです。

設定は、左の写真のように、テンプレート編集画面で、「テンプレートにリンクするファイル」にファイル名を記述するだけです。注意しなければならないのは、ファイル名だけを書くとメインインデックスが書き出される位置、つまりMTのドキュメントルートに置かれてしまいます。これを避けるには、絶対パス(フルパス)で書くのがいいでしょう。Webで常時公開するのでなければ自分のホームディレクトリなどにディレクトリを作って、そこを指定するといいでしょう。

右の写真はこうして作成されたテンプレートのファイル一覧です。
対象となるテンプレートは、「テンプレートの編集」で見られる全てのテンプレートです。

一種のバックアップにもなりますし、設定も簡単なので、一度設定しておくことをお薦めします。

2004年2月 6日

FilterCategories Plugin

カテゴリリストで、特定のカテゴリ(もしくはカテゴリエントリ、カテゴリアーカイブ)を表示しない、あるいは、特定カテゴリだけを表示するプラグイン。 ソース: FilterCategories 参考: CROSSBREED 特定のカテゴリを表示しないプラグイン noblogではトップページ右下のカテゴリ別エントリの表示で使っています。常時更新のないMOE-SetagayaとMOE-Shibuyaはここにはある必要がありませんので、ここではこの二つのカテゴリを除外しています。これにはexcludeパラメータを使用します。 [quote][code] 〜 〜 [/code][/quote] noblogの左サイドでは、特別にMOE関係を表示しています。これにはincludeパラメータを使用します。 [quote][code] 〜 [/code][/quote] カテゴリ一覧ではexcludeで除外しています。 [quote][code] [/code][/quote] このMTFilterCategories プラグインは、MTCategoriesコンテナーの機能を補う形で実装されているので、利用し易いと思います。

2004年2月 5日

BlogPeople or MyblogList?

or ?
以前も悩んだ事だけど、最近またBlogPeopleが遅い。遅いと自分のページが開くまでに時間がかかる。もちろん、遅いのを見越してなるべく最後に表示されるようにしているので、実害はあまりないが、気持ちが悪くストレスになるのは事実。

MyblogListは目立ったトラブルもないし、非常に速くていいのだが、カテゴライズして表示する事ができない。このカテゴライズするのは、やはりリンク数が増えてくると、必要でしょう。
BlogPeopleはカテゴライズできて、例えば「Sendai Link」といったようにタイトルを付ける事ができる。

私の場合、RSSリーダはほとんど使わないので、BlogPeople一本にしても本当はいいのだが、遅いのに耐えられるか、、悩ましい。

結局、次のようにすることにした。
・常時表示はBlogPeopleでカテゴライズしたもの
・MyblogListは隠して表示(変な言い回しだ..)
・「ListMe」は両方常時表示

表示はまたshowhideを使うことにしよう。
BlogPeopleのカテゴライズとMyblogListからの追加は追々やる。


参照:
VANILLACHIPS リンクリストをどう使うか?
らぐななな BlogListの使いわけ

2004年2月 4日

アーカイブの分割表示

備忘録 アーカイブの分割表示を行ったので、記述しておく。 Plugin: MTPaginate まず、「BLOGの設定」ー「アーカイブの設定」にて、「アーカイブファイルのテンプレート」にファイル名の規則を記述する。 noblogの場合、以下のようにした。 dailyアーカイブ: <$MTArchiveDate format="%Y_%m_%d" dirify="1"$>.php monthlyアーカイブ: <$MTArchiveDate format="%Y_%m" dirify="1"$>.php カテゴリアーカイブ: cat_<$MTArchiveCategory dirify="1"$>.php 例えば、 dailyの場合、2004年2月4日のアーカイブファイルは 2004_02_04.php となる。 monthlyの場合も同様に 2004年2月のアーカイブファイルは 2004_02.php となる。 カテゴリ trip のアーカイブファイルは cat_trip.php である。 次にテンプレートの変更である。 ここは各blogに合わせることになる。要点をquoteしておいた。 まず、カテゴリアーカイブテンプレート。 [code]
[quote] [/quote] <$MTEntryTrackbackData$>

<$MTEntryDate format="%x (%A)"$>

">
<$MTEntryTitle$>  [<$MTCategoryLabel$>]
<$MTEntryBody$>
[Edit] <$MTEntryDate format="%Y/%m/%d %H:%M"$> Permalink | Comments (<$MTEntryCommentCount$>) | TrackBack(<$MTEntryTrackbackCount$>)
TB URL: <$MTCGIPath$><$MTTrackbackScript$>/<$MTEntryTrackbackID$>
更新: <$MTLastModified format="%x (%A) %H:%M"$>
 
[quote]<$MTPaginateSectionBreak$> [/quote]
[quote]
[/quote]
[/code] 次にDate-Basedアーカイブのテンプレート。これはdailyとmonthly共通である点に注意が必要であろう。 [code]
[quote] [/quote] <$MTEntryTrackbackData$>

<$MTEntryDate format="%x (%A)"$>

">
<$MTEntryTitle$>   [<$MTCategoryLabel$>]
<$MTEntryBody$>
[Edit] <$MTEntryDate format="%Y/%m/%d %H:%M"$> Permalink | Comments (<$MTEntryCommentCount$>) | TrackBack (<$MTEntryTrackbackCount$>)
TB URL: <$MTCGIPath$><$MTTrackbackScript$>/<$MTEntryTrackbackID$>
更新: <$MTLastModified format="%x (%A)%H:%M"$>
 
[quote]<$MTPaginateSectionBreak$>[/quote]
[quote]
[/quote]
[/code]

2004年1月31日

Rebuild @TB & Comment

備忘録 noblogでは各記事にCommentとTBを記述しているが、Commentの場合はmain indexと該当エントリがrebuildされるが、TBを受信してもmain indexしかrebuildされないので、ここに反映されない。そのため、[MT]/lib/MT/App/Trackback.pmに以下を追加しておく。 [quote][code] require MT::Blog; my $blog = MT::Blog->load($blog_id); $app->rebuild_indexes( Blog => $blog ) or return $app->_response(Error => $app->translate("Rebuild failed: [_1]", $app->errstr)); [b]# miya 2004/1/29: rebuild particular entry if ($entry) { $app->rebuild_entry(Blog => $blog, Entry => $entry) or return $app->_response(Error => $app->translate("Rebuild entry failed: [_1]", $app->errstr)); } #[/b] if ($app->{cfg}->GenerateTrackBackRSS) { [/code][/quote] ボールドの部分(Trackback.pmの218行目付近)が追加したコードである。

2004年1月26日

QuickCodeを使う

quoteをする時、通常の文ならいいがコードなんかの場合、行頭の空白が消えてしまったり、フォーマットが崩れたりしていやらしかった。<PRE>を使うと、[i]Convert Line Beaks[/i]の際に改行と<BR />が二重に入ってしまって不都合だった。 そこで使うのが、QuickCode Pluginである。QuickCodeのcodeタグに囲まれた部分は[i]Convert Line Beaks[/i]の場合も改行が<BR />に変換されないし、行頭の空白も消えたりしない。 QuickCodeをインストールすると、エントリの作成時に[i]Convert Line Breaks[/i]や[i]none[/i]と同時に[i]Quickcode[/i]が現れる。ここで[i]QuickCode[/i]を選択すると、QuickCodeの呼び出しタグが有効になる。 例えば、これのコード部分はQuickCodeを使ってみた。 (quoteタグとcodeタグをネストして使っている。quoteタグはblockquoteに変換される) インストールはquickcode.plを [MT]/plugins/ ディレクトリに置くだけである。 使ってみて、難点は、プレビュー時に反映されないことである。 QuickCode 1.02

2004年1月23日

ブラウザ依存

CSSがブラウザの違いによって挙動が異なるのは良く知られいるが、まさか自分がこんな大変な目に会うとは思ってもみなかった。

発端は、このnoblogがMac(OS X)のIEでサイドの複数のブロックが左上にゴチャっと重なってしまった事だった。
これを直すべくごちゃごちゃやってたら、Safariでもとってもおかしな現象が現れているのが見付かった。

色々と調べて行くと、<div>と</div>がちゃんと対応していなかったり、挙動の異なるタグが使われていたりといったHTMLタグのコーディング問題や、CSSのclassとid問題、ブラウザ依存の根が深そうな問題が幾つか発見された。

苦節4時間の奮闘の結果、概ね正常に表示はされるものの、上記IEとSafariでは未だに若干おかしい部分がある。
通常時はMozillaしか見ていないので、全然気づかなかった。Mozillaは結構変な物もそれなりに表現してくれるようなので、良いんだか悪いんだか。。

あと、New!マーク(★)がちゃんと表示されないというJavascriptのブラウザ依存の問題も見付かった。これは比較的簡単に直せたが、いずれにせよ、ブラウザ依存は困ったもんだ。

2004年1月18日

101Weblogでコメント

101Weblogでコメントを書くと Internal Server errorとなってしまいます。Trackbackはどうかな?

北斗星(左)には一度は乗りたいと思ってますが、まだ実現できていません。乗ってみたいな〜。もちろん、カシオペア(右)にも乗りたい!

2004年1月15日

コメントメールのCRを取る

コメントが追加されるとblog運用者にメールが来ますし、MT-Notifierを入れていると登録した人に同様のメールが届きますが、この時、コメントの各行の最後に余計なCR(0x0d、^M)が付いて来ます。

これを取るには、[MT]/lib/MT/App/Comments.pm をハックします。

[MT]/lib/MT/App/Comments.pm

186c186,189
< $comment->text($q->param('text'));
---
> my $comt = $q->param('text');
> $comt =~ s/\r\n/\n/g;
> $comment->text($comt);
> # $comment->text($q->param('text'));

これでOkです。
つまり、186行目の
$comment->text($q->param('text'));

my $comt = $q->param('text');
$comt =~ s/\r\n/\n/g;
$comment->text($comt);
にするということです。

WindowsやMacのメーラだと表示されないかもしれませんが、linuxのmewだと表示されて鬱陶しいのでこうしました。
お試しを!

MT 2.66 upgrade

早速アップデートしました。
(Milano::Monologさん、いつもありがとうございます)

今回のアップデートは、コメントSpam/Flooding対応です。

quoted from: movable type home page

In recent weeks, open comment systems, and Movable Type weblogs in particular, have become a target for comment spam and comment flooding (automated scripts that send many comments at a time to a weblog entry).

変更点

We've included a throttling measure so that comments from the same IP address can only be posted every N seconds, where N is configurable (documentation on the setting that controls N). We've also added a measure to automatically ban an IP address based on an abnormal number of comments from the same address in a short period of time. Of course, there are no perfect defenses, and if you're truly concerned about the comments on your weblog, the best defense is prevention by closing old comment threads.

最後のくだりは、何か便利なツールがないと難しいのではないでしょうか。

もう一つ。

Also in 2.66, we've changed the behavior of <$MTCommentAuthorLink$> to use redirects when linking to URLs given in comments. The goal of this is to defeat the PageRank boost given to spammers by posting in the comments on a weblog.

MT-Notifier導入

MT-Notifierプラグインを導入しました。

quoted from: alfabeatさん
例えば「あそこのBlogのコメント書いたけど返信あったのかな?」とか思ったりしたことありませんか? そんな貴方にコメント返信お知らせ機能を設置いたしました。

先達の皆さんのお蔭で、無事インストールできました。

StorableはCPANで入れました。
% perl -MCPAN -e shell
cpan> install Storable


参照
DON't BACK DOWN(作者)さん
alfabeatさん
eblogさん

2004年1月 8日

Newマーク

Updated! 1/15 checkNew()に日付を設定しておく際、08とか09が八進数と見られ、警告が出るのを修正。'08'や'09'というようにアポストロフィーを付けた。
Updated! 1/12 Newマークを付けておく期間を指定できるようにした
各エントリに「New!」マークを付けたいと思いませんか? MTの場合、記事の投稿時に静的HTMLが作成されるので、ダイナミックに判断させるのはなかなか難しい。 とはいえ、JavaScriptを使えばできるかなと。 方針は以下の通り。
・ファイルの投稿時刻(MTEntryDate)よりも最終更新時刻がいい。 ・サーバに負荷を掛けたくない。
これに従うと、(MTインストール時に付いて来る?)MTLastModifiedを使うと良さそうだ。 この値をHTMLビルド時に保持し、JavaScriptがダイナミックに参照して、最終更新時刻から現在まで指定された日日間未満なら更新マーク(New!とか)を付ける。 最終的に出来たのは、以下の通り。 これは、与えられた年月日時分(最終更新時刻)と現時刻を比較して、指定された日日間未満なら予め指定されている≶span id=UC〜 style="display:none;〜">のスタイルdisplay要素をinlineとして表示する。48時間以上経過していたらnoneとして表示しない。 [quote] <script language="javascript" type="text/javascript"> <!-- function checkNew(id, y, m, d, hh, mm, duration){ var spid = id; if( document.getElementById ) { if( document.getElementById(spid).style.display ) { var fileDate = new Date(y,m-1,d,hh,mm, 0); var nowDate = new Date(); var days = Math.floor((nowDate.getTime() - fileDate.getTime())/(1000*24*60*60)); if (days < duration) { document.getElementById(spid).style.display = "inline"; } else { document.getElementById(spid).style.display = "none"; } } } } //--> </script> [/quote] さて、上のJavaScriptを呼び出す方は以下のようにする。 [quote] <span id="UC<$MTEntryID$>" style="display:none;color:#f00;">★</span> <script language="JavaScript" type="text/javascript"><!-- checkNew("UC<$MTEntryID$>",<$MTLastModified format="'%Y','%m','%e','%k','%M'"$>,2);//--> </script> [/quote] <span>のidはユニークにするため、UC+エントリIDとしている。後は、checkNewの呼び出しパラメータとして、予めこのエントリの最終更新時刻を設定しておく。これはエントリの追加、更新をすれば固定になる。最後の2は二日間を表す。 これで、現時刻が最終更新時刻から二日(48時間)未満の項目にはマークが付きます。 お試しを! [2004/10/4追記] 時間単位にしたいという場合。(例えば、12時間) [quote] <script language="javascript" type="text/javascript"> <!-- function checkNew(id, y, m, d, hh, mm, duration){ var spid = id; if( document.getElementById ) { if( document.getElementById(spid).style.display ) { var fileDate = new Date(y,m-1,d,hh,mm, 0); var nowDate = new Date(); var days = Math.floor((nowDate.getTime() - fileDate.getTime())/(1000*60*60)); if (days < duration) { document.getElementById(spid).style.display = "inline"; } else { document.getElementById(spid).style.display = "none"; } } } } //--> </script> [/quote] [quote] <span id="UC<$MTEntryID$>" style="display:none;color:#f00;">★</span> <script language="JavaScript" type="text/javascript"><!-- checkNew("UC<$MTEntryID$>",<$MTLastModified format="'%Y','%m','%e','%k','%M'"$>,12);//--> </script> [/quote]

2004年1月 6日

post2mt v1.2.1

post2mtはメールからMTにエントリするプログラムです。
色んな環境のインストールは不要です。

新たに追加となった機能(v1.2.1)

・au端末での画像回転用リンクの付与。(オプション)
・テキストのTEXT_MOREへの追加。(オプション)
・環境設定のテキストファイル化
・カテゴリ名の動的な指定。(オプション)
・画像の位置指定(とalign指定)。(オプション)
・MTのPublishCharsetの指定。(オプション)
・ドラフト(下書き)としてMTに投稿する指定。(オプション)
・画像ファイル名はオリジナルのファイル名を出来るだけ尊重するようにしました。但し、日本語ファイル名は残しません。


ダウンロード

最新版をダウンロードしてください。

post2mtの環境設定ファイルは以下のようになります。(post2mt.cfg)
これをwwwからアクセスできない場所に置くのがいいでしょう。
もちろん、post2mt.pl自体もwwwからアクセスできない場所に置くのが望ましいです。


# post2mt.pl 環境ファイル
# このファイルの日本語文字コードはEUCであること!

sub init_config
{

my %PTCFG = (
BLOG_NAME=>"blog", #blog名
BLOG_UNAME=>"username", #blogユーザ名
BLOG_CNAME=>"category", #blogカテゴリ名
IMG_DIR=>"/path/to/image/dir", #画像ディレクトリ
IMG_URL=>"http://url/to/image/dir", #画像ディレクトリURL
MAX_IMG_W=>"288", #画像サムネイル化幅
MAX_IMG_H=>"352", #画像サムネイル化縦
AU_ROTATE_URL=>"http://url/to//rotate.gif",
#auでファイルサイズが大きい時回転画像を用意する
#その際表示させる画像
#これを指定しないと回転画像は用意しない
TEXT_MORE=>1, #5行以上空行があればそれ以降をtext_moreに入れる
CHARSET=>"utf8", #MTのPublishCharsetと同じもの(utf8/euc)
);

return ($PTCFG{BLOG_NAME},$PTCFG{BLOG_UNAME},$PTCFG{BLOG_CNAME},
$PTCFG{IMG_DIR},$PTCFG{IMG_URL},$PTCFG{MAX_IMG_W},$PTCFG{MAX_IMG_H},
$PTCFG{AU_ROTATE_URL},$PTCFG{TEXT_MORE},$PTCF