version 1.90, 1999/12/25 14:59:50 |
version 1.93, 1999/12/25 17:56:56 |
|
|
\documentclass{jarticle} |
\documentclass{jarticle} |
|
|
%% $OpenXM: OpenXM/doc/genkou19991125.tex,v 1.89 1999/12/25 13:58:52 tam Exp $ |
%% $OpenXM: OpenXM/doc/genkou19991125.tex,v 1.92 1999/12/25 17:05:28 tam Exp $ |
|
|
\usepackage{jssac} |
\usepackage{jssac} |
\title{ |
|
1. 意味もない修飾過剰な語句は排除しましょう. \\ |
|
2. せっかく fill しているのをいじらないでくれ. \\ |
|
3. 田村が遊んでばかりでおればかり仕事をしているのはどう考えても不公平だ. |
|
なんで仕事をしないのか, いい加減仕事をしろ, 田村. \\ |
|
3.5 そういうご飯とかつまらない話じゃなくて, commit の情報をみれば田村が |
|
如何に仕事をしていないのかよくわかるよ. \\ |
|
} |
|
|
|
|
\title{OpenXM の現状について} |
\author{奥 谷 行 央\affil{神戸大学大学院自然科学研究科} |
\author{奥 谷 行 央\affil{神戸大学大学院自然科学研究科} |
\mail{okutani@math.sci.kobe-u.ac.jp} |
\mail{okutani@math.sci.kobe-u.ac.jp} |
\and 小 原 功 任\affil{金沢大学理学部} |
\and 小 原 功 任\affil{金沢大学理学部} |
Line 353 cmo\_mathcap := (CMO\_MATHCAP, {\sl cmo\_list}) |
|
Line 346 cmo\_mathcap := (CMO\_MATHCAP, {\sl cmo\_list}) |
|
\end{quote} |
\end{quote} |
|
|
第一要素 $a$ はまた cmo\_list であり, リスト長は 4 以上, $a_1$ は |
第一要素 $a$ はまた cmo\_list であり, リスト長は 4 以上, $a_1$ は |
cmo\_int32 でバージョンを表す, $a_2$, $a_3$, $a_4$ は cmo\_string であり, |
cmo\_int32 でバージョンを表す. $a_2$, $a_3$, $a_4$ は cmo\_string であり, |
それぞれシステムの名前, バージョン, HOSTTYPE を表すことになっている. |
それぞれシステムの名前, バージョン, HOSTTYPE を表すことになっている. |
\begin{quote} |
\begin{quote} |
(CMO\_LIST, {\sl int32}, |
(CMO\_LIST, {\sl int32}, |
Line 372 $a_3$, {\sl cmo\_string} $a_4$, $\ldots$) |
|
Line 365 $a_3$, {\sl cmo\_string} $a_4$, $\ldots$) |
|
$\ldots$, {\sl cmo\_int32} $b_n$) |
$\ldots$, {\sl cmo\_int32} $b_n$) |
\end{quote} |
\end{quote} |
|
|
第三要素 $c$ は以下のようなリスト構造をしている. |
第三要素 $c$ は以下のようなリスト構造をしていなければならない. |
\begin{quote} |
\begin{quote} |
(CMO\_LIST, {\sl int32} $m$, \\ |
(CMO\_LIST, {\sl int32} $m$, |
\hspace{10mm} (CMO\_LIST, {\sl int32} $l_1$, {\sl cmo\_int32} $c_{11}$, |
{\sl cmo\_list} $list_1$, {\sl cmo\_list} $list_2$, |
{\sl cmo} $c_{12}$, $\ldots$, {\sl cmo} $c_{1l_1}$), \\ |
$\ldots$, {\sl cmo\_list} $list_m$) |
\hspace{10mm} (CMO\_LIST, {\sl int32} $l_2$, {\sl cmo\_int32} $c_{21}$, |
|
{\sl cmo} $c_{22}$, $\ldots$, {\sl cmo} $c_{1l_2}$), \\ |
|
\hspace{10mm} $\ldots$ \\ |
|
\hspace{10mm} (CMO\_LIST, {\sl int32} $l_m$, {\sl cmo\_int32} $c_{m1}$, |
|
{\sl cmo} $c_{m2}$, $\ldots$, {\sl cmo} $c_{1l_m}$)) |
|
\end{quote} |
\end{quote} |
{\Large 以下、全然説明が分かりません。} |
|
どの $c_{i1}$ にも cmo\_int32 が入っており, |
どの $list_i$ も 1 つ以上の要素を持っており, |
OX\_COMMAND 以外の, 受け取れるメッセージの識別子が入っている. |
1 番目の要素は必ず cmo\_int32 となっていなければならない. |
$c_{i2}$ 以降については最初の $c_{i1}$ の値によってそれぞれ異なる. |
これは受け取れるオブジェクトのメッセージの識別子を |
|
入れるためである. |
ここでは, OX\_DATA の場合についてのみ説明する. |
ここでは, OX\_DATA の場合についてのみ説明する. |
この $c_{i1}$ が OX\_DATA の場合, |
|
$c_{i1}$, $c_{i2}$, $\ldots$, $c_{il_i}$ を要素とする cmo\_list は |
1 番目の要素が OX\_DATA の場合, |
CMO 形式についての情報を表しており, $l_i=2$ と決められている. |
リスト $list_i$ は以下のような構造となっている. |
$c_{i1}$ にはもちろんのこと OX\_DATA が入っており, |
各 $c_{ij}$ は cmo\_int32 であり, |
$c_{i2}$ は以下の図のような cmo\_list になっている. |
受け取ることが可能な CMO 形式のタグとなる. |
各要素は cmo\_int32 であり, |
|
受け取ることが可能な CMO 形式のタグが入る. |
|
\begin{quote} |
\begin{quote} |
(CMO\_LIST, {\sl int32} $k$, |
(CMO\_LIST, 2, (CMO\_INT32, OX\_DATA), \\ |
{\sl cmo\_int32} $c_{i21}$, {\sl cmo\_int32} $c_{i22}$, |
\ \ (CMO\_LIST, {\sl int32} $k$, |
$\ldots$, {\sl cmo\_int32} $c_{i2k}$) |
{\sl cmo\_int32} $c_{i1}$, {\sl cmo\_int32} $c_{i2}$, |
|
$\ldots$, {\sl cmo\_int32} $c_{ik}$)) |
\end{quote} |
\end{quote} |
|
|
具体的な mathcap の例をあげよう. 名前が ``ox\_test'', バージョンナンバー |
具体的な mathcap の例をあげよう. 名前が ``ox\_test'', バージョンナンバー |
が 199911250 のサーバで, PC-UNIX 上で動いていれば, $a$ の部分は |
が 199911250 のサーバで, PC-UNIX 上で動いており, |
|
このサーバのスタックマシンが命令 SM\_popCMO, SM\_popString, |
|
SM\_mathcap, SM\_executeStringByLocalParser を利用可能, |
|
かつ cmo\_int32, cmo\_string, cmo\_mathcap, cmo\_list のみに制限したい |
|
ときの mathcap は |
\begin{quote} |
\begin{quote} |
(CMO\_LIST, 4, (CMO\_INT32, $199911250$), (CMO\_STRING, 7, "ox\_test"), \\ |
(CMO\_LIST, 3, \\ |
\ \ (CMO\_STRING, 9, "199911250"), (CMO\_STRING, 4, "i386")) |
\ \ (CMO\_LIST, 4, (CMO\_INT32, $199911250$), (CMO\_STRING, 7, "ox\_test"), \\ |
|
\ \ \ \ (CMO\_STRING, 9, "199911250"), (CMO\_STRING, 4, "i386")) \\ |
|
\ \ (CMO\_LIST, $5$, (CMO\_INT32, SM\_popCMO), \\ |
|
\ \ \ \ (CMO\_INT32, SM\_popString), (CMO\_INT32, SM\_mathcap), \\ |
|
\ \ \ \ (CMO\_INT32, SM\_executeStringByLocalParser)) \\ |
|
\ \ (CMO\_LIST, $1$, \\ |
|
\ \ \ \ (CMO\_LIST, $2$, (CMO\_INT32, OX\_DATA), \\ |
|
\ \ \ \ \ \ (CMO\_LIST, $4$, (CMO\_INT32, CMO\_INT32), \\ |
|
\ \ \ \ \ \ \ \ (CMO\_INT32, CMO\_STRING), (CMO\_INT32, CMO\_MATHCAP), \\ |
|
\ \ \ \ \ \ \ \ (CMO\_INT32, CMO\_LIST))))) |
\end{quote} |
\end{quote} |
となる. |
になる. |
|
|
さらに, このサーバのスタックマシンが命令 SM\_popCMO, SM\_popString, |
|
SM\_mathcap, SM\_executeStringByLocalParser を利用可能であれば, $b$ の部 |
|
分を |
|
\begin{quote} |
|
(CMO\_LIST, $5$, |
|
(CMO\_INT32, SM\_popCMO), \\ |
|
\ \ (CMO\_INT32, SM\_popString), (CMO\_INT32, SM\_mathcap), \\ |
|
\ \ (CMO\_INT32, SM\_executeStringByLocalParser)) |
|
\end{quote} |
|
にし, cmo\_int32, cmo\_string, cmo\_mathcap, cmo\_list のみに制限したい |
|
ときは$c$ の部分を |
|
\begin{quote} |
|
(CMO\_LIST, $1$, \\ |
|
\ \ (CMO\_LIST, $2$, (CMO\_INT32, OX\_DATA), \\ |
|
\ \ \ \ (CMO\_LIST, $4$, (CMO\_INT32, CMO\_INT32), \\ |
|
\ \ \ \ \ \ (CMO\_INT32, CMO\_STRING), (CMO\_INT32, CMO\_MATHCAP), \\ |
|
\ \ \ \ \ \ (CMO\_INT32, CMO\_LIST)))) |
|
\end{quote} |
|
にする. |
|
|
|
|
|
\section{セキュリティ対策} |
\section{セキュリティ対策} |
|
|
OpenXM 規約は TCP/IP を用いて通信を行うことを考慮している. ネットワーク |
OpenXM 規約は TCP/IP を用いて通信を行うことを考慮している. ネットワーク |
Line 461 ssh を利用して対応している. |
|
Line 442 ssh を利用して対応している. |
|
|
|
http://www.openmath.org/omsoc/ |
http://www.openmath.org/omsoc/ |
|
|
数学的対象のSGML的表記の標準化を目指した大規模なプロジェクト. 異なる種 |
数学的対象の SGML 的表記の標準化を目指した大規模なプロジェクト. 異なる種 |
類の数式処理システムの間で情報を交換するときに, OpenMath で定義された表 |
類の数式処理システムの間で情報を交換するときに, OpenMath で定義された表 |
現を利用することができる. 実際の情報交換の手続きにはいろいろなものが考 |
現を利用することができる. 実際の情報交換の手続きにはいろいろなものが考 |
えられるが, 例えば MCP (Mathematical Computation Protocol) なる手続きが |
えられるが, 例えば MCP (Mathematical Computation Protocol) なる手続きが |
考案されている. MCP によって送信されるデータは, 本文に OpenMath 形式で |
考案されている. MCP によって送信されるデータは, 本文に OpenMath 形式で |
数式を記述したテキストで, いささかメイルに似ていなくもない. 実際にこの |
数式を記述したテキストで, いささかメイルに似ていなくもない. 実際にこの |
方法でGAP とAxiomの間で通信が行われている. |
方法で GAP と Axiom の間で通信が行われている. |
|
|
\item NetSolve |
\item NetSolve |
|
|
Line 484 NetSolve はクライアント・サーバ型の分散システムであり, |
|
Line 465 NetSolve はクライアント・サーバ型の分散システムであり, |
|
|
|
http://symbolicNet.mcs.kent.edu/SN/areas/protocols/mp.html |
http://symbolicNet.mcs.kent.edu/SN/areas/protocols/mp.html |
|
|
数学的なデータの効率的な交換のためのプロトコル. |
科学技術計算を行なうソフトウェア間で数学的なデータを効率的に交換 |
交換するデータの木構造について詳しい. |
させることを目的としたプロトコルを作成している. 木構造を用いて |
|
簡単, かつ柔軟なものを目指しており, データの表現方法や交換方法に |
|
負わずにソフトウェアを作ることができるようにしようとしている. |
|
現在すでに, C 言語で利用可能なライブラリが提供されている. |
|
|
\item MCP |
\item MCP |
|
|
http://horse.mcs.kent.edu/~pwang/ |
http://horse.mcs.kent.edu/\~{}pwang/ |
|
|
HTTP プロトコルを用いて, リモートの計算機で計算を行なう. |
数学的な計算を行なうための HTTP スタイルのプロトコル. |
|
クライアント・サーバモデルを採用しており, |
|
ピアツーピアのストリームコネクションを行なう. |
|
数学的なオブジェクトを MP や MathML で定められた方法で |
|
表現することが考えられている. |
|
すでに OpenMath を用いた実装が存在する. |
|
|
|
|
\end{itemize} |
\end{itemize} |
|
|