今日も適当ダイアリー

PHP や Javascript や Symfony、BEAR.Sunday などのWeb周りのことを中心に。それ以外のことも気まぐれに投稿します。

第89回PHP勉強会@東京でBEAR.Sundayのお話をしてきました #phpstudy

blogger からはてなブログに移行したんだけど、面倒だから適当に移行して以前の記事が 404 Not Found になってたりしてごめんなさいな @madapaja です。

もう4月も終わりますね。 やること、やりたい事が多くて時間が足りてません。

さて、先日 4月28日にリジョブ咲くらぼ第89回 PHP勉強会@東京が開催されました。

f:id:ja9:20150430123417p:plain

続きを読む

BEAR.Sunday meetup #0 でRayについて話してきました #BEARSunday

こんばんわ。BEARでBEERな @madapaja です。

7/19に行われた BEAR.Sunday meetup #0 に参加して BEAR のオブジェクトフレームワークである Ray について発表させていただきました。

最初に、会場を提供していただいたVoyage Groupさん、ありがとうございました。そして、スピーカーの皆さん、参加者の皆さん、スタッフの皆さん、本当にお疲れ様でした! また、@koriym さんには発表前から後までフォローいただき非常にお世話になりました。ありがとうございました。

ということで、まだ開発途上のPHPフレームワーク「BEAR.Sunday」の勉強会ということでしたが、野心的でパワフルな方々が参加され、非常に面白い勉強会でした。
アットホームな雰囲気で、濃い話が聞けたのはとても良かったです。

私自身、BEAR.Sundayについて直接聞くのは、昨年末の前々回のSymfony勉強会、先月のSymfony勉強会に続いて3度目でしたが、やっとのことで、BEARの考え方がある程度理解できました。やっとスタートラインに立てたかな、などと思っています。
といっても、じゃあ他の人に説明してみて、と言われたらまだ出来ないので、これからも継続的にウォッチしたいとは思います。

Ray.Di / Ray.Aop コトハジメ

「Ray.Di / Ray.Aop コトハジメ」というタイトルで発表した内容は、スライドを見ればなんとなく分かるかと思いますが、スライドには書ききれなかったことを補足したいと思います。

続きを読む

PHP5.4+フレームワーク BEAR.Sundayを理解するためにRay.Diを触ってみるの巻 其の参

こんにちは。呼ばれて飛び出てジャジャジャジャーン、@madapajaです。

PHP5.4+フレームワーク BEAR.Sundayを理解するためにRay.Diを触ってみるの巻シリーズ

続きです。 前回は、Ray.Di を使って依存性の注入を行ってみました。 今回は、Ray.Aop でインターセプターを使い、アスペクト指向プログラミングの体験を中心に進めてみたいと思います。

前回の補足

…と、その前に前回の補足を。

@PostConstruct アノテーション

前回、@PostConstruct アノテーションによって初期化メソッド(__construct() 後に実行するメソッド)の定義を行いました。
これはコンストラクタでやるのと、何が違うのでしょうか? 今回のサンプルの場合、コンストラクタ上で呼び出しても挙動は変わりません。
なぜコンストラクタで行わないのか、その理由を3つほど考えてみました。(@koriymさんからもアドバイスをもらいました)

1つめは、関心を分離させるためです。
コンストラクタでは文字通り構造を構成する(つまり、プロパティへの代入)のみに徹し、@PostConstruct 内でその構成されたオブジェクトに対しての初期化処理を記述することで関心を分離させられます。

2つめは、@PostConstruct では全ての依存が注入されているのが保証されています。
前回のサンプルではコンストラクタへのインジェクションを行いましたが、Ray.Di ではSetterを使ったインジェクションも可能です。コンストラクタでも、Setterでも注入するという点では同じですし、挙動も基本的に変わりませんが、Setterインジェクションを行うことで、traitを利用しやすくなります。(実際に、BEAR.Sundayではtraitを利用して、テンプレートエンジンを注入したり、様々な箇所で使用されています。)
Ray.Diの内部の挙動は、コンストラクタへの注入後に、Setterへの注入が行われ、最後に @PostConstract が呼ばれます。
たとえば、複数のSetterインジェクションがあるような場合、それらの複合的な設定を行うには、全ての注入が保証されている @PostConstruct 内でしか初期化できない処理も考えられるでしょう。

3つめは、これは副次的な特徴ですが @PostConstruct では、同時にインターセプタを利用することが可能です。(逆に言えば、コンストラクタ内から別メソッド呼び出してもインターセプトされません。)
Ray.Di で、Injector::getInstance() を行うと、そのクラスの依存が解決した後に、依存を注入しオブジェクトを構成させ、その後にウィーバー(インターセプトを織り込む)され、最後に @PostConstruct が呼び出されます。
そのため、このアノテーション内では同時にインターセプトを利用することもできる、というわけです。

モジュールの作り方について

とあるように、モジュールは関心ごとに分離すべきです。(今回はサンプルなので…)

