Ktai Entryタグの投稿

2008-11-22
晴れ

Ktai Entry 0.8.9 ベータ1配布

ゆりこ による 23:59:10 の投稿
カテゴリー: WordPressハック
タグ: , ,

WordPress 用メール投稿プラグイン Ktai Entry のバージョン 0.9.00.8.9 ベータ版 (その1) を配布します。あくまでベータ版ですので、新機能を試してみたい方のみご利用ください。(追記: 正式版は 0.8.9 となったのでベータ版も 0.8.9 としておきます。アーカイブファイル名および展開後の中身は 0.9.0 です。あしからず)

  • ソフトバンク 3G 端末から Gmail に絵文字送信した場合の絵文字検出に対応しました。
  • iPhone (ファームウェアバージョン 2.2 以降) からの絵文字送信に対応しました。
ダウンロード: ktai_entry090-beta1.tar.bz2 (86.7KB)
より新しい正式版が出ています。

今回はソフトバンクおよび iPhone 対応がメインです。iPhone は実機を持っていないため、お持ちの方はぜひご確認をお願いいたします。ただし、iPhone からの絵文字送信は、投稿先が Yahoo! メールもしくは Gmail のみ対応です (ひょっとすると、これら2つのメールサービスでも iPhone からの絵文字受信に対応していないかもしれませんが)。

WordPress 2.7 対応ですが、たぶんそのままでも問題なく動くはずなので、特に修正はしていません。ただし、WordPress 2.7 では、画像サイズに「大サイズ」というのが追加されたり、管理パネルの設定に「メディア」が追加され、デフォルトの画像サイズや画像位置が設定できるようになっています。この設定を反映させるべかどうか、検討中です。

2008-10-03
晴れ

ソフトバンク携帯から Gmail へ絵文字が送信できてた

ゆりこ による 06:28:20 の投稿
カテゴリー: WordPressハック,ネットワーク
タグ: , , ,

今ごろ気がつきましたが、6月10日からソフトバンク 3G 携帯電話から、Gmail / au one メールへの絵文字送信が行なわれていました。ということは、Ktai Entry でも、ソフトバンク端末から Gmail に絵文字を送った場合の対応を行なわないといけないわけです。

Ktai Entry に絵文字対応機能を付けたとき (今年5月ごろ) は、ソフトバンクから絵文字を送れる相手は Yahoo! メールだけでした。そして、Gmail が絵文字受信可能な送信元は au とドコモだけだったのです。Gmail がソフトバンク絵文字に対応したとなると、絵文字対応については、Gmail と Yahoo! メールはほぼ対等になったと言えます (au はどこに対しても絵文字をそのまま送出です)。

しかし、Gmail と Yahoo! メールでは絵文字受信の実装方法がだいぶ違うので、調査が必要ですね。ドコモ→ Gmail は Shift_JIS で送信していますが、ドコモ/ソフトバンク→ Yahoo! は ISO-2022-JP で「独自の絵文字 JIS コード」(au の絵文字 JIS コードと互換) を使っています。ソフトバンク→Gmail はどちらの実装なのか、気になるところです。

あと、au one メールの対応をサボっていますが、これも調査して対応をすすめたいと思います。次期 Ktai Entry はやるべきことが多くて大変や〜〜。

他に考えているのは、わたしのように「メール着信したら投稿スクリプトを起動」させる (==携帯電話から自分のメールサーバーにメール投稿する) 場合でも、ドコモ/ソフトバンクの絵文字が使えるようにすることです。au とウィルコムは相手によらず絵文字を送出しているので、自分のメールサーバーでも絵文字が届きますが、ドコモやソフトバンクは行儀がいいので、特定の相手 (携帯電話や Gmail, Yahoo! メール) 以外は絵文字を〓 (ゲタ) に変換してしまいます。このため、自分のメールサーバーでは絵文字が受信できないのです。これを回避するには、ドコモ/ソフトバンク端末→ ezweb.ne.jp アドレス → 他アドレスに転送、とやればいいのではと考えています。ただ、2回目の転送時に絵文字が削除される可能性はあります。また、ezweb.ne.jp アドレスから、直接、メール投稿用アドレスに転送するのは、とってもやばいです。このため、au one メールから他アドレスに転送できるならば、投稿専用の au one メールアカウントを取得すればよいので、同じことができそうです。こちらについても、もうちょっと研究してみたいと思います。

