[IPython-dev] Notebook CodeCell for editing and executing javascript

Matthias BUSSONNIER bussonniermatthias at gmail.com
Tue Dec 18 12:40:03 EST 2012


Le 18 déc. 2012 à 14:02, Nissim Karpenstein a écrit :

> Hi,
> I'm new here and I wanted to run this by the group before I start working on it.  I'm interested in building a facility to use the notebook to edit and execute javascript code for presenting data from the python kernel.  I know there is a magic function and there is some sort of way to have python code render js in <script> tags, and you can put javascript in the Markdown cells, but I was envisioning something more like a standard codecell, but execution is handled by the browser rather than the kernel.
> Let's say you've loaded some data and run some computations in your python kernel and now you want to display results in the notebook using some javascript library like d3, datatables or processing.  If you want to do this by writing the javascript code in a CodeCell and evaluating that code in the browser you need a couple of things:
> 1) ability to change a code cell language to javascipt in the notebook frontend.  I saw that there is a language field in the notebook file format for CodeCell but it is always = python.
> 2) facility to have the browser javascript engine evaluate the contents of the javascript CodeCell when it is executed by the user
> 3) http REST api that will return json representations of Python objects that exist in the kernel.  (this may already exist, I don't really understand the kernel communication protocol yet).
> There are probably some more things like the ability to add CSS, HTML, js and image resources to the server that it can then serve back to the client.  I see that there's been a lot of discussion related to this in the plugins thread, but maybe there can also be a method for accessing resources from the network and then telling the notebook server to serve them from some path.
> I'd like to implement this and I had a couple of questions:
> 1) Does this fit in with your ideas for the notebook or is editing non python code in CodeCell outside of the vision?
> 2) Should there be another Dropdown for the language of the CodeCell or should there be a javascript option added to the existing select box.
> Thanks
>    -Nissim


My answer will be short, but there are lot more too say here, 
I absolutely don't want to discourage you here, I'm sure there are way to do what you want to seamlessly 
for the user.

No, a direct javascript cell is not envisageable for security reason, and we will soon block js in markdown.
It will be optional but js will be on purpose **painfully** and  opt-in.

But, that what the json handler pull request is made for.
There is a prototype on d3 graph visualization using json handler.

We already have prototype of node/ruby kernel so you might be able to do js/ruby kernel side if needed.

I don't think we have decide yet of multi-language notebook on a per-cell basis without magics.
I wouldn't recommend it as it forces user to think of the kernel where the variable are defined.

But language on a per-notebook basis is totally conceivable, we just need devs from other language...

There are also issues where kernel and server might be on different machines, which we should keep in mind so avoid server as much as possible.

I know there are plan on making ability in browser to run JS in a **safe** sandbox, which are not really ready yet I think, 
when this comes to maturity the ability to execute js in browser, might be revisited, still i might not have access to the DOM directly.

> _______________________________________________
> IPython-dev mailing list
> IPython-dev at scipy.org
> http://mail.scipy.org/mailman/listinfo/ipython-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ipython-dev/attachments/20121218/d6d48730/attachment.html>

More information about the IPython-dev mailing list