Home > アーカイブ > 2010-09

2010-09

PHP5.3+古いCakePHPのDeprecated表示をPHPコードを書き換えずに抑制する

この記事の所要時間: 133

PHP5.3+古いCakePHPで表示される大量のDeprecatedを抑制する方法です。

これはPHP5.3からE_ALLにE_DEPRECATEDが含まれたためで、非推奨な関数や文法を使っているとDeprecatedエラーが表示されます。

Deprecated表示を抑制する一番単純なのは、error_reporting設定でE_ALLからE_DEPRECATEDを外す方法です。

error_reporting = E_ALL & ~E_DEPRECATED

CakePHPでもデバッグレベルが0であれば、この方法で回避可能です。

しかし開発環境でデバッグレベルを1以上にしていると、フレームワークがerror_reportingをE_ALLに上書きしてしまうため、Deprecatedが表示されてしまいます。

E_ALLを設定している箇所を書き換える方法もありなのですが、開発環境にある複数のプロジェクトについて書き換えていくのも中々骨の折れる作業です。

ということで、CakePHP側のソースは書き換えずにDeprecated表示を抑制する方法を考えてみました。

E_ALLからE_DEPRECATEDを外す

方法は単純。PHP自体のソースを変更してE_ALLからE_DEPRECATEDを外すだけです。

変更箇所は1箇所だけ。

[Zend/zend_errors.h]

— zend_errors.h.org 2010-09-23 18:10:00.000000000 +0900
+++ zend_errors.h 2010-09-23 17:05:30.000000000 +0900
@@ -38,7 +38,7 @@
#define E_DEPRECATED (1<<13L) #define E_USER_DEPRECATED (1<<14L) -#define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_DEPRECATED | E_USER_DEPRECATED) +#define E_ALL (E_ERROR | E_WARNING | E_PARSE | E_NOTICE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_RECOVERABLE_ERROR | E_USER_DEPRECATED) #define E_CORE (E_CORE_ERROR | E_CORE_WARNING) #endif /* ZEND_ERRORS_H */ [/code]

あとは通常どおりPHPをビルドしてインストールすればokです。

変更前後でE_ALLの値は以下のように変わります。

変更前(オリジナル)
% php -r 'var_dump(E_ALL);' 
int(30719)

変更後
% php -r 'var_dump(E_ALL);' 
int(22527)

これでerror_reportingにE_ALLが設定されても、Deprecatedは表示されません。

とりあえずですが

本来はDeprecatedな原因を取り除くことが一番なのですが、本番環境はPHP5.2や5.1で、開発環境はPHP5.3にしたいということがあったので、この方法で対処しました。

アプリケーション側のソースは一切変更する必要が無いので楽ですね。まあ開発環境限定ということで。

Twitter で使える8つのコマンド

この記事の所要時間: 244

Twitterで使えるコマンドを試してみました。

昨夜のXSS騒動の時に脆弱性を利用したtweetを見ていたのですが、気になったのが公式RTを発生させるコードでした。

詳細は書きませんが、内容はmouseoverで特定のメッセージを自動でtweetさせるコードでした。自動でtweetするメッセージは以下のようになっていました。

RT XXXX

※XXXXはユーザID

自動tweetするのは分かるのですが、なぜこれが公式RTになるのかが不思議でした。

そこでTwitter Help Centerを見ると、このメッセージはコマンドとして規定されており、公式RTされることが分かりました。

以前からコマンドは知っていたのですが、あらためて見ると知らないものもあったので試してみました。

コマンドの使い方

コマンドの使い方は単純です。各コマンドをpostするだけです。

参照系(GET/STATS/WHOIS)以外はクライアントからpostしても有効です。(Echofon/Twitter for iPhoneで確認)

@username + message

これは説明不要ですね。Replyです。

D username + message

DMを送ります。おそらくDMを送る際は専用画面に遷移して送ることが多いと思うのですが、実はこの形式でtweetすれば、DMになります。

「D username」と入力するとテキストエリア上部の「What’s happening?」が「Direct message username:」に変わります。

RT username

これが今回のXSS騒動で使われていたコマンド。

usernameの最新tweetを公式RTします。例えば以下のようにすれば、@shin1x1の最新tweetを公式RTします。

SET LOCATION placename

locationをplacenameに変更します。

以下の例なら、locationが「kobe」になります。

WHOIS username

usernameのプロフィールを表示します。

以下の内容をtweetすると

shin1x1のプロフィールが表示されます。

GET username

usernameの最新tweetを表示します。

以下の内容をtweetすると

最新tweetが表示されます。

FAV username

usernameの最新tweetにFavを付けます。

私は見ていないですが、これを利用したコードも今回出回っていたかもしれません。

STATS

