=================================================================== RCS file: /home/cvs/OpenXM/src/kan96xx/Doc/changelog-ja.tex,v retrieving revision 1.7 retrieving revision 1.11 diff -u -p -r1.7 -r1.11 --- OpenXM/src/kan96xx/Doc/changelog-ja.tex 2004/09/11 23:49:34 1.7 +++ OpenXM/src/kan96xx/Doc/changelog-ja.tex 2004/12/17 00:13:08 1.11 @@ -1,4 +1,4 @@ -% $OpenXM: OpenXM/src/kan96xx/Doc/changelog-ja.tex,v 1.6 2004/09/11 03:18:02 takayama Exp $ +% $OpenXM: OpenXM/src/kan96xx/Doc/changelog-ja.tex,v 1.10 2004/11/23 12:14:48 takayama Exp $ \documentclass{jarticle} \title{ChangeLog \\ ---kan96xx, kxx, k097} \author{Nobuki Takayama} @@ -185,4 +185,157 @@ Warning が表示されるか? ので, status の判定方法を見直す必要がある. \end{enumerate} -\end{document} \ No newline at end of file +\section{2004-09-13, 部分的な ecart division} + +\noindent Debug 用のデータ 1. +{\footnotesize \begin{verbatim} +[ [( (x Dx)^2 + (y Dy)^2 -1) ] (x,y) + [ [ (Dx) 1 ] [(x) -1 (y) -1 (Dx) 1 (Dy) 1]] + [(partialEcartGlobalVarX) [(x) (y)]] ] ecart.gb /ff set + +ff getRing ring_def show_ring + +\end{verbatim} +} + +\noindent Debug 用のデータ 2. +{\footnotesize \begin{verbatim} +/ecart.checkOrder { 1 } def +[(DebugReductionEcart) 3] system_variable +[ [(1-x-y-z) (1-z)] (x,y,z) + [ [(y) -1 (z) -1 (Dy) 1 (Dz) 1] [(x) 1 (Dx) 1]] + [(partialEcartGlobalVarX) [(x)]] ] ecart.gb /ff set + +ff getRing ring_def show_ring + + [ [(1-z) (-x+1-y-z)] (x,y,z) + [ [(y) -1 (z) -1 (Dy) 1 (Dz) 1] [(x) 1 (Dx) 1]] + [(partialEcartGlobalVarX) [(x)]] ] /std set +(1+x^3) std ecartd.reduction +(x*y*z) std ecartd.reduction +\end{verbatim} +} +GlobalVarX の変数については local order ではいけない. +無限ループとなる. +{\tt ecart.checkOrder} も書き直さないといけない. + +\begin{enumerate} +\item \verb@ ringp->partialEcart @ は int の配列 +\verb@ ringp->partialEcartGlobalVarX @ の長さ. +この配列に local でない変数 (first weight が non-negative な x 変数) のリストを入れる. +{\tt ecartGetEllPartial()} で利用される. +\item Todo: ring のメンバ {\tt ringInInputForm} の活用. ( weight vector や +input 形式の ring を object として格納. +\item Todo: {\tt KgetRingInfo} を実装する. index から 変数, 変数から index 等. +\end{enumerate} + +\section{2004-09, {\tt ATTR\_EXPORT} と {\tt RestrictedMode}} + +\noindent +現在の RestrictedMode には以下の脆弱性がある (2004.9.19). +\begin{verbatim} +(cohom.sm1) run +[(or_attr) 8 /gb] extension +[(or_attr) 8 /;] extension ; +[(RestrictedMode) 1] system_variable ; +[ [{(hello) message } ] (x,y) ] gb ; +hello <---- error を起こす前に {(hello) message} が実行されてしまう. +ERROR(sm): +<< /name object def >> or << object /name set >> +\end{verbatim} +\noindent 原因: +引数に executableArray を与えることにより, 評価が抑制され +{\tt ATTR\_EXPORT} bit がセットされた関数の評価がはじまってから +executableArray が変数 {\tt arg1} に代入され, その変数を scanner +が評価することにより, executableArray が評価される. + +\noindent 対策: +{\tt isThereExecutableArrayOnStack(ob)} でスタックを検査するようにする. +\begin{verbatim} +(cohom.sm1) run +[(or_attr) 8 /gb] extension +[(or_attr) 8 /;] extension ; +0 1 10 { pop pop } for +[(RestrictedMode) 1] system_variable ; +[ [{(hello) message } ] (x,y) ] gb ; +\end{verbatim} + +テスト 2 (こちらは正常に動くはず). +\begin{verbatim} +(ox.sm1) run +[(or_attr) 8 /fctr] extension +[(or_attr) 8 /pmat] extension ; +[(or_attr) 8 /;] extension ; +0 1 10 { pop pop } for +[(RestrictedMode) 1] system_variable ; +[ (x^2-1) (x,y) ] fctr pmat ; +\end{verbatim} + +\section{2004-11-23, POST ベースの cgiPolymake 等} + +\begin{enumerate} +\item +{\tt Kan/plugin/mytcpio.c} 1.15 \\ +{\tt Kan/plugin/oxcgi.c} 1.7 \\ +{\tt Kan/ext.c} 1.33 \\ +{\tt Kan/Doc/cgi.sm1} 1.8--1.11 \\ +{\tt polymake/cgi/cgi-polymake.sh} 1.3 +\end{enumerate} + +GET では受渡しできるデータの量に制限があるため, +POST ベースに変更した. +\begin{verbatim} +POST http://polymake.math.kobe-u.ac.jp/cgi-bin/cgi-asir.sh HTTP/0.9 +Content-length: 20 + +oxMessageBody=2-1%0A +\end{verbatim} + +POST のデータをうけとるため, +\verb@ [(read) fd size] extension @ +システムコールを加えた. + +システムコール {\tt perror} を用いて, +tcpip のエラー等を表示するようにした. +{\tt eventail/data/test32.sm1} の途中のエラーは, +GET では受渡しできるデータの量に制限があるため +起きたようであるが, 適切なエラーメッセージがなくて +原因の究明に時間がかかった反省. + +{\tt misc-2004/11/cgi} も参照のこと. +Risa/Asir の \verb@ set_secure_mode @ , \verb@ set_secure_flag @ +にも対応中. + +\section{2004-12-16, gnuplot v4 への対応.} + +\begin{enumerate} +\item 1.3-1.4 OpenXM/src/kan96xx/Doc/gnuplot.sm1 +\item 1.11 OpenXM/src/kan96xx/plugin/file2.c +\item 1.6 OpenXM/src/kan96xx/plugin/file2.h +\item 1.6 OpenXM/src/kan96xx/plugin/file2.hh +\item 1.4 OpenXM/src/kan96xx/plugin/file2.sm1 +\item 1.15 OpenXM/src/asir-contrib/packages/src/gnuplot +\end{enumerate} + +gnuplot で mouse を利用できるようにしたい. +そのため, gnuplot を batch mode でなく, +interactive mode で利用できるようにした. +http://www.gnuplot.info にあった, サンプルプログラム +{\tt gpReadMouseTest.c} ({\tt misc-2004/12/misc}) +を参考に mkfifo, popen 等を用いて実装した. +mkfifo, popen 等のシステムコールは plugin-file2 へ加えた. + +sm1 でやるテストの手順は以下のとおり. +\begin{verbatim} + (gnuplot.sm1) run + plotstart.aux + (splot x**2-y**2;) gnuplot + plotstop.aux +\end{verbatim} + +Windows, Debian package の build のテストはまだ. +({\tt gnuplot4ox} は {\tt gnuplot} に. {\tt gnuplot\_x11} は {\tt libexec} +の下へ install されるため.) + +\end{document} +