> > MovableType

MovableType

MovableType の管理パスワードを忘れたけど何とかなった

大変恥ずかしながら、MovableType の管理パスワードを忘れてしまってえらいことになったのでその顛末を記録。

MovableType の管理パスワードって一度記憶させると期限1年のcookie が発行されるみたいで、何も考えずそのまま1年間パスワードを入れずに運用するとパスワードを忘れてしまう、ということが1年前にありました。えぇえぇ。で、その時も何とかパスワードを強制リセット(方法は後述)、それからあっという間に1年がたち、そしてまたパスワードを忘れた。何故だ。

...確か昨年、教訓として(自分的に) 大変分かりやすいパスワードを付けたつもりだったのですが、「確かこれだったはず...」 を数種類試してみるも、何故かことごとく弾かれてしまって、こんな時のパスワードリセット!! とリンクをクリックしたものの何故か画面が遷移せず、リトライしまくってとうとうロックアウトされる始末。

幸い、システムとMySQL の管理パスワードは分かる状態なので、ロックアウトされてもそれは何とか解除できたのですが、もちろんそれは根本解決ではないわけで。


こういうとき、ググるとまず出てくるのがMT-Medic ってやつなのですが、MT5 でも動いたという情報があったりするものの、残念ながらうちの環境では動かず。

で、前回(1年前) は「別のMT 環境を作成し、パスワードのハッシュ文字列をそのままコピーして強制的にパスワード変更」 て方法を使ったので今回も同様に...と思ったのですがこれも失敗。何故だ。ちなみに1年前の環境はMovableType 5.14、今回はMovableType 5.2.2(微妙に古い) でした。推測ですが、おそらく、途中のどっかのバージョンで環境固有の何かを使ってハッシュ化するようになったっぽい? そのほうがより安全なので良いのだけど。

静的構築なのでいちおうhtml ファイルも残っているし、今あるものは現状のまま、新たに作り直すか、折角ならWordPress でやるか、などと考えてたのですが、もう一生パスワードが分からない、というのも大変に気持ち悪い。ということでもうちょっと何とか出来ないかと、まずはMovableType 5.2.2 のファイルを上書きしてみたのですがパスワードリセット復活せず。

次に、5.2 系では最新のMovableType 5.2.9 で同様にファイル上書きしたところ、無事パスワードリセットのページを開くことが出来、、登録していたメールアドレス宛にメールが届きました。...しかし、アップグレード処理はログインしないと進めることが出来ず、アップグレード処理が終わらないことにはパスワードリセットのページも開かない、という堂々巡りが発生し、結局またMovableType 5.2.2 に戻してパスワードリセット、でまたMovableType 5.2.9 にアップグレード、という泥縄な方法で何とかなりました。

今回得た教訓は、パスワードリセットの動作確認(ちゃんと登録メールアドレスに届く、パスワード変更が出来る) は必ず事前にやっておくこと、これが動かなかったら完全に詰む。ということ。皆様もお気を付けて。

Movable Type 5.04 にアップデート

遅ればせながら、アップデートしたのでメモ。といっても小粋空間さんの記事どおりにバックアップとってフォルダリネームしてフォルダ作成してコピーしてアクセス権修正してOK、という簡単なものです。

あと、実はアップグレードサボってて5.02 のままだったので、その差分もメモ。ありがとうございます。

マイクロソフト スキルチャージプログラム のその後

マイクロソフトのスキルチャージプログラムに参加 してから早1年。約束通り、1年無事にWindows Web Server 2008 を運用できました。

Windows Web Server 2008 にActive Perl、PHP、MySQL などをインストールし、IIS 7 上でMovableType 4(MT4) が動くようにあれこれやってたわけですが、どうも、IIS はPHP はともかく、Perl の動作が非常に重く、MT4 の管理画面を開いたりするのも結構待たされる感じでストレスが。いやそもそもWindows Web Server 2008 自体の動作が重いのでは? と、実はその辺もこっそりいじってみたりもしたんですが改善に至らず。

そんなこんなで(ついったーもあることだし) こっちの更新も必要最低限、という感じとなってしまった1年でした。


で、まぁ1年たったことだし、ということで以前のCentOS 環境に戻しました。現在の環境は、Citrix Xen Server 5.5 上で動いているCentOS 5.4 にMovableType5(MT5) をインストールしています。MT5 になってから、どうもダイナミックパブリッシングが不安定みたいで、色々設定確認したものの解決に至らなかったので、やむなくスタティックで構築してます。全体を再構築すると12分くらいかかるので、色々と不本意ながら仕方なし。

というわけでhp ML110 G5 はメモリとかHDD 増強し、Citrix Xen Server のホストとして役立てるつもり。あと折角作ったWindows Web Server 2008 環境も、P2V かなんらかの方法でCitrix Xen Server 上に持って行く予定。

Movable Type 4 標準の「クイックポスト」 ブックマークレットを変更する

これまで使っていた投稿用ブックマークレットは使えなくなり、そしてMovable Type 4 標準の「クイックポスト」 ブックマークレットは、標準のままではちょっと使いづらかったので変更してみた。といってもあまりたいしたことはないのだけど、やはりこれがないと不便なので。

ブックマークレットを使用したページのタイトルとアドレスを以下のような感じで本文に自動的に入れてくれます。また、選択している部分のテキストをblockquote で囲んでくれます。


<ul>
<li><a title="リニューアルしました | alectrope" target="_blank">http://alectrope.jp/mt/archives/2008/02/14/server_renewal</a><br />リニューアルしました | alectrope</li>
</ul>
<blockquote>年末ぐらいから本格的に細々とサーバ入れ替え作業を進めていたのですが、ある程度目処が付いたのでサーバ入れ替えと同時にMT4 にアップグレード(実質新規インストールですが) しました。詳細はまた改めて。</blockquote>

標準のブックマークレットはこういう感じ。


javascript:d=document;w=window;t='';if(d.selection)t=d.selection.createRange().text;else{if(d.getSelection)t=d.getSelection();else{if(w.getSelection)t=w.getSelection()}}void(w.open('「mt.cgiまでのパス」?__mode=view&_type=entry&blog_id=1&qp=1&title='+encodeURIComponent(d.title)+'&text='+encodeURIComponent(d.location.href)+encodeURIComponent('<br/><br/>')+encodeURIComponent(t),'_blank','scrollbars=yes,status=yes,resizable=yes,location=yes'))

前半部分、「...~&qp=1」 までを流用します。


