Home > PHP

PHP Archive

PHP関西勉強会(仮)をやります。

この記事の所要時間: 119

2008/11/05 UPDATE:
申込みを開始しましたー。ざっくりの人数だけでも確認したいので「行こうかな」という方は是非申込みを。
参加申込みページへ

突然なのですが今週末の11/7(金)に大阪市内でPHPの勉強会を開催します。

日時
11/7(金) 18:30~21:30
場所
メビック扇町(http://www.mebic.com/outline/)
会場
会議室2
募集人数
24名(スタッフを含む)
参加費用
一人200円くらい2(会場代3600円を参加者で頭割り)
内容
これから考える・・・
懇親会
たぶんやるんでしょう

2008-11-04 – kunitの日記

日時・場所は決まってますが、何やるかはまだはっきりしてません。:-D

ただid:kunitさんid:m-takagiさんが来られるので、楽しい会になると思います。

近頃少しおとなしい関西のPHP界隈を盛り上げようというのが趣旨なので、PHPに興味がある方ならどなたでもご参加下さい!

私はおそらく近い内に開催されるであろうCakePHP関西勉強会(Cake単独でやるかどうかはまだ未定ですが。。。)の話をちょろっとしようかなと思っています。

参加申込みはevents.php.gr.jpにて行います。現在準備中ですので、とりあえずは予定を空けてお待ちください:-D

参加開始にはここでまた告知しますー。

CakePHPカンファレンス東京で司会してきました

この記事の所要時間: 527

cake
Photo by Kiryu Tsukimiya

CakePHPカンファレンス東京が無事に終了しました。
参加された皆さん本当にお疲れ様でした。

今回は司会役ということでなかなか貴重な経験ができました。

カンファレンス自体の詳細なレポートは皆さんが書かれていますので、司会者の立場から見た感想を書きます。

まず率直な感想ですが、本当に楽しかったです!

素晴らしい発表を檀上袖から見ることができたのも貴重でしたし、参加された皆さんの反応を見ることができたのも良かったです。

発表の合間の司会でポロっと言ったコメントに反応してもらったり、開発に使うテキストエディタ(環境)アンケートを取ってみたりと「対話」ができたのが楽しかったです。

150名くらいの前で司会をするのはもちろん初めてのことだったのですが、反省点はありつつも、とても楽しめました。また何人かの方に懇親会等々で「楽しかったよ」と言って頂けたのは何よりの収穫でした。

1点やってみて分かった事が、テンションの上げ下げというか気持ちのコントロール(というと大げさですが)が意外と難しいかったです。

人前で話すのは基本緊張するのですが、話が乗ってきたり、場の雰囲気に馴染めてくると、まだ話したい気分になってきます。しかしそこは司会ですので進行する必要があるわけです(当たり前ですが)。

次に発表が始まると聞く立場になって色々と思考を巡らしながら発表を聞きます。で、話すテンションが冷め切ったくらいに発表が終わって、また司会として話すわけです。

この気持ちの持って行きようを上手くやりくりするのが意外と大変なんだな、とやってみて初めて感じました。これまでやってこられた方々には頭が下がる思いです。

あとは反省点を。

ようは事前準備不足ということなのですが、ペラ1 で良いので台本を用意しとけば良かったです。

スタッフ用スケジュール表はすずきさんが用意してくれていたのですが、司会用を自分で用意しておくべきでした。

ゆるい感じで進めていたので、ひどいとちりや間違いは無かったと(自分では)思っているのですが、言い忘れや説明不足が結構ありました。都度気がついたスタッフからサインを送ってもらってフォローして貰いました。(ホント助かりました:-D)

特に質疑応答については開始前に説明しておけば良かったかな、と思います。

日頃からこういった会に参加している人は発表後に質疑応答の時間があるというのは認識しているとは思うのですが、初参加の人にとっては流れが分かりづらいところだったかな、と反省しています。質疑応答がある事が分かっていれば、発表を聞きながら質問を考えることできたかなと思うと、もう少し丁寧にフォローしとくべきでしたね。

あと些細な事ですが自己紹介をしておけば良かったです。おそらく大多数の人は「おまえ誰?」状態だったかと思います。。。

次の機会があるかどうかは分かりませんが、今後に生かしていきたいと思います。

さて今回は司会ということでずっと進行に気がいって、いささか内容に集中できていない箇所もあったのですが、以下、発表についてのメモです。

国内でのCakePHPの利用状況について

  • Garrett氏を日本に招くという大仕事をやってのけた安藤さん
  • CakePHPの特徴と国内のCakePHP史が簡潔にまとまってました
  • 安藤さんのプレゼン資料はそのまま現場でも使えてしまいますね。これはホントに有り難い!:-D

Agileな開発現場での実践例

  • テストと言えばこの方、岸田さん
  • いつもながら自分にとってはど真ん中ストライクなテストの話
  • 現場から出てきたお話なのでかなり参考になります
  • テストにかかる工数は開発コードの約半分
  • でも結合テストや運用・改修を考えると十分にコストは回収できる
  • あとFWのバージョンアップをする時の影響をテストで判断できる
    => これは大事!

Garrett J Woodworth氏 招待講演

  • CakePHPプロジェクトマネージャのGarrett氏と通訳の堂園さん
  • 具体的なTipsというよりCakePHP、コミュニティの考え方を伝える
  • 舞台袖から見て、国内のCakePHPのイベントでGarrettが話していることに密かに感動
  • 1.2はRC4を経てstableリリースへ
  • 1.3はPHP4も対応
  • 2.0はPHP5 Only
  • の予定らしい:-D
  • TODO: ircにjoinする
  • 堂園さんの通訳はさすがでした!

XoopsCubeなのにCakePHPを使う!

  • いつもクールビューティなhaltさん
  • XOOPS CubeのモジュールをCakePHPで作る
  • ベースモジュールが公開されている
  • CakePHPでアドオンが作れるメソッドは他にも広がるかも(海外でも何かあったような。。。)
  • こういうパターンでFWが使われるのはCakePHPならではのような
  • XOOPS Cube自体の実装が(いろんな意味で)気になるけど。。。

ライトニングトーク

  • どのLTもレベルが高くて、とても興味深い!
  • 正直5分じゃなくて、もっと聞きたかった:-D
  • 今後の勉強会で是非発表をお願いします!

神業の会場撤去(皆さんご協力ありがとうございました!)そのまま懇親会へ。

懇親会

  • 会場が広い!その辺の結婚式の2次会よりも確実に広い!
  • いちおう司会役だったのですが、Garrettとすずきさんにおんぶにだっこでした。。
  • サプライズCakeにはアイドルの撮影会並にカメラが集まってきてました:-D
  • 献本頂いたCakePHPガイドブックにGarrettのサインをして貰った人が!(羨ましい)
  • 話の内容は例によって書けない事多数。
  • 名刺交換させて頂いた方々からは「楽しかったよ」と言って頂けて本当に良かったです!

今回は前日の会食を含めて色々な事を経験させて貰いました。Garrettの発表でも触れられていましたが、本当にコミュニティって素晴らしいなと感じました。今後もどんどん参加していきたいと思います。

最後になりますが、本カンファレンスに対して様々なご支援を頂いた企業の皆様、はるばる日本までお越し頂いたGarrett氏、そしてカンファレンスにオンライン・オフライン問わず参加して頂いた皆さん、本当にありがとうございました。

スタッフの皆さん本当にお疲れ様でした!!

CakePHPカンファレンス東京

CakePHP debug=0とdebug=2ではパフォーマンスがかなり違う

この記事の所要時間: 048

CakePHPでは動作レベルをConfigure::write(‘debug’, N)で設定できるのですが、この値によってかなりパフォーマンスが変わります(特にフレームワークの起動)。

パフォーマンスを調べる時は実際に運用する環境に合わせた設定をして計測しましょう、という話です。

計測対象

CakePHP1.2のリポジトリ[rev:7706]で、DB接続無しで単にビューを出力するだけのコントローラで計測しました。

実行時間とステップ数は、xdebug.auto_trace=Onで調べています。

[app/config/core.php]

Configure::write('debug', 0);
or
Configure::write('debug', 2);

[app/controllers/top_controller.php]

<?php
class TopController extends AppController {
  public $uses = array();

  public function index() {
  }
}
&#91;/php&#93;
<p>[app/views/to/index.ctp]</p>

TopController

計測結果

※debug=0はキャッシュを効かせるため、1回目のリクエストは無視

debug 実行時間(s) ステップ数
2 3.0879 25301
0 0.6376 2803

debug=0はdebug=2に比べて圧倒的に早くなっています(5倍!)。また目安ではありますが、ステップ数が1/10になっています。

これはdebug=0では内部的にキャッシュを利用していることが大きく作用しています。

このキャッシュはdebug=2でも動作しているのですが、キャッシュ期間が短い(10s)ので、あまり恩恵を受けることができません。もちろんdebug=2(debug>0)は開発用なので、キャッシュが効かなくなっているのは正しい動作と言えます。

パフォーマンス計測はdebug=0で

通常、運用に入る場合はdebug=0に設定するので、本稼働システムのパフォーマンスを計測したい場合はdebug=0で計測するべきでしょう。

CakePHPカンファレンス東京が開催されます。

この記事の所要時間: 112

10/25(土)に都内でCakePHPカンファレンス東京が開催されます。

■日時
2008年10月25日(土) 10:30 ~ 15:30
※終了後、希望者のみ懇親会(16:00~18:00)を別会場にて実施いたします

■会場
東京都千代田区神田駿河台2-3 DH2001Bldg.(最寄り駅:JR御茶ノ水駅)
デジタルハリウッド 東京本校 1Fセミナールーム

CakePHPカンファレンス東京

これまで開催してきたCakePHP勉強会の拡大版という位置付けなのですが、拡大の仕方が普通じゃないです。

  • 定員が140名!
  • 朝からがっつり5時間!+懇親会を合わせると7時間!
  • 豪華なスピーカー陣!
  • そしてそして、なんとCakePHP開発者であるGarrett J. Woodworth氏の来日講演!!

てな感じで盛りだくさんなわけです。

海外のオープンソース開発者が来日して直接、話が聞けるというのはなかなか無い機会なので、bakerの皆さんは、もちろんのこと、「CakePHPって何?」な人も是非ご参加下さい。

参加費は無料(懇親会除く)ですが事前申込みが必要となります。申込みは誠意準備中なので、しばしお待ちください!

# 個人的には朝開催の夕方終わりなので懇親会参加しても日帰りできそうなのが遠征組として有り難かったりします:-D

tableタグで画像を描くPHPクラスを作ってみた

  • 2008-08-31 (日)
  • PHP
この記事の所要時間: 045


夏らしい花火画像です。さて左右の画像のうち、どちらがJPEG画像でしょう。

一見どちらもJPEG画像っぽいですが、実は片方はHTMLのtableだけで描画しています。

そんな画像をtableタグで描画するPHPクラスを書いてみました。

インストール

以下のURLからPHPファイルをダウンロードして、任意のディレクトリに設置するだけでokです。

http://www.1×1.jp/blog/download/TableImage.php

使い方

requireして、TableImage::createTag()に画像ファイルパスを与えるだけです。createTag()からは、画像を変換したtableタグが文字列として返ってくるので、それをechoすれば、tableタグで描画していた画像が表示されます。

対応画像

現在のところGIF/JPEG/PNGに対応しています。

画像サイズにTableImageクラスとしての制限はありませんが、ブラウザがtableを描画するのにマシンパワーをかなり喰うので、VGA以上の大きな画像はやめといた方が良いです;-)。