自分自身のフォロー数とフォロワー数を表示します。

Twitter Help Centerの記載ではbioも表示されるようですが、現状は表示されていません。

あまり使う場面は無いかも。。。

ざっと試してみたものの、正直、ReplyとDM以外は普段はあまり使わないかもしれません。。。

まあ豆知識的に知っておくと良いですね。もしかしたら何かの応用に使えるかも;-p

=> Twitter Help Center

Twitter RTされたtweetだけを見る「RT Reader」

この記事の所要時間: 32

Twitter タイムラインでRTされたtweetだけを見る「RT Reader」を作りました。

フォローするユーザが増えてくると全てのtweetに目を通すのが困難になってきます。まだ100,200ユーザくらいなら読めても、500,1000となるとかなり大変です。

私も2,000ユーザくらいフォローしているので、タイムラインを全て読むのはもう諦めています。。。最近は、Twitterクライアントを起動したタイミングで流れたものを眺めるくらいで、基本はリストにまとめた人を見ています。

これはこれで良いのですが、見る人が固定化されるとTwitterの良さである偶発的な面白さが薄くなり、残念な気がしていました。

そこで今回作ったのが「RT Reader」です。

RTされたtweetだけをタイムラインとして見る

RT ReaderではフォローしたユーザがRT(公式RT)したtweetだけが表示されます。

RTされたtweetというのは、フォローしている誰かが何かしら興味を引かれたtweetです。つまりRTをフィルタにして、自分にとって興味のある面白いtweetを読めるというのが特徴です。

このサービスでは、iPhone版とPC版があります。どちらもブラウザからアクセスすれば利用できます。

iPhone版

まずiPhone版。個人的にはこちらで読むのがおすすめです。

操作はシンプルです。まずRT Readerにアクセスして、OAuth認証でログインします。

ログインした画面です。初期状態でRTされたtweetが20件読み込まれます。画面上部の「▲」で次のtweetへ、「▼」で前のtweetへ移動します。tweetは30秒毎に自動で読む込むので、放っておけば新着tweetがたまっていく仕組みです。(新着tweetが読み込まれると画面上部の件数が増えていきます)

気になるtweetがあれば、ここからFavやRTすることもできます。

RT Reader

iPhoneを左手で持った時に親指で「▲」や「更新」を押しやすいように、このようなボタン配置にしています。

PC版

PC版はtweetを一覧でざーと並べているイメージです。

操作はiPhone版と同じで、OAuth認証でログインするだけでokです。

こちらも30秒毎に自動更新を行っています。新着tweetが読み込まれると上からtweetが挿入されていきます。

使いやすいRetweets By Others

実は、twitter.comには同じくRTされたtweetだけを読める「Retweets By Others」という機能があります。

そもそもRetweets By Othersを見てて、面白いtweetが多いなーと思ったのが出発点です。

現状のRetweets By Othersは自動更新が無いので、新着をどんどん読んでいくというのには不便です。そこで自動更新機能とiPhone用の最適化を行ったのがRT Readerです。(開発がほぼ完了した段階で新twitterが発表されたので、実はこのサービスが不要になる可能性も大いにあります><)

ここ数日iPhone版でRTされたtweetを読んでいるのですが、思わぬ発見があって面白いです。まだフォロー数が少ない頃、見知らぬ人からのtweetを読んで楽しんでいた感覚を思い出しています:D

タイムラインに流れる大量のtweetに疲れたあなたにオススメです!

=> TwitterでRTされたtweetを見る | RT Reader

携帯/iPhoneのGPSを試すサイトを作った

この記事の所要時間: 237

携帯/iPhoneのGPSを試してみるサイトを作ってみました。

いまや、ほとんどのモバイル機にGPSが搭載されており、foursquareコロプラロケタッチなど位置情報を使ったサービスも多くリリースされています。

そんな便利なGPSなんですが、実際のところ、どの程度の精度で位置情報が測定できるのか、そして、その位置情報を使ってどんなことができるのかをあらためて模索するために、簡単にGPSを試すページを作ってみました。

携帯電話GPSで位置情報を見る

内容は単純で、GPSで測定した位置情報を元に Google Map と住所を表示します。参考に緯度経度、誤差も表示しています。

=> 携帯/iPhone GPSテスト

ページにアクセスするとリンクがあるので、クリックします。この時にGPSを送信するか否かを確認されるので、送信に同意します。

GPSを使って測定した位置情報を表示します。

iPhoneも対応

iPhone Safariでも動作します。

iPhone Safari の GPS テスト。

計測できない場合は、「設定」「一般」「位置情報サービス」で位置情報の送信がオンになっているかを確認してみて下さい。

設定でGPSを有効にする。

Geolocation API を使っているので対応ブラウザなら Android でも PC でもおそらく動作します。

