SlideShare ist ein Scribd-Unternehmen logo
1 von 44
Downloaden Sie, um offline zu lesen
Apache Torque について
Javaツール勉強会@福岡 2016/08
~データベースツールとかいろいろ~
2016/08/26 TAKO
TAKO(たこ)
職業:個人事業主 はてなID:takopons
Java とか PHP とかを使って仕事してます。
仕事場は自宅だったり取引先だったり。
近ごろは JavaScript, jQuery, Ajax, D3.js らへんで
コーディングしてる時間が長いです(昨年比)。
最初は通信系のプログラマとしてデビューして
Solaris の UNIX-C で通信プロトコルの実装を
してました。普通に vi が使えます。
2 / 44
DB周りのフレームワークについて
DBアクセス関連のミドルウェアやフレームワークには
どんなものがあるの?
1. JDBC
2. EJB
3. O/Rマッピング(Hibernate, MyBatis, Torqueなど)
4. S2JDBC(Seasar2標準のDBアクセスフレームワーク)
5. Spring JDBC
6. JDO仕様の実装(Speedo, Apache JDOなど)
7. JPA(Java Persistence API)
3 / 44
1. JDBC
JDBC でがんばる?
僕が一番、SQLをうまく使えるんだ。
俺は JNDI と DataSource と Connection Pooling と、
あと、Dao と DTO とヘルパーBean があれば戦えるぜ!
4 / 44
2. EJB(Enterprise JavaBeans)
まだ EJB で消耗してるの?
EJBは、その高すぎる理想のため参入障壁の壁もかなり高い。
要するに使いにくい。(EJBコンテナとか Home/Remote I/Fとか)
EJBは元々、分散環境のためのコンポーネントなので、
分散オブジェクトが必要ない場合(大抵は分散不要)、
ひたすら面倒くさいだけ。
EJB3.0以降は使いやすくなったらしいが、
もはや手遅れ感がある。
5 / 44
3. O/Rマッピング(Object/Relational Mapping)
O/Rマッピングを使えば SQL文を書かなくて済むらしい、
というインターネッツの噂はウソ。
1つのテーブルだけ触るマスタメンテ系の処理しかない
ならば、SQL文は書かなくて良い。
しかし、多くの業務処理は複数のテーブルを結合したり、
副問い合わせしたりしてデータを抽出する。
つまり、SQL文は必要。
Hibernate と MyBatis がデファクト・スタンダードの
座を争い中?
6 / 44
4. S2JDBC(Seasar2標準のDBアクセスフレームワーク)
S2JDBCは O/Rマッピング可能。普通に SQL文も書ける。
SQL文を外部ファイルで定義できる。(それって、Doma?)
実は、S2JDBC で充分なのだが・・・
昨年(2015/9/28)Seasar2開発者:ひがやすをさんが、
「2016/9/26 で Seasar2 のサポートを終了する」と
宣言したことによって、 Seasar2コミュニティのメンバや
コミッタの人達の士気が下がっただろうと思う。たぶん。
現在、SAStruts と S2JDBC を採用している Webシステムは
今後も使い続けて良いのか? (Yes / No)
7 / 44
5.~7. 簡単に
5. Spring JDBC
JDBC の ラッパーAPI。SQL文を記述するタイプのフレームワーク。
6. JDO仕様の実装(Speedo, Apache JDOなど)
Java Data Objects:O/Rマッピングとオブジェクトの永続性に関する仕様。
7. JPA(Java Persistence API)
EJB2.0系の問題点を解消するべく策定された、永続性のAPI。
実装は、Hibernate, EclipseLink, Apache OpenJPA など。
おまけ.
Doma どま? Doma は Seasarプロジェクトだが、メンテは継続の予定。
8 / 44
ここから本題
9 / 44
Apache Torque について
Torque(トルク)は、O/Rマッピングの一種。
Torque は元々、Jakarta プロジェクトの
Turbine フレームワークの一部として開発。
その後、独立パッケージとして提供。
ver 3.1以降、ジェネレータとランタイムが分割。
10 / 44
そもそも、O/Rマッピングって何?
ORM(Object/Relational Mapping)とは、
オブジェクト指向言語のオブジェクトと、RDBテーブルの
レコードとのマッピング(対応付け)。
int colKey;
String colValue;
Date colDatetime;
FugaTbl
COL_KEY INTEGER
COL_VALUE VARCHAR
COL_DATETIME TIMESTAMP
FUGA_TBL
O/R
マッピング
クラス
テーブル
ちなみに、EJB の EntityBean も O/Rマッピング。
Hibernate は Object 寄りで、MyBatis は RDB 寄りの設計思想。
11 / 44
今回のテスト環境
OS: Windows 8.1
ORM: torque-3.3
torque-gen-3.3
IDE: pleiades-e4.6
JDK: jdk1.8.0_91
Ant: apache-ant-1.9.7
Web: apache-tomcat-8.0.36
Servlet + JSP
DB: MySQL 5.7
A5:SQL Mk-2 ver 2.11.6 (x64)
12 / 44
環境設定&動作確認
1. ダウンロード
2. DBのXML定義
3. Ant実行(JavaクラスとSQLスクリプト生成)
4. 動作環境の構築
5. 実装
6. 動作確認
7. 既存DBからJavaソース生成
8. 型の対応表
9. その他、注意点など
10. テーブル結合
13 / 44
1. ダウンロード(その1)
torque-3.3 (2008/02/28)
http://archive.apache.org/dist/db/torque/torque-3.3/binaries/
torque-3.3.zip と torque-gen-3.3.zip をダウンロード。
任意の場所に展開。
例)C:¥work¥torque-3.3 ← ランタイム
C:¥work¥torque-gen-3.3 ← ジェネレータ
※1 最新バージョンは torque-4.0 (2014/04/16)
※2 Ant実行時の生成ファイルは、
[展開先]¥torque-gen-3.3¥src 以下に作成される。
14 / 44
1. ダウンロード(その2)
MySQL用JDBCドライバ
https://dev.mysql.com/downloads/connector/j/
mysql-connector-java-5.1.39.zip をダウンロード。
zip展開後、Torque ジェネレータの lib に
mysql-connector-java-5.1.39-bin.jar をコピー。
例)C:¥work¥torque-gen-3.3¥lib¥
mysql-connector-java-5.1.39-bin.jar
15 / 44
2. DBのXML定義
DB名:HOGE_DB
テーブル名:FUGA_TBL
テーブル定義:C:¥work¥torque-gen-3.3¥src¥schema¥hoge_db-schema.xml
<database name=“hoge_db">
<table name="fuga_tbl">
<column name="COL_KEY" primaryKey="true“
required="true" type="INTEGER"/>
<column name="COL_VALUE" size="50" type="VARCHAR"/>
<column name=“COL_DATETIME” type="TIMESTAMP"/>
</table>
</database>
※ 一部抜粋。
torque-gen は末尾が schema.xml のファイルを自動的に参照。
16 / 44
3. Ant実行(その1)
build.properties の変更
C:¥work¥torque-gen-3.3¥build.properties を
以下のように変更。(変更点のみ抜粋)
torque.project = WebHello
torque.database = mysql
torque.targetPackage = pkg.hogedb
torque.database.createUrl = jdbc:mysql://127.0.0.1:3306/mysql
torque.database.buildUrl = jdbc:mysql://127.0.0.1:3306/hoge_db
torque.database.url = jdbc:mysql://127.0.0.1:3306/hoge_db
torque.database.driver = org.gjt.mm.mysql.Driver
torque.database.user = root
torque.database.password = [root password]
torque.database.host = 127.0.0.1
17 / 44
3. Ant実行(その2)
コマンドプロンプトで C:¥work¥torque-gen-3.3へ移動。
JavaソースとSQLスクリプトの生成
ant -f build-torque.xml
データベース作成:DBサーバにDB作成
ant -f build-torque.xml create-db
テーブル作成:DBサーバにテーブル作成
ant -f build-torque.xml insert-sql
18 / 44
3. Ant実行(その3)
生成された Java クラス
- int colKey;
- String colValue;
- Date colDatetime;
BaseFugaTbl
+ save()
+ copy()
+ toString()
FugaTbl
+ String COL_KEY;
+ String COL_VALUE;
+ String COL_DATETIME;
BaseFugaTblPeer
+ doSelect()
+ doUpdate()
+ doDelete()
FugaTblPeer
レコードの
登録、更新など
条件指定での
抽出など
19 / 44
Baseで始まるクラスは、
基本的に修正しないお約束。
4. 動作環境の構築(その1)
Torque.properties のコピー
C:¥work¥torque-3.3 の Torque.properties を
動作環境へコピーして変更。
コピー先 例) C:¥work¥pleiades-e4.6¥workspace¥WebHello¥src
※ 実際に動く時は、以下の場所に自動コピーされる。
ここに手動で置いても良いが、クリーンなどで消えるので注意。
例)C:¥work¥pleiades-e4.6¥workspace¥.metadata¥.plugins¥
org.eclipse.wst.server.core¥tmp0¥wtpwebapps¥
WebHello¥WEB-INF¥classes
20 / 44
4. 動作環境の構築(その2)
Torque.properties の変更(変更点のみ抜粋)
torque.database.default = hoge_db
torque.database.hoge_db.adapter = mysql
torque.dsfactory.hoge_db.factory =
org.apache.torque.dsfactory.SharedPoolDataSourceFactory
torque.dsfactory.hoge_db.pool.maxIdle = 8
torque.dsfactory.hoge_db.pool.maxActive = 10
torque.dsfactory.hoge_db.pool.testOnBorrow = true
torque.dsfactory.hoge_db.pool.validationQuery = SELECT 1
torque.dsfactory.hoge_db.connection.driver = org.gjt.mm.mysql.Driver
torque.dsfactory.hoge_db.connection.url =
jdbc:mysql://localhost:3306/hoge_db?useUnicode=true&characterEncoding=UTF8
torque.dsfactory.hoge_db.connection.user = [user name]
torque.dsfactory.hoge_db.connection.password = [user password]
21 / 44
エンコードの
文字コード指定
このスライドでは改行
してるが、実際は1行。
4. 動作環境の構築(その3)
生成されたJavaソースのコピー
3. Ant実行で生成されたJavaソースを動作環境へコピー。
コピー元
例)C:¥work¥torque-gen-3.3¥src¥java
org フォルダ
pkg フォルダ
コピー先
例) C:¥work¥pleiades-e4.6¥workspace¥WebHello¥src
3. Ant実行(その1)で設定した
build.properties の
torque.targetPackage = pkg.hogedb
をもとに作られる。
22 / 44
4. 動作環境の構築(その4)
実行時に必要となる jarファイルをコピー。
commons-beanutils-core-1.7.0.jar
commons-collections-3.2.jar
commons-configuration-1.4.jar
commons-dbcp-1.2.2.jar
commons-lang-2.3.jar
commons-logging-1.1.jar
commons-pool-1.3.jar
log4j-1.2.14.jar
mysql-connector-java-5.1.39-bin.jar
torque-3.3.jar
village-3.3.jar
コピー元の jar は
C:¥work¥torque-gen-3.3¥lib
C:¥work¥torque-3.3¥lib
C:¥work¥torque-3.3
らへんに、だいたいあるハズ。
コピー先 例)C:¥work¥pleiades-e4.6¥workspace
¥WebHello¥WebContent¥WEB-INF¥lib
23 / 44
5. 実装(その1)
初期処理 TorqueTestServlet.java
public void init() {
try {
// Torque用プロパティファイルの読み込み
Class<? extends TorqueTestServlet> thisClass = this.getClass();
ClassLoader classLoader = thisClass.getClassLoader();
PropertiesConfiguration pConfig = new PropertiesConfiguration();
pConfig.load(classLoader.getResourceAsStream("Torque.properties"));
// Torqueの初期設定
Torque.init(pConfig);
} catch(Exception e) {
e.printStackTrace();
}
}
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
24 / 44
5. 実装(その2)
検索処理 TorqueTestServlet#doPost()
String findKey = request.getParameter("findKey");
if (findKey != null && findKey.length() > 0) {
request.setAttribute("findKey", findKey);
try {
Criteria crit = new Criteria();
crit.add(FugaTblPeer.COL_KEY, Integer.parseInt(findKey));
List<FugaTbl> resultList = (List<FugaTbl>)FugaTblPeer.doSelect(crit);
request.setAttribute("resultList", resultList);
} catch(NumberFormatException nfe) {
;
} catch(Exception e) {
e.printStackTrace();
}
}
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
25 / 44
ブラウザから送信された
検索キーを取得し、抽出
条件に設定。
ブラウザから送信された
検索キーを取得し、抽出
条件に設定。
抽出結果を設定。
5. 実装(その3)
登録/更新処理 TorqueTestServlet#doPost()
String setKey = request.getParameter("setKey");
String setValue = request.getParameter("setValue");
Date currDate = new Date();
String setDatetime = currDate.toString();
FugaTbl fugaTbl = new FugaTbl();
fugaTbl.setColKey(Integer.parseInt(setKey));
fugaTbl.setColValue(setValue);
fugaTbl.setColDatetime(currDate);
01
02
03
04
05
06
07
08
09
26 / 44
次ページに続く。
ブラウザから送信された値
を取得し、レコード登録用
オブジェクトに設定。
ブラウザから送信された値
を取得し、レコード登録用
オブジェクトに設定。
5. 実装(その4)
登録/更新処理(続き)
Criteria crit = new Criteria();
crit.add(FugaTblPeer.COL_KEY, Integer.parseInt(setKey));
List<FugaTbl> resultList = (List<FugaTbl>)FugaTblPeer.doSelect(crit);
if (resultList != null && resultList.size() > 0) {
// UPDATE
FugaTblPeer.doUpdate(fugaTbl);
} else {
// INSERT
fugaTbl.save();
// UPDATE
fugaTbl.setColValue(setValue + “ UPDATE!”);
fugaTbl.save();
}
実際のコードは、全体を
try ~ catch で囲んでいる。
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
27 / 44
6. 動作確認(検索)
28 / 44
6. 動作確認(登録)
29 / 44
6. 動作確認(一覧)
30 / 44
7. 既存DBから Javaソース生成
①データベースからテーブル定義のスキーマ.xml生成
ant -f build-torque.xml jdbc
②schema.xml が生成される
例)C:¥work¥torque-gen-3.3¥src¥schema フォルダ下
③生成された schema.xml を DB名-schema.xml に
リネーム 例)hoge_db-schema.xml
④JavaソースとSQLスクリプトの生成
ant -f build-torque.xml
31 / 44
8. 型の対応表(その1)
No. COLUMN_NAME DATA_TYPE schema.xml Java
1 COL_TINYINT tinyint(4) TINYINT byte
2 COL_SMALLINT smallint(6) SMALLINT short
3 COL_MEDIUMINT mediumint(9) INTEGER int
4 COL_INTEGER int(11) INTEGER int
5 COL_INT int(11) INTEGER int
6 COL_BIGINT bigint(20) BIGINT long
7 COL_NUMERIC decimal(10,0) DECIMAL BigDecimal
8 COL_DECIMAL decimal(10,0) DECIMAL BigDecimal
9 COL_DEC decimal(10,0) DECIMAL BigDecimal
10 COL_FLOAT float REAL float
11 COL_DOUBLE double(10,5) DOUBLE double
12 COL_REAL double DOUBLE double
13 COL_DATE date DATE Date
14 COL_DATETIME datetime TIMESTAMP Date
15 COL_TIMESTAMP timestamp TIMESTAMP Date
32 / 44
8. 型の対応表(その2)
No. COLUMN_NAME DATA_TYPE schema.xml Java
16 COL_TIME time TIME Date
17 COL_YEAR year(4) DATE Date
18 COL_CHAR char(50) CHAR String
19 COL_VARCHAR varchar(50) VARCHAR String
20 COL_TINYTEXT tinytext VARCHAR String
21 COL_TEXT text LONGVARCHAR String
22 COL_MEDIUMTEXT mediumtext LONGVARCHAR String
23 COL_LONGTEXT longtext LONGVARCHAR String
24 COL_TINYBLOB tinyblob BINARY byte[]
25 COL_BLOB blob LONGVARBINARY byte[]
26 COL_MEDIUMBLOB mediumblob LONGVARBINARY byte[]
27 COL_LONGBLOB longblob LONGVARBINARY byte[]
28 COL_ENUM
enum('enum1','enum2','en
um3')
CHAR String
29 COL_SET set('set1','set2','set3') CHAR String
33 / 44
9. その他、注意点など(その1)
DBカラム名の予約語
BY_NAM, BY_PEER_NAME, CATEGORY, PRIMARY_KEY
などが Torque の予約語。
schema.xml の文字コード
DB名-schema.xml 内で、コメントなどに日本語を
使う場合、文字コードはUTF-8で保存すること。
ShiftJISだと、ant -f build-torque.xml でエラーになる。
34 / 44
9. その他、注意点など(その2)
カラム型の DATETIME は、 schema.xml では TIMESTAMP になる。
そして、
カラム型に TIMESTAMP を指定して A5:SQL Mk-2でテーブル作成すると、
`COL_TIMESTAMP` timestamp,
↓
`COL_TIMESTAMP` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP,
となる。この CURRENT_TIMESTAMP の部分が、自動生成された Javaソース
でコンパイルエラーになってしまう。
なので、DBのテーブル定義から XMLスキーマを生成した場合、XMLファイ
ルを一部修正するか、または、Javaソースを修正する必要がある。
private Date colDatetime = new Date(CURRENT_TIMESTAMP);
↑ 定数:CURRENT_TIMESTAMP がない、というエラー発生。
たぶん、Torque のバグ。
35 / 44
10. テーブル結合(その1)
テーブル結合のSELECT
結合条件:PIYO_TBL.COL_TINYINT = FUGA_TBL.COL_KEY
COL_KEY INTEGER
COL_VALUE VARCHAR
COL_DATETIME TIMESTAMP
FUGA_TBL
COL_TINYINT TINYINT
COL_SMALLINT SMALLINT
COL_TIMESTAMP TIMESTAMP
PIYO_TBL
36 / 44
10. テーブル結合(その2)
PiyoTbl.java に手動で項目追加
- int fugaTblColKey;
- String fugaTblColValue;
PiyoTbl
+ getFugaTblColKey()
+ setFugaTblColKey()
+ getFugaTblColValue()
+ setFugaTblColValue()
37 / 44
項目名は任意。
今回は、他テーブルのカラム
であることを明示するため、
この名前にした。
Getter と Setter を追加。
※Eclipse の「getter および
setter の生成」機能を使うと
自動生成できて便利。
10. テーブル結合(その3)
PiyoTblPeer.java に getData() メソッド追加
public static List getData() throws TorqueException {
// SQL文作成
StringBuffer sb = new StringBuffer();
sb.append(“ select ”);
sb.append(“ py.col_tinyint ”);
sb.append(“ , py.col_smallint ”);
sb.append(“ , fg.col_key ”);
sb.append(“ , fg.col_value ”);
sb.append(“ from ”);
sb.append(“ piyo_tbl py ”);
sb.append(“ left join fuga_tbl fg ”);
sb.append(“ on ( ”);
sb.append(“ py.col_tinyint = fg.col_key ”);
sb.append(“ ) ”);
sb.append(“ order by py.col_tinyint ASC ”);
String sql = sb.toString();
return populateObjects2(executeQuery(sql));
}
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
38 / 44
取得する項目と結合条件、
および、並び順を指定した
SELECT文を書く。
10. テーブル結合(その4)
PiyoTblPeer.java に row2Object2() メソッド追加
public static PiyoTbl row2Object2(Record row, int offset, Class cls)
throws TorqueException
{
try{
PiyoTbl obj = (PiyoTbl) cls.newInstance();
populateObject2(row, offset, obj);
obj.setModified(false);
obj.setNew(false);
return obj;
} catch (InstantiationException e){
throw new TorqueException(e);
} catch (IllegalAccessException e){
throw new TorqueException(e);
}
}
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
39 / 44
row2Object() が PiyoTblPeer.java
にあるので、コピペして修正。
※39~41ページに「コピペして
修正」と書いたが、おおまかな
処理はコピペ元と同じなので、
共通パターン化できるかも?
10. テーブル結合(その5)
PiyoTblPeer.java に populateObject2() メソッド追加
public static void populateObject2(Record row, int offset, PiyoTbl obj)
throws TorqueException
{
try{
obj.setColTinyint(row.getValue(offset + 0).asByte());
obj.setColSmallint(row.getValue(offset + 1).asShort());
obj.setFugaTblColKey(row.getValue(offset + 2).asInt());
obj.setFugaTblColValue(row.getValue(offset + 3).asString());
} catch (DataSetException e) {
throw new TorqueException(e);
}
}
01
02
03
04
05
06
07
08
09
10
11
12
13
40 / 44
38ページの 5~8行目に対応。
オフセットと型を指定して値を設定。
void populateObjects() が PiyoTblPeer.java
にあるので、コピペして修正。
10. テーブル結合(その6)
PiyoTblPeer.java に populateObjects2() メソッド追加
public static List populateObjects2(List records)
throws TorqueException
{
List results = new ArrayList(records.size());
for (int i = 0; i < records.size(); i++){
Record row = (Record) records.get(i);
results.add(PiyoTblPeer.row2Object2(
row, 1, PiyoTblPeer.getOMClass()));
}
return results;
}
01
02
03
04
05
06
07
08
09
10
11
41 / 44
List populateObjects(List) が
PiyoTblPeer.javaにあるので、
コピペして修正。
10. テーブル結合(その7)
一覧取得 TorqueTestServlet#doGet()
// FUGA_TBL 一覧取得
Criteria fugaCrit = new Criteria();
fugaCrit.addAscendingOrderByColumn(FugaTblPeer.COL_KEY);
List fugaList = FugaTblPeer.doSelect(fugaCrit);
request.setAttribute("fugaList", fugaList);
// PIYO_TBL 一覧取得
Criteria piyoCrit = new Criteria();
piyoCrit.addAscendingOrderByColumn(PiyoTblPeer.COL_TINYINT);
List piyoList = PiyoTblPeer.doSelect(piyoCrit);
request.setAttribute("piyoList", piyoList);
// 複数テーブル結合
List joinList = PiyoTblPeer.getData();
request.setAttribute("joinList", joinList);
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
実際のコードは、全体を
try ~ catch で囲んでいる。
42 / 44
38ページの getData() を呼び、
抽出結果を取得。
Torque - Torqueユーザガイド
http://www.jajakarta.org/turbine/jp/turbine/torque/user-guide.html
Torqueのプログラム開発手順書 - UTL sites
http://www.utl.co.jp/?p=Torque%E3%81%AE%E3%83%97%E3%83%AD%E3
%82%B0%E3%83%A9%E3%83%A0%E9%96%8B%E7%99%BA%E6%89%8B%
E9%A0%86%E6%9B%B8
「Seasar2が終わる!」と慌てるべきではない理由。 - Java EE 事始め!
http://masatoshitada.hatenadiary.jp/entry/2016/01/27/181139
Torque
http://muimi.com/j/jakarta/torque/
JavaのORM、Domaの話 +α
http://backpaper0.github.io/uragamiorm/#/
43 / 44
Seasar2徹底入門 SAStruts/S2JDBC対応
Spring3入門
―Javaフレームワーク・より良い設計と
アーキテクチャ
Jakartaプロジェクト徹底攻略
―WEB+DB PRESS Special Issue
(Javaエキスパート・シリーズ)
44 / 44

Weitere ähnliche Inhalte

Was ist angesagt?

ジェネリクスの基礎と クラス設計への応用
ジェネリクスの基礎とクラス設計への応用ジェネリクスの基礎とクラス設計への応用
ジェネリクスの基礎と クラス設計への応用nagise
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)NTT DATA Technology & Innovation
 
