アーカイブ : 2011年 9月

【jQuery】Twitterタイムラインの検索丸コピサンプル

Twitterタイムラインの検索丸コピサンプルです。
これを丸っとコピって実行すれば、タイムラインの検索結果が取得できます。

たまにツイッター検索結果を表示しているサイトで、表示されていない場合があります。
そんなサイトはきっと、PHPでツイッターAPIを叩いているんだと思います。

PHPで検索結果などOAuthを通さないAPIのアクセスは、
自サーバ→ツイッターサーバにアクセスするので、
そのページにアクセスがあるたびに、APIの回数制限のカウントが減っていきます。(たしか、OAuth通さない時は、1時間に100回だった気がします。)

そこで、Javascriptを使います。
Javascriptからの非同期通信の場合、APIの回数制限のカウントは、
クライアントのIPアドレスからになるので、
サーバで同時にアクセスがあろうとも関係ないのです。

PHPだとサーバにアクセスしている全員が閲覧できなくなりますが、
JSだとアクセス元のIPだけ閲覧できないので、自業自得ってことで対応できます。

基本的にOAuthしないAPIのアクセスはJavascriptを使った方がよさそうですね。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Twitter検索サンプル</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script>
$(document).ready(function() {
        $str_search = "so-lat.com"
        var $getJsonUrl="http://search.twitter.com/search.json?q=" + $str_search + "&rpp=5&callback=?";
        var $data;
        $.ajaxSetup({scriptCharset:'utf-8'});
        $.getJSON($getJsonUrl, function($data) {
            var $str_html = "";
            for(var $i in $data["results"]){
                $str_html += '<li>';
                $str_html += '<img src="'+$data['results'][$i].profile_image_url+'" alt="" width="50" height="50" />';
                $str_html += $data['results'][$i].text;
                $str_html += '</li>';
            }
            $("#twitter").html($str_html);
        });
});
</script>
</head>
<body>
<ul id="twitter"></ul>
</body>
</html>

【PHP】桁数を統一できるカウンタ。注文番号などに使う!

PHPでDBを使わずに、注文番号の管理をしたいと先方に言われたので、
カウンターを作って、ゼロ埋めして返すFunctionを作成しました。

引数には、カウンタのファイル名と桁数を入力すると、
返り値に注文番号を返します。

■実行

$order_no = $this->counter(dirname($_SERVER['DOCUMENT_ROOT']).'/approot/count.txt',6);

■関数

/*
 * @access  public
 * @param     String    $filename    カウンタファイル保存先
 * @param     Int    $sprintf    桁数を統一
*/

public function counter($filename,$sprintf = 1){
  //ファイルがなかったら作成する
  if (!file_exists($filename)) {
    touch( $filename );
    chmod( $filename, 0777 );
  }
  $fp = @fopen($filename,"r+") or die("ファイルが開けません");
  flock($fp, LOCK_EX);
  $count = fgets($fp, 64);
 
  if( (int)$count === 0 ){
    //ファイルがない場合のデフォルトは1
    $count = 1;
  }else{
    //数値が取得できたら連番をつける
    $count++;
  }
  rewind($fp);
  fputs($fp, $count);
  fclose($fp);
  return sprintf('%0'.$sprintf.'d', $count);
}

iPhone/Androidを同時に書き出せるTitanium Mobileがすごい

iPhoneネイティブ開発を行なっている人が、Android版のアプリを開発するとなると単純に工数が2倍になります。

そこで、titaniumにて開発を行うと同時にiPhone・Androidを書き出すことができるんです。

Flashなどで作成すると書きだしたアプリはAirランタイム上で動作することになりますが、
Macでtitaniumを使用することにより、ネイティブアプリを開発したように通常通りアプリが起動できます。

ちなみに、titaniumの読み方は、「チタニウム」ではなく「タイタニウム」と読むそうです。

Tarminalもデフォルトで使用できるし、EclipseベースだからPHP開発も問題なくできるので、開発環境はしばらくこれにします。

当然ですが、Macを使用していないとiPhoneアプリを書き出せないので注意です。

titanium mobile