Google Crisis Response(Google)
災害に関する情報源や、行方不明者情報の収集と検索を行う『パーソンファインダー』を初めとするツールの提供が行われています。

2007年2月5日 月曜日

オリジナルプラグイン EntryKeywords の公開迫る

Filed under: EntryKeywords,WordPress,プラグイン
時間:1時49分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

 先月の中ごろから WordPress プラグインの作成に挑んできましたが、もうまもなく公開できると思います。名称は、EntryKeywords。

 機能としては、記事に対してキーワードを複数設定し、それをいろいろと利用しようというものです。再利用を重視している点でタグ系のプラグインとは違います。基本は文字列での表示ですが、配列や JSON で取得できるなど、プログラマ寄りになっています。
 公開場所は WordPress Plugins/JSeries の予定。発案者であるひろまささんには参加の申し込みをしてあるので、現在返事待ちです。

 まだドキュメントもなくベータ版状態ですが、よかったらいじってみてください。GPL ライセンスですので、変更もご自由に。

Comments (1)

2007年1月29日 月曜日

Gigazine の威力

Filed under: ブログ
時間:0時34分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

 アクセスログを見たら、一昨日の訪問者数が普段の2倍に。「更新すらしていなかったのに何で?」と主なリンク先を確認してみると、超大手の Gigazineさんが約74%です。ちなみに、2位は Google で14.6%でした。

 さっそく見に行ってみたところ、夕方の記事からリンクされているではありませんか。

 リンク先は Akismet のハックを扱った記事。しかも、日本語に特化した詳しい使い方の説明として紹介されています。
 紹介のされ方がいいとかスパム関連とかあるとしても、リンクひとつで普段の倍のアクセスをもたらすとは。いやはや、恐れ入ります。

 しかし、使い方の説明はまったくないと思うんですが、いいんでしょうか。ダブルバイトを含むスパムだけ表示するようにする方法のところ?うーん・・・。
 多分、普通に使う分には WordPress Japan ので十分だと思います。基本的には設定したら、あとはほったらかせばスパム判定されたものは消えてゆきますので。

Comments (0)

2007年1月28日 日曜日

FreeBSDアップグレードでDNSが行方不明に

Filed under: FreeBSD
時間:22時58分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

 予定より1週間遅れましたが、ローカルサーバーの FreeBSD を 5.4 から 6.2 にバイナリアップグレードしました。イメージファイルをダウンロードして CD-R に焼いて起動させて実行。何の問題もなく終了。

 そのはずでした。

 念のためチェックしていると、ウェブサーバーが応答しないことが判明。Webmin で確認してみると Apache が起動していません。手動で起動させてみると、今度は名前の解決ができないとかでエラー。名前の解決を手動で試みるも、やはりエラー。
 DNS サーバーの BIND を調べてみると、起動していますが設定ファイルが書き換えられています。不安を感じながらも手作業で修復。でもエラー。

 散々調べた結果、問い合わせ先がローカル IP アドレスだとサーバーを見つけられないようです。localhost にしてやるとグローバルサーバーのドメインも含めて名前解決できます。まったく持って謎です。

 現在はプロバイダの DNS を参照することで何とかなっていますが、ローカルマシンの名前解決ができないので不便です。原因に思い当たる方いらっしゃいましたらお助けください。