Open Policy Agent (OPA) 入門
Open Policy Agent (OPA) 入門Open Policy Agent (OPA) 入門
Open Policy Agent (OPA) 入門Motonori Shindo
 
Azure ADと外部アプリのID連携/SSO - Deep Dive
Azure ADと外部アプリのID連携/SSO - Deep DiveAzure ADと外部アプリのID連携/SSO - Deep Dive
Azure ADと外部アプリのID連携/SSO - Deep DiveNaohiro Fujie
 
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"Kentaro Yoshida
 
最近のBurp Suiteについて調べてみた
最近のBurp Suiteについて調べてみた最近のBurp Suiteについて調べてみた
最近のBurp Suiteについて調べてみたzaki4649
 
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)NTT DATA Technology & Innovation
 
セキュリティの都市伝説を暴く
セキュリティの都市伝説を暴くセキュリティの都市伝説を暴く
セキュリティの都市伝説を暴くHiroshi Tokumaru
 
インフラ廻戦 品川事変 前夜編
インフラ廻戦 品川事変 前夜編インフラ廻戦 品川事変 前夜編
インフラ廻戦 品川事変 前夜編Toru Makabe
 
なぜ自社で脆弱性診断を行うべきなのか
なぜ自社で脆弱性診断を行うべきなのかなぜ自社で脆弱性診断を行うべきなのか
なぜ自社で脆弱性診断を行うべきなのかSen Ueno
 
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装infinite_loop
 