実装の経緯

ネタ以外で、何の役に立つんだ?的なライブラリです。

実は、某デバイスでの開発案件に携わったのですが、外部テキストは読めるのに、外部画像が読み込めないという困った仕様にぶち当たりました。

画像をシリアル化して、imgタグにJavaScriptで読ませるというのも試したのですが、こちらも動作しませんでした。

そんな時に、FirefoxでQRコードを生成するQR Codeに含まれるJavaScriptライブラリ、QRコードのソースを見ました。QRコードをtableタグで表現する手法を見て、まさに「我が意を得たり」な気分でした:-D。

このライブラリを公開されている荒瀬氏にはホント感謝感謝です。

# ただ他の要因があって、案件ではこのクラスは使わない方向です。。。

・使用写真サイト: http://www.linkstyle.co.jp/free/nature_scene/hnb/hnb0041-049.html

第34回PHP勉強会に参加してきました&発表資料

この記事の所要時間: 253

CakePHP勉強会の翌日に行われた第34回PHP勉強会にも参加してきました。

今回はLTで「動かしてコードの流れを追う」というタイトルで話してきました。PHP勉強会では初発表だったので秘かに感慨深いものがあったりしました。

発表時の資料をアップしておきます。

あとスライド中で紹介しているdebug_print_backtrace_source()はこれです。

