Rails 勉強会@大阪 -002 cuzic. 今日はなすこと 相対パスプラグイン Double Filter Plugin 埋め草 –Cuzic の環境とか –1 つのボタンで複数の Ajax なアクションを実 行.

Slides:



Advertisements
Similar presentations
G ゼミ 2010/5/14 渡辺健人. パフォーマンスの測定 CUDA Visual Profiler CUDA の SDK に標準でついているパフォーマン ス測定用のツール 使い方: exe ファイルのパスと作業ディレクトリ指定して実 行するだけ 注意点 : GPU のコード実行後にプログラム終了前に,
Advertisements

どこでも TracWiki EclipSKY こんぴろ. アジェンダ 自己紹介 Trac Wiki がいろんなところでかける! – 設計書が書ける.
Integrated Personal Page C05823 森本万里子 C05829 西山礼恵 C05899 高木華子.
位置情報と私 木村岳文 / 位置情報と私 / はじめに GPS 付き携帯、ハンディ GPS などを使っ て、お手軽に自分が地球上のどこにいる かを調べられるようになってきました。 このデータをつかって何かおもしろいこ とができそうな予感。 具体的にどうしたらおもしろいかはよく.
Internet Explorer 障害解析 最初の一歩 - IE のトラブルを理解する -. 概要 Internet Explorer を使用中に発生するトラブルの 種類と、調査のための切り分け方法を紹介します! (以降は IE と略称で表記します) よくあるお問い合わせ Web ページの表示が白画面のまま完了しない.
Ruby on Rail の紹介 石渡正樹 Ruby on Rails とは? スクリプト言語 Ruby で書かれた web アプリケー ションフレームワーク 作者 –Devid Heinemeier Hansson という人だそうです ( 詳 しいことは知りません.
Ruby on Rails (RoR) 講習会 近畿大学大学院 田中大介. 本日の目標 Web アプリケーションを作ろう!
1 安全性の高いセッション管理方 式 の Servlet への導入 東京工業大学 理学部 千葉研究室所属 99-2270-6 松沼 正浩.
© 2005 株式会社はてな 本資料の一部または全部の無断複製・転載を禁じます prototype.js と Perl で Ajax 株式会社はてな 伊藤 直也
Cubby Web アプリケーションのためのシ ンプルなフレームワーク BABA Yasuyuki.
1 なんとなく Ajax ~新しくて古い XMLHttp 川合孝典 (Kansai.pm) 2005/5/22.
Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
JMP version5(以上) 日本語版のScripting Languageによる プログラミング
RailsによるAjaxの利用 回生 小野 実.
PHP AV(Audio Visual) 拡張 クライアントサイド PHP アプリケーションPHP
社会人学習講座 「Javaプログラミング概論」
JPAを利用した RESTful Webサービスの開発
2006年11月15日 植田龍男 Webサービス II (第8回) 年11月15日 植田龍男.
Ruby on Rails 勉強会 11月5日「土」 崔 昌権
UNIX Life KMSF M2 saburo.
CakePHPを業務に導入する Shin x blog 新原 雅司.
Log4netを使ったロギング機能 オガシン.
Log4netを使ったロギング機能 オガシン.
rails under “production”
マルチプラットフォーム対応 P2Pファイル共有ソフトの開発
実行時のメモリ構造(1) Jasminの基礎とフレーム内動作
ケータイキット for Smarty のご紹介
吉田和弘 株式会社ミッタシステム Rubyのすすめ 吉田和弘 株式会社ミッタシステム
マルチエージェント・シミュレーション(2)
ASP.NET開発標準化を考えてみよう! わんくま同盟 東京勉強会# /03/15 mxb & 片桐継.
ASP.NET開発標準化を考えてみよう! わんくま同盟 東京勉強会# /03/15 mxb & 片桐継.
JavaServlet&JSP入門 01K0018 中村太一.
バージョン管理超入門 まだファイルコピーしてます?
F5 を押すか、または [スライド ショー] > [最初から] をクリックして、コースを開始してください。
RAD Studio 14/09/27 TEffectを使った綺麗なForm
PHP Framework Update symfony 編 株式会社ディノ 月宮紀柳.
ノンプログラマのための Selenium de DDT はじめの一歩
インターネット上の応用サービスの中継・変換・統合技術
マスタリング バベル Boost.勉強会 #2 ( ).
ビューとコントローラ.
HTTPプロトコルとJSP (1) データベース論 第3回.
JQueryでAjax 藤田@ジャストプレイヤー ※参考しまくり文献 jQuery日本語リファレンス.
Curlの仕組み.
HTTPプロトコル J2EE I 第7回 /
コンピュータ基礎実習上級 #10 絶対パスによる指定
2009/5/22 けーちゃん カンタン  Wikiで情報共有 あいさつ 2009/5/22 けーちゃん
「OPACに買い物カゴを」 ~東京大学OPACバスケット~
基礎プログラミング演習 第1回.
Java ソフトウェア部品検索システム SPARS-J のための リポジトリ自動更新機能の実現
第8章 Web技術とセキュリティ   岡本 好未.
2004年度 サマースクール in 稚内 JavaによるWebアプリケーション入門
2003年度 データベース論 安藤 友晴.
ガジェット・マスターへの まわり道!? ~Ajaxを理解しよう~
Windows PowerShell Cmdlet
シーケンス図を用いて実行履歴を可視化するデバッグ環境の試作
実行時情報に基づく OSカーネルのコンフィグ最小化
WEBアプリケーションの開発 2002年度春学期 大岩研究会2.
平成19年10月19日 図書系のための アプリケーション開発講習会
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
プロジェクト管理ソフトの群雄割拠をどうやって勝ち抜くか?②
音声認識・翻訳 Android アプリケーション制作
オブジェクト プログラミング 第2回 プログラムの基本.
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
ASP.NET 2.0による Webサービスの構築 2008年10月18日 こくぶんまさひろ.
統合開発環境のための プログラミング言語拡張 フレームワーク
プログラムの一時停止時に 将来の実行情報を提供するデバッガ
ASP.NET 2.0による Webサービスの構築 2008年10月18日 こくぶんまさひろ.
第7章 そろそろ int 以外も使ってみよう! ~データ型 double , bool~
Javaを用いたシューティングゲーム作成
ZendFrameworkで使うためにFilemakerクラスをスクラッチから作ってみる
Presentation transcript:

Rails 勉強会@大阪 -002 cuzic

今日はなすこと 相対パスプラグイン Double Filter Plugin 埋め草 –Cuzic の環境とか –1 つのボタンで複数の Ajax なアクションを実 行

Relative Path Plugin Ruby On Rails の url_for などを相対パス 表記にするプラグイン – 本来、 Ruby On Rails では必ず絶対 URI になる。 動機 –./script/server の Ruby On Rails を apache の 任意のパスにマウントさせたい! – プロキシ環境とかでも便利!

まず、プロキシについて Apache には超簡単なプロキシ機能が実装 – mod_proxy – mod_rewrite これらを使うことで、見かけ上の URI と実際 にコンテンツがある URI を独立に構成できる。 mod_proxy なら ProxyPassReverse /demo mod_rewrite なら RewriteRule ^demo/(.*) [L,P]

Apache 以外にも便利なプロキ シ pound – ロードバランスの機能もあったり stone とか delegate とか – いわゆるパケットリピータ系 – ssh ポートフォワードも同種 有名なのは、 squid とか

使い方./app/controller/application_controller.rb Class ApplicationController < ActionController::Base include RelativePath End 簡単だね!

苦労どころ Rails は、無名クラスを使いまくり。 – かなり追いかけないと、拡張すべきクラスが 分からない redirect_to –RFC では絶対 URI と書かれている・・・。 – けど、相対パスにしても大抵のブラウザでも 動くからいいよね。いいよね。

仕組み 結構単純 – オリジナルの url_for で作るパスの前に、 ”../” を適切 な数加える。 def relative_path_prefix count parents = ["."] if count > 1 parents = [".."] * (count - 1) end pdir = parents.join("/") pdir end

リダイレクトでは(1) HTTP リダイレクトの仕組み –HTTP レスポンスヘッダの Location フィール ドに、リダイレクト先の URI を記述 Action Controller が相対パスの location を 渡しても、 Webrick が勝手に、絶対パスに 変換する。 – うきー!うきー! – これも相対パスにしよう! RFC では、単一の絶対 URL を記述と明記されて いるが、実は相対パスでも動作する。 ここをなんとかしないと、任意のディレクトリに 描画できない

解決法 Webrick 側に細工 –Location ヘッダを相対パスで出力させて、解 決 module WEBrick class HTTPResponse alias_method :setup_header_absoluteuri,:setup_header def setup_header() if location = location else setup_header_absoluteuri end

Double Filter Helper 2 軸あるデータをフィルタするときに有効 なヘルパー – 例 地域 + 顧客名, 顧客名 + 商品名 ドロップダウンリストボックスでお互い をフィルタ

機能 フィルタ順の指定 –A => B –B => A ドロップダウンボックス A が変化すると、 – ドロップダウンボックス B も変化 ドロップダウンボックス B が変化すると、 – 表示しているリストを変化

使い方 若干複雑 class SomeController < ApplicationController include DoubleFilterHelper double_filter Model, “longname0" => “s0",“longname1" => “s1” end ・その後、 rhtml ファイルをいくつか追加 このあたりは generator にしないと・・・。 複雑な設定が必要な generator はどう作ろう?

次のメソッドを追加 (1) SomeController#collect_column_information SomeController#list2 SomeController#filter_from_form SomeController#filter_

次のメソッドを追加 (2) ApplicationHelper::JavaScriptHelper# double_filter_radio_button double_filter_dropdownlist double_filter_js

苦労どころ Rails の Java Script まわりを勉強しなが ら – かなり、ソースコードを読み解きながら学習 日本語の関係 – ブラウザ用、スクリプト、 DB 設計レベルで悩む – ジェネレータか、プラグインか

プラグイン vs コードジェネ レータ プラグインのいいところ – バグが後で見つかったときに1つ直せばすむ – コードが集中する コードジェネレータのいいところ – あとで、ユーザが個別の変更を加えやすい – rhtml とか、 yml とかも守備範囲

今回は実装にプラグインを採用 なんとなく、無名モジュールを活用した くて – あまり、使ったことがないテクノロジー –Rails で多用されているし コードジェネレータは最終形という思い – デバッグがプラグインに比べて面倒 – そもそもきれいな実装にしてから、コード ジェネレータにしないと、後で大変なことに なる

Double Filter Helper の構成 Javascript Helper – ドロップダウンボックスの状態変化を担当 Controller Helper – ドロップダウンボックスの値を DB から収集 – フィルタ後のリストを出力

連続 Ajax 1つのコマンドボタンで少し時間のかか る DB への検索等を一発で行うツールを作 成したかった Ajax を使うと、検索結果が返る度にレス ポンスが得られて便利 キャンセル機能の実現 –DB サーバの不調のときは、ブラウザ側から 強制キャンセルを実行可能

仕組み やっていることは単純 –Java Script の中で、多数の Ajax.Updater を 呼んでいるだけ。 – キャンセルボタンを押すと、 XMLHTTPRequest の abort() メソッドを呼ぶ。 – 何気に、 Ajax でステータスを更新したり。 – ほとんど Java Script で記述。

まとめの前に 現在、これらのツールは、 rubyforge.org で公開するように作業中です。 – svn+ssh で rubyforge.org にアクセスできな いことが原因で中断しています。 Excel ワークシートの出力は時間があると きにやります。 – 他にやりたいことも多いのだけれど。

まとめ 強制的に相対パスで出力すると、任意の ディレクトリで表示可能です。 2項目でフィルタ検索を簡単にするジェ ネレータ / プラグイン作成中です。 連続して、 Ajax.Updater を繰り返し実行 する機構とかも作りました。 ご静聴ありがとうございました。