Grafana Dashboards as Code
Grafana Dashboards as CodeGrafana Dashboards as Code
Grafana Dashboards as CodeTakuhiro Yoshida
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!kwatch
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みTakeshi Ogawa
 
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界Y Watanabe
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021Hiroshi Tokumaru
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Taku Miyakawa
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル貴志 上坂
 
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)NTT DATA Technology & Innovation
 
Java EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行についてJava EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行についてShigeru Tatsuta
 

Was ist angesagt? (20)

ジェネリクスの基礎と クラス設計への応用
ジェネリクスの基礎とクラス設計への応用ジェネリクスの基礎とクラス設計への応用
ジェネリクスの基礎と クラス設計への応用
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
 
Open Policy Agent (OPA) 入門
Open Policy Agent (OPA) 入門Open Policy Agent (OPA) 入門
Open Policy Agent (OPA) 入門
 
Azure ADと外部アプリのID連携/SSO - Deep Dive
Azure ADと外部アプリのID連携/SSO - Deep DiveAzure ADと外部アプリのID連携/SSO - Deep Dive
Azure ADと外部アプリのID連携/SSO - Deep Dive
 
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
 
最近のBurp Suiteについて調べてみた
最近のBurp Suiteについて調べてみた最近のBurp Suiteについて調べてみた
最近のBurp Suiteについて調べてみた
 
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
 