以下、つらつらと。

maru_ccさん

  • 現場での貴重なお話 => なかなか外に出ない話なので興味深い
  • deployが悩みなのはどこも同じ:-D
  • 発表後にmaru_ccさんを囲んでのdeploy雑談がかなりアツかった!

kaz_29さん

  • PostgreSQLでの全文検索のお話
  • 8.3の全文検索は使える印象 => Ludiaとの比較も見たいなー:-D
  • デモがイイ! => やっぱり動いてるものは説得力が違います

sotarokさん

  • SimpleXML/XMLReaderのお話
  • そたろそたろっく」はNG(w
    => 「そたろっく」の間違いでした><。sotarokさんありがとうございますー:-D
  • sotarokさんがいかにみんなに愛されてるかが良く分かった;-)
  • 軽くSPLをdis => SPLは使える(使いたい)イメージなので意外だった
  • コードを使ったデモが多くてイイ!

shin1x1

  • 反省点は色々あったものの、会場で反応を頂けたので満足です!=> ありがとうございます!
  • IRCのログが見たい。。。(後半に何かツール?が紹介されてたような)
  • 自分の発表のustreamは怖くてまだ見れません><

gusagiさん

  • PHPセッションをDBで共有するお話
  • Webサーバをスケールすると必ず出てくる話なので実用的
  • セッションクラスにsetter/getterを持たして、$_SESSIONへのアクセスもラップしてしまうのもアリかも。

