ラベル Web系開発 の投稿を表示しています。 すべての投稿を表示
ラベル Web系開発 の投稿を表示しています。 すべての投稿を表示

2011年7月12日火曜日

[Rails]: Generate Complex OR Query on Rails 3 with Arel

On the Rails 3, ActiveRecord generate QSL through DSL "Arel". There are many simple query sample codes are available, but complex one is a little. This post shows how to generate complex "OR" query.

2011年2月3日木曜日

[Rails]: Rails3のActiveRecordで複雑なOR文生成

Rails 3のActiveRecordはArelというDSLを使ってクエリを生成するのだが,単純なクエリであればともかく,複雑なクエリを実行しようと思うと色々と四苦八苦しないといけなくなる.
# この辺はどのORMでも同じだけど 今回,複雑なSQL文を作る必要が出たのでその方法をまとめておく.

2011年2月1日火曜日

[Rails]: Deviseで二段階パスワード認証

RailsのDeviseはメールアドレス認証などの便利機能が付いていて非常に便利なのだが,オールインワン過ぎてちょっと挙動を弄ろうとするとどこから手をつけていいのか分からなくなる.
例えば,Amazonなんかでやられているような二段階のパスワード認証をやろうとしたのだが,イマイチ事例が見つからなかったので色々とやってみた.

2010年8月5日木曜日

[Mac]: 17インチMacBook Proでのノマドワーキング

17インチMacBook Pro Mid 2010を買ってからそれまでのコーディングライフが大きく変わった.
これまで自宅や仕事先など,大画面ディスプレイがないとがっつりコーディングするつもりになれなかったのが,このマシンのおかげでどこでも作業できるようになった.

いわゆる最近流行りのノマドワーキングへの一歩を踏み出して2ヶ月ほど経ったので,僕なりに考えた利点や使っているツールなどを書いていこうと思う.ツールなどはWebアプリケーション向けだが,ノマドワーキングの利点などは他の分野でも同じだと思う.

2009年1月29日木曜日

[Firefox Add-ons]: HttpFoxでHTTPヘッダやボディ情報をチェックする


Webアプリケーション開発をしていると,サーバが返すHTTPレスポンスヘッダやブラウザが問い合わせるHTTPリクエストヘッダの他に,ボディ情報も見たいことがある.
Live HTTP HeadersはそういったときにHTTPヘッダ情報を取得することができるスニファツールで,ヘッダだけを観察したいときには便利である.

しかし,バグや予期せぬ挙動を追いかけるときに,ヘッダ情報だけでは不十分な時がある.
そんなときにはボディ情報も一緒に取得できるHttpFoxが便利である.
HttpFoxは,パケットスニファであるWireShark(tcpdump)を使ったことのある人ならすぐに使いこなすことができるだろう.
ダウンロードサイトからアドオンをインストールし,起動すると以下の様な画面が現れる.

左上の「Start」をクリックすると,HTTP通信の記録が開始される.

主な手順としては,
  1. 「Start」をクリックして監視したい操作を行う
  2. 「Stop」をクリックしてスニファを停止する
  3. 通信内容を見て必要な情報を解析する
といった順序で解析することになる.

実際に通信をキャプチャすると,以下の画像の様になる.


WireSharkなどとほとんど同じなので,Web開発をしている人にはいちいち説明する必要は無いと思う.
簡単なフィルタ機能も備えているので,解析の取っかかりには便利なAdd-onだろう.

最近のWebアプリケーションフレームワークは,たまに思わぬ挙動をすることがあるので,こうしたツールを覚えておくと予期せぬ現象を追いかけるのに役に立つだろう.

2009年1月22日木曜日

[PHP][Symfony]: 特定のスタイルシートを読み込まないようにする

# テスト環境はSymfony v1.2.0

Symfonyを使っていると,apps/APP_NAME/config/view.ymlに書いたデフォルトのスタイルシートは常に勝手に読み込まれることに気付く.
これは親切なのだが,デフォルトのapps/APP_NAME/templates/layout.phpを使わずに全て手動でHTMLを出力させたい時などには不便である.

例えば,apps/APP_NAME/templates/null.phpとして,以下のようなファイルを作る.

<?php echo $sf_content ?>

このレイアウトは,デフォルトのlayout.phpと違い,HTMLタグやHEADタグなどを含んでいないため,CSVを出力したり,HTML以外の任意のデータを出力する時に使う.
使い方は,Actionの中で

$this->setLayout('null');
とすればよい.

さて,このレイアウトテンプレートはCSSやXMLなどの非HTMLを出力する場合は問題なく機能する.
しかし,HTMLを出力しようとした際に問題が発生する.
というのは,アクションのテンプレートにHTMLを普段通り記述しただけでは,SymfonyがHEADタグを自動検出して,デフォルトのスタイルシートを読み込んでしまうのだ.

例えば,以下のテンプレートの場合,赤字の部分にデフォルトのスタイルシートが読み込まれる.

<html>
<head>
<meta ... />
<meta ... />
<!--ここに読み込まれる-->
</head>
<body>
</body>
</html>


デフォルトのスタイルシートを読み込みたくない場合,この動作はお節介なので,読み込まないように設定したい.
で,SymfonyのAPIドキュメントによると,Responseクラスを継承したsfWebResponseクラスにremoveStylesheet()というメソッドがあるので,これを使ってみるのだが,うまくいかないことが分かる.

public function executeHoge(sfWebRequest $request){
$response = $this->getResponse();
$response->removeStylesheet('stylesheet_to_remove');
return sfView::SUCCESS;
}

どうみても問題なさそうなのだが,やはりデフォルトのスタイルシートが挿入されてしまう.

で,お行儀が悪いが,テンプレートの方でこのメソッドを呼んでみる.

<?php
$sf_response->removeStylesheet('stylesheet_to_remove');
?>
<html>
<head>
<meta ... />
<meta ... />
</head>
<body>
</body>
</html>

すると,無事にスタイルシートが読み込まれなくなった.

どうやら,デフォルトのスタイルシートを挿入する処理は個別のActionのテンプレート処理の後に行うらしい.多分Filterか何かがやっているのだと思う.
この処理の順番を知らなかったのでかなりハマった.同じような経験をした人はいるのかな?

2009年1月21日水曜日

[Mac OS X]: デスクトップ上の任意の点の色を取得したい


Webページなどを作っていると,既存のデザインに合わせるために各種の色を16進数(#ffffff)などで取得したいことがある.
そんな時,スクリーンショットを撮ってから画像編集ソフトで開き,色を調べると言う方法もあるが,Mac OS X環境があるのなら標準搭載のDigitalColor Meterを使うと手っ取り早い.

「アプリケーション->ユーティリティ->DigitalColor Meter」を開くと,すぐに色を調べることができる.
デフォルトでは16ビット表示になっているので,通常使われる8ビットの値を表示させるために「RGBを16進表示(8ビット)」に変更する.
その後,マウスポインタを任意の色を取得したい部分に持って行くだけで,色情報を取得できる.


上記の例であれば,#3377ABが測定部分の色となる.

いちいちソフトを起動したりする必要もないので,地味だがかなり重宝する.