[追記 2008-10-04] 調査してみたところ、ソフトバンク→Gmail は、Yahoo! メールと同様、絵文字用 JIS コードに変換 (本文は ISO-2022-JP) でした。このため、ソフトバンク→Yahoo! の処理を Gmail にも適用させれば OK です。というか、ソフトバンクからのメールは、Yahoo! 宛かどうかに関わらず絵文字検出させることにすればよさそうです (現状は Yahoo! 宛のみ絵文字検出)。

また、携帯電話→Gmail→他のアドレス、と転送をかけた場合、絵文字コードの除去が行なわれないので、自分のメールサーバーでも絵文字が使えそうです!!

2008-10-02
晴れ

WordPress メール投稿プラグイン Ktai Entry 0.8.8 リリース

ゆりこ による 23:33:47 の投稿
カテゴリー: WordPressハック
タグ: , , , , , ,

WordPress 用メール投稿プラグイン「Ktai Entry」のバージョン 0.8.8 をリリースいたします。変更点は以下の通りです。

  • ページキャッシュを行うプラグイン (WP-Cache, WP Super Cache) がインストールされている場合、「POP3 取り込み間隔」が「しない」の設定では、外部メールボックスを読み出すトリガーとなるスタイルシートが出ないようにしました (バージョン 0.8.7 では表示されていました)。
  • 外部メールボックスを随時読み出す方式の場合、絵文字が使える状況 (au やウィルコムから送信していたり、ドコモから Gmail に送ったり等) でメールボックスに2通以上メッセージが溜っているとき、PHP エラーが発生して処理が中断してしまう不具合があったのを修正しました。
  • バージョン 0.8.6, 0.8.7 で、投稿日時を添付写真の撮影日時として指定する機能 (DATE: コマンドで数字を指定) が効かなくなっていた不具合を修正しました。
  • RFC2047 違反の日本語添付ファイル名をうまく読み取れるようにしました。Outlook Express や Gmail などで日本語添付ファイル名を使うと、本来使うべき RFC2231 ではなく RFC2047 に違反した独自のメール形式になっているため、以前のバージョンではうまく抽出できませんでした。
  • WordPress ME 2.1.x において写真等を添付した場合、WordPress のバグにより「添付ファイルが見つかりません。」という文字列が挿入される現象を回避するようにしました。
  • PHP 5.0.x 系統では動作していなかった不具合を改善しました。
ダウンロード: ktai_entry088.tar.bz2 (86.6 KB)
より新しいバージョンが出ています。

今回もバグ修正です。比較的大きいバグが改修されていますので、当該する問題に悩んでいた方はぜひともアップデートをお願いいたします。不具合が多数見つかってしまったため、新機能を盛り込むのは先送りしました。今度こそ、新機能を入れてバージョン 0.9.0 を出したいと思います。

あと、「エラーメッセージが謎」ということで困っている方がおられたので、Ktai Entry のエラーメッセージ一覧をドキュメント化して添付しました。

2008-08-14
晴れ

WordPress メール投稿プラグイン Ktai Entry 0.8.7 リリース

ゆりこ による 00:04:23 の投稿
カテゴリー: WordPressハック
タグ: , , , , , ,

WordPress 用メール投稿プラグイン「Ktai Entry」のバージョン 0.8.7 をリリースいたします。変更点は以下の通りです。

  • プラグインを無効化したとき、メール設定のパスワードを別途保管しておき、後で有効化したとき復帰させるようにしました (従来は、プラグインを無効化すると、メール設定のパスワードが初期化されていました)。
  • ページキャッシュを行うプラグイン (WP-Cache, WP Super Cache) が有効な場合、外部メールボックスを読み出すトリガーとなるスタイルシートは常時表示させるようにしました。キャッシュが有効な場合、読み出し時間間隔を経過してスタイルシートを表示させるようにしても、実際のページ出力に反映されないことがあるためです。
  • ログ機能のメッセージの日本語化を簡単に行えるようにしました。
  • 管理パネルで「オプションの削除」を行ったとき、メールボックスの確認を最後に行った時刻を削除するようにしました。(従来は削除が漏れていました)
  • post_name フィルターが実行されていない不具合を修正しました。
