Suche senden
Hochladen
発表資料20140318
•
0 gefällt mir
•
1,355 views
Kazuyuki Ikeda
Folgen
CHAPTER 3 Retrieving View Templates from Custom Stores
Weniger lesen
Mehr lesen
Ingenieurwesen
Melden
Teilen
Melden
Teilen
1 von 30
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
RSpec 2 Best practices
RSpec 2 Best practices
Andrea Reginato
2019年度 若手技術者向け講座 DBMSの機能
2019年度 若手技術者向け講座 DBMSの機能
keki3
20120117 13 meister-elasti_cache-public
20120117 13 meister-elasti_cache-public
Amazon Web Services Japan
Jjug springセッション
Jjug springセッション
Yuichi Hasegawa
Awsのクラウドデザインパターンをwindows azureに持ってきてみた
Awsのクラウドデザインパターンをwindows azureに持ってきてみた
Sunao Tomita
Spring mvc
Spring mvc
Ryo Asai
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
GoAzure
はじめての ASP.NET MVC
はじめての ASP.NET MVC
jz5 MATSUE
Empfohlen
RSpec 2 Best practices
RSpec 2 Best practices
Andrea Reginato
2019年度 若手技術者向け講座 DBMSの機能
2019年度 若手技術者向け講座 DBMSの機能
keki3
20120117 13 meister-elasti_cache-public
20120117 13 meister-elasti_cache-public
Amazon Web Services Japan
Jjug springセッション
Jjug springセッション
Yuichi Hasegawa
Awsのクラウドデザインパターンをwindows azureに持ってきてみた
Awsのクラウドデザインパターンをwindows azureに持ってきてみた
Sunao Tomita
Spring mvc
Spring mvc
Ryo Asai
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
GoAzure
はじめての ASP.NET MVC
はじめての ASP.NET MVC
jz5 MATSUE
Amazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズ
SORACOM, INC
20170413 aws–windows users meetup
20170413 aws–windows users meetup
Amazon Web Services Japan
Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd edition
Goh Matsumoto
scala+liftで遊ぼう
scala+liftで遊ぼう
youku
130329 04
130329 04
openrtm
20130329 rtm4
20130329 rtm4
openrtm
あの日見たMVCを僕たちはまだ知らない for RoR
あの日見たMVCを僕たちはまだ知らない for RoR
shinnosuke kugimiya
これから始めるAzure Kubernetes Service入門
これから始めるAzure Kubernetes Service入門
Yuto Takei
はじめてのASP.NET MVC5
はじめてのASP.NET MVC5
Tomo Mizoe
KLabのチャットシステム インフラ変遷
KLabのチャットシステム インフラ変遷
KLab Inc. / Tech
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
Tomoharu ASAMI
Heliumエンジンの設計と実装
Heliumエンジンの設計と実装
DADA246
Cloud Formation Best Practice
Cloud Formation Best Practice
yutamuramot
C11,12 SQL Server 2012 Performance Tuning by Yukio Kumazawa
C11,12 SQL Server 2012 Performance Tuning by Yukio Kumazawa
Insight Technology, Inc.
Awsのインフラをデザインパターン駆使して設計構築
Awsのインフラをデザインパターン駆使して設計構築
Monstar Lab Inc.
UnicastWS vol.2
UnicastWS vol.2
Unicast Inc.
AWS Black Belt Tech シリーズ 2015 - AWS CloudFormation
AWS Black Belt Tech シリーズ 2015 - AWS CloudFormation
Amazon Web Services Japan
オープンソースのクラウド基盤 CloudStackによるIaaS構築入門 @OSC 2013 Nagoya
オープンソースのクラウド基盤 CloudStackによるIaaS構築入門 @OSC 2013 Nagoya
Satoshi Shimazaki
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
fukuoka.ex
Embulk 20150411
Embulk 20150411
Hiroshi Nakamura
Weitere ähnliche Inhalte
Ähnlich wie 発表資料20140318
Amazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズ
SORACOM, INC
20170413 aws–windows users meetup
20170413 aws–windows users meetup
Amazon Web Services Japan
Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd edition
Goh Matsumoto
scala+liftで遊ぼう
scala+liftで遊ぼう
youku
130329 04
130329 04
openrtm
20130329 rtm4
20130329 rtm4
openrtm
あの日見たMVCを僕たちはまだ知らない for RoR
あの日見たMVCを僕たちはまだ知らない for RoR
shinnosuke kugimiya
これから始めるAzure Kubernetes Service入門
これから始めるAzure Kubernetes Service入門
Yuto Takei
はじめてのASP.NET MVC5
はじめてのASP.NET MVC5
Tomo Mizoe
KLabのチャットシステム インフラ変遷
KLabのチャットシステム インフラ変遷
KLab Inc. / Tech
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
Tomoharu ASAMI
Heliumエンジンの設計と実装
Heliumエンジンの設計と実装
DADA246
Cloud Formation Best Practice
Cloud Formation Best Practice
yutamuramot
C11,12 SQL Server 2012 Performance Tuning by Yukio Kumazawa
C11,12 SQL Server 2012 Performance Tuning by Yukio Kumazawa
Insight Technology, Inc.
Awsのインフラをデザインパターン駆使して設計構築
Awsのインフラをデザインパターン駆使して設計構築
Monstar Lab Inc.
UnicastWS vol.2
UnicastWS vol.2
Unicast Inc.
AWS Black Belt Tech シリーズ 2015 - AWS CloudFormation
AWS Black Belt Tech シリーズ 2015 - AWS CloudFormation
Amazon Web Services Japan
オープンソースのクラウド基盤 CloudStackによるIaaS構築入門 @OSC 2013 Nagoya
オープンソースのクラウド基盤 CloudStackによるIaaS構築入門 @OSC 2013 Nagoya
Satoshi Shimazaki
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
fukuoka.ex
Embulk 20150411
Embulk 20150411
Hiroshi Nakamura
Ähnlich wie 発表資料20140318
(20)
Amazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズ
20170413 aws–windows users meetup
20170413 aws–windows users meetup
Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd edition
scala+liftで遊ぼう
scala+liftで遊ぼう
130329 04
130329 04
20130329 rtm4
20130329 rtm4
あの日見たMVCを僕たちはまだ知らない for RoR
あの日見たMVCを僕たちはまだ知らない for RoR
これから始めるAzure Kubernetes Service入門
これから始めるAzure Kubernetes Service入門
はじめてのASP.NET MVC5
はじめてのASP.NET MVC5
KLabのチャットシステム インフラ変遷
KLabのチャットシステム インフラ変遷
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
Heliumエンジンの設計と実装
Heliumエンジンの設計と実装
Cloud Formation Best Practice
Cloud Formation Best Practice
C11,12 SQL Server 2012 Performance Tuning by Yukio Kumazawa
C11,12 SQL Server 2012 Performance Tuning by Yukio Kumazawa
Awsのインフラをデザインパターン駆使して設計構築
Awsのインフラをデザインパターン駆使して設計構築
UnicastWS vol.2
UnicastWS vol.2
AWS Black Belt Tech シリーズ 2015 - AWS CloudFormation
AWS Black Belt Tech シリーズ 2015 - AWS CloudFormation
オープンソースのクラウド基盤 CloudStackによるIaaS構築入門 @OSC 2013 Nagoya
オープンソースのクラウド基盤 CloudStackによるIaaS構築入門 @OSC 2013 Nagoya
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
Elixir入門「第3回:Phoenix 1.2で高速Webアプリ & REST APIをサクッと書いてみる」【旧版】※新版あります
Embulk 20150411
Embulk 20150411
発表資料20140318
1.
Crafting Rails4 Application Chapter 3.
Retrieving View Templates from Custom Stores
2.
この章でなにするのか • テンプレート管理システムを開発していきながらActionView::Render の理解を深める。 • templateの保存先をfilesystemからdatabaseに切り替え、template のCRUDを実装する •
resolverの実装 railsでも実装されているresolverを実装することでtemplateがどの ように解析されているのかを理解する。 • CmsControllerの開発 applicationControllerの継承した上で汎用的なtemplateを返す Controllerを開発する。
3.
3.1 Revisiting the Rendering
Stack • まずは埋め込まれたrubyコードを実行可能にする。 • Rails controllerとviewで共有される lookup_contextにはtemplateを見つけるのに必要 な情報が含まれている。 • railsではデフォルトでview_pathを提供している。 例: app/controllers/users#indexならば app/views/index.html.erbなど
4.
• イメージだとこれ
5.
以前実装した MailForm::Notifier • view_pathを追加することで default views_pathからtemplateを探索 =>
lib/viewsを探索する。この順番でtemplate を探す
6.
• テンプレート管理システムを作るので
7.
The Resolver API •
templateを返すメソッドfind_all() cacheになければ、ブロックが返されるキャッ シュメカニズム
8.
ActionView::Resolver
9.
• テンプレートを取り出すために SqlTemplate::Resolverを作る • イメージに加えるとこんな感じ
10.
SqlTemplateTest
11.
自作SqlTemplate::Resolver • find_all()はActionViewを返す。 • virtual_pathにテンプレートのpathを指定 •
sourceはdatabaseに保存しているテンプレートボ ディ • テンプレートにはidを付与(ymlにidタグを追加) • i18n.t( message )ではなく、users.index.message
12.
sql_template.yml • ymlをdatabaseとして活用している。 • idを付与
13.
• UserのCRUDの追加 • /usersではlayoutのtemplate参照先がfile
systemで bodyがdatabaseから参照される
14.
Userが参照するtemplateを fixtureに移動する。
15.
• cacheは初期化の際に作成され、インスタンス変数 @cached • Rails.application.config.cache_classes
= trueの ときにresolverはテンプレートを保存 • キャッシュのクリアはclear_cache() • templateのvalues, cache, prefix, name,localeで貯 蔵する。 productionにおけるtemplate 検索の速度
16.
find_all()の引数によるcache 例 • 3つともに振る舞いは期待通りだけど、パフォー マンスに違いがでる。
17.
irbで軽くHashの操作 • undef_method :hashによりhashに保存するこ とができない。
18.
hashの操作イメージ
19.
Hashの実験1 • hash[:a] =
1 => 1 • :a.hash => 1112200030795538893 • hash[:b] = 2 => 2 • :b.hash => 2185038335961141261 • :a.eql?(:a) => true # valueが返される • :a.eql?(:b) => false # hash[:a]のvalueは返されない。 => このままeql?を繰り返して見つからなければnil
20.
Hashの実験2 • hash =
{} # Hash.newと同様 • object = Obejct.new => #<Object:0x007fb015155b90> • hash[object] = 1 • hash[object] => 1 • def object.hash; 123; end • hash[object] => nil • hash => {#<Object:0x007fb015155b90> => 1} !
21.
Hash • rubyでは、Object#hash()をキーとして蓄え る。この整数値を利用して比較する。
22.
3つのHashのパフォーマンス テスト
23.
ActionViewのcached() • パフォーマンステストの結果によりHashの入れ 子がもっとも早いことがわかる。 • @cached[key][prefix][name][partial][locals] =>
20倍の早さの差がでている。
24.
cacheの破棄 • データが作成・更新されるときにclear_cache() を呼び出す。
25.
clear_cache()の実装
26.
clear_cache()の実装2 • 保存した際に、instance.claer_cacheを実行す る。
27.
cacheの注意点 • resolver instanceがcacheをstoreしているの で、databaseのtemplateを追加したり更新する たびに全てのSqlTemplate::Resovler
instance とclear_cache()の実行を監視する必要がある。
28.
• 対策 • redis,
memcachedなどのKVSを利用する。 • キャッシュを破棄したい際にinstanceに通知を 出す。 • config.action_view.cache_template_loading = falseにする
29.
• config.action_view.cache_template_loading = falseにする •
* テンプレートキャッシュが使用不可になる が,templateのupdated_atとresolverがもつ日 時と比較して、resolverより新しければテンプ レートを変換するようにしています。
30.
ありがとうございまし た。
Jetzt herunterladen