2009年05月

2009年05月31日

北陸勉強会情報追加

 北陸の勉強会情報が追加されました。

 石川でもCSS Niteが開催されるようですねっ!! 福井の会は仕事が立て込んだため参加できなかったので、ぜひ今回こそ。

 デザイナーの方の考え方とか、ライフスタイルって凄く興味があるんですが、会社でもなかなか話が聞けなかったりします。

 ぜひ、色々話せたらなぁと思います。

 情報提供t32kさんありがとうございます。


 【追記】6月は今のところ勉強会情報ないですが、いくつか動いている気配がしますw また情報が増えましたら掲載しますのでお楽しみっ!!

2009年05月27日

第3回FxUG@北陸勉強会は富山で開催します

 第3回FxUG@北陸勉強会の申し込みページがオープンしました。
 今回は会場がバーで、そのまま懇親会に雪崩れ込めるというある意味理想な会場です。

 今回はFlashMediaServerを用いてUstreamっぽいものを作成して、会場の様子をlive配信してみようかと思います。

 富山のスピーカー中心なので、今回はネタ発表はお休み予定ですが、空きがありましたら、Ustreamもどきの作り方でも紹介しようかなと思います。

 北陸のみなさま、ぜひ会場でお会いしましょう。

 

2009年05月24日

Windows 7 勉強会キットのサイトがオープン

 こんにちは、福井出張で行きかえりともに飛行機が遅れて、帰りは危うく名古屋でもう一泊する羽目になりそうになったcoelacanthです。
 増便とまではいいませんが、もう少し時間を調整してほしい(小松⇔福井)っす。

 以前に、Windows 7 コミュニティ勉強会 with Tech Fielders@北陸開催のアナウンスをいたしましたが、
 Windows7勉強会のキット(?)がDLできるサイトがオープンしました。

 勉強会一覧に北陸での勉強会も掲載されてますねー。

 今のところ勉強会キットのDLのみですが、特典4のTechNet Plus(Directの方)が割引購入できる特典が嬉しいです。
 今年から購入を考えていたので、まさにまってましたという感じ。
 これでSilverlight+Win2008の配信テストが思う存分できるようになりそうです。

 登録にあたりましていくつか注意がありますので、一度目を通してから申し込んでみてください。

2009年05月18日

Ruby on Rails:サブドメインでredirect_toを用いる場合の注意点

 RoRのアプリをサブドメインでデプロイしようとすると、
 開発環境のNetBeansを用いたデバックはドキュメントルート下で起動して、リリース環境ではサブドメイン下でアプリが動くことになりパスの指定でずれることが多く苦労します。

 (NetBeansでサブドメイン下に配置してデバックする方法をご存知の方教えてください)

 View部分のlink_toやimage_tagはちゃんとサブドメインを踏まえたパスを生成してくれるのだが、Controllerでredirect_toを用いた場合にサブドメインが考慮されなかった。

 解決は(public/404.htmlに飛ばす場合)

 
redirect_to request.relative_url_root + "/404.html"


 と記述することで一応の対応はできたけれど、これだとリダイレクトする場所毎にこのような記述が必要になる。
 設定ファイルとかで対応できないものだろうか・・・

Ruby on Rails:to_xmlのマルチバイト処理

 RoRの開発環境&デプロイで色々つまづいてしまいましたが、
 ようやくアプリケーションん開発に移行できそうです。

 とりあえず今までPHPで作っていた色々をRailsに書き直しながらコツを掴んで行きたいと思います。

 自分の場合、Flashと絡めたコンテンツ作成が多いので、データ出力の際にto_xmlやto_jsonというXML形式やJSON形式に変換してくれるメソッドがあるのは非常にありがたい。

 AcctiveSupport万歳!!

 と思っていたら、to_xmlの出力で日本語が数値参照に変換されてしまっている・・・。
 Flash側で数値参照を扱うのは面倒なのでRails側で対応しようと調べてみると色々対応している方がおりました。

 印刷屋のdeveloper日記
 ActiveRecord#to_xmlの日本語対応版(?)を作る

 くふんを狙え
 Rubyで数値文字参照をUTF-8にする

 というわけでxmlは解決したけど、to_jsonもなにやら変換されてるなぁ・・・。

2009年05月17日