dig コマンドによる問い合わせ

  1. # dig @localhost example.com
  2.  
  3. ; < <>> DiG 9.3.3 < <>> @localhost example.com
  4. ; (2 servers found)
  5. ;; global options:  printcmd
  6. ;; Got answer:
  7. ;; ->>HEADER< <- opcode: QUERY, status: NOERROR, id: 31756
  8. ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
  9.  
  10. ;; QUESTION SECTION:
  11. ;example.com.                   IN      A
  12.  
  13. ;; ANSWER SECTION:
  14. example.com.            172800  IN      A       192.0.34.166
  15.  
  16. ;; AUTHORITY SECTION:
  17. example.com.            21600   IN      NS      a.iana-servers.net.
  18. example.com.            21600   IN      NS      b.iana-servers.net.
  19.  
  20. ;; ADDITIONAL SECTION:
  21. a.iana-servers.net.     172800  IN      A       192.0.34.43
  22. b.iana-servers.net.     172800  IN      A       193.0.0.236
  23.  
  24. ;; Query time: 1075 msec
  25. ;; SERVER: 127.0.0.1#53(127.0.0.1)
  26. ;; WHEN: Sun Jan 28 17:09:25 2007
  27. ;; MSG SIZE  rcvd: 125
  28.  
  29. # dig @192.168.0.1 example.com
  30.  
  31. ; <<>> DiG 9.3.3 < <>> @192.168.0.1 example.com
  32. ; (1 server found)
  33. ;; global options:  printcmd
  34. ;; connection timed out; no servers could be reached

2007年1月29日 追記

 /var/log/message を見てみると、次のようなエラーが出てました。

  1. Jan 29 06:08:29 server named[668]: could not listen on UDP socket: permission denied
  2. Jan 29 06:08:29 server named[668]: creating IPv4 interface fxp0 failed; interface ignored
  3. Jan 29 06:08:29 server named[668]: could not listen on UDP socket: permission denied
  4. Jan 29 06:08:29 server named[668]: creating IPv4 interface fxp0 failed; interface ignored

 エラーメッセージを見つけたらインターネット検索が最近のお約束です。早速 Google 様に伺うことに。1時間ごとに同様のエラーが出るというブログ記事を発見。

 次のようにあったので、早速実行。

BIND9を再起動すると解消するが、BIND9はHUPシグナルを受け取らないため、「kill -HUP pid」ではなくrndcを使うか、一度終了させてから再度起動させないとうまくいかない。

 うまく名前解決できました。一歩前進です。

 また、次のような情報もありました。こちらはすでにやっているので違うかもしれませんが、有用に思えたので書いておきます。

 options セクションに、次のコードを追加することでリクエストを受け付けてくれるようになるとのことです。自分自身への問い合わせのため、127.0.0.1 は必須です。

  1. listen-on { 172.16.1.16 ; 127.0.0.1 ; } ;

 また、調査してなくてよくわかっていないのですが、interface-interval というオプションの値を0にするといいらしいです。

googleして、named.confに以下を追加

options {
interface-interval 0;
};

 このオプションについては、またあとで調べてみようと思います。

2007年2月1日 追記

 listen-on で、LAN の IP アドレスを追加することで解決しました。このサブセクションに記述された IP アドレス宛の要求を処理するとのこと。
 interface-interval は、ネットワークインターフェースのチェックをする間隔だそうです。増減することはまずないので0にしておきました。

Comments (0)

2007年1月25日 木曜日

ダッシュボードの『その他の WordPress サイト』が更新されない

Filed under: WordPress
時間:23時54分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

 ダッシュボードの『その他の WordPress サイト』が更新されていないことが最近多いです。RSS リーダー代わりに結構参照しているのですが、1日経っても同じままだとちょっとさびしいです。
 この部分ははてなのRSSサービスを利用していることがすでにわかっているので、ソースコードから探し出して直接見てみました。

 まったく違う内容でした。どこかにキャッシュされているんでしょうか。そのうちハックしてみます。

ダッシュボードについて

 WordPress を使った事のない方のために簡単に説明。
 ダッシュボードは、WordPress の管理画面の一番最初に表示されるページで、ニュース情報や最近のコメント・投稿した記事などが表示されます。

Comments (0)

2007年1月21日 日曜日

ページランクがつきました

Filed under: インターネット
時間:17時36分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

 今までGoogleのページランクは0のままでしたが、先週から2になっていました。
 運営開始が2006年10月7日なので、2ヶ月ちょっとですね。アクセスも順調に増えてきていて、うれしい限りです。

Comments (0)

2007年1月18日 木曜日

プラグインテスト用兼メモ

