Soumettre la recherche
Mettre en ligne
properties, yaml, and me
•
1 j'aime
•
8,078 vues
Y Watanabe
Suivre
*.propertiesと*.ymlと私 JavaCasual#2 at LINE corp , Hikarie, Shibuya
Lire moins
Lire la suite
Internet
Signaler
Partager
Signaler
Partager
1 sur 20
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
IDA ユーザなら知っておくべきマントノン侯爵夫人にモテる 7つの法則
IDA ユーザなら知っておくべきマントノン侯爵夫人にモテる 7つの法則
勇 中津留
Gitを使ったRoute53の管理
Gitを使ったRoute53の管理
Sugawara Genki
GopherJS + Nashorn
GopherJS + Nashorn
Takuya Ueda
Js方眼紙
Js方眼紙
Ryo Sumasu
非ガチ勢「よし、Coffee script使おう!」
非ガチ勢「よし、Coffee script使おう!」
Muyuu Fujita
ランダムにおちるfeature_system spec対策rspec-retry_ex の 紹介
ランダムにおちるfeature_system spec対策rspec-retry_ex の 紹介
Yuya Taki
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
parrotstudio
ZenbackとWordPressのイイ関係
ZenbackとWordPressのイイ関係
Kaori Kotobuki
Recommandé
IDA ユーザなら知っておくべきマントノン侯爵夫人にモテる 7つの法則
IDA ユーザなら知っておくべきマントノン侯爵夫人にモテる 7つの法則
勇 中津留
Gitを使ったRoute53の管理
Gitを使ったRoute53の管理
Sugawara Genki
GopherJS + Nashorn
GopherJS + Nashorn
Takuya Ueda
Js方眼紙
Js方眼紙
Ryo Sumasu
非ガチ勢「よし、Coffee script使おう!」
非ガチ勢「よし、Coffee script使おう!」
Muyuu Fujita
ランダムにおちるfeature_system spec対策rspec-retry_ex の 紹介
ランダムにおちるfeature_system spec対策rspec-retry_ex の 紹介
Yuya Taki
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
parrotstudio
ZenbackとWordPressのイイ関係
ZenbackとWordPressのイイ関係
Kaori Kotobuki
JBUG#2 俺の上司のBacklog使いはヒドイ!
JBUG#2 俺の上司のBacklog使いはヒドイ!
Takahiro Fukushima
第2回ExtJSユーザー事例紹介
第2回ExtJSユーザー事例紹介
Akiyuki Nomura
Ansible meetup201409
Ansible meetup201409
shirou wakayama
じっくりコトコト煮込んだJavaスープ
じっくりコトコト煮込んだJavaスープ
Kazuhiro Serizawa
Frontend Fantasy 〜ミスリルの戦士たち〜
Frontend Fantasy 〜ミスリルの戦士たち〜
Masashi MATSUI
LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介
LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介
Shoken Fujisaki
コミュニティのある風景
コミュニティのある風景
Ryunosuke SATO
Shibuya.rb0921 / ただRubyで使われていないメソッドを削除したい人生だった
Shibuya.rb0921 / ただRubyで使われていないメソッドを削除したい人生だった
Yasuhiro Matsumura
コードに潜むC++の未定義動作達
コードに潜むC++の未定義動作達
Azaika At
Ruby programmer silverの取得に向けて
Ruby programmer silverの取得に向けて
善弘 植木
Kotlinの紹介
Kotlinの紹介
豊明 尾古
Chiba pm#1 - ArangoDB for Perl
Chiba pm#1 - ArangoDB for Perl
Hideaki Ohno
Sphinxを使って本を書こう #pyconjp 2012
Sphinxを使って本を書こう #pyconjp 2012
Takayuki Shimizukawa
IT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipm
鉄次 尾形
DjangoのORMことはじめ
DjangoのORMことはじめ
ko ty
Oss貢献超入門
Oss貢献超入門
Michihito Shigemura
Cocolumberjackの使い方 Ios lt 20140327
Cocolumberjackの使い方 Ios lt 20140327
Ken Haneda
@nukokusa_botを支える技術
@nukokusa_botを支える技術
Joe_noh
Sphinxでまとめる多言語環境APIドキュメント
Sphinxでまとめる多言語環境APIドキュメント
Iosif Takakura
Rubyistのためのkotlin紹介
Rubyistのためのkotlin紹介
豊明 尾古
SCM, CI and Maven Repo
SCM, CI and Maven Repo
Hideaki Ishijima
How to cook lettuce @Java casual
How to cook lettuce @Java casual
Go Hagiwara
Contenu connexe
Tendances
JBUG#2 俺の上司のBacklog使いはヒドイ!
JBUG#2 俺の上司のBacklog使いはヒドイ!
Takahiro Fukushima
第2回ExtJSユーザー事例紹介
第2回ExtJSユーザー事例紹介
Akiyuki Nomura
Ansible meetup201409
Ansible meetup201409
shirou wakayama
じっくりコトコト煮込んだJavaスープ
じっくりコトコト煮込んだJavaスープ
Kazuhiro Serizawa
Frontend Fantasy 〜ミスリルの戦士たち〜
Frontend Fantasy 〜ミスリルの戦士たち〜
Masashi MATSUI
LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介
LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介
Shoken Fujisaki
コミュニティのある風景
コミュニティのある風景
Ryunosuke SATO
Shibuya.rb0921 / ただRubyで使われていないメソッドを削除したい人生だった
Shibuya.rb0921 / ただRubyで使われていないメソッドを削除したい人生だった
Yasuhiro Matsumura
コードに潜むC++の未定義動作達
コードに潜むC++の未定義動作達
Azaika At
Ruby programmer silverの取得に向けて
Ruby programmer silverの取得に向けて
善弘 植木
Kotlinの紹介
Kotlinの紹介
豊明 尾古
Chiba pm#1 - ArangoDB for Perl
Chiba pm#1 - ArangoDB for Perl
Hideaki Ohno
Sphinxを使って本を書こう #pyconjp 2012
Sphinxを使って本を書こう #pyconjp 2012
Takayuki Shimizukawa
IT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipm
鉄次 尾形
DjangoのORMことはじめ
DjangoのORMことはじめ
ko ty
Oss貢献超入門
Oss貢献超入門
Michihito Shigemura
Cocolumberjackの使い方 Ios lt 20140327
Cocolumberjackの使い方 Ios lt 20140327
Ken Haneda
@nukokusa_botを支える技術
@nukokusa_botを支える技術
Joe_noh
Sphinxでまとめる多言語環境APIドキュメント
Sphinxでまとめる多言語環境APIドキュメント
Iosif Takakura
Rubyistのためのkotlin紹介
Rubyistのためのkotlin紹介
豊明 尾古
Tendances
(20)
JBUG#2 俺の上司のBacklog使いはヒドイ!
JBUG#2 俺の上司のBacklog使いはヒドイ!
第2回ExtJSユーザー事例紹介
第2回ExtJSユーザー事例紹介
Ansible meetup201409
Ansible meetup201409
じっくりコトコト煮込んだJavaスープ
じっくりコトコト煮込んだJavaスープ
Frontend Fantasy 〜ミスリルの戦士たち〜
Frontend Fantasy 〜ミスリルの戦士たち〜
LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介
LLプログラマ向けSwift ExtensionsとテストライブラリQuickの紹介
コミュニティのある風景
コミュニティのある風景
Shibuya.rb0921 / ただRubyで使われていないメソッドを削除したい人生だった
Shibuya.rb0921 / ただRubyで使われていないメソッドを削除したい人生だった
コードに潜むC++の未定義動作達
コードに潜むC++の未定義動作達
Ruby programmer silverの取得に向けて
Ruby programmer silverの取得に向けて
Kotlinの紹介
Kotlinの紹介
Chiba pm#1 - ArangoDB for Perl
Chiba pm#1 - ArangoDB for Perl
Sphinxを使って本を書こう #pyconjp 2012
Sphinxを使って本を書こう #pyconjp 2012
IT業界における伝統芸能の継承 #hachiojipm
IT業界における伝統芸能の継承 #hachiojipm
DjangoのORMことはじめ
DjangoのORMことはじめ
Oss貢献超入門
Oss貢献超入門
Cocolumberjackの使い方 Ios lt 20140327
Cocolumberjackの使い方 Ios lt 20140327
@nukokusa_botを支える技術
@nukokusa_botを支える技術
Sphinxでまとめる多言語環境APIドキュメント
Sphinxでまとめる多言語環境APIドキュメント
Rubyistのためのkotlin紹介
Rubyistのためのkotlin紹介
En vedette
SCM, CI and Maven Repo
SCM, CI and Maven Repo
Hideaki Ishijima
How to cook lettuce @Java casual
How to cook lettuce @Java casual
Go Hagiwara
Openjdk 入門してみた話
Openjdk 入門してみた話
Tokuhiro Matsuno
Fluency - Yet another fluent logger
Fluency - Yet another fluent logger
Mitsunori Komatsu
jcmd #javacasual
jcmd #javacasual
Yuji Kubota
Spring Day 2016 springの現在過去未来
Spring Day 2016 springの現在過去未来
Yuichi Hasegawa
Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用
Tokuhiro Matsuno
Spring bootで学ぶ初めてのwebアプリ開発
Spring bootで学ぶ初めてのwebアプリ開発
terahide
アメブロの大規模システム刷新と それを支えるSpring
アメブロの大規模システム刷新と それを支えるSpring
Takuya Hattori
Spring Day 2016 - Web API アクセス制御の最適解
Spring Day 2016 - Web API アクセス制御の最適解
都元ダイスケ Miyamoto
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...
Toshiaki Maki
Spring 5に備えるリアクティブプログラミング入門
Spring 5に備えるリアクティブプログラミング入門
Takuya Iwatsuka
今どきのアーキテクチャ設計戦略 - QCon Tokyo 2016
今どきのアーキテクチャ設計戦略 - QCon Tokyo 2016
Yusuke Suzuki
ドメイン駆動設計の学習曲線とブレークポイント
ドメイン駆動設計の学習曲線とブレークポイント
増田 亨
Mixer2 で作るカスタムテンプレートエンジン #渋谷java
Mixer2 で作るカスタムテンプレートエンジン #渋谷java
Jun Futagawa
The cost of learning - advantage of mixer2
The cost of learning - advantage of mixer2
Y Watanabe
201311 webデザイナとエンジニアのチームワークを加速させるテンプレートエンジンmixer2 devlove現場甲子園
201311 webデザイナとエンジニアのチームワークを加速させるテンプレートエンジンmixer2 devlove現場甲子園
Y Watanabe
20130511 jjug ccc講演 さらばjsp JAXBとmixer2
20130511 jjug ccc講演 さらばjsp JAXBとmixer2
Y Watanabe
Mixer2によるdynamic css sprite 201309第三回渋谷java
Mixer2によるdynamic css sprite 201309第三回渋谷java
Y Watanabe
2013-09 テンプレートエンジンMixer2紹介 HTML5J&JJUG合同勉強会LT
2013-09 テンプレートエンジンMixer2紹介 HTML5J&JJUG合同勉強会LT
Y Watanabe
En vedette
(20)
SCM, CI and Maven Repo
SCM, CI and Maven Repo
How to cook lettuce @Java casual
How to cook lettuce @Java casual
Openjdk 入門してみた話
Openjdk 入門してみた話
Fluency - Yet another fluent logger
Fluency - Yet another fluent logger
jcmd #javacasual
jcmd #javacasual
Spring Day 2016 springの現在過去未来
Spring Day 2016 springの現在過去未来
Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用
Spring bootで学ぶ初めてのwebアプリ開発
Spring bootで学ぶ初めてのwebアプリ開発
アメブロの大規模システム刷新と それを支えるSpring
アメブロの大規模システム刷新と それを支えるSpring
Spring Day 2016 - Web API アクセス制御の最適解
Spring Day 2016 - Web API アクセス制御の最適解
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...
Spring 5に備えるリアクティブプログラミング入門
Spring 5に備えるリアクティブプログラミング入門
今どきのアーキテクチャ設計戦略 - QCon Tokyo 2016
今どきのアーキテクチャ設計戦略 - QCon Tokyo 2016
ドメイン駆動設計の学習曲線とブレークポイント
ドメイン駆動設計の学習曲線とブレークポイント
Mixer2 で作るカスタムテンプレートエンジン #渋谷java
Mixer2 で作るカスタムテンプレートエンジン #渋谷java
The cost of learning - advantage of mixer2
The cost of learning - advantage of mixer2
201311 webデザイナとエンジニアのチームワークを加速させるテンプレートエンジンmixer2 devlove現場甲子園
201311 webデザイナとエンジニアのチームワークを加速させるテンプレートエンジンmixer2 devlove現場甲子園
20130511 jjug ccc講演 さらばjsp JAXBとmixer2
20130511 jjug ccc講演 さらばjsp JAXBとmixer2
Mixer2によるdynamic css sprite 201309第三回渋谷java
Mixer2によるdynamic css sprite 201309第三回渋谷java
2013-09 テンプレートエンジンMixer2紹介 HTML5J&JJUG合同勉強会LT
2013-09 テンプレートエンジンMixer2紹介 HTML5J&JJUG合同勉強会LT
Plus de Y Watanabe
クラウド時代だからSpring-Retryフレームワーク
クラウド時代だからSpring-Retryフレームワーク
Y Watanabe
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
Y Watanabe
サーバーサイドな人がフロントエンド技術と仲良くするはじめの一歩
サーバーサイドな人がフロントエンド技術と仲良くするはじめの一歩
Y Watanabe
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田
Y Watanabe
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所
Y Watanabe
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
Y Watanabe
俺のコードがどこでつかわれているのかわからない問題 あるいはマイナーOSSの生存戦略
俺のコードがどこでつかわれているのかわからない問題 あるいはマイナーOSSの生存戦略
Y Watanabe
テストゼロからイチに進むための戦略と戦術
テストゼロからイチに進むための戦略と戦術
Y Watanabe
テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話
テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話
Y Watanabe
渋谷java−あなたのプロジェクトで気軽にjavaをバージョンアップするために必要なこと
渋谷java−あなたのプロジェクトで気軽にjavaをバージョンアップするために必要なこと
Y Watanabe
Javaでやってみる The Twelve Factor App JJUG-CCC 2014 Fall 講演資料
Javaでやってみる The Twelve Factor App JJUG-CCC 2014 Fall 講演資料
Y Watanabe
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
Y Watanabe
Seleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトーク
Seleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトーク
Y Watanabe
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
Y Watanabe
Plus de Y Watanabe
(15)
クラウド時代だからSpring-Retryフレームワーク
クラウド時代だからSpring-Retryフレームワーク
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
サーバーサイドな人がフロントエンド技術と仲良くするはじめの一歩
サーバーサイドな人がフロントエンド技術と仲良くするはじめの一歩
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所
Webエンジニアがスタートダッシュをキメるためのローカル開発環境の勘所
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
俺のコードがどこでつかわれているのかわからない問題 あるいはマイナーOSSの生存戦略
俺のコードがどこでつかわれているのかわからない問題 あるいはマイナーOSSの生存戦略
テストゼロからイチに進むための戦略と戦術
テストゼロからイチに進むための戦略と戦術
テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話
テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話
渋谷java−あなたのプロジェクトで気軽にjavaをバージョンアップするために必要なこと
渋谷java−あなたのプロジェクトで気軽にjavaをバージョンアップするために必要なこと
Javaでやってみる The Twelve Factor App JJUG-CCC 2014 Fall 講演資料
Javaでやってみる The Twelve Factor App JJUG-CCC 2014 Fall 講演資料
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
Seleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトーク
Seleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトーク
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
properties, yaml, and me
1.
*.properties と *.yml
と 私。 Java Casual #2 LINE Corp@渋谷ヒカリエ 2016-11-07 @nabedge わたなべ 1
2.
Who ? ● わたなべ ○
twitter: @nabedge ○ (株)ビズリーチ ○ Mixer2というOSSのテンプレートエンジンを作ってます ● 12月3日(Sat)のJJUG-CCC 2016 Fall で登壇します。 ○ 「俺のコードがどこで使われているのかわからない 問題 - あるいはマイナーOSSの生存戦略」 2
3.
Javaエンジニア 絶賛募集中 www.bizreach.co.jp/recruit 3
4.
本題 4
5.
ある日見たプルリクエスト 5
6.
● native2asciiってやつ。 非ASCII文字をユニコードエスケープ表現に変換したもの。 ● そのブランチを手元にcheckoutして IDEで見ればいいじゃんってだけの話かもしれないけどさ。 6
7.
別な日に見たプルリクエスト 7
8.
何が起きた? ● Aさんがeclipseでメンテしていたpropertiesファイル ● BさんがIntelliJ
IDEAで開いて閉じて。 ● eclipseのプロパティエディタプラグインは 小文字でエンコードする ● IntelliJのエディタの透過native2ascii設定は 大文字でエンコードする ● デコードされる文字は同じなのでアプリの挙動に問題はない 8
9.
アンケート:普段使っているIDEは? ● IntelliJ IDEA ○
透過的にnative2asciiする設定はオン?オフ? ■ (ちなみにデフォルトはオフのはず) ● Eclipse ○ プロパティエディタプラグイン入ってる? 9
10.
どうする? ● IntelliJ IDEAが小文字でエンコードするように設定を追加する ○
IntelliJなメンバー全員がやらないと意味がない。 ○ githubのプルリク画面でのレビューがしづらい問題は残る 10
11.
どうする? ● propertiesファイルをUTF-8で書く。 つまりnative2asciiしない。 ○ githubのプルリク画面でレビューしやすくなる! ○
Eclipse使っているメンバー全員がプロパティエディタプラグイ ンをオフる必要あり。 ○ そもそもJava6以降からnative2asciiは不要ですよ奥さん 11
12.
まだ*.propertiesファイルで消耗してるの? 俺たちは、Java言語とIDEの、 それぞれの歴史的な事情に振り回されているだけだ。 12
13.
YAML Ain’t a
Markup Language 13
14.
YAML Ain’t a
Markup Language 14
15.
*.propertiesから*.yamlへの書き換え 1. foo.bar=baz を foo.bar: baz に書き換えて、ファイルの拡張子を*.ymlか*.yamlにする 2.
あとは SnameYaml YamlPropertiesFactoryBean (Spring使ってる場合) でググる 15
16.
16 java.util.Properties ではなく java.util.ResourceBundle として使いたいケースだったら? 例: messages.properties と
messages_ja.properties を yaml形式にしたい Locale, Properties, ResourceBundle
17.
長くなるのでヒントだけ。 1. Java6以降での国際化リソースの記述方法は次の二つ a. *.propertiesファイルで表現する foo.propertiesと
foo_[ロケール名].properties b. java.util.ListResourceBundleの派生クラスとして Javaクラスで表現する 2. ListResourceBundleを継承したクラスの中で、SnakeYamlと かで*.ymlを読めるようにしておく 17
18.
長くなるのでヒントだけ。 // 英語ロケールの場合の例. クラス名にロケールをつけるのがポイント. public
class FooProperties _en extends AbstractYamlResourceBundle { public FooProperties _en() { super("foo_en"); //これでfoo_en.ymlを読む } } // ロケールを指定してリソースバンドルを取得 ResourceBundle.Control control = ResourceBundle.Control.getControl(ResourceBundle.Control .FORMAT_CLASS); ResourceBundle rb_english = ResourceBundle.getBundle( com.example.FooProperties.class .getName(), Locale.US, control ); 18 java.util.ListResourceBundle を継承した共通クラスを自作
19.
まとめ ● 10年も前からnative2asciiは不要のはず。 ● しかし、道具(IDE)、知識、意識が置き去りのまま ●
っていうか、まだ*.propertiesファイルで消耗してるの? ● いっそのこと *.yml の方が今風ですよね ● java.util.Propertiesにするのは簡単 ● java.util.ResourceBundleにするのもそう難しくない 19
20.
ご清聴ありがとうございました ナウでヤングなXHTMLテンプレートエンジン Mixer2 も、よろしくね。http://mixer2.org 20
Télécharger maintenant