hiromasa.zone : o)

2006/11/7 Tuesday 投稿時の月齢:15.8  月名:満月  潮汐:大潮 Moon:15.8[満月]今日の心技体 : 好調前不安定期好調期低調期

ソフトウェアをつくる道具 このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 雨のち曇 ひろまさ @ 0:00

どの業界でもそうだとおもうのですが、何かを生み出す世界には道具が存在します。

(粉砕)ドライバー、とんかち、やすり、CAD、フォトショップ、イラストレータ・・・。

で、この道具がいいとか悪いとか、おすすめとか、そんなんつかえねーよとか、人それぞれ使うものが違ったりします。 愛着という言葉が一番よいのでしょうか。 以前、整備をやっている友達に、つかっているドライバーをみせてもらったことがありますが、なかなかの格好良さがありました。 若干、道具を造る人の趣味も入っているのが”道具”の面白いところ。

ソフトウェアを作る際にも道具は登場してきます。 ソースコードというテキストファイルを編集することが多いため、「テキストエディタ」が一番多く目にする道具です。

またそれらの管理に関連して、いくつかの便利グッツがあります。 あまりみられたこと、使われたことがない方も多いかと思いますので、その裏舞台を紹介します。

まずは、よく「diff とってみれば?」とかって使われる、ソースコード差分を表示するツール。 同じコードのバージョン違いなどで、相違点を見ることが出来ます。 ここでは、ビジュアルで見ることが出来る diff ツールのひとつ「df」からスクリーンショットを。

df

こんな風に、2つのファイルを左右に表示し相違点を表示してくれます。 また、これらから差分ファイルを生成するのもこれら diff ソフトの役割です。 diff から生成された差分ファイルを patch というソフトに与えると、修正されたファイルができあがるようになっています。

ソースコードはこんなふうにどんどん修正されていきますが、さっきの状態に戻したい!とか、リリースしたのどの段階だっけ?とかといった状態はよくおきます。 一人ならなんとかファイルコピーなどしてうにゃうにゃすれば、道具なしでできないこともありませんが、これが複数人の作業になるともう破綻。 また、たとえ一人でやっていたとしても、手管理というのはミスもあるし、精神衛生上よろしくありません。

こういうときにつかわれるのが、CVS や Subversion などのバージョン管理システムです。 各サーバにソースコード群を登録しておき、コミットやチェックアウトと呼ばれる操作でソースコードの登録をしていきます。 版数の管理はサーバ側で自動的にやってくれますので、元に戻したいといった要求にもちょっとした操作ですぐ答えることが出来ます。

また、多くのバージョン管理クライアントは上記 diff の機能もあわせて持っていますので、

CVS Repository – diff – SourceForge: wppluginsj/wp-kumonosu/wp-kumonosu.php

こんな風に、前のバージョンとの違いも簡単にみることができます。

これらの他にも、ソースコード内を全部検索する grep や、テキスト編集とはちょっと毛色が違いますが、プログラムを1行ずつ実行したり、その時点の変数をみたりできるデバッガなど、さまざまな道具を駆使してソフトウェアは作られていきます。

結構、「よくそんなに早く修正箇所分かりますね」といわれますが、案外これらを使っているだけです(笑) 特にデバッガは、プログラムを強制的にとめて、そこからボタンを押すごとに1行ずつゆっくり見ていけますので簡単に追えるんです。

WordPress とかだとこれで不具合箇所のあたりをつけて、grep で全検索。 で、 trunk (Subvertion 上の最新開発版)で同じようなところ見て、あ~もうなおしているじゃん、見なかったことにしよう、とかよくあります。 😛

このようなことをしようとすると、いろいろなソフトの組み合わせが必要になり操作が煩雑になります。 これを解決するのが、Eclipse や Visual Studio などの統合開発環境です。 テキストエディタはもちろん、grep、diff、CVS クライアントなどなどなど、使いそうな機能がオールインワンになっていて、各機能を連携して簡単に使えるようになっています。

手品のタネも、知ってしまえばな~んだと思うものです。 ソフトウェアの道具使ってみてください。

しかしながら、手品のタネは、分かっていても「すげぇ!技だ!」と思うこともしばしば。 ぼくもいつかそうなってみたいものです。 🙂

2006/11/5 Sunday 投稿時の月齢:14.7  月名:十五夜  潮汐:大潮 Moon:14.7[十五夜]今日の心技体 : 低調期好調期低調期

wp-kumonosu アルファ試験中 このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 曇時々晴 ひろまさ @ 21:51