ダウンロード: ktai_entry087.tar.bz2 (83.8 KB)
より新しいバージョンが出ています。

今回はバグフィックスなどの細かな修正です。特にプラグインを無効→有効にしたときに外部メールボックスのパスワードが消えてしまう仕様は分かりにくかったのですが、今回改善いたしました。またも、「今後の予定」に書いてある機能の実装が出来てませんが、そろそろ手を付けたいですね〜〜。

2008-08-12
晴れ

プラグインの deactivate アクションは2回実行される

ゆりこ による 02:53:42 の投稿
カテゴリー: WordPressハック
タグ: , ,

Ktai Entry の次期バージョンでは、「プラグインを無効にしたら、メールサーバーのパスワードが初期化されるため、有効化したとき再入力が必要」という仕様を改善する予定です。実装としては、プラグインを無効化したとき、パスワードを別途保存してから初期化し、有効化したらそれを復帰させるという仕組みです。

わざわざ保管するならそのまま残しておけばよさそうですが、そうするとwp-mail.php を実行されたとき外部メールサーバーにアクセスされてしまう問題が発生してしまいます。Ktai Entry が有効なときは wp-mail.php の実行を抑止していますが、停止したときはパスワードを初期化することで防いでいるわけです。

本題はそこではありません。なんと、「プラグインを無効化したときに実行されるアクション」(Ktai Entry の場合 deactivate_ktai_entry/ktai_entry.php) が、実は2回実行されることが判明しました。1回だけ実行されると思ってコーディングすると保存したパスワードが消えてしまうため、調査した結果2回実行されていたのでした。

public function stopped() {
	$pass = get_option('mailserver_pass');
	if ($pass && $pass != 'password') {
		update_option('ke_mailserver_pass_store', $pass);
	} else {
		delete_option('ke_mailserver_pass_store');
	}
	update_option('mailserver_pass', 'password');
}

当初書いていたコードは上記の通りです。プラグインが無効化されたら、mailserver_pass オプションの値を ke_mailserver_pass_store として保管します。もともと mailserver_pass が空もしくは初期値 (‘password’) の場合は、安全のため ke_mailserver_pass_store が存在すれば消す処理を入れました。ところが、この安全処理が仇になりました。2回目の deactivate アクション実行時にここを通ってしまうため、保管したパスワードが消えるのです。結局、安全処理は削除せざるを得ませんでした。

WordPress 2.5, 2.6 ともにそうなっています。WordPress 2.3 以前は調べていませんがたぶん同じでしょう。なんで2回実行してしまうんでしょうね?? WordPress コアのコードを見る限り、1回だけしか実行されないような気がするんですが……。

2008-07-27
晴れ

ユーザー視点と作者視点

今ごろ気がついたのですが、wpmob, wpmobExpress の作者さんから「そっとしておいてもらえると嬉しい」と言われていました (リンクするかわりに引用しておきます)。「作者の視点」としてはまさにその通りで、そう言いたい気持ちもよく分かります。

あと最近、ソフトウェアを批評する方のサイトから良くリンクを頂いているようですが、正直そっとしておいてもらえると嬉しい。

紹介して頂けるのは本当に有り難いのですけれど、単なる趣味としてやってんだから類似したソフトウェアといちいち何回も細かく比較されるのは不快です。
自作のソフトウェアの機能アピールに当て馬として使われるのはもっと不快です。

他のソフトを引き合いに出して自作をアピールするなら、もっと優秀なソフトウェアのみ選出すると良いでしょう。
拙作は明らかに「機能不足」で「時代遅れ」なソフトウェアなワケだから無視して下さい。

