はい!OpenPNE3をXdebugでステップ実行とかする方法!の巻!


はい!ギュンばんわ!

みなさんデバッガ使ってますか?
OpenPNE3ってOpenPNE2よりソースが複雑になってて、デバッガとか使ってソースの挙動追いたくないすか?

ということでOpenPNE3をXdebugでステップ実行する方法を書きますよと。

Xdebugのインストール
pecl install xdebug-beta

PHPの設定
/etc/php.d/xdebug.ini
を、

zend_extension=/usr/lib64/php/modules/xdebug.so

[debug]
xdebug.remote_autostart=off
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000

; General
xdebug.auto_trace=off
xdebug.collect_includes=on
xdebug.collect_params=off
xdebug.collect_return=off
xdebug.default_enable=on
xdebug.extended_info=1
xdebug.manual_url=http://www.php.net
xdebug.show_local_vars=0
xdebug.show_mem_delta=0
xdebug.max_nesting_level=100
;xdebug.idekey=

; Trace options
xdebug.trace_format=0
xdebug.trace_output_dir=/tmp
xdebug.trace_options=0
xdebug.trace_output_name=crc32

; Profiling
xdebug.profiler_append=0
xdebug.profiler_enable=0
xdebug.profiler_enable_trigger=0
xdebug.profiler_output_dir=/tmp
xdebug.profiler_output_name=crc32

vimのpluginの設定
wget http://www.vim.org/scripts/download_script.php?src_id=7285