Ray.Diには、あるモジュールの中から他のモジュールをインストール(追加設定のような感じ)する機能があります。
機能・関心ごとにモジュールを分離させることで、たとえば、実行(本番、テスト、開発)モードが要求する機能や関心を、必要に応じて構成させることができるようになります。

これは、下のつぶやきにもあるように、BEAR.Sundayの大きな特徴の一つです。

すべてのメソッドにインターセプタをバインドしてみる

では、ようやく本編です。

続きを読む

PHP5.4+フレームワーク BEAR.Sundayを理解するためにRay.Diを触ってみるの巻 其の弐

こんにちは。夏はやっぱり生ビール、@madapajaです。
PHP5.4+フレームワーク BEAR.Sundayを理解するためにRay.Diを触ってみるの巻 其の壱 : 今日も適当ダイアリー の続きです。

PHP5.4+フレームワーク BEAR.Sundayを理解するためにRay.Diを触ってみるの巻シリーズ

前回は、Ray を Composer 経由でインストールして User クラスを作りました。

Ray を使わずに書いてみる

続きを読む

PHP5.4+フレームワーク BEAR.Sundayを理解するためにRay.Diを触ってみるの巻 其の壱

こんばんは。そろそろ健康診断なのでダイエットしようかと思ってる@madapajaです。

特にSymfony界隈などで話題になっている、PHP5.4+向けに開発が行われているリソース指向フレームワークBEAR.Sundayは皆さんチェックされてますか?

このフレームワークはPHP5.2+向けのリソース指向フレームワークBEAR.Saturdayの新バージョンにあたるもので、設計の全てを見直して@koriym氏によって開発が進められています。

リソース指向や、開発思想などについてはとってもここでは書き切れないので BEAR Blogなどをチェックしていただければと。

さて、そんなBEAR.Sundayですが、まだ開発中のフレームワークですので実際に使う上で足りない機能もたくさんありますし、アプリケーションコントローラなども機能追加や仕様変更がこれからたくさん行われることになるようです。

だけど、Bear.Sunday Meetup #0 が開催されるようだという情報も出回ってるいるので、さわりだけでも触ってみたい!

ということで、今後も仕様の変更はほとんど考えられない Ray.Di と Ray.Aopを使ってみよう、という企画です。

続きを読む

選択範囲のテキストを操作する jQuery.selection を更新して github に移行しました

昔作った、選択範囲のテキストを操作するための jQuery プラグイン jQuery.selection が長らく放置されていたのですが、使っていただいている方もいるようなので、メンテナンスして github にあげました。

メンテナンスの過程で、メソッド名を大幅に変更してしまいましたが。。。

jQuery.selection とは

選択範囲のテキストを操作するための jQuery プラグインです。
テキスト選択(キャレット)位置や、選択テキストを取得したり、選択されているテキストの置き換えや挿入などを行えます。

詳細は 紹介ページ内のデモ をご覧ください。

変更点

  • IE でテキストボックスの選択範囲(キャレット情報)を取れない問題を修正
  • メソッド名などを大幅に変更
  • QUnit のテストを追加

リンク

ということで、バグなどあれば issue を挙げていただくか、コードを直して pull request ください!
よろしくお願いします。

PHP5.4 で Symfony2 は速くなるのか?

Symfony Advent Calendar JP 2011 7日目です。
6日は @uechoco さんによる [Symfony2]入出力の文字エンコードを変換してみよう Symfony Advent Calender JP 2011 – 6日目- でした。

さて、@uechoco さんから「MongoDB JPにも所属している@madapajaさん」と紹介いただき、これは MongoDB ネタをやれってことかな?とか考えてしまいましたが、今回は PHP5.4 がらみのことを。

PHP5.4 は速くなっているらしいと風の噂で聞いたものの、Symfony2 は速くなるのかなと思ったので試してみました。
環境によって結果が異なると思いますが、今回は Symfony2 本体のテスト速度を計測してみます。
今回テストに用いた環境は下記の通りです。

続きを読む

PHP5.4+ で開発が行われている BEAR.Sunday フレームワークを動かしてみる

PHP5.4 Advent Calendar 2011 6日目です。
5日は @chobi_e さんによる 5.4のSession周りの変更について でした。

さて、勢いにまかせて Advent Calender に名乗り出たもののネタをどうしようか、と思っていたら、先日開催された Symfony 勉強会兼忘年会@koriym 師匠に出会いいたく感銘を受けました。
そこで、@koriym さんが開発をされている BEAR.Sunday を動かしてみたいと思います。

続きを読む

2.0 からはじめる MongoDB - 第1回 #mongodbjp

勉強会用の名刺が届いてウハウハ(?)な @madapaja です。

関連記事もどうぞ

この連載では MongoDB をこれからはじめる方に向けて、MongoDB 2.0 で追加された機能を含んだ、MongoDB 全体を広くご紹介していきたいと思っています。

今回のアジェンダ

  • なぜ MongoDB か
  • MongoDB のインストール
  • MongoDB シェルと戯れる
続きを読む