ただ、わたしが「メール投稿ツールの比較表を作った」のは、純粋にユーザーの便宜のためでした。WordPress 用メール投稿ツールは、日本語に対応したものだけでも7種あり (Ktai Entry 含む)、選択基準を提示すべきではと考えたのです。網羅性を重視したため、見つけたものはすべて掲載しました。そして、ユーザーの立場としては「機能の劣る点」「問題点」も重要な情報ですから、○×表として記載したり、日本語ファイル名の対応などを確認したわけです。確かに「作者としての立場」を考慮しない書き方なのはまずかったですが、「作者さんにはがんばってメンテナンスしてほしい」という願いがありました。

「当て馬」があるとすれば、それは拙作の wp-mta および、Otsukare さん作の wp-shot になるでしょう。wpmob および wpmobExpress は、古いというより「枯れている」というのが合っていると考えていて、けなす意図はありません。優劣を判断してツールを選択するのはユーザーですから。

ついでに書いておくと、WP MOBILE の非難は、どちらかというと作者視点セキュリティー啓発者としての活動です。同様の機能を持つプラグインを作っているために「ライバル潰し」と誤解される可能性が大なのですが、あくまで「危険なプラグインの啓蒙」です。Ktai Syle は、「安全なものの代替案」として提示していると考えてください。(その割にバージョン 1.3x はバグが多くてご迷惑をおかけしましたが……)

幸い、WP MOBILE はユーザーがほとんどいなくて安心しているのですが、Mobile Eye+アダルト広告問題が見つかってしまい、これを啓発せざるを得ないのは残念なところです。セキュリティー欠陥ではないので「ほっとけばいい」という考えもあるでしょうが、危機管理という面では放置できないネタなので、広報しています。ライバルとなるソフトウェアを開発している人が言うのは、告知効果という面ではいまいちなので、利害関係のない第三者にやってもらいたいところです……。というか、まおうさんに修正して頂くのがベストですね ;-) 例えば、URLGATE 機能にリストアップするサイトを個別に ON/OFF できるようにして、画像リサイズ/画像URLGET/ファイルシーク/pic.to の横に「アダルト広告注意」と書いておく (デフォルトはすべてオフ) などの実装が考えられます。

ユーザー視点としてみると「便利なものを使いたい」「機能豊富なものを使いたい」となるでしょうし、多くのプラグイン作者は「自分が必要なものを作りたい」「ハック欲を満たしたい」となるでしょう。わたしの場合、そこに加えて「セキュアなものが普及してほしい」「危険なものは使うべきではない」という考えも持っています (「使うべきでないプラグイン12選」はその一例)。そのへんのバランスはなかなか難しいですね。WordPress コミュニティーに「セキュリティーを重視する」という文化が醸造されればいいのですが……。

2008-07-21
晴れ

WordPress 2.6 対応続き

なんとか Ktai StyleKtai Entry の WordPress 2.6 対応強化 (wp-content ディレクトリーの移設対応) を行ないました。Lightweight Google Maps (LWGM) および Weather Journal も同様の改良を行なっていますが、他に改善したい点があるため、リリースはもう少しお待ちください。

LWGM の方は、固定ページに登録した位置情報が大きい地図ページに出ないという問題・同じ地点に複数マーカーがつくと下にあるマーカーがクリックできない問題に手をつけようとしています。Weather Journal の方は、WordPress 2.5 以降で天気を未設定のまま投稿しようとすると、WordPress の JavaScript の所為で、直前に投稿した他の日の天気が入ってしまう問題が見つかっています。そういう挙動をキャンセルするよう JavaScript を追加する必要がありますが、どう実装すればいいか悩んでいるところです。

また、今回サボりましたが、管理機構の SSL 対応により、クッキーの扱いが変わったり、プラグインのありかを示す URL を取得する新しい API が用意されたりしたので、これを使うようプラグインを修正することも考えています。特に、Ktai Style は管理機能があるため対応は必須です。しかし、日本の携帯電話は、SSL でクッキーを使うときの挙動があやしいため、うまく実装できるかどうかは不安です……。