セキュリティの都市伝説を暴く
セキュリティの都市伝説を暴くセキュリティの都市伝説を暴く
セキュリティの都市伝説を暴く
 
インフラ廻戦 品川事変 前夜編
インフラ廻戦 品川事変 前夜編インフラ廻戦 品川事変 前夜編
インフラ廻戦 品川事変 前夜編
 
なぜ自社で脆弱性診断を行うべきなのか
なぜ自社で脆弱性診断を行うべきなのかなぜ自社で脆弱性診断を行うべきなのか
なぜ自社で脆弱性診断を行うべきなのか
 
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
 
Grafana Dashboards as Code
Grafana Dashboards as CodeGrafana Dashboards as Code
Grafana Dashboards as Code
 
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組み
 
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
 
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
 
Java EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行についてJava EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行について
 

Andere mochten auch

ネイティブ開発アンチパターン
ネイティブ開発アンチパターンネイティブ開発アンチパターン
ネイティブ開発アンチパターンYuki Tamura
 
EWD 3トレーニングコース#7 ewd-xpressメッセージ・パターンを適用する
EWD 3トレーニングコース#7 ewd-xpressメッセージ・パターンを適用するEWD 3トレーニングコース#7 ewd-xpressメッセージ・パターンを適用する
EWD 3トレーニングコース#7 ewd-xpressメッセージ・パターンを適用するKiyoshi Sawada
 