Ruby on Rails:Passengerで躓く(というかぐち)

 最近、FastCGIからPassengerに(ようやく)移行しつつあるのですが、
 開発環境構築で1時間ほど躓いて起きれなかった。

 症状としては

 railsアプリ作成して、database.ymlやパーミッションの設定を済ませた後に、

 public/index.htmlの

 About your application’s environment

 をクリックすると、

 
The page you were looking for doesn't exist.

You may have mistyped the address or the page may have moved.


 と表示されてしまうというもの。
 たぶん、Passenger経験者やRailsに慣れた方ならピンと来るんだろうなぁと思います。
 
 普段ならここに色々な開発設定が表示されるのですが、なぜか500エラー時の文言が表示される。
 ミスタイプかページが削除されたんじゃね? とか言われてしまいました。

 apacheのアクセスログでは500(そりゃそうか)、エラーログには記載無し。
 railsのログを見ても何も書き込まれない・・・。

 おかしいおかしいと色々やっていたら、ふとした拍子に
 {railsインストールディレクトリ}/log/production.log
 にログが書き込まれた。

 ・・・・production.log???

 ようするにこいつはproductモードで稼動しているわけだ。
 今更だけど、productモードはリリース時の稼動を想定しており、developmentモードよりエラー情報等が制限されている。
 もちろん、環境情報なんて出力するはずが無い・・・。

 というわけでhttpd.confに

 
RailsEnv development


 を追加してApache再起動で無事解決。

 確かにPassengerがデフォルトでproductionモードで動くと知らなかった自分の知識不足なんだけど、エラー文言もどうかなと。

開発プロセス勉強会に参加しました

 katzchangさんの働きかけで北陸で開発プロセスに関する勉強会を行いました。

 会場も提供していただき、ありがとうございました。

 読書会形式で行い、ケント・ベックのテスト駆動開発入門を手元に、実際にコーディングしながら進んでいきました。

 自分は一ネタ30分ほどの形式で、色々な技術を紹介するタイプの勉強会の参加が多かったですが、こういう形式でテーマを決めて集中する形式もいいですね!! 非常に勉強になりました。

 アンチョコがテスト駆動開発ということで、Javaでコーディングをすることが多かったですが、ほぼJavaの知識0の自分でもちゃんと(?)ついていけました。

 【感想・気づき】

 ・Java+Eclipseはかなり進んでいる!!
   Java系の勉強会にはnagiseさんを用意しましょう
 
 ・テスト駆動のテストと品質保持のテストは違う
   なるほど、これは追求してみたいテーマ

 ・コーダーとテスターを分ける(分けれるか?)
   では漸進的なリリースの場合どうする? というのが次回持ち越しの課題

 ・アジャイル→ドキュメントが残らないことが多い→テストでカバー
   これは駆動のためのテストとは違うかもしれませんが、なるべく駆動のためのテストと品質保持のために追加、修正するテストとの誤差が少ないのが良いことには違いないですね。

 ・immutableとmutable
   状態と振る舞いに関して、日ごろ気をつけてはいましたが言語仕様としてしっかり存在する言語(scala)があるということや、そういう用語があることは知りませんでした。こういう点にルーズに書けてしまうのがPHPの良さかもしれませんが、しっかり意識してコーディングしようと思いました。

 ・テスト駆動開発はリファクタリング、デザインパターンを知っていることを前提として書かれている
   かなり敷居が高いと思いますが、参加者がほぼその前提を超えており、そうでない方も話せばすぐ概念を理解していたので、あまり問題にはなりませんでした。

 ・Todoリストもセット
   EclipseのTodo機能とか使えそうですね。あと、新人さんに教える場合にもこのTodoリスト化は非常に便利だと思います。
   プログラム的なグリーン、レッドに加えTodoが残っているとレッドになるようなバーがもう一つあると・・・冗長ですかね。

 ・ケントベックの大げさな表現は原書どおりなのかw
   XP本はここまでではなかったような・・・


 Java+Eclipseという環境でやってみて(発表者の熟練もあると思いますが)、ユニットテスト用のプラグインも入っており、色々な恩恵を受けれるJavaの開発環境というのは一つの手本だなぁと感じました。

 PHPでは、Flashではどうだろう?
 という自分のメインの開発言語での環境の確認と、今日得た知識を職場でどう伝えて行くかが課題といえば課題ですねー。

 あと、デザインパターン、リファクタリングが当たり前なレベルの方々と話すのは非常に楽しかった。自分は末席ですが、もっともっと話せたらなぁと思いました。
 次回が楽しみです。

