Git Product home page Git Product logo

ethercalc's Introduction

EtherCalc

Installation

For global installation (may need root)

npm i -g ethercalc
ethercalc

For local non-root installation

git clone [email protected]:audreyt/ethercalc.git
cd ethercalc
npm i
make

Nodejs older than 6.0

downgrade Nodemailer to v2.7.2

Or install with our Docker image, which comes with support for webworker-threads:

# Install docker and docker-compose
sudo ./misc/linux-install-docker-and-compose.sh

# Run ethercalc on port 80 ( http://localhost/ )
docker-compose up -d

Config database

set env vars:
  REDIS_PORT REDIS_HOST REDIS_SOCKPATH REDIS_PASS REDIS_DB OPENSHIFT_DATA_DIR

Defaults:
  REDIS_HOST = localhost   
  REDIS_PORT = 6379   
  OPENSHIFT_DATA_DIR= process.cwd!

OPENSHIFT_DATA_DIR is used if redis is not Running.

Code is here:
https://github.com/audreyt/ethercalc/blob/df758d4c2f5cbcb00b50e9289a8ba237d4f8fa86/src/db.ls#L5

Send email

Optional - Send email formulas requires OAuth2 & cron  e.g. =email(to, subject, body), =emailAt(time, to, subject, body)

OAuth2 - Set environment vars
1) Tutorial: follow the tutorial to get the 4 environment vars http://masashi-k.blogspot.com.au/2013/06/sending-mail-with-gmail-using-xoauth2.html
2) Set 4 environment vars - see [src/emailer.ls] vars: user, clientId, clientSecret, refreshToken
Tested using gmail, have not tested with other providors

Cron - Required for emailAt formulas.
See *curl* in [.openshift/cron/minutely/timetrigger] for openshift version (openshift](openshift.redhat.com)
The curl checks the database for unsent emails and updates the database after sending.

REST API

Please see API.md for the API Blueprint, or the online version at Apiary.

Runtime Flags

Listening Interface: --host / --port

Specify a specific host and/or a different port for the service.

By default EtherCalc listens at 0.0.0.0:8000 (all IPv4 interfaces).

Using SSL: --keyfile / --certfile

openssl genrsa -out ethercalc-key.pem 1024
openssl req -new -key ethercalc-key.pem -out certrequest.csr
openssl x509 -req -in certrequest.csr -signkey ethercalc-key.pem -out ethercalc-cert.pem
ethercalc --keyfile ethercalc-key.pem --certfile ethercalc-cert.pem

Prefers polling over Websocket: --polling

Useful when running behind a proxy without WebSocket support.

Enable Cross-Origin Resource Sharing: --cors

Useful when setting up EtherCalc as a public REST API server.

URL Prefix: --basepath /path/prefix

Useful when running under an URL rewriter. If running with a nginx reverse proxy, please add this section:

    location /zappa/socket/__local/ {
        rewrite (.*) /path/prefix$1;
    }

Access Control: --key secret

Offers read-write vs. read-only modes. See issues #1 and #4 for details on setting this up.

Disable server-side WebWorkers: --vm

Runs a single-thread background loop with vm.createContext instead of webworker-threads.

Useful for running custom functions in server side that requires full VM access.

Expires inactive spreadsheets: --expire 86400

Deletes a spreadsheet's content after N seconds of inactivity. Activities include accessing with REST API as well as Web UI, including moving the active cell cursor on an opened page.

Licensing

Common Public Attribution License (Socialtext Inc.)

  • socialcalcspreadsheetcontrol.js
  • socialcalctableeditor.js

Artistic License 2.0 (Socialtext Inc.)

  • formatnumber2.js
  • formula1.js
  • socialcalc-3.js
  • socialcalcconstants.js
  • socialcalcpopup.js

Artistic License 2.0 (Framasoft)

  • l10n/fr.json

MIT License (John Resig, The Dojo Foundation)

  • static/jquery.js

MIT License (HubSpot, Inc.)

  • static/vex-theme-flat-attack.css
  • static/vex.combined.min.js
  • static/vex.css

