# HG changeset patch # User Kazuma Takeda # Date 1481982457 -32400 # Node ID 709b204892c74f1ae15476e134cf2d846f537b52 # Parent a894ba5223891dabede02bed777026b6e29a6132 add application description diff -r a894ba522389 -r 709b204892c7 Slide/prosym.md --- a/Slide/prosym.md Sat Dec 17 22:16:05 2016 +0900 +++ b/Slide/prosym.md Sat Dec 17 22:47:37 2016 +0900 @@ -3,11 +3,7 @@ profile: 琉球大学理工学研究科 lang: Japanese code-engine: coderay - -[](プロシン発表時間 セッション4 1/7 8:50 - 10:10) - -## 研究目的 - +# 研究目的 プログラムからデータを分離して扱うデータベースにはデータ構造とRDBの表構造のインピーダンスミスマッチという問題がある。 - ORMapper @@ -19,7 +15,7 @@ トランザクションは木のルートをアトミックに入れ替えることで実現する。 また、木構造のデータの変更を非破壊的、つまり元の木を保存しつつ、新しい木を構築する方法を採る。 -## この発表では +# この発表では - Jungleデータベースの構造 - WebServer(BBS) @@ -29,7 +25,7 @@ Jungleデータベースの構造とこれを用いたアプリケーション、実装時に発生した問題と解決方法について解説する。 -## Jungleデータベース +# Jungleデータベース JungleデータベースはJavaで実装されている。 木構造型のデータベースで、プログラム上に直接木構造を構築する。 @@ -54,7 +50,7 @@ 以降はJungleの構造をAPIとともに紹介。 [](70分あるので入れてもいいかな) -## 木の生成 +# 木の生成 Jungleは複数の木を名前を利用して管理しており、名前により作成・編集・削除を行う。 Jungleクラスの木の生成、管理を提供するAPIは以下のようになっている。 @@ -67,7 +63,7 @@ JungleTree getTreeByName(String treeName); ``` -## 木のノード +# 木のノード Jungleの木は、複数のノードの集合でできている。 ノードは、自身の子のListと属性名と属性値の組でデータをもつ。 @@ -78,6 +74,56 @@ Attribute getAttribute(); ``` -## Children +# ノードのChildren + +Childrenクラスで提供されているAPIでTreeNodeにアクセスできる。 + +``` Java +// Children.java +int size(); +Either at(int num); +``` + +## Eitherクラス + +TreeNodeを取ってくる場合Eitherで比較する。 + +``` Java +Either either = tree.getRootNode ().getChildren ().at (0); +if(either.isA()) { + // throw Expection +} +TreeNode node = either.b(); +``` + +# ノードのAttribute + +Attributeクラスで提供されているAPIでノードの値にアクセスできる。 -ChildrenクラスやAttributeクラスが提供するAPIで +``` Java +// Attribute.java +ByteBuffer get(String key); +String getString(String key); +``` + +# Jungle を用いたアプリケーション + +## maTrix + +[](そのまま利用しているので書き直す必要あり) +許認可管理アプリケーション +maTrixは、人物、役職、役割、権限、組織の木構造のデータとポリシーファイルを持つ。 +ポリシーファイルは、データに対するアクセス要求が許可されるか否認されるかを判断するためのルールを、誰が(Target)、何を(Resource)、どうできるか(Action)の3つの要素で記述されている。 +ポリシーファイルは組織構造中の人や役職をidを用いて参照している。つまり、ポリシーファイルを用いて許認可を下すためには、その人がどこの組織に所属して、その役割がどの権限を持っているかを返す検索が必要になる。 + +## BBS + +Jetty上で動くServletからのデータベースの接続先としてJungle databaseを用いる。 + +## Rendering Engine + + + +## Unity + +[](プロシン発表時間 セッション4 1/7 8:50 - 10:10)