unzip debugger.zip
cp plugin/* ~/.vim/plugin/

firefoxのAdd-onの用意
https://addons.mozilla.org/ja/firefox/addon/easy-xdebug/
をインストール

■使い方
1) 最初からステップ実行
vimを開いてF5で待機
firefoxの右下の「Start xdebug session」を押して、OpenPNE3にアクセス
vim上でデバッガが開くので、F2とかF3とかF11とかctrl+wとかでいろいろ見てく

2) ブレークポイントいれてみる
例えば、 vim lib/user/opSecurityUser.class.php とか開いて、「:Bp」ってどこかの行で打ってブレークポイントを入れる
その状態でF5
firefoxの右下の「Start xdebug session」を押して、OpenPNE3にアクセス
vim上でF5でrunすると、ブレークポイントの位置まで飛ぶ

■よく使う操作
F1: resize
F2: step into(関数の中にどんどん入ってく)
F3: step over(関数の中には入らない)
F4: step out(関数の外に出る)
F5: run
F6: quit debugging
F11: get all context
F12: get property at cursor

Ctrl-w [+-](Windowの幅を広げる。WATCH_WINDOWでCtrl-w 40+とかやると良い感じ)

■どすか?
どすか?

はい!OpenPNE OpenSocial Platform ユーザーズガイドを更新したよ!の巻!

はい!ギュンばんわ!
みなさんOpenSocialプラットフォーム作ってますか!?
OpenSocialアプリとか作りながら、勢い余ってOpenSocialプラットフォームとかも作るといいと思うよ!

で、OpenPNE3はOpenSocialプラットフォームになる機能が付いているわけだけど、
ドキュメントが充実してなかったので、若干充実させてみたよ!
(実運用するには若干パフォーマンス設計とかチューニングとか気を使わないと厳しいかもしれないけど)

↓な!

■opOpenSocialPlugin v1.2(Stable)版のドキュメント
http://www.openpne.jp/developer/opensocial/ja/

■opOpenSocialPlugin v1.4(Development)版のドキュメント
http://www.openpne.jp/developer/opensocial/1.4/ja/

フィーチャーフォン版のドキュメントが若干充実してないんだけど、その辺はソースとかみてな!

あと、OpenPNE3.6beta11でバンドルされてるopOpenSocialPluginは1.2.4な!
( http://trac.openpne.jp/browser/OpenPNE3/bandled-plugins-list/3.6beta11.yml 参照 )



うん、ドキュメントはSphinxで書いてる。
CentOS5とかでのビルドの仕方とかは↓な!

yum --enablerepo=epel install python-setuptools
yum --enablerepo=epel install python-docutils
easy_install sphinx

で、

git clone git://github.com/upsilon/opOpenSocialPlugin-doc.git -b version-1.2.x
cd opOpenSocialPlugin-doc.git
make

とかやると、

.build/html

にhtmlができる感じ。

どすか?

はい!OpenPNE3のスマートフォン対応のその後!の巻!

はい!ギュンばんわ!
みなさんスマホ使ってますか!?

この前のブログでOpenPNE3のスマートフォン対応を進めてるって書いたけど、
「実際どんな感じの見栄えとか動きなの?」って感じですよね?

ということでスマホ対応を触ってみることのできるデモサイト示してみるんで、みんなも触ってみてな!
そんで何か思うことがあったらフィードバックとかくれよな!

■OpenPNE3のスマートフォン対応のデモサイト
http://touch.pne.jp/
メールアドレス: sns@example.com
パスワード: password

iPhoneとかAndroidとかからアクセスしてみてな!
UA偽装とかでもOKだよ!

Mozilla/5.0 (Linux; U; Android 2.1-update1; ja-jp; HTCX06HT Build/ERE27) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17

とかね。

■インストール方法
git clone git://github.com/tozuka/OpenPNE3.git -b tz-smartphone-20110603 sns.example.com
で普通に symfony openpne:install とか。

どすか?

はい!最近タイムラインっぽいUIが求められてませんか!

最近facebookとかchatterとかtwitterみてるとログイン直後にタイムラインがあって、そこでほとんどの操作が完結するってユーザインタフェースが多いですよね。
OpenPNE3もそんなユーザ体験ができたほうがいいじゃないかと思うわけですよ。
特にfacebookとか写真も動画もバンバンがあがるし、いいよね。
facebookとかだとコンピュータリソースの費用対効果の関係か「動画が1,024 MB、20分未満である。」とか制限あるけど、FLOSSなら自分の思うままの環境で、自由に制限値を設定できるだろうからその辺強いはずだよね。ストールマンにも多分「迂闊なコンピューティングで愚行である」とか言われないだろうし。

ということ↓のwatasyncってFLOSSを作ってPythonとFlaskで、いろいろ試しながらタイムラインのインターフェースを習作してますよと(まだ全然安定してないけど)。
https://github.com/rysk92/watasync

ゆくゆくはOpenSocialのアプリにして、いろんなSNSで使えるようにしたいと思っている。

はい!Doctrine遅くないスカ!

なんかDoctrine遅くないスカ?
サーバの初期構築・運用コストと費用対効果とか考えると若干きつい気が。
なのでこのあたりの問題を解決するべく、若干動き始めてますよと。
Doctrine使わないようにする?Propelつかう?それとも他のORM?それともORMつかわない?
まぁいろいろ計測しながらやっていきますよと。

どすか?

はい!OpenPNE3のテストとか自動生成したくないすか!

負荷試験jMeterのシナリオ作ったり、機能テストでSeleniumやlime+sfBrawserのシナリオ作ったりで、めんどくないスカ?
なので、中間フォーマットのシナリオ(いろいろ考えてinternethakaiのシナリオ形式にした)を作って、そこから、jMeterSeleniumやsfBrawserのシナリオを自動生成する感じのプログラムつくってまっす〜www

ソースとか使い方とか↓ね。(Rubyです)
https://github.com/yuuna/drymon-tng/blob/master/README

どすか?

はい!OpenPNE OpenSocial Platform ユーザーズガイド作ってるよ!

OpenPNE3からOpenSocialのプラットフォームになれる機能があるんだけど、みんなは知ってた?

でドキュメントが若干不足気味だったんで、最近ドキュメントを整えてるんだ。

整える前のドキュメントは↓ね。
OpenSocial with OpenPNEOpenSocial with OpenPNE v1.2 documentation
http://www.openpne.jp/developer/opensocial/ja/

で整えてるドキュメントは↓あたり(SphinxレンダリングしてWebに置いたらまた連絡するね。6月末ぐらいかな!)
Commit History for upsilon/OpenPNE3-doc - GitHub
https://github.com/upsilon/OpenPNE3-doc/commits/opensocial/

ドキュメント名は「OpenPNE OpenSocial Platform ユーザーズガイド」とかがいいかな。

あ、OpenPNE3のOpenSocialプラットフォーム機能は「opOpenSocialPlugin」ってので実現するんだけど、その開発MLは↓なんで、興味あったらみてみてな!

opOpenSocialPlugin Developers | Google Groups
http://groups.google.com/group/op-opensocialplugin-dev

どすか?