WordPress 2.6 対応とは違いますが、Ktai Location で「同一地点であるかの判定」が厳しすぎることが分かりました。7月19日に京都駅についたレポートで、本文に埋め込まれた GPS情報URL による位置情報と、写真の EXIF に埋め込まれた位置情報の両方の地図が出てしまっています。Ktai Location が抽出した位置情報が微妙に異なっていたわけですが、これは au 端末が写真の位置情報をもとに作った GPS情報URL の精度が悪いのか、Ktai Location の内部処理が悪くて計算結果が間違っているのか、要調査ですね。

[追記] LWGM ですが、バージョン 1.40 のベータ版を出しました。

WordPress メール投稿プラグイン Ktai Entry 0.8.6 リリース

ゆりこ による 17:48:56 の投稿
カテゴリー: WordPressハック
タグ: , , , , , ,

WordPress 用メール投稿プラグイン「Ktai Entry」のバージョン 0.8.6 をリリースいたします。変更点は以下の通りです。

  • 外部メールボックスの読み出しを「しない」に設定したとき、または、読み出し時間間隔を経過していない場合は、外部メールボックスを読み出すトリガーとなるスタイルシート表示を行わないようにしました。
  • WordPress 2.6 以降で、wp-content/ ディレクトリーもしくは wp-content/plugins/ ディレクトリーを移設した場合に対応しました。ktai_entry/wp-load.php の書き換えが必要です。
  • 本文が同じ内容を投稿しようとするときの重複チェックを強化しました。
  • 添付画像がサーバーに保存できなかったときのエラー処理を改善しました。
  • プラグインを停止したとき、POP3 サーバーのパスワードのみ初期化するようにしました。(従来はすべての設定を初期化していました)
  • 次の独自フィルターフックを追加しました: post_category, post_keywords, image_rotate, post_name, post_date
ダウンロード: ktai_entry086.tar.bz2 (78.3 KB)
バージョン 0.8.7 をリリースしました。

今回は WordPress 2.6 対応の強化および、独自フィルターフックの追加です。WordPress 2.6 の新機能のうち、管理機構の SSL 化には対応していません (外部メールボックスを「すぐ読み出す」などが動かなさそう)。独自フィルターフックは、「VGA 以上の画像でも強制的に縦向きにしたい」という相談があったため、フィルター関数を書けば可能になるようにしたものです。ただし、このフィルター関数はテストしてないので動かなかったらごめんなさい ;-)

2008-07-09
晴れ

Yuriko.Net で使用しているプラグイン

ゆりこ による 13:04:25 の投稿
カテゴリー: WordPressハック
タグ: , , , , ,

Masayan さんところで「もし今、WordPressのプラグインフォルダに10個のプラグインしか追加できないとしたら、最低限何を入れますか?」というトラックバック企画が行なわれていますので、乗っかってみましょう。当サイトで使用しているプラグインは、一応自己紹介に書いてある通りならば「7つ」(Akismet, WP-Multibyte-Patch 除く) ですが、実はそこから微妙に増えていて12個になってしまいました。

ということで、そこから優先度の低いものを削ると以下の通りでしょうか。

Edit Comments XT (Wöhrer 氏作)
非ログインユーザーがコメント投稿した場合でも、ユーザー自身が一定時間だけ編集可能とする。
EventCal (自作・未公開)
サイドバーのイベントカレンダー。日本の祝日対応
Force Wave Dash (自作)
Windows 環境で入力した「全角チルダ」を「波ダッシュ」に補正。
Ktai Entry (自作)
メール投稿 (モブログ)
Ktai Style (自作)
携帯電話対応。軽量なページを表示・簡易的な管理機構を提供。
Reject Short Comments (自作)
スパムコメント/トラックバック対策。短いコメントやトラックバックを拒否。
Weather Journal (自作)
日付の横に自分で入力したお天気を表示。
WordPress.com Stats (Skelton 氏作)
WordPress.com のアクセス統計機能を自分のサイトで使えるようにする。
Ynet Permalink (自作・未公開)
以前の Yuriko.Net におけるパーマリンク体系 (/arc/YYYY/mm/ddX) を実現。