Filed under: EntryKeywords,WordPress,ハック,プラグイン
時間:0時38分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

 プラグイン製作に挑むことにしました。このページはそのテスト用です。
 普通の記事ページでもいいのですが、何かあったときの影響範囲を狭めるのと、個別に開くと人気度が変化してしまうために専用の記事を使うことにしました。

メモ

カスタムフィールド
キー
yo_keyword
値を得る

 指定の記事のカスタムフィールドの値を得る。

  1. get_post_meta($post->ID, 'yo_keyword', true);
$post->ID
記事ID
‘yo_keyword’
値がほしいキー
true
このキーが1つだけのときtrue。falseだとリストになる。

プラグインオプションの処理

Saving Plugin Data to the Database

get_option($option):値の取得
add_option($name, $value, $description, $autoload):新規追加
update_option($option_name, $newvalue):更新。ない場合は add_option() が呼ばれる
delete_option($name):オプションの削除

class を使う場合のオプションページ登録

 class を使っている場合(OOP)、add_options_page() の第5引数は次のようにする。

  1. array(&$this, 'function_name')

 この引数が、call_user_func_array() の第1引数になる。これをやらないと、「First argument is expected to be a valid callback」と警告が出る。

フォームの値

 フォームからの値はグローバル変数の $_POST$_GET で得られるが、WordPressはどちらも独自の方法でエスケープしている。(/wp-settings.php
 このエスケープは強制的に行われるため、フォームを使う場合は stripslashes によるアンエスケープが必要。

  1. // If already slashed, strip.
  2. if ( get_magic_quotes_gpc() ) {
  3.     $_GET    = stripslashes_deep($_GET   );
  4.     $_POST   = stripslashes_deep($_POST  );
  5.     $_COOKIE = stripslashes_deep($_COOKIE);
  6. }
  7.  
  8. // Escape with wpdb.
  9. $_GET    = add_magic_quotes($_GET   );
  10. $_POST   = add_magic_quotes($_POST  );
  11. $_COOKIE = add_magic_quotes($_COOKIE);
  12. $_SERVER = add_magic_quotes($_SERVER);

 エスケープ処理を行っている関数 add_magic_quotes() は、/wp-includes/functions.php で定義されている。
 再起処理により、階層の深い配列にも対応するようになっている。

  1. function add_magic_quotes($array) {
  2.     global $wpdb;
  3.  
  4.     foreach ($array as $k => $v) {
  5.         if ( is_array($v) ) {
  6.             $array[$k] = add_magic_quotes($v);
  7.         } else {
  8.             $array[$k] = $wpdb->escape($v);
  9.         }
  10.     }
  11.     return $array;
  12. }

 最終的なエスケープ処理をする $wpdb->escape() は、/wp-includes/wp-db.php で定義されている。$wpdb は クラス wpdb のインスタンス。

  1. // ====================================================================
  2.     //  Format a string correctly for safe insert under all PHP conditions
  3.    
  4.     function escape($string) {
  5.         return addslashes( $string ); // Disable rest for now, causing problems
  6.         if( !$this->dbh || version_compare( phpversion(), '4.3.0' ) == '-1' )
  7.             return mysql_escape_string( $string );
  8.         else
  9.             return mysql_real_escape_string( $string, $this->dbh );
  10.     }

進行具合

 デバッグ&テスト中。
 本番テストということで、アフィリエイト広告のキーワードとして使ってみています。
 記事のメタ情報を利用するため、記事ループの中でないと使えないことが判明。サイドバーのアフィリエイト広告に使いたかったのでちょっと残念。

管理画面スクリーンショット

TODO

  • オプションを保持している変数をクラスオブジェクトにする。
  • メソッドの引数によるオプションの上書き処理を、オプション用クラスのメソッドとして切り離す。
  • 管理画面のオプション設定画面の表示を専用クラスに切り離す。
  • キーワードをランダムに1つ選択するメソッドの実装。
  • オプション設定画面の整理。
  • カスタムフィールドに改行で区切って複数のキーワードが入れられるようにする。
  • キーワードを得る方法に、配列とJSONを追加。

参考資料

Comments (0)

2007年1月16日 火曜日

お任せリンクを削除しました

Filed under: アフィリエイト
時間:23時32分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

 設置から1週間が経ち、Amazon Search のほうが広告の選択がいいことが判明したため、左サイドバーのAmazon.co.jp のお任せリンクを削除しました。

 お任せリンクとの比較のために商品ジャンルを書籍に限定していましたが、あとでほかのジャンルも含まれるようにする予定です。
 また、ちょっと特殊なコードを埋め込んだので(規約違反にはなっていないはずです)、そのレポートもしたいと思います。

Comments (0)

FreeBSD 6.2-RELEASE が公開されました

Filed under: FreeBSD
時間:22時52分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

 昨日の記事の中で次のバージョンがリリースされたらローカルサーバーの FreeBSD をアップグレードすると書いたばかりですが、ちょうどその日にリリースされてました。Xbox でも動くようになったようです。

 Opera9 を導入したので、土日あたりで BitTorrent からダウンロードしてアップグレードしようと思います。

Comments (0)

2007年1月15日 月曜日

記事にキーワードをつけるアイディアのメモ

Filed under: EntryKeywords,アフィリエイト,プラグイン
時間:22時34分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

 ちょっと思いついたのでメモ。時間があればプラグインとして作ってみようと思いますが、今はただのメモ。

 実はもうある?ご存知の方ぜひ教えてください。面白そうだから作るよというのも大歓迎です。

アフィリエイト要に記事にキーワードを付ける

 Amazon.co.jp のライブリンクのように、ASP型のアフィリエイトサービスには、キーワードによって表示する商品を動的に決定することができるものがあります。お任せリンクではキーワードの抽出がどうなっているのかわからず曖昧になりがちですが、直接指定することで好きなように決めることができます。

 ブログでは、カテゴリーという概念があります。記事を大まかに分類するわけです。もう少し細かいものにタグがあります。これも一種のキーワードといえますが、アフィリエイト用としてはまだちょっと曖昧な気がします。細かくしすぎるとタグの意味がなくなってしまいますし。

キーワードを記事に紐付ける

 ということで、専用のキーワードという概念が必要であると私は結論付けました。そして、それを WordPress のカスタムフィールドでできないかと考えています。記事の ID と紐付けられた形でデータベースに記録されるようなので、記事 ID からたどって値(ここではキーワード)を取得することも可能なはずです。

 ここまでくればあとは簡単。アフィリエイトの広告表示コードを出力する関数を定義したプラグインを作るだけ。キーワードを URL エンコードして埋め込むようにしてやれば、投稿画面で設定したキーワードを広告表示コードに渡すことができるはずです。表示はテンプレートに関数を埋め込んでもらいます。

柔軟にする

 プラグインオプションの設定画面がほしいですね。
 広告コードを設定することができればいろいろ対応できますし、ほかにもいろいろオプションが必要になるかもしれません。

その他

 キーワードの設定がない場合はカテゴリーを使えばいいでしょうか。オプションで初期値を設定できるというのもありかも。

Comments (0)

1年中働いています

Filed under: FreeBSD,コンピューター
時間:15時15分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

 人間ではなく、コンピューターの話。

 プログラムのテスト場所目的でローカルサーバーを稼動させているのですが、その連続稼働日数が365日を越えていました。昨日で370日です。

 テスト場所といいつつも、NTP サーバーや DNS サーバーも兼ねてたりします。パソコンと一緒に起動させたりするのも面倒なので、結局24時間起動しっぱなし。どうせならファイルサーバーにと思って Samba も入れましたが、HDD の容量が少ないので保留。印刷エラーでプリンタサーバーにもできず。

 ちなみに、中身は AthlonXP ベースのただの自作パソコンです。OS は FreeBSD 5.x。6.2がリリースされたらアップグレードしようと思ってます。

 さいごに、サーバーに一言。
 1年間ありがとう。また1年よろしく。

Comments (0)
Page 19 of 31« First...10...1718192021...30...Last »

HTML convert time: 0.603 sec. Powered by

Images is enhanced with WordPress Lightbox JS by Zeo