Git Product home page Git Product logo

tty.js's People

Contributors

bkase avatar chjj avatar jrozner avatar page- 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

tty.js's Issues

Windows

Windows. Anything. A sidelong glance even? You wouldn't leave us homeless if it came to it? You care but you know this really amazing linux chap?

pass web headers/environment to shell program

Feature idea: I would like to be able to pass the information about the web environment to the shell program somehow (either as arguments or as environment variables)

e.g. variables such as REMOTE_ADDR, HTTP_X_FORWARDED_FOR could be exposed to the underlying shell program.

Ultimately, I want my reverse proxy server to authenticate the user and pass a SAML assertion (or equivalent) to tty.js, so the shell program can use upstream authentication.

No keyboard on iPad

The terminal will start up, but it appears the window is not being identified as a text field, so the iPad (chrome and safari) will not bring up the keyboard.

tty.js doesn't seems to use config file.

Hello, I'm using the latest version of tty.js and I'm having an issue with the config file.

I did as written in the README: I copy pasted the sample config file and put it in ~/.tty.js

If I launch tty.js with or without the --config option the config file seems not to be used (the server is not listening in the specified port).

update:

In fact I was launching tty.js like that

var tty = require('tty.js');
var app = tty.createServer();
.... (like in the Usage part on the readme)

If I launch tty.js directly without specifying where the config file is, I got an error because he is trying to open only the second form of config file (~/.tty.js/config.json and not ~/.tty.js).
So I'm not sure this is an issue or not!

update:
In fact I didn't figured out that I have to call tty.config.readConfig() and use it as argument in the createServer

Sponsoring features in tty.js?

Sorry to post this here, but I couldn't find any way to message Christopher privately. I'm interested in sponsoring a few additional features to tty.js...namely the ability to login as a user and configure a set of hot keys (keyboard shortcuts).