javascript:d=document;w=window;t='';if(d.selection)t=d.selection.createRange().text;else{if(d.getSelection)t=d.getSelection();else{if(w.getSelection)t=w.getSelection()}}void(w.open('「mt.cgiまでのパス」?__mode=view&_type=entry&blog_id=1&qp=1

「&title=~...」 以降を以下のものに置き換えます。


&text='+encodeURIComponent('<ul>\n<li><a title="')+encodeURIComponent(d.title)+encodeURIComponent('" target="_blank">')+encodeURIComponent(d.location.href.replace(/(\?|&)(ref|from|f)=(rss.*|atom)/,''))+encodeURIComponent('</a><br />')+encodeURIComponent(d.title)+encodeURIComponent('</li>\n</ul>\n<blockquote>')+encodeURIComponent(t)+encodeURIComponent('</blockquote>\n\n'),'_blank',''));

Windows XP SP2 + Firefox 2.0.0.12 で動作確認しています。

テキストを選択していない場合でもblockquote タグが表示されるのがちょっと余計な感じですが、とりあえずはこれで。

そうそう、URL の末尾に「?from=rss」 みたいなのが付いている場合は自動的にそれを消すようにしてたりしてます。

Movable Type 4 正式版リリース

βとかRC とかロクにテストしないうちに(やる気がなかったとも言う) 正式版がリリースされました。

個人、自分のサーバ、ユーザも自分一人、非営利(アフィリエイトはある)、なので無償ライセンスを選択、早速ダウンロード。

これですべての条件はクリアだ…!! あとはやる気出してとっととサーバ移転しないとね。この夏こそは…!!

Movable Type 4、まもなくβテスト開始

Movable Type 3 にもまだアップグレードできずに2.661 のままだってのにもう4 ですか。いっそのこと4 で 新たに構築してしまおうか。…といってもデータだけは引き継ぎしたいんだけどどうなんだろう。βのうちはそういうツールはまだないのかも。

まだ今のところダウンロードもできないようなので、のんびりやりますかねー。

久しぶりのコメントspam 対策

MovableType を使っている以上、避けられないのがコメントspam やトラックバックspam の類。これまで、色々と対策してきました。

いい加減、MovableType 2.661 から3.x へバージョンアップをした方が…というのは重々承知の上で、サーバ移行までの時間稼ぎができればいいや的に対応してました。この2年くらいは、コメントspam は"mt-spamstop" に、トラックバックspam は"mt-spamstop_tb" にそれぞれキーワードやURL などをブラックリストで記述していて、MovableType のログで確認しても効果がある感じなのですが、最近、それをすり抜けているコメントspam があるような気がしてきました。

これまでは、日本以外のサイトからのアクセス / コメント は一切弾かない方針でいましたが、そもそもこのサイト自体日本語のみだし、変なspam がある以上、もう、制限しちゃってもいいよね?? ということで制限掛けてみた。日本以外からのコメント、トラックバックを禁止し、コメント本文に日本語が含まれていない場合はコメント投稿できないようにしました。

で、これでやれやれ…、と思っていたらまたコメントspam が!! しかもコメントの受付を「締め切り済み」 にしていたエントリーに。アクセスログを見返してみても、コメントのあった時間にコメント投稿cgi は叩いていないし、コメント投稿cgi を介さず直接書きこんでいる!?(意味不明) とか色々考え、コレが原因かは分からないけどmt4i のバージョンを2.0 から2.21 にアップ、mt4i からのコメント投稿を禁止する設定にして、現在様子見中。これでぐっすり眠れるようになると良いなぁ…。

(2007/05/06 20:17 追記)
もしや、と思ってコメント投稿テストやってみたところ、エラーが。というわけで、「コメントスパム対策 :小林Scrap Book」 の対策を外してみたところ、正常に投稿できるようになりました。これでしばらく様子見です。

Movable Type 3.3 日本語版 リリース

MT 3.3 になって最近流行のタグクラウドにも対応したとのこと。あぁ、これ良いなぁ…。そろそろ2.661 からアップグレードしたい。というわけで色々準備中です。

「Dreamweaver 8.0.1 拡張機能 for Movable Type 3.2」 リリース

いまだにMT2.661 なので今のところは関係ないのだけど、こういうよさげなツールが出るとついカッとなってアップグレードしたくなるなぁ…。とはいえ色々とテンプレートに手を入れてるので、その辺の移行の手間を考えると気が重くなり、そして毎回そこで終了、となります。できればサーバリプレースと絡めたいところだけど…もう少し悩む予定。

Movable Type 3.2 より前のバージョンだとこの辺が使えるっぽいです。Dreamweaver 8 にインストールできることは確認したけど、それっきりだよ…。

はてなブックマーク、del.icio.us でブックマークするリンクを追加

(2006/03/10 10:58 変更)
del.icio.us に追加するコードをちょっと見直してみました。

はてなブックマークと、del.icio.us でブックマークするためのリンクを作ってみました。オフィシャルに説明されている方法を参照した上で、以下のようにしてみた。


<a href="http://b.hatena.ne.jp/entry/<$MTEntryPermalink encode_url="1"$>" target="_blank"><img src="/mt/b_entry.gif" width="16" height="12" align="middle" style="border: none;" alt="このエントリーを含むはてなブックマーク" title="このエントリーを含むはてなブックマーク" /></a>


<a href="http://del.icio.us/post?v=4;url=<$MTEntryPermalink encode_url="1"$>;title=<$MTEntryTitle encode_url="1"$> | <$MTBlogName encode_url="1"$>;jump=no" title="del.icio.us" target="_blank">del.icio.us</a>

はてなブックマークは、ブックマークを追加する前にワンクッション入るので冗長かも、と思いつついちおうこれで。del.icio.us でもちゃんとタイトルが日本語で入るように調整してみた。

ついでに、ケータイからの利用も考えて、mt4i へのリンクも追加。どれか適当なエントリをmt4i で表示させてそのURL をコピー、最後の"eid=" 以降を"<$MTEntryID$>" に置き換えればOK だと思います。


<a href="/mt/4i/index.cgi?id=2&mode=individual&no=1&eid=<$MTEntryID$>" title="ケータイ用">mt4i</a>

リンクを追加する場所についてはもうすこし考える余地があるかも。とりあえずこれで。

MT 2.661 の管理画面をMT3.0 風に変更

別の捜し物をしていてステキなものを見つけたので、入れ替えてみました。基本的には、説明通りの手順で入れ替えが出来たのですが、何箇所か書き換えたので、そのあたりのメモも兼ねて。

入れ替え直後の微調整

手順通りに入れ替えた直後の様子(WindowsXP + IE6)。

mtadmin_before.gif

なんだかものすごく重なってしまっています。とりあえずこれをなんとかします。スタイルシートでなんとかするのがたぶん一番スマートなのでしょうけど、とりあえず的に"tmpl/cms/edit_entry.tmpl" をいじってなんとかしてみます。なのでどこかに問題あるかも。かなり強引。

415行目あたり


<dl>
<dt><MT_TRANS phrase="Title"></dt>
<dd><input class="text-short" name="title" value="<TMPL_VAR NAME=TITLE>" /></dd>

<!-- setteing title--> <dl class="entry-header">


<dl class="entry-header">
<dt><MT_TRANS phrase="Title"></dt>
<dd><input class="text-short" name="title" value="<TMPL_VAR NAME=TITLE>" /></dd>

<!-- setteing title-->


458行目あたり


<br style="clear:both;" />


<br style="clear:both;" />
<br style="clear:both;" />
<br style="clear:both;" />
<br style="clear:both;" />
<br style="clear:both;" />

とりあえずこれで。Firefox だとムダに空白が空いてしまいますが、仕方ない。

mtadmin_after.gif

textarea のフォント変更、そして横幅を広げる

textarea のフォントを変えます。styles.css をちょこっとだけいじって、UTF-8 で保存し直します。

1行目


@charset "Shift_JIS";


@charset "UTF-8";

130行目あたり


textarea {
color:#333;
background-color:#FFF;
}


textarea {
color:#333;
background-color:#FFF;
font-family: "MS Pゴシック", "ヒラギノ角ゴ Pro W3", "Osaka", sans-serif;
}

で、textarea の横幅が大幅に詰まってしまうので、また"tmpl/cms/edit_entry.tmpl" をいじって横幅を広げます。この辺の適切な幅はお好みで。長くなるので変更後のコードだけ貼り付け。

524行目あたり


<dd>
<textarea cols="115" name="text" rows="30" wrap="virtual"><TMPL_VAR NAME=TEXT></textarea>
</dd>

<TMPL_IF NAME=DISP_PREFS_SHOW_EXTENDED>
<dt><MT_TRANS phrase="Extended Entry"><a href="#" onclick="openManual('item_main_entry_text')"><span class="hatena">?</span></a></dt>
<dd><textarea cols="115" name="text_more" rows="15" wrap="virtual"><TMPL_VAR NAME=TEXT_MORE></textarea></dd>
</TMPL_IF>

<TMPL_IF NAME=DISP_PREFS_SHOW_KEYWORDS>
<dt><MT_TRANS phrase="Keywords"><a href="#" onclick="openManual('item_keywords')"><span class="hatena">?</span></a></dt>
<dd><textarea cols="115" name="keywords" rows="1" wrap="virtual"><TMPL_VAR NAME=KEYWORDS></textarea></dd>
</TMPL_IF>

<TMPL_IF NAME=DISP_PREFS_SHOW_EXCERPT>
<dt><MT_TRANS phrase="Excerpt"><a href="#" onclick="openManual('item_excerpt')"><span class="hatena">?</span></a></dt>
<dd><textarea cols="115" name="excerpt" rows="5" wrap="virtual"><TMPL_VAR NAME=EXCERPT></textarea></dd>
</TMPL_IF>

ポイントは、以下の3つ。

  1. 横幅を115 に拡大
  2. 本文を30行に、追記を15行に
  3. 追記とキーワードの位置を入れ替え

ブックマークレットから呼び出した場合の編集画面のテンプレートは"tmpl/cms/bm_entry.tmpl" です、上記と同様に修正しておきます。

lilbox でGoogle Adsense の代替広告を表示する

ちょこちょことGoogle Adsense の表示方法を変えてみてはその結果に愕然としている今日この頃です。

で、これまでGoogle Adsense の代替広告表示にAmagle: AltADs を使ってきましたが、自分のサーバに設置して利用する、lilbox に変えてみることにしました。

今のところ、代替広告用の部分を置き換えただけなので、あまり目にすることも無いかもしれません。

設置方法は、オフィシャルに詳しく解説されているので、そのとおりにやれば設置できると思います。また、オリジナル版の文字コードがEUC なので、lilbox.php UTF-8対応版 と見比べて、まだUTF-8 化されていない"Ver.3.40" をUTF-8 対応に改造しました。

とりあえず表示は出来ているようですが、色々間違ってるかもしれないので、とりあえず自分専用で。

このようなベンリなスクリプトを公開していただき、ありがとうございます。

Google AdSense 実験中

設置から3ヶ月、一度設置すればあとはメンテフリーというのはよいですが、念願の小切手にはまだまだです。

これまで、個別エントリにのみAdSense のコードを貼り付けていたのですが、ふと思い立ち、いろいろ、試行錯誤してみることにします。とりあえずトップページに3箇所貼り付けてみました。…さすがに3つも貼るとウザいですね。

(2005/05/20 13:05 追記)
なんだかんだいいつつ、結局全ページに取り付けてみました。「カスタム チャネル」 機能を使って、各ページごとの大まかなクリック傾向などが見られたら良いかなー、と。

ちなみにAdSense のコードは全て別ファイルにして、php でinclude させています。コードを変えても再構築する手間が要らないので、ラクできます。

MT4i 2.0 にバージョンアップ

いつの間にかバージョンが上がっていました。管理用モードが追加され、携帯からも投稿が出来るようになったのが一番大きいです。次は携帯カメラで撮った画像投稿も出来れば、と妄想してみましたがそこまでワガママは言いますまい。

というわけで、これまで使っていた1.81 からのバージョンアップ方法 に従って、バージョンアップ。

"mt4imgr.cgi" にアクセスし、保存するとエラーが出たので、エラーログを追いかけ、アクセス権の問題と判明。あらかじめ0バイトの"mt4icfg.cgi" を666 で同じフォルダに作って回避。

見た目はこれまでとあまり変わらないですが、出来ることが増えて、タイヘン良い感じです。ありがとうございます。

付いたトラックバックを一覧表示

"recently_pinged_on Plugin" を使うと割と簡単にトラックバックの管理ができるようです。MT2.661 でも使えるようなので、早速導入し、「MT hxxks - Movable Type 2.x でトラックバックを一括管理するテンプレート」 を参考にしてページを作ってみました

上記テンプレートにある「編集」 リンクはベンリですが、そのまま使うとセキュリティリスクがありますので、「自分にしか見えない [編集] リンクを作る」 もあわせてご参照ください。

近頃流行の"rel="nofollow"" とかも追加したし、トラックバック復活させるかな。

Google AdSense 始めてみました

ふと思いついたのでついカッとなって申請してみたら通ったので始めてみる。個別エントリの一番下にそのページの内容に沿っている(らしい) 広告リンクが表示されるようにしてみました。JavaScript オフの場合は表示されません。邪魔っぽかったらちょっと考えます。

申し込み時のメールはGmail のアカウントで行ってみたのですが、これでもちゃんと通る模様。

ちなみに…、amazlet でamazon アソシエイト やってるわけですが、現時点で売り上げは0円であることを、一応、説明責任として報告しておきます。書影が使えるだけでおっけーなので、無問題。

最近ついたコメントを表示する

「キミのサイトは付いたコメント一覧がなくて見づらいので付けなさい」 と言われたので付けてみました。

上記ページのサンプルを元に、少し手を加えて完成。アラ簡単。

(2005/02/24 00:15 追記)
ちょっと手直ししたので差し替え。
(2005/03/08 13:17 追記)
コメントは付いた順にしたほうが分かりやすいと思ったので手直し。


<div class="sidetitle">最近のコメント</div>
<div class="side">
<ul>
<MTEntries recently_commented_on="5" sort_order="descend">
<li>
<h2 class="entrytitle"><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></h2>
<ul>
<MTComments lastn="5" sort_order="ascend">
<li><a href="<$MTEntryPermalink$>#c<$MTCommentID$>"><span class="posted"><$MTCommentAuthor$></span></a><span class="posted"> - <$MTCommentDate format="%Y/%m/%d %H:%M"$></span></li></MTComments>
</ul>
</li>
</MTEntries>
</ul>
</div>

あと、コメントのリンクから直接そのコメントが参照できるように、個別エントリのテンプレートにちょっと手を加える。太字が追加部分。


<a name="c<$MTCommentID$>"></a>
<$MTCommentBody$>

誰からもコメント付かなかったとしても、古いエントリに追記した時の更新通知にも使えそうなので、とてもとてもベンリになりました。は、は、は。

さらにちょこっと(リファラ|コメント|トラックバック)spam 対策

(2005/01/29 21:47 全体的にリライトしてます)

ここ数日、定期的に変なリファラがついたリクエストがログに残っていて、ちょっと気になっていました。決まってとあるドメインネームからのリファラが付いていて、しかもご丁寧にも、毎回サブドメインの部分が異なるという。

たいして実害はないのですがよけいなログが残るのもアレだし、余りにも執拗なので、httpd レベルではじきます。前に作ったやつ を元に、今回したいことを書き出してみます。サブドメインがころころ変わるので、そこのぶぶんをどう正規表現で書いたらいいのか分からず、結局力業、でもダメで、もう丸一日いじってますがどうにも上手くいかないのでもう忘れる。また今度。プンスカ。

(実際のコードはエントリの最後に移動しました)

"SetEnvIf" まわりの、deny とかのロジックは期待通りに動くことを確認しているので、純粋に上記の部分だけの問題だと思うのだけど…。もう、なにがなにやら。アスタリスクによるワイルドカードが使えるなら、"http://*.tecrep-inc.net/" で済むような問題なんだけど、正規表現はどうにも取っつきが悪し。理解力不足とも言う。

ときに、このリファラはナニをしたいんだろうね? 毎回アクセス元のアドレスの国が異なるし、ある時は某国内大手プロバイダからだったりしたし、proxy というよりもこれは何らかのウィルスにかかったPC からのアクセス…とかだったりするのだろうか。

さらにもう一つ、「迷惑な」 という意味で使う場合、「spam」 と小文字で書くのが慣習らしい。大文字で書くと商標に引っかかっちゃうので、とのこと。へぇ。

(2005/01/31 21:05 追記)
「忘れる」 とかいいつつしつこく調査中。コメント頂いたり、リファラでアドバイス頂いたり して、ありがとうございます。

結果から言うと、"^http://.*\.tecrep-inc\.net/"、"^http://(.*\.)?tecrep-inc\.net/" どちらでも引っかけることは出来ませんでした。テストしてみたところ、普通はリファラ中の何か一単語でも引っかかりさえすれば排除できるのに、今回対象のものについては、どうにも上手くいきません。ログに残っている文字列は普通に見えますが、この部分からして変な細工をしているのかなあ。ってそんなこと出来るのか?

そうこうするうちに、リファラspam のドメインが増えました。"*.learnhowtoplay.com" というやつ。ログから抜き出してみたところ、これまでのと送信元が割と一致します。冗長すぎるけど、もう送信元IP アドレスで弾くしかないのか…。

(2005/02/01 22:12 追記)
…えーと、httpd.conf でちょっとややこしいこと をしているので、それが原因で上手くいってなかったみたい。トホホ。ってだけじゃアレなので追加情報を。

今回のリファラspam は、結構インテリジェントです。

  1. 個別エントリにアクセスする際は、リファラに見せたいURL を入れている。
  2. MT の標準の"mt-comments.cgi" 決めうちでPOST。このとき、リファラはコメント入力ページのURL。
  3. ファイル名を変更していても、form タグを解析し、追尾してくる。リファラは上記と同じ。
  4. 同様にして、"mt-tb.cgi"(とリネームしたやつ) にもアクセスしまくり。

しかしながら、こういうのの対策として、リネームしたり、プラグイン入れたり するのはかなり有効です。

で、最後に今回の回避方法ですが、proxy 経由か、変なヘッダがついてるので、それを指定します。とりあえずこんな感じで。上記特徴とかも考えると、リファラではじくのと併せ、これも指定しておいた方がよいかもです。

Movable Type メール機能の脆弱性

コメントの追加をメールで通知している、かつメール送信にsendmail を使用している場合に任意のメールアドレスを送信することが出来る脆弱性があったようです。ようは迷惑メールの踏み台にされる可能性があった、ということですね。どういう経緯で発覚したんだろうね?

現在ダウンロードできる最新版である3.122 は既に対策済み、もうすぐリリースされる予定だったはずの3.14 はこの脆弱性を修正し、3.15 として近日中にリリース予定、あと2.661、3.01D、3.121 向けには修正用のプラグインがでていますので、中のファイルを"plugins/" フォルダ以下に放り込めばそれで対応完了とのこと。

ウチではこの機能は使ってないですが念のために入れておきました。

ImageMagick をRPM でインストール

MovableType で必要との事でずいぶん前にソース(ImageMagick-5.5.7-15.tar.gz) からインストールした のですが、RRDTool でも使うみたいなので久しぶりに確認してみたらバージョンナンバーが上がっていたので入れ替えを考えてみます。

これまではソースからインストールしていたので、


make uninstall

でこれまでのバイナリを削除。

オフィシャルサイトには、昔はなかったはずのRPM ファイルがありますが、あまりヒトに頼りきりになるのもアレなので、いつものごとくまずはSRPM を貰ってきてパッケージ作成するも、失敗。また良く分からないエラーが。最近こういうの多すぎ。


RPM build errors:
File not found by glob: /var/tmp/ImageMagick-6.1.8-root/usr/lib/perl*/site_perl/*/*/Image
File not found by glob: /var/tmp/ImageMagick-6.1.8-root/usr/lib/perl*/site_perl/*/*/Image/Magick.pm
File not found by glob: /var/tmp/ImageMagick-6.1.8-root/usr/lib/perl*/site_perl/*/*/auto/Image/Magick
File not found by glob: /var/tmp/ImageMagick-6.1.8-root/usr/lib/perl*/site_perl/*/*/auto/Image/Magick/*
File not found by glob: /var/tmp/ImageMagick-6.1.8-root/usr/share/man/man3/*gz

仕方がないので"ImageMagick-6.1.8-9.i386.rpm" を貰ってきてインストール。なんだかずいぶんあっさりと、目的達成。頼れるときは頼ったほうが良いかも。

(2005/01/22 01:36 追記)
昨日の今日でバージョンが上がってるし。ついでに、fedora 用RPM をみつけたので特に気にせずにRHL9 に入れてみる。

入れたのは以下の4つ。いらないのもあるかも。


# rpm -qa |grep ImageMagick
ImageMagick-devel-6.1.9-2
ImageMagick-perl-6.1.9-2
ImageMagick-debuginfo-6.1.9-2
ImageMagick-6.1.9-2

あと、ソースファイルももらってきて解凍、できたフォルダの中の"PerlMagick" というフォルダに移動。"README.txt" を読みつつ、必要に応じて"Makefile.PL" を編集。であとはインストール。


# tar xvzf ImageMagick-6.1.9-1.tar.gz
# cd ImageMagick-6.1.9-1/PerlMagick
# perl Makefile.PL
# make
# make install

MovableType のmt-check.cgi の実行結果。ちゃんとインストールされました。


Image::Magick...
Your server has Image::Magick installed (version 6.1.9).

(2005/01/22 01:42 追記)
MovableType の画像アップロードでちゃんとJPEG ファイルのサムネイルが作れることも確認。これまでサムネイル作成でエラーが出てたりして、なにげに懸案事項だったので、問題解決ばんざーい。

月ごとのアーカイブリスト・改

これまでは月ごとのアーカイブリストの並び順を逆にする で書いたようなやり方と、その後も色々といじったりしてまして、年明け最初の仕事はこのあたりの調整をひたすらやってたりしたのですが、その努力が(いい意味で) まるっきり無駄になる手法が!!

まずは以下の3つのプラグインを"mt/plugins" 以下に導入。説明文とか全部英語ですがとりあえず気にしない。

あとは、「Junkline - MT の過去ログリンク表示を nDiary (ごにょり済み)風に」 で公開されているテンプレートを元に自分のサイトに合うように変更。独自スタイルシートとか入ってますが、そのへんはよしなにしてやってください。

トップページ 右メニュー用:


<MTArchiveList archive_type="Monthly">
<MTArchiveDateHeader><ul class="disc"><li><$MTArchiveDate format="%Y"$> / </li></ul><ul class="none"><li><MTArchiveYear order="ascend"><MTArchiveYearIfEntries><MTArchiveLoad><MTDateHeader><a href="<$MTEntryDate format="/mt/archives/%Y/%m/"$>"><$MTEntryDate format="%m"$></a> </MTDateHeader></MTArchiveLoad></MTArchiveYearIfEntries></MTArchiveYear></li></ul></MTArchiveDateHeader></MTArchiveList>

月ごとのアーカイブリストページ 上下ナビゲーション用


<MTArchiveList archive_type="Monthly">
<MTArchiveDateHeader><ul class="disc"><li><$MTArchiveDate format="%Y"$> / <MTArchiveYear order="ascend"><MTArchiveYearIfEntries><MTArchiveLoad><MTDateHeader><a href="<$MTEntryDate format="/mt/archives/%Y/%m/"$>"><$MTEntryDate format="%m"$></a> </MTDateHeader></MTArchiveLoad></MTArchiveYearIfEntries></MTArchiveYear></li></ul></MTArchiveDateHeader></MTArchiveList>

これまであんなに苦労した(割にあまり思うようにならなかった) コトがこんなにも簡単にできるなんて、プラグイン万歳!!

年別アーカイブもあったほうがベンリかなぁ…。

textarea でHTMLArea を使うbookmarklet

火を吐けるプログラマ募集中: Sleipnir でBookmarklet を使う」 経由。ウチのページを紹介して頂いたおかげで、とても良いものを知ることが出来ました。ありがとうございます。

MT の投稿画面などの、textarea をHTML エディタにしてしまうツールを呼び出すブックマークレットです。使用するには、HTMLArea を設置するWeb サーバが必要です。実際にSleipnir で使えるのを確認したのでメモ。

インストール方法は「Marklet BLOG: htmlAreaブックマークレット」 の説明で全て事が足ります。ファイルを二つダウンロードして解凍して一つにまとめ、Web サーバ上の任意の場所に設置。

説明ページ上部にあるブックマークレットのショートカットをコピー、テキストエディタにいったん貼り付けてURL 部分を自分のWeb サーバのものに変更。変更後のスクリプトをアドレスバー拡張メニュー(AddrMenu.ini)。一応、コードを貼り付けておきます。太字部分は各自で書き換えてください。


!HTMLArea|javascript:void(function(){var b=function(w){w._editor_url='「HTMLArea を設置したURL」';var d=w.document;for(var i=0;i<w.frames.length;i++){try{b(w.frames[i])}catch(e){}}var e=d.body.appendChild(d.createElement('script'));e.type='text/javascript';e.src=_editor_url+'ie_load.js'};b(window)})();

"AddrMenu.ini" を保存し、アドレスバー拡張メニューを再読込すれば準備完了です。あとはtextarea のあるページでブックマークレットを選択、その後textarea 部分をクリックするとHTML エディタが起動しているはずです。

開発止まっちゃったけど、XHTML 対応とかしてくれないかなぁ、と密かに期待しているEdit HTML っぽいというか、ブラウザ内のJavaScript だけでこれだけできるとはかなりの衝撃です。すごい。

ただメニュー部分が結構場所をとるので、特にMT の編集画面で使う場合などにはもともとのtextarea のサイズを広げておいた方が良さそうです。また、30秒ほど使ってみた感じでは、空改行とかが全部無視されてしまったように見えたのが気になりました。でもただの見た目だけで問題はないのかもしれない。

コメントスパム対策・再び

風邪をひきました。お腹に来るやつ。高熱が出る割にはすぐ治るという特徴があるようですが、なんにせよ、年末に2日のロスは痛いです。といいながら大掃除もせずにPC の前にいたりするけどな!!(ダメじゃん)

さてさて。そのような体調不良に追い打ちをかけるように、連日の大量コメントスパム投稿。一晩で15件とかいったいどういう事ですか? これまでは"mt-comments.cgi" のファイル名を変更、程度の対策しかやっていなかったので、これを機に次段階の対策を考えてみることにしました。

まず最初に考えたのが、「本文がアルファベットのみならはじく」 というやつ。でもこれも対策が浸透してきたみたいで、文字参照 とかを使って回避したり出来るのかも。

で、今回採った対策は、「本文中にA タグがあったらはじく」 というプラグインを導入する、というものです。導入はファイルを"mt/plugins" に入れるだけで完了ですが、副作用としてMT のコメントの設定で「URLを自動的にリンクにします」 のチェックをオフにするか、それがイヤな場合は「yokku notes: A タグによるコメント SPAM 対策」 を見て対策の対策をしないといけないです。ウチの場合はもともとタグは全面禁止でしたし、URL の自動リンクもオフにすることで完了。

コメントスパム対策は色々な方法があるので、「MTコメントスパム対策 - Software Linkage」 などをみて自分に合った対策を採ると良いと思います。

今回はついでに、「Memo Leaves: 編集メニュー画面からコメントスパムを一括削除」 を導入しました。といっても"menu.tmpl" をダウンロードしてそのまま"mt/tmpl/cms/menu.tmpl" を置き換え、あとはTABLE タグを少々いじって見た目を整えた程度です。あと、"mt/lib/MT/App/CMS.pm" の266行目あたりと284行目あたりの"limit => 5" を"limit => 10" に変更して一度に表示されるコメントとトラックバックの数を増やしてみました。

これでまたしばらく時間稼ぎ出来るだろうけど、これでもまだダメなようなら、次はコレを導入予定。宣伝先のURL のリストを作り、リストに一致したらはじく、という動作をするものと理解。

"MTRelatedEntriesByKeyword" プラグインを入れてみる

「今表示しているエントリと似たエントリを表示したい」 と思い、"MTRelatedEntriesByKeyword" というプラグインを入れてみました。これは、各エントリのkeyword フィールドを見て、同じkeyword のエントリをリストしてくれます。

ウチの場合、keyword からファイル名を作っていますので、プラグインを入れてコードさえ追加すればいいので簡単です。再構築の時間は前よりも長くなったような気がします。

keyword を実直に見ているだけなので、"to" とか"and" とかもそのまま評価されてしまうのが少し微妙ですが、おおむね、理想的な感じです。

これまでにあるのと同じkeyword を含むエントリを投稿した際に、古いエントリも再構築しないと反映されないのは仕方ないところですね。この部分だけPHP とかで動的に動かせたらよいのだけど…。MT3 にすればこの辺ラクにできるのだろうか。とMT3 への移行時期を考える今日この頃。

BBClone 入れてみました

「多く見られたページ」 をリスト表示できる方法がないかなぁ、とか思ってさまよっていたら偶然見つけたので、そのまま勢いでインストールしてみました。良い感じ。

KANWAKYUDAI::Blog: BBCloneでphpアクセス解析 の説明をもとに、気づいた点などを簡単に説明。

BBClone のダウンロードページ から、"bbclone-0.4.6-utf8.zip" をダウンロード、適当に解凍して"conf/config.php" を適当に編集。このへんは上記を参照に。

で、サーバにアップロード。"var/" 以下のファイルの".htalock"、"*.php"、"*.inc" のアクセス権を666(-rw-rw-rw-) に変更。コレ忘れるとハマります。かなり。

最後は、各ページにphp スクリプトを仕込むわけですが、MovableType だとテンプレートに仕込んでおけばいい感じに使えます。参考までに、ウチでの設定。


<?php
define("_BBC_PAGE_NAME", "「ページタイトル」");
define("_BBCLONE_DIR", "「BBClone をインストールしたパス」");
define("COUNTER", _BBCLONE_DIR."mark_page.php");
if (is_readable(COUNTER)) include_once(COUNTER);
?>

「ページタイトル」 を各テンプレートで変えてます。

Main Index"home"
Category Archive"<MTArchivelist><$MTCategoryDescription$></MTArchivelist>"
Date-Based Archive"<$MTArchiveDate format="%Y/%m"$>"
Individual Entry Archive"<$MTEntryTitle$>"

ページタイトルは日本語が一部文字化けしてしまっていますが、検索文字列は文字化けないようです、今のところ。日本語ファイルもはじめから入っているので、最初の設定さえ超えればあとはベンリに使えそうです。

(2005/04/09 12:23 追記)
アップグレード時の注意まとめ。これを怠るとこれまで溜めたデータが全部飛んじゃいます。これを書いている時点では"BBClone 0.4.8" が最新版です。オフィシャルページ からbbclone-0.4.8-utf8.zip を貰ってきます。

適当に解凍し、ここからが本番。

"conf/config.php" をこれまでのと見比べながら書き換え。あとはFTP なりでvar フォルダ以外全て をアップロード。うっかりこのフォルダも上書きしちゃうとこれまでのが全部消えますので要注意。

amazlet でamazon アソシエイト

バナー広告とか、アフィリエイトとかアソシエイトとか、そういうリンクを殆どクリックしないヤツがこういうのをはじめるのもどうかと思うのですが、なんとなくでamazon アソシエイトはじめてみようかなと。

alectrope 内での、amazon アソシエイト の取り扱いについては、以下のようなルールを課そうと思っています。

  • amazon アソシエイト を利用したリンクを作成する場合はそれを明示する。
  • amazon アソシエイト 以外の、他社が行っている同種のプログラムには参加しない。
  • alectrope の過去エントリに含まれるamazon.co.jp へのリンク先URL をamazon アソシエイト のものに変更しない。
  • amazon アソシエイト の商品を紹介したいだけの新規エントリは作成しない。
  • できるだけ、実際に自分で買ってみたもののみ紹介する。

また何か思いつけば追加します。

現在は仮登録を済ませ、本登録の承認待ちです。で、amazlet でちょこっと遊んでみました。amazon アソシエイトを使わない人にはあんまり恩恵ないかもですが、ベンリですね、これ。

そうそう、amazon のURL って結構長くなりがちですが、本当にそのページを表示するのに必要なのは限られてますので、そのへんをよく注意してみてみるのも面白いかも。

Movable Type 2.xxx のセキュリティ対策(結構重要)

Movable Type 2.xxx 使いの方は上記サイトを熟読することをオススメします。というか、必ず読もう!!

何が問題なのか、どう対策すればよいのか、順を追って読んでいけば分かると思うのですが、私が理解できた範囲でのポイントを書いておきます。

管理CGI である"mt.cgi" のファイル名をデフォルトのままにしていた場合、全く別のサイトにあるリンクをクリックした瞬間、"mt.cgi" とそのあとに続くリクエスト文字列によって、自分のWeblog の全エントリを削除されてしまうなどの危険性がありえます。

対策の一つとして、"mt.cgi" のファイル名を外部からは推測されにくい名前に変更し、外部にファイル名が漏れないように細心の注意を払う必要があります。具体的には、サーチ結果から辿れる"[編集]" のタグを削除する、等です。

あとはリファラのチェックもかけるとよいそうです。なので早速コードを変更してみました。ブックマークレットでエントリの追記を行おうとした時に必ずIDとパスワードを再度入力する必要が出てきましたが、まあやむなし。

(2005/03/08 12:59 追記)
こういう手法って「Cross Site Request Forgeries」(CSRF) というそうな。覚えておこう。

(2005/04/28 16:52 追記)
mixi で起きた事件を元に、CSRF を高木先生が解説。

(2005/07/08 16:56 追記)

(2005/07/19 15:39 追記)
最初に取り上げたページがリニューアルに伴い、色々追記されていたのでリンク。

自分にしか見えない [編集] リンクを作る

前に エントリから直接編集できるリンクを作る で試した方法では、HTML ソースを見れば誰でも見られる状態になっていたため、使えないとの判断を下したのですが、今回のはまた別の方法で同様の結果が得られそうなので、設置してみることにします。

大前提として、PHP が使えるようになっていることが必須です。PHP でcookie を作り、そのcookie があれば編集用のリンクなどを表示させる、という動作をするMT 用プラグイン、"AdminLinks plugin" を使用します。

ダウンロードしてきたファイルを解凍し、"AdminLinks.pl" は"mt/plugins" フォルダ以下へ、"adminlinks_logon.php" と"adminlinks_logoff.php" はブラウザからアクセスできる、他人からは推測しにくい場所(ついでに、ファイル名も変更しておくと良いかも)へ、コピーします。

もし"mt.cgi" のファイル名を変更している場合、"AdminLinks.pl" 内 172行目辺り以降の該当箇所も変更したファイル名に書き換えておくのを忘れずに。その他は特にいじるところはありません。

次はテンプレートの編集。と、その前に。"adminlinks_logon.php" にブラウザからアクセスし、cookie を生成しておきます。たぶん真っ白けのページが表示されますが、それはそれでおっけーです。これを先にしておかないと、少し悩むことになります。真っ白けのページがいやな場合、"adminlinks_logon.php" の<head> タグ内に


<meta http-equiv="refresh" content="0; URL=「戻り先のURL」">

と書いておけば良いと思います。ついでに、"adminlinks_logoff.php" も同様に書き換えておくと良いでしょう。

で、続き。MovableType の「テンプレート・モジュール」 を使うと色々と使い回しが出来てラクチンです。今回、以下のような内容のテンプレート・モジュールを作りました。名前は適当に。


<MTAdminOnly>[ <a href="<MTAdminLink type="editentry">" target="_blank">編集</a> ]</MTAdminOnly>

このリンクを表示させたい箇所に、


<$MTInclude module="「付けた名前」"$>

で、再構築。全てが上手く設定できていたら、こんな感じになります。お疲れ様でした。

adminlinks_ss1.gif

AdminLinks プラグインは他にも以下のモードがあるので、色々と応用がききそうです。というわけで、続く。

  • blogmenu: MovableType のメインメニュー
  • newentry: 新規エントリーを作る
  • editentry: エントリーを編集する
  • editcomment: コメントを編集する
  • deletecomment: コメントを削除する
  • rebuild: 再構築する

パンくずリストを作る

前々から付けようと思っていた「パンくずリスト」 を付けてみました。ウチの場合そんなに階層が深くないので微妙ではありますが、ま、あったほうがいいでしょう。

ちなみにこのパンくずとは、グリム童話「ヘンゼルとグレーテル」 で森に入ったとき、後で戻れるよう、道すがらパンをちぎっては投げ、道しるべとしたことを由来としています。というわけで興味が沸いたアナタ! 青空文庫公開 (http://www.aozora.gr.jp/cards/001091/card42315.html) されてるのでよろしければどうぞ。

MovableType からNucleus への移行

といってもalectrope の話じゃなくて、ヨソのサイトでの話。MovableType は個人/非商用 以外の利用だとライセンス料がかかるため、社内の部門サーバで使うとか、きわめて微妙な色合いです。

MovableType のようなWeblog ツールや、Wiki、XOOPS のような重めのツールまで色々と試してみてたどり着いたのがNucleus。名前だけは前から知っていたものの実際に使ったことはなく、ついこないだバージョン3 が出たばかりらしいので設置してみたところ目からウロコがポロポロと。

こいつはすごいですかも。PHP + MySQL なのでMovableType よりもさらに環境を選びますが、MovableType からの移行ツールでサクッと移行できます。MovableType が利用しているデータベースから直接データを引っ張ってくるみたいで、予めNucleus 側で同じカテゴリを作っておく(ユーザが複数人いる場合はそれも作る)と、後はほとんど何も考えずに移行させてくれます。

また、ページは動的生成なので再構築も不要なのがちょこっとベンリかも。管理画面も使いやすいし、有志の方の手による日本語かも隅々まで行き届いているのでほとんどヘルプを読まなくても何とかなります。

そうそう、寄付は大歓迎というものの、ライセンス料というものは原則的にはないというのも魅力的です。

なにげに魅力的なプラグイン があるので食指が動いてきた。

とりあえず、未来の移行先の一つとして、検討に値すると思いました。

MovableType のコメントスパム対策

とうとうウチのような弱小サイトにもコメントスパムがやってくるようになりました。たぶんなんらかのWeb 巡回型のエージェントか何かで走らせているのでしょうね。

てなわけで、今のところまだホンの小手調べ、といったところのようですので、

  1. 管理画面から手動で削除
  2. コメントスパム送信元のIP アドレスをブロック

というきわめて手作業な対応でしのいでいます。

ですが今後のことも考えるとちゃんと対策しておくべきですね。
というわけで「Bayesian filter for MT」 を入れてみようかと情報収集中。CPU 負荷が高かったり、ベイジアンフィルタを育てる手間が必要があるとかあるようですが育つとかなり強力だとか。ベイジアンフィルタを育てる必要がある、との説明でたまごっちが引き合いに出されてるのですが、たまごっちは外国でも有名なのかな。

コメントの数が増えているのをみるとドキドキするので、それがスパムだったりすると超ガッカリです。というわけでこういうのは完全に排除する方向でがんばっていきたい。

Sleipnir Version 1.60 beta 1 でBookmarklet を使うための方法

このバージョンからオプションに「ポップアップ広告」 というのが追加され、これが有効になっているとSleipnir でBookmarklet を使う(2) で書いたBookmarklet が使えなくなることが判明。

「ポップアップ許可URLリスト」 にURL を書けば回避できますが(実験済み)、このBookmarklet の性格上、ページのタイトルとURL は普通毎回変わるわけで、ワイルドカードとか正規表現とかその辺の類の指定も出来そうにないので、少なくとも現時点ではこの機能をオフにすることでしか対処法はなさそうです。

せっかくある機能を使わないのはもったいないけど、この手のポップアップ広告は今のところ「禁止URL」 と「禁止タイトル」 でほぼまかなえているのでとりあえずこれで。

エントリから直接編集できるリンクを作る

既に入力済みのエントリに追記をしたいときとかに、まず編集画面のトップにログインして、ウェブログを選択して、--というプロセスを毎回毎回繰り返すのがだんだんと面倒になってきました。なんとかならないかな、と。

ヒントになったのは、トップページにつけてある検索機能。検索結果表示になぜか"[Edit]" とかいうリンクがついています。一瞬あせったのですが、これはブラウザ側のCookie を読み取り、ログイン済みならば表示させる、という処理を行っているようです。おお、これは使えるじゃないか、と、それっぽいタグをそのままコピーしてみるも、うまくいかず。

で、まあ、例によって世の中には同じようなことを思う人はやっぱりいるわけで、Brutal Hugs の、"EntryEditLink plugin" と、"JavaScriptCookies plugin" を組み合わせることであっさり実現。めちゃくちゃ便利になりました。以下その方法。

本文の中でソースコードとかを書くときの工夫

またしてもChitatopops からのネタです。

ソースコードを転記するとき、行末にいちいち<br /> とかを書くのが面倒で、色々工夫しつつもいまいちしっくりこなかったのですが、上記の設定ですっきり解決!! 以下のような設定で落ち着きました。

月ごとのアーカイブリストの並び順を逆にする

Chitatopops: 月ごとのアーカイブのリストを登り順に

Chitatopops のデザイン、ノウハウとか、ものすごくイイ感じなのでかなり参考にさせて頂いています。ありがとうございます。

月ごとのアーカイブリスト、最近のが一番上で古いのが下、って並びなのがちょっと気になっているのですが、世の中同じように思ってるヒトはそれなりにいるみたい。多分その解決法のうちの一つが元々 empty pages というサイトで公開されていたというphp スクリプト。php 使えるようにしておいて良かったですよ!!

今既に導入している「Chitatopops: 月ごとのアーカイブのリストをネストして表示」 と組み合わせて、イイ感じにリストできないかなー、と試行錯誤すること数時間、しかしなかなか思うようにはいかず。

とりあえずトップページでの使用は諦めて、月ごとのアーカイブページの上部に載せる部分だけ、それっぽくなるようにしてみました。ホントは"年" は右側じゃなく左側に来るようにしたかったのだけどね…。がく。


<?php
<MTArchiveList archive_type="Monthly">
$monthlyarchivereverse[] = '<a title="<$MTArchiveDate format="%Y/%m"$>" href="<$MTArchiveLink$>"><$MTArchiveDate format="%m"$></a> <MTArchiveDateHeader>/ <b><$MTArchiveDate format="%Y"$></b> <br /></MTArchiveDateHeader>';
</MTArchiveList>
$monthlyarchive = array_reverse($monthlyarchivereverse);
foreach($monthlyarchive as $temp) {
echo $temp;
}
?>

サンプルはこんな感じ

MT3.0 Developer Edition 日本語ベータ版 リリース

Movable Type 日本語版サイト

昨日の話ですが、「Movable Type 3.0 Developer Edition 日本語ベータ版」 がリリースされました。メッセージがまだ完全には日本語化されていないため、もうしばらくベータ扱いのようです(「Six Apart Japan: MT3DE日本語版ベータ」)。

上記の理由で、まだ本格的なサイトの構築などには使用してはいけないようです。もう少しこなれてからでないと移行は怖いですし、この辺は様子見ですね。利用条件について、詳しくは「Movable Type ベータ・ソフトウェア利用許諾契約書」 と「英語原文」 をお読みください。

マニュアル類も日本語版が出てます。現在既にMT ユーザなヒトにとっては「mtinstall - Movable Typeのアップグレード」 はかなり重要なことなのではないかと。基本的には既にあるエントリを念のためにエクスポートしてバックアップをとった後、アップグレードスクリプトを実行させればすべて自動的に行ってくれそうです。ウチの場合、書き換えてしまっているファイルがいくつかあるので、この辺をひとつひとつ調べるのが少し面倒かも。細かくは実際にインストールするときにでも、また考えることにしましょう。

また、MT3.0 リリースにあたって発表された新ライセンスについても、解説が出ています(「Six Apart Japan: Movable Type 3.0のライセンス体系について」) ので、こちらもご参照ください。ポイントは、物理的に一人の人間が使う限り、複数のWeblog をまとめてひとつのサイトとして利用してもそれは「1」Weblog とカウントできるようです。moblog とかでもうひとつアカウントを作った場合、それは「2」ユーザとなるのかな?

ベータが取れたあたりで試してみましょう。

Movable Type 3.0

Six Apart Japan: シックス・アパートが、ウェブログ・ソフトMovable Type 3.0の概要を発表~個人ユーザーから企業ユーザーまでをカバーする新ライセンス体系を提供~

本家英語版 だと本日より"Developer Edition" なるものがダウンロードできるようになったようですが、これの日本語版が5/19 にリリースとの事で、これを待ちつつ、情報収集モード。

正式版は更に後にリリースのようですが、仕様まわりはFIX したので開発者さんどんどん使ってください、ということなのでしょう。また3.0 リリースにあたり、これまで(少なくとも日本人の私には)よく分からなかった商用ライセンスが明らかになりました。自分しか使わない、Weblog も3つまで、の場合は無償で利用できます。現行の2.661 よりも制限が多くなってしまっていますが、私の場合は無償で利用することができそうです。

ベータテスターさんの話によると、「2.661 から3.0 にインポートするツール」とやらがついているらしいですけど、最初は今のとは別のところにインストールして試してみたほうがいいでしょうね。

「作成日時」を更新するボタン追加

LunaTear: 作成日時の更新機能

一気にエントリを書き上げることが出来ない場合、下書きモードはベンリです。ただ、最初にそのエントリを作った日時が「作成日時」に入ってしまっているのが難点といえば難点。手でちまちま書き換えるのもメンドウなので、どうにかできないかなー、と考えてたら、JavaScript で更新ボタンを付けちゃおう、という手法を発見。以下、実際にやってみた手順。

基本的な調整終了

この数日微妙に色々と試行錯誤しつつ、基本的な部分でのサイト構成、ページ間のつながりとかはそれなりに納得いくとこまで出来たので、ひとまずこのへんで区切り。

トップページを起点とし、続きを読んだり、コメント付けたり、トラックバックしたりするためには個別エントリにまで行く必要があるようにして、その移動の際にカテゴリと月での前後関係把握がやりやすいように考えてみたつもり。もっとエントリが増えればまた変更するかもしれないけど、いまはこれが精一杯。「自分が考える、現時点での自分なりの回答」みたいなのは作れたかも。微妙にWebalizer での結果なども反映させつつ、このようなカタチとなりました。

また、同時に、「Chitatopops: 月ごとのアーカイブのリストをネストして表示」をこれまた丸写しでプラグイン入れてちょこっと表示変更、その他色々冗長っぽいモノは色々と消し去りました。すっきりすっきり。

あとの予定は、もう少しちゃんとしたサイトを構成する諸々の要素、注意書きとかを揃えつつ、一部試験的にPHP でのインクルードなどもやっていくつもり。この辺が完了したら、テンプレートを分解して閲覧時にPHP で再構成する、なんていう負荷対策も実施してみたい。

Bookmarklet のリンクにターゲットを指定する

Sleipnir でBookmarklet を使う(2) で書いた方法では、リンクにターゲットが指定されていません。これを自動的に(というか強制的に)付ける方法。

"/mt/lib/MT/App/CMS.pm" の639行あたり、太字下線部を追加します。


変更前: $param{text} = sprintf qq(<a title="%s" href="%s">%s</a>\n\n%s),
変更後: $param{text} = sprintf qq(<a title="%s" href="%s" target="_blank">%s</a>\n\n%s),

ちなみに、エントリー入力画面での[URL] ボタンにもターゲットを付ける場合には、"/mt/lib/MT/Util.pm" の408行あたりの太字下線部を追加します。


変更前: $text =~ s!(http://\S+)!<a href="$1">$1</a>!g;
変更後: $text =~ s!(http://\S+)!<a href="$1" target="_blank">$1</a>!g;

Sleipnir でBookmarklet を使う(2)

Sleipnir でBookmarklet を使う」よりも簡単かも知れない方法を見つけたのでその報告。

"アドレスバー" の右側に"→" みたいなボタンがあると思うのですが、ここのメニュー(アドレスバー拡張メニュー)に追加します。

先ほどと同じく、「MT へ投稿」の内容をコピーしてメモ帳などに保存しておきます。Sleipnir がインストールされているフォルダ内あたりにあるはずの"AddrMenu.ini" をメモ帳などで開きます。

どこか適当な場所(できるだけ上の方がいいでしょう)に、


$MTに投稿|「メモ帳にコピーした内容をそのまま貼り付け」;

として保存します。行末に";"(セミコロン)を付けるのを忘れずに。"「」"も実際には必要ありません。あとは[拡張メニューの再読み込み]をクリックしたのち、実行してみてエラーなく投稿画面が出ればOK です。

アドレスバー拡張メニューはとってもベンリで、今開いているページのタイトルとURL をクリップボードにコピーしたりリンクを作ったりするのに頻繁に使っています。以下その方法。

Sleipnir でBookmarklet を使う

Sleipnir でBookmarklet を使う為の方法。

Movabletype のメインメニューから設定を進めていって、「MTへ投稿」が表示されたらこのリンクを右クリックして"ショートカットのコピー"、メモ帳でも開いて今コピーしておいた内容をペーストしておきます。

次に、「LunaTear: SleipnirからのBookmarklet」から"Bookmarklet.js.txt" をダウンロードして拡張子の".txt" を削除、Sleipnir の"scripts" フォルダに移動します。

"Bookmarklet.js" をメモ帳などで開いて、17行目の"window.open..." 以降の部分を、先ほどコピーしてメモ帳に貼り付けておいた内容に置き換えます。両者をよく見比べて、余計なモノまでコピーしないように注意。

Sleipnir の[スクリプト]-[スクリプトの再読込] を行った後、実行してみてエラーなく投稿画面が表示されればOKです。

※これを書いたあと、もうちょっとお手軽な方法を発見しました。詳しくは Sleipnir でBookmarklet を使う(2) にて。

設置メモ(6) - 前言撤回

昨日 alectrope: 設置メモ(5) - アーカイブの設定 で書いたこと、あっさり変更

1日のうちに大量にエントリを追加するコトもあるかと思い直し、「日」レベルまでフォルダを作りました。ついでに、「ARTIFACT -人工事実- | MovableTypeのページ分割/Permalinkの変更」 を参考にして、各エントリ毎にキーワード を設定、ファイル名とすることとしました。こんな感じ: "Individual: <$MTEntryDate format="%Y/%m/%d"$>/<$MTEntryKeywords dirify="1"$>"

"dirify" ってのは" "(半角スペース)→"_"(アンダーバー)みたいな、文字列をURL とする場合のマズい部分を自動的に修正してくれるオプションのようです。これはベンリ!!

というわけでもうこれで、URL がフラフラすることはない、ハズ。たぶん。うん、やっぱりファイル名で何を書いたか分かるようになってた方がよいですね。

設置メモ(5) - アーカイブの設定

クールなURIは変わらない -- Style Guide for Online Hypertext」を根拠に、ファイルに拡張子を付けない設定にしてみる。正しくない設定かもなので、自己責任で。

また、movabletype では初期設定のPermalink へのファイル名が連番となるため、Import/Export した際に番号がずれてしまう事があるとのことなので、この辺も対策。参照元は「Chitatopops: Permalinkを変更」。

設置メモ(4) - スタイルシートの編集を楽に

[Template の編集]-[Stylesheet] と進みます。初期状態だとテンプレートのはここのtextarea 内でしか編集できないので、もっと編集をやりやすくするために、サーバ内のファイルに保存するようにします。

「このテンプレートにリンクするファイル」に保存先のファイルのフルパス(ex. "/var/www/html/mt/folder/stylesheet.css")を書きます。次に「出力ファイル名」にさっきと同じファイル名の相対パス(ex. "folder/stylesheet.css")を書きます。最後に、「インデックス・テンプレートを再構築するときにこのテンプレートを自動的に再構築する」のチェックを外します(再構築負荷対策も兼ねて)。

あとはCSS ファイルを直接編集し、保存後リロードすれば即座に編集結果が反映されます。

参考にしたページ:ARTIFACT -人工事実- | MTでのスタイルシート変更を楽に

設置メモ(3) - 管理画面CSSの書き換え

管理画面のフォントの色、サイズがどうにも淡くて小さくて読みづらいので、ちょこっと修正。

ルートフォルダにある"styles.css" が管理画面のスタイルシートです。
かなり機械的な書き換えですが、
・font-size: 11px; を font-size:12px; に
・color: #666; を color:#333; に
・font-family: "Osaka", "ヒラギノ角ゴ Pro W3", "MS P ゴシック", sans-serif; を
 font-family:"MS Pゴシック", "ヒラギノ角ゴ Pro W3", "Osaka", sans-serif; に
これで文字がちょっとくっきり、ちょっと大きく、なります。

設置メモ(2)

設置メモ(1) の続きです。

現時点で、管理画面にログインし、名前を変更するあたりまではたどり着いたかと思います。ここで設定した名前とパスワードを忘れてしまうとmt-medic というプログラムのお世話になることになります(実際の使用方法は「キュウマルニ ノ ブログ: さっきまでここにあった危機」にて)。

このときUsername に漢字とかを使っていると文字化けしてしまうので、「Username/ユーザ名」はアルファベット、「Nickname/ニックネーム」に日本語を使うのが良いかと思います。ついでに、テンプレート内の"MTEntryAuthor" を"MTEntryAuthorNickname" と書き換えます(このあたりの詳しい話はまた後ほど)。

設置メモ(1)

まずはここから始めないとどうしようもないので、他のサイトへのリンクばっかりですが、ご容赦を。

movabletype 日本語パッチ制作者のみらのさんのサイトの「Movable Type 日本語化手順」がとてもよくまとまってるのでここをベースに設置作業します。

Index of all entries

Home > Linux > MovableType

Return to page top