nemo_kazさん

  • IBMのProjectZeroなお話
  • 軽快なプレゼンで楽しかった:-D
  • 割り切りがスゴイ。
  • 割り切り1. 1コンテナで同時に動かせるアプリは1つ。
  • 割り切り2. リクエスト毎にJVMを再起動! => これはスゴイ。速度・負荷が気になる
  • 割り切り3. ブラウザで開発!(Eclipseでも開発可) => ガリガリ書くのは辛そう:-P
  • 家電並にマニュアルを読まない(w

懇親会

  • 端テーブルでまったりしてました
  • アツいユーザ会話 => 恩恵を受けているだけの自分としては感謝感謝です。
  • 例によって書けない話が多数:-D
  • CakePHP勉強会運営組は抜け殻のようでした。。。
  • 新幹線の都合で1次会で無念の離脱。maru_ccさんのレポでは3次会まであった模様。

また参加したい!

今回は発表があったのでちょっと落ち着かないところもあったのですが、かなり楽しかったです。やはりイベントごとは参加してなんぼだなと思います。

土曜日で昼開始だったのでノンビリした雰囲気なのも良いですね。土日参加はなかなか難しいですが、また参加したいです。

会場提供して下さったトライコーンさん(鈴木さん)、勉強会ではcocoitiさん、動画配信では安藤さん、懇親会ではゆどうふさん、ありがとうございました。そして参加された皆さんお疲れさまでしたー。

第3回CakePHP勉強会も盛り上がりました。

この記事の所要時間: 342

第3回CakePHP勉強会に参加してきました。

回を増すごとに熱気むんむんなのですが、今回はあのトライコーンさん(すずきさんいつもありがとうございます!)の会場がびっしり埋まる勢いでした。

特に今回は関東圏外の方が多いのにも驚きました。北海道の方や福岡の方が来てらしたので、大阪からの自分では遠方者扱いとはなりませんでした;-)。ありがたいことです。

