Docomo PRIME6に応募

2007-10-04追記
当選してしまいました。。。

Docomoプレミアクラブで今、DoCoMo PRIME6というキャンペーンをやっている。実際には第2弾。第1弾は締め切り後にやっていたことを知って、悔しく、今度こそは!と思ってたのだ。
で、夫婦ともども6年以上のDocomoユーザーなので、とりあえず応募しておいた。

俺:dancyu特選グルメギフト
嫁:北の味覚・海鮮カニ鍋セット

食!エンゲル係数高し!

Google Sitemap Generator – Ultimate Tag Warrior – Tags Addon Plugin の出力内容を一部修正

2007-08-09更新
ウチの環境だけかもしれないが、同名で別IDのtagが存在しているせいで、sitemap.xmlに同一URLが複数出力されてしまっていたため、SQLにdictinctを追加した。
さらに、日本語表記のタグを使っているので、 URLEncode処理を追加。


Ultimate Tag WarriorGoogle Sitemap Generator も素晴らしいプラグインだ。
導入してからGoogle botも的確にページを拾っていってくれている気がする。さらに、UTWが持つタグ情報をSitemapに同時出力してくれるWordPress Google Sitemap Generator – Ultimate Tag Warrior – Tags Addon Plugin(長い名前だ)を導入することで、さらにGoogleに渡せるSitemapが充実する。しかも初期設定さえしてしまえば、あとは意識すらしなくて良い。

ただ、今日ログを眺めていたときにGooglebotが拾っていったURLで404エラーが出てる。結構出てる。Google様に嫌われたらどうしよう!
SQLを見てみたらtagテーブルに存在する全てのタグ名を拾ってきて出力しているようだ。
UTWの使い方が悪いのかもしれないが、どの記事にも割り当てられていないタグが存在するために、それを拾いに来たGooglebotに404を返してしまっている。
なんとなく気持ち悪いので、記事で使われているタグのみをSitemapに含めるように修正。

(今回の対象バージョンは2.1)
113行目のSQLを修正。
[php num=113]
$utwtags=$wpdb->get_results(“SELECT tag FROM ” . $UTWtabletags);
[/php]

POST2TAGテーブルと結合して、記事が存在するタグだけ取り出し。
[php num=113]
$utwtags=$wpdb->get_results(“SELECT distinct tags.tag FROM ” . $UTWtabletags . ” tags, ” . $UTWtablepost2tag . ” p2t WHERE tags.tag_ID = p2t.tag_id”);
[/php]

日本語タグをURLエンコード。$utwtag->tag部分に。
[php num=116]
$utw_tag = GetUTWTagUrl(urlencode($utwtag->tag), $UTWhome, $UTWbaseurl, $UTWuseprettyurls, $UTWtrailing);
[/php]

少しでも404が減らしたい方どうぞ。

FeedBurner日本語版も実質の完全無料化っぽいので設定変更

FeedBurner Stats
Feedburner Infomation | 4つの新サービスを無料で提供開始のお知らせ

このたび、GMOアドネットワークス株式会社が運営するRSS管理サービスFeedBurnerは、機能面における利便性の向上を目的に、7月20日(金)より、4つの新サービスを無料にて提供開始いたしました。新サービスは、高機能版アクセス解析機能「FeedBurnerスタッツPRO」と、独自ドメインでのRSS(フィード)の配信を可能とする機能「マイブランド」、およびRSS(フィード)記事がクリックされた回数を確認することができる「記事のクリックスルー集計-検索エンジン優先設定」と、独自ツールとして開発できるようAPIをご提供いたします。

ITmedia News:Google傘下のFeedBurner、サービス2種を無料にあたりを読んで日本版はまだかなぁと思っていましたが、7月20日から無料化されていたんですね。毎日管理画面見ていたのに気付かなかった。。。

1.「FeedBurnerスタッツPRO」・・・高機能版アクセス解析機能
「FeedBurnerスタッツPRO」とは、これまで「FeedBurner」が提供していたRSS購読者数を集計するアクセス解析機能に、RSS (フィード)記事へのユーザーのアクセス数や、閲覧回数を確認する機能を付加した高機能版です。「FeedBurnerスタッツPRO」を「有効」にすることにより、以下の2つの機能が有効になり集計数字を表示します。

このあたりは普通にありがたい。早速ON。

2.「マイブランド」・・・独自ドメインでのRSS(フィード)を配信可能に
「マイブランド」を使うことで、パブリッシャー(=発信者)は各自好みのドメインで「FeedBurner」のフィードにアクセスすることができます。パブリッシャーは、「マイブランド」を利用することにより、RSS(フィード)購読者に対し、パブリッシャー独自のブランドを確立し、印象付けることが可能となります。

あと、このサービスについては、今使っているNO-IPのFree版では残念ながらCNAMEが設定できないようなので、Enhanced版にアップグレードしようかと考え中。年間10$弱だし。だいぶこのドメインにも愛着沸いてきたしなぁ。Free版だとメール見逃すと消えてしまう怖さもあるし。あと、”no-ip.com”って僕が取得した頃は無料サービスでもあったんだけど、今は有料サービスしか使えないよう。ちょっとラッキー。

wp-mta導入 メールで投稿可能に (Postfix+procmail使用)