20140523 jQuery基礎 (HTML5ビギナーズ)
20140523 jQuery基礎 (HTML5ビギナーズ)20140523 jQuery基礎 (HTML5ビギナーズ)
20140523 jQuery基礎 (HTML5ビギナーズ)Daisuke Yamazaki
 
EWD 3トレーニングコース#11 ewd-xpressでのエラー処理
EWD 3トレーニングコース#11 ewd-xpressでのエラー処理EWD 3トレーニングコース#11 ewd-xpressでのエラー処理
EWD 3トレーニングコース#11 ewd-xpressでのエラー処理Kiyoshi Sawada
 
EWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いる
EWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いるEWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いる
EWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いるKiyoshi Sawada
 
EWD 3トレーニングコース#30 ewd-xpressアプリケーションをモジュラー化する
EWD 3トレーニングコース#30 ewd-xpressアプリケーションをモジュラー化するEWD 3トレーニングコース#30 ewd-xpressアプリケーションをモジュラー化する
EWD 3トレーニングコース#30 ewd-xpressアプリケーションをモジュラー化するKiyoshi Sawada
 
Dreamweaverとfireworksを連携し、jQuery mobileのサイトを作る方法
Dreamweaverとfireworksを連携し、jQuery mobileのサイトを作る方法Dreamweaverとfireworksを連携し、jQuery mobileのサイトを作る方法
Dreamweaverとfireworksを連携し、jQuery mobileのサイトを作る方法Yuki Yokoyama
 
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用するEWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用するKiyoshi Sawada
 
EWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみる
EWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみるEWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみる
EWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみるKiyoshi Sawada
 
入力フォームチェックをJ queryでやってみた
入力フォームチェックをJ queryでやってみた入力フォームチェックをJ queryでやってみた
入力フォームチェックをJ queryでやってみたyusuke ueki
 
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)parrotstudio
 
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップ
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップEWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップ
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップKiyoshi Sawada
 
【Sb】「if 自動化するなら then stack stormを使おう」 展開用
【Sb】「if 自動化するなら then stack stormを使おう」 展開用【Sb】「if 自動化するなら then stack stormを使おう」 展開用
【Sb】「if 自動化するなら then stack stormを使おう」 展開用Kazunori Shimura(kojima)
 
StackStormを用いたネットワーク機器の制御
StackStormを用いたネットワーク機器の制御StackStormを用いたネットワーク機器の制御
StackStormを用いたネットワーク機器の制御yskitagawa
 
jQueryで作るカスタム投稿の画像スライダーライブラリ
jQueryで作るカスタム投稿の画像スライダーライブラリjQueryで作るカスタム投稿の画像スライダーライブラリ
jQueryで作るカスタム投稿の画像スライダーライブラリTakashi Uemura
 
少人数から始めるできるだけ楽をするB2Bアプリ開発
少人数から始めるできるだけ楽をするB2Bアプリ開発少人数から始めるできるだけ楽をするB2Bアプリ開発
少人数から始めるできるだけ楽をするB2Bアプリ開発Atsuhiko Kimura
 