手元の環境では Mac OS X(10.6.4)の Firefox3.6.8、Safari5.0.1、Chrome6.0.472.55で動作しました。

ただ今のところ Gears Geolocation API には対応していないので、Xpreia などの Android1.6 環境では動作しません。

実際のところ

やってみると、なんとなく知っていたことをあらためて確認できて面白いですね。

例えば、屋内より屋外の方が精度が良い(誤差が少ない)ですし、やはりAu機は精度が高いようです。

また、iPhone ではWifiをONにした方が(Wifiには接続していなくても)GPSの精度が上がるという話があるのですが、それもやってみると確かにそのとおりでした。(大阪市内ですが:D)
=> clmemo@aka: iPhone の GPS のスピードと精度を上げる方法

機種や場所によってどんな結果が出るか、一度、手元の端末で確かめてみて下さい。:D

=> 携帯/iPhone GPSテスト

参考リンク

緯度、経度から住所を取得で使っています。

携帯GPSで取得した位置情報を簡単にパースしてくれる便利なPHPライブラリ。

iPhone/iPad ホーム画面をiScreenShotにバックアップしておく3つのメリット

この記事の所要時間: 315

iPhone/iPad のホーム画面は、iScreenShotに残しておきましょう。

iPhone/iPad のホーム画面いじってますか?

壁紙変えて、アイコン位置を変えて、フォルダにまとめて、いやいやまたフォルダから出して、とホーム画面をいじるのは楽しいですね。自分にとっての理想のホーム画面を日夜探し求めているあなたへ提案したいのがこのエントリです。

ホーム画面をいじるなら、その前にスクリーンショットを撮って、iScreenShotに投稿しておきましょう!

投稿しておくと3つの良いことがあります。

良いこと1. ホーム画面のバックアップが取れる

当たり前の事なんですが、まずはこれ。

あれこれ変えてると何がしたいか分からなくなり、アレ、前ってどうだっけ?となりがちです。また整理のつもりでアプリをガシガシ消したは良いのですが、ふとした拍子に削除したアプリを使いたくなって、あー名前思い出せない。。。ということも。

さらにあまり考えたくないですが、もしiPhoneを落として壊してしまった時。。。

あらかじめiScreenShotに投稿しておけば、いつでも以前のホーム画面を見ることができます。

サーバのファイルを上書きするときは、ついつい *.orgや *.bak などバックアップファイルを作る貴兄ならメリットがご理解いただけるかと:D

良いこと2. ホーム画面を時系列で振り返ることができる

ホーム画面を残すだけならスクリーンショットを撮るだけで良い気もするのですが、iScreenShotに投稿しておくと良いことがこれ。

今回、投稿したスクリーンショットを投稿日毎に見る機能を追加しました。

これを見ると、後でその時のホーム画面を振り返ることができます。投稿頻度でどれだけホーム画面をいじっていたかも分かりますね。

投稿日毎にスクリーンショットを見る

投稿日毎スクリーンショット一覧は、ユーザホーム画面から辿れます。右サイドバーのStatusにある「Date」リンクをクリックします。

投稿日毎のスクリーンショット一覧がこちら。投稿日が縦に並んで、横に投稿したスクリーンショットのサムネイルがあります。これで投稿履歴が一目で分かります。

画面右には投稿年月毎にリンクがあります。月あたりの投稿数も表示されます。


参考までに私の投稿一覧は↓です。8月は結構投稿しました:D
=> 2010年08月 | shin1x1 | iScreenShot

良いこと3. 自分が投稿した画面を見た誰かが楽しい

iScreenShotに投稿したホーム画面はみんなが見ることができるので、みんなで楽しむことができます。

インストールアプリが参考になったり、あーそういう配置をしているのかと感心したり、個性的な壁紙が気になったり。

投稿したコメントは Twitter にも流れるので、フォロワーさんにも見てもらうことができます。

自分のためにやったことが、回り回って誰かをちょっぴり楽しませるというのは嬉しいことです:D

どんどん投稿しちゃいましょー

すでに何名かのユーザさんは「ホーム画面を残す」という目的で投稿されています。

iScreenShotでは今ホーム画面コンテストを開催しているので、かなり凝ったホーム画面が投稿されています。こういった画面を見ると「うーん、自分のホーム画面は普通だしなー」と投稿を躊躇している方がいるかもしれません。

でも、実は自分が「普通」と思って使っているホーム画面が、他人にとっては新たな発見や驚きがあったりするものなのです。

とりあえず自分のホーム画面を残しとく、という感覚でどんどん投稿しちゃって下さい。

=> iPhone/iPadのスクリーショットを共有 | iScreenShot

Home > アーカイブ > 2010-09

検索
フィード
メタ情報

Return to page top