Subject: Maxima servermode: stability of commands....
From: Michele Slocovich
Date: Tue, 2 May 2006 16:29:12 +0200
Hello list,
I've been experimenting and using maxima as a backend for an assessment
system for mathematicks.
The system is called STACK, you might have already heard of it:
http://mantis.york.ac.uk/moodle/course/view.php?id=21
It is open source. It uses maxima as a backend for veryfing students'
answers to questionnaires.
It should also be able to act as an RQP (remote question protocol) server
for other elearning systems (moodle for instance).
I've been working on how this software calls maxima itself.
Originally STACK would launch a single maxima instance for every operation
(slooow and possibly congesting when... say 20 pupils trying a
questionnnaire!).
I've written some code to launch maxima in servermode (-s port) and to act
as a proxy/multiplexer for evaluation calls from STACK.
Apart from the fact that "servermode" is not a correct definition, since
maxima acts, tcp wise, as a client, but let's leave this with documentation
problems,
I would like to inquiry about the stability of the command interface for
maxima.
The problem is that the code developed for 5.9.1 didn't work for 5.9.2,
mostly due to smallcaps issues.
Now 5.9.3 seems not to work with the STACK code written for 5.9.2.
Maybe the approach i'm following is not the right one, maybe there is some
API i can call ? Can anyone of you devise a better strategy ?
On the other side, does anyone know what could have changed in the maxima
calls to make them fail ?
the typical "call" STACK does to maxima (just to give you an idea) is:
cab:block([ RANDOM_SEED, OPT_OUTPUT, OPT_NoFloats, sqrtdispflag, simp,
assume_pos,n,m,p,q,questionAns,questionStem0,questionStem1,questionNote0],
RANDOM_SEED:1144827616, OPT_OUTPUT:"LaTeX", make_multsgn(dot),
make_complexJ(i), OPT_NoFloats:true, sqrtdispflag:true, simp:true,
assume_pos:false, print("[TimeStamp= [ 1146579926 ], Locals= [ ") ,
print("0=[ error= ["), cte("n",errcatch(n:3)) , print("1=[ error= [=
"),
cte("m",errcatch(m:5)) , print("2=[ error= ["),
cte("p",errcatch(p:2*(x-n)^2*(x-m))) , print("3=[ error= ["),
cte("q",errcatch(q:expand(p))) , print("4=[ error= ["),
cte("questionAns",errcatch(questionAns:p)) , print("5=[ error= ["),
cte("questionStem0",errcatch(questionStem0:q)) , print("6=[ error= ["),
cte("questionStem1",errcatch(questionStem1:n)) , print("7=[ error= ["),
cte("questionNote0",errcatch(questionNote0:p)) , print("] ]") , return(true=
)
);
can you spot something whose behaviour has changed from 5.9.2 to 5.9.3 ?
saluti,
Michele