<?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>星光のつれづれ日記 &#187; twitter</title>
	<atom:link href="http://www.hosimitu.com/tag/twitter/feed" rel="self" type="application/rss+xml" />
	<link>http://www.hosimitu.com</link>
	<description>星光(ほしみつ)の体験したどーでもいい事や、いろいろなレビュー、料理のレシピを紹介。旅行記とかもある個人ブログ。</description>
	<lastBuildDate>Sun, 22 Jan 2012 12:40:24 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>twitterのbotで超巨大なステータスナンバーを比較できた</title>
		<link>http://www.hosimitu.com/2011/02/0612-1618.php</link>
		<comments>http://www.hosimitu.com/2011/02/0612-1618.php#comments</comments>
		<pubDate>Sun, 06 Feb 2011 03:39:19 +0000</pubDate>
		<dc:creator>hosimitu</dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.hosimitu.com/?p=1618</guid>
		<description><![CDATA[やっと困っていた問題が解決した。 その問題とはtwitterのbotにおけるステータスナンバーの比較だ。 以前話題になった問題の一つに『2,147,483,647問題』というのがあった。 これはプログラム言語での処理時に [...]]]></description>
			<content:encoded><![CDATA[<p>やっと困っていた問題が解決した。<br />
その問題とはtwitterのbotにおけるステータスナンバーの比較だ。<br />
以前話題になった問題の一つに『<a href="http://www.ideaxidea.com/archives/2009/06/twit_problem.html" target="_blank">2,147,483,647問題</a>』というのがあった。<br />
これはプログラム言語での処理時にオーバーフローを起こし、自分が意図した処理とは別のことが起こってしまう問題だ。<br />
その原因は変数の許容する数字の桁数だった。</p>
<h4>変数の型について</h4>
<p>プログラム言語の変数には型と言われる分類があり、<br />
それにより色々な処理が楽にできるようになっている。<br />
その型の一つに『interger』と言うのがある。<br />
これは数字を扱う型の一つなんだけど、<br />
その型というのは数学としての数字と文字列としての数字を区別するのに必ずいる。<br />
数字を計算しようとしてるのに連結したりしたら困るからね。</p>
<p>で、PHP言語における解決方法としてはintergerじゃなくてfloatを使う。<br />
これで多くの問題は解決する。<br />
この<a href="http://php.net/manual/ja/language.types.float.php" target="_blank">float型</a>の変数というのは14桁の数字まで扱える。<br />
これは10兆の桁まで扱えるものなんだけど、現在のTwitterのステータスナンバーは1000兆の桁を超えているみたい。<br />
そりゃエラーも出ますね。</p>
<p>僕の環境ではbotがステータスナンバーを比較して返答をする時にその不都合は効いてくる。<br />
毎度取得するステータスナンバーが変数の桁数から溢れて、全然正しくないランダムな数字になる。<br />
これにより特定の発言へ延々と返信したり、全く返信しなかったりしたのだ。</p>
<h4>ステータスナンバーの比較</h4>
<p>さっそく自分が書いたコードを貼り付ける。</p>
<pre>
//TwitterAPIを呼び出すのは省略
$xml = "TwitterのAPIを呼び出した結果がxmlで入っている"

//比較されるステータスナンバーを配列に入れる
$hikaku_number = "10000000000000000";
$array_hikaku_number = str_split($hikaku_number);

//比較開始
foreach( $xml->status as $value ){
    //発言のステータスナンバーを配列に入れる
    $status_number = strval($value->id);
    $array_status_number = str_split($status_number);

    //ステータスナンバーの比較のためのフラグ
    $reply_flag = false;
    $break_flag = false;

    //まずは桁数の比較。次に前から順に数字に変換して比較。
    if( count($array_status_number) > count($array_number) ){
        $reply_flag = true;
    } else {
        $i = 0;
        foreach( $array_status_number as $value ){
                if( $value === $array_hikaku_number[$i] &#038;&#038; $break_flag === false){
                        //何もせずに次の位へ
                }elseif( $value > $array_hikaku_number[$i]  &#038;&#038; $break_flag === false){
                        $reply_flag = true;
                        $break_flag = true;
                }else{
                        $break_flag = true;
                }
                $i++;
        }
    }
    if ($reply_flag){
           //投稿処理
    }
}
</pre>
<p>『$xml』の中には既に呼び出されたAPIがXMLの形で入っているとする。</p>
<p>そして比較方法はステータスナンバーを配列に一桁ずつ入れ、それを比較するという感じ。<br />
最初はステータスナンバーを文字列として扱い、それを前から一つずつ配列に入れていく。<br />
配列に入れたら数字をinterger型に変換して比較作業へと移る。<br />
6行目と12行目が一桁ずつ配列に入れているところね。</p>
<p>15,16行目は配列を比較するための分岐フラグ。<br />
19行目で桁数を比較し、異なる場合はステータスナンバーの方が大きいと判断。<br />
同じ場合は23行目から33行目までの間で処理をする。<br />
23行目は数字が同じだった時、26行目はステータスナンバーの方が大きかった時、29行目は小さかった時です。</p>
<p>そして大きかった時のみ35行目から37行目の間で投稿処理等をする。</p>
<h4>まとめ</h4>
<p>記事を書いていて思ったけど、もっとスマートな方法があるんだろうな。<br />
ステータスナンバーの比較で詰まったとか最近は全く見あたらない気がするし。<br />
でも、この配列を利用する方法なら桁数が大きくなっても結構いけると思う。<br />
いつかは桁数が溢れる時が来るけど、それはまだ大分先だろう。</p>
<p>さて、次の問題は自動フォローアンフォローのスパムブロック機能付きを探すことかな？<br />
これがあればbotもスパムに汚染されなくて良いし助かるんだけどな。<br />
もし良い方法があればコメントとかで教えてくださいლ(╹◡╹ლ)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hosimitu.com/2011/02/0612-1618.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>twitterのbotなどで OAuthを使う方法（PHPバージョン2）</title>
		<link>http://www.hosimitu.com/2010/04/2920-1456.php</link>
		<comments>http://www.hosimitu.com/2010/04/2920-1456.php#comments</comments>
		<pubDate>Thu, 29 Apr 2010 11:37:54 +0000</pubDate>
		<dc:creator>hosimitu</dc:creator>
				<category><![CDATA[ツール]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.hosimitu.com/?p=1456</guid>
		<description><![CDATA[『twitterのbotなどで OAuthを使う方法（PHPバージョン）』へたくさんの人が来られるのでその誘導用記事。 まずtwitterに登録しよう bot用のOAuthの設定を始めるに当たってtwitter側で登録す [...]]]></description>
			<content:encoded><![CDATA[<p>『<a href="http://www.hosimitu.com/2009/11/2020-1358.php">twitterのbotなどで OAuthを使う方法（PHPバージョン）</a>』へたくさんの人が来られるのでその誘導用記事。</p>
<h4>まずtwitterに登録しよう</h4>
<p>bot用のOAuthの設定を始めるに当たってtwitter側で登録する必要がある。<br />
<strong>botのアカウントでtwitterにログインをした状態で</strong>以下のリンクへ。<br />
『<a href="http://dev.twitter.com/apps/" target="_blank">Twitter Applications | dev.twitter.com</a>』<br />
すると下の画像のようなアプリケーション一覧画面になる。<br />
まだOAuth用の登録をしていないなら一覧には何も表示されません。</p>
<p><a href="http://www.hosimitu.com/img/2010/04/touroku.jpg"  title="登録してあるOAuthの一覧" rel="lightbox[1456]" /><img src="http://www.hosimitu.com/img/2010/04/touroku-400x262.jpg" alt="登録してあるOAuthの一覧" title="登録してあるOAuthの一覧" width="400" height="262" class="alignnone size-thumbnail wp-image-1453" /></a></p>
<p>画面右側にある『新しいアプリケーションを登録する』をクリック。<br />
そうすると下のような設定画面がでて来る。</p>
<p><a href="http://www.hosimitu.com/img/2010/04/setting.jpg"  title="簡単な設定画面"rel="lightbox[1456]" /><img src="http://www.hosimitu.com/img/2010/04/setting-334x300.jpg" alt="簡単な設定画面" title="簡単な設定画面" width="334" height="300" class="alignnone size-thumbnail wp-image-1454" /></a></p>
<p>設定してアプリケーションを登録した後、アプリケーション一覧画面へ戻る。<br />
登録したアプリケーションの画像をクリックすると個別の情報ページへと飛ぶ。</p>
<p><a href="http://www.hosimitu.com/img/2010/04/kobetu.jpg"  title="アプリケーションの個別画面"rel="lightbox[1456]" /><img src="http://www.hosimitu.com/img/2010/04/kobetu-385x300.jpg" alt="アプリケーションの個別画面" title="アプリケーションの個別画面" width="385" height="300" class="alignnone size-thumbnail wp-image-1455" /></a></p>
<p>モザイクかけてあるところが秘密にするべき情報。<br />
bot用の設定ならばCallback URLは空欄だ。<br />
この画面の中の『Consumer key』と『Consumer secret』が今回OAuthを使うのに必要なもの。</p>
<p>そして画面右側にある『My Access Token』をクリック。<br />
そうすると『Access Token』と『Access Token Secret』が発行される。</p>
<p>これら4つのランダムな文字列を使ってOAuth用のプログラムを動かす。</p>
<h4>プログラムの準備をしよう</h4>
<p>まず、『<a href="http://github.com/abraham/twitteroauth" target="_blank">abraham&#8217;s twitteroauth at master &#8211; GitHub</a>』からプログラムをダウンロードしよう。<br />
バージョンは0.2.0以降のものをダウンロードする。βが付いてるけど動くみたい。</p>
<p><a href="http://www.hosimitu.com/img/2010/04/download.jpg"  title="バージョン2以降をダウンロード"rel="lightbox[1456]" /><img src="http://www.hosimitu.com/img/2010/04/download-400x152.jpg" alt="バージョン0.2以降をダウンロード" title="バージョン0.2以降をダウンロード" width="400" height="152" class="alignnone size-thumbnail wp-image-1452" /></a></p>
<p>ダウンロードし解凍した中の『twitteroauth』フォルダの中の『OAuth.php』と『twitteroauth.php』を使ってbotを動かす。<br />
それら二つをbotと同じ場所にコピペだ。</p>
<p>動作テストの例としてAPIを使うサンプルを少し詳しく紹介。<br />
『<a href="http://api.twitter.com/1/statuses/mentions.xml?count=30" target="_blank">http://api.twitter.com/1/statuses/mentions.xml?count=30</a>』の内容をモニョモニョする。<br />
PHP5以降が必須です。</p>
<pre>
&lt;?php
// twitteroauth.phpを読み込む。パスはあなたが置いた適切な場所に変更してください
	require_once(&quot;twitteroauth.php&quot;);

// Consumer keyの値
	$consumer_key = &quot;consumer_key&quot;;
// Consumer secretの値
	$consumer_secret = &quot;consumer_secret&quot;;
// Access Tokenの値
	$access_token = &quot;access_token&quot;;
// Access Token Secretの値
	$access_token_secret = &quot;access_token_secret&quot;;

// OAuthオブジェクト生成
	$to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret);

//APIを呼び出す（今回はリプライを30件取得する）
	$result = $to-&gt;OAuthRequest(&quot;http://api.twitter.com/1/statuses/mentions.xml&quot;,&quot;GET&quot;,array(&quot;count&quot;=&gt;&quot;30&quot;));
//扱いやすくする
	$xml = simplexml_load_string($result);

//foreachを使い処理をする
	foreach( $xml-&gt;status as $value ){
		$status_number = $value-&gt;id;	//個別発言のステータスナンバー
		$text = $value-&gt;text;	//発言内容
		$screen_name = $value-&gt;user-&gt;screen_name;	//発言者のtwitterID

		//各発言を表示する（botだと$textに特定文字列がある場合リプライするとかの処理を入れる）
		echo $screen_name . &quot;さんから＠が飛んできました。&lt;br /&gt;&quot;;
		echo &quot;発言内容は&quot; . $text . &quot;で、その個別ページはhttp://twitter.com/&quot; . $screen_name . &quot;/status/&quot; . $status_number . &quot;です。&lt;br /&gt;&quot;;
		echo &quot;&lt;br /&gt;&quot;;
	}
?&gt;
</pre>
<p>コードの上にマウスを持ってくるとコードの右上の方にプリンタの画像とかが出てくるので、<br />
その一番左にあるプレインテキストの画像をクリックすれば別ウインドウにコピペしやすく再表示されます。</p>
<p>以上で解説は終わりです。<br />
何か質問があればコメント欄へよろしくお願いいたします。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hosimitu.com/2010/04/2920-1456.php/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>CakePHPで作った携帯電話用twitterクライアントのソースを公開</title>
		<link>http://www.hosimitu.com/2010/02/1609-1398.php</link>
		<comments>http://www.hosimitu.com/2010/02/1609-1398.php#comments</comments>
		<pubDate>Tue, 16 Feb 2010 00:47:49 +0000</pubDate>
		<dc:creator>hosimitu</dc:creator>
				<category><![CDATA[ツール]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[ウェブサービス]]></category>

		<guid isPermaLink="false">http://www.hosimitu.com/?p=1398</guid>
		<description><![CDATA[2ヶ月ほど前に携帯電話用のtwitterクライアントを作った。 色々あってソースコードを公開することにした。 ちょっと一人で開発を続けるのに時間がかかりすぎるのもあって公開に踏み切った。 あとサーバーの限界がわからないと [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.hosimitu.com/2009/12/1400-1368.php"><img src="http://www.hosimitu.com/img/2009/12/pakesi.gif"  alt="けーついのコンセプトはパケ死しない" width="600" height="100" class="alignnone size-full wp-image-1371" rel="lightbox[1398]" /></a></p>
<p>2ヶ月ほど前に携帯電話用のtwitterクライアントを作った。<br />
色々あってソースコードを公開することにした。</p>
<p>ちょっと一人で開発を続けるのに時間がかかりすぎるのもあって公開に踏み切った。<br />
あとサーバーの限界がわからないとか色々。<br />
このブログと同じサーバーに上げているので何かあったらブログ共々ダメになるしね。</p>
<p>ソースコード：<a href="http://github.com/hosimitu/k-twi" target="_blank">hosimitu&#8217;s k-twi at master &#8211; GitHub</a></p>
<p>それからどこかに使い勝手の良いサーバー無いかな？<br />
GAEはダメじゃないけどフレームワークが動かせないし・・・。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hosimitu.com/2010/02/1609-1398.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>『プログラミングができなくても作れるTwitter botの作り方』を勝手にOAuthにした</title>
		<link>http://www.hosimitu.com/2010/01/2520-1390.php</link>
		<comments>http://www.hosimitu.com/2010/01/2520-1390.php#comments</comments>
		<pubDate>Mon, 25 Jan 2010 11:53:46 +0000</pubDate>
		<dc:creator>hosimitu</dc:creator>
				<category><![CDATA[ツール]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.hosimitu.com/?p=1390</guid>
		<description><![CDATA[『プログラミングができなくても作れるTwitter botの作り方』の投稿部分を勝手にOAuthにした物を、著作権表記を付けたまま勝手に配布。 使い方は上記のページを参照。 ダウンロード ダウンロード(ver.1.42を [...]]]></description>
			<content:encoded><![CDATA[<p>『<a href="http://pha22.net/twitterbot/" target="_blank">プログラミングができなくても作れるTwitter botの作り方</a>』の投稿部分を勝手にOAuthにした物を、著作権表記を付けたまま勝手に配布。<br />
使い方は上記のページを参照。</p>
<h4>ダウンロード</h4>
<p><a href="http://www.hosimitu.com/download/easybotter1.42b.zip" target="_blank">ダウンロード</a>(ver.1.42をベースに独自にOAuth関係を組み込んだ) 動作確認済み<br />
<a href="http://www.hosimitu.com/download/easybotter1.42c.zip" target="_blank">ダウンロード</a>(ver.1.42をベースにver.2.04の機能を盛り込んだ) 動作未確認</p>
<h4>著作権とか重要なお約束</h4>
<p>『<a href="http://www.hosimitu.com/2010/04/2920-1456.php" target="_blank">twitterのbotなどで OAuthを使う方法（PHPバージョン2）</a>』の記事を参考にOAuth登録出来た人のみが使用することを許される感じです。<br />
『まずtwitterに登録しよう』以降を参考にして手順を進めてください。</p>
<p>OAuthを呼び出したりする部分のプログラムは『<a href="http://github.com/abraham/twitteroauth" target="_blank">abraham&#8217;s twitteroauth at master &#8211; GitHub</a>』を使っています。<br />
また、twitterにOAuthを登録する部分のプログラムは『<a href="http://wolf.silk.to/labo/oauth.html" target="_blank">PHP+OAuthでTwitter</a>』を使っています(； ･`д･´)</p>
<p>ライセンス関連がいまいちわからないのでご一報で即削除します。</p>
<h4>仕組みとか</h4>
<p>$oauthがtrueの時OAuthを使って投稿します。<br />
falseの時は従来通りのユーザー名とパスワードで動きます。<br />
OAuthを使う時パスワードは必要ないですが、ユーザー名は設定してください。<br />
タイムラインから自分の発言を除いたりする時に使っています。</p>
<p>『Servises』フォルダ内の『Twitter.php』をリネームして『Twitter_oauth.php』とし、それを改造しています。</p>
<p>2010.1.30 記事修正<br />
2010.3.5 ver.2を組み込んだものを公開</p>
<p>2010.3.16 プログラム修正<br />
ユーザーさんから『<a href="http://8bitnote.sblo.jp/article/32678890.html" target="_blank">Twitterbot の特定の単語に反応してリプライ反応するサンプルスクリプト ver.2</a>』を使いたいと要望があったのでver1.42bを修正。<br />
こんなことするのなんて今回だけなんだからねっ！<br />
礼儀正しかったからしただけなんだからねっ！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hosimitu.com/2010/01/2520-1390.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CakePHPで携帯用twitterクライアント作った</title>
		<link>http://www.hosimitu.com/2009/12/1400-1368.php</link>
		<comments>http://www.hosimitu.com/2009/12/1400-1368.php#comments</comments>
		<pubDate>Sun, 13 Dec 2009 15:14:30 +0000</pubDate>
		<dc:creator>hosimitu</dc:creator>
				<category><![CDATA[ツール]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.hosimitu.com/?p=1368</guid>
		<description><![CDATA[今さら感が溢れる所なんだけど、自分最適されたものが欲しかったので作って見た。 CakePHPと言うフレームワークを使って、あとから機能が足せるように作っている。 そんなヤツの名前は『k-twi/けーつい』だ。 コンセプト [...]]]></description>
			<content:encoded><![CDATA[<p>今さら感が溢れる所なんだけど、自分最適されたものが欲しかったので作って見た。<br />
CakePHPと言うフレームワークを使って、あとから機能が足せるように作っている。<br />
そんなヤツの名前は『<a href="http://bit.ly/4UFfwE" target="_blank">k-twi/けーつい</a>』だ。</p>
<p><a href="http://bit.ly/4UFfwE"><img src="http://www.hosimitu.com/img/2009/12/pakesi.gif"  alt="けーついのコンセプト" width="600" height="100" class="alignnone size-full wp-image-1371" rel="lightbox[1368]" /></a></p>
<p>コンセプトはパケ死しない方向で。<br />
今はまだ他と比べてダントツ軽いというわけではない。<br />
基本的な機能を押さえているとは思うけど、公式より便利、他のクライアントよりは・・・と言う位置づけ。</p>
<p>いろいろ調べてるんだけど、2009年12月時点でクラウドサービスではcakePHPが動いた事例を見つけれていないので、<br />
登録者数が増えたら登録を停止するかも知れない。<br />
また、写真系の他サービスとも連携が取れていないところが痛いな。<br />
自分一人の力の限界を感じてしまう(w＿－; ｳｩ･･</p>
<p>今後の方向性としては小ネタアプリの集合体にする予定。<br />
友達間で遊べるゲームとかを作りたいなと。<br />
アイデアは湧くけど、指先からコードが湧かない。</p>
<p>質問とかはメールかtwitterの方で。<br />
すぐに返答できるとは限らないですが。。。</p>
<p>2010.2.16　追記<br />
『<a href="http://www.hosimitu.com/2010/02/1609-1398.php">CakePHPで作った携帯用 twitterクライアントのソースを公開</a>』</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hosimitu.com/2009/12/1400-1368.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