配布元:WordPress Plugins/JSeries » wp-mta
せっかく自宅サーバだし、MTAも自由に触れる環境にあるのでwp-mtaの導入をしてみることに。
このスクリプトはメールサーバにメールが着信したタイミングで実行されるため、WordPressの標準機能にあるメールでの投稿に比べるとメール送信から反映されるタイムラグが無くて良い。

設置方法は、ほぼ配布元にある手順どおり。
違う部分は.forwardを使う部分をprocmailに変えたくらい。あとはスクリプトがウチの環境だと上手く動かなかったところを簡単に手直しさせてもらいました。

procmailを使っている理由は、Postfixでのメール配信にvirtualを使っていて.forwardが使えなかったため。メール受信時にこのスクリプトがキックできれば方法は何でも良いはず。(実際うまくいきました)

1.まず設定書き換え (デフォルトのままで使いました)

2.PEAR::Mail::mimeDecode.php インストール
とりあえず入っているか確認。

# pear list
Installed packages, channel pear.php.net:
=========================================
Package Version State
Archive_Tar 1.3.2 stable
Console_Getopt 1.2.3 stable
PEAR 1.6.1 stable
Structures_Graph 1.0.2 stable

で、入っていないっぽいので、pear install コマンドでサクッと。

# pear install Mail_mimeDecode
downloading Mail_mimeDecode-1.5.0.tgz …
Starting to download Mail_mimeDecode-1.5.0.tgz (9,281 bytes)
…..done: 9,281 bytes
downloading Mail_Mime-1.5.2.tgz …
Starting to download Mail_Mime-1.5.2.tgz (22,176 bytes)
…done: 22,176 bytes
install ok: channel://pear.php.net/Mail_mimeDecode-1.5.0
install ok: channel://pear.php.net/Mail_Mime-1.5.2

3. ~/.procmailrc レシピ追加

:0
* ^To: hogehoge@example.com ←受信用のメールアドレスに変更
|/usr/bin/php [wordpress-root]/wp-mta.php

4.wp-mta.php コメントアウト (12-15行目)
[php num=12]
#if (! defined(‘WPMTA_DEBUG’) && ! isset($_SERVER[‘RECIPIENT’])) {
# echo “Oops! Not launched from dot-qmail/dot-forward file!\n”;
# exit;
#}
[/php]

5.wp-mta.php function yn_photo_sub_dir修正 (415行目付近・ちょっとずれてるかも…)
なぜか mkdirでの再帰作成時のパーミッションがYYYYは700で、MMは755で作成され、画像表示が出来ないためMMのみでなく、YYYYも強制的にchmodするようにした。
mkdirをrecursiveで実行した際にそうなるっぽいのだが、原因不明。切り分けはきちんと出来ていないが、まあ、自分が使うだけのスクリプトなのでよしとする。
使用中のPHPバージョンは PHP 5.2.0-8+etch7 (cli) (built: Jul 2 2007 21:46:15)、ウチだけかなぁ。
[php num=415]
function yn_photo_sub_dir($post_time_local) {
$dir = WPMTA_PHOTO_DIR . gmdate(‘Y/m’, $post_time_local);
$dir2 = WPMTA_PHOTO_DIR . gmdate(‘Y’, $post_time_local); //これ追加
if (! is_dir(ABSPATH . $dir)) {
if (! mkdir(ABSPATH . $dir, 0755, TRUE)) {
echo “Error: Can’t create thumbnail folder.\n”;
return WPMTA_PHOTO_DIR;
}
chmod(ABSPATH . $dir2, 0755); //これ追加
chmod(ABSPATH . $dir, 0755);
}
return $dir . “/”;
}
[/php]

6.wp-mta.php 一部変更 冒頭
dot-qmailからの呼び出しかどうかをチェックしている部分があるが、その代わり。上記でコメントアウトした部分の下に。
コマンドライン引数が空だったら、CLIで実行されていないものとしてサイトのトップページにリダイレクト。
放っておいても実害は無いが、ちょっと気持ち悪いので。
ただし、結果的に多分動いているからOKレベルなので、この実装で本当に正しいかは謎。
[php]
// —– Check if launched from CLI —–
if (! defined(‘WPMTA_DEBUG’) && ! $argc > 0) {
$host = $_SERVER[‘HTTP_HOST’];
$uri = rtrim(dirname($_SERVER[‘PHP_SELF’]), ‘/\\’);
header(“Location: http://$host$uri/”);
exit;
}
[/php]

これで、wp-contensの下にphotosディレクトリを作成して、メール受信ユーザのIDにchownしておけば動作する。
便利なスクリプトを公開して下さったyuriko氏に感謝!

2007-08-02追記
function yn_images2htmlの一部修正。
WordPressを/(ルート)にインストールしてるのですが、その場合、画像へのリンクのURLに/が1つ多く付いてしまうので。
[php]
$short_url = preg_replace(‘#^https?://[^/]*/?#’, ‘/’, get_bloginfo(‘wpurl’)) . ‘/’;

$short_url = preg_replace(‘#^https?://[^/]*/?#’, ‘/’, get_bloginfo(‘wpurl’));
[/php]
相変わらず結果オーライの場当たり的対応です。。。