Soumettre la recherche
Mettre en ligne
テンプレート・エンジンVelocity
•
Télécharger en tant que PPTX, PDF
•
1 j'aime
•
2,719 vues
隆行 神戸
Suivre
Java ツール勉強会資料。テンプレートエンジンVelocityの紹介。
Lire moins
Lire la suite
Logiciels
Signaler
Partager
Signaler
Partager
1 sur 16
Télécharger maintenant
Recommandé
XMPPクライアント・プログラミング
XMPPクライアント・プログラミング
隆行 神戸
JMeterをWebでしか設定できないサーバの設定自動化に使う
JMeterをWebでしか設定できないサーバの設定自動化に使う
隆行 神戸
XMPPの紹介
XMPPの紹介
隆行 神戸
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
Shohei Hido
Antプログラミング(1) - プラグイン
Antプログラミング(1) - プラグイン
隆行 神戸
Tensor flow勉強会 (ayashiminagaranotensorflow)
Tensor flow勉強会 (ayashiminagaranotensorflow)
tak9029
Pythonによる画像処理について
Pythonによる画像処理について
Yasutomo Kawanishi
言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo
Shuyo Nakatani
Recommandé
XMPPクライアント・プログラミング
XMPPクライアント・プログラミング
隆行 神戸
JMeterをWebでしか設定できないサーバの設定自動化に使う
JMeterをWebでしか設定できないサーバの設定自動化に使う
隆行 神戸
XMPPの紹介
XMPPの紹介
隆行 神戸
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
Shohei Hido
Antプログラミング(1) - プラグイン
Antプログラミング(1) - プラグイン
隆行 神戸
Tensor flow勉強会 (ayashiminagaranotensorflow)
Tensor flow勉強会 (ayashiminagaranotensorflow)
tak9029
Pythonによる画像処理について
Pythonによる画像処理について
Yasutomo Kawanishi
言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo
Shuyo Nakatani
🍻(Beer Mug)の読み方を考える(mecab-ipadic-NEologdのUnicode 絵文字対応)
🍻(Beer Mug)の読み方を考える(mecab-ipadic-NEologdのUnicode 絵文字対応)
Toshinori Sato
Development and Experiment of Deep Learning with Caffe and maf
Development and Experiment of Deep Learning with Caffe and maf
Kenta Oono
High performance python computing for data science
High performance python computing for data science
Takami Sato
fastTextの実装を見てみた
fastTextの実装を見てみた
Yoshihiko Shiraki
14対話bot発表資料
14対話bot発表資料
Keiichirou Miyamoto
Pyconjp2016 pyftplib
Pyconjp2016 pyftplib
Shinya Okano
人工知能ハンズオン
人工知能ハンズオン
yaju88
Tensor flow勉強会3
Tensor flow勉強会3
tak9029
実社会・実環境におけるロボットの機械学習
実社会・実環境におけるロボットの機械学習
Kuniyuki Takahashi
S18 t0 introduction
S18 t0 introduction
Takeshi Akutsu
PHP でファイルシステムを作ろう
PHP でファイルシステムを作ろう
shinjiigarashi
TensorFlowによるFizz Buzz
TensorFlowによるFizz Buzz
yaju88
形態素解析器の比較できるPythonパッケージつくった話
形態素解析器の比較できるPythonパッケージつくった話
Kensuke Mitsuzawa
BERT の解剖学: interpret-text による自然言語処理 (NLP) モデル解釈
BERT の解剖学: interpret-text による自然言語処理 (NLP) モデル解釈
順也 山口
S15 t0 introduction
S15 t0 introduction
Takeshi Akutsu
bottle.pyをつかったチャットアプリ作成チュートリアル
bottle.pyをつかったチャットアプリ作成チュートリアル
Satoshi Yamada
Pythonで業務改善をしたときにあった問題(ライト版)
Pythonで業務改善をしたときにあった問題(ライト版)
Satoshi Yamada
プログラミング言語とシステムデザイン
プログラミング言語とシステムデザイン
Tsutomu Yano
画像処理でのPythonの利用
画像処理でのPythonの利用
Yasutomo Kawanishi
S16 t1 python学習奮闘記#6
S16 t1 python学習奮闘記#6
Takeshi Akutsu
テンプレートエンジンの話 #jjug
テンプレートエンジンの話 #jjug
Yusuke Yamamoto
オレオレ言語実装に役立つプル型ASTウォーカーAPI
オレオレ言語実装に役立つプル型ASTウォーカーAPI
隆行 神戸
Contenu connexe
Tendances
🍻(Beer Mug)の読み方を考える(mecab-ipadic-NEologdのUnicode 絵文字対応)
🍻(Beer Mug)の読み方を考える(mecab-ipadic-NEologdのUnicode 絵文字対応)
Toshinori Sato
Development and Experiment of Deep Learning with Caffe and maf
Development and Experiment of Deep Learning with Caffe and maf
Kenta Oono
High performance python computing for data science
High performance python computing for data science
Takami Sato
fastTextの実装を見てみた
fastTextの実装を見てみた
Yoshihiko Shiraki
14対話bot発表資料
14対話bot発表資料
Keiichirou Miyamoto
Pyconjp2016 pyftplib
Pyconjp2016 pyftplib
Shinya Okano
人工知能ハンズオン
人工知能ハンズオン
yaju88
Tensor flow勉強会3
Tensor flow勉強会3
tak9029
実社会・実環境におけるロボットの機械学習
実社会・実環境におけるロボットの機械学習
Kuniyuki Takahashi
S18 t0 introduction
S18 t0 introduction
Takeshi Akutsu
PHP でファイルシステムを作ろう
PHP でファイルシステムを作ろう
shinjiigarashi
TensorFlowによるFizz Buzz
TensorFlowによるFizz Buzz
yaju88
形態素解析器の比較できるPythonパッケージつくった話
形態素解析器の比較できるPythonパッケージつくった話
Kensuke Mitsuzawa
BERT の解剖学: interpret-text による自然言語処理 (NLP) モデル解釈
BERT の解剖学: interpret-text による自然言語処理 (NLP) モデル解釈
順也 山口
S15 t0 introduction
S15 t0 introduction
Takeshi Akutsu
bottle.pyをつかったチャットアプリ作成チュートリアル
bottle.pyをつかったチャットアプリ作成チュートリアル
Satoshi Yamada
Pythonで業務改善をしたときにあった問題(ライト版)
Pythonで業務改善をしたときにあった問題(ライト版)
Satoshi Yamada
プログラミング言語とシステムデザイン
プログラミング言語とシステムデザイン
Tsutomu Yano
画像処理でのPythonの利用
画像処理でのPythonの利用
Yasutomo Kawanishi
S16 t1 python学習奮闘記#6
S16 t1 python学習奮闘記#6
Takeshi Akutsu
Tendances
(20)
🍻(Beer Mug)の読み方を考える(mecab-ipadic-NEologdのUnicode 絵文字対応)
🍻(Beer Mug)の読み方を考える(mecab-ipadic-NEologdのUnicode 絵文字対応)
Development and Experiment of Deep Learning with Caffe and maf
Development and Experiment of Deep Learning with Caffe and maf
High performance python computing for data science
High performance python computing for data science
fastTextの実装を見てみた
fastTextの実装を見てみた
14対話bot発表資料
14対話bot発表資料
Pyconjp2016 pyftplib
Pyconjp2016 pyftplib
人工知能ハンズオン
人工知能ハンズオン
Tensor flow勉強会3
Tensor flow勉強会3
実社会・実環境におけるロボットの機械学習
実社会・実環境におけるロボットの機械学習
S18 t0 introduction
S18 t0 introduction
PHP でファイルシステムを作ろう
PHP でファイルシステムを作ろう
TensorFlowによるFizz Buzz
TensorFlowによるFizz Buzz
形態素解析器の比較できるPythonパッケージつくった話
形態素解析器の比較できるPythonパッケージつくった話
BERT の解剖学: interpret-text による自然言語処理 (NLP) モデル解釈
BERT の解剖学: interpret-text による自然言語処理 (NLP) モデル解釈
S15 t0 introduction
S15 t0 introduction
bottle.pyをつかったチャットアプリ作成チュートリアル
bottle.pyをつかったチャットアプリ作成チュートリアル
Pythonで業務改善をしたときにあった問題(ライト版)
Pythonで業務改善をしたときにあった問題(ライト版)
プログラミング言語とシステムデザイン
プログラミング言語とシステムデザイン
画像処理でのPythonの利用
画像処理でのPythonの利用
S16 t1 python学習奮闘記#6
S16 t1 python学習奮闘記#6
En vedette
テンプレートエンジンの話 #jjug
テンプレートエンジンの話 #jjug
Yusuke Yamamoto
オレオレ言語実装に役立つプル型ASTウォーカーAPI
オレオレ言語実装に役立つプル型ASTウォーカーAPI
隆行 神戸
ゲームマップのためのグラフAPIの設計
ゲームマップのためのグラフAPIの設計
隆行 神戸
Mustache入門
Mustache入門
ina job
Thymeleafでハマったこと
Thymeleafでハマったこと
eiryu
Thymeleafのすすめ
Thymeleafのすすめ
eiryu
Kancolle
Kancolle
givemegohan
En vedette
(7)
テンプレートエンジンの話 #jjug
テンプレートエンジンの話 #jjug
オレオレ言語実装に役立つプル型ASTウォーカーAPI
オレオレ言語実装に役立つプル型ASTウォーカーAPI
ゲームマップのためのグラフAPIの設計
ゲームマップのためのグラフAPIの設計
Mustache入門
Mustache入門
Thymeleafでハマったこと
Thymeleafでハマったこと
Thymeleafのすすめ
Thymeleafのすすめ
Kancolle
Kancolle
Similaire à テンプレート・エンジンVelocity
Issueの書き方と伝え方
Issueの書き方と伝え方
Rina Fukuda
Machine Learning Bootstrap
Machine Learning Bootstrap
Takahiro Kubo
2016-11-11 UMTP モデリングフォーラム2016 DDD実践のコツとazureによるモデル実装
2016-11-11 UMTP モデリングフォーラム2016 DDD実践のコツとazureによるモデル実装
貴志 上坂
優れた問いを見つける(中京大学講演)
優れた問いを見つける(中京大学講演)
cvpaper. challenge
TOPPERSプロジェクト紹介 OSC2016京都
TOPPERSプロジェクト紹介 OSC2016京都
Takuya Azumi
.net micro framework for toppers
.net micro framework for toppers
Kiyoshi Ogawa
ペアワークで持続的に成長するチームになろう!
ペアワークで持続的に成長するチームになろう!
Shinya Nakajima
ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業
ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業
株式会社 オープンソース・ワークショップ
2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業
2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業
株式会社 オープンソース・ワークショップ
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて
Masahito Zembutsu
ドライバへのETWの埋め込み
ドライバへのETWの埋め込み
Study Group by SciencePark Corp.
SIer出身のエンジニアが 機械学習を取り入れた ASPサービス開発で学んだこと
SIer出身のエンジニアが 機械学習を取り入れた ASPサービス開発で学んだこと
yagizo
TensorFlowで音声認識
TensorFlowで音声認識
祐太 上岡
エンジニア採用ヤバイ! PHPカンファレンス関西 懇親会LT
エンジニア採用ヤバイ! PHPカンファレンス関西 懇親会LT
Tomoyuki Sugita
新しいソフトウェアエンジニアリングのためのパターンランゲージに向けて
新しいソフトウェアエンジニアリングのためのパターンランゲージに向けて
Hironori Washizaki
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料
BrainPad Inc.
Tableau人材を育てるには? ~truestar文化に学ぶエフォートレスな勉強会のすゝめ~
Tableau人材を育てるには? ~truestar文化に学ぶエフォートレスな勉強会のすゝめ~
AkiKusaka
Toppers sspを用いた教育訓練カリキュラムカーネルの自作およびカスタマイズ
Toppers sspを用いた教育訓練カリキュラムカーネルの自作およびカスタマイズ
Kazuhiro Takahashi
20200115SaaS研究会LT
20200115SaaS研究会LT
Ikumi Itokawa
IkaLog_FPGAStartup1
IkaLog_FPGAStartup1
Takeshi HASEGAWA
Similaire à テンプレート・エンジンVelocity
(20)
Issueの書き方と伝え方
Issueの書き方と伝え方
Machine Learning Bootstrap
Machine Learning Bootstrap
2016-11-11 UMTP モデリングフォーラム2016 DDD実践のコツとazureによるモデル実装
2016-11-11 UMTP モデリングフォーラム2016 DDD実践のコツとazureによるモデル実装
優れた問いを見つける(中京大学講演)
優れた問いを見つける(中京大学講演)
TOPPERSプロジェクト紹介 OSC2016京都
TOPPERSプロジェクト紹介 OSC2016京都
.net micro framework for toppers
.net micro framework for toppers
ペアワークで持続的に成長するチームになろう!
ペアワークで持続的に成長するチームになろう!
ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業
ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業
2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業
2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて
ドライバへのETWの埋め込み
ドライバへのETWの埋め込み
SIer出身のエンジニアが 機械学習を取り入れた ASPサービス開発で学んだこと
SIer出身のエンジニアが 機械学習を取り入れた ASPサービス開発で学んだこと
TensorFlowで音声認識
TensorFlowで音声認識
エンジニア採用ヤバイ! PHPカンファレンス関西 懇親会LT
エンジニア採用ヤバイ! PHPカンファレンス関西 懇親会LT
新しいソフトウェアエンジニアリングのためのパターンランゲージに向けて
新しいソフトウェアエンジニアリングのためのパターンランゲージに向けて
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料
Tableau人材を育てるには? ~truestar文化に学ぶエフォートレスな勉強会のすゝめ~
Tableau人材を育てるには? ~truestar文化に学ぶエフォートレスな勉強会のすゝめ~
Toppers sspを用いた教育訓練カリキュラムカーネルの自作およびカスタマイズ
Toppers sspを用いた教育訓練カリキュラムカーネルの自作およびカスタマイズ
20200115SaaS研究会LT
20200115SaaS研究会LT
IkaLog_FPGAStartup1
IkaLog_FPGAStartup1
テンプレート・エンジンVelocity
1.
テンプレート・エンジンVelocity 2016/04/22 Javaツール勉強会資料 QTS /
ISIT 神戸隆行(かんど たかゆき)
2.
自己紹介 - 全般 2016/04/22Javaツール勉強会2
九州先端科学技術研究所(ISIT)の方から来ました 職場はそこだけど所属はQuoliarc Technology Solutions Ltd. チーフソフトウェアエンジニア(…といっても従業員は1人、院の指導教官 がCTO) 数学ソフトウェア(数値解析、数式処理)、プログラム最適化、動的再構 成可能プロセッサ向けコンパイラと来て今はPTaaSを作っています 連絡先: Twitter: @ChihiroShiiji Facebook: takayuki_kando mail: kando@nerimadors.or.jp 趣味プロジェクト: TRPGオンラインセッションツールの開発 趣味: イラスト描き、コスプレ?
3.
自己紹介 - Velocityとの関わり 2016/04/22Javaツール勉強会3
PTaaS (Platform for TaaS) 開発ツールをネットワークのサービスとして提供する(Tool as a Service)ためのプラットフォーム 技術的には「XMPPベースのマルチユーザ遠隔分散ビルド」 システム Velocityの用途 分散ビルドシステムがツールのために動的に起動するVM設 定用シェルスクリプトの生成 テスト環境用Antファイルの生成
4.
本日のお題 4 テンプレート・エンジンの位置づけと使いどころ Velocityの紹介
サンプル Ant(XML)ファイルの生成 テンプレートをリソース内に同梱する パラメータの受け渡し パラメータの埋め込み 初期化シェルスクリプトの生成 制御命令の使用例 Velocityの構文の紹介 嵌りどころ 2016/04/22Javaツール勉強会
5.
テキスト・ファイルの生成 5 プログラムの持つデータからテキストファイルを作る 用途
データ受け渡しや保存のため テキストにしておくと検証やテストデータの作成が簡単 様々な環境の間でデータ交換ができる 可視化のため人間可読な形式で出力する 例: 近年のWebアプリケーションで生成する機会は多い HTML、CSS、XML、YAML、JSON 伝統的には言語処理系の出力段で必要とされてきた コンパイラ(アセンブリ・コード出力) トランスレータ(変換後ソースコードの出力) マクロ・プロセッサ(TeXやCプリプロセッサの展開後出力) 2016/04/22Javaツール勉強会
6.
ファイルの生成の方式(1) 2016/04/22Javaツール勉強会6 ツリー構造とプリティプリンタ 適用局面:
構造が前もってできている 例: XML/HTML文書のDOMとプリティプリンタ MapやListによるオブジェクト・ツリーとYAMLやJSONライブラリの出力メソッド イベント投入方式(仮名) 適用局面: 構造は有るがファイルの全貌が見えない 例: 各種ロガー XML Pull parserのプリティプリンタ テンプレート方式 適用局面: 構造は気にせずテンプレートとなる文書の部分改変で作成できる 例: Velocity JSP(Java Server Page)
7.
ファイルの生成の方式(2) 2016/04/22Javaツール勉強会7 前頁の組み合わせもある ツリー構造の出力の実装にイベント投入方式や微小なテンプ レート方式を利用するようなこともある
String.format()は微小なテンプレートと見ることもできる
8.
代表的なファイルの生成の方式と得失 ツリー構造とプリティプリンタ テンプレート・エンジン 8 プログラム内のデータが持 つオブジェクトのツリー構造 とそれを構造化文書として 整形出力する出力ルーチン (プリティプリンタ)
得失 ツリー構造がある場合 様々な構造をガッツリ作る場 合に利点 ツリー構造を組み立てるのが 結構手間 「テンプレート」となる文書の 一部に値を埋め込んだり、 条件分岐や反復を埋め込 んで文書の一部を条件に応 じて変形して出力する 得失 ツリー構造がない場合でも利 用し易い パラメタの埋め込みなど一部 だけを改変する場合に特に便 利 生成するごとに構造が大きく 変わる場合には却って手間 2016/04/22Javaツール勉強会
9.
Apache Velocity 9 Javaで割と古参の汎用テンプレートエンジン
公式サイト Apache Velocity Site - The Apache Velocity Project http://velocity.apache.org/ 2016/04/21現在、最新版は1.7(2010年) Java SE 8でももちろん動く 明記されてないようだがJava SE 4以上が動作条件ではないか? 依存ライブラリ Apache Commons Collections https://commons.apache.org/proper/commons-collections/ Lang https://commons.apache.org/proper/commons-lang/ 2016/04/22Javaツール勉強会
10.
Velocity Engine Velocityの処理の流れ 2016/04/22Javaツール勉強会10 VTLで記述される テンプレート VelocityContex t (実態は <名前→オブ ジェクト>マッ プ) Template (コンパイル済 テンプレート) マージ処理 出力 テンプレート コンパイラ プログラムから データ供給
11.
VTL(Velocity Template Language)の例 11 <HTML> <BODY> Hello
$customer.Name! <table> #foreach( $mud in $mudsOnSpecial ) #if ( $customer.hasPurchased($mud) ) <tr> <td> $flogger.getPromo( $mud ) </td> </tr> #end #end </table> <!-- 後略 --> Apache Velocity User Guide http://velocity.apache.org/engine/devel/user-guide.html#What_is_Velocity より 2016/04/22Javaツール勉強会 • #~(改行)は処理命令(制御文など) • ##~(改行)と#*~*#はコメント • $名前、${名前}はオブジェクト参照 • 処理命令と参照以外はそのまま出力される
12.
サンプル1 Ant(XML)ファイルの生成 2016/04/22Javaツール勉強会12 Gist: https://gist.github.com/TakayukiKando/e6a49a4c5ea7e6 95a5eb03757ef2458d
利用機能 テンプレートをリソース内に同梱する パラメータの受け渡し パラメータの埋め込み 利用動機 極一部のパラメタしか置き変えない 将来置き換えるパラメタは増えるかも
13.
サンプル2 初期化シェルスクリプトの生成 2016/04/22Javaツール勉強会13 Gist: https://gist.github.com/TakayukiKando/cc504de4e81b273af12 59ed2ea6fb3b4
利用機能 行コメント## 制御命令(#set, #parse, #if, #foreach) 参照オブジェクトのメソッド呼び出し 利用動機 パラメータが変っても変わらない決まり切った構文が結構多い 最初は自前でスクリプト生成Factory Objectパターンで実装していたが メンテナンスが全然楽でなかったので移行 OS固有の仕組みをテンプレートにカプセル化 テンプレート差し替えで複数のOSに対応できる 最初はFactory Objectのパラメタにしようと思っていたがパラメタだけで 済まなかった
14.
Velocityハマりポイント 14 Apache Commonsライブラリに依存している
collectionsとlang 変数はVelocityContextを通じて明示的に渡す必要があ る 渡し忘れに注意 オブジェクトのプロパティ参照構文がオブジェクトのフィー ルド参照に見えるが実際はgetter呼び出しの略記 構文が似ているので油断しているとついフィールドを参照しよ うとしてしまう 2016/04/22Javaツール勉強会
15.
まとめ 15 テンプレート・エンジンの位置づけと使いどころ 構造がない文書
構造がある範囲で一定している文書 改変が一部だけに限られる文書 Velocityの紹介 サンプル 1. Ant(XML)ファイルの生成 テンプレートをリソース内に同梱する パラメータの受け渡し パラメータの埋め込み 2. 初期化シェルスクリプトの生成 制御命令の使用例 Velocityの構文の紹介 ハマりどころ 2016/04/22Javaツール勉強会
16.
参考文献 16 User Guide(Ver.1.7)
http://velocity.apache.org/engine/devel/user-guide.html VTL Reference(Ver.1.7) http://velocity.apache.org/engine/devel/vtl-reference-guide.html Velocity | TECHSCORE(テックスコア) http://www.techscore.com/tech/Java/ApacheJakarta/Velocity/in dex/ ユーザ・ガイド(Ver.1.4)日本語訳 http://www.jajakarta.org/velocity/velocity-1.4/docs-ja/user- guide.html VTLリファレンス(Ver.1.4)日本語訳 http://www.jajakarta.org/velocity/velocity-1.4/docs-ja/vtl- reference-guide.html 2016/04/22Javaツール勉強会
Télécharger maintenant