昨日、企画倒れになった SQL。 ぼくは転んでも起きません。(←間違い

ということで、まだお遊びなのですが WordPress のプラグインを作りましたのでおいてみます。 🙂

MySQL 4.0 系に対応させるためむちゃしているのと、適当に作ったのもあってかなりコードきたないですがご勘弁を。

WordPress Plugins/JSeries > wp-kumonosu

サイトにいただいた、コメント/トラックバックを集計して管理画面に表示するプラグインです。

wp-kumonosu

wp-kumonosu ディレクトリをプラグインディレクトリに作成して wp-kumonosu.php を格納後有効化すると、管理画面->オプション->Kumonosu に上記画面が現れます。

それだけ...

でもちょっと面白いので、ためしてみてください・・・。。

みてみると分かるのですが、同一人物であることの処理にホスト名をつかっていたり、いただいたコメント、トラックバックの「お名前」をコメント優先にしていたり、結構考え出すときりがない集計です。

いまのところ管理画面に出しているだけですが、サマリ方法かえたりテンプレートタグのようにして、オートでリンク集をつくったり、その条件を決めたり、順位とか名前の置換とかいろいろしてみるのも面白そうです。

とりあえず今のところ「みなさんのサイトの URLなんだっけ」というときに、管理画面からぱっとコピーできるのが便利かも 😛

てなわけで、この画面を見てなぜかドキドキしちゃった、、という方! 活用のアイディアいただければと思います。

kohaku さんaka さん砂原さん、試験などお付き合いいただきましてありがとうございました。 🙂

企画倒れのSQL このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 曇時々晴(18/8) ひろまさ @ 2:06

MySQL 4,0 系はサブクエリーつかえんのか。。 orz

WP でみなさんからいただいたコメント/トラックバック集計から、リンク集をつくる・・・というプラグインを考えていたのですが、せっかく書いた SQL が企画倒れでした。 とほほ。

MySQL 4.1 以降のかたはうごくと思うので遊んでください。 🙂

phpMyAdmin

  1.  SELECT
  2.      all_comments.author,
  3.      all_comments.author_url,
  4.      all_comments.hostname,
  5.      MAX(all_comments.comment_count) as comment_count,
  6.      MAX(all_comments.trackback_count) as trackback_count,
  7.      (comment_count+trackback_count) as all_count
  8.  FROM
  9.      ((SELECT
  10.          comment.comment_author as author,
  11.          comment.comment_author_url as author_url,
  12.          count(comment.comment_author) as comment_count,
  13.          '' as  trackback_count,
  14.          SUBSTRING_INDEX(REPLACE(comment.comment_author_url, 'http://', ''), '/', 1) as hostname
  15.      FROM
  16.          wp_comments as comment
  17.      WHERE
  18.          comment_approved = '1' AND
  19.          comment_author_url <> '' AND
  20.          comment_type = ''
  21.      GROUP BY
  22.          hostname
  23.      ORDER BY
  24.          comment.comment_count desc,
  25.          hostname)
  26.      UNION
  27.      (SELECT
  28.          trackback.comment_author as author,
  29.          trackback.comment_author_url as author_url,
  30.          '' as  comment_count,
  31.          count(trackback.comment_author) as trackback_count,
  32.          SUBSTRING_INDEX(REPLACE(trackback.comment_author_url, 'http://', ''), '/', 1) as hostname
  33.      FROM
  34.          wp_comments as trackback
  35.      WHERE
  36.          trackback.comment_approved = '1' AND
  37.          trackback.comment_author_url <> '' AND
  38.          trackback.comment_type = 'trackback'
  39.      GROUP BY
  40.          hostname
  41.      ORDER BY
  42.          trackback.comment_count desc,
  43.          hostname)) as all_comments
  44.  GROUP BY
  45.      all_comments.hostname
  46.  ORDER BY
  47.      all_count desc

#行番号は削除してください。

実は コメント+トラックバックの合計がバグっているのですが、、なんでだろう。

つくるとしたら PHP のメモリでサマルしかないかな~。 良い案思いついたかたは教えてください。 😛

2006/11/3 Friday 投稿時の月齢:12.5  月名:十三夜  潮汐:中潮 Moon:12.5[十三夜]今日の心技体 : 低調期好調期低調期

ふと思ったこと このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 曇のち晴 ひろまさ @ 17:37

自サイト内でトラックバック試験をすると、スパム対策プラグイン Akismet にスパム判定される事実。

なんでおれを捕獲するんだ! おれはスパマーじゃない!

しかしながら、あるお話を思い出した。

妖怪人間ベム・ベラ・ベロ。 正義の彼らを妖怪だとののしり、最後は殺しに行ってしまう人間達。 その人間達こそが真の妖怪だった。

じつはおれ、自覚がないだけで、他人から見たらスパマーなんだろうか。 ふとそんな考えがよぎった。

続く(←うそ

WordPress 2.0.5 Trackback Problem このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 曇のち晴 ひろまさ @ 16:16

ようやく WordPress を 2.0.5 にアップデートしました。 🙂

話題のトラックバック飛ばない、、という問題も同時に検証してみました。

結論を先に言うとコアにはおそらく問題がありません。 2.0.5 のトラックバックのロジックは正常に動いています。 ただし、2.0.5 に限らずなのですが、WordPress によるトラックバック送信で現在以下の問題があるようです。

  • 試験的に自サイトもしくは WordPress サイトに飛ばしてみたが飛んでいない?? → 十中八九 Akismet に捕獲されています。
  • トラックバック URL を設定後に、「保存して継続」もしくは「保存」「公開」を押下で、画面が真っ白になる。 → おそらくサーバのメモリリミットの上限を超えています。
  • 同上の操作で、画面が編集画面に戻るが「通知済みピン」にはいらずテキストボックスに URL がはいったままになる。 → execute-pings.php が落ちています。

Akismet に関しては、どうも最近日本語トラックバックの誤認が多いように思います・・・。 とりあえず、トラックバックのテストといういみでは Akismet はかまさないほうがベターです。 問題が分かりづらくなります。

ということで、試験をしたいかたは以下のスクリプトを設置してその URL に対してトラックバックをうつとよいです。 受信した際にログがでますので、確実にトラックバックの試験が出来ます。 (このスクリプトもずいぶん懐かしいな。。 🙂

生POSTデータを含む全てのデータを取得する PHPスクリプト

POST されてきたデータを、日付時分秒.txt に保存する スクリプトです。 XML-RCP とか、ブログの ping のデバッグ用などにどうぞ。 POST の ROW データ も保存します。

設置したディレクトリに書き込み属性をつけるのを忘れずに・・・。 同じディレクトリにログが出るようになっています。 このログに計上があれば正しくトラックバックの送信が出来ています。 このログがだせるが相手に届かないときはおそらく、相手サーバの問題だと思います。

メモリリミットに関しては、設定の上限自体はレンタルサーバの場合これはもうどうしようもないです。

対処としてはプラグインをはずすなどして WP をスリムにするとか…。 特に do_action で public_post など投稿時に動く hook を使っているものが要注意です。 もちろん、それ以外投稿で動かないプラグインもスクリプトの定義自体でもメモリ使いますので大きめのプラグインをはずすのも少しは効果があるかもしれません。(本当に微々たるものだと思いますが…)

本格的には、実行時に大きくメモリをとるプラグインを省メモリに改造してみるのもおもしろいでしょう。 コア側も、イベント的に動かないプラグインは定義自体もしないように出来ると良いですね。

ちなみに、wp-otenki などはメインロジックを別プロセス非同期呼びにしてメモリを節約していたりします。 うちのサーバが弱いだけなんですが。 😛

最後 execute-pings.php が落ちる件。 execute-pings.php はトラックバックなどを本体と非同期で処理する開始スクリプトです。 詳しい内容は割愛しますが、要は本体のバックグラウンドでトラックバック処理(多くは相手サーバのうけ待ちで時間かかる)を行い、本体の処理を速く終わらせようという試みです。

でもって、この送信をつかさどる execute-pings.php がおちることがあるようです。 トラックバック送信が出来ない場合は、 wp-admin/execute-pings.php をブラウザから手動で起動してみてください。 もしかすると、エラーが表示されているかもしれません。 ちなみに、正常に動くと画面は「真っ白」になります。

kohaku さんのところでおきている症状でしたが、何かのプラグインにより(??)

#3267 (PHP Error in template-functions-links.php) – WordPress Trac – Trac

という症状が execute-pings.php 実行時にでることがあるようです。(トラックバック実行時にこける。しかし通常通りWP本体から実行されると非同期のためエラーが画面に出ない)

shutdown の hook を使うプラグインのエラーだと思われるのですが、PHP のバージョン(?)によっては register_shutdown ファンクション内で作成済みの WP のオブジェクトが破棄されてしまう、このためそのオブジェクトのメソッドを呼ぼうとすると、ぬるぽするということみたいです。 (インスタンス作るときに参照書きでつくると良いという裏技的な修正が上記にあります。 しかし、kohaku さんのところではきかなかった模様)

kohaku さんがいろいろ検証してくれたのですが、プラグインを全てはずして戻したところ直ってしまった!!という、冬の怪現象が起きてしまったため原因は特定できておりません。。 なぞぞーん。

以上、トラックバックに関して調べた結果です。 まだ何かありそうなので他に情報がありましたら教えてください。 🙂

検証にお付き合いいただきました、kohaku さんaka さんおでさん ありがとうございました。

ではおでさん、合コンおねがいします(締めの挨拶)

トラックバックのテストエントリ(試験中) このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 曇のち晴 ひろまさ @ 10:23

トラックバックのテストエントリです。 内容はないょ。

これは試験です。 これは試験です。 あ~あ~、これは試験です。

追記。

kohaku さん、おでさん、Masayan さん、みなさん Akismet に捕捉されておりました。。 ごめんなさい。。 トラックバック問題ないです!

ついでに自分も捕獲されました…。

追記2。

Sa・Ga さんも捕捉されました。。 Akismet おかしいぞ。。

追記3。

matopc さん、OK です! 捕捉されませんでした!

このサイトについて

このブログは引っ越しを行いコンテンツはフリーズしています。hiromasa.anotherへどうぞ。

Powerd By WordPress

We (Heart) WordPress

WordPressME Logo
WordPress Plugins

ブログ内検索

Todays Popular

WordPress Ring

はてなリング - WordPress -

情報

18 queries. 0.097 seconds.

このページの先頭へ