2009年05月16日

勉強会情報追加

 FITEAさんの勉強会が5月30日に、
 Windows 7 コミュニティ勉強会 with Tech Fieldersの日取りが決まったので情報追記しました。

 6月は空白地帯?

 勉強会一覧

2009年05月15日

Windows 7 コミュニティ勉強会 with Tech Fielders@北陸 準備中

 金沢駅前のパークビルで7月18日にマイクロソフトさん協賛で勉強会の開催を予定しております。
 Windows7の新ネタ&北陸のMVPや優れた技術者の発表を聞けて、意見交換できます。

 セッション後は懇親会も予定しておりますのでお楽しみを。

 最大でMicrosoftMVPの方が3名セッションを行ってくれることになりそうです。勝手に今からわくわくしております。

 つきまして、北陸のマイクロソフトギークの方、.NET開発者の方々、30分ほどのセッションか5分程度のライトニングトークをしてみませんか?

 興味がある方は西村(私)までメールください。
 mac.nishimura@gmail.com

 一般の方への応募受付は近日マイクロソフトさんサイトで公開予定です。

IT勉強会カレンダーにも乗りましたね。
 現時点でタイトルが[宮城/仙台]となっていますが・・・

2009年05月14日

CakePHPのexplainコンポーネントを1.1で動かしてみた

 久しぶりにPHPネタ。
 cakephperさんの作成したCakePHPのデバック時にexplainの結果が出せるコンポーネントが非常に便利そうなので、導入してみた。

 ただし、自分の環境はCakePHP1.1なのでちょいと修正が必要になった。
 ソースを追っかけてわかったが、CakePHP1.1と1.2ではデバックを出力する仕組みがかなり変わっていた(というか1.1がわかりずらい!!)。

まずは上記サイトからソースコードをDL。

 コンポーネントファイルを配置

#app/controllers/components/explain_sql.php



 AppControllerに以下を追記

var $components = array('ExplainSql'); // その他コンポーネントを利用している場合は追記するように修正する



 afterFilter()に以下を追記

function afterFilter(){
parent::afterFilter();
$this->ExplainSql->showExplainSQL();
}


 ConnectionManager::sourceList
 というメソッドが1.1には無いので、CakePHP1.2から移植してみる
 ・・・というほどでもなく、丸っとコピーで動いた。

function sourceList() {
$_this =& ConnectionManager::getInstance();
return array_keys($_this->_dataSources);
}


 ここでdebug設定を2にあげると(Configure::write('debug', 2))、フッター以下で出力されるクエリログには見事にexplainしていることをしめすログが残っている。

 しかし、explainの結果が出力されない!!

 というわけで、explain_sql.phpのソースコードを眺めてみる。

$this->_controller->output .= $html_out;
↑最終的には上のようにexplain結果表示用のhtmlを格納しているが、1.1のデバックではこれを使用していない模様。

 デバックの出力処理をしている箇所を探すために、久しぶりにViewやらControllerの親クラスを追いかける。
 ディスパッチ処理を追ってみる・・・

 CakePHP1.1のdebugの仕組みを追ってみると、通常のページ描画処理であるview->render()とは別の流れで吐き出されているようだ。
 色々探すとcake\basic.phpにdebugという関数が定義されており、グローバルに呼びだしている模様。

 それを踏まえて
$this->_controller->output .= $html_out;

debug($html_out);
に書き換えてあげると一応表示された。

 elementの描画にあわせて複数回吐き出されるなどの問題がまだ残っているが、とりあえず開発環境でデバック時に利用する分には十分な結果が得られた。

 出してみると、いくつかまずいクエリが見つかった。
 これは便利。

 Ruby on Railsに同じ仕組みはあるのかな?
 あるならこちらも導入したいものです。

【追伸】
 コンポーネントの作者のcakephperさんから助言いただきました。

 $this->_controller->output .= $html_out;

 ではなく、

$out = ob_get_clean();
ob_start();
echo $out;
echo $html_out;


 とすると良いとのこと。試した見ましたが、こちらの方が綺麗な出力で良いです!! ありがとうございました。

Profile

シーラカンス

Recent Comments
QRコード
QRコード
livedoor Readerに登録
RSS
livedoor Blog(ブログ)