iPhoneの向きによって画像の大きさを自動的に変えるスクリプト

iPhone用のサイトを作るとき画像をそのまま流用すると、iPhoneの画面(320px × 480px)よりも大きい画像がはみ出てしまう。「【MovableType】iPhone用テンプレートの導入」でこのブログのiPhone対応を行ったのだが、このテンプレートにはその対策としてmax-widthタグが使われていた。

.entry img {
    max-width: 95% !important;
}

しかし、これでは幅が縮められるだけなので縦長の画像になってしまう。縦横比を保ったまま縮小する方法を探したのだが、CSSのみでは難しいようだ。以下のサイトを参考にしつつJavascriptで書いてみた。

iPhone用サイトで、画像を縦横ともに画面幅いっぱいにリサイズさせる //iPhone – bute_lab.

http://www.bute-studio.com/lab/2009/11/iphone-imgwidth.html

max-widthとアスペクト比 – 報國挺身日記

http://d.hatena.ne.jp/kkos/20091219/1261190288

Continue reading

【MovableType】編集画面をテキストエリアにする

100405-0005.png

MTに記事を投稿するときはIt’s All Textアドオンを使っている。これはブラウザの<textarea>を自分の好きなエディタで編集させてくれる素敵なアドオンだ。入力中に文字を訂正しようとしてControl + Hを押すとブラウザの履歴タブが開いてしまい、憤りの余りモニタを殴り付けた経験のあるEmacs / Vimユーザには必携と言える1

It’s All Text! :: Add-ons for Firefox
https://addons.mozilla.org/ja/firefox/addon/4125

しかしこのアドオンも万能ではない。<textarea>のみにしか効果がないので、MT5より搭載されたCodeMirrorではこのアドオンが使えないのだ。具体的には、テンプレートの編集画面がそれに当たる2

Continue reading

【MovableType】エントリーの中でタグを使う

現在では mteval を使った方法が推奨されています → こちら

エントリーの中に以前のエントリーへのリンクを貼りたいことがよくある。そう思ってエントリーへのリンクを生成するタグをエントリー本文に書いても無視されてしまう。そんなときに使うのがこれだ。

エントリーやウェブページ内でMTタグが使えるプラグイン:Templatize | Movable Typeプラグイン | MTエンジニアブログ | スカイアークシステム
http://www.skyarc.co.jp/engineerblog/entry/3969.html

インストール & 設定

ファイルのコピー

ダウンロードして出てきた「Templatize.pl」を「mt/plugins」にコピーするだけだ。

$ unzip Templatize.zip
$ cp Templatize.pl ~/Sites/mt/plugins

テンプレートの修正

プラグインを有効にするには、該当するタグにアトリビュートを付ける。具体的には各店プレートに於いて次のように書けばいい。

<$mt:EntryBody templatize="all"$>
<$mt:EntryMore templatize="all"$>

Continue reading

自分のサイトのURLをOpenIDとして利用する

OpenID – Wikipedia
http://ja.wikipedia.org/wiki/Openid

まだOpenIDに対応したサイトは数少ないが、一つのIDで複数のサービスを利用可能というのはおもしろい。加えて、認証作業を「委譲」(delegate)すれば自分の所有するサイトのURLをIDとして使えるのだ。今回はOpenID.ne.jpで取得したIDを自分のサイトに関連づけてみた。

作業自体は単純である。OpenID.ne.jpで「delphinus」というアカウントを取得したとするとOpenIDは「http://delphinus.openid.ne.jp/」となる。URLのように見えるがこれがIDだ。そして次のコードをIDにしたいサイトの<head>〜</head>の中に記載する。

<link rel="openid.server" href="http://www.openid.ne.jp/index.php/serve">
<link rel="openid.delegate" href="http://delphinus.openid.ne.jp/">

これで完成。今回は試しにこのブログのトップ「https://blog.delphinus.dev/」に載せてみた。

OpenID対応サイト「Live Journal」で実際に試したところ、OpenID「https://blog.delphinus.dev/」で確かにログインできた。これは非常に便利。もっと対応サイトが増えないかなあ。

【MovableType】決まった時刻にブログを自動で再構築する

記事を投稿したとしても、最新の状態になるのはその記事とトップページなどで、他の記事に含まれる「最近のエントリー」「関連するエントリー」は更新されない。これらを更新するためにはブログ全体の再構築が必要なのだが、記事の投稿のたびにやるのでは二度手間だ。そういうときにはこれ。

Movable Type 備忘録 – MovableTypeを自動的に再構築する
http://bizcaz.com/archives/2006/08/09-221138.php

mt-rebuild / Code / The Appnel Group
http://appnel.com/code/mt-rebuild

ずいぶん古いスクリプトだがMT5でも問題なく動くようだ。インストールした上で、Cronを使ってサーバの暇な頃(朝4時とか)に実行するよう設定した。

mt-rebuildのインストール

ダウンロードしたファイルをmtディレクトリに展開する。

$ cd mt
$ tar zxvf ~/Downloads/mt-rebuild-0.2.tar.gz
x Changes
x docs/
x docs/mtrebuild.html
x mt-rebuild.pl

試しに再構築してみる

コマンドラインから実際に再構築をやってみよう。

$ ./mt-rebuild.pl -blog_id=ブログID -mode="all"

-modeオプションや-archive_typeオプションで(必要ならば)再構築する範囲を指定できるが、今回はそこまで指定していない。

指定時刻に実行するように設定する

$ sudo crontab -e
10 4 * * * /path/to/mt/mt-rebuild.pl -blog_id=4 -mode="all" > /dev/null 2>&1

これで毎日午前4時10分に実行されるようになった。

iPhone用ページに自動で転送する

【MovableType】iPhone用テンプレートの導入 | blog.delphinus.dev」では iPhone 用のページを作成し、切り替えて利用できるようにした。しかし、実際に使うときにはPCで見たときは PC 用ページ、iPhone で見たときには iPhone 用ページを表示して欲しい。そんなときは Apache の mod_rewrite モジュールを利用する。ここのサイトが詳しかった。

杉浦とホームページ製作〜 URL を書き換えろ!「Rewrite 機能とは」
http://www.nurs.or.jp/~sug/homep/rewrite/rewrite1.htm

Apache の設定を確認

httpd.conf に次の一行があるか確認する。そもそもこれがないとモジュール自体が機能しない。

LoadModule rewrite_module libexec/apache2/mod_rewrite.so

そして肝心の「iPhone 用のページに自動で転送する」ためには次の設定を使う。

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod)
RewriteCond %{REQUEST_URI} !^/m/
RewriteRule ^(.*)\.html$ /m/$1.html [L]

User-Agent 文字列に「iPhone」「iPod」を含み(2 行目)、要求された URI が「/m/」で始まらない場合は(3 行目)、HTML ファイルの要求を「/m/」ディレクトリにある同名のファイルへ転送する(4 行目)。これをどこに書くかは二通りある。

  1. httpd.conf(またはそこにインクルードされるファイル)に書く
  2. 転送したいファイルのあるディレクトリの .htaccess に書く

Continue reading