旅行記の方では位置情報と地図が必須なので、拙作のKtai Location および Lightweight Google Maps が追加になります。そのかわり、Ynet Permalink は不要になるため、都合10個に収まります。

同じく拙作の JSeries Notifier ですが、自サイトでは常に最新版が入っているので使う必要がありません。また、サイドバーでアーカイブを年ごとに折り畳む処理は、テーマファイルの functions.php で自作関数 (未公開) を書いているため「プラグインの個数」の制約にはひっかかりません ;-) スパム軽減プラグインのNonce! Please も、テーマの comments.php や functions.php に押し込めることが可能なので、必須プラグインからは外れます。

WordPress 導入以前の Yuriko.Net の見た目・機能を実現するための自作単機能プラグインが多く、他人さんのプラグインは非常に少ないです。これは、「既存のプラグインに満足できるものが少ない」「他人のコードが信用できない」「自分でプラグインを作るのが楽しい」という理由もあります。2番目の理由は結構深刻で、セキュリティーに無頓着なプラグインが結構あるんですよね……。以前、旅行記では「Plug’n Play Google Map」を使っていましたが、地点数が増えると PHP メモリー不足になることと、XSS 脆弱性があったことで、「人気があるプラグインでも信用ならない」ことが分かってしまいました。作者にセキュリティーホールを報告しても梨のつぶてで、これが「自分でプラグインを書く」きっかけとなり、他人のプラグインを入れるのは慎重になりました。

といっても、Edit Comments XT, WordPress.com Stats については、セキュリティーホールがないことのチェックはサボっていますが ;-)

[追記] しまった。旅行記の方では「Change Thumbnail Max Side Length」も必須でした (WordPress コア改造で逃げるか、テーマの functions.php に移設する手もありますが)。そのままだと11個になってしまうので、WordPress.com Stats を外すことにします。

2008-07-04
晴れ

WordPress 2.6 対応つづき

ゆりこ による 00:26:02 の投稿
カテゴリー: WordPressハック
タグ: , ,

拙作プラグインの WordPress 2.6 対応をすすめていますが、他にも考慮しなければならない新機能がありました。それは WP_CONTENT_DIR, WP_PLUGIN_DIR 定数の設定です。Codex にある WordPress 2.6 の新機能では特に説明がありませんが、これらはおそらく「wp-content/ ディレクトリーや plugins ディレクトリーをデフォルト以外に設定するための仕掛け」だと思われます。

Ktai Style, Ktai Entry では、プラグインの持つリソース (言語リソースや携帯テーマなど) のアクセスのため、PLUGINDIR 定数をもとにパスを変数に保存しています。このため、WordPress 2.6 対応させるためには、WP_PLUGIN_DIR 定数を基準にしなければなりません。他の置き場所に変更した場合に不具合が出ないようにするためにも、対応は必須ですね。

Ktai Style 1.41, Ktai Entry 0.86 はほぼリリースできる状態になっていたのですが、これらの対応をするために、もうちょっと手直しが必要なようです。

[追記] 「What Plugin Coders Must Know About WordPress 2.6」のコメント欄で指摘されていますが、プラグインディレクトリーを移設する機能を使うと、wp-config.php を include するスクリプトが正常動作しなくなりそうです。wp-load.php への相対パスが一意に決まらないため、「WordPress 2.6 対応」で書いたように dirname(dirname(dirname(dirname(__FILE__)))); で WordPress ルートに辿り付くとは限らないためです。うーん。これは困りました。事実上、「プラグインディレクトリーを移設する機能は使いものにならない」ということですよね。

チケット #6938 にコメントしました。Ryan さんからは wp-content/wp-load.php を提案されたものの、それに対する反対意見も出ていて、対応策はどうなるやら。とりあえず、WP_PLUGIN_DIR 定数の設定機能は使用禁止という制限をつけざるを得ないようです。