MIT License (Stuart Knightley, David Duponchel, Franz Buchinger, Ant'onio Afonso)

  • static/jszip.js

Apache License 2.0 (SheetJS)

  • static/shim.js
  • static/xlsx.js
  • static/xlsxworker.js
  • start.html (xlsx2socialcalc.js)

CC0 Public Domain (唐鳳)

  • src/*.ls

Mozilla Public License Version 2.0 (LibreOffice contributors)

  • images/sc_*.png

ethercalc's People

Contributors

amir-zeldes avatar arnaudlecam avatar atifaziz avatar audreyt avatar aym-frama avatar azorlogh avatar bestian avatar bruce534 avatar clkao avatar cryptogopher avatar eddyparkinson avatar filirom1 avatar framartin avatar gagern avatar gierschv avatar joebordes avatar joequant avatar khawarjatoi avatar landryb avatar ldidry avatar nebulade avatar pjrobertson avatar prillan avatar ruebenramirez avatar rugk avatar samejack avatar tg90nor avatar uho avatar ychaouche avatar youchenlee avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ethercalc's Issues

node version on debian

Hello,
I use https://github.com/visionmedia/n to manage node versions on a debian server.
Actually I use version 0.9.11 of Node.

So when I try to install ethercalc, it gives me some errors
npm WARN engine [email protected]: wanted: {"node":"0.8.x"} (current: {"node":"v0.9.11","npm":"1.2.12"})
....
gyp ERR! build error
gyp ERR! stack Error: make failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:255:23)
gyp ERR! stack at ChildProcess.EventEmitter.emit (events.js:97:17)
gyp ERR! stack at Process.ChildProcess._handle.onexit (child_process.js:733:12)
gyp ERR! System Linux 2.6.32-5-amd64
gyp ERR! command "node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /usr/local/lib/node_modules/ethercalc/node_modules/webworker-threads
gyp ERR! node -v v0.9.11
gyp ERR! node-gyp -v v0.8.4
gyp ERR! not ok
npm WARN optional dep failed, continuing [email protected]
...

and when I try to run ethercalc, it gives me :
Please connect to: http://myadress:8000/
info - socket.io started
Starting backend using webworker-threads
Falling back to vm.CreateContext backend
Express server listening on port 8000 in development mode
Zappa 0.4.18 "You can't do that on stage anymore" orchestrating the show
Connected to Redis Server: localhost:6379
node_redis: no callback to send error: ERR unknown command 'subscribe'
node_redis: no callback to send error: ERR unknown command 'subscribe'
node_redis: no callback to send error: ERR unknown command 'subscribe'
node_redis: no callback to send error: ERR unknown command 'subscribe'
node_redis: no callback to send error: ERR unknown command 'subscribe'
node_redis: no callback to send error: ERR unknown command 'subscribe'
node_redis: no callback to send error: ERR unknown command 'subscribe'
node_redis: no callback to send error: ERR unknown command 'subscribe'

/usr/local/lib/node_modules/ethercalc/node_modules/redis/index.js:511
throw err;
^
Error: ERR unknown command 'subscribe'
at ReplyParser. (/usr/local/lib/node_modules/ethercalc/node_modules/redis/index.js:260:27)
at ReplyParser.EventEmitter.emit (events.js:94:17)
at ReplyParser.send_error (/usr/local/lib/node_modules/ethercalc/node_modules/redis/lib/parser/javascript.js:293:10)
at ReplyParser.execute (/usr/local/lib/node_modules/ethercalc/node_modules/redis/lib/parser/javascript.js:176:22)
at RedisClient.on_data (/usr/local/lib/node_modules/ethercalc/node_modules/redis/index.js:476:27)
at Socket. (/usr/local/lib/node_modules/ethercalc/node_modules/redis/index.js:79:14)
at Socket.EventEmitter.emit (events.js:94:17)
at Socket. (stream_readable.js:664:14)
at Socket.EventEmitter.emit (events.js:91:17)
at emitReadable
(_stream_readable.js:352:10)
at emitReadable (_stream_readable.js:347:5)
at readableAddChunk (_stream_readable.js:133:7)
at Socket.Readable.push (_stream_readable.js:105:10)
at TCP.onread (net.js:474:21)

Could you help me to solve this problem ?

CSV import/export

I'd love to be able to automatically send a CSV from a server to a "new" EtherCalc document instance, as well as being able to export that instance back to CSV. Is there a straightforward way of doing this that I'm missing? I can't seem to find any examples.

Too big sum almost kills the browser

Problem with a huge range in a formula

I tried, to see what happens to put a

=SUM(B2:B100000)

it stuck my browser for a long moment before I'd managed to remove it.

My goal

Put a number bigger than the number of lines I could have. I only had 5 values and tried to put something really bigger.

I did it on purpose to see what will happen, and if I'd put, by mistake or while getting a key stuck, a lot bigger number, I could have lost my document as I wouldn't be able to get access back to it.

Idea of improvement

I think that the "infinite" grid like their is in a desktop app spreadsheet is not required and not so suited to a browser app.
Using a "limited" grid with cropping the ranges to the grid may remove this kind of issues.

MySQL instead of Redis

Etherpad-lite supports Mysql and it would be nice to have one Database for both Systems. Besides, the Ethercalc-Server ist crashing with Win8 Server Beta "websocket writing" (TypeError: Property 'setTimeout' of Object #(error) is not a function)

Best regards

Document all command line parameters and environment variables

There seem to be some undocumented parameters and environment variables. It would be helpful to document them all.

Some parameters which are not documented as fas as I can see:
Command line:
--port Port where ethercalc should listen on
--host Address where ethercalc should listen on

Environment variables:
NODE_ENV set to "production", to activate production mode
REDIS_HOST Address of the redis server
REDIS_PORT Port of the redis server
REDIS_PASS Passwort to access redis.
(there are more, but I don't know what they do)

As a sidenode, in two places configuration is read from /home/dotcloud/environment.json. It would probably be better to use a relative path here.

Reference to the whole column/row

It would be very useful to reference the whole column or row as Excel or Google Docs do, to make possible for example this formula

=SUM(H:H)

Any other workaround like =SUM(H1:H99) will lead to incorrect results when H100 cell includes data.

Exception causes EtherCalc to crash

EtherCalc 0.20120703.072042 crashed once with this exception:

timers.js:96
            if (!process.listeners('uncaughtException').length) throw e;
                                                                      ^
ReferenceError: replace is not defined
    at Object.LoadSheet (/usr/local/lib/node_modules/ethercalc/sc.js:80:26)
    at Object.<anonymous> (evalmachine.<anonymous>:4314:24)
    at Timer.ontimeout (timers.js:94:19)

"Paste Formats" only pastes to a single cell

As the title says, the "Paste Formats" function only applies the Format to a single cell even if multiple cells are selected.

To reproduce:

  • Select a cell with obvious formatting (color/font/etc.)
  • click copy
  • select multiple cells
  • click Paste Formats

Result:
Format is only applied to the first cell selected

Expected Outcome:
Format should be applied to all selected cells

Export function

Is it possible to add an Export feature in order to save ods (or xls) file?
I extremely need it!
Thank you

Ethercalc initialisation delayed when run behind Apache mod_proxy

I run Ethercalc behind an Apache Webserver with mod_proxy. When I open an existing spreadsheet, it takes about 10 seconds until the values of the spreadsheet are loaded. This is the output, by two empty lines I indicate a break of several seconds:

debug - served static content /socket.io.js
debug - client authorized
info  - handshake authorized 8402395271489148030
debug - setting request GET /socket.io/1/websocket/8402395271489148030
debug - set heartbeat interval for client 8402395271489148030
warn  - websocket connection invalid
info  - transport end
debug - set close timeout for client 8402395271489148030
debug - cleared close timeout for client 8402395271489148030
debug - cleared heartbeat interval for client 8402395271489148030
debug - client authorized for 


debug - clearing poll timeout
debug - xhr-polling writing 8::
debug - set close timeout for client 21023814561596815388
debug - xhr-polling closed due to exceeded duration


debug - served static content /static/flashsocket/WebSocketMain.swf
debug - served static content /static/flashsocket/WebSocketMain.swf


debug - setting request GET /socket.io/1/xhr-polling/8402395271489148030?t=1338552781639
debug - setting poll timeout
debug - clearing poll timeout
debug - xhr-polling writing 1::
debug - set close timeout for client 8402395271489148030
debug - xhr-polling received data packet �97�5:::{"name":"data","args":[{"user":"0.049857031334400115","room":"64xnwselat","type":"ask.log"}]}�99�5:::{"name":"data","args":[{"user":"0.049857031334400115","room":"64xnwselat","type":"ask.ecell"}]}
debug - broadcasting packet
debug - setting request GET /socket.io/1/xhr-polling/8402395271489148030?t=1338552781777
debug - setting poll timeout
debug - clearing poll timeout
debug - xhr-polling writing 5:::{"name":"data","args":[{"type":"log","room":"64xnwselat","log":[],"chat":[],"snapshot":"socialcalc:version:1.0\nMIME-Version: 1.0\nContent-Type: multipart/mixed; boundary=SocialCalcSpreadsheetControlSave\n--SocialCalcSpreadsheetControlSave\nContent-type: text/plain; charset=UTF-8\n\n# SocialCalc Spreadsheet Control Save\nversion:1.0\npart:sheet\npart:edit\npart:audit\n--SocialCalcSpreadsheetControlSave\nContent-type: text/plain; charset=UTF-8\n\nversion:1.5\ncell:A1:t:asdf\nsheet:c:1:r:1:tvf:1\nvalueformat:1:text-wiki\n--SocialCalcSpreadsheetControlSave\nContent-type: text/plain; charset=UTF-8\n\n--SocialCalcSpreadsheetControlSave\nContent-type: text/plain; charset=UTF-8\n\n--SocialCalcSpreadsheetControlSave--\n"}]}
debug - set close timeout for client 8402395271489148030
debug - discarding transport
debug - cleared close timeout for client 8402395271489148030
debug - setting request GET /socket.io/1/xhr-polling/8402395271489148030?t=1338552781857
debug - setting poll timeout
debug - discarding transport
debug - cleared close timeout for client 8402395271489148030
debug - xhr-polling received data packet 5:::{"name":"data","args":[{"user":"0.049857031334400115","room":"64xnwselat","type":"ask.ecell"}]}
debug - broadcasting packet

After the last block, the values are finally loaded in the browser. After this, changes are synchronised between different clients without delay. Any changes made before the values are loaded are discarded.

The Apache logfile shows the following:

[Fri Jun 01 14:14:55 2012] [error] [client 51.119.239.223] (20014)Internal error: proxy: error reading status line from remote server localhost:24318
[Fri Jun 01 14:14:55 2012] [error] [client 51.119.239.223] proxy: Error reading from remote server returned by /socket.io/1/websocket/65692487932057051

When I access Ethercalc directly, this problem does not occur.

/_/page/cells API method not working

/_/page/cells api method does not seem to work. this is the output from a freshly cloned ethercalc repo

$ curl http://localhost:8000/_/a/cells
TypeError: Cannot read property 'cells' of undefined
at Array.include.get./_/:room/cells (/home/ale/stockcalc/ethercalc/main.js:112:57)
at include.api (/home/ale/stockcalc/ethercalc/main.js:88:23)
at Object.include.SC._get (/home/ale/stockcalc/ethercalc/sc.js:79:16)
at Object.include.api (/home/ale/stockcalc/ethercalc/main.js:84:19)
at zappa.app.route (/home/ale/stockcalc/ethercalc/node_modules/zappajs/lib/zappa.js:718:30)
at callbacks (/home/ale/stockcalc/ethercalc/node_modules/zappajs/node_modules/express/lib/router/index.js:162:37)
at param (/home/ale/stockcalc/ethercalc/node_modules/zappajs/node_modules/express/lib/router/index.js:136:11)
at param (/home/ale/stockcalc/ethercalc/node_modules/zappajs/node_modules/express/lib/router/index.js:133:11)
at pass (/home/ale/stockcalc/ethercalc/node_modules/zappajs/node_modules/express/lib/router/index.js:143:5)
at Router._dispatch (/home/ale/stockcalc/ethercalc/node_modules/zappajs/node_modules/express/lib/router/index.js:171:5)

Purging old/uneeded calc documents?

Hello,
There is probably an easy answer to this but I could not find it online. How would one purge and delete uneeded documents? They take up a lot of space after some time and it seems like a good routine maintenance procedure.

Thank you.

Error at connexion int the web interface

Hello when i launch ethercalc, io works but when i am connection on the web interface, it Crash

root@lts:/opt# ethercalc
Please connect to: http://lts:8000/
info - socket.io started
Express server listening on port NaN in development mode
Zappa 0.3.10 "Overture to a Holiday in Berlin" orchestrating the show
[Error: Redis connection to localhost:6379 failed - connect ECONNREFUSED]
==> Falling back to JSON storage: /opt/dump.json

http.js:650
throw new Error('Can't set headers after they are sent.');
^
Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (http.js:650:11)
at ServerResponse.res.setHeader (/usr/local/lib/node_modules/ethercalc/node_modules/zappajs/node_modules/express/node_modules/connect/lib/patch.js:62:20)
at /usr/local/lib/node_modules/ethercalc/node_modules/zappajs/node_modules/express/node_modules/connect/lib/middleware/static.js:168:11
at Object.oncomplete (fs.js:308:15)
at process._makeCallback (node.js:248:20)

unexpected behavior resizing column width

ethercalc_strange_column_resize

you can't see my mouse pointer pressed on the column H, but it is, and that column is as small as its gonna get, but the actual size is unaffected, if I increase the size it'll get wider, but...oh it's just screwy.

Honestly, you must have extraordinary patience to have deal with all of the silly little subtleties of fiddling with things like this in the UI (also when you change the zoom on the page it seems to alter the relative widths and heights of columns and rows...argh). My hat's off to you.

Have you considered employing SlickGrid in your project?

Enforced read-only mode for some viewers

We'd like to use ethercalc to provide real-time updates to people in different locations.

Scenario:
The original data (simple time-schedules) is copied from Excel and pasted into an ethercalc spreadsheet manually - everytime a change is made. However for certain 'viewers' in ethercalc we'd like to prevent them from being able to edit/manipulate the spreadsheet.

In other words a very simple user/group or access rights system would enable us to allow some people ('planning team') to enter updates, whereas others (clients) just receive the updates via ethercalc.

Thanks :-)

Crash when a user joins the spreadsheet

This crash occurs on node.js/ethercalc on Windows 7 64bit using the latest build. It has been reproducible several times here as soon as more than one computer joins or creates a spreadsheet. Any assistance on this would be appreciated as well -


debug - websocket writing 2::
debug - set heartbeat timeout for client fZP_lXwYKKuLiPU5yMkR
debug - got heartbeat packet
debug - cleared heartbeat timeout for client fZP_lXwYKKuLiPU5yMkR
debug - set heartbeat interval for client fZP_lXwYKKuLiPU5yMkR
debug - emitting heartbeat for client fZP_lXwYKKuLiPU5yMkR
debug - websocket writing 2::
debug - set heartbeat timeout for client fZP_lXwYKKuLiPU5yMkR
debug - got heartbeat packet
debug - cleared heartbeat timeout for client fZP_lXwYKKuLiPU5yMkR
debug - set heartbeat interval for client fZP_lXwYKKuLiPU5yMkR
debug - emitting heartbeat for client fZP_lXwYKKuLiPU5yMkR
debug - websocket writing 2::
debug - set heartbeat timeout for client fZP_lXwYKKuLiPU5yMkR
debug - got heartbeat packet
debug - cleared heartbeat timeout for client fZP_lXwYKKuLiPU5yMkR
debug - set heartbeat interval for client fZP_lXwYKKuLiPU5yMkR
debug - emitting heartbeat for client fZP_lXwYKKuLiPU5yMkR
debug - websocket writing 2::
debug - set heartbeat timeout for client fZP_lXwYKKuLiPU5yMkR
debug - got heartbeat packet
debug - cleared heartbeat timeout for client fZP_lXwYKKuLiPU5yMkR
debug - set heartbeat interval for client fZP_lXwYKKuLiPU5yMkR
debug - emitting heartbeat for client fZP_lXwYKKuLiPU5yMkR
debug - websocket writing 2::
debug - set heartbeat timeout for client fZP_lXwYKKuLiPU5yMkR
debug - got heartbeat packet
debug - cleared heartbeat timeout for client fZP_lXwYKKuLiPU5yMkR
debug - set heartbeat interval for client fZP_lXwYKKuLiPU5yMkR
debug - emitting heartbeat for client fZP_lXwYKKuLiPU5yMkR
debug - websocket writing 2::
debug - set heartbeat timeout for client fZP_lXwYKKuLiPU5yMkR
debug - got heartbeat packet
debug - cleared heartbeat timeout for client fZP_lXwYKKuLiPU5yMkR
debug - set heartbeat interval for client fZP_lXwYKKuLiPU5yMkR
debug - emitting heartbeat for client fZP_lXwYKKuLiPU5yMkR
debug - websocket writing 2::
debug - set heartbeat timeout for client fZP_lXwYKKuLiPU5yMkR
debug - got heartbeat packet
debug - cleared heartbeat timeout for client fZP_lXwYKKuLiPU5yMkR
debug - set heartbeat interval for client fZP_lXwYKKuLiPU5yMkR
debug - emitting heartbeat for client fZP_lXwYKKuLiPU5yMkR
debug - websocket writing 2::
debug - set heartbeat timeout for client fZP_lXwYKKuLiPU5yMkR
debug - got heartbeat packet
debug - cleared heartbeat timeout for client fZP_lXwYKKuLiPU5yMkR
debug - set heartbeat interval for client fZP_lXwYKKuLiPU5yMkR
debug - emitting heartbeat for client fZP_lXwYKKuLiPU5yMkR
debug - websocket writing 2::
debug - set heartbeat timeout for client fZP_lXwYKKuLiPU5yMkR
debug - got heartbeat packet
debug - cleared heartbeat timeout for client fZP_lXwYKKuLiPU5yMkR
debug - set heartbeat interval for client fZP_lXwYKKuLiPU5yMkR
debug - client authorized
info - handshake authorized qHXbMEvsFnNRC7J2yMkS
debug - setting request GET /socket.io/1/websocket/qHXbMEvsFnNRC7J2yMkS
debug - set heartbeat interval for client qHXbMEvsFnNRC7J2yMkS
debug - client authorized for
debug - websocket writing 1::
debug - emitting heartbeat for client fZP_lXwYKKuLiPU5yMkR
debug - websocket writing 2::
debug - set heartbeat timeout for client fZP_lXwYKKuLiPU5yMkR
debug - emitting heartbeat for client qHXbMEvsFnNRC7J2yMkS
debug - websocket writing 2::
debug - set heartbeat timeout for client qHXbMEvsFnNRC7J2yMkS
debug - got heartbeat packet
debug - cleared heartbeat timeout for client qHXbMEvsFnNRC7J2yMkS
debug - set heartbeat interval for client qHXbMEvsFnNRC7J2yMkS
debug - emitting heartbeat for client qHXbMEvsFnNRC7J2yMkS
debug - websocket writing 2::
debug - set heartbeat timeout for client qHXbMEvsFnNRC7J2yMkS
debug - got heartbeat packet
debug - cleared heartbeat timeout for client qHXbMEvsFnNRC7J2yMkS
debug - set heartbeat interval for client qHXbMEvsFnNRC7J2yMkS
debug - fired heartbeat timeout for client fZP_lXwYKKuLiPU5yMkR
info - transport end (heartbeat timeout)
debug - set close timeout for client fZP_lXwYKKuLiPU5yMkR
debug - cleared close timeout for client fZP_lXwYKKuLiPU5yMkR
debug - discarding transport
debug - emitting heartbeat for client qHXbMEvsFnNRC7J2yMkS
debug - websocket writing 2::
debug - set heartbeat timeout for client qHXbMEvsFnNRC7J2yMkS
debug - got heartbeat packet
debug - cleared heartbeat timeout for client qHXbMEvsFnNRC7J2yMkS
debug - set heartbeat interval for client qHXbMEvsFnNRC7J2yMkS
debug - emitting heartbeat for client qHXbMEvsFnNRC7J2yMkS
debug - websocket writing 2::
debug - set heartbeat timeout for client qHXbMEvsFnNRC7J2yMkS
debug - got heartbeat packet
debug - cleared heartbeat timeout for client qHXbMEvsFnNRC7J2yMkS
debug - set heartbeat interval for client qHXbMEvsFnNRC7J2yMkS
debug - emitting heartbeat for client qHXbMEvsFnNRC7J2yMkS
debug - websocket writing 2::
debug - set heartbeat timeout for client qHXbMEvsFnNRC7J2yMkS
debug - got heartbeat packet
debug - cleared heartbeat timeout for client qHXbMEvsFnNRC7J2yMkS
debug - set heartbeat interval for client qHXbMEvsFnNRC7J2yMkS
debug - emitting heartbeat for client qHXbMEvsFnNRC7J2yMkS
debug - websocket writing 2::
debug - set heartbeat timeout for client qHXbMEvsFnNRC7J2yMkS
debug - got heartbeat packet
debug - cleared heartbeat timeout for client qHXbMEvsFnNRC7J2yMkS
debug - set heartbeat interval for client qHXbMEvsFnNRC7J2yMkS
debug - emitting heartbeat for client qHXbMEvsFnNRC7J2yMkS
debug - websocket writing 2::
debug - set heartbeat timeout for client qHXbMEvsFnNRC7J2yMkS
debug - got heartbeat packet
debug - cleared heartbeat timeout for client qHXbMEvsFnNRC7J2yMkS
debug - set heartbeat interval for client qHXbMEvsFnNRC7J2yMkS
debug - emitting heartbeat for client qHXbMEvsFnNRC7J2yMkS
debug - websocket writing 2::
debug - set heartbeat timeout for client qHXbMEvsFnNRC7J2yMkS
debug - got heartbeat packet
debug - cleared heartbeat timeout for client qHXbMEvsFnNRC7J2yMkS
debug - set heartbeat interval for client qHXbMEvsFnNRC7J2yMkS
debug - emitting heartbeat for client qHXbMEvsFnNRC7J2yMkS
debug - websocket writing 2::
debug - set heartbeat timeout for client qHXbMEvsFnNRC7J2yMkS
debug - got heartbeat packet
debug - cleared heartbeat timeout for client qHXbMEvsFnNRC7J2yMkS
debug - set heartbeat interval for client qHXbMEvsFnNRC7J2yMkS
debug - emitting heartbeat for client qHXbMEvsFnNRC7J2yMkS
debug - websocket writing 2::
debug - set heartbeat timeout for client qHXbMEvsFnNRC7J2yMkS
debug - got heartbeat packet
debug - cleared heartbeat timeout for client qHXbMEvsFnNRC7J2yMkS
debug - set heartbeat interval for client qHXbMEvsFnNRC7J2yMkS
debug - emitting heartbeat for client qHXbMEvsFnNRC7J2yMkS
debug - websocket writing 2::
debug - set heartbeat timeout for client qHXbMEvsFnNRC7J2yMkS
debug - got heartbeat packet
debug - cleared heartbeat timeout for client qHXbMEvsFnNRC7J2yMkS
debug - set heartbeat interval for client qHXbMEvsFnNRC7J2yMkS
debug - emitting heartbeat for client qHXbMEvsFnNRC7J2yMkS
debug - websocket writing 2::
debug - set heartbeat timeout for client qHXbMEvsFnNRC7J2yMkS
debug - got heartbeat packet
debug - cleared heartbeat timeout for client qHXbMEvsFnNRC7J2yMkS
debug - set heartbeat interval for client qHXbMEvsFnNRC7J2yMkS
debug - emitting heartbeat for client qHXbMEvsFnNRC7J2yMkS
debug - websocket writing 2::
debug - set heartbeat timeout for client qHXbMEvsFnNRC7J2yMkS
debug - got heartbeat packet
debug - cleared heartbeat timeout for client qHXbMEvsFnNRC7J2yMkS
debug - set heartbeat interval for client qHXbMEvsFnNRC7J2yMkS
debug - emitting heartbeat for client qHXbMEvsFnNRC7J2yMkS
debug - websocket writing 2::
debug - set heartbeat timeout for client qHXbMEvsFnNRC7J2yMkS
debug - got heartbeat packet
debug - cleared heartbeat timeout for client qHXbMEvsFnNRC7J2yMkS
debug - set heartbeat interval for client qHXbMEvsFnNRC7J2yMkS
debug - emitting heartbeat for client qHXbMEvsFnNRC7J2yMkS
debug - websocket writing 2::
debug - set heartbeat timeout for client qHXbMEvsFnNRC7J2yMkS
debug - set close timeout for client qHXbMEvsFnNRC7J2yMkS
info - socket error Error: read ECONNRESET
at errnoException (net.js:901:11)
at TCP.onread (net.js:556:19)
debug - client authorized
info - handshake authorized GfMUISNEChXMMQiXyMkT
debug - setting request GET /socket.io/1/websocket/GfMUISNEChXMMQiXyMkT
debug - set heartbeat interval for client GfMUISNEChXMMQiXyMkT
debug - client authorized for
debug - websocket writing 1::
debug - emitting heartbeat for client GfMUISNEChXMMQiXyMkT
debug - websocket writing 2::
debug - set heartbeat timeout for client GfMUISNEChXMMQiXyMkT
debug - got heartbeat packet
debug - cleared heartbeat timeout for client GfMUISNEChXMMQiXyMkT
debug - set heartbeat interval for client GfMUISNEChXMMQiXyMkT
debug - fired heartbeat timeout for client qHXbMEvsFnNRC7J2yMkS
info - transport end (heartbeat timeout)
debug - cleared close timeout for client qHXbMEvsFnNRC7J2yMkS
debug - discarding transport
debug - emitting heartbeat for client GfMUISNEChXMMQiXyMkT
debug - websocket writing 2::
debug - set heartbeat timeout for client GfMUISNEChXMMQiXyMkT
debug - got heartbeat packet
debug - cleared heartbeat timeout for client GfMUISNEChXMMQiXyMkT
debug - set heartbeat interval for client GfMUISNEChXMMQiXyMkT
debug - emitting heartbeat for client GfMUISNEChXMMQiXyMkT
debug - websocket writing 2::
debug - set heartbeat timeout for client GfMUISNEChXMMQiXyMkT
debug - got heartbeat packet
debug - cleared heartbeat timeout for client GfMUISNEChXMMQiXyMkT
debug - set heartbeat interval for client GfMUISNEChXMMQiXyMkT
debug - emitting heartbeat for client GfMUISNEChXMMQiXyMkT
debug - websocket writing 2::
debug - set heartbeat timeout for client GfMUISNEChXMMQiXyMkT
debug - got heartbeat packet
debug - cleared heartbeat timeout for client GfMUISNEChXMMQiXyMkT
debug - set heartbeat interval for client GfMUISNEChXMMQiXyMkT
debug - emitting heartbeat for client GfMUISNEChXMMQiXyMkT
debug - websocket writing 2::
debug - set heartbeat timeout for client GfMUISNEChXMMQiXyMkT
debug - got heartbeat packet
debug - cleared heartbeat timeout for client GfMUISNEChXMMQiXyMkT
debug - set heartbeat interval for client GfMUISNEChXMMQiXyMkT
debug - emitting heartbeat for client GfMUISNEChXMMQiXyMkT
debug - websocket writing 2::
debug - set heartbeat timeout for client GfMUISNEChXMMQiXyMkT
debug - got heartbeat packet
debug - cleared heartbeat timeout for client GfMUISNEChXMMQiXyMkT
debug - set heartbeat interval for client GfMUISNEChXMMQiXyMkT
debug - served static content /socket.io.js
debug - client authorized
info - handshake authorized 1r4GO3uXXEXh21xJyMkU
debug - setting request GET /socket.io/1/websocket/1r4GO3uXXEXh21xJyMkU
debug - set heartbeat interval for client 1r4GO3uXXEXh21xJyMkU
debug - client authorized for
debug - websocket writing 1::

C:\Users\HP\AppData\Roaming\npm\node_modules\ethercalc\sc.js:27
vm = require('vm');
^
TypeError: object is not a function
at new constructor (C:\Users\HP\AppData\Roaming\npm\node_modules\ethercalc\s
c.js:27:16)
at Object.SC._init (C:\Users\HP\AppData\Roaming\npm\node_modules\ethercalc\s
c.js:111:11)
at C:\Users\HP\AppData\Roaming\npm\node_modules\ethercalc\main.js:303:27
at Array.cmds.exec (C:\Users\HP\AppData\Roaming\npm\node_modules\ethercalc\d
b.js:149:13)
at C:\Users\HP\AppData\Roaming\npm\node_modules\ethercalc\db.js:145:21
at RedisClient.Commands.lrange (C:\Users\HP\AppData\Roaming\npm\node_modules
\ethercalc\db.js:99:45)
at Array.cmds.exec (C:\Users\HP\AppData\Roaming\npm\node_modules\ethercalc\d
b.js:143:21)
at C:\Users\HP\AppData\Roaming\npm\node_modules\ethercalc\db.js:145:21
at RedisClient.Commands.lrange (C:\Users\HP\AppData\Roaming\npm\node_modules
\ethercalc\db.js:99:45)
at Array.cmds.exec (C:\Users\HP\AppData\Roaming\npm\node_modules\ethercalc\d
b.js:143:21)
at C:\Users\HP\AppData\Roaming\npm\node_modules\ethercalc\db.js:145:21
at RedisClient.Commands.get (C:\Users\HP\AppData\Roaming\npm\node_modules\et
hercalc\db.js:84:45)
at Array.cmds.exec (C:\Users\HP\AppData\Roaming\npm\node_modules\ethercalc\d
b.js:143:21)
at Object.on.data (C:\Users\HP\AppData\Roaming\npm\node_modules\ethercalc\ma
in.js:300:105)
at Socket. (C:\Users\HP\AppData\Roaming\npm\node_modules\ethercal
c\node_modules\zappajs\lib\zappa.js:858:24)
at Socket.EventEmitter.emit as $emit
at SocketNamespace.handlePacket (C:\Users\HP\AppData\Roaming\npm\node_module
s\ethercalc\node_modules\zappajs\node_modules\socket.io\lib\namespace.js:335:22)

at Manager.onClientMessage (C:\Users\HP\AppData\Roaming\npm\node_modules\eth

ercalc\node_modules\zappajs\node_modules\socket.io\lib\manager.js:488:38)
at WebSocket.Transport.onMessage (C:\Users\HP\AppData\Roaming\npm\node_modul
es\ethercalc\node_modules\zappajs\node_modules\socket.io\lib\transport.js:387:20
)
at Parser. (C:\Users\HP\AppData\Roaming\npm\node_modules\ethercal
c\node_modules\zappajs\node_modules\socket.io\lib\transports\websocket\hybi-16.j
s:39:10)
at Parser.EventEmitter.emit (events.js:95:17)
at finish (C:\Users\HP\AppData\Roaming\npm\node_modules\ethercalc\node_modul
es\zappajs\node_modules\socket.io\lib\transports\websocket\hybi-16.js:288:16)
at Parser.expectHandler (C:\Users\HP\AppData\Roaming\npm\node_modules\etherc
alc\node_modules\zappajs\node_modules\socket.io\lib\transports\websocket\hybi-16
.js:299:15)
at Parser.add (C:\Users\HP\AppData\Roaming\npm\node_modules\ethercalc\node_m
odules\zappajs\node_modules\socket.io\lib\transports\websocket\hybi-16.js:466:24
)
at Parser.expect (C:\Users\HP\AppData\Roaming\npm\node_modules\ethercalc\nod
e_modules\zappajs\node_modules\socket.io\lib\transports\websocket\hybi-16.js:499
:10)
at Parser. (C:\Users\HP\AppData\Roaming\npm\node_modules\ethercal
c\node_modules\zappajs\node_modules\socket.io\lib\transports\websocket\hybi-16.j
s:298:18)
at Parser.add (C:\Users\HP\AppData\Roaming\npm\node_modules\ethercalc\node_m
odules\zappajs\node_modules\socket.io\lib\transports\websocket\hybi-16.js:466:24
)
at Parser.expect (C:\Users\HP\AppData\Roaming\npm\node_modules\ethercalc\nod
e_modules\zappajs\node_modules\socket.io\lib\transports\websocket\hybi-16.js:499
:10)
at expectData (C:\Users\HP\AppData\Roaming\npm\node_modules\ethercalc\node_m
odules\zappajs\node_modules\socket.io\lib\transports\websocket\hybi-16.js:296:16
)
at Parser.opcodeHandlers.1 (C:\Users\HP\AppData\Roaming\npm\node_modules\eth
ercalc\node_modules\zappajs\node_modules\socket.io\lib\transports\websocket\hybi
-16.js:313:9)
at Parser.processPacket (C:\Users\HP\AppData\Roaming\npm\node_modules\etherc
alc\node_modules\zappajs\node_modules\socket.io\lib\transports\websocket\hybi-16
.js:533:8)
at Parser.add (C:\Users\HP\AppData\Roaming\npm\node_modules\ethercalc\node_m
odules\zappajs\node_modules\socket.io\lib\transports\websocket\hybi-16.js:466:24
)
at Socket. (C:\Users\HP\AppData\Roaming\npm\node_modules\ethercal
c\node_modules\zappajs\node_modules\socket.io\lib\transports\websocket\hybi-16.j
s:141:17)
at Socket.EventEmitter.emit (events.js:117:20)
at Socket. (stream_readable.js:736:14)
at Socket.EventEmitter.emit (events.js:92:17)
at emitReadable
(_stream_readable.js:408:10)
at emitReadable (_stream_readable.js:404:5)
at readableAddChunk (_stream_readable.js:165:9)
at Socket.Readable.push (_stream_readable.js:127:10)
at TCP.onread (net.js:526:21)

C:\Users\User\node_modules\ethercalc\bin>

Install doesn't work

Hello

I use etherpad-lite and it works fine so I would install ethercalc.

I try to install ethercalc on my server but it doesn't work.
Do you have an idea ?

aaa@xxx:/opt$ sudo git clone https://github.com/audreyt/ethercalc.git
fatal: destination path 'ethercalc' already exists and is not an empty directory.
aaa@xxx:/opt$ sudo git clone https://github.com/audreyt/ethercalc.git
Cloning into 'ethercalc'...
remote: Counting objects: 2521, done.
remote: Compressing objects: 100% (1609/1609), done.
remote: Total 2521 (delta 782), reused 2430 (delta 745)
Receiving objects: 100% (2521/2521), 3.10 MiB | 232 KiB/s, done.
Resolving deltas: 100% (782/782), done.
aaa@xxx:/opt$ sudo npm i -g ethercalc
npm http GET https://registry.npmjs.org/zappajs
npm http GET https://registry.npmjs.org/webworker-threads
npm http GET https://registry.npmjs.org/optimist
npm http GET https://registry.npmjs.org/cors
npm http GET https://registry.npmjs.org/uuid-pure
npm http GET https://registry.npmjs.org/LiveScript
npm http GET https://registry.npmjs.org/redis/0.8.2
npm http 304 https://registry.npmjs.org/zappajs
npm http 304 https://registry.npmjs.org/cors
npm http 304 https://registry.npmjs.org/optimist
npm http 304 https://registry.npmjs.org/webworker-threads
npm http 304 https://registry.npmjs.org/LiveScript
npm http 304 https://registry.npmjs.org/redis/0.8.2
npm http 304 https://registry.npmjs.org/uuid-pure
npm http GET https://registry.npmjs.org/wordwrap
npm http GET https://registry.npmjs.org/minimist
npm http GET https://registry.npmjs.org/prelude-ls

[email protected] install /usr/lib/node_modules/ethercalc/node_modules/webworker-threads
node-gyp rebuild

npm http GET https://registry.npmjs.org/express/3.2.6
npm http GET https://registry.npmjs.org/socket.io/0.9.16
make: entrant dans le répertoire « /usr/lib/node_modules/ethercalc/node_modules/webworker-threads/build »
CXX(target) Release/obj.target/WebWorkerThreads/src/WebWorkerThreads.o
make: g++ : commande introuvable
make: *** [Release/obj.target/WebWorkerThreads/src/WebWorkerThreads.o] Erreur 127
make: quittant le répertoire « /usr/lib/node_modules/ethercalc/node_modules/webworker-threads/build »
gyp ERR! build error
gyp ERR! stack Error: make failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:267:23)
gyp ERR! stack at ChildProcess.EventEmitter.emit (events.js:98:17)
gyp ERR! stack at Process.ChildProcess._handle.onexit (child_process.js:789:12)
gyp ERR! System Linux 3.2.0-53-generic-pae
gyp ERR! command "node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /usr/lib/node_modules/ethercalc/node_modules/webworker-threads
gyp ERR! node -v v0.10.17
gyp ERR! node-gyp -v v0.10.9
gyp ERR! not ok
npm http GET https://registry.npmjs.org/coffeecup/0.3.20
npm http GET https://registry.npmjs.org/coffee-css/0.0.5
npm http GET https://registry.npmjs.org/node-uuid/1.4.0
npm http GET https://registry.npmjs.org/uglify-js/2.3.6
npm http GET https://registry.npmjs.org/methods/0.0.1
npm ERR! weird error 1
npm http 304 https://registry.npmjs.org/wordwrap
npm http 304 https://registry.npmjs.org/minimist
npm http 304 https://registry.npmjs.org/coffeecup/0.3.20
npm http 304 https://registry.npmjs.org/coffee-css/0.0.5
npm http 304 https://registry.npmjs.org/prelude-ls
npm http 304 https://registry.npmjs.org/node-uuid/1.4.0
npm http 304 https://registry.npmjs.org/express/3.2.6
npm http 304 https://registry.npmjs.org/uglify-js/2.3.6
npm http 304 https://registry.npmjs.org/methods/0.0.1
npm http 304 https://registry.npmjs.org/socket.io/0.9.16
npm http GET https://registry.npmjs.org/coffee-script
npm http GET https://registry.npmjs.org/underscore
npm http GET https://registry.npmjs.org/connect/2.7.11
npm http GET https://registry.npmjs.org/mkdirp/0.3.4
npm http GET https://registry.npmjs.org/commander/0.6.1
npm http GET https://registry.npmjs.org/range-parser/0.0.4
npm http GET https://registry.npmjs.org/cookie/0.1.0
npm http GET https://registry.npmjs.org/buffer-crc32/0.2.1
npm http GET https://registry.npmjs.org/fresh/0.1.0
npm http GET https://registry.npmjs.org/send/0.1.0
npm http GET https://registry.npmjs.org/cookie-signature/1.0.1
npm http GET https://registry.npmjs.org/debug
npm http GET https://registry.npmjs.org/socket.io-client/0.9.16
npm http GET https://registry.npmjs.org/policyfile/0.0.4
npm http GET https://registry.npmjs.org/redis/0.7.3
npm http GET https://registry.npmjs.org/base64id/0.1.0
npm http GET https://registry.npmjs.org/async
npm http GET https://registry.npmjs.org/optimist
npm http GET https://registry.npmjs.org/source-map
npm http GET https://registry.npmjs.org/coffee-script
npm http GET https://registry.npmjs.org/uglify-js/1.2.6
npm http GET https://registry.npmjs.org/optparse/1.0.3
npm http GET https://registry.npmjs.org/stylus/0.27.2
npm http 304 https://registry.npmjs.org/coffee-script
npm http 304 https://registry.npmjs.org/underscore
npm http 304 https://registry.npmjs.org/range-parser/0.0.4
npm http 304 https://registry.npmjs.org/cookie/0.1.0
npm http 304 https://registry.npmjs.org/mkdirp/0.3.4
npm http 304 https://registry.npmjs.org/connect/2.7.11
npm http 304 https://registry.npmjs.org/buffer-crc32/0.2.1
npm http 304 https://registry.npmjs.org/fresh/0.1.0
npm http 304 https://registry.npmjs.org/send/0.1.0
npm http 304 https://registry.npmjs.org/cookie-signature/1.0.1
npm http 304 https://registry.npmjs.org/debug
npm http 304 https://registry.npmjs.org/socket.io-client/0.9.16
npm http 304 https://registry.npmjs.org/policyfile/0.0.4
npm http 304 https://registry.npmjs.org/redis/0.7.3
npm http 304 https://registry.npmjs.org/base64id/0.1.0
npm http 304 https://registry.npmjs.org/async
npm http 304 https://registry.npmjs.org/optimist
npm http 304 https://registry.npmjs.org/source-map
npm http 304 https://registry.npmjs.org/coffee-script
npm http 304 https://registry.npmjs.org/uglify-js/1.2.6
npm http 304 https://registry.npmjs.org/optparse/1.0.3
npm http 304 https://registry.npmjs.org/stylus/0.27.2
npm http GET https://registry.npmjs.org/wordwrap
npm http GET https://registry.npmjs.org/amdefine
npm http GET https://registry.npmjs.org/cssom
npm http GET https://registry.npmjs.org/mkdirp
npm http 304 https://registry.npmjs.org/commander/0.6.1
npm http GET https://registry.npmjs.org/mime/1.2.6
npm http GET https://registry.npmjs.org/qs/0.6.5
npm http GET https://registry.npmjs.org/formidable/1.0.14
npm http GET https://registry.npmjs.org/send/0.1.1
npm http GET https://registry.npmjs.org/cookie/0.0.5
npm http GET https://registry.npmjs.org/bytes/0.2.0
npm http GET https://registry.npmjs.org/pause/0.0.1
npm http 304 https://registry.npmjs.org/wordwrap
npm http 304 https://registry.npmjs.org/qs/0.6.5
npm http 304 https://registry.npmjs.org/amdefine
npm http 304 https://registry.npmjs.org/formidable/1.0.14
npm http 304 https://registry.npmjs.org/send/0.1.1
npm http 304 https://registry.npmjs.org/cssom
npm http 304 https://registry.npmjs.org/cookie/0.0.5
npm http GET https://registry.npmjs.org/uglify-js/1.2.5
npm http GET https://registry.npmjs.org/ws
npm http GET https://registry.npmjs.org/active-x-obfuscator/0.0.1
npm http GET https://registry.npmjs.org/xmlhttprequest/1.4.2
npm http 304 https://registry.npmjs.org/bytes/0.2.0
npm http 304 https://registry.npmjs.org/pause/0.0.1
npm http 304 https://registry.npmjs.org/ws
npm http 304 https://registry.npmjs.org/active-x-obfuscator/0.0.1
npm http 304 https://registry.npmjs.org/xmlhttprequest/1.4.2
npm http GET https://registry.npmjs.org/mime
npm http 304 https://registry.npmjs.org/mkdirp
npm http 304 https://registry.npmjs.org/mime/1.2.6
npm http 304 https://registry.npmjs.org/uglify-js/1.2.5
npm http GET https://registry.npmjs.org/zeparser/0.0.5
npm http GET https://registry.npmjs.org/nan
npm http GET https://registry.npmjs.org/options
npm http GET https://registry.npmjs.org/commander
npm http GET https://registry.npmjs.org/tinycolor
npm http 304 https://registry.npmjs.org/mime
npm http 304 https://registry.npmjs.org/tinycolor
npm http 304 https://registry.npmjs.org/zeparser/0.0.5
npm http 304 https://registry.npmjs.org/nan
npm http 304 https://registry.npmjs.org/commander
npm http 304 https://registry.npmjs.org/options

[email protected] install /usr/lib/node_modules/ethercalc/node_modules/zappajs/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws
(node-gyp rebuild 2> builderror.log) || (exit 0)

make: entrant dans le répertoire « /usr/lib/node_modules/ethercalc/node_modules/zappajs/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build »
CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
make: quittant le répertoire « /usr/lib/node_modules/ethercalc/node_modules/zappajs/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build »
npm ERR! not ok code 0
aaa@xxx:/opt$ cd ethercalc/
aaa@xxx:/opt/ethercalc$ bin/ethercalc
Please connect to: http://xxx:8000/

module.js:340
throw err;
^
Error: Cannot find module 'zappajs'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object. (/opt/ethercalc/app.js:42:3)
at Object. (/opt/ethercalc/app.js:49:4)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
aaa@xxx:/opt/ethercalc$

TypeError: Property 'setTimeout' of object # is not a function

Hi all,
My node version is v0.8.8
i m getting this error on create spreadsheet

/root/NodeJs/ethercalc/ethercalc/node_modules/redis/index.js:487
throw err;
^
TypeError: Property 'setTimeout' of object # is not a function
at Object.SocialCalc.ScheduleSheetCommands (evalmachine.:2444:26)
at SocialCalc.Sheet.ScheduleSheetCommands (evalmachine.:1140:105)
at Object.include.SC._init (/root/NodeJs/ethercalc/ethercalc/sc.js:141:27)
at include.on.data.SC._get.log (/root/NodeJs/ethercalc/ethercalc/main.js:220:27)
at Multi.exec (/root/NodeJs/ethercalc/ethercalc/node_modules/redis/index.js:996:13)
at try_callback (/root/NodeJs/ethercalc/ethercalc/node_modules/redis/index.js:484:9)
at RedisClient.return_reply (/root/NodeJs/ethercalc/ethercalc/node_modules/redis/index.js:555:13)
at RedisReplyParser.RedisClient.init_parser (/root/NodeJs/ethercalc/ethercalc/node_modules/redis/index.js:256:14)
at RedisReplyParser.EventEmitter.emit (events.js:88:17)
at RedisReplyParser.add_multi_bulk_reply (/root/NodeJs/ethercalc/ethercalc/node_modules/redis/lib/parser/javascript.js:306:18)
root@ubuntu:~/NodeJs/ethercalc/ethercalc# vi /root/NodeJs/ethercalc/ethercalc/node_modules/redis/index.js

please help

EtherCalc broken on OpenBSD 5.3 (but not latest snapshot)

Hello,

I'm under OpenBSD 5.3 (x64) stable and try to play with ethercalc since somes days without success...

When i try it without a redis_server i got this :

Please connect to: http://puffy.hdpmb.adm:8000/
info - socket.io started
Starting backend using webworker-threads
Falling back to vm.CreateContext backend
Express server listening on port 8000 in development mode
Zappa 0.4.22 "You can't do that on stage anymore" orchestrating the show
[Error: Redis connection to localhost:6379 failed - connect ECONNREFUSED]
==> Falling back to JSON storage: /stand/calc/node_modules/.bin/dump.json
debug - served static content /socket.io.js
debug - client authorized
info - handshake authorized dpMCwWn5FxqcAPjVJ1ih
debug - setting request GET /socket.io/1/websocket/dpMCwWn5FxqcAPjVJ1ih
debug - set heartbeat interval for client dpMCwWn5FxqcAPjVJ1ih
debug - client authorized for
debug - websocket writing 1::

/stand/calc/node_modules/ethercalc/sc.js:27
vm = require('vm');

When i try it with a redis_server i got this :

Please connect to: http://puffy.hdpmb.adm:8000/
info - socket.io started
Starting backend using webworker-threads
Falling back to vm.CreateContext backend
Connected to Redis Server: localhost:6379
Express server listening on port 8000 in development mode
Zappa 0.4.22 "You can't do that on stage anymore" orchestrating the show
debug - served static content /socket.io.js
debug - client authorized
info - handshake authorized CvqaybEDNR_t46QuQQpU
debug - setting request GET /socket.io/1/websocket/CvqaybEDNR_t46QuQQpU
debug - set heartbeat interval for client CvqaybEDNR_t46QuQQpU
debug - client authorized for
debug - websocket writing 1::

/stand/calc/node_modules/ethercalc/node_modules/redis/index.js:523
throw err;

My node version is node-0.8.18
My redis server version is redis-2.6.9

The ethercalc process crash after the first page load.

can you give me some advise to solve this ?

thanks

rhino

Export button does not work in setup with basepath

Hi,
I set up EtherCalc on my own server behind the Apache proxy (for authentication purposes) and run EtherCalc with basepath. In general everything seem to work correctly except HTML export button. Let's say that the spreadsheet is available at http://server/ethercalc/something. In that case, going to http://server/ethercalc/something.html works ok (html table in the browser), but clicking on Export to HTML in upper left corner of the spreadsheet does not work, as it redirects to http://server/something.html

Rows count

When quantity of rows become more than 9999, row counter is incorrect:

image

This is for rows 16140, 16141 etc.

Add option to run websockets on separate port

As explained in issue #43, apache cannot currently reverse-proxy websockets. It would be nice if ethercalc had an option to run websockets on a separate port, so the normal http requests could still run through apache, while websocket connections went directly to node.js. This would make it possible to integrate ethercalc into an existing site.

Sorry if this is already possible, but I didn't find a way to do it.

Maximum call stack size exceeded

Hi,

I quickly and easily got ethercalc working on a physical gentoo machine, but then when I installed on a vmware guest (also gentoo and otherwise pretty much identical to the physical), I installs fine, but when I run the app, visit the home page and click "create sheet", the app crashes with the following error:

$ethercalc
Please connect to: http://redmine:8000/
info -socket.io started
Connected to Redis Server: localhost:6379
Express server listening on port 8000 in development mode
Zappa 0.4.12 "Freak Out!" orchestrating the show
debug -served static content /socket.io.js
debug -client authorized
info -handshake authorized ohxxrLRKl5OGEkge8lsv
debug -setting request GET /socket.io/1/websocket/ohxxrLRKl5OGEkge8lsv
debug -set heartbeat interval for client ohxxrLRKl5OGEkge8lsv
debug -client authorized for
debug -websocket writing 1::
debug -broadcasting packet
debug -broadcasting packet

/usr/lib64/node_modules/ethercalc/node_modules/redis/index.js:523
throw err;
^
RangeError: Maximum call stack size exceeded

After troubleshooting it for awhile, making sure I've got appropriate versions of node, v8, etc., recompiling/rebuilding packages, I'm stumped. (But, I'm suspecting it has something to do with the way memory is managed in the vm) Hope you can help, I'd really love to get this working for my co-workers

Load SocialCalc clipboard with this

Unless I havent understood how to use it properly, the "Load SocialCalc clipboard with this" button doesn't seem to do what it says -- clipboard contents remain unchanged.
(tested in ethercalc.org using csv format)

socialcalc save format does not load into clipboard

not sure if I should be able to do this or not, but what I'd like to do:

  1. create a lovely spreadsheet, with pretty colors, formulas and such
  2. capture the socialcalc text of the spreadsheet in all it's glory, y'know put it in under source control and such for meaningful diffs later on
  3. create a new spreadsheet
  4. load the previously saved socialcalc text as a starting point for new spreadsheet.

I tried this a bunch of times and I can't seem to load the socialcalc save format into the clipboard

can't get install to work

I'm not too familiar with node.js, but after installing node and npm with apt-get and trying to do npm install ethercalc I get the the following output:

axfelix@shoebox:~$ sudo npm i -g ethercalc
npm http GET https://registry.npmjs.org/ethercalc
npm http 304 https://registry.npmjs.org/ethercalc
npm http GET https://registry.npmjs.org/redis
npm http GET https://registry.npmjs.org/uuid-pure
npm http GET https://registry.npmjs.org/hiredis
npm http GET https://registry.npmjs.org/optimist
npm http GET https://registry.npmjs.org/zappajs
npm http 304 https://registry.npmjs.org/uuid-pure
npm http 304 https://registry.npmjs.org/optimist
npm http 304 https://registry.npmjs.org/zappajs
npm http 304 https://registry.npmjs.org/hiredis
npm http 304 https://registry.npmjs.org/redis
npm http GET https://registry.npmjs.org/minimist
npm http GET https://registry.npmjs.org/wordwrap
npm http GET https://registry.npmjs.org/bindings
npm http GET https://registry.npmjs.org/express/3.2.6
npm http GET https://registry.npmjs.org/socket.io/0.9.16
npm http GET https://registry.npmjs.org/coffeecup/0.3.20
npm http GET https://registry.npmjs.org/coffee-css/0.0.5
npm http GET https://registry.npmjs.org/node-uuid/1.4.0
npm http GET https://registry.npmjs.org/uglify-js/2.3.6
npm http GET https://registry.npmjs.org/methods/0.0.1
npm http 304 https://registry.npmjs.org/minimist
npm http 304 https://registry.npmjs.org/socket.io/0.9.16
npm http 304 https://registry.npmjs.org/express/3.2.6
npm http 304 https://registry.npmjs.org/bindings
npm http 304 https://registry.npmjs.org/coffeecup/0.3.20
npm http 304 https://registry.npmjs.org/coffee-css/0.0.5
npm http 304 https://registry.npmjs.org/node-uuid/1.4.0
npm http 304 https://registry.npmjs.org/uglify-js/2.3.6
npm http 304 https://registry.npmjs.org/wordwrap
npm http 304 https://registry.npmjs.org/methods/0.0.1
npm http GET https://registry.npmjs.org/underscore
npm http GET https://registry.npmjs.org/coffee-script
npm http GET https://registry.npmjs.org/commander/0.6.1
npm http GET https://registry.npmjs.org/range-parser/0.0.4
npm http GET https://registry.npmjs.org/mkdirp/0.3.4
npm http GET https://registry.npmjs.org/cookie/0.1.0
npm http GET https://registry.npmjs.org/buffer-crc32/0.2.1
npm http GET https://registry.npmjs.org/fresh/0.1.0
npm http GET https://registry.npmjs.org/send/0.1.0
npm http GET https://registry.npmjs.org/cookie-signature/1.0.1
npm http GET https://registry.npmjs.org/debug
npm http GET https://registry.npmjs.org/connect/2.7.11
npm http GET https://registry.npmjs.org/socket.io-client/0.9.16
npm http GET https://registry.npmjs.org/policyfile/0.0.4
npm http GET https://registry.npmjs.org/base64id/0.1.0
npm http GET https://registry.npmjs.org/redis/0.7.3
npm http GET https://registry.npmjs.org/async
npm http GET https://registry.npmjs.org/optimist
npm http GET https://registry.npmjs.org/source-map
npm http GET https://registry.npmjs.org/coffee-script
npm http GET https://registry.npmjs.org/optparse/1.0.3
npm http GET https://registry.npmjs.org/uglify-js/1.2.6
npm http GET https://registry.npmjs.org/stylus/0.27.2
npm http 304 https://registry.npmjs.org/underscore
npm http 304 https://registry.npmjs.org/coffee-script
npm http 304 https://registry.npmjs.org/mkdirp/0.3.4
npm http 304 https://registry.npmjs.org/range-parser/0.0.4
npm http 304 https://registry.npmjs.org/commander/0.6.1
npm http 304 https://registry.npmjs.org/cookie/0.1.0
npm http 304 https://registry.npmjs.org/buffer-crc32/0.2.1
npm http 304 https://registry.npmjs.org/fresh/0.1.0
npm http 304 https://registry.npmjs.org/cookie-signature/1.0.1
npm http 304 https://registry.npmjs.org/send/0.1.0
npm http 304 https://registry.npmjs.org/connect/2.7.11
npm http 304 https://registry.npmjs.org/debug
npm http GET https://registry.npmjs.org/connect/-/connect-2.7.11.tgz
npm http 304 https://registry.npmjs.org/socket.io-client/0.9.16
npm http 304 https://registry.npmjs.org/policyfile/0.0.4
npm http 304 https://registry.npmjs.org/base64id/0.1.0
npm http GET https://registry.npmjs.org/socket.io-client/-/socket.io-client-0.9.16.tgz
npm http 304 https://registry.npmjs.org/redis/0.7.3
npm http GET https://registry.npmjs.org/redis/-/redis-0.7.3.tgz
npm http 304 https://registry.npmjs.org/async
npm http GET https://registry.npmjs.org/async/-/async-0.2.9.tgz
npm http 304 https://registry.npmjs.org/optimist
npm http 304 https://registry.npmjs.org/source-map
npm http GET https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz
npm ERR! error installing [email protected]
npm ERR! error installing [email protected]
npm ERR! error installing [email protected]

npm ERR! Error: No compatible version found: source-map@'>=0.1.7- <0.2.0-'
npm ERR! Valid install targets:
npm ERR! ["0.0.0","0.1.0","0.1.1","0.1.2","0.1.3"]
npm ERR! at installTargetsError (/usr/share/npm/lib/cache.js:488:10)
npm ERR! at next_ (/usr/share/npm/lib/cache.js:438:17)
npm ERR! at next (/usr/share/npm/lib/cache.js:415:44)
npm ERR! at /usr/share/npm/lib/cache.js:408:5
npm ERR! at saved (/usr/share/npm/lib/utils/npm-registry-client/get.js:147:7)
npm ERR! at Object.oncomplete (/usr/lib/nodejs/graceful-fs.js:230:7)
npm ERR! You may report this log at:
npm ERR! http://bugs.debian.org/npm
npm ERR! or use
npm ERR! reportbug --attach /home/axfelix/npm-debug.log npm
npm ERR!
npm ERR! System Linux 3.10.2-031002-generic
npm ERR! command "/usr/bin/nodejs" "/usr/bin/npm" "i" "-g" "ethercalc"
npm ERR! cwd /home/axfelix
npm ERR! node -v v0.6.19
npm ERR! npm -v 1.1.4
npm ERR! message No compatible version found: source-map@'>=0.1.7- <0.2.0-'
npm ERR! message Valid install targets:
npm ERR! message ["0.0.0","0.1.0","0.1.1","0.1.2","0.1.3"]
npm http 304 https://registry.npmjs.org/coffee-script
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /home/axfelix/npm-debug.log
npm not ok

any advice? sorry if this is a stupid question.

Conditional formatting

I haven't found conditional formatting feature withing Ethercalc. If it lacks this feature than it would be next good improvement.

Packets are not broadcasted after some time.

Host system: Ubuntu 12.04
Nodejs: latest (0.10.13) from https://launchpad.net/~richarvey/+archive/nodejs
Ethercalc: latest (0.20130724.1) from npm

On my system Ethercalc at start runs fine, but after about 5 minutes (not exact measure) weird things start to happen:

  • Connected clients are not updated with changes
  • New clients see empty spreadsheet
  • Server in console displays that it receives packets from clients, but is not broadcasting them anymore. Normally there's message "broadcasting packet" followed by "websocket writing some_data...", but later there's only "broadcasting packet" and nothing happens (here's the log: http://susepaste.org/19467747. to line 381 everything is fine, then there's some inactivity and at 432 there are events that aren't broadcasted).

Reproducible: always

Access auth system

Hi, I'm trying to set up your system to collect a contacts lists online with a bunch of people. But since it's privacy sensitive I'd like to add password protection, even from basic viewing.

I'm very new to node.js, but I found out I could add password protection using the following code.

var http = require("http");
var auth = require("http-auth");
var basic = auth({
  authRealm: "Private area",
  authFile: "NODE DIRECTORY/.htpasswd",
  authType: "basic"
});
var server = http.createServer(function(request, response) {
  basic.apply(request, response, function(username) {
    response.writeHead(200, {"Content-Type": "text/plain"});
    response.write("Hello " + username);
    response.end();
  });
});
server.listen(8001);
console.log("Server is listening");

Based on:
http://jspro.com/nodejs/http-authentication-in-node-js/

But I can't find where/how I could implement this in Ethercalc.

Any tips?

Import option for ethercalc

It would be nice to have an option to import xls or similar spreadsheet files to the ethercalc. It is easy to create visualization from the ethercalc.

How to execute ethercalc without sudo mode ?

Hello,

How could we use Ethercalc without the command "sudo ethercalc" ?
If I execute Ethercalc without sudo it crashs when I create a new pad !

I have installed ethercalc in /opt and changed own :
xxx@aaa:/opt$ ls -l
drwxr-xr-x 11 ethercalc ethercalc 4096 sep 4 18:28 ethercalc

Thanks

For example :

Command :

xxx@aaa:/usr/bin$ ethercalc

Result :

/usr/bin$ ethercalc
Please connect to: http://xxx:8000/
info - socket.io started
Starting backend using webworker-threads
Express server listening on port 8000 in development mode
Zappa 0.4.22 "You can't do that on stage anymore" orchestrating the show
[Error: Redis connection to localhost:6379 failed - connect ECONNREFUSED]
==> Falling back to JSON storage: /usr/bin/dump.json

Then immediately after click on the "Create Spreadsheet" button :

fs.js:427
return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
^
Error: EACCES, permission denied '/usr/bin/dump.json'
at Object.fs.openSync (fs.js:427:18)
at Object.fs.writeFileSync (fs.js:966:15)
.....

Borders for multiple cells selection

If many cells are selected and for example top border is applied, we get this:

Clipboard Image

I think it is not correct as if we need to highlight selection of cells like this:

image

we need to do many actions to get this simple task done. The best way to make borders is something Excel-like style:

Clipboard Image 1

Outside borders is lack in Ethercalc now.

Delete a file

Hello,

Is it possible to delete a file (a spreadsheet) and how ?

For this kind of request, does a forum exist or is it the good place here ?

Thanks

Does not work without minor hack.

$ ethercalc
Please connect to: http://localhost:8000/
info - socket.io started

/usr/local/lib/node_modules/ethercalc/node_modules/zappajs/lib/zappa.js:514
throw "Unknown middleware " + name;
^
Unknown middleware /edit

npm -v
1.2.32

node -v
v0.10.12

livescript -v
LiveScript 1.1.1

redis-server -v
Redis server v=2.6.7 sha=00000000:0 malloc=jemalloc-3.0.0 bits=64

lsb_release
Release: Ubuntu 13.04

uname -r
3.8.0-25-generic

To fix this i just commented this else:
( /usr/local/lib/node_modules/ethercalc/node_modules/zappajs/lib/zappa.js:514 )

else {
throw "Unknown middleware " + name;
}

Problem with nginx proxy configuration ( basepath not working)

I have problem with nginx proxy configuration
nginx setup

server {
        listen               443;
        ssl                  on;
        ssl_certificate      /etc/nginx/server.crt;
        ssl_certificate_key  /etc/nginx/server.key;
        keepalive_timeout    70;
        location / {
                expires 24h;
                proxy_pass      https://127.0.0.1:8000/;
                include         /etc/nginx/proxy.conf;

        }

        location /ethercalc/ {
                proxy_pass      http://127.0.0.1:3001/;
                include         /etc/nginx/proxy.conf;
        }
}

Ethercalc is running on 3001 port

bin/ethercalc --polling --basepath https://192.168.120.34/ethercalc

after this if I browse
https://192.168.120.34/ethercalc/abcd
it doesn't load any js, css and image file
ethercalc suppose to load file from https://192.168.120.34/ethercalc/ but it tries to load all the files from https://192.168.120.34/

please help

Translation feature

Is it possible to make Ethercalc translatable?
You can sniff the language through user agent or add an option to settings

A visual spreadsheet Title

It would be a useful feature to have a Title for the documents to help organize them. The visual title could be modified by simply clicking it at the top of the document.

Replace zappa with zappajs?

Zappa 0.3.x no longer installs properly -- its dependency on Express is broken, meaning a plain ethercalc installation won't start:

ethercalc/node_modules/zappa/lib/zappa.js:65
  express.View.prototype.__defineGetter__('exists', function() {
              ^
TypeError: Cannot read property 'prototype' of undefined

zappajs continues mauricemach's work (disclaimer: I'm maintaining zappajs). A dependency of

"zappajs": "0.3.x"

along with a replacament of zappa into zappajs in app.coffee makes ethercalc work again.

No indication when data could not be saved

ethercalc doesn't currently warn if the websocket connection fails and thus no data could be saved. This leads to silent data loss.

Scenario: I tried to run ethercalc through an Apache reverse-proxy (because I have only one IP address and wanted to have ethercalc as part of an existing domain). Everything seemed to work fine, but all data was lost when I closed the browser window and reopened the URL. As I learned, Apache doesn't currently reverse-proxy websockets, so I assume that this was the reason why the data couldn't be saved (also because it worked from the same browser when accessing node.js directly on port 8000).

I think ethercalc should show a prominent warning if the data couldn't be saved to the server.

Basic Auth system (for read-only / read-write access)

Thanks for the auth-work so far. We would need a stand-alone solution. As you mentioned in issue #1 if a basic auth system is required I should open a new issue - here it is ;-)

  • We'd prefer not having to use a reverse proxy (I'd have to read up and set up one first etc.)
  • Also we're not embedding ethercalc in another app, we're using it 'pure' :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.