a-blog cms「simple2016」で学ぶ カスタマイズ初級編
a-blog cms「simple2016」で学ぶ カスタマイズ初級編a-blog cms「simple2016」で学ぶ カスタマイズ初級編
a-blog cms「simple2016」で学ぶ カスタマイズ初級編Kazumich YAMAMOTO
 
Kawaz的jQuery入門
Kawaz的jQuery入門Kawaz的jQuery入門
Kawaz的jQuery入門Kohki Miki
 

Andere mochten auch (20)

ネイティブ開発アンチパターン
ネイティブ開発アンチパターンネイティブ開発アンチパターン
ネイティブ開発アンチパターン
 
漫☆画太郎論
漫☆画太郎論漫☆画太郎論
漫☆画太郎論
 
EWD 3トレーニングコース#7 ewd-xpressメッセージ・パターンを適用する
EWD 3トレーニングコース#7 ewd-xpressメッセージ・パターンを適用するEWD 3トレーニングコース#7 ewd-xpressメッセージ・パターンを適用する
EWD 3トレーニングコース#7 ewd-xpressメッセージ・パターンを適用する
 
20140523 jQuery基礎 (HTML5ビギナーズ)
20140523 jQuery基礎 (HTML5ビギナーズ)20140523 jQuery基礎 (HTML5ビギナーズ)
20140523 jQuery基礎 (HTML5ビギナーズ)
 
EWD 3トレーニングコース#11 ewd-xpressでのエラー処理
EWD 3トレーニングコース#11 ewd-xpressでのエラー処理EWD 3トレーニングコース#11 ewd-xpressでのエラー処理
EWD 3トレーニングコース#11 ewd-xpressでのエラー処理
 
EWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いる
EWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いるEWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いる
EWD 3トレーニングコース#14 ewd-xpressメッセージ用にAjaxを用いる
 
EWD 3トレーニングコース#30 ewd-xpressアプリケーションをモジュラー化する
EWD 3トレーニングコース#30 ewd-xpressアプリケーションをモジュラー化するEWD 3トレーニングコース#30 ewd-xpressアプリケーションをモジュラー化する
EWD 3トレーニングコース#30 ewd-xpressアプリケーションをモジュラー化する
 
Dreamweaverとfireworksを連携し、jQuery mobileのサイトを作る方法
Dreamweaverとfireworksを連携し、jQuery mobileのサイトを作る方法Dreamweaverとfireworksを連携し、jQuery mobileのサイトを作る方法
Dreamweaverとfireworksを連携し、jQuery mobileのサイトを作る方法
 
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用するEWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
EWD 3トレーニングコース#15 ewd-xpressでjQuery以外のフレームワークを利用する
 
EWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみる
EWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみるEWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみる
EWD 3トレーニングコース#13 全てをひとつにまとめてewd-xpressで稼働させてみる
 
入力フォームチェックをJ queryでやってみた
入力フォームチェックをJ queryでやってみた入力フォームチェックをJ queryでやってみた
入力フォームチェックをJ queryでやってみた
 
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
 
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップ
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップEWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップ
EWD 3トレーニングコース#5 ewd-xpressアプリ開発第1ステップ
 
【Sb】「if 自動化するなら then stack stormを使おう」 展開用
【Sb】「if 自動化するなら then stack stormを使おう」 展開用【Sb】「if 自動化するなら then stack stormを使おう」 展開用
【Sb】「if 自動化するなら then stack stormを使おう」 展開用
 
StackStormを用いたネットワーク機器の制御
StackStormを用いたネットワーク機器の制御StackStormを用いたネットワーク機器の制御
StackStormを用いたネットワーク機器の制御
 
