170 likes | 338 Views
Windows 版 OpenXM. 高山信毅 (神戸大学)、2002.3.18 Takayama@openxm.org. OX-RFC-100 http://www.openxm.org Noro, Takayama (1997—2000), Ohara, Okutani,Tamura. データ構造(数、多項式、リスト、文字列) Stackmachine API コントロール&エンジンモデル. [713] print_ox_rfc100_xml_form(x^2); <cmo_recursive_polynomial>
E N D
Windows版 OpenXM 高山信毅 (神戸大学)、2002.3.18 Takayama@openxm.org
OX-RFC-100http://www.openxm.orgNoro, Takayama (1997—2000), Ohara, Okutani,Tamura • データ構造(数、多項式、リスト、文字列) • Stackmachine API • コントロール&エンジンモデル
[713] print_ox_rfc100_xml_form(x^2); <cmo_recursive_polynomial> <cmo_list><cmo_int32 for="length">1 </cmo_int32> <cmo_string>"x"</cmo_string> </cmo_list> <cmo_polynomial_in_one_variable><cmo_int32 for="number of terms">1</cmo_int32> <cmo_int32 for="variable name">0</cmo_int32> <cmo_int32 for="exponent">2</cmo_int32> <cmo_zz>1</cmo_zz> </cmo_polynomial_in_one_variable> </cmo_recursive_polynomial>
[718] ox_rpc(fctr,x^2-1); 0 [719] ox_pop_cmo(0); error([12,executeFunction : invalid function name]) [720] ox_rpc(0,"fctr",x^2-1); 0 [721] ox_pop_cmo(0); [[1,1],[x-1,1],[x+1,1]] [722]
ox client
control client Engine
Interrupt control client Engine
OX-RFC100Control&Engineモデルの実装 • Thread, event driven (Omproxy.java 田村(2000)、 asirgui 野呂(1998?)) unix用ソースコードの大幅な書き換えが必要、保守が大変 • Unix signal Windowsでは使えない cygwin (cygwin1.dll) の利用、 unix のソースコードの変更が最小限ですみ保守が容易
Setjmp Longjmp #if defined(__CYGWIN__) #define SETJMP(b) sigsetjmp(b,~0) #else #define SETJMP(b) setjmp(b) #endif Siglongjmp Setjmp,longjmp
system Sh を起動できない Fork & exec system
プログラムの起動 • Xterm が使えない startで代用 • パス名の混乱 (\OpenXM\bin\ox, /OpenXM/bin/ox, c:/OpenXM/bin/ox, /cygdrive/c/OpenXM/bin/ox) • cygwin 環境での起動とWindows環境での起動での動作の違い • 環境変数の扱い • Cppがない oxpp
/asirconnectr { [(getenv) (OSTYPE)] extension tag 0 eq { asirconnectr_win }{ [(getenv) (OSTYPE)] extension (cygwin) eq { asirconnectr_cygwin }{ asirconnectr_win }ifelse } ifelse } def
成果と課題 • Asir-contrib の多くのコマンドがWindowsでも動作するようになった(雑用) • WebAsir の実験(まだ遊び) • 起動をきれいに行うためには broker-like な仕組みが必要であることがよくわかった。(OX-RFC101(小原)、Javaでの起動(田村) 発展版が必要)
control IE ox_asir engine HTTPサーバby kan/sm1
Asir-Contrib(2002,1.2.1) • Sm1, gnuplot, phc, tigers, om,math,dsolv (2000, 1.1.1) • Base • Print (xdvi, tex,xml,…) • Matrix (okutani lib) • Poly, …
Document generation system • Weave,tangle(Knuth, 1980’s), javadoc (1990’s) • Gentexi (特に新しいアイディアなし 雑用) • /*&usagebegin: base_cancel(S) • It simplifies {S} by canceling the common factors of • denominators and numerators. • example: base_cancel([(x-1)/(x^2-1), (x-1)/(x^3-1)]); • end: */
参考ソースコード • OpenXM/src/asir-contrib • OpenXM/misc/packages/Windows • OpenXM/src/kan96xx/lib/*win* • OpenXM/src/kan96xx/lib/httpd.sm1 • #defined(__CYGWIN__)OpenXM_contrib2/asir2000, OpenXM/src/kan96xx/Kan • 参考記事:Cygwin、藤枝和宏(unixマガジン、2000、11月号よりの連載