Christopher, if you are interested (or if anyone else is, for that matter, please let me know. I suppose an update of this ticket would be enough, and then we can work out contact info.

Thanks,
John

Is it possible to fork to /bin/login?

Instead of just opening a shell under the user who is currently running tty.js, I'd like to force them to login. I've tried setting conf.shell to /bin/login, but the process seems to hang. Is this possible?

Thanks!

reverse video toggle

Hi, I'd like the option to disable reverse video, as my default color scheme is unusable within it.

edit: thanks for the license clarification btw

Needs support for 256 color codes

Hey @chjj, very nice project!

I have been trying to hack in support for 256 color codes which is IMO one of the only killer features missing, but all this crazy bit stuffing is making my head spin.

I'm dying to see Yoshi in my terminal in my browser :p

Expected behavior:

What is seen:

Cheers!

`npm install -g tty.js` doesn't work as expected

~ (master) ⚡ npm install -g tty.js
npm http GET https://registry.npmjs.org/tty.js
npm http 304 https://registry.npmjs.org/tty.js
npm http GET https://registry.npmjs.org/express
npm http GET https://registry.npmjs.org/socket.io
npm http GET https://registry.npmjs.org/pty.js
npm http 304 https://registry.npmjs.org/express
npm http 304 https://registry.npmjs.org/pty.js
npm http GET https://registry.npmjs.org/express/-/express-2.5.9.tgz
... blah blah blah...

☮ ~ (master) ⚡ tty.js

node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
Error: Cannot find module '/Users/lib/node_modules/tty.js/index.js'
    at Function._resolveFilename (module.js:332:11)
    at Function._load (module.js:279:25)
    at Array.0 (module.js:479:10)
    at EventEmitter._tickCallback (node.js:192:40)
☮ ~ (master) ⚡ 

sh: arg1: No such file or directory

I'm getting the below server crash. I get what looks like a black bg terminal window and it says:

"sh: arg1: No such file or directory"
and I try to type in it but nothing happens.

Other times, I restart the server and have a terminal window, and the window does nothing, and the server doesn't crash or do anything either.

node ./node_modules/tty.js
Warning: You should sha1 your usernames/passwords.
info - socket.io started

Created shell with pty (/dev/ttys008) master/slave pair (master: 13, pid: 12977)

/Users/mitchhan/src/node/node_modules/tty.js/node_modules/pty.js/lib/pty.js:78
throw err;
^
Error: write EIO
at errnoException (net.js:670:11)
at Object.afterWrite as oncomplete

How to capture a particular command in tty.js and then customize the output?

Hi

How can I capture a particular command and then customize the output to this command?

Say when we type "pwd" command in the Terminal, by default, it will output:
root@ubuntu:~# pwd
/root

When "pwd" command is been captured and I want to customize the output, say add a new line before the output, something like this:
root@ubuntu:~# pwd
You are the root user
/root

How can I make tty.js capable of doing something like that?

Thank you!
Cai

terminal takes over keystrokes of whole document

I've been trying to integrate the example terminal and it works great.
But the key handler is registered to the complete document and not the the terminal element.

This makes it hard to integrate with forms on the same page as data can't be entered but is intercepted and send to the terminal.

Happy to help here, but not sure where to begin. I've tried using this.element instead of document to register keypress but my javascript foo fails there.

thanks

Lightweight terminal

It would be nice to have an example without all the Windows and Tab stuff.

Just one terminal which fit his html container.

It would be easier to embed tty.js in a Web-App.

index.html is a nice presentation but it's a too complicated example.

Do you have some examples in this way ?

Copy and paste - OSX lion

Will be nice to be able to copy and past on the "command line".

I tried right click and select paste and works

I am using Mac OSX Lion

Thanks

emacs leaves terminal in underline mode

Steps to duplicate:

  1. Start emacs (I'm using version 23.3.1 on Ubuntu)
  2. Let emacs finish loading all the crap it loads.
  3. Hit Ctrl-x Ctrl-c to exit emacs.
  4. Observe that everything in the terminal is underlined.

Optional:
5. run "reset" to put your terminal back to normal.

Not a big deal, but an issue nonetheless.

utf8 xterm extended mouse events

xterm mouse events are pretty esoteric. The non-utf8 mouse events seem to be working perfectly right now. In xterm, utf8 events seem to be activated regardless of whether ^[[?1005h is set in xterm, but according to the xterm code, utf8 mouse coordinates should only be allowed if CSI ? 1005 h has been set. It could be that CSI ? 1002 h and CSI ? 1003 h implicitly activate utf8 mouse events. The xterm documentation doesn't cover this too thoroughly.

It all seems strange, and it's awkward to work with since javascript abstracts away encodings while using utf16. These ultimately need to be implemented.

Operations on a non-existent terminal crash server

Various operations on non-existent terminal cause the server to crash. I ran into this when I restarted the server, and had sessions open. Then resizing a terminal causes this:

/home/magnus/node/tty.js/lib/tty.js:177
terms[id].resize(cols, rows);
^
TypeError: Cannot call method 'resize' of undefined
at Socket. (/home/magnus/node/tty.js/lib/tty.js:177:15)
at Socket.$emit (events.js:77:17)
at SocketNamespace.handlePacket (/home/magnus/node/tty.js/node_modules/socket.io/lib/namespace.js:335:22)
at Manager.onClientMessage (/home/magnus/node/tty.js/node_modules/socket.io/lib/manager.js:462:38)
at WebSocket.onMessage (/home/magnus/node/tty.js/node_modules/socket.io/lib/transport.js:387:20)
at Parser. (/home/magnus/node/tty.js/node_modules/socket.io/lib/transports/websocket/hybi-07-12.js:40:10)
at Parser.emit (events.js:67:17)
at /home/magnus/node/tty.js/node_modules/socket.io/lib/transports/websocket/hybi-07-12.js:289:16
at Parser.expectHandler (/home/magnus/node/tty.js/node_modules/socket.io/lib/transports/websocket/hybi-07-12.js:300:
15)
at Parser.add (/home/magnus/node/tty.js/node_modules/socket.io/lib/transports/websocket/hybi-07-12.js:467:24)

mv: rename -t to ./-t: No such file or directory

% npm install -g tty.js
[...]
npm http 304 https://registry.npmjs.org/websocket-client/1.0.0
npm http 304 https://registry.npmjs.org/xmlhttprequest/1.2.2
npm http 304 https://registry.npmjs.org/uglify-js/1.0.6
/usr/local/bin/tty.js -> /usr/local/lib/node_modules/tty.js/bin/tty.js

> [email protected] install /usr/local/lib/node_modules/tty.js
> make

node-waf configure build
Checking for program g++ or c++          : /usr/bin/g++ 
Checking for program cpp                 : /usr/bin/cpp 
Checking for program ar                  : /usr/bin/ar 
Checking for program ranlib              : /usr/bin/ranlib 
Checking for g++                         : ok  
Checking for node path                   : ok /usr/local/lib/node 
Checking for node prefix                 : ok /usr/local/Cellar/node/0.6.11 
'configure' finished successfully (0.080s)
Waf: Entering directory `/usr/local/lib/node_modules/tty.js/build'
[1/2] cxx: src/pty.cc -> build/Release/src/pty_1.o
../src/pty.cc: In function ‘v8::Handle<v8::Value> PtyFork(const v8::Arguments&)’:
../src/pty.cc:50: warning: deprecated conversion from string constant to ‘char*’
[2/2] cxx_link: build/Release/src/pty_1.o -> build/Release/pty.node
Waf: Leaving directory `/usr/local/lib/node_modules/tty.js/build'
'build' finished successfully (0.595s)
mv: rename -t to ./-t: No such file or directory
make: *** [all] Error 1
npm ERR! error installing [email protected]

npm ERR! [email protected] install: `make`
npm ERR! `sh "-c" "make"` failed with 2
npm ERR! 
npm ERR! Failed at the [email protected] install script.
npm ERR! This is most likely a problem with the tty.js package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     make
npm ERR! You can get their info via:
npm ERR!     npm owner ls tty.js
npm ERR! There is likely additional logging output above.
npm ERR! 
npm ERR! System Darwin 11.3.0
npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "tty.js"
npm ERR! cwd /private/tmp
npm ERR! node -v v0.6.11
npm ERR! npm -v 1.1.1
npm ERR! code ELIFECYCLE
npm ERR! message [email protected] install: `make`
npm ERR! message `sh "-c" "make"` failed with 2
npm ERR! errno {}
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /private/tmp/npm-debug.log
npm not ok

bin/tty.js terminates itself

The killall in tty.js is killing itself:

Terminated

as opposed to:

Created shell with pty master/slave pair (master: 5, pid: 26905)
   info  - socket.io started````

term.js license

https://github.com/chjj/tty.js/blob/master/static/term.js

 * Originally forked from (with the author's permission):
 *
 * Fabrice Bellard's javascript vt100 for jslinux:
 * http://bellard.org/jslinux/
 * Copyright (c) 2011 Fabrice Bellard
 * (Redistribution or commercial use is prohibited
 *  without the author's permission.)

So we have to ask for Fabrice's permission to redistribute term.js?

"Open Terminal" button gets triggered by spacebar (in Firefox?)

If I click the "Open Terminal" button it gets focus. Then the first time I hit the spacebar, the button is activated (again) and another terminal opens. This is quite annoying.

Calling 'blur()' on the open button fixes:

--- a/static/tty.js                                                             
+++ b/static/tty.js                                                             
@@ -75,6 +76,7 @@ tty.open = function() {                                       
   if (open) {                                                                  
     on(open, 'click', function() {                                             
       new Window;                                                              
+      open.blur();                                                             
     });                                                                        
   }                                                                            

Can't get prompt on Mac

I tried tty.js with default options like

{
"auth": {
"username": null,
"password": null
},
"https": {
"key": null,
"cert": null
},
"port": 8080,
"term": {}
}

with command

/sompath/tty.js --config ~/.tty.js/config.json

But can't get bash prompt.

STDOUT says

Created shell with pty (/dev/ttys001) master/slave pair (master: 15, pid: 33635)

It seems it is forked well.
How can I get this working.?

Copy/Paste is not working in firefox at all

There is no way to copy./paste in the terminal in firefox. I tried the following:
select from the output and press middle button - not working
select from output, right click -> Copy, right click -> Paste - not working
select text with the mouse, ctrl C + ctrl V - not working

middle mouse button works in Chrome, unfortunately I cannot use chrome on some machines. Would that be fixed in FF?

No terminal opening at all

Hi, I've tried installing this on Debian.

sudo npm install -d tty.js

Although it appears to work OK. When I try accessing in a browser (I've tried FF, chrome and Safari), I get the following output on the shell:

Warning: You should sha1 your usernames/passwords.
   info  - socket.io started
Created shell with pty (/dev/pts/35) master/slave pair (master: 13, pid: 17704)
Closed pty (/dev/pts/35): 13.
Created shell with pty (/dev/pts/35) master/slave pair (master: 20, pid: 17753)
Client disconnected. Killing all pty's...

I wasn't getting a terminal but I've fixed this - your example config file is not too helpful as it doesn't actually work!

The problem I have though is that, although I've specified cert files that I know work (as I'm using them with other Node apps), I don't get an https connection.

I've tried running as a user and as root.

Here is the config file I've got when running as root (with the secure bits changed of course):

{
  "users": {
    "user": "password"
  },
  "https": {
    "key": "/etc/ssl/private/somename.key",
    "cert": "/etc/ssl/private/somename.crt"
  },
  "port": 8082,
  "hostname": "totallyinformation.net",
  "shell": "bash",
  "term": {
    "termName": "xterm",
    "geometry": [80, 30],
  }
}

Any ideas?

termReverse simplistic interpretation

termReverse needs to handle the case of the terminal previously being reversed. Consider the cursor is positioned in a span with termReverse you can't see the cursor blinking because the cursor should really have term in those cases. Initially I was going to merely special case the cursor, and maybe someone will one day want to style just the cursor, but I think the right solution is to follow reverse until a reset happens.

Tabbed layout

A tabbed layout would suite me better than a free-floating windows. Don't much care for having windows in windows. is there or could there me a mode for that?

Doesnt work in lynx

I'm getting this error when I try and open a term in lynx

  ** Bad HTML!! No form action defined. **                                        

which is a real shame :D

Commands block

Hello.
As you can do that only to run a few commands from the terminal, and block all others?

Thanks.

cursor hidden after `tree` command

i found this after running npm ls. flooding the screen (with eg cat on a large file) doesn't do this. problem clears up with clear.

edit: the tree / npm ls command must output enough to move the cursor below the screen; running it when the terminal is empty and large enough to hold everything won't cause any problems

edit2: removed my .bashrc, still happens. if i run tree, then maximize, there are no problems. if i maximize the terminal window before running any other commands, the problem happens.

lib/pty.js broken

In pty.js file is included "../pty.node" but this file doesn't exists

var pty = require('../pty.node');

Instead of it, you need to use

var pty = require('pty.js/pty.node');

Centos 5.8 Build Error Failing on [email protected]

Hey everyone,

I tried to "npm install tty.js" in a directory as both a normal user and privileged user. I received this error: (System below)

$ sudo npm install tty.js
npm http GET https://registry.npmjs.org/tty.js
npm http 304 https://registry.npmjs.org/tty.js
npm http GET https://registry.npmjs.org/express/3.0.0beta4
npm http GET https://registry.npmjs.org/socket.io/0.9.6
npm http GET https://registry.npmjs.org/pty.js/0.1.2
npm http 304 https://registry.npmjs.org/socket.io/0.9.6
npm http 304 https://registry.npmjs.org/pty.js/0.1.2
npm http 304 https://registry.npmjs.org/express/3.0.0beta4

[email protected] preinstall /home/chason/public_html/shell/node_modules/tty.js/node_modules/pty.js
node-waf clean || (exit 0); node-waf configure build

sh: node-waf: command not found
sh: node-waf: command not found
npm ERR! error installing [email protected]
npm ERR! error installing [email protected]
npm ERR! error rolling back [email protected] Error: ENOTEMPTY, rmdir '/home/chason/public_html/shell/node_modules/tty.js/node_modules/___express.npm/package/lib'

npm ERR! [email protected] preinstall: node-waf clean || (exit 0); node-waf configure build
npm ERR! sh "-c" "node-waf clean || (exit 0); node-waf configure build" failed with 127
npm ERR!
npm ERR! Failed at the [email protected] preinstall script.
npm ERR! This is most likely a problem with the pty.js package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! node-waf clean || (exit 0); node-waf configure build
npm ERR! You can get their info via:
npm ERR! npm owner ls pty.js
npm ERR! There is likely additional logging output above.
npm ERR!
npm ERR! System Linux 2.6.18-308.4.1.el5
npm ERR! command "node" "/usr/bin/npm" "install" "tty.js"
npm ERR! cwd /home/chason/public_html/shell
npm ERR! node -v v0.6.18
npm ERR! npm -v 1.1.1
npm ERR! code ELIFECYCLE
npm ERR! message [email protected] preinstall: node-waf clean || (exit 0); node-waf configure build
npm ERR! message sh "-c" "node-waf clean || (exit 0); node-waf configure build" failed with 127
npm ERR! errno {}
npm ERR! error installing [email protected]
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /home/chason/public_html/shell/npm-debug.log
npm not ok

========================= npm-debug.log ==============================

info it worked if it ends with ok
verbose cli [ 'node', '/usr/bin/npm', 'install', 'tty.js' ]
info using [email protected]
info using [email protected]
verbose /usr/bin/node node symlink
verbose config file /home/chason/.npmrc
verbose config file /usr/etc/npmrc
verbose config file /usr/lib/node_modules/npm/npmrc
verbose cache add [ 'tty.js', null ]
silly cache add: name, spec, args [ undefined, 'tty.js', [ 'tty.js', null ] ]
verbose parsed url { pathname: 'tty.js', path: 'tty.js', href: 'tty.js' }
verbose addNamed [ 'tty.js', '' ]
verbose addNamed [ null, '' ]
silly name, range, hasData [ 'tty.js', '', false ]
verbose raw, before any munging tty.js
verbose url resolving [ 'https://registry.npmjs.org/', './tty.js' ]
verbose url resolved https://registry.npmjs.org/tty.js
verbose etag "7JZVEKQKTVHT7NLWQOCE4E3TV"
http GET https://registry.npmjs.org/tty.js
http 304 https://registry.npmjs.org/tty.js
silly get cb [ 304,
silly get cb { server: 'CouchDB/1.2.0 (Erlang OTP/R15B)',
silly get cb etag: '"7JZVEKQKTVHT7NLWQOCE4E3TV"',
silly get cb date: 'Fri, 06 Jul 2012 04:22:58 GMT',
silly get cb 'content-length': '0' } ]
verbose etag tty.js from cache
silly name, range, hasData 2 [ 'tty.js', '', true ]
silly versions [ 'tty.js',
silly versions [ '0.0.1',
silly versions '0.0.2',
silly versions '0.0.3',
silly versions '0.0.4',
silly versions '0.0.4-1',
silly versions '0.0.5',
silly versions '0.0.6',
silly versions '0.0.7',
silly versions '0.0.8',
silly versions '0.0.9',
silly versions '0.1.0',
silly versions '0.1.1',
silly versions '0.1.2',
silly versions '0.1.3',
silly versions '0.1.4',
silly versions '0.1.5',
silly versions '0.1.5-1',
silly versions '0.1.5-2',
silly versions '0.1.6',
silly versions '0.1.7',
silly versions '0.1.8',
silly versions '0.1.8-1',
silly versions '0.1.9',
silly versions '0.2.0',
silly versions '0.2.5',
silly versions '0.2.6',
silly versions '0.2.7' ] ]
verbose bin dist [ '0.6-ares1.7.5-DEV-evundefined-openssl0.9.8e-fips-rhel5-v83.6.6.25-linux-ia32-2.6.18-308.4.1.el5',
verbose bin dist { shasum: '6c635eea07e2088dc383ff3a4fb33427611d3d21',
verbose bin dist tarball: 'http://registry.npmjs.org/tty.js/-/tty.js-0.2.7.tgz' } ]
verbose caching /home/chason/.npm/tty.js/0.2.7/package/package.json
verbose loadDefaults [email protected]
silly resolved [ { name: 'tty.js',
silly resolved description: 'A terminal for your browser',
silly resolved author: { name: 'Christopher Jeffrey' },
silly resolved version: '0.2.7',
silly resolved main: './index.js',
silly resolved bin: { 'tty.js': './bin/tty.js' },
silly resolved man: [ './man/tty.js.1' ],
silly resolved preferGlobal: false,
silly resolved repository: { type: 'git', url: 'git://github.com/chjj/tty.js.git' },
silly resolved homepage: 'https://github.com/chjj/tty.js',
silly resolved bugs: { url: 'https://github.com/chjj/tty.js/issues' },
silly resolved keywords: [ 'tty', 'terminal' ],
silly resolved tags: [ 'tty', 'terminal' ],
silly resolved dependencies:
silly resolved { express: '3.0.0beta4',
silly resolved 'socket.io': '0.9.6',
silly resolved 'pty.js': '0.1.2' },
silly resolved _id: '[email protected]',
silly resolved devDependencies: {},
silly resolved optionalDependencies: {},
silly resolved engines: { node: '' },
silly resolved _engineSupported: true,
silly resolved _npmVersion: '1.1.1',
silly resolved _nodeVersion: 'v0.6.18',
silly resolved _defaultsLoaded: true,
silly resolved scripts: {} } ]
info into /home/chason/public_html/shell [email protected]
info installOne [email protected]
info unbuild /home/chason/public_html/shell/node_modules/tty.js
verbose from cache /home/chason/.npm/tty.js/0.2.7/package/package.json
verbose mkdir (expected) error ENOENT, stat '/home/chason/public_html/shell/node_modules/___tty.js.npm'
verbose mkdir done: /home/chason/public_html/shell/node_modules/__tty.js.npm 755
verbose unpack
uid, gid [ 500, 500 ]
verbose unpackTarget /home/chason/public_html/shell/node_modules/tty.js
silly gunzTarPerm modes [ '755', '644' ]
silly afterUntar undefined
silly asyncMap in gTP /home/chason/public_html/shell/node_modules/___tty.js.npm/package
silly asyncMap in gTP /home/chason/public_html/shell/node_modules/___tty.js.npm/package/README.md
silly asyncMap in gTP /home/chason/public_html/shell/node_modules/___tty.js.npm/package/package.json
silly asyncMap in gTP /home/chason/public_html/shell/node_modules/___tty.js.npm/package/index.js
silly asyncMap in gTP /home/chason/public_html/shell/node_modules/___tty.js.npm/package/LICENSE
silly asyncMap in gTP /home/chason/public_html/shell/node_modules/___tty.js.npm/package/.npmignore
silly asyncMap in gTP /home/chason/public_html/shell/node_modules/___tty.js.npm/package/static
silly asyncMap in gTP /home/chason/public_html/shell/node_modules/___tty.js.npm/package/static/term.js
silly asyncMap in gTP /home/chason/public_html/shell/node_modules/___tty.js.npm/package/static/index.html
silly asyncMap in gTP /home/chason/public_html/shell/node_modules/___tty.js.npm/package/static/style.css
silly asyncMap in gTP /home/chason/public_html/shell/node_modules/___tty.js.npm/package/static/favicon.ico
silly asyncMap in gTP /home/chason/public_html/shell/node_modules/___tty.js.npm/package/static/tty.js
silly asyncMap in gTP /home/chason/public_html/shell/node_modules/___tty.js.npm/package/lib
silly asyncMap in gTP /home/chason/public_html/shell/node_modules/___tty.js.npm/package/lib/config.js
silly asyncMap in gTP /home/chason/public_html/shell/node_modules/___tty.js.npm/package/lib/logger.js
silly asyncMap in gTP /home/chason/public_html/shell/node_modules/___tty.js.npm/package/lib/tty.js
silly asyncMap in gTP /home/chason/public_html/shell/node_modules/___tty.js.npm/package/bin
silly asyncMap in gTP /home/chason/public_html/shell/node_modules/___tty.js.npm/package/bin/tty.js
silly asyncMap in gTP /home/chason/public_html/shell/node_modules/___tty.js.npm/package/man
silly asyncMap in gTP /home/chason/public_html/shell/node_modules/___tty.js.npm/package/man/tty.js.1
verbose gunzed /home/chason/public_html/shell/node_modules/___tty.js.npm/package
verbose rm'ed /home/chason/public_html/shell/node_modules/tty.js
verbose renamed [ '/home/chason/public_html/shell/node_modules/___tty.js.npm/package',
verbose renamed '/home/chason/public_html/shell/node_modules/tty.js' ]
verbose caching /home/chason/public_html/shell/node_modules/tty.js/package.json
verbose loadDefaults [email protected]
info preinstall [email protected]
verbose from cache /home/chason/public_html/shell/node_modules/tty.js/package.json
verbose cache add [ '[email protected]', null ]
silly cache add: name, spec, args [ undefined,
silly cache add: name, spec, args '[email protected]',
silly cache add: name, spec, args [ '[email protected]', null ] ]
verbose parsed url { pathname: '[email protected]',
verbose parsed url path: '[email protected]',
verbose parsed url href: '[email protected]' }
silly cache add: name, spec, args [ 'express', '3.0.0beta4', [ 'express', '3.0.0beta4' ] ]
verbose parsed url { pathname: '3.0.0beta4',
verbose parsed url path: '3.0.0beta4',
verbose parsed url href: '3.0.0beta4' }
verbose addNamed [ 'express', '3.0.0beta4' ]
verbose addNamed [ '3.0.0beta4', '3.0.0beta4' ]
verbose cache add [ '[email protected]', null ]
silly cache add: name, spec, args [ undefined, '[email protected]', [ '[email protected]', null ] ]
verbose parsed url { pathname: '[email protected]',
verbose parsed url path: '[email protected]',
verbose parsed url href: '[email protected]' }
silly cache add: name, spec, args [ 'socket.io', '0.9.6', [ 'socket.io', '0.9.6' ] ]
verbose parsed url { pathname: '0.9.6', path: '0.9.6', href: '0.9.6' }
verbose addNamed [ 'socket.io', '0.9.6' ]
verbose addNamed [ '0.9.6', '0.9.6' ]
verbose raw, before any munging express/3.0.0beta4
verbose url resolving [ 'https://registry.npmjs.org/', './express/3.0.0beta4' ]
verbose url resolved https://registry.npmjs.org/express/3.0.0beta4
verbose etag "BBN46MY5X9U6BZK3U8P2Z7S89"
http GET https://registry.npmjs.org/express/3.0.0beta4
verbose raw, before any munging socket.io/0.9.6
verbose url resolving [ 'https://registry.npmjs.org/', './socket.io/0.9.6' ]
verbose url resolved https://registry.npmjs.org/socket.io/0.9.6
verbose etag "33XPG7B0EQU3JRVOARD1HYP7N"
http GET https://registry.npmjs.org/socket.io/0.9.6
verbose cache add [ '[email protected]', null ]
silly cache add: name, spec, args [ undefined, '[email protected]', [ '[email protected]', null ] ]
verbose parsed url { pathname: '[email protected]',
verbose parsed url path: '[email protected]',
verbose parsed url href: '[email protected]' }
silly cache add: name, spec, args [ 'pty.js', '0.1.2', [ 'pty.js', '0.1.2' ] ]
verbose parsed url { pathname: '0.1.2', path: '0.1.2', href: '0.1.2' }
verbose addNamed [ 'pty.js', '0.1.2' ]
verbose addNamed [ '0.1.2', '0.1.2' ]
verbose raw, before any munging pty.js/0.1.2
verbose url resolving [ 'https://registry.npmjs.org/', './pty.js/0.1.2' ]
verbose url resolved https://registry.npmjs.org/pty.js/0.1.2
verbose etag "5PAW0VUPLFN0EMQKQ3JKKIHPW"
http GET https://registry.npmjs.org/pty.js/0.1.2
http 304 https://registry.npmjs.org/socket.io/0.9.6
silly get cb [ 304,
silly get cb { server: 'CouchDB/1.2.0 (Erlang OTP/R15B)',
silly get cb etag: '"33XPG7B0EQU3JRVOARD1HYP7N"',
silly get cb date: 'Fri, 06 Jul 2012 04:22:59 GMT',
silly get cb 'content-length': '0' } ]
verbose etag socket.io/0.9.6 from cache
verbose bin dist [ '0.6-ares1.7.5-DEV-evundefined-openssl0.9.8e-fips-rhel5-v83.6.6.25-linux-ia32-2.6.18-308.4.1.el5',
verbose bin dist { shasum: '6f76255c64f8a471995a1b624f6f16ccae0471e3',
verbose bin dist tarball: 'http://registry.npmjs.org/socket.io/-/socket.io-0.9.6.tgz' } ]
verbose caching /home/chason/.npm/socket.io/0.9.6/package/package.json
verbose loadDefaults [email protected]
http 304 https://registry.npmjs.org/pty.js/0.1.2
silly get cb [ 304,
silly get cb { server: 'CouchDB/1.2.0 (Erlang OTP/R15B)',
silly get cb etag: '"5PAW0VUPLFN0EMQKQ3JKKIHPW"',
silly get cb date: 'Fri, 06 Jul 2012 04:22:59 GMT',
silly get cb 'content-length': '0' } ]
verbose etag pty.js/0.1.2 from cache
verbose bin dist [ '0.6-ares1.7.5-DEV-evundefined-openssl0.9.8e-fips-rhel5-v83.6.6.25-linux-ia32-2.6.18-308.4.1.el5',
verbose bin dist { shasum: '902171a71bb3c4b71f371cb650003d744020ed65',
verbose bin dist tarball: 'http://registry.npmjs.org/pty.js/-/pty.js-0.1.2.tgz' } ]
verbose has wscript [ undefined,
verbose has wscript { file: '/home/chason/.npm/pty.js/0.1.2/package/package.json',
verbose has wscript contributors: false,
verbose has wscript serverjs: false,
verbose has wscript wscript: true } ]
verbose caching /home/chason/.npm/pty.js/0.1.2/package/package.json
verbose loadDefaults [email protected]
http 304 https://registry.npmjs.org/express/3.0.0beta4
silly get cb [ 304,
silly get cb { server: 'CouchDB/1.2.0 (Erlang OTP/R15B)',
silly get cb etag: '"BBN46MY5X9U6BZK3U8P2Z7S89"',
silly get cb date: 'Fri, 06 Jul 2012 04:22:59 GMT',
silly get cb 'content-length': '0' } ]
verbose etag express/3.0.0beta4 from cache
verbose bin dist [ '0.6-ares1.7.5-DEV-evundefined-openssl0.9.8e-fips-rhel5-v83.6.6.25-linux-ia32-2.6.18-308.4.1.el5',
verbose bin dist { shasum: '0f7e5bb2db67e81b4d1c752300954133df276063',
verbose bin dist tarball: 'http://registry.npmjs.org/express/-/express-3.0.0beta4.tgz' } ]
verbose caching /home/chason/.npm/express/3.0.0beta4/package/package.json
verbose loadDefaults [email protected]
silly resolved [ { name: 'socket.io',
silly resolved version: '0.9.6',
silly resolved description: 'Real-time apps made cross-browser & easy with a WebSocket-like API',
silly resolved homepage: 'http://socket.io',
silly resolved keywords: [ 'websocket', 'socket', 'realtime', 'socket.io', 'comet', 'ajax' ],
silly resolved author: { name: 'Guillermo Rauch', email: '[email protected]' },
silly resolved contributors:
silly resolved [ { name: 'Guillermo Rauch', email: '[email protected]' },
silly resolved { name: 'Arnout Kazemier', email: '[email protected]' },
silly resolved { name: 'Vladimir Dronnikov', email: '[email protected]' },
silly resolved { name: 'Einar Otto Stangvik', email: '[email protected]' } ],
silly resolved repository:
silly resolved { type: 'git',
silly resolved url: 'git://github.com/LearnBoost/socket.io.git' },
silly resolved dependencies:
silly resolved { 'socket.io-client': '0.9.6',
silly resolved policyfile: '0.0.4',
silly resolved redis: '0.6.7' },
silly resolved devDependencies:
silly resolved { expresso: '0.9.2',
silly resolved should: '0.0.4',
silly resolved benchmark: '0.2.2',
silly resolved microtime: '0.1.3-1',
silly resolved colors: '0.5.1' },
silly resolved main: 'index',
silly resolved engines: { node: '>= 0.4.0' },
silly resolved scripts: { test: 'make test' },
silly resolved id: '[email protected]',
silly resolved optionalDependencies: {},
silly resolved engineSupported: true,
silly resolved npmVersion: '1.1.1',
silly resolved nodeVersion: 'v0.6.18',
silly resolved defaultsLoaded: true },
silly resolved { name: 'pty.js',
silly resolved description: 'Pseudo terminals for node.',
silly resolved author: { name: 'Christopher Jeffrey' },
silly resolved version: '0.1.2',
silly resolved main: './index.js',
silly resolved repository: { type: 'git', url: 'git://github.com/chjj/pty.js.git' },
silly resolved homepage: 'https://github.com/chjj/pty.js',
silly resolved bugs: { url: 'https://github.com/chjj/pty.js/issues' },
silly resolved keywords: [ 'pty', 'tty', 'terminal' ],
silly resolved scripts:
silly resolved { test: 'node test',
silly resolved preinstall: 'node-waf clean || (exit 0); node-waf configure build' },
silly resolved tags: [ 'pty', 'tty', 'terminal' ],
silly resolved id: '[email protected]',
silly resolved dependencies: {},
silly resolved devDependencies: {},
silly resolved optionalDependencies: {},
silly resolved engines: { node: '
' },
silly resolved engineSupported: true,
silly resolved npmVersion: '1.1.1',
silly resolved nodeVersion: 'v0.6.18',
silly resolved defaultsLoaded: true },
silly resolved { name: 'express',
silly resolved description: 'Sinatra inspired web development framework',
silly resolved version: '3.0.0beta4',
silly resolved author: { name: 'TJ Holowaychuk', email: '[email protected]' },
silly resolved contributors:
silly resolved [ { name: 'TJ Holowaychuk', email: '[email protected]' },
silly resolved { name: 'Aaron Heckmann',
silly resolved email: '[email protected]' },
silly resolved { name: 'Ciaran Jessup', email: '[email protected]' },
silly resolved { name: 'Guillermo Rauch', email: '[email protected]' } ],
silly resolved dependencies:
silly resolved { connect: '2.3.4',
silly resolved commander: '0.6.1',
silly resolved 'range-parser': '0.0.4',
silly resolved mkdirp: '0.3.3',
silly resolved cookie: '0.0.3',
silly resolved crc: '0.2.0',
silly resolved fresh: '0.1.0',
silly resolved methods: '0.0.1',
silly resolved debug: '
' },
silly resolved devDependencies:
silly resolved { ejs: '
',
silly resolved mocha: '
',
silly resolved jade: '
',
silly resolved hjs: '
',
silly resolved stylus: '
',
silly resolved should: '
',
silly resolved 'connect-redis': '
',
silly resolved 'github-flavored-markdown': '
',
silly resolved supertest: '0.0.1' },
silly resolved publishConfig: { tag: '3.0' },
silly resolved keywords:
silly resolved [ 'express',
silly resolved 'framework',
silly resolved 'sinatra',
silly resolved 'web',
silly resolved 'rest',
silly resolved 'restful',
silly resolved 'router' ],
silly resolved repository: { type: 'git', url: 'git://github.com/visionmedia/express.git' },
silly resolved main: 'index',
silly resolved bin: { express: './bin/express' },
silly resolved scripts: { prepublish: 'npm prune', test: 'make test' },
silly resolved engines: { node: '
' },
silly resolved _id: '[email protected]',
silly resolved optionalDependencies: {},
silly resolved _engineSupported: true,
silly resolved _npmVersion: '1.1.1',
silly resolved _nodeVersion: 'v0.6.18',
silly resolved _defaultsLoaded: true } ]
info into /home/chason/public_html/shell/node_modules/tty.js [email protected]
info into /home/chason/public_html/shell/node_modules/tty.js [email protected]
info into /home/chason/public_html/shell/node_modules/tty.js [email protected]
info installOne [email protected]
info installOne [email protected]
info installOne [email protected]
info unbuild /home/chason/public_html/shell/node_modules/tty.js/node_modules/socket.io
info unbuild /home/chason/public_html/shell/node_modules/tty.js/node_modules/pty.js
info unbuild /home/chason/public_html/shell/node_modules/tty.js/node_modules/express
verbose from cache /home/chason/.npm/socket.io/0.9.6/package/package.json
verbose from cache /home/chason/.npm/pty.js/0.1.2/package/package.json
verbose from cache /home/chason/.npm/express/3.0.0beta4/package/package.json
verbose mkdir (expected) error ENOENT, stat '/home/chason/public_html/shell/node_modules/tty.js/node_modules'
verbose mkdir (expected) error ENOENT, stat '/home/chason/public_html/shell/node_modules/tty.js/node_modules'
verbose mkdir (expected) error ENOENT, stat '/home/chason/public_html/shell/node_modules/tty.js/node_modules'
verbose mkdir (expected) error ENOENT, stat '/home/chason/public_html/shell/node_modules/tty.js/node_modules/___socket.io.npm'
verbose mkdir (expected) error ENOENT, stat '/home/chason/public_html/shell/node_modules/tty.js/node_modules/___pty.js.npm'
verbose mkdir (expected) error ENOENT, stat '/home/chason/public_html/shell/node_modules/tty.js/node_modules/___express.npm'
verbose mkdir done: /home/chason/public_html/shell/node_modules/tty.js/node_modules/___socket.io.npm 755
verbose mkdir done: /home/chason/public_html/shell/node_modules/tty.js/node_modules/___pty.js.npm 755
verbose mkdir done: /home/chason/public_html/shell/node_modules/tty.js/node_modules/express.npm 755
verbose unpack
uid, gid [ 500, 500 ]
verbose unpackTarget /home/chason/public_html/shell/node_modules/tty.js/node_modules/socket.io
silly gunzTarPerm modes [ '755', '644' ]
verbose unpack
uid, gid [ 500, 500 ]
verbose unpackTarget /home/chason/public_html/shell/node_modules/tty.js/node_modules/pty.js
silly gunzTarPerm modes [ '755', '644' ]
verbose unpack
uid, gid [ 500, 500 ]
verbose unpackTarget /home/chason/public_html/shell/node_modules/tty.js/node_modules/express
silly gunzTarPerm modes [ '755', '644' ]
silly afterUntar undefined
silly asyncMap in gTP /home/chason/public_html/shell/node_modules/tty.js/node_modules/___pty.js.npm/package
silly asyncMap in gTP /home/chason/public_html/shell/node_modules/tty.js/node_modules/___pty.js.npm/package/README.md
silly asyncMap in gTP /home/chason/public_html/shell/node_modules/tty.js/node_modules/___pty.js.npm/package/package.json
silly asyncMap in gTP /home/chason/public_html/shell/node_modules/tty.js/node_modules/___pty.js.npm/package/index.js
silly asyncMap in gTP /home/chason/public_html/shell/node_modules/tty.js/node_modules/___pty.js.npm/package/LICENSE
silly asyncMap in gTP /home/chason/public_html/shell/node_modules/tty.js/node_modules/___pty.js.npm/package/wscript
silly asyncMap in gTP /home/chason/public_html/shell/node_modules/tty.js/node_modules/___pty.js.npm/package/.npmignore
silly asyncMap in gTP /home/chason/public_html/shell/node_modules/tty.js/node_modules/___pty.js.npm/package/Makefile
silly asyncMap in gTP /home/chason/public_html/shell/node_modules/tty.js/node_modules/___pty.js.npm/package/binding.gyp
silly asyncMap in gTP /home/chason/public_html/shell/node_modules/tty.js/node_modules/___pty.js.npm/package/src
silly asyncMap in gTP /home/chason/public_html/shell/node_modules/tty.js/node_modules/___pty.js.npm/package/src/pty.cc
silly asyncMap in gTP /home/chason/public_html/shell/node_modules/tty.js/node_modules/___pty.js.npm/package/lib
silly asyncMap in gTP /home/chason/public_html/shell/node_modules/tty.js/node_modules/___pty.js.npm/package/lib/pty.js
verbose gunzed /home/chason/public_html/shell/node_modules/tty.js/node_modules/___pty.js.npm/package
verbose rm'ed /home/chason/public_html/shell/node_modules/tty.js/node_modules/pty.js
verbose renamed [ '/home/chason/public_html/shell/node_modules/tty.js/node_modules/___pty.js.npm/package',
verbose renamed '/home/chason/public_html/shell/node_modules/tty.js/node_modules/pty.js' ]
verbose has wscript [ undefined,
verbose has wscript { file: '/home/chason/public_html/shell/node_modules/tty.js/node_modules/pty.js/package.json',
verbose has wscript contributors: false,
verbose has wscript serverjs: false,
verbose has wscript wscript: true } ]
verbose caching /home/chason/public_html/shell/node_modules/tty.js/node_modules/pty.js/package.json
verbose loadDefaults [email protected]
info preinstall [email protected]
verbose unsafe-perm in lifecycle false
verbose Setting uid from 0 500
verbose stack at uid setting Error
verbose stack at uid setting at exec (/usr/lib/node_modules/npm/lib/utils/exec.js:35:17)
verbose stack at uid setting at Array.0 (/usr/lib/node_modules/npm/lib/utils/lifecycle.js:141:5)
verbose stack at uid setting at EventEmitter._tickCallback (node.js:190:38)
silly exec sh "-c" "node-waf clean || (exit 0); node-waf configure build"
silly spawning [ 'sh',
silly spawning [ '-c', 'node-waf clean || (exit 0); node-waf configure build' ],
silly spawning '/home/chason/public_html/shell/node_modules/tty.js/node_modules/pty.js' ]
info [email protected] Failed to exec preinstall script
ERR! error installing [email protected]
info unbuild /home/chason/public_html/shell/node_modules/tty.js/node_modules/pty.js
verbose from cache /home/chason/public_html/shell/node_modules/tty.js/node_modules/pty.js/package.json
info preuninstall [email protected]
info uninstall [email protected]
verbose unbuild [email protected] [ false,
verbose unbuild [email protected] '/home/chason/public_html/shell/node_modules',
verbose unbuild [email protected] '/home/chason/public_html/shell/node_modules/tty.js/node_modules' ]
info postuninstall [email protected]
verbose installOne cb [email protected]
verbose about to build /home/chason/public_html/shell/node_modules/tty.js
ERR! error installing [email protected]
info unbuild /home/chason/public_html/shell/node_modules/tty.js
verbose from cache /home/chason/public_html/shell/node_modules/tty.js/package.json
info preuninstall [email protected]
info uninstall [email protected]
verbose unbuild [email protected] [ true,
verbose unbuild [email protected] '/home/chason/public_html/shell/node_modules',
verbose unbuild [email protected] '/home/chason/public_html/shell/node_modules' ]
verbose binRoot [ '/home/chason/public_html/shell/node_modules/.bin',
verbose binRoot { 'tty.js': './bin/tty.js' } ]
info postuninstall [email protected]
ERR! error rolling back [email protected] Error: ENOTEMPTY, rmdir '/home/chason/public_html/shell/node_modules/tty.js/node_modules/___express.npm/package/lib'
verbose installOne cb [email protected]
ERR! [email protected] preinstall: node-waf clean || (exit 0); node-waf configure build
ERR! sh "-c" "node-waf clean || (exit 0); node-waf configure build" failed with 127
ERR!
ERR! Failed at the [email protected] preinstall script.
ERR! This is most likely a problem with the pty.js package,
ERR! not with npm itself.
ERR! Tell the author that this fails on your system:
ERR! node-waf clean || (exit 0); node-waf configure build
ERR! You can get their info via:
ERR! npm owner ls pty.js
ERR! There is likely additional logging output above.
ERR!
ERR! System Linux 2.6.18-308.4.1.el5
ERR! command "node" "/usr/bin/npm" "install" "tty.js"
ERR! cwd /home/chason/public_html/shell
ERR! node -v v0.6.18
ERR! npm -v 1.1.1
ERR! code ELIFECYCLE
ERR! message [email protected] preinstall: node-waf clean || (exit 0); node-waf configure build
ERR! message sh "-c" "node-waf clean || (exit 0); node-waf configure build" failed with 127
ERR! errno {}
verbose exit [ 1, true ]

My system:
Centos 5.8 (32-bit)

Broken on Firefox 10

f10a2d8 breaks for me on Firefox 10, Arch Linux. It results in a long stretched out dysfunctional terminal and a non-blinking cursor. Key presses are not shown at all.

Firebug gives:

useless setInterval call (missing quotes around argument?)
[Break On This Error]   

this._blink = setInterval(this._blinker, 500);

override static files

Hi,

I'm trying to integrate tty.js into an Express Web-App.
The problem is, "style.css" as path is very generic. Some project would need to put it into /assets/css/style.css.

Is there any way to override it without copy paste the content of the file, or without symbolic link ?

Maybe it would be nice to create express route like:

app.get('/style.css', ...

So that /style.css could be overridden ?

Windows support

In regards to pull request:
chjj/pty.js#30

Rendering issues:
Terminal has incorrect size upon initial draw, but if you resize the terminal by 1px it will have the correct size.

Sometimes upon page load the first terminal does not appear, this is probably related to the nature on term.ready()

I have not discovered other rendering issues, but i'm sure they'll present themself.

resizing issue

I think there is a small bug in resizing.

During the resize the terminal sometimes puts a new line char even if there space for the rest of the line.
When you release the mouse button it goes right.

It's not very problematic for resizing because it goes normally after.
But when you change the size programmatically, then you need to do it twice, which is strange...

For a more visual explanation checkout this Youtube: http://www.youtube.com/watch?v=otTqSPlgjVE

I search a little bit but I can't figure out what is wrong...

I tested on Chrome 19 and Firefox 13 both have this bug.

escaping HTML code into the terminal

Is it possible to escape HTML code in the shell so that its actually interpreted by the browser instead of terminal?

For example, I want to set a bash PS1 prompt like this:
PS1="

LARGESIZE:
"
in my ~/.profile

French keyboard

French (other foreign keyboards?) doesn't work properly. Mainly Alt-gr keys isn't working : very annoying for "|", "{", "}", etc..

Tested on Chrome, IE, ...

Installing fails under Ubuntu, when not using -g flag.

I am a node js noob and had problems with installing tty.js, until my colleague and node pro pointed out that i should use the -g flag for installation, if I need a global command. When installed without the npm -g flag, the tty.js program won't be available on console, and calling the file using the node_modules/tty.js etc path does not work too.

So just to help noobs like me not waste time (and maybe give up in the end), could you please add the -g flag to the installation instructions? Awesome software by the way!

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.