jQueryで作るカスタム投稿の画像スライダーライブラリ
jQueryで作るカスタム投稿の画像スライダーライブラリjQueryで作るカスタム投稿の画像スライダーライブラリ
jQueryで作るカスタム投稿の画像スライダーライブラリ
 
少人数から始めるできるだけ楽をするB2Bアプリ開発
少人数から始めるできるだけ楽をするB2Bアプリ開発少人数から始めるできるだけ楽をするB2Bアプリ開発
少人数から始めるできるだけ楽をするB2Bアプリ開発
 
a-blog cms「simple2016」で学ぶ カスタマイズ初級編
a-blog cms「simple2016」で学ぶ カスタマイズ初級編a-blog cms「simple2016」で学ぶ カスタマイズ初級編
a-blog cms「simple2016」で学ぶ カスタマイズ初級編
 
Learning jQuery
Learning jQueryLearning jQuery
Learning jQuery
 
Kawaz的jQuery入門
Kawaz的jQuery入門Kawaz的jQuery入門
Kawaz的jQuery入門
 

Ähnlich wie Apache Torqueについて

明日から使える Java SE 7
明日から使える Java SE 7明日から使える Java SE 7
明日から使える Java SE 7Yuichi Sakuraba
 
イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情takezoe
 
JavaOne2015報告会 Java EE アップデート #j1jp
JavaOne2015報告会 Java EE アップデート #j1jpJavaOne2015報告会 Java EE アップデート #j1jp
JavaOne2015報告会 Java EE アップデート #j1jpNorito Agetsuma
 
Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)Yuji Kubota
 
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~normalian
 
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略takezoe
 
Springでdao 20070413
Springでdao 20070413Springでdao 20070413
Springでdao 20070413Funato Takashi
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireAkio Katayama
 
StackStormを活用した運用自動化の実践
StackStormを活用した運用自動化の実践StackStormを活用した運用自動化の実践
StackStormを活用した運用自動化の実践Shu Sugimoto
 
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsugSpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsugY Watanabe
 
Node.js勉強会 Framework Koa
Node.js勉強会 Framework KoaNode.js勉強会 Framework Koa
Node.js勉強会 Framework Koakamiyam .
 
Ibm worklight デモ環境とサンプルコード
Ibm worklight デモ環境とサンプルコードIbm worklight デモ環境とサンプルコード
Ibm worklight デモ環境とサンプルコードK Kimura
 
jjugccc2018 app review postmortem
jjugccc2018 app review postmortemjjugccc2018 app review postmortem
jjugccc2018 app review postmortemtamtam180
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方linzhixing
 
OpenDaylightを用いた次世代ネットワーク構成管理の考察
OpenDaylightを用いた次世代ネットワーク構成管理の考察OpenDaylightを用いた次世代ネットワーク構成管理の考察
OpenDaylightを用いた次世代ネットワーク構成管理の考察Naoto MATSUMOTO
 

Ähnlich wie Apache Torqueについて (20)

Java EE8 Report
Java EE8 ReportJava EE8 Report
Java EE8 Report
 
明日から使える Java SE 7
明日から使える Java SE 7明日から使える Java SE 7
明日から使える Java SE 7
 
イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情
 
JavaOne2015報告会 Java EE アップデート #j1jp
JavaOne2015報告会 Java EE アップデート #j1jpJavaOne2015報告会 Java EE アップデート #j1jp
JavaOne2015報告会 Java EE アップデート #j1jp
 
Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)
 
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
 
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略
 
Sc2009autumn s2robot
Sc2009autumn s2robotSc2009autumn s2robot
Sc2009autumn s2robot
 
Springでdao 20070413
Springでdao 20070413Springでdao 20070413
Springでdao 20070413
 
HTML5&API総まくり
HTML5&API総まくりHTML5&API総まくり
HTML5&API総まくり
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
 
StackStormを活用した運用自動化の実践
StackStormを活用した運用自動化の実践StackStormを活用した運用自動化の実践
StackStormを活用した運用自動化の実践
 
PostgreSQL 12の話
PostgreSQL 12の話PostgreSQL 12の話
PostgreSQL 12の話
 
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsugSpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
 
Node.js勉強会 Framework Koa
Node.js勉強会 Framework KoaNode.js勉強会 Framework Koa
Node.js勉強会 Framework Koa
 
Ibm worklight デモ環境とサンプルコード
Ibm worklight デモ環境とサンプルコードIbm worklight デモ環境とサンプルコード
Ibm worklight デモ環境とサンプルコード
 
Ajax 応用
Ajax 応用Ajax 応用
Ajax 応用
 
jjugccc2018 app review postmortem
jjugccc2018 app review postmortemjjugccc2018 app review postmortem
jjugccc2018 app review postmortem
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
 
OpenDaylightを用いた次世代ネットワーク構成管理の考察
OpenDaylightを用いた次世代ネットワーク構成管理の考察OpenDaylightを用いた次世代ネットワーク構成管理の考察
OpenDaylightを用いた次世代ネットワーク構成管理の考察
 

Apache Torqueについて