Submit Search
Upload
20120421中国gtug
•
0 likes
•
577 views
Yusuke Sato
Follow
20120421 第13回中国GTUG@岡山 発表資料
Read less
Read more
Report
Share
Report
Share
1 of 28
Download now
Download to read offline
Recommended
やってみた -URL外形監視-
やってみた -URL外形監視-
Joe_noh
Do not use document.write
Do not use document.write
Haruki Okada
Jaws大分
Jaws大分
Yuki Nakatake
CasualなMongoDBのサービス運用Tips
CasualなMongoDBのサービス運用Tips
Naoki Sega
LATCH Need-to-Know 2015
LATCH Need-to-Know 2015
Children’s Trust of South Carolina
明日から使えるgradle
明日から使えるgradle
kimukou_26 Kimukou
Jtf13 ossジョブ管理システムによる運用自動化事例
Jtf13 ossジョブ管理システムによる運用自動化事例
OSSラボ株式会社
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624
Yusuke Suzuki
Recommended
やってみた -URL外形監視-
やってみた -URL外形監視-
Joe_noh
Do not use document.write
Do not use document.write
Haruki Okada
Jaws大分
Jaws大分
Yuki Nakatake
CasualなMongoDBのサービス運用Tips
CasualなMongoDBのサービス運用Tips
Naoki Sega
LATCH Need-to-Know 2015
LATCH Need-to-Know 2015
Children’s Trust of South Carolina
明日から使えるgradle
明日から使えるgradle
kimukou_26 Kimukou
Jtf13 ossジョブ管理システムによる運用自動化事例
Jtf13 ossジョブ管理システムによる運用自動化事例
OSSラボ株式会社
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624
Yusuke Suzuki
Hadoopデータ基盤とMulti-CloudなML基盤への取り組みの紹介
Hadoopデータ基盤とMulti-CloudなML基盤への取り組みの紹介
MicroAd, Inc.(Engineer)
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
Satoshi Nagayasu
03 piggyback -by-simple-code-public
03 piggyback -by-simple-code-public
Smz Nbys
株式会社インタースペース 清水様 登壇資料
株式会社インタースペース 清水様 登壇資料
leverages_event
Try_to_writecode_practicaltest #atest_hack
Try_to_writecode_practicaltest #atest_hack
kimukou_26 Kimukou
Google Product
Google Product
Daisuke Sugai
20120616i phonedeveloperworkshop
20120616i phonedeveloperworkshop
Yoichiro Sakurai
2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都 Flex & Google App Engine for Java & ...
2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都 Flex & Google App Engine for Java & ...
Sadao Tokuyama
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
Masatoshi Tada
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
Y Watanabe
0621 ndk game
0621 ndk game
cat kaotaro
JSR 352 “Batch Applications for the Java Platform”
JSR 352 “Batch Applications for the Java Platform”
Norito Agetsuma
Jjug 20140430 gradle_basic
Jjug 20140430 gradle_basic
Takuma Watabiki
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
GrowthForecastことはじめ
GrowthForecastことはじめ
Makoto Taniwaki
これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?
Takahiro YAMADA
前回のCasual Talkでいただいたご要望に対する進捗状況
前回のCasual Talkでいただいたご要望に対する進捗状況
JubatusOfficial
Rocroにおけるgcp活用事例
Rocroにおけるgcp活用事例
Kishin Yagami
事例紹介「なうまぴおん」
事例紹介「なうまぴおん」
Eiji Iwazawa
Example of exiting legacy system
Example of exiting legacy system
TakamchiTanaka
More Related Content
Similar to 20120421中国gtug
Hadoopデータ基盤とMulti-CloudなML基盤への取り組みの紹介
Hadoopデータ基盤とMulti-CloudなML基盤への取り組みの紹介
MicroAd, Inc.(Engineer)
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
Satoshi Nagayasu
03 piggyback -by-simple-code-public
03 piggyback -by-simple-code-public
Smz Nbys
株式会社インタースペース 清水様 登壇資料
株式会社インタースペース 清水様 登壇資料
leverages_event
Try_to_writecode_practicaltest #atest_hack
Try_to_writecode_practicaltest #atest_hack
kimukou_26 Kimukou
Google Product
Google Product
Daisuke Sugai
20120616i phonedeveloperworkshop
20120616i phonedeveloperworkshop
Yoichiro Sakurai
2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都 Flex & Google App Engine for Java & ...
2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都 Flex & Google App Engine for Java & ...
Sadao Tokuyama
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
Masatoshi Tada
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
Y Watanabe
0621 ndk game
0621 ndk game
cat kaotaro
JSR 352 “Batch Applications for the Java Platform”
JSR 352 “Batch Applications for the Java Platform”
Norito Agetsuma
Jjug 20140430 gradle_basic
Jjug 20140430 gradle_basic
Takuma Watabiki
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
GrowthForecastことはじめ
GrowthForecastことはじめ
Makoto Taniwaki
これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?
Takahiro YAMADA
前回のCasual Talkでいただいたご要望に対する進捗状況
前回のCasual Talkでいただいたご要望に対する進捗状況
JubatusOfficial
Rocroにおけるgcp活用事例
Rocroにおけるgcp活用事例
Kishin Yagami
事例紹介「なうまぴおん」
事例紹介「なうまぴおん」
Eiji Iwazawa
Example of exiting legacy system
Example of exiting legacy system
TakamchiTanaka
Similar to 20120421中国gtug
(20)
Hadoopデータ基盤とMulti-CloudなML基盤への取り組みの紹介
Hadoopデータ基盤とMulti-CloudなML基盤への取り組みの紹介
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
Django/Celeyを用いたデータ分析Webアプリケーションにおける非同期処理の設計と実装
03 piggyback -by-simple-code-public
03 piggyback -by-simple-code-public
株式会社インタースペース 清水様 登壇資料
株式会社インタースペース 清水様 登壇資料
Try_to_writecode_practicaltest #atest_hack
Try_to_writecode_practicaltest #atest_hack
Google Product
Google Product
20120616i phonedeveloperworkshop
20120616i phonedeveloperworkshop
2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都 Flex & Google App Engine for Java & ...
2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都 Flex & Google App Engine for Java & ...
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
0621 ndk game
0621 ndk game
JSR 352 “Batch Applications for the Java Platform”
JSR 352 “Batch Applications for the Java Platform”
Jjug 20140430 gradle_basic
Jjug 20140430 gradle_basic
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
GrowthForecastことはじめ
GrowthForecastことはじめ
これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?
前回のCasual Talkでいただいたご要望に対する進捗状況
前回のCasual Talkでいただいたご要望に対する進捗状況
Rocroにおけるgcp活用事例
Rocroにおけるgcp活用事例
事例紹介「なうまぴおん」
事例紹介「なうまぴおん」
Example of exiting legacy system
Example of exiting legacy system
20120421中国gtug
1.
GAE/J&Slim3を業務で利用 してみて困ったこと、とか
第13回勉強会@岡山 2012/04/21
2.
自己紹介 ● 名前 : 佐藤 勇輔 ● 出身 : 埼玉県 ●
年齢 : 27歳(84生) ● 勤務先 : 某S社プログラマ(入社3年目) ○ Java & SAStruts(Seasar2) ○ GAE/J & Slim3 ● Twitter/Facebook : o310yusuke ● Gmail : yusuke310 ● 岡山Javaユーザ会:http://okajug.appspot.com/
3.
本発表について 本発表は、案件を通して経験し、困ったことと実 際に対応した内容・方法をご報告させて頂きます。 ここで紹介させて頂く内容や方法が ”必ず正しい” とは限りませんので、ご了承ください。
4.
発表予定 ● GAE/J ● Datastore ●
Slim3
5.
そんな装備で大丈夫か・・・
6.
大丈夫だ、問題ない。
JavaとSeasarを 知っているから GAE/JとSlim3は 問題ない。
7.
8.
9.
目次 1. 製造
a. Datastoreとアプリとしての制約 b. Datastoreからデータ一括取得とカーソル c. repackagedパッケージ 2. 単体テスト a. JUnitとWeb Applicationのタイムゾーン b. テストデータとModelRef 3. 結合テスト a. GAE環境でのテスト b. Indexのワナ
10.
1.製造
11.
1-a.Datastoreとアプリとしての制約 ● Datastoreに設定できる制約:@Attribute
○ 主キー(primaryKey = true) ○ インデックスを付けない(unindexed = true) ○ 自動設定(listener = クラス名) ○ 暗号化(cipher = true) ● Datastoreに設定できない制約 ○ Not Null制約 ○ 文字数、桁数制限 アプリとして実装する必要あり。
12.
弊社の基本設計書 ● DB設計書
● UI設計書 ○ 論理名/物理名 ○ 画面入力項目 ○ 型 ■ 画面項目名 ○ アノテーション ■ 桁数 ■ 主キー ■ 表示フォーマット ■ バージョン ■ インデックス可否 ○ アプリ制約 ■ 桁数 ■ Not null ■ インデックスのソート順
13.
1-b.Datastoreからデータ一括取得とカーソル ● Datastoreへのアクセスしよう!
→ できるだけ少なくしたい → 必要なデータを一括取得 1000件/回を超えるとパフォーマンス悪化 ・処理速度の遅延 ・メモリ使用率の上昇 カーソルの利用 ・1000件/回以下で取得を繰り返す ・1000件/回以下となるようページング
14.
1-c.repackagedパッケージ ● ユーザのバスワードをBase64で暗号化しよう! ○
GAE SDKのバージョンがアップ(1.6.2) ○ EclipseのGAEプラグインがバージョンアップ これまでコンパイルできていたソースが、 突然コンパイルエラーに!! Twitterでつぶやいてみた
15.
16.
17.
1-c.repackagedパッケージ ● ユーザのバスワードをBase64で暗号化しよう! ○
GAE SDKのバージョンがアップ ○ EclipseのGAEプラグインがバージョンアップ これまでコンパイルできていたソースが、 突然コンパイルエラーに!! <GAE SDK> ・Base64を含むパッケージがrepackagedへ <GAEプラグイン> ・repackagedパッケージがErrorへ <GAEプラグイン> repackagedパッケージをWorningに(一時しのぎ)
18.
2.単体テスト
19.
2-a.JUnitとWeb Applicationのタイムゾーン ● お知らせ掲示板を作ってみよう!
○ 【要件】設定した期間の間、お知らせ情報を表示する ○ たまたま0時を過ぎたときに動作テストを実施 ■ 出るはずが出ない!and 消えるはずが出る!? ・期間設定は時刻を0時で登録 ・システム日付取得処理はJavaのCalendarを利用 ・日付判定はJavaのDateを利用 ・JUnitでは動作確認済み
20.
2-a.JUnitとWeb Applicationのタイムゾーン ● お知らせ掲示板を作ってみよう!
○ 【要件】設定した期間の間、お知らせ情報を表示する ○ たまたま0時を過ぎたときに動作テストを実施 ■ 出るはずが出ない!and 消えるはずが出る!? ・期間設定は時刻を0時で登録 ・システム日付取得処理はJavaのCalendarを利用 ・日付判定はJavaのDateを利用 ・JUnitでは動作確認済み ・JUnitのタイムゾーン:JST ・WebApplicationのタイムゾーン:UTC(JST+9)
21.
2-b.テストデータとModelRef ● 外部キー未設定のテストをしてみよう! ○
assertNull(model.getModelRef()); ■ 失敗する!! ■ ModelRefを宣言する際にnewしている。。。 ○ assertNull(model.getModel().getKey()) ○ assertNull(model.getModel().getModel()) ■ 成功する ■ ModelRefに外部キーが設定されているかの判断 → ModelRefのKeyを確認!
22.
ModelRef http://code.google. com/p/slim3/source/browse/trunk/slim3/src/main/java/org/slim3/datastore /ModelRef.java
23.
3.結合テスト
24.
3-a.GAE環境でのテスト ● 結合テストをGAE無料環境でやろう! ○
管理画面から初期データ登録 ○ 10人程度で実施(Datastoreの読み書き) ・サーバ応答がない・・・ ・Datastoreの書き込み回数が無料上限へ ・GAEの再起動は日本時間16時 ・日本時間16時まで応答なし ・何も作業できず。。。 ・別アカウントで同じアプリをデプロイ ・テスト開始前に課金しておく
25.
3-b.Indexのワナ ● 改訂が入りインデックスを追加しなきゃ! ○
既存データあり ○ 1KINDに複数のインデックスあり ・改訂後のアプリをデプロイした ・「Deployment completed successfully」が 出たから動作確認してみた ・Exception。。。 ・追加したインデックスが「building」 ・約5時間ほど継続 ・削除しようとしたが、Javaでは無理(?) ・時間帯によってbuidingの時間はまちまち
26.
一番いいのを頼む
27.
オススメ図書 ● オープンソース徹底活用
Slim3 on Google App Engine for Java ○ WebアプリのアーキテクチャであるMVCモデルの説明 ○ Bigtable&Datastoreに関するAPIの説明
28.
質疑応答&アドバイス ● 質疑応答
○ Not Null制約の実際の実装方法は? →画面入力値については、必須入力チェックで。 マスターデータ参照については、システムエラー。 ○ ユニークについての実装方法は? →入力された結果と一致するデータが 既に登録されているか検索し、チェックする。 ● アドバイス ○ Not Null制約はアノテーションで実装するといいかも
Download now