PHP勉強会 at 大阪に参加しました
昨日PHP勉強会 at 大阪に参加してきました。
アップルストアの2Fを無料で開放してるなんて凄いぞアップル!
買いたくなっちゃうじゃないですか(ってそれが狙いなんでしょうけどね)
場所も心斎橋と中心街だったこともあってか50人以上集まったそうです。
懇親会も30人以上!凄い人数になりました。
主催の方、講演の方本当にありがとうございました。
また是非開催されることを祈りつつ内容のメモ。
id:ku-sukeさん
初心者向けPHPのお話し
・PHP研究所じゃないよ。
・色んなとこで使ってるよ。
・開発には色んな方法があるよ。
・サンプルもいっぱいあるから触ってみるといいよ。
・古い情報には気を付けて><
※個人的感想
・開発はやっぱエディタからかなー。でもオラはPDT重いけど楽。重いけど。
・開発用ロリポみたいなのがあると敷居が下がったりしてと妄想
・サンプルはPHPマニュアルのページにあるのが良いと思うんだ。
id:khashiさん
Smartyのお話し
・Perl使ってます。
・Kansai Perl Mongerをよろしく。
・表示と中身は分けるとすっきりするよ!
・Smartyは日本語情報いっぱい。
※個人的感想
・Smarty良いですよねー
・日本語マニュアルあるし、プラグインもいっぱい。
・でもいざエラーが起こると大変><
・エラー箇所がわかりやすいテンプレートってあるのかな?
・となると生PHP?
・だが断る
・Perl Mongerのフレームワーク勉強会行きたかった><。Extの話もあったのに><
ここからLT
id:rskyさん
TextMateのお話し
・ユーロ高い
・すんげー機能豊富
・Ruby書けば機能アップ!
・フォントがマニアックなせいで日本語が><
・でも神は居る
・やっぱデモは自分のマシンでやるべき
・実はヘビートーク
・Perl,Python,Rubyの話が多いよー。PHPも話しよー。
※個人的感想
・生拡張神様だ!
・いーなーマック×100
・引数まで出してくれるのいーなー。
・静的メソッドは出してくれるんだろうか?
・TextMateのエラーメッセージが見れた。
id:takagimasahiroさん
PHPの由来について
・色々変わるPHP
・まぁ何でもいーんじゃね。
・Python Hypertext Processorでも・・・
※個人的感想
・生PHPマニュアル様だ!
・名は体を表す
くまっちさん
PEARのお話し
・約400
・コマンドラインでインスト簡単
・使うと便利
・使用上の目的を良く考えてご利用下さい
・ゲーム・料理好き
※個人的感想
・料理好きって凄いなー
・レン鯖だとちょっとインストとか大変だと思うんだ
・日本語無視られてる時もあるんだ
・でもなれると便利
・良いソースもあるので勉強になる
・オラはrhacolibs
id:senopoさん
Pleiades All in One Eclipseについて
・日本語ですよ
・PHP開発にとっても便利ですよ。
・ブレークポイントとか変数チェックとかも出来ますよ
・SQLもテストできますよ
・インストするだけでほぼOK
※個人的感想
・使ってます。すげーお世話になってます。
・だが重い(Eclipseの宿命)
・ブレークポイントほにゃららは使ってないす(Xdebugで十分なきが・・・)
・ついでにrhacoにはlogがある〜
・ホバーの内容が日本語になると凄まじいと思うんだ。
懇親会はなんと講演されてたid:rskyさん、id:takagimasahiroさん、それとPiece Frameworkのitemanさんと同席し、すんげー濃いー話の時間を過ごさせてもらいました。ハテナがいっぱい出たので勉強しよーっと。まずはSimpleDBとRESTだー。テストもチェックチェック。
ExtのComboboxでonTriggerイベントをカスタマイズ
Ext.form.ComboBoxはドキュメントには載っていないですが、コンフィグにonTriggerを用意することで、onTriggerイベントをオーバーライドすることが出来ます。
ExtのComboboxデモのソースをそのまま使用するとonTriggerごとにphpへアクセスする動作が出来なかったのでオーバーライドで修正しました。
conveyorのtrunkでlineリストをロードするのに使用しました。
実際に使用しているソースとは違いますが、以下のようにできます。
privateなプロパティを修正したり、privateなメソッドを使ってるのであまり良くないとは思うんですけどねー。
var store = new Ext.data.Store({ Ext.data.HttpProxy({method:'GET',url:'アドレス'}), reader: new Ext.data.JsonReader({ root: 'root' }, Ext.data.Record.create([{name: 'hoge'},{name:'fuga'}])) }); }); var combo = new Ext.form.ComboBox({ mode:'remote', store: store, valueField: 'hoge', displayField:'fuga', loadingText:'Loading...', onTriggerClick:function(){ this.store.reload(); this.bindStore(this.store,true); if(this.disabled){ return; } if(this.isExpanded()){ this.collapse(); this.el.focus(); }else { this.onFocus({}); if(this.triggerAction == 'all') { this.doQuery(this.allQuery, true); } else { this.doQuery(this.getRawValue()); } this.el.focus(); } }, scope:this });
オーバーライドする時は元のソースを入れておかないと当然動きがおかしくなります。
念のため。
Ext-JSについて
conveyorではUIにExt-JSを採用しています。その理由は
・画像作る能力無くてもそれっぽいのができあがる
・色使う能力が低くてもそれっぽいのができあがる
・UIの機能がまとめてあって綺麗
・テーマが色々ある
でした。使ってみて確かに画像とか作る能力無くてもできちゃいます。特にtrunk版を使ってみていただくとsetupでテーマを選べるので分かると思います。
ただ、実際にコードを書いてみると
・嵌まりどころがひっじょ〜に多い。
・ドキュメントも非常〜〜〜に少ない(日本語が)
・フォーラムの検索能力がびみょ〜
・デモの書き方も結構適当(統一されてない)
・例文の無い機能が多い
・UI以外の機能が少なめ(Jqueryと比較してます。比較対象でないとは思いますが)
という訳で嵌まったとこ、気づいたとこなど少しずつまとめていこうと思います。
まずは日本語APIの紹介から
http://code.xenophy.com/js/ext/docs/
-- 素晴らしい試みなので協力出来ればと思います。
まさか
コメント書いても送られる設定になってるのか?そりゃヤバス
rhacoアプリのアップデート時の注意点
本日Blogkitをアップデートしてドラフト機能を使えるようにしたのですが、その時ハマリどころがあったのでメモしておきます。
project.xmlのデータタイプはデータベースでのデータタイプとは違います。
例えばBlogkitのアップデートで追加されたカラムでdraftがあるのですが、これはproject.xmlでは「boolean」で定義されています。
しかし、PostgreSQLでそのままdraftカラムをbooleanとして定義するとうまく動きません。一度テーブルを破棄して、再度作成してみるとdraftカラムはsmallintになっていました。
という訳で、アップデートする時は一度別テーブルでテーブルを作りなおしてみて、作成したテーブルの情報を見ながらカラムを追加すると良いと思います。
-
- 追記--
こっちの方が重要だったりして、
当然アップデートするとバグがあったり仕様が変更されてたりするので、おかしいなーと思ったらhttp://www.lingr.com/room/rhacoで聞くか、Twitterでrhacoさんに叫ぶかブログで症状を書いてみるかしたら良いですよ(動かないだけではつらいと思うのでエラーメッセージとかdeep_debugしてみたログとか書くと良いと思いますよ)。
びっくりした
データのインポートしたら全部送信されてびっくりした><
逆引きrhaco(?)7: WEBページを取得する(body)
WEBページを取得する場合はHttpクラスを使用します。今回はリクエストした結果のbodyを取得します。一番単純な方法はGETの場合
Rhaco::import('network.http.Http'); $body = Http::get('http://url/To/get');
です。デフォルトの設定は
・リクエストヘッダーに渡す引数はWEBサーバのデフォルト、タイムアウト5秒
です。
$body = Http::body('http://url/To/get');
とも書くことが出来ます。Http::bodyはpost, getにも使えるので、汎用的に使用できます。
POSTメソッドの場合は
$body = Http::post('http://url/To/post',array('hoge=>'huga'));
で取得可能です。Http::bodyを用いるとヘッダーを指定することになります。
$headers['var'] = array('hoge'=>'fuga'); $body = Http::body('http://url/To/post',"POST",$headers);
getは第2引数、body, postは第3引数でヘッダーを配列で指定することが出来ます。