=================================================================== RCS file: /home/cvs/OpenXM/src/kan96xx/Doc/changelog-ja.tex,v retrieving revision 1.20 retrieving revision 1.37 diff -u -p -r1.20 -r1.37 --- OpenXM/src/kan96xx/Doc/changelog-ja.tex 2006/02/01 04:16:54 1.20 +++ OpenXM/src/kan96xx/Doc/changelog-ja.tex 2020/03/14 00:50:55 1.37 @@ -1,8 +1,9 @@ -% $OpenXM: OpenXM/src/kan96xx/Doc/changelog-ja.tex,v 1.19 2006/02/01 00:30:05 takayama Exp $ +% $OpenXM: OpenXM/src/kan96xx/Doc/changelog-ja.tex,v 1.36 2018/05/02 02:28:13 takayama Exp $ \documentclass{jarticle} \title{ChangeLog \\ ---kan96xx, kxx, k097} \author{Nobuki Takayama} \date{} +\usepackage{url} \begin{document} \maketitle @@ -129,6 +130,7 @@ \section{2004-09-05, グレブナfanの計算} \begin{enumerate} \item polymake が必要. 9/1, 9/2, 9/3, 9/4 のノートも参照. +@s/2004/08/21-note.pdf に変数等の説明あり. \item OpenXM の cvs への commit は大きい区切りで. 細かい変更は {\tt eventail/cone.sm1} で. \item {\tt OpenXM/src/kan96xx/Doc/gfan.sm1} 1.1 @@ -519,6 +521,462 @@ ox_texmacs --view debug \item {\tt OpenXM/src/kxx/ox\_texmacs.c} 1.27 \item {\tt OpenXM/doc/OpenXM-specs/OX-RFC-103.oxw} 1.6 \end{enumerate} + +\section{2006-02-04, メッセージの localization (ox用)} +オリジナル {\tt misc-2005/A1/cfep/packages/misc}. +\begin{verbatim} +/localizedString.file (Resource/sm1-ja_JP.eucJP.sm1) def +localizedString.load %% 辞書をロードする. +[(parse) (ox.sm1) pushfile] extension +sm1connectr +oxsm1.ccc ( hoge ) oxsubmit +oxsm1.ccc oxpopcmo /e1 set +e1 translateErrorForCfep message %% エラー obj の翻訳 +\end{verbatim} +エラー object の構造. +[serial, 共通エラー番号, message, core] +空欄のときは, $-1$ か null object. + +ソースの変更. +\begin{enumerate} +\item {\tt OpenXM/src/kan96xx/Kan/dr.sm1} 1.53, localizedString を追加. +\item {\tt OpenXM/src/kan96xx/Doc/ox.sm1} 1.52, translateErrorForCfep を修正 +\item {\tt OpenXM/src/kan96xx/Doc/Resource} 翻訳のためのリソース. +\item {\tt OpenXM/src/kxx/Makefile.in} 1.36, Resource をコピー. +\end{enumerate} + +\section{2006-02-04, {\tt -authEncoding file} の実装} + +OX-RFC-104 の {\tt -authEncoding file} を実装. +\begin{verbatim} +~/.openxm/tmp.opt/c.txt --> 1435 (Do not put the newline character.) +~/.openxm/tmp.opt/d.txt --> 1234 +chmod 700 ~/.openxm/tmp.opt +ox -ox ox_sm1 -authEncoding file -passControl c.txt -passData d.txt +[(oxCreateClient) (localhost) 1300 1200 [(1435) (1234)]] extension ; + data ctrl ctrl data +\end{verbatim} + +cfep で MyOpenGLView の event 入力用の delegate ox server ``ox\_nextevent'' +は ox\_asir のサーバである. +``ox\_nextevent'' は +MyOpenGLView から NSPipe, NSTask を用いて MyOpenGLView の出力を +stdin で受信できる状態でないといけない. +MyOpenGLView は {\tt ox} を用いて{\tt ox\_asir} よりの順方向接続をまつ予定. +\begin{enumerate} +\item {\tt OpenXM/src/kxx/oxmain.c} 1.22 +\end{enumerate} + +\section{2006-12-21, UseDsmall option} + +\begin{enumerate} +\item {\tt OpenXM/src/kan96xx/Kan/output.c} +\item {\tt OpenXM/src/kan96xx/Kan/global.c} +\item {\tt OpenXM/src/kan96xx/Kan/kanExport0.c} +\item {\tt OpenXM/src/kan96xx/Kan/option.c} +\item {\tt OpenXM/src/kan96xx/Kan/usage.c} +\end{enumerate} + +{\tt makeDsmall()}. + +\verb@ [(UseDsmall) 1] system_variable @ で +出力の時だけ D が小文字になる. +asir \verb@ print_tex_form @ を呼び出すため導入. + +\section{2007-6-3, mgkz} +\begin{enumerate} +\item {\tt OpenXM/src/kan96xx/Doc/gkz.sm1} 1.2 +\item {\tt OpenXM/src/kan96xx/Doc/printhelp.sm1} 1.9 +\end{enumerate} + +mgkz (メモ的な数学ノートは misc-2006/04) コマンドを追加. +Modified A-hypergeometric system を生成. +printhelp.sm1 に キーワード mgkz を追加. + +プログラム作成方法のメモ. +まず, gkz を mgkz としてコピー. +\verb@ ( ) error @ をプログラムの各部分に入れながら, +[ ] mgkz を実行して, debug. +すると変数の値を観察できて簡単. + +\section{2009-8-26, gfan} +\begin{enumerate} +\item {\tt OpenXM/src/kan96xx/Doc/gfan.sm1} 1.13 +\end{enumerate} + +Grobner cone で 線型空間を除いたものの +次元が $1$ or $0$ の時は正しく動作しない. +この時に エラーメッセージを出す. +(cf. taka: i-hg/crest09/Prog/fan1.sm1, fan2.sm1) + +\section{2009-9-4, gfan} +\begin{enumerate} +\item {\tt OpenXM/src/kan96xx/Doc/gfan.sm1} 1.17 +\item {\tt OpenXM/src/kan96xx/trans/yy\_polymake.y} 1.5 +\item {\tt OpenXM/src/kan96xx/trans/yylex\_polymake.c} 1.5 +\item {\tt OpenXM/src/kan96xx/trans/data} +\end{enumerate} + +gfan.sm1 package は polymake 2.0 の出力に対しては正しく動作する. +しかし 2.2, 2.3 に対して動作しない. +{\tt trans/data/data1b.txt} は 2.0 の出力, +{\tt trans/data/data1.txt} は 2.3 の出力, +入力 property は INEQUALITIES で FACETS を 出力 property としている. + +{\tt trans/data/data2.txt} は簡単な例. + +2.3 では VERTICES が UNDEF となる. これを正しく parse するように polymake2tfb を +変更した. +\begin{verbatim} + ./polymake2tfb +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law. Type "show copying" +and "show warranty" for details. +This GDB was configured as "x86_64-pc-msys". +Type "show configuration" for configuration details. +For bug reporting instructions, please see: +. +Find the GDB manual and other documentation resources online at: +. +For help, type "help". +Type "apropos word" to search for commands related to "word"... +Reading symbols from ./ox_sm1d...done. +(gdb) break main +Breakpoint 1 at 0x10049b7b8: file oxserver00-d.c, line 37. +(gdb) run +Starting program: /home/Nobuki/OX4/OpenXM/src/kxx/ox_sm1d +[New Thread 11260.0x17c8] +[New Thread 11260.0x2e50] +[New Thread 11260.0x8ac] +[New Thread 11260.0x29d0] +[New Thread 11260.0x27b8] + +Breakpoint 1, main (argc=1, argv=0x24cb10) at oxserver00-d.c:37 +37 main(int argc, char *argv[]) { +(gdb) call dup2(open("tmp-o.txt",0),0) +// run macro package : dr.sm1, 9/26,1995 --- Version 09/22, 2013. +sm1>macro package : module1.sm1, 1994 -- Nov 8, 1998 +sm1 version : 3.050615 +sm1 url : http://www.math.kobe-u.ac.jp/KAN +name = ox_sm1 +sm1>--------------------------------------------------- +engineByteOrder=0 +Hello world. +Set EnvOfChildServer. +Set EnvOfStackMachine. + +mtag is 514 (serial=11) : OX_DATA +(CMO_STRING[4],[size=17],$ (1).. (0).. div $), +mtag is 513 (serial=12) : OX_COMMAND + +function_id is 268; SM_executeStringByLocalParser +KSexecuteString( (1).. (0).. div ) + +ERROR(kanExport[0|1].c): KisInvalidRational(): zero division. You have f/0. +Trace: div<-; + +Breakpoint 2, Sm1_popErrorMessage (s=0x10049d084 "executeString: ") + at sm1stackmachine.c:205 +205 char *Sm1_popErrorMessage(char *s) { +(gdb) print s +$2 = 0x10049d084 "executeString: " +(gdb) print ErrorMessageMode +$3 = 2 +(gdb) break popErrorStackByString +Breakpoint 3 at 0x1004033f0: file stackmachine.c, line 1445. +(gdb) continue +Continuing. + +Breakpoint 3, popErrorStackByString () at stackmachine.c:1445 +1445 char *popErrorStackByString(void) { +(gdb) list +1440 }else{ +1441 return( (ErrorStack.ostack)[--(ErrorStack.sp)]); +1442 } +1443 } +1444 +1445 char *popErrorStackByString(void) { +1446 struct object obj = OINIT; +1447 struct object eobj = OINIT; +1448 eobj = popErrorStack(); +1449 if (ectag(eobj) != CLASSNAME_ERROR_PACKET) { +(gdb) break sGC_malloc +Breakpoint 4 at 0x1004035a0: file stackmachine.c, line 1510. +(gdb) continue +Continuing. + +Breakpoint 4, sGC_malloc (n=93) at stackmachine.c:1510 +1510 void *sGC_malloc(size_t n) { /* synchronized function */ +(gdb) up +#1 0x000000010040276b in Sm1_popErrorMessage (s=0x10049d084 "executeString: ") + at sm1stackmachine.c:221 +221 a = (char *) sGC_malloc(sizeof(char)*(strlen(s)+strlen(e)+2)); +(gdb) print s +$4 = 0x10049d084 "executeString: " +(gdb) print e +$5 = 0x6008d4d70 "\nERROR(kanExport[0|1].c): KisInvalidRational(): zero division. You have f/0." +// 正常 +(gdb) continue +Continuing. + 14 [main] ox_sm1d 11260 cygwin_exception::open_stackdumpfile: Dumping stack trace to ox_sm1d.exe.stackdump +[Thread 11260.0x2e50 exited with code 35584] +[Thread 11260.0x8ac exited with code 35584] +[Thread 11260.0x29d0 exited with code 35584] +[Thread 11260.0x2f84 exited with code 35584] +[Thread 11260.0x2a28 exited with code 35584] +[Inferior 1 (process 11260) exited with code 0105400] +(gdb) quit + +GC_malloc や strcpy 等が怪しいとにらむ. + + + char * 系 void * 系の宣言なしが segfault の原因? + strcpy が変. + + kxx/serversm.h に +#include +void *sGC_malloc(int n); +を加える. + ./ox_sm1d ${WFILE} +env CONTENT_LENGTH=`wc -m ${WFILE} | awk '{print $1}'` sm1 -q -s "[(parse) (cgi.sm1) pushfile] extension cgiPolymake quit " <${WFILE} +rm -f ${WFILE} +exit 0 +: rm -f ${WFILE} +\end{verbatim} +} +送信側の {\tt cgiQueryPolymake.curl} は curl の form option を用いて +post message をする. +キーは {\tt oxMessageBody} である. +送る form は {\tt /tmp/sm1-q-cgi.txt???} に生成される. +ここで ??? は pid である. +結果を受け取ったらこの一時ファイルは {\tt OpenXM\_tmp} 環境変数で指定される +folder へ移動される. +{\rm /tmp/sm1-q-cgi*} は動作エラー等により残ることがあるので定期的に削除することが +望ましい. +{\tt cgiQueryPolymake.curl} は polymake version 2 形式の出力を文字列の list として戻す. + +これを tree 形式等に変換しているのは {\tt kan96xx/trans} 内のソースである. +このフォルダはデータ形式の変換等のテストケースとして作成された. +考え方としては, +\begin{center} +\fbox{tree 形式のデータ} $\Leftrightarrow$ +\fbox{tfb 形式のデータ} $\Leftrightarrow$ \fbox{polymake 形式} +$\Leftrightarrow$ \fbox{polymake web server} +\end{center} +{\tt polymake2tfb} は polymake version 2 のファイルを入力とすると +tfb 形式のデータを出力する. +{\tiny +\begin{verbatim} +polymake2tfb < ~/.OpenXM_tmp/sm1-q-cgi-out.txt37402 +polymake.data(polymake.POINTS([[1,0],[1,1]]),polymake.FACETS([[1,-1],[0,1]]),polymake.AFFINE_HULL()) +\end{verbatim} +} +tfb 形式のデータは {\tt ox\_k0} が parse して, それを tree 形式に変換している. +逆変換も {\tt ox\_k0} が行う +(ソース {\tt polymake.sm1}, 関数 {\tt tfbToTree} を参照). \end{document}