<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ぱんぴーまっしぐら</title>
	<atom:link href="http://blog.cheki.net/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.cheki.net</link>
	<description>PHP、Webの話題を扱うIT選手cockokのblog</description>
	<lastBuildDate>Fri, 05 Mar 2010 05:28:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>PEAR::HTTP_OAuthでxAuth</title>
		<link>http://blog.cheki.net/archives/1630</link>
		<comments>http://blog.cheki.net/archives/1630#comments</comments>
		<pubDate>Fri, 05 Mar 2010 05:08:34 +0000</pubDate>
		<dc:creator>cockok</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[日記]]></category>
		<category><![CDATA[pear]]></category>
		<category><![CDATA[xAuth]]></category>

		<guid isPermaLink="false">http://blog.cheki.net/?p=1630</guid>
		<description><![CDATA[xAuthの申請が通ったので試してみた。
via:ウノウラボ Unoh Labs: PECL::oauthでxAuth
取得したauth_tokenとtoken_secretを利用してtwitterにポスト。
]]></description>
			<content:encoded><![CDATA[<p>xAuthの申請が通ったので試してみた。</p>
<p>via:<a href="http://labs.unoh.net/2010/02/twitter-xauth-with-pecl-oauth.html">ウノウラボ Unoh Labs: PECL::oauthでxAuth</a></p>
<div style="position:relative;top:18px;margin-top:-18px;"><small><strong>PHP</strong></small>
</div>
<pre name="code" class="php" style="margin:18px 0;">
require_once &#039;HTTP/Request2.php&#039;;
require_once &#039;HTTP/OAuth/Consumer.php&#039;;

$consumer_key           = &#039;YOUR-CONSUMER-KEY&#039;;
$consumer_secret        = &#039;YOUR-CONSUMER-SECRET&#039;;
$username               = &#039;YOUR-USER-NAME&#039;;
$password               = &#039;YOUR-PASSWORD&#039;;
$xauth_access_token_url = &#039;https://api.twitter.com/oauth/access_token&#039;;

$params = array(
  &#039;x_auth_username&#039; =&gt; $username,
  &#039;x_auth_password&#039; =&gt; $password,
  &#039;x_auth_mode&#039;     =&gt; &#039;client_auth&#039;,
);

try {
  $request = new HTTP_Request2();
  $request-&gt;setConfig(&#039;ssl_verify_peer&#039;, false);

  $consumerRequest = new HTTP_OAuth_Consumer_Request();
  $consumerRequest-&gt;accept($request);

  $oauth = new HTTP_OAuth_Consumer($consumer_key, $consumer_secret);
  $oauth-&gt;accept($consumerRequest);

  $response = $oauth-&gt;sendRequest($xauth_access_token_url,
                                  $params,
                                  HTTP_Request2::METHOD_POST);

  if ($response-&gt;getStatus() !== 200) {
    throw new Exception($response-&gt;getBody(), $response-&gt;getStatus());
  }
} catch (Exception $e) {
  echo &#039;Error&#039;;
  exit;
}

// oauth_token=xxx&amp;oauth_token_secret=xxx&amp;
// user_id=xxx&amp;screen_name=xxx&amp;x_auth_expires=0
parse_str($response-&gt;getBody(), $access_token_info);

// oauth_token, oauth_token_secret, user_id, screen_name,
// x_auth_expires
var_dump($access_token_info);
</pre>
<p>取得したauth_tokenとtoken_secretを利用してtwitterにポスト。</p>
<div style="position:relative;top:18px;margin-top:-18px;"><small><strong>PHP</strong></small>
</div>
<pre name="code" class="php" style="margin:18px 0;">
require_once &#039;Services/Twitter.php&#039;;
require_once &#039;HTTP/OAuth/Consumer.php&#039;;

try {
  $twitter = new Services_Twitter();
  $oauth   = new HTTP_OAuth_Consumer($consumer_key,
                                     $consumer_secret,
                                     $auth_token,
                                     $token_secret);
  $twitter-&gt;setOAuth($oauth);
  $twitter-&gt;statuses-&gt;update(&#039;なうなう&#039;);
} catch (Services_Twitter_Exception $e) {
  echo (string)$e;
  exit;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.cheki.net/archives/1630/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>twitterAPIを利用する際にOAuthを利用できなくいけどsource変更したいよとメールしてみた</title>
		<link>http://blog.cheki.net/archives/1621</link>
		<comments>http://blog.cheki.net/archives/1621#comments</comments>
		<pubDate>Tue, 02 Mar 2010 05:29:25 +0000</pubDate>
		<dc:creator>cockok</dc:creator>
				<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://blog.cheki.net/?p=1621</guid>
		<description><![CDATA[もし、OAuthを利用できない特別な理由がある場合、deprecatedな方法となりますが、Alexにアプリケーション名をメールして、sourceパラメータで指定された該当のアプリケーション名を受け取るよう設定を頼みまし [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>もし、OAuthを利用できない特別な理由がある場合、deprecatedな方法となりますが、Alexにアプリケーション名をメールして、sourceパラメータで指定された該当のアプリケーション名を受け取るよう設定を頼みましょう。<br /><a href="http://usy.jp/twitter/index.php?Twitter%20API">Twitter API &#8211; TwitterまとめWiki</a></p></blockquote>
<p>というわけで送ってみたけど、以下の返信がきたよ。</p>
<blockquote><p>
Hi XXXX,</p>
<p>Unfortunately, applications that do not use OAuth authentication cannot have source parameters at this time. We are working to improve OAuth so mobile applications can easily integrate it, and I sincerely apologize for the inconvenience in the meantime.</p>
<p>Thanks for your understanding,<br />
Brian
</p></blockquote>
<p>残念。</p>
<p>xAuthで変更できそうなのでそっち試し中。<br />
<a href="http://apiwiki.twitter.com/Twitter-REST-API-Method:-oauth-access_token-for-xAuth">Twitter API Wiki / Twitter REST API Method: oauth access_token for xAuth</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cheki.net/archives/1621/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PEAR::Services_Twitterのリスト対応</title>
		<link>http://blog.cheki.net/archives/1618</link>
		<comments>http://blog.cheki.net/archives/1618#comments</comments>
		<pubDate>Sun, 28 Feb 2010 19:29:01 +0000</pubDate>
		<dc:creator>cockok</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[pear]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://blog.cheki.net/?p=1618</guid>
		<description><![CDATA[※3/2 更新
パッチファイル
http://blog.cheki.net/Services_Twitter.patch.gz
追加メソッド一覧

Methods                 Documentatation name        tests
----------------------- --------------------------- ---------------------------------------
trends/available                           [...]]]></description>
			<content:encoded><![CDATA[<p>※3/2 更新<br />
パッチファイル<br />
<a href="http://blog.cheki.net/Services_Twitter.patch.gz">http://blog.cheki.net/Services_Twitter.patch.gz</a></p>
<p>追加メソッド一覧</p>
<pre>
Methods                 Documentatation name        tests
----------------------- --------------------------- ---------------------------------------
trends/available                                    840-trends-available.phpt
trends/location                                     850-trends-location.phpt
lists/create            POST lists      (create)    153-lists-create-delete.phpt
lists/update            POST lists id  (update)     151-lists-update.phpt
lists/list              GET lists        (index)    150-lists-list.phpt
lists/show              GET list id      (show)     152-lists-show.phpt
lists/delete            DELETE list id (destroy)    153-lists-create-delete.phpt
lists/statuses          GET list statuses           160-lists-statuses.phpt
lists/memberships       GET list memberships        161-lists-memberships.phpt
lists/subscriptions     GET list subscriptions      162-lists-subscriptions.phpt

list_members/list       GET list members            181-list_members-list.phpt
list_members/create     POST list members           180-list_members-create-delete.phpt
list_members/delete     DELETE list members         180-list_members-create-delete.phpt
list_members/show       GET list members id         182-list_members-show.phpt

list_subscribers/list   GET list subscribers        191-list_subscribers-list.phpt
list_subscribers/create POST list subscribers       190-list_subscribers-create-delete.phpt
list_subscribers/delete DELETE list subscribers     190-list_subscribers-create-delete.phpt
list_subscribers/show   GET list subscribers id     192-list_subscribers-show.phpt
</pre>
<p>ファイル全部</p>
<p>http://blog.cheki.net/Services_Twitter.tar.gz</p>
<p>パッチは現段階での最新である295629に当ててください。</p>
<pre>
$ svn co -r 295629 http://svn.php.net/repository/pear/packages/Services_Twitter/trunk Services_Twitter
$ wget http://blog.cheki.net/Services_Twitter.patch.gz
$ gzip -d Services_Twitter.patch.gz
$ cd Services_Twitter
$ patch -p0 < ../Services_Twitter.patch
</pre>
<pre>
$ php tests/AllTests.php
PHPUnit 3.4.11 by Sebastian Bergmann.

..................................................

Time: 4 seconds, Memory: 10.25Mb

OK (50 tests, 0 assertions)

OK, but incomplete or skipped tests!
Tests: 50, Assertions: 0, Skipped: 1.
</pre>
<p>tests-config.phpセット後。</p>
<pre>
$ php tests/AllTests.php
PHPUnit 3.4.11 by Sebastian Bergmann.

..........S....F.......S.....S..........S.....F.S.

Time: 42 seconds, Memory: 10.25Mb

There were 2 failures:

1) /home/cockok/projects/Services_Twitter/tests/460-account-update_profile_image.phpt
--- Expected
+++ Actual
@@ @@
-bool(true)
+bool(false)

/home/cockok/projects/Services_Twitter/tests/AllTests.php:56
/home/cockok/projects/Services_Twitter/tests/AllTests.php:72

2) /home/cockok/projects/Services_Twitter/tests/470-account-update_profile_background_image.phpt
--- Expected
+++ Actual
@@ @@
-bool(true)
+あなたが設定した背景用の画像に問題があるようです。おそらく大きすぎです。 (code: 403, call: http://api.twitter.com/1/account/update_profile_background_image.json)

/home/cockok/projects/Services_Twitter/tests/AllTests.php:56
/home/cockok/projects/Services_Twitter/tests/AllTests.php:72

FAILURES!
Tests: 50, Assertions: 0, Failures: 2, Skipped: 5.
</pre>
<p>画像周りでエラーでてるけどもともと出てるんでシラン。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cheki.net/archives/1618/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>symfony1.0,propelメモ</title>
		<link>http://blog.cheki.net/archives/1616</link>
		<comments>http://blog.cheki.net/archives/1616#comments</comments>
		<pubDate>Mon, 15 Feb 2010 05:24:37 +0000</pubDate>
		<dc:creator>cockok</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[propel]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://blog.cheki.net/?p=1616</guid>
		<description><![CDATA[もうsymfony1.0、propel使うことそんな無いだろうけど、使う時に使い方探すの面倒なのでメモ。
]]></description>
			<content:encoded><![CDATA[<p>もうsymfony1.0、propel使うことそんな無いだろうけど、使う時に使い方探すの面倒なのでメモ。</p>
<div style="position:relative;top:18px;margin-top:-18px;"><small><strong>PHP</strong></small>
</div>
<pre name="code" class="php" style="margin:18px 0;">
// (started_at &lt;= now() OR started_at IS NULL)
$c-&gt;add($c-&gt;getNewCriterion(self::STARTED_AT, $now, Criteria::LESS_EQUAL)-&gt;addOr($c-&gt;getNewCriterion(self::STARTED_AT, null)));
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.cheki.net/archives/1616/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TwitterAPIを利用したプロフィール画像更新はcontent-typeがimage/*じゃないとコケる</title>
		<link>http://blog.cheki.net/archives/1613</link>
		<comments>http://blog.cheki.net/archives/1613#comments</comments>
		<pubDate>Wed, 03 Feb 2010 04:52:08 +0000</pubDate>
		<dc:creator>cockok</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[services_twitter]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://blog.cheki.net/?p=1613</guid>
		<description><![CDATA[TwitterAPIを利用したプロフィール画像更新はcontent-typeがimage/*じゃないとコケる。
正確にはステータス200が返ってくるけど、更新されないからもっとタチが悪い。
Twitter API Wik [...]]]></description>
			<content:encoded><![CDATA[<p>TwitterAPIを利用したプロフィール画像更新はcontent-typeがimage/*じゃないとコケる。<br />
正確にはステータス200が返ってくるけど、更新されないからもっとタチが悪い。</p>
<p><a href="http://apiwiki.twitter.com/Twitter-REST-API-Method:-account%C2%A0update_profile_image">Twitter API Wiki / Twitter REST API Method: account update_profile_image</a><br />
curl、rubyによるサンプルコードが載ってるけど、「Expect」ヘッダは不要。</p>
<p>PEAR公式のServices_Twitterを利用していたが、update_profile_imageが上手くいかない。<br />
まだドキュメントが整理されていないので、ソースを読むか<a href="http://svn.php.net/viewvc/pear/packages/Services_Twitter/tags/Services_Twitter-0.5.0/tests/460-account-update_profile_image.phpt?view=markup">テスト</a>をみて、利用法を確認したが問題なし。<br />
リクエストをトレースしてみたところ、content-typeが「application/octet-stream」だったのが気になったので「image/jpeg」にしてみたところ、画像の更新に成功。<br />
PEAR::HTTP_Request2でmime-typeが取得できなかった場合、「application/octet-stream」がセットされていたというオチ。</p>
<p>pecl::Fileinfoか<a href="http://jp2.php.net/manual/ja/function.mime-content-type.php">mime_content_type</a>を利用するようになっていたけど、&#8211;with-mime-magicとかコンパイル時に指定していなかった件。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cheki.net/archives/1613/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Services_Twitter</title>
		<link>http://blog.cheki.net/archives/1609</link>
		<comments>http://blog.cheki.net/archives/1609#comments</comments>
		<pubDate>Wed, 03 Feb 2010 04:05:12 +0000</pubDate>
		<dc:creator>cockok</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[services_twitter]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://blog.cheki.net/?p=1609</guid>
		<description><![CDATA[PHPでtwitterを利用する場合にはServices_Twitterが便利です。
このServices_Twitterですが、公式のPEAR公式と野良(？)版が存在します。

PEAR公式 Services_Twit [...]]]></description>
			<content:encoded><![CDATA[<p>PHPでtwitterを利用する場合にはServices_Twitterが便利です。<br />
このServices_Twitterですが、公式のPEAR公式と野良(？)版が存在します。</p>
<ul>
<li>PEAR公式 <a href="http://pear.php.net/package/Services_Twitter">Services_Twitter</a></li>
<li><a href="http://www.retaggr.com/Page/ariela/">悠希@ariela</a>さん版 <a href="http://labs.transrain.net/products/services_twitter/">Services_Twitter</a>
<ul>
<li>最新版はCodeRepos <a href="http://coderepos.org/share/browser/lang/php/Services_Twitter">/lang/php/Services_Twitter – CodeRepos::Share – Trac</a></li>
</ul>
</li>
<li>openpear版 <a href="http://openpear.org/package/Services_Twitter">Services_Twitter &#8211; Openpear</a></li>
</ul>
<p>openpear版はさっき見つけたけど、ちょっと使う気になれないので選択肢としてはPEAR公式か悠希さん版。<br />
環境がCentOS5系、PHP5.1系だったので、悠希さん版を検討したのですが、CodeReposに入れられてるもののほとんど更新されておらず、APIが増えてる現状を考えると作業量的に厳しいということでPEAR公式を利用することに。</p>
<p><a href="http://d.hatena.ne.jp/sotarok/20080807/1218114681">Services_Twitter-0.1.0 betaがリリースされたので日本のと比較してみた &#8211; 肉とご飯と甘いもの @ sotarok</a><br />
この頃と状況は結構変わっていて、json必須ではない(でも速度の関係でpeclのjsonを利用)、HTTP_Request2でsocket通信とかになっています。<br />
結構珍しい造りになっていて、api群はdata/api.xmlで管理されています。<br />
pearコマンドを利用せずに利用する人は注意が必要。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cheki.net/archives/1609/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>peclのjsonはnumber型をintに桁落ちする</title>
		<link>http://blog.cheki.net/archives/1602</link>
		<comments>http://blog.cheki.net/archives/1602#comments</comments>
		<pubDate>Wed, 27 Jan 2010 09:15:32 +0000</pubDate>
		<dc:creator>cockok</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[pecl]]></category>

		<guid isPermaLink="false">http://blog.cheki.net/?p=1602</guid>
		<description><![CDATA[いろいろな制約の関係でCentOS5系のPHP5.1.6でjsonの処理を行わなければならず、Jsphonだとパフォーマンス的に厳しいのでpeclのjsonを利用することになりました。
利用していたところ、mumber型 [...]]]></description>
			<content:encoded><![CDATA[<p>いろいろな制約の関係でCentOS5系のPHP5.1.6でjsonの処理を行わなければならず、Jsphonだとパフォーマンス的に厳しいのでpeclのjsonを利用することになりました。</p>
<p>利用していたところ、mumber型がint型に桁落ちする現象に遭遇。</p>
<pre>
$ php -r "var_dump(json_decode('{\"id\":8271518654}'));"
object(stdClass)#1 (1) {
  ["id"]=>
  int(2147483647)
}
</pre>
<p>調べてみたところ、PHP5.2.1の時代にバグレポートされてその後fixされたが、peclにはバックポートされてないようでした。</p>
<p><a href="http://bugs.php.net/bug.php?id=41567">PHP Bugs: #41567: json_encode double conversion is inconsistent with PHP</a><br />
バグレポートを参考に修正し、phpizeしてみましたが変わらず。</p>
<p>PHP5.2で取り込まれてるわけですが、そこでphpizeすればいけるんじゃ？ということで5.2.3のソースをダウンロードしphpize後make成功したのでインストールしてみましたが件の件は修正されていませんでした。</p>
<p>結局、PHP5.2.4で修正されていることを確認したのでここに軟着陸。</p>
<pre>
$ cd /usr/local/src
$ wget http://museum.php.net/php5/php-5.2.4.tar.gz
$ tar zxf php-5.2.4.tar.gz
$ cd php-5.2.4/ext/json
$ phpize
$ ./configure
$ make
$ sudo make install
$ php -i | grep json
$ php -r "var_dump(json_decode('{\"id\":8271518654}'));"
object(stdClass)#1 (1) {
  ["id"]=>
  float(8271518654)
}
</pre>
<p>make通ったのはPHP5.2.9まで、PHP5.2.5～PHP5.2.9はjson_encodeで問題が見つかった為結局PHP5.2.4のを利用することに。<br />
もうちょい時間があったらしっかり検証したいとこですが。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cheki.net/archives/1602/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MeCabのインストール</title>
		<link>http://blog.cheki.net/archives/1597</link>
		<comments>http://blog.cheki.net/archives/1597#comments</comments>
		<pubDate>Fri, 01 Jan 2010 06:08:23 +0000</pubDate>
		<dc:creator>cockok</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[mecab]]></category>

		<guid isPermaLink="false">http://blog.cheki.net/?p=1597</guid>
		<description><![CDATA[パッケージが見つからなかったのでソースからコンパイル
MeCabのインストール

cd /usr/local/src
wget http://nchc.dl.sourceforge.net/sourceforge/mec [...]]]></description>
			<content:encoded><![CDATA[<p>パッケージが見つからなかったのでソースからコンパイル</p>
<p>MeCabのインストール</p>
<pre name="code">
cd /usr/local/src
wget http://nchc.dl.sourceforge.net/sourceforge/mecab/mecab-0.98.tar.gz
tar xzf mecab-0.98.tar.gz
cd mecab-0.98
./configure --prefix=/usr/local/mecab-0.98 --with-charset=utf8
make
make install
ln -sfn /usr/local/mecab-0.98 /usr/local/mecab
</pre>
<p>MeCab辞書のインストール</p>
<pre name="code">
cd /usr/local/src
wget http://nchc.dl.sourceforge.net/sourceforge/mecab/mecab-ipadic-2.7.0-20070801.tar.gz
tar xzf mecab-ipadic-2.7.0-20070801.tar.gz
cd mecab-ipadic-2.7.0-20070801
./configure --prefix=/usr/local/mecab --with-charset=utf8 --with-mecab-config=/usr/local/mecab/bin/mecab-config
make
make install
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.cheki.net/archives/1597/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Q4Mインストールしてみた</title>
		<link>http://blog.cheki.net/archives/1592</link>
		<comments>http://blog.cheki.net/archives/1592#comments</comments>
		<pubDate>Fri, 18 Dec 2009 06:38:07 +0000</pubDate>
		<dc:creator>cockok</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.cheki.net/?p=1592</guid>
		<description><![CDATA[ウノウラボ Unoh Labs: Q4Mを触ってみる
ずっと気になってるのでとりあえずインストールだけしておけば使うだろうってことで。
MySQLはremiリポジトリのものを利用してます。
CentOS5.3でPHP5.2を使う
バージョンは5.1.41の最新でした。
mysqlbugコマンドで&#8211;with-fast-mutexesオプションの有無を確認しましたが、有効になっていませんでした。

# wget http://q4m.31tools.com/dist/mysql-5.1.41-linux-x86_64-glibc23-without-fast-mutexes-q4m-0.8.9.tar.gz
# tar zxf mysql-5.1.41-linux-x86_64-glibc23-without-fast-mutexes-q4m-0.8.9.tar.gz
# cd q4m-0.8.9-linux-x86_64/
# cp libqueue_engine.so /usr/lib64/mysql/plugin
# mysql_upgrade
# install -m 755 support-files/q4m-forward /usr/bin
# cat support-files/install.sql &#124; mysql -uroot


# DBI='dbi:mysql:database=test;host=localhost;port=3307'
./run_tests.pl
t/01-base-rnd_pos.........................ok
t/01-base.................................ok
t/02-queue-cond...........................ok
t/02-queue-owned-delete...................ok
t/02-queue................................ok
t/03-queue-error-wait.....................ok
t/03-queue-error..........................ok
t/04-blob-cond............................ok
t/04-blob.................................ok
t/05-multireader..........................

Multireader benchmark result:
    Number of messages: 6400
    Number of readers:  32
    Elapsed:          [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://labs.unoh.net/2009/12/q4m.html">ウノウラボ Unoh Labs: Q4Mを触ってみる</a><br />
ずっと気になってるのでとりあえずインストールだけしておけば使うだろうってことで。</p>
<p>MySQLはremiリポジトリのものを利用してます。<br />
<a href="http://blog.cheki.net/archives/1530">CentOS5.3でPHP5.2を使う</a><br />
バージョンは5.1.41の最新でした。<br />
mysqlbugコマンドで&#8211;with-fast-mutexesオプションの有無を確認しましたが、有効になっていませんでした。</p>
<pre>
# wget http://q4m.31tools.com/dist/mysql-5.1.41-linux-x86_64-glibc23-without-fast-mutexes-q4m-0.8.9.tar.gz
# tar zxf mysql-5.1.41-linux-x86_64-glibc23-without-fast-mutexes-q4m-0.8.9.tar.gz
# cd q4m-0.8.9-linux-x86_64/
# cp libqueue_engine.so /usr/lib64/mysql/plugin
# mysql_upgrade
# install -m 755 support-files/q4m-forward /usr/bin
# cat support-files/install.sql | mysql -uroot
</pre>
<pre>
# DBI='dbi:mysql:database=test;host=localhost;port=3307'
./run_tests.pl
t/01-base-rnd_pos.........................ok
t/01-base.................................ok
t/02-queue-cond...........................ok
t/02-queue-owned-delete...................ok
t/02-queue................................ok
t/03-queue-error-wait.....................ok
t/03-queue-error..........................ok
t/04-blob-cond............................ok
t/04-blob.................................ok
t/05-multireader..........................

Multireader benchmark result:
    Number of messages: 6400
    Number of readers:  32
    Elapsed:            1.184 seconds
    Throughput:         5406.566 mess./sec.

t/05-multireader..........................ok
t/05-multirw..............................ok 1/4

Multi-reader-writer benchmark result:
    Number of messages: 6400
    Number of readers:  32
    Elapsed:            1.718 seconds
    Throughput:         3726.283 mess./sec.

t/05-multirw..............................ok
t/05-multiwait............................ok 1/4

Multi-reader-writer benchmark result under semi-starvation:
    Number of messages: 6400
    Number of readers:  32
    Elapsed:            2.235 seconds
    Throughput:         2863.895 mess./sec.

t/05-multiwait............................ok
t/06-multi................................ok
t/07-trans................................ok
t/08-forward..............................ok
t/09-pqueue-single-table-wake-listener....ok
t/09-pqueue-single-table..................ok
t/10-largedata............................skipped
        all skipped: set BIG_TESTS=1 to run theese tests
All tests successful, 1 test skipped.
Files=18, Tests=68921, 222 wallclock secs (125.61 cusr + 12.97 csys = 138.58 CPU)
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.cheki.net/archives/1592/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>postfixでQdmail1.26bを利用する場合の注意</title>
		<link>http://blog.cheki.net/archives/1587</link>
		<comments>http://blog.cheki.net/archives/1587#comments</comments>
		<pubDate>Wed, 02 Dec 2009 04:33:55 +0000</pubDate>
		<dc:creator>cockok</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.cheki.net/?p=1587</guid>
		<description><![CDATA[デコメ送信ライブラリとして利用されるQdmailをpostfixで利用する場合、sendmail完全互換ではないため以下のようなエラーが発生する。

sendmail: invalid option -- d
sendm [...]]]></description>
			<content:encoded><![CDATA[<p>デコメ送信ライブラリとして利用される<a href="http://hal456.net/qdmail/">Qdmail</a>をpostfixで利用する場合、sendmail完全互換ではないため以下のようなエラーが発生する。</p>
<pre name="code">
sendmail: invalid option -- d
sendmail: invalid option -- 0
sendmail: invalid option -- .
sendmail: invalid option -- 1
sendmail: invalid option -- d
sendmail: fatal: usage: sendmail [options]
</pre>
<p>qmail.phpの1186行目から以下のようにコメントアウトする。</p>
<div style="position:relative;top:18px;margin-top:-18px;"><small><strong>PHP</strong></small>
</div>
<pre name="code" class="php:firstLine[1186]" style="margin:18px 0;">
    //If(false !== @system($sendmail_path.&#039; -d0.1 &lt; /dev/null &gt; /dev/null&#039;,$ret)){
    //  if(is_array($ret)){
    //    $ret = reset($ret);
    //  }
    //  $code = (int) substr($ret,0,3);
    //  if( 100 === $code || 111 === $code){
    //    $this-&gt;is_qmail = true;
    //  }
    //}
</pre>
<p>via:<a href="http://hal456.net/qdmail/support#c303">サポート &#8211; Qdmail &#8211; PHP::Mail Library , Quick and Detailed for Multibyte</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cheki.net/archives/1587/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CentOSで添付メールを送信する</title>
		<link>http://blog.cheki.net/archives/1585</link>
		<comments>http://blog.cheki.net/archives/1585#comments</comments>
		<pubDate>Tue, 24 Nov 2009 14:18:22 +0000</pubDate>
		<dc:creator>cockok</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.cheki.net/?p=1585</guid>
		<description><![CDATA[uuencodeというコマンドが必要になるのでパッケージのインストール

# yum -y install sharutils

パイプでつないであげる。

$ uuencode ファイルパス 添付ファイル名 &#124; mai [...]]]></description>
			<content:encoded><![CDATA[<p>uuencodeというコマンドが必要になるのでパッケージのインストール</p>
<pre>
# yum -y install sharutils
</pre>
<p>パイプでつないであげる。</p>
<pre>
$ uuencode ファイルパス 添付ファイル名 | mail 送信先
</pre>
<p>対話モードにならないので件名などはオプションで指定。</p>
<pre>
$ uuencode ファイルパス 添付ファイル名 | mail -s '件名' 送信先
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.cheki.net/archives/1585/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FizzBuzz</title>
		<link>http://blog.cheki.net/archives/1583</link>
		<comments>http://blog.cheki.net/archives/1583#comments</comments>
		<pubDate>Wed, 18 Nov 2009 06:32:48 +0000</pubDate>
		<dc:creator>cockok</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.cheki.net/?p=1583</guid>
		<description><![CDATA[ワンライナーで気持ち悪く

php -r 'for($i=1;$i]]></description>
			<content:encoded><![CDATA[<p>ワンライナーで気持ち悪く</p>
<pre>
php -r 'for($i=1;$i<101;$i++)echo$i%15?$i%5?$i%3?$i:"Fizz":"Buzz":"FizzBuzz","\n";'
</pre>
<p>ロジック的にはこっちのが好き</p>
<pre>
php -r 'for($i=1;$i<101;$i++)echo($s=(!($i%3)?"Fizz":"").(!($i%5)?"Buzz":""))?$s:$i,"\n";'
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.cheki.net/archives/1583/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP5.3.0でsymfony1.0系でpropelコマンド実行時にエラーがでる</title>
		<link>http://blog.cheki.net/archives/1576</link>
		<comments>http://blog.cheki.net/archives/1576#comments</comments>
		<pubDate>Mon, 16 Nov 2009 11:24:12 +0000</pubDate>
		<dc:creator>cockok</dc:creator>
				<category><![CDATA[日記]]></category>

		<guid isPermaLink="false">http://blog.cheki.net/?p=1576</guid>
		<description><![CDATA[php5.3にしてからsymfony1.0系でsymfonyコマンドの一部でエラーがでるようになった。

$ ./symfony propel-build-model
....
[phingcall] Unable to [...]]]></description>
			<content:encoded><![CDATA[<p>php5.3にしてからsymfony1.0系でsymfonyコマンドの一部でエラーがでるようになった。</p>
<pre>
$ ./symfony propel-build-model
....
[phingcall] Unable to return 'affix' for unknown CreoleType:

BUILD FINISHED
</pre>
<p>propelコマンドを使ってもmodelの生成ができない。</p>
<p>調べてみたところ、以下の方法で解決。<br />
<a href="http://forum.symfony-project.org/index.php/m/84663/">symfony framework forum: symfony 1.0 =&gt; Snow Leopard &#8211; longvarchar</a><br />
symfony以下lib/vendor/creole/CreoleTypes.phpの39行目を以下のように修正。</p>
<div style="position:relative;top:18px;margin-top:-18px;"><small><strong>PHP</strong></small>
</div>
<pre name="code" class="php:firstLine[39]" style="margin:18px 0;">
        //const TEXT = 17;
        const TEXT = 30;
</pre>
<p>で、調べてみたところPHP5.3.0だとこういうことらしい。</p>
<div style="position:relative;top:18px;margin-top:-18px;"><small><strong>PHP</strong></small>
</div>
<pre name="code" class="php" style="margin:18px 0;">
&lt;?php
Class Hoge
{
  const A = 1;
  const B = 1;
  public static $piyo = array(
      1 =&gt; 1,
      1 =&gt; 2,
      );
  public static $fuga = array(
      self::A =&gt; 1,
      self::B =&gt; 2,
      );
}
var_dump(Hoge::$piyo, Hoge::$fuga);
</pre>
<p>実行結果。</p>
<pre>
array(1) {
  [1]=>
  int(2)
}
array(1) {
  [1]=>
  int(1)
}
</pre>
<p>PHP5.3.0のバグ？<br />
PHP5.3.1RC4でも変わらず。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cheki.net/archives/1576/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CentOSで携帯動画をストリーミングできるファイルを作成する</title>
		<link>http://blog.cheki.net/archives/1571</link>
		<comments>http://blog.cheki.net/archives/1571#comments</comments>
		<pubDate>Mon, 09 Nov 2009 09:23:08 +0000</pubDate>
		<dc:creator>cockok</dc:creator>
				<category><![CDATA[日記]]></category>

		<guid isPermaLink="false">http://blog.cheki.net/?p=1571</guid>
		<description><![CDATA[rpmforgeリポジトリを利用できるようにする。

# wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1 [...]]]></description>
			<content:encoded><![CDATA[<p>rpmforgeリポジトリを利用できるようにする。</p>
<pre name="code">
# wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
# rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
</pre>
<p>ffmpeg関連をインストール。<br />
依存関係あるものをもってきたいのでffmpegもインストールするが、rpmforgeのものはaacを利用できないため、後でソースからコンパイルするので削除する。</p>
<pre name="code">
# yum install lame faac faad2 nasm x264 xvidcore ffmpeg zlib-devel libX11-devel libXt-devel faac-devel lame-devel xvidcore-devel gcc gcc-c++
# yum remove ffmpeg
</pre>
<p>opencore-amrのインストール。<br />
現在のffmpegだとlibamr関連が変わっている。<br />
rpmforgeのものは0.1.1でリポジトリのffmpegに適合しないのでソースからコンパイル。</p>
<pre>
# cd /usr/local/src
# wget http://sourceforge.net/projects/opencore-amr/files/opencore-amr/0.1.2/opencore-amr-0.1.2.tar.gz/download
# tar xzf opencore-amr-0.1.2.tar.gz
# cd opencore-amr-0.1.2
#  ./configure
# make
# make install
# cd ..
</pre>
<p>共有ライブラリに認識させる。</p>
<pre name="code">
# echo "/usr/local/lib" &gt;&gt; /etc/ld.so.conf.d/local.conf
# /sbin/ldconfig
</pre>
<p>ffmpegをSubversionリポジトリからインストール。<br />
リビジョン 20483でした。</p>
<pre name="code">
# cd /usr/local/src
# svn export svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
# cd ffmpeg
# ./configure --enable-gpl --enable-libmp3lame --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libxvid --disable-ffplay --disable-ffserver --enable-libfaac --enable-shared --enable-nonfree --prefix=/usr/local
# make
# make install
# cd ..
</pre>
<p>環境変数にLD_LIBRARY_PATHを追加。<br />
bashrcに追加しておく。</p>
<pre name="code">
$ echo "export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/usr/local/lib" >> ~/.bashrc
$ source ~/.bashrc
</pre>
<p>gpac(MP4Box)のインストール。<br />
docomoストリーミングファイル作成に必要。</p>
<pre name="code">
# cd /usr/local/src
# wget http://downloads.sourceforge.net/gpac/gpac-0.4.5.tar.gz
# tar xzf gpac-0.4.5.tar.gz
# cd gpac
# chmod u+x ./configure
# ./configure
# make lib
# make apps
# make install
# cd ..
</pre>
<pre name="code">
$ ffmpeg -i video.flv -y -async 1 -vcodec mpeg4 -s 240x176 -r 14.985 -b 192 -acodec aac -ac 1 -ar 16000 -ab 80 -f 3gp docomo.3gp
$ MP4Box -add docomo.3gp -brand mmp4:1 -new docomo_str.3gp
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.cheki.net/archives/1571/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VMware ESXiでゲストOSのコピー</title>
		<link>http://blog.cheki.net/archives/1565</link>
		<comments>http://blog.cheki.net/archives/1565#comments</comments>
		<pubDate>Fri, 06 Nov 2009 05:26:45 +0000</pubDate>
		<dc:creator>cockok</dc:creator>
				<category><![CDATA[日記]]></category>

		<guid isPermaLink="false">http://blog.cheki.net/?p=1565</guid>
		<description><![CDATA[メモ

コピーしたいOS(guest)の電源を落とす。
コピー元と同じ構成でHDDなしの仮想マシン(clone)を新規作成する。
sshでESXiにアクセスし、ディスクイメージをコピーする。
先ほど作成した仮想マシンでH [...]]]></description>
			<content:encoded><![CDATA[<p>メモ</p>
<ol>
<li>コピーしたいOS(guest)の電源を落とす。</li>
<li>コピー元と同じ構成でHDDなしの仮想マシン(clone)を新規作成する。</li>
<li>sshでESXiにアクセスし、ディスクイメージをコピーする。</li>
<li>先ほど作成した仮想マシンでHDDにコピーしたディスクイメージを指定する。</li>
<li>仮想マシンを起動し、ネットワーク設定をする。</li>
</ol>
<p>3のコマンド</p>
<pre name="code">
~ # vmkfstools -i /vmfs/volumes/vmdk/guest/guest.vmdk /vmfs/volumes/vmdk/clone/clone.vmdk
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.cheki.net/archives/1565/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->