やっとリリースされたSymfony2もおさえた、最新PHPフレームワーク比較表


投稿日:2011年7月29日(この記事を読むのに必要な時間: 約 0分28秒

PHP5.3フレームワークとして華々しくリリースされたSymfony2を筆頭にPHPのあらゆるフレームワークを比較した比較表を作り上げるプロジェクトが進行中です。

比較表はこちら

まだ、抜けている箇所がありましたら、是非埋めてください。こうして一覧としてみると、いろいろと気づかされるものがありますね。

第2回Symfony2勉強会 これからの「Symfony2」の話をしよう


投稿日:2011年1月15日(この記事を読むのに必要な時間: 約 1分16秒

3分でわかる RubyでつぶやくTwitter bot


投稿日:2011年1月6日(この記事を読むのに必要な時間: 約 2分12秒

必要なgemをインストールしておきましょう。

$ gem install twitter logger
$ gem server

これがgemのドキュメントなので複雑なことがやりたくなったら見てください。

コンシューマーキーなどを事前に入手しておく。

XXXXXXXで埋められている部分を自分の上記で入手したKEYに変更してください。

require "rubygems"
require "twitter"
require 'logger'

LOG = Logger.new('tweet.log')
CONSUMER_KEY = 'XXXXXXXXXXXXX'
CONSUMER_SECRET = 'XXXXXXXXXXXXXXXXXXXXXX'
ACCESS_TOKEN = 'XXXXXXXXXXXXXXXXXXXXXX'
ACCESS_SECRET = 'XXXXXXXXXXXXXXXXXXXXXX'

Twitter.configure do |config|
  config.consumer_key = CONSUMER_KEY
  config.consumer_secret = CONSUMER_SECRET
  config.oauth_token = ACCESS_TOKEN
  config.oauth_token_secret = ACCESS_SECRET
end

tweet = ['つぶやきA',
         'つぶやきB',
         'つぶやきC']

client = Twitter::Client.new
begin
  client.update(tweet[rand(tweet.length)])
rescue => ex
  LOG.warn ex
  sleep 5
  retry
end

これをcronなどで定期的に回せば、ランダムでつぶやいてくれます。

その他の参考情報

手を動かして覚えるPHP 5.3新機能 日付(DateTime,DateInterval)編


投稿日:2010年12月28日(この記事を読むのに必要な時間: 約 7分22秒

Students and Teacher in a Classroom at Cathedral High School in New Ulm, Minnesota...

重要なことだから最初に伝えておくと、PHP5.3からは日付や時間の計算にUNIXTIMEなんて使わないでね。

2038年問題とかパッとみて、「これ何日間なの?」とか計算するのは、さよならしましょう。

手元にPHP5.3環境がある人は、インタラクティブモードを利用して実践しながら読むことをおすすめします。

さぁ、コンソールをひらいて、下記のコマンドを実行しましょう。

$ php -a

DateTimeオブジェクト

PHP5.3から導入された新機能として、日付に関するオブジェクトが増えました。

それが、DateTimeオブジェクトです。

$now = new DateTime();
echo $now->format("Y-m-d H:i:s") . PHP_EOL;
2010-12-28 23:00:20+09:00

昨日、明日、来週、来月はこんな感じ。

$yesterday = new DateTime("-1 day");
echo $yesterday->format($format) . PHP_EOL;
2010-12-27 23:00:20+09:00

$tomorrow  = new DateTime("1 day");
echo $tomorrow->format($format) . PHP_EOL;
2010-12-29 23:00:20+09:00

$nextWeek  = new DateTime("1 week");
echo $nextWeek->format($format) . PHP_EOL;
2011-01-04 23:00:20+09:00

$nextMonth = new DateTime("1 month");
echo $nextMonth->format($format);
2011-01-28 23:00:20+09:00

もちろん、UNIXTIMEからもDateTimeオブジェクトをつくれるけど注意が必要。

$now = new DateTime('@' . time());
echo $now->format($format) . PHP_EOL;
2010-12-28 14:00:20+00:00

なんと、タイムゾーンがUTCになってしまいます。

$now = new DateTime('@' . time(), new DateTimeZone('Asia/Tokyo'));
echo $now->format($format) . PHP_EOL;
2010-12-28 14:00:20+00:00

引数をつけてもダメです。

インスタンスがつくられてから、あらためてタイムゾーンを設定してください。

$now = new DateTime('@' . time());
$now->setTimezone(new DateTimeZone('Asia/Tokyo'));
echo $now->format($format) . PHP_EOL;
2010-12-28 23:00:20+09:00

DateIntervalオブジェクト

DateTimeオブジェクトが日付をあらわすオブジェクトだとすると、

日付の間隔をあらわすのがDateIntervalオブジェクトです。

今日と1週間後の差分を取得してみます。

$now = new DateTime();
$nextWeek  = new DateTime("1 week");
$interval = $now->diff($nextWeek);
echo $interval->format('%R%d days') . PHP_EOL;
+7 days

DateIntervalオブジェクト単体で生成するには

$interval = DateInterval::createFromDateString("+7 month");

加算処理(add)

今日、1週間後、2週間後を日付の加算処理で求めます。

$now = new DateTime();
$nextWeek  = new DateTime("1 week");
$cloneDateTime = clone $nextWeek;
$twoWeeks = $cloneDateTime->add($interval);
echo $now->format($format) . PHP_EOL;
2010-12-28 23:00:20+09:00
echo $nextWeek->format($format) . PHP_EOL;
2011-01-04 23:00:20+09:00
echo $twoWeeks->format($format) . PHP_EOL;
2011-01-11 23:00:20+09:00

減算処理(sub)

今日、1週間前を日付の減算処理で求めます。

$now = new DateTime();
$cloneDateTime = clone $now;
$weekAgo = $cloneDateTime->sub($interval);
echo $now->format($format) . PHP_EOL;
2010-12-28 23:00:20+09:00
echo $weekAgo->format($format) . PHP_EOL;
2010-12-21 23:00:20+09:00

致し方なくUNIXTIMEをつかうとき…

PHPから他の処理系へ渡す時にどうしてもUNIXTIMEを使わなければならないとき、

$now = new DateTime();
echo $now->format('U') . PHP_EOL;
1292940020

まとめ

PHP5.3からはUNIXTIMEを使うことなく日付時間の処理が可能である。

Propel1.5Doctrine2もDateTimeインスタンスを返してくるようになる。

DateTimeとDateIntervalを身につけないと、2011年のPHPについていけなくなってしまう。

PHPマニュアルに詳しい内容は書いてある。

PHP5.3がリリースされた当初には、一部不足している内容があったが今は追加されている。

DateTimeオブジェクトのformatは % 必要ないのに、DateInterval は % が必要なんですかね?腹立ちますね!

とか、いろいろアレな点もありますが…。

自分の部下には「パーフェクトPHP」を読んでおいてもらいたい理由5つなど、PHP界隈で絶賛の評価がされているパーフェクトPHPも、もちろんこの内をバッチリ押さえている。

小川 雄大¥ 3,780

PHP Matsuri 2010 JIREI NIGHT でしゃべります!


投稿日:2010年9月27日(この記事を読むのに必要な時間: 約 0分19秒

10/2〜3で開催されるPHP Matsuri 2010に参加します。

10/2の夜に開催される事例発表(JIREI NIGHT)でトークします。

ウノウでおこなったテストファースト開発によるsymfony1.4の事例を話す予定です。

まだチケットは売られていますので、みなさんの参加をお待ちしております。

Twitterだけじゃない、世界のマイクロブログたち!


投稿日:2009年10月6日(この記事を読むのに必要な時間: 約 4分2秒

ITリテラシーの高い人のなかでは、すげー流行っているマイクロブログ。

その代表がTwitterなんだろうけど、他にはどんなのあるか調べてみた。

Tumblr

Tumblr

Tumblr

TumblrはTwitterと基本は同じなんだけど、TumblrはTumblrなのである。

なんというか、Twitterより画像とか動画とか視覚に訴えるモノが多い。

検索結果がサムネイル風に表示されたり、UIが洗練されていると言えば良いのだろうか。

TwitterがOS界のWindowsなら、TumblrはOS界のMacだろう。

Twitterへの同時投稿もでき、RTが同時に表示されるので、

最近はTumblrからTwitterを利用している。

Wassr

Wassr

Wassr

モバイルファクトリーが運営しているマイクロブログサービス。

公式で日本の携帯に対応している。

チャンネル機能があるが、ユーザーからの反応がゆるいというか薄いというか少ない。

ToDo機能など、いるのかいらないのかわからない機能あり。

あしあと機能などもあり。純粋に日本人が多い。SecondLifeからも投稿できるとか。

機能ありありだけど、それだけ使いこなしているユーザーは少なそう。

ちゅいったー

ちゅいったー

ちゅいったー

140文字ではなく、14文字までの投稿しかできない

マイクロブログサービスならぬナノブログサービスらしい。

現在はα版らしく、サービスはいつなくなるかわからない。

Jaiku

Jaiku

Jaiku

フィンランドのヘルシンキに拠点を置く会社をGoogleが買収したマイクロブログらしい。

利用されているシステムはGoogle codeで公開されている。ちなみに言語はPythonだ。

AppEngineで動いているってのも特徴と言えば特徴。

identi.ca

Identi.ca

Identi.ca

StatusNetを利用したマイクロブログサービス。

他になんか書こうと思ったけど、よくわからん。

Jisko

Jisko

Jisko

個人的には一番気に入ったマイクロブログサービス。

とっても可愛いリスがいいですね。

メニューなども日本語に対応している。

Twitter同時投稿もでき、URLショートカットサービスも選べる。

ソースコードも公開されている。ちなみに言語はPHPだ。

Afficheur

Afficheur

Afficheur

これだけ紹介して、わけわからなくなっているマイクロブログサービスだが、

その全部に一括投稿できるツールがAfficheurである。

まとめ

mixiとGREEとモバゲーのSNS(Facebook忘れるな)と同じように、

マイクロブログが乱立しすぎって感じ。何が何だか。。。

おもったよりオープンソース化されているシステムが多いという印象です。

海外物はSMSから投稿できたり、電話してボイスを登録できたり。

なんかもー、なんでもあり。

Micro Blog Traffic Ranking

Micro Blog Traffic Ranking

トラフィックランクを見るとTwitterのひとり勝ち。

えっと、この記事つくるのにメッチャアカウントつくったので、

ぜひ、各サービスでフォローして下さい。(ブログ右上に羅列してます)

APIを使うためのメモ


投稿日:2009年8月21日(この記事を読むのに必要な時間: 約 0分47秒

あとで使いそうなのでメモ

まとめ

基本的にPerlはXML::Atom::Clientを使う。

PHPはHTTP_Requestを使う。

CakePHPはBehavior(ビヘイビア)でwebserviceを使うと楽々?

で、いいのかな?

参考

PHPでAtomAPI

PHPからWEB2.0なAPIサービスを使う際に便利なモジュールまとめ … 大手系APIをPHPで利用する場合のモジュール。便利そう。

番外編

どう書く? … 具体的なソースコードを探すにおもしろそう

Sledge … PerlのフレームワークっていったらCatalystだけど、livedoorがPerlのフレームワークを作っていたんだ。これはおいしいの? ThinkITで中の人がSledgeによるWebアプリケーションフレームワーク入門というの書いてました。あとで試食してみる。