~フェイス女学園~ CakePHP を使った効率的なPC・モバイルサイト構築について

  • スパイスボックスラボラトリ 神部さん
  • 受付でバタバタしていてあまり落ち着いて聞けませんでした><
  • 資料公開に期待!
  • サービスが伝播していく流れがリアル
    => 何だかんだいってTVは強力なのかな

CakePHPでの失敗談

  • ブルーオーシャン 岡田さん
  • 「CakePHPポケットリファレンス」出版おめでとうございます!
  • 次期C++を使って、C++版CakePHP? => CakeC++とか?:-D
  • 実際の失敗談は参考になります
  • アソシエーション周りの話はあるある
  • ビヘイビアのインスタンスは一つのみ
    モデルごとの設定は$this->__setting[%モデル名%]以下に書く
  • コンポーネントのstartup()でインスタンス変数がクリアされる話は、?
    => 手元のRC1では再現できなかった

ホッテントリメーカー@CakePHP

  • phaさん
  • 放浪生活は勝手に親近感が:-D
  • ゆるい感じがイイ!
  • 用語が分かりづらかった話はリアル
    => 確かにフレームワークを少しでも知っていないと難しい
    => 解説記事の用語が専門的過ぎる話は結構大事な指摘かも
  • phaさんもCake教に染まってしまったオチ:-D

CakePHPゆとり開発環境

  • k1LoWさん
  • 遠目に見ると知り合いに檄似で勝手に親近感が:-D
  • いきおいある良いLT!
  • Emacsを使ってCakePHP開発を最適化
  • デモが見たかった!
  • rails.vimをCakePHP用にカスタマイズしようとして放り投げたのを思い出した。。。
  • 会場でのエディッタ使用調査は、vim>eclipse>emacs>秀丸>textmateでした:-D

AuthComponentについて

  • 受付をご一緒した高木さん => 助かりました!
  • OpenIDが手軽に使えるのは嬉しい
  • AuthComponent自体を使ってない。。。事例増えてるみたいだし追っかけてみよう>自分

Cakeにテストがやってきた

  • きしださん
  • 自分にはど真ん中ストライクなCakePHPでのユニットテスト話
  • CakePHPでちゃんとしたユニットテスト事例は初めて聞いた気が。
  • やっぱControllerにロジック書いちゃダメ。
  • 1000あるテストケースの実装が見たかった:-D
  • => ユニットテスト勉強会に行きたいな。
  • チケットには「このテストが失敗する」の英語とそのテストケースがあればok:-D
  • CakePHP1.2本、企画中!

何が違う? CakePHP and symfony

  • 司会しつつ動画配信しつつの安藤さん
  • symfonyとCakePHPの違いを「使って」比べる
  • イメージだけで判断してはダメ!
  • モデルの戻り値は、CakePHPが連想配列、symfonyはオブジェクト
  • ヘルパは、CakePHPがオブジェクト、symfony:が関数
  • => モデルの戻り値はオブジェクトがいいなあ。あちこちで出る話題だからいずれはそうなると思うけど。
  • 1.2はsymfonyよりちょい遅い => PTはこれからかな

懇親会

  • 居酒屋の地下室をほぼ貸し切り状態!
  • あちこちのテーブルが盛り上がっていて楽しかったー!!
  • 勉強会を連日はしごする人が結構いてビックリ。みんなアツいなー。
  • ubuntuをレッツノートに入れたくなった;-D

次回はCakePHP本家の人が?

いやあ今回も盛り上がりました。この盛り上がりを見るとCakePHPのパワーを改めて感じました。

次回はいよいよgwoo氏を呼ぼうという流れになっているのでさらに盛り上がりそうですね。

