Please find bugs in http://flask.sagenb.org. Is it slow? Fast?
Broken in *any* way at all?
This is the result of a huge amount of awesome work of Rado Kirov and
Mike Hansen and many, many others.
There is exactly one known bug -- JMOL 3d graphics do not work at all.
This is running *multithreaded* so it may actually be vastly more
scalable than the previous notebook... some testing has suggested
this.
-- William
--
William Stein
Professor of Mathematics
University of Washington
http://wstein.org
very cool, works more or less just like it is locally over here!
I also ran that silly code:
s = 0
for i in xrange(1e9):
s = i
print s
after about 10-20 secs nothing happened, and selecting "interrupt" it
told me that i cannot be interrupted (red box, top right). But
anyways, then it worked fine and has fully "recovered" ;)
+1 for openid support!
H
Jmol doesn't work, as far as we can tell. We aren't sure why, though.
Kudos to whoever can figure out why jmol isn't working!
It seems that the jmol applet loads, but it can't find the file
containing the jmol instructions, for some reason. It may be that what
we really should do is just port the new jmol patch up on trac to work
on this new server.
And congrats to Mike, Rado, the many testers, and others who got this
all working! It will be *much* easier to understand and modify the
notebook code after we migrate to this.
Thanks,
Jason
> +1 for openid support!
+1 too, but with one slight problem: I connected using my google id and now my
username is something like "openidXisFhSuwsA" moreover it stay as such when in
published my worksheet. I'd rather have my real name here if technically
possible.
Nice work guys. I also have one question:
In my university, we have a local notebook server (the university policy
forbid to have it public) which I use for teaching. On this server account are
for the moment created by a python script by the sysadmin but he is planning
to work on a LDAP connection. Will there be any change on that part on the
notebook server ? Should I refrain him to work on it now until the new flask
is out ?
Cheers,
Florent
In case it helps, I see this on console:
-%<-
java version "1.6.0_20"
OpenJDK Runtime Environment (IcedTea6 1.9.7) (mandriva-16.b20-x86_64)
OpenJDK 64-Bit Server VM (build 19.0-b09, mixed mode)
Exception in thread "Thread-6" java.lang.NullPointerException
at sun.applet.AppletPanel.showAppletStatus(AppletPanel.java:947)
at sun.applet.AppletPanel.run(AppletPanel.java:607)
at java.lang.Thread.run(Thread.java:636)
urlImage=jar:file:/home/pcpa/.icedteaplugin/cache/http/flask.sagenb.org/java/jmol/JmolApplet0.jar!/jmol75x29x8.gif
Jmol applet jmolApplet0__7259920705109835__ initializing
AppletRegistry.checkIn(jmolApplet0__7259920705109835__)
applet context: -applet
appletDocumentBase=http://flask.sagenb.org/doc/live/tutorial/
appletCodeBase=http://flask.sagenb.org/java/jmol/
(C) 2008 Jmol Development
Jmol Version 11.6.16 2008-11-24 13:39
java.vendor:Sun Microsystems Inc.
java.version:1.6.0_20
os.name:Linux
memory:33.7/91.0
useCommandThread: false
appletId:jmolApplet0__7259920705109835__
FileManager opening http://flask.sagenb.org/java/jmol/appletweb/SageMenu.mnu
defaults = "Jmol"
backgroundColor = "black"
language=pt_BR
FileManager opening
http://flask.sagenb.org/home/_sage_/1/cells/14/sage0-size500.jmol?1301150152
script compiler ERROR: esperado um comando
----line 1 command 1 of /home/_sage_/1/cells/14/sage0-size500.jmol?1301150152:
>>>> <!DOCTYPE html> <<<<
ERRO no "script": script compiler ERROR: esperado um comando
----line 1 command 1 of /home/_sage_/1/cells/14/sage0-size500.jmol?1301150152:
>>>> <!DOCTYPE html> <<<<
eval ERROR:
----line 1 command 1:
script >> "/home/_sage_/1/cells/14/sage0-size500.jmol?1301150152" <<
-%<-
But testing on chromium-browser, firefox frequently is "more compatible".
I solved a similar issue of jmol not understanding the input in the mandriva
sagemath package, but for console use, by running "jmol -s", important
bits should be:
-%<-
--- sage-4.6.2/spkg/build/sage-4.6.2/sage/plot/plot3d/base.pyx.orig 2011-01-14
18:06:01.349974001 -0200
+++ sage-4.6.2/spkg/build/sage-4.6.2/sage/plot/plot3d/base.pyx 2011-01-14
18:07:03.463973996 -0200
@@ -817,12 +817,7 @@ end_scene""" % (render_params.antialiasi
return box_min, box_max
def _prepare_for_jmol(self, frame, axes, frame_aspect_ratio,
aspect_ratio, zoom):
- from sage.plot.plot import EMBEDDED_MODE
- if EMBEDDED_MODE:
- s = 6
- else:
- s = 3
- box_min, box_max =
self._rescale_for_frame_aspect_ratio_and_zoom(s, frame_aspect_ratio,
zoom)
+ box_min, box_max =
self._rescale_for_frame_aspect_ratio_and_zoom(6, frame_aspect_ratio,
zoom)
a_min, a_max = self._box_for_aspect_ratio(aspect_ratio,
box_min, box_max)
return self._transform_to_bounding_box(box_min, box_max,
a_min, a_max, frame=frame,
axes=axes, thickness=1,
@@ -1110,7 +1105,7 @@ end_scene""" % (render_params.antialiasi
T = self._prepare_for_jmol(frame, axes,
frame_aspect_ratio, aspect_ratio, zoom)
T.export_jmol(archive_name, force_reload=EMBEDDED_MODE,
zoom=zoom*100, **kwds)
- viewer_app = "sage-native-execute " +
os.path.join(sage.misc.misc.SAGE_LOCAL, "bin/jmol")
+ viewer_app = "jmol -s"
# We need a script to load the file
f = open(filename + '.jmol', 'w')
-%<-
While not exactly solving the issue, I hope this information may
help find the cause,
but the -s flag should only be required for newer jmol.
> And congrats to Mike, Rado, the many testers, and others who got this all
> working! It will be *much* easier to understand and modify the notebook
> code after we migrate to this.
>
> Thanks,
>
> Jason
Paulo
I just tested with firefox also, to ensure it is not some chromium-browser
issue, but got the same results. With some extra tests I could see the
contents with this procedure:
cut&paste from jvm debug output in browser, for example in my test
http://flask.sagenb.org/home/_sage_/4/cells/14/sage0-size500.jmol?1301151907
then, look at the contents of sage0-size500.jmol and download
http://flask.sagenb.org//home/_sage_/4/cells/14/sage0-size500-525945175.jmol.zip
then, unzip sage0-size500-525945175.jmol.zip and run jmol -s SCRIPT
I think it may be an authorization issue, because if using wget to fetch
the first file, it downloads the top page with form for login and password.
> *We are working on patches to Jmol in the present notebook. There are
> still some asychronicity issues that I think I've almost got a handle
> on. Let's not try to move this stuff to the new notebook until that
> is solved. I hope today :)
No problems :-) I just tested jmol because of comments, and it
usually is what people want to see first, interactive 3d graphics :-)
> Jonathan
Paulo
With the flask.sagenb.org testing notebook, it seems like when I click
on the "Rate it" button on a published worksheet, it doesn't work,
e.g., here:
http://flask.sagenb.org/home/pub/2/
William
Even better: clone the flask notebook, make the changes there, and get
them merged into the new notebook. With the flask notebook out there in
testing, there's no reason that development has to stall on the flask
notebook.
Jason
I already applied all of your patches to my local copy of the flask
notebook, and I think everything is probably good to go except for the
problem I outline below.
Short version: when jmol requests a file, flask doesn't think the
request comes from an authenticated user, so it redirects jmol to the
notebook homepage so that jmol can log in. I think jmol should pass the
session cookie with its request to let flask know that the request is
coming from an authenticated user.
Long version:
I applied the following patch to devel/sagenb/flask_version/base.py:
diff -r 91e83c46bae5 flask_version/base.py
--- a/flask_version/base.py Wed Mar 16 03:40:25 2011 -0700
+++ b/flask_version/base.py Sat Mar 26 18:59:17 2011 -0500
@@ -23,6 +23,9 @@
self.add_static_path('/javascript', DATA)
self.add_static_path('/static', DATA)
self.add_static_path('/java', DATA)
+ import mimetypes
+ mimetypes.add_type('text/plain','.jmol')
+
#######
# Doc #
@@ -267,6 +270,8 @@
@app.before_request
def set_notebook_object():
g.notebook = notebook
+ if not request.path.endswith('alive'):
+ print "REQUEST: ", request
########################
# Register the modules #
The first hunk (from Ira Hanson) ensures that ".jmol" files are
delivered as text (otherwise, it seems that they are delivered as binary
something-or-other). The second hunk prints out every request that is
made of the server. Then I opened a new worksheet and tried to create a
jmol plot. Here is the relevant logging info:
REQUEST: <Request 'http://localhost:8000/home/admin/309/JmolApplet' [GET]>
REQUEST: <Request
'http://localhost:8000/home/admin/309/cells/1/sage0-size500.jmol?1301173518'
[GET]>
REQUEST: <Request
'http://localhost:8000/?next=http%3A%2F%2Flocalhost%3A8000%2Fhome%2Fadmin%2F309%2Fcells%2F1%2Fsage0-size500.jmol%3F1301173518'
[GET]>
Notice that jmol tries to get the .jmol file. However, it is redirected
to the root with a next query parameter. This indicates to me that
flask did not think that jmol had permissions to get the file, and
redirected jmol to the root so it could log in. So I think the key
problem here is that when jmol tries to request the .jmol file, it isn't
giving the necessary cookies or whatever to let flask know that it is
part of the current session.
So how do we solve this? How does flask know that jmol's request is
part of the current logged-in session? If jmol passed the right cookie,
I think that would do it. We could also just turn off authentication
checks for retrieving files from cells, though that sounds risky. I
think that would be what was done with the old notebook, though.
Another thing we could do is pass a secret key to jmol which would
enable it to retrieve the file, even if it didn't send the session
cookie back to flask with its request for the file.
Rado or Mike: how do you think we should get jmol requests to be
recognized as requests coming from an authenticated user?
Jonathan: do you know any other places where jmol is used behind a
login, so it has to request files and data with some sort of session
cookie or something?
Thanks,
Jason
Where can we find the flask notebook code with all the dependencies needed?
And any patches needed for sage?
Would be cool to toy with this locally.
Francois
This email may be confidential and subject to legal privilege, it may not reflect the views of the University of Canterbury, and it is not guaranteed to be virus free. If you are not an intended recipient, please notify the sender immediately and erase all copies of the message and any attachments. Please refer to http://www.canterbury.ac.nz/emaildisclaimer for more information.
https://code.google.com/r/rkirov-flask/
I also applied some of the patches at #9232 and #9238 and the new jmol
spkg there too. I think that this issue of jmol having authenticated
requests is orthogonal to the upgrade at those two tickets, though.
Jason
Broken in *any* way at all?
On Sun, Mar 27, 2011 at 1:08 AM, Jason Grout
<jason...@creativetrax.com> wrote:
> Rado or Mike: how do you think we should get jmol requests to be recognized
> as requests coming from an authenticated user?
The issue is that the secure cookie that Flask uses is sent as
httponly, which the Java applet won't send. Adding this patch to the
notebook code will fix that:
diff --git a/flask_version/base.py b/flask_version/base.py
--- a/flask_version/base.py
+++ b/flask_version/base.py
@@ -47,6 +53,28 @@
endpoint='/static'+base_url,
view_func=partial(self.static_view_func, root_path))
+ def save_session(self, session, response):
+ """
+ This method needs to stay in sync with the version in Flask.
+ The only modification made to it is the ``httponly=False``
+ passed to ``save_cookie``.
+
+ Saves the session if it needs updates. For the default
+ implementation, check :meth:`open_session`.
+
+ :param session: the session to be saved (a
+ :class:`~werkzeug.contrib.securecookie.SecureCookie`
+ object)
+ :param response: an instance of :attr:`response_class`
+ """
+ expires = domain = None
+ if session.permanent:
+ expires = datetime.utcnow() + self.permanent_session_lifetime
+ if self.config['SERVER_NAME'] is not None:
+ domain = '.' + self.config['SERVER_NAME']
+ session.save_cookie(response, self.session_cookie_name,
+ expires=expires, httponly=False, domain=domain)
+
def message(self, msg, cont='/', username=None, **kwds):
"""Returns an error message to the user."""
template_dict = {'msg': msg, 'cont': cont, 'username': username}
This still doesn't fix the issue for me, since the Jmol applet then
requests the .zip file from the worksheet directory rather than the
cell directory (and gets a 404). However, this should not be too hard
to track down.
--Mike
You're brilliant!
As I understand it, putting httponly=False opens us up to another avenue
of cross-site scripting attacks, though [1]. If there's any way to
avoid it, it seems that would be good. Here are some possible options:
1. Use javascript to request the files for the java applet, instead of
making the applet request the files
2. Making the .jmol and .jmol.zip files not require authentication to
retreive
What do you think, Mike?
Thanks,
Jason
[1] See
http://www.codinghorror.com/blog/2008/08/protecting-your-cookies-httponly.html,
thought http://www.gnucitizen.org/blog/why-httponly-wont-protect-you/
presents the case that httponly does not protect you against everything.
I've posted a fix to #11078 (though not a patch, since my copy of the
notebook also has the new updated jmol patches).
Thanks,
Jason
Rado: I have applied the patch to my clone at
https://code.google.com/r/jasongrout-sagenb/. Can you pull from me? To
get JMOL fully working, a change needs to be made to the sage library as
well; see #11078.
Thanks,
Jason
I've made trac ticket 11080 [1] to keep track of progress and needed
patches for the flask notebook.
Jason
For some reason, I can't insert text cells. I insert a text cell and
the page refreshes. My guess is that somehow the state numbers get out
of sync and that forces a page refresh.
Jason
I've committed a fix to my clone:
https://code.google.com/r/jasongrout-sagenb/source/detail?r=7a13d03fde6b0e341da0b86238db5c3305719a63
We came, saw, and conquered this issue in January. I remember us fixing
it. Well, anyways, there's the fix. Can you look over it Rado and pull
my two changes to the official tree?
Jason
I have updated http://flask.sagenb.org and now 3d works, and I've also
not seen the tinymce problem anymore. Great work guys! Are there any
remaining known bugs?
William
>
> Rado
>
> On Mar 30, 8:41 am, Jason Grout <jason-s...@creativetrax.com> wrote:
>> On 3/29/11 7:07 PM, Jason Grout wrote:
>>
>> > On 3/25/11 9:03 PM, William Stein wrote:
>> >> Hi,
>>
>> >> Please find bugs inhttp://flask.sagenb.org. Is it slow? Fast?
>> >> Broken in *any* way at all?
>>
>> > For some reason, I can't insert text cells. I insert a text cell and the
>> > page refreshes. My guess is that somehow the state numbers get out of
>> > sync and that forces a page refresh.
>>
>> I've committed a fix to my clone:
>>
>> https://code.google.com/r/jasongrout-sagenb/source/detail?r=7a13d03fd...
>>
>> We came, saw, and conquered this issue in January. I remember us fixing
>> it. Well, anyways, there's the fix. Can you look over it Rado and pull
>> my two changes to the official tree?
>>
>> Jason
>
> --
> To post to this group, send an email to sage-...@googlegroups.com
> To unsubscribe from this group, send an email to sage-devel+...@googlegroups.com
> For more options, visit this group at http://groups.google.com/group/sage-devel
> URL: http://www.sagemath.org
> On Tue, Mar 29, 2011 at 9:21 PM, Rado <rki...@gmail.com> wrote:
>> Great job Jason and Mike. Seems the Jmol problem is fixed. At least it
>> works here on ubuntu and firefox 3.6 and chromium 10 with sun's java.
>>
>> I pulled Jason's changes into my repo, so every one who pulled from me
>> can do just hg pull; hg up. Finally, there needs to be one line change
>> done in the sage library as given by Jason in http://trac.sagemath.org/sage_trac/ticket/11078.
>> After sage -br you should have Jmol working.
>
> I have updated http://flask.sagenb.org and now 3d works, and I've also
> not seen the tinymce problem anymore. Great work guys! Are there any
> remaining known bugs?
I just followed the above link to the notebook page, and was shown a page where the "password" box has "Error: Wrong password" next to it.
This may have been mentioned before (I've deleted the thread).
Justin
--
Justin C. Walker, Curmudgeon at Large
Director
Institute for the Enhancement of the Director's income
-----------
--
They said it couldn't be done, but sometimes,
it doesn't work out that way.
- Casey Stengel
--
I think this might have to do with browsers automatically trying to login...
>
> Justin
>
> --
> Justin C. Walker, Curmudgeon at Large
> Director
> Institute for the Enhancement of the Director's income
> -----------
> --
> They said it couldn't be done, but sometimes,
> it doesn't work out that way.
> - Casey Stengel
> --
>
>
>
> On Tue, Apr 5, 2011 at 4:39 PM, Justin C. Walker <jus...@mac.com> wrote:
>>
>> On Apr 5, 2011, at 16:31 , William Stein wrote:
>>
>>> On Tue, Mar 29, 2011 at 9:21 PM, Rado <rki...@gmail.com> wrote:
>>>> Great job Jason and Mike. Seems the Jmol problem is fixed. At least it
>>>> works here on ubuntu and firefox 3.6 and chromium 10 with sun's java.
>>>>
>>>> I pulled Jason's changes into my repo, so every one who pulled from me
>>>> can do just hg pull; hg up. Finally, there needs to be one line change
>>>> done in the sage library as given by Jason in http://trac.sagemath.org/sage_trac/ticket/11078.
>>>> After sage -br you should have Jmol working.
>>>
>>> I have updated http://flask.sagenb.org and now 3d works, and I've also
>>> not seen the tinymce problem anymore. Great work guys! Are there any
>>> remaining known bugs?
>>
>> I just followed the above link to the notebook page, and was shown a page where the "password" box has "Error: Wrong password" next to it.
>>
>> This may have been mentioned before (I've deleted the thread).
>
> I think this might have to do with browsers automatically trying to login...
I'm using Safari, and I don't have that configured. At least, it doesn't try on any other site I go to with login on its mind.
J
--
Justin C. Walker, Curmudgeon-At-Large
Institute for the Enhancement of the Director's Income
--------
Experience is what you get
when you don't get what you want.
--------
OK, then I don't know, but I've reported your issue here:
http://code.google.com/p/sagenb/issues/detail?id=4
Also, I found yet another bug, which is less "serious":
http://code.google.com/p/sagenb/issues/detail?id=3
Rado, maybe you can easily fix it?
-- William
It still does not work for me, console log:
-%<-
java version "1.6.0_20"
OpenJDK Runtime Environment (IcedTea6 1.9.7) (mandriva-16.b20-x86_64)
OpenJDK 64-Bit Server VM (build 19.0-b09, mixed mode)
Exception in thread "Thread-6" java.lang.NullPointerException
at sun.applet.AppletPanel.showAppletStatus(AppletPanel.java:947)
at sun.applet.AppletPanel.run(AppletPanel.java:607)
at java.lang.Thread.run(Thread.java:636)
Jmol applet jmolApplet0__446104758884758__ initializing
AppletRegistry.checkIn(jmolApplet0__446104758884758__)
urlImage=jar:file:/home/pcpa/.icedteaplugin/cache/http/flask.sagenb.org/java/jmol/JmolApplet0.jar!/jmol75x29x8.gif
applet context: -applet
appletDocumentBase=http://flask.sagenb.org/doc/live/tutorial/
appletCodeBase=http://flask.sagenb.org/java/jmol/
(C) 2008 Jmol Development
Jmol Version 11.6.16 2008-11-24 13:39
java.vendor:Sun Microsystems Inc.
java.version:1.6.0_20
os.name:Linux
memory:78.8/124.3
useCommandThread: false
appletId:jmolApplet0__446104758884758__
FileManager opening http://flask.sagenb.org/java/jmol/appletweb/SageMenu.mnu
defaults = "Jmol"
backgroundColor = "black"
language=pt_BR
FileManager opening
http://flask.sagenb.org/home/_sage_/109/cells/14/sage0-size500.jmol?1302047733
FileManager opening
http://flask.sagenb.org/home/_sage_/109/cells/14/cells/14/sage0-size500-75953492.jmol.zip
ERRO no "script": io error reading
http://flask.sagenb.org/home/_sage_/109/cells/14/cells/14/sage0-size500-75953492.jmol.zip|SCRIPT:
java.io.FileNotFoundException:
http://flask.sagenb.org/home/_sage_/109/cells/14/cells/14/sage0-size500-75953492.jmol.zip
eval ERROR:
----line 2 command 2 of file
/home/_sage_/109/cells/14/sage0-size500.jmol?1302047733:
script >> "SCRIPT" <<
----line 1 command 1:
script >> "/home/_sage_/109/cells/14/sage0-size500.jmol?1302047733" <<
-%<-
I think this may be related to a patch I once had for sagemath,
because I preferred to patch
it to use make openjdk find files, and not java-sun... but a later
update of openjdk made them
agree again on paths. A newer openjdk was released recently, and I
should update the
mandriva openjdk package soon, and hopefully it will be corrected.
> William
>
>>
>> Rado
>>
>> On Mar 30, 8:41 am, Jason Grout <jason-s...@creativetrax.com> wrote:
>>> On 3/29/11 7:07 PM, Jason Grout wrote:
>>>
>>> > On 3/25/11 9:03 PM, William Stein wrote:
>>> >> Hi,
>>>
>>> >> Please find bugs inhttp://flask.sagenb.org. Is it slow? Fast?
>>> >> Broken in *any* way at all?
>>>
>>> > For some reason, I can't insert text cells. I insert a text cell and the
>>> > page refreshes. My guess is that somehow the state numbers get out of
>>> > sync and that forces a page refresh.
>>>
>>> I've committed a fix to my clone:
>>>
>>> https://code.google.com/r/jasongrout-sagenb/source/detail?r=7a13d03fd...
>>>
>>> We came, saw, and conquered this issue in January. I remember us fixing
>>> it. Well, anyways, there's the fix. Can you look over it Rado and pull
>>> my two changes to the official tree?
>>>
>>> Jason
>>
>> --
>> To post to this group, send an email to sage-...@googlegroups.com
>> To unsubscribe from this group, send an email to sage-devel+...@googlegroups.com
>> For more options, visit this group at http://groups.google.com/group/sage-devel
>> URL: http://www.sagemath.org
Paulo
I'm looking at this, and I can't reproduce it locally, though I see it
on flask.sagenb.org.
William, can you pull from my repository, specifically changeset:
https://code.google.com/r/jasongrout-sagenb/source/detail?r=958d950d80278b054d7465a0180353b4c87f58f0
It's a shot in the dark for what might be the problem.
Thanks,
Jason
I just updated Mandriva cooker to icedtea 1.10.1, icedtea-web 1.0.2,
and openjdk b22,
but still no luck with flask.sagenb.org:
-%<-
java version "1.6.0_22"
OpenJDK Runtime Environment (IcedTea6 1.10.1) (mandriva-16.b22-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)
urlImage=jar:file:/home/pcpa/.icedtea/cache/http/flask.sagenb.org/java/jmol/JmolApplet0.jar!/jmol75x29x8.gif
Jmol applet jmolApplet0__63530260508382__ initializing
AppletRegistry.checkIn(jmolApplet0__63530260508382__)
applet context: -applet
appletDocumentBase=http://flask.sagenb.org/doc/live/tutorial/
appletCodeBase=http://flask.sagenb.org/java/jmol/
(C) 2008 Jmol Development
Jmol Version 11.6.16 2008-11-24 13:39
java.vendor:Sun Microsystems Inc.
java.version:1.6.0_22
os.name:Linux
memory:15.1/61.7
useCommandThread: false
appletId:jmolApplet0__63530260508382__
FileManager opening http://flask.sagenb.org/java/jmol/appletweb/SageMenu.mnu
document not found!
defaults = "Jmol"
backgroundColor = "black"
language=pt_BR
FileManager opening
http://flask.sagenb.org/home/_sage_/242/cells/14/sage0-size500.jmol?1306291255
FileManager opening
http://flask.sagenb.org/home/_sage_/242/cells/14/cells/14/sage0-size500-897772765.jmol.zip
ERRO no "script": io error reading
http://flask.sagenb.org/home/_sage_/242/cells/14/cells/14/sage0-size500-897772765.jmol.zip|SCRIPT:
java.io.FileNotFoundException:
http://flask.sagenb.org/home/_sage_/242/cells/14/cells/14/sage0-size500-897772765.jmol.zip
eval ERROR:
----line 2 command 2 of file
/home/_sage_/242/cells/14/sage0-size500.jmol?1306291255:
script >> "SCRIPT" <<
----line 1 command 1:
script >> "/home/_sage_/242/cells/14/sage0-size500.jmol?1306291255" <<
-%<-
Thanks,
Paulo