From: dan j. <djo...@ou...> - 2014-02-27 15:49:39
|
I have noticed since Maxima-5.26 for OS X, it seems that the output of '?' and 'describe' is missing the end of line (EOL) in its last line of output. I have a program that reads the output of '?' and 'describe' and it is now blocking after reading the last line of output. Please advise. Thanks! |
From: Robert D. <rob...@gm...> - 2014-02-27 19:21:31
|
On 2014-02-27, dan jones <djo...@ou...> wrote: > I have noticed since Maxima-5.26 for OS X, it seems that the output of > '?' and 'describe' is missing the end of line (EOL) in its last > line of output. I have a program that reads the output of '?' and > 'describe' and it is now blocking after reading the last line of > output. Please advise. Thanks! Looking at the code, I see that the info text is supposed to be terminated by a couple of platform-specific end of line characters ... Is it possible that 'describe' is writing the wrong character? (Possibly newline instead of carriage return, which I think is the appropriate character for OS X.) Can you capture the actual text and run it through 'od -c' or something like that so we can see for sure? Also the output of Maxima's 'build_info()' function. It occurs to me now that maybe the problem is that the .info files contain only newlines and maybe that is causing confusion. But then a program expecting carriage returns would get confused on the first line. best Robert Dodier |
From: Robert D. <rob...@gm...> - 2014-02-28 03:08:13
|
Dan, I'm a little confused. Wouldn't you expect readLine to block until there is more text to read? Perhaps it would help to back up a little -- can you describe the larger goal you're driving at here? best, Robert Dodier ---------- Forwarded message ---------- From: dan jones <djo...@ou...> Date: Thu, Feb 27, 2014 at 1:31 PM Subject: RE: [Maxima-discuss] EOL issue To: Robert Dodier <rob...@gm...> Thanks for the hint. The program (written in java) blocks on: String aline=input.readLine(); The program did read all the 'visible' output of '?' and 'describe' before blocking. I will download Maxima-5.30 OS X version to my Mac again and post the result of 'od -c'. Thanks again. D.J |
From: Volker v. N. <vol...@gm...> - 2014-02-28 14:01:27
|
readLine() is only able to finish if there is a (platform dependent) line terminator. As a workaround you can use the various read() Methods of a BufferedReader and with ready() or available() you can ensure that there is something to read. HTH Volker van Nek Am 28.02.2014 04:08, schrieb Robert Dodier: > Dan, I'm a little confused. Wouldn't you expect readLine to block > until there is more text to read? > > Perhaps it would help to back up a little -- can you describe the > larger goal you're driving at here? > > best, > > Robert Dodier > > ---------- Forwarded message ---------- > From: dan jones <djo...@ou...> > Date: Thu, Feb 27, 2014 at 1:31 PM > Subject: RE: [Maxima-discuss] EOL issue > To: Robert Dodier <rob...@gm...> > > > Thanks for the hint. The program (written in java) blocks on: > > String aline=input.readLine(); > > The program did read all the 'visible' output of '?' and 'describe' > before blocking. > > I will download Maxima-5.30 OS X version to my Mac again and post the > result of 'od -c'. > > Thanks again. > > D.J > > ------------------------------------------------------------------------------ > Flow-based real-time traffic analytics software. Cisco certified tool. > Monitor traffic, SLAs, QoS, Medianet, WAAS etc. with NetFlow Analyzer > Customize your own dashboards, set traffic alerts and generate reports. > Network behavioral analysis & security monitoring. All-in-one tool. > http://pubads.g.doubleclick.net/gampad/clk?id=126839071&iu=/4140/ostg.clktrk > _______________________________________________ > Maxima-discuss mailing list > Max...@li... > https://lists.sourceforge.net/lists/listinfo/maxima-discuss > |
From: Dan <djo...@ou...> - 2014-02-28 16:25:17
|
Robert Dodier <robert.dodier <at> gmail.com> writes: > > Dan, I'm a little confused. Wouldn't you expect readLine to block > until there is more text to read? > > Perhaps it would help to back up a little -- can you describe the > larger goal you're driving at here? > > best, > > Robert Dodier > Robert, The more complete program is: ... for ( ; ; ) { String aline = input.readLine(); if (aline == null) { break; } … } with pre-Maxima-2.6 OS X, the 'input.readLine()' will read the last line of '?' or 'describe' and loops around to read again and gets a 'null' and break out of the loop. Last night, I tried the following script file (mast.mac) with maxima-5.30 OS X: build_info(); describe(sin); 1+2; describe(cos); the result out is: Maxima version: "5.30.0" Maxima build date: "2013-04-22 13:48:12" Host type: "i386-apple-darwin11.4.2" Lisp implementation type: "SBCL" Lisp implementation version: "1.0.55.0-abb03f9" -- Function: sin (<x>) - Sine. There are also some inexact matches for `sin'. Try `?? sin' to see them. true The output is obtained from maxima --very-quiet<maxt.mac >xxx at the OS X command prompt, no java is involved here. As you can see, there is no output of '1+2' and 'describe(cos)' after 'describe(sin)'. Running maxt.mac under maxima-5.25 produces full result. The goal here is to get the output of 'describe' to build a corpus of maxima document. |
From: Robert D. <rob...@gm...> - 2014-02-28 19:16:17
|
On 2014-02-28, Dan <djo...@ou...> wrote: > The output is obtained from > > maxima --very-quiet<maxt.mac >xxx Do I understand correctly that the overall procedure is: maxima --very-quiet < maxt.mac > xxx java MyProgram < xxx ?? If so, that makes it a little easier to debug. Can you create the output file using each version of Maxima, and post the result of od -c xxx ? Then we will be able to see exactly what characters are different (and presumably causing readLine to get confused). > The goal here is to get the output of 'describe' to > build a corpus of maxima document. If so, perhaps you'll consider writing the program in Lisp or even Maxima itself -- I dunno, maybe: for s in [sin, cos, tan, ...] do apply (describe, [s]); (apply(describe, ...) is a standard workaround because describe quotes its arguments so describe(s) attempts to describe a topic named "s".) HTH Robert Dodier |
From: Dan <djo...@ou...> - 2014-02-28 22:30:13
|
Robert Dodier <robert.dodier <at> gmail.com> writes: > > On 2014-02-28, Dan <djones_cas <at> outlook.com> wrote: > > > The output is obtained from > > > > maxima --very-quiet<maxt.mac >xxx > > Do I understand correctly that the overall procedure is: > > maxima --very-quiet < maxt.mac > xxx > java MyProgram < xxx > > ?? > > If so, that makes it a little easier to debug. Can you create the output > file using each version of Maxima, and post the result of od -c xxx ? > Then we will be able to see exactly what characters are different (and > presumably causing readLine to get confused). > > > The goal here is to get the output of 'describe' to > > build a corpus of maxima document. > > If so, perhaps you'll consider writing the program in Lisp or even > Maxima itself -- I dunno, maybe: > > for s in [sin, cos, tan, ...] do apply (describe, [s]); > > (apply(describe, ...) is a standard workaround because describe quotes > its arguments so describe(s) attempts to describe a topic named "s".) > > HTH > > Robert Dodier > m1.mac is: build_info(); describe(sin); 1+2; With maxima-5.30, 'maxima --very-quiet<m1.mac >xxx' produces: Maxima version: "5.30.0" Maxima build date: "2013-04-22 13:48:12" Host type: "i386-apple-darwin11.4.2" Lisp implementation type: "SBCL" Lisp implementation version: "1.0.55.0-abb03f9" -- Function: sin (<x>) - Sine. There are also some inexact matches for `sin'. Try `?? sin' to see them. true and 'od -c xxx' shows: 0000000 \n M a x i m a v e r s i o n 0000020 : " 5 . 3 0 . 0 " \n M a x i m 0000040 a b u i l d d a t e : " 2 0000060 0 1 3 - 0 4 - 2 2 1 3 : 4 8 : 0000100 1 2 " \n H o s t t y p e : " 0000120 i 3 8 6 - a p p l e - d a r w i 0000140 n 1 1 . 4 . 2 " \n L i s p i m 0000160 p l e m e n t a t i o n t y p 0000200 e : " S B C L " \n L i s p i 0000220 m p l e m e n t a t i o n v e 0000240 r s i o n : " 1 . 0 . 5 5 . 0 0000260 - a b b 0 3 f 9 " \n \n - - F 0000300 u n c t i o n : s i n ( < x 0000320 > ) \n - S i n e . \n 0000340 \n \n T h e r e a r e a l 0000360 s o s o m e i n e x a c t 0000400 m a t c h e s f o r ` s i n 0000420 ' . \n T r y ` ? ? s i n 0000440 ' t o s e e t h e m . \n \n 0000460 * 0000520 t r u e \n 0000532 Noticed the '*' under 0000460. With maxima-5.25, 'maxima --very-quiet<m1.mac >xxx' produces: Maxima version: 5.25.1 Maxima build date: 9:14 9/5/2011 Host type: i686-apple-darwin10.8.0 Lisp implementation type: SBCL Lisp implementation version: 1.0.47 -- Function: sin (<x>) - Sine. There are also some inexact matches for `sin'. Try `?? sin' to see them. true 3 and 'od -c xxx' shows: 0000000 \n M a x i m a v e r s i o n : 0000020 5 . 2 5 . 1 \n M a x i m a b 0000040 u i l d d a t e : 9 : 1 4 0000060 9 / 5 / 2 0 1 1 \n H o s t t y 0000100 p e : i 6 8 6 - a p p l e - d 0000120 a r w i n 1 0 . 8 . 0 \n L i s p 0000140 i m p l e m e n t a t i o n 0000160 t y p e : S B C L \n L i s p 0000200 i m p l e m e n t a t i o n v 0000220 e r s i o n : 1 . 0 . 4 7 \n \n 0000240 \n \n - - F u n c t i o n : 0000260 s i n ( < x > ) \n 0000300 - S i n e . \n \n \n T h e r 0000320 e a r e a l s o s o m e 0000340 i n e x a c t m a t c h e s 0000360 f o r ` s i n ' . \n T r y 0000400 ` ? ? s i n ' t o s e e 0000420 t h e m . \n \n 0000440 0000460 t r u 0000500 e \n 0000520 0000540 3 \n 0000553 Per your suggestion, I tried m2.mac below: build_info(); apply(describe, [sin]); 1+2; on, maxima-5.26, 'maxima --very-quiet <m2.mac >yyy' produces: Maxima version: "5.30.0" Maxima build date: "2013-04-22 13:48:12" Host type: "i386-apple-darwin11.4.2" Lisp implementation type: "SBCL" Lisp implementation version: "1.0.55.0-abb03f9" -- Function: sin (<x>) - Sine. There are also some inexact matches for `sin'. Try `?? sin' to see them. true Notice output contains no result of '1+2'. 'od -c yyy' produces: 0000000 \n M a x i m a v e r s i o n 0000020 : " 5 . 3 0 . 0 " \n M a x i m 0000040 a b u i l d d a t e : " 2 0000060 0 1 3 - 0 4 - 2 2 1 3 : 4 8 : 0000100 1 2 " \n H o s t t y p e : " 0000120 i 3 8 6 - a p p l e - d a r w i 0000140 n 1 1 . 4 . 2 " \n L i s p i m 0000160 p l e m e n t a t i o n t y p 0000200 e : " S B C L " \n L i s p i 0000220 m p l e m e n t a t i o n v e 0000240 r s i o n : " 1 . 0 . 5 5 . 0 0000260 - a b b 0 3 f 9 " \n \n - - F 0000300 u n c t i o n : s i n ( < x 0000320 > ) \n - S i n e . \n 0000340 \n \n T h e r e a r e a l 0000360 s o s o m e i n e x a c t 0000400 m a t c h e s f o r ` s i n 0000420 ' . \n T r y ` ? ? s i n 0000440 ' t o s e e t h e m . \n \n 0000460 * 0000520 t r u e \n 0000532 the '*' (under 0000460) is sticking out here again. I hope this helps. If more output is needed, please let me know. |
From: Robert D. <rob...@gm...> - 2014-02-28 23:55:48
|
On 2014-02-28, Dan <djo...@ou...> wrote: > 0000420 ' . \n T r y ` ? ? s i n > 0000440 ' t o s e e t h e m . \n \n > 0000460 > * > 0000520 t r u e \n > 0000532 The asterisk in the od output means that the intervening lines are just the same as the preceding one. In this case, the line starting at offset 460 (octal) comprises 16 spaces, so there are 2 times 16 more spaces, then the one starting at 520 which contains "true". What I see in these output files is that different versions of Maxima output different stuff -- it doesn't have anything to do with Java. Is it a problem capturing the stuff -- for example, if you execute maxima --very-quiet < foo.mac (without redirecting the output) do you see the output which is supposed to follow the output of describe(sin) ? Do you see all of the output if you execute the input script via maxima --very-quiet --batch=foo.mac or maxima --very-quiet --batch-string='load("foo.mac");' or maxima --very-quiet --batch-string='batch("foo.mac");' (These should all work the same, but it is plausible that they might act differently due to subtle bugs.) HTH Robert Dodier |
From: Leo B. <l_b...@us...> - 2014-03-01 15:17:10
|
> > On 2014-02-28, Dan <djones_cas <at> outlook.com> wrote: > > > > > The output is obtained from > > > > > > maxima --very-quiet<maxt.mac >xxx > > > > > The goal here is to get the output of 'describe' to > > > build a corpus of maxima document. I am not sure why you don't use the info files supplied with Maxima to do this, since describe is just emitting fragments of those info files. Anyhow, if you want to use Maxima to supply input to your Java program, you could consider using customized delimiters. E.g. (%i1) my_describe(f) := block([os:make_string_output_stream()], with_stdout(os,apply('describe,[f])), printf(true,"^L~%~a~%^L~%",get_output_stream_string(os)))$ (%i2) my_describe(sin); ^L -- Function: sin (<x>) - Sine. There are also some inexact matches for `sin'. Try `?? sin' to see them. ^L Of course, the delimiters may just be the needed number of EOLs to get your screen-scraper working again. Btw, I was playing around writing a Lisp info reader in December, and I noticed that the info files produced by makeinfo version 4.x and 5.x differ in subtle ways, including the number and location of EOLs inf different parts of the info document. I wonder if you are not witnessing the effects of this. Leo |
From: dan <djo...@ou...> - 2014-03-02 04:27:46
|
Leo Butler <l_butler <at> users.sourceforge.net> writes: > I am not sure why you don't use the info files supplied with Maxima to > do this, since describe is just emitting fragments of those info > files. > > Anyhow, if you want to use Maxima to supply input to your Java > program, you could consider using customized delimiters. E.g. > > (%i1) my_describe(f) := block([os:make_string_output_stream()], > with_stdout(os,apply('describe,[f])), > printf(true,"^L~%~a~%^L~%",get_output_stream_string(os)))$ > > (%i2) my_describe(sin); > ^L > > -- Function: sin (<x>) > > - Sine. > > There are also some inexact matches for `sin'. > Try `?? sin' to see them. > > ^L Thank you for the suggestion. I will try your 'my_describe' approach. What got me into this 'rabbit-hole' is the inconsistency between different versions of maxima (OS X) I have observed. I consider such inconsistency bugs and would still like to see it gets fixed. I can not do it myself since I have very limited programming ability (I only know that (car '(A B C)) will return A :) |
From: dan <djo...@ou...> - 2014-03-03 23:16:30
|
Robert Dodier <robert.dodier <at> gmail.com> writes: > What I see in these output files is that different versions of Maxima > output different stuff -- it doesn't have anything to do with Java. > Is it a problem capturing the stuff -- for example, if you execute > > maxima --very-quiet < foo.mac > > (without redirecting the output) do you see the output which is > supposed to follow the output of describe(sin) ? > > Do you see all of the output if you execute the input script via > > maxima --very-quiet --batch=foo.mac > > or > > maxima --very-quiet --batch-string='load("foo.mac");' > > or > > maxima --very-quiet --batch-string='batch("foo.mac");' > > (These should all work the same, but it is plausible that they might > act differently due to subtle bugs.) > case 1) maxima --very-quiet < foo.mac yes, i see everything. case 2) maxima --very-quiet --batch=foo.mac Don't see the output follows 'describe' case 3) maxima --very-quiet --batch-string='load("foo.mac");' same as case2) Thank you for your explanations. Should a bug report be filed about this? |
From: dan j. <djo...@ou...> - 2014-03-04 02:45:30
|
> Robert Dodier <robert.dodier <at> gmail.com> writes: > > What I see in these output files is that different versions of Maxima > > output different stuff -- it doesn't have anything to do with Java. > > Is it a problem capturing the stuff -- for example, if you execute > > > > maxima --very-quiet < foo.mac > > > > (without redirecting the output) do you see the output which is > > supposed to follow the output of describe(sin) ? > > > > Do you see all of the output if you execute the input script via > > > > maxima --very-quiet --batch=foo.mac > > > > > > or > > > > maxima --very-quiet --batch-string='load("foo.mac");' > > > > or > > > > maxima --very-quiet --batch-string='batch("foo.mac");' > > > > (These should all work the same, but it is plausible that they might > > act differently due to subtle bugs.) > > > case 1) maxima --very-quiet < foo.mac yes, i see everything. case 2) maxima --very-quiet --batch=foo.mac Don't see the output follows 'describe' case 3) maxima --very-quiet --batch-string='load("foo.mac");' same as case2) Thank you for your explanations. Should a bug report be filed about this? |
From: Robert D. <rob...@gm...> - 2014-03-04 23:40:12
|
On 2014-03-03, dan <djo...@ou...> wrote: > case 1) maxima --very-quiet < foo.mac > yes, i see everything. > > case 2) maxima --very-quiet --batch=foo.mac > Don't see the output follows 'describe' > > case 3) maxima --very-quiet --batch-string='load("foo.mac");' > same as case2) > > Thank you for your explanations. Should a bug report be filed about this? Yes, please do open a bug report. Thanks for your help. Robert Dodier |