参加された皆さんありがとうございました&お疲れさまでしたー。鈴木さん、高木さん、そして何から何まで安藤さんお疲れ様です!

CakePHP index.php以外からフレームワークを使う

この記事の所要時間: 121

CakePHPでは[app/webroot/index.php]がFront Controllerになっているのですが、これを他のファイル名に変える方法です。(DocumentRootがapp/webrootになっている場合)

1. index.phpを他のファイル名に変更

ここではgw.phpをFront Controllerにします。

$ mv index.php gw.php

2. .htaccessを変更

あとはapp/webroot/.htaccessのRewriteRuleを変更すればokです。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
#    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
    RewriteRule ^(.*)$ gw.php?url=$1 [QSA,L]
</IfModule>

index.phpはフレームワークを避けるとか

これは以前index.phpだけはデザイナーさんが自由に使いたいという要望があったため考えました。(もちろんPagesControllerを使っても良いのですが)

index.phpはサイトのトップページになることが多いので、アクセスによる負荷を考えて、あえてフレームワークを避けるという手にも使えますね。

第3回CakePHP勉強会&第34回PHP勉強会に参加します

この記事の所要時間: 014

今週末の第3回CakePHP勉強会第34回PHP勉強会に参加してきます。

CakePHP勉強会では運営(手伝い)、PHP勉強会ではLTで話す予定です。

外の勉強会は久しぶりなので楽しみです。

当日参加される方々よろしくお願いします!

debug_backtraceを見やすくしたdebug_print_backtrace_source

  • 2008-06-16 (月)
  • PHP
この記事の所要時間: 041

debug_bracktrace()は手軽にバックトレースが取れるので便利です。

メソッド(関数)の呼び出し順だけではなく、引数の内容や現在動作しているオブジェクトの状態なども取得することができます。

そこでこれらを利用してバックトレースの内容を見やすくしたdebug_print_backtrace_source()を作ってみました。

ダウンロード

debug_print_backtrace_source.php

dBugを内包しているのでライセンスはGPLで。

使用方法

debug_print_backtrace_source.phpを読み込んで、debug_print_backtrace_source()もしくは、dpbs()を実行するだけです。

引数は2つでどちらもbooleanです。第1引数でバックトレース表示後に処理をexitするか否かを、第2引数でバックトレースを逆順で表示するか否かを指定します。指定しない場合はどちらもfalseが有効となります。

表示の見方

a. ファイルパス、行番号、クラス名、メソッド名
b. 現在のインスタンス情報(クリックすれば展開)
c. バックトレース行
d. 引数(クリックすれば展開)

実装した機能

実装した機能は以下です。

  1. ソースコードを表示(前後10行)
  2. バックトレースの内容を並べた
  3. 現在のクラス・メソッド(関数)・オブジェクトの内容では次のトレース内容を表示

1. ソースコードを表示

バックトレースで指し示している箇所前後10行のソースを表示します。これが一番実装したかった機能です。実際にトレースで指定されている行は背景色を変えています。

2. バックトレースの内容を並べた

debug_backtraceでは多くの情報が取れるのでそれらを視認しやすいように並べました。

現在のオブジェクトとメソッド(関数)引数の表示では、dBugを一部変更して使用しています。

3. 現在のクラス・メソッド(関数)・オブジェクトの内容では次のトレース内容を表示

バックトレースの内容では、ファイルパス・行番号とクラス名・メソッド名・現在のオブジェクトがずれているので若干把握しづらくなっています。ですので見やすいように後者については次のトレースの値を表示しています。

ちなみに「ずれている」というのは、バックトレースとしては問題ありません。単に見やすいようにした、というだけです:-D

フレームワークで使うと良いかも

フレームワークのようにクラス構造が複雑で、メソッドの呼び出しが深くなりがちなシステムでは、メソッドの呼び出し履歴が見やすくて便利だと思います。フレームワークのソースを読む時のお供にどうぞ。

ホーム > PHP

検索
フィード
メタ情報

Return to page top