nvm-sh / nvm Goto Github PK
View Code? Open in Web Editor NEWNode Version Manager - POSIX-compliant bash script to manage multiple active node.js versions
License: MIT License
Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions
License: MIT License
Because download directory structure was changed:
http://nodejs.org/dist/v0.5.1/node-v0.5.1.tar.gz
I'm not sure why yet, but it doesn't like installing multiple times (not the curl bug). make install
and nvm use v0.5.7
works fine though. I'm not sure why it says it failed.
[38/38] cxx_link: out/Release/src/node_main_5.o out/Release/src/node_5.o out/Release/src/node_buffer_5.o out/Release/src/node_javascript_5.o out/Release/src/node_extensions_5.o out/Release/src/node_http_parser_5.o out/Release/src/node_constants_5.o out/Release/src/node_file_5.o out/Release/src/node_script_5.o out/Release/src/node_os_5.o out/Release/src/node_dtrace_5.o out/Release/src/node_string_5.o out/Release/src/timer_wrap_5.o out/Release/src/handle_wrap_5.o out/Release/src/stream_wrap_5.o out/Release/src/tcp_wrap_5.o out/Release/src/udp_wrap_5.o out/Release/src/pipe_wrap_5.o out/Release/src/cares_wrap_5.o out/Release/src/stdio_wrap_5.o out/Release/src/process_wrap_5.o out/Release/src/v8_typed_array_5.o out/Release/src/node_cares_5.o out/Release/src/node_net_5.o out/Release/src/node_signal_watcher_5.o out/Release/src/node_stat_watcher_5.o out/Release/src/node_io_watcher_5.o out/Release/src/node_stdio_5.o out/Release/src/node_child_process_5.o out/Release/src/node_timer_5.o out/Release/src/platform_darwin_5.o out/Release/src/node_crypto_5.o out/Release/deps/http_parser/http_parser_3.o -> out/Release/node
/usr/bin/g++ Release/src/node_main_5.o Release/src/node_5.o Release/src/node_buffer_5.o Release/src/node_javascript_5.o Release/src/node_extensions_5.o Release/src/node_http_parser_5.o Release/src/node_constants_5.o Release/src/node_file_5.o Release/src/node_script_5.o Release/src/node_os_5.o Release/src/node_dtrace_5.o Release/src/node_string_5.o Release/src/timer_wrap_5.o Release/src/handle_wrap_5.o Release/src/stream_wrap_5.o Release/src/tcp_wrap_5.o Release/src/udp_wrap_5.o Release/src/pipe_wrap_5.o Release/src/cares_wrap_5.o Release/src/stdio_wrap_5.o Release/src/process_wrap_5.o Release/src/v8_typed_array_5.o Release/src/node_cares_5.o Release/src/node_net_5.o Release/src/node_signal_watcher_5.o Release/src/node_stat_watcher_5.o Release/src/node_io_watcher_5.o Release/src/node_stdio_5.o Release/src/node_child_process_5.o Release/src/node_timer_5.o Release/src/platform_darwin_5.o Release/src/node_crypto_5.o Release/deps/http_parser/http_parser_3.o -o /Users/ericmuyser/.nvm/src/node-v0.5.7/out/Release/node -pthread -framework Carbon -arch x86_64 -rdynamic /Users/ericmuyser/.nvm/src/node-v0.5.7/out/Release/libv8.a /Users/ericmuyser/.nvm/src/node-v0.5.7/out/Release/deps/uv/uv.a -L/usr/lib -L/usr/local/lib -L/opt/local/lib -L/usr/sfw/lib -lssl -lcrypto -ldl -lutil
Waf: Leaving directory `/Users/ericmuyser/.nvm/src/node-v0.5.7/out'
'build' finished successfully (35.154s)
-rwxr-xr-x 1 ericmuyser staff 6.8M 18 Sep 14:20 out/Release/node
make: [all] Error 1 (ignored)
nvm: install v0.5.7 failed!
Bash:stuff ericmuyser$ node -v
v0.5.0
Bash:stuff ericmuyser$ sudo nvm install v0.5.7
Password:
sudo: nvm: command not found
Bash:stuff ericmuyser$ cd /Users/ericmuyser/.nvm/src/node-v0.5.7
Bash:node-v0.5.7 ericmuyser$ make install
Waf: Entering directory `/Users/ericmuyser/.nvm/src/node-v0.5.7/out'
DEST_OS: darwin
DEST_CPU: x64
Parallel Jobs: 1
Product type: program
* installing out/Release/config.h as /Users/ericmuyser/.nvm/v0.5.7/include/node/config.h
* installing out/Release/node as /Users/ericmuyser/.nvm/v0.5.7/bin/node
* installing out/Release/src/node_config.h as /Users/ericmuyser/.nvm/v0.5.7/include/node/node_config.h
Waf: Leaving directory `/Users/ericmuyser/.nvm/src/node-v0.5.7/out'
'install' finished successfully (0.392s)
Bash:node-v0.5.7 ericmuyser$ ```
Hi!
I'd like to know what is the purpose to use ls -dG inside the functions, specially on nvm_version. I'm trying to install NVM on a Ubuntu 10.10 and noticed that there were some errors when installing:
'install' finished successfully (0.597s)
bash: [: número excessivo de argumentos
Now using node drwxr-xr-x 6 taq 4,0K 2011-04-16 11:43 v0.4.6
and when using some commands:
$ nvm use v0.4.6
bash: [: número excessivo de argumentos
Now using node drwxr-xr-x 6 taq 4,0K 2011-04-16 11:43 v0.4.6
and when looking to my paths:
$ export | grep -i nvm
declare -x MANPATH="/home/taq/.nvm/drwxr-xr-x 6 taq 4,0K 2011-04-16 11:43 v0.4.6/share/man:"
declare -x NVM_BIN="/home/taq/.nvm/drwxr-xr-x 6 taq 4,0K 2011-04-16 11:43 v0.4.6/bin"
declare -x NVM_DIR="/home/taq/.nvm"
declare -x NVM_PATH="/home/taq/.nvm/drwxr-xr-x 6 taq 4,0K 2011-04-16 11:43 v0.4.6/lib/node"
declare -x PATH="/home/taq/.nvm/drwxr-xr-x 6 taq 4,0K 2011-04-16 11:43 v0.4.6/bin:..
Ok, I could remove the ls there but I'm trying to figure out exactly what you wanted to do when using it there on nvm_version. :-)
Regards,
Is there a way to list what node versions are already installed?
Chris
when npm is available in the shell I guess it skip installing npm. Which its always neccesary when upgrading an node version
The use
command sets/resets NODE_PATH to ROOT/lib/node. This seems unnecessary as that's added by default by the interpreter. Or at least it is on my system. Either way, NODE_PATH handles multiple entries separated by ":". It would be nice if use
didn't blow away whatever is already there.
I use a package manager for most modules. But for those that don't comform to the (admittedly loose) package.json spec, I like to put them in a temporary dir and set NODE_PATH rather than maintaining a bunch of symlinks into .node_libraries.
Not sure how nvm
should protect against this, but the latest tarball at http://nodejs.org/dist/node-v0.4.8-rc.tar.gz
actually unpacks into node-v0.4.8
directory (note the absence of -rc
) and breaks the install process.
Renaming the unpacked dir is straightforward once you figure out what's going on. Which less savvy users might not.
Hey this was messing up my zsh prompt. Can you please pull this change? Thanks
At the moment, there's no way to unset aliases. This gets annoying at times, for instance when you misspell "default".
I implemented such a command here.
The Node builds don't work unless you're on Python26. I had python25 and got mysterious build errors on configure.
node.js:134
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: Cannot find module 'connect'
at Function._resolveFilename (module.js:320:11)
at Function._load (module.js:266:25)
at require (module.js:348:19)
at Object. (/home/pc/[...]/entry.js:9:15)
at Module._compile (module.js:404:26)
at Object..js (module.js:410:10)
at Module.load (module.js:336:31)
at Function._load (module.js:297:12)
at Array. (module.js:423:10)
at EventEmitter._tickCallback (node.js:126:26)
Right now, the newest stable version of node is v0.4.11, but nvm only lists up to v0.4.9 after running nvm sync
. Is this just me?
It seems like nvm
installs the latest version available for npm
, this is fine if you're also trying to install a recent version of node
via nvm
; however, if you're trying to install an 0.2.x
version of node
, npm
install will fail as (npm
version 0.3.x
) no longer supports the 0.2.x
branch of node
.
I'm not sure the best way to go about this, but some kind of "recommended" or "suggested" npm
version should be installed compared to the requested version of node
.
Or another idea, to simply specify which version of npm
you want installed when adding a new node
version with nvm
.
In zsh, if .zshrc has alis for ls cause problem
alias ls="ls -l"
In this case, I already install v0.4.5 but
$ nvm use v0.4.5
drwxr-xr-x 6 jxck staff 204 4 17 03:45 v0.4.5 version is not installed yet
If I remove -l
from alias ls
, nvm use
moves fine
sorry I'm poor at sh, so I couldn't make patch :(
Default install of MacOSX with xCode provides CURL but not WGET
Simple fix.
In zsh, if .zshrc has this line cause problem at curl
setopt extended_glob
this option means
"Treat the #
, ~
and ^
characters as part of patterns for filename generation, etc. (An initial unquoted ~
always produces named directory expansion.)"
so this option is miss in zsh
$ curl -C - -# "http://nodejs.org/dist/node-v0.4.6.tar.gz" -o "node-v0.4.6.tar.gz"
zsh: no matches found: -#
so I think it should better to use "--progress-bar" instead of "-#"
very easy fix :)
here the patch
https://gist.github.com/923440
Awesome script! Very helpful!
One note on the instructions - they say to just add this to your .bash_profile:
. $HOME/.nvm/nvm.sh
nvm use
But if you don't prefix that with something like:
export NVM_DIR=/Users/jhickner/.nvm
...then $NVM_DIR will be unset, and nvm will install node to /
hi,
using nvm to install node for the first time
(nvm -> node -> npm is the plan)
and it adds
. /.npm///package/nvm.sh
maybe it should be:
pwd
/nvm.sh
cheers,
When I don't have a ~/.bashrc.tmp file:
pedroteixeira:episode_018 pedroteixeira$ npm uninstall nvm
npm info it worked if it ends with ok
npm info using [email protected]
npm info using [email protected]
npm info preuninstall [email protected]
npm info uninstall [email protected]
mv: /Users/pedroteixeira/.bashrc.tmp: No such file or directory
npm ERR! [email protected] Error: sh
failed with 1
npm ERR! [email protected] at ChildProcess. (/usr/local/lib/node/.npm/npm/0.2.17/package/lib/utils/exec.js:25:18)
npm ERR! [email protected] at ChildProcess.emit (events.js:45:17)
npm ERR! [email protected] at ChildProcess.onexit (child_process.js:171:12)
npm ERR! [email protected] failed, but continuing anyway
npm info predeactivate [email protected]
npm info deactivate [email protected]
npm info postdeactivate [email protected]
npm info postuninstall [email protected]
npm info uninstall [email protected] complete
npm ok
the directories are named for the version:
...
/dist/node-v0.4.9.tar.gz
/dist/node-v0.5.0.tar.gz
/dist/v0.5.1/node-v0.5.1.tar.gz <-- change
/dist/v0.5.2/node-v0.5.2.tar.gz
the new directories also include a windows exe and a docs folder
Here's a patch to add --debug to the configuration. I think it should be on by default. Could also add a flag to turn it on.
Maybe I misunderstand how nvm works (my bash skills are lame), but if I initially place the .nvm.sh script in ~/.nvm, shouldn't node versions be installed inside of ~/.nvm? When I install and use nvm as show below on Ubuntu, nvm installs node in the current working directory, instead of ~/.nvm:
git clone git://github.com/creationix/nvm.git ~/.nvm
echo ". ~/.nvm/nvm.sh" >> ~/.profile
source ~/.profile
nvm sync # Now my home directory has an empty file for every node.js version?
nvm install v0.4.12 # Now node is installed in my home dir, not inside .nvm?
# Restart computer, login.
nvm # No command 'nvm' is found...
source .profile
nvm # Now it finds nvm.
Also, how come I have to manually source my .profile whenever I login?
Have a full dev stack, ruby, xcode, etc...
nvm install v0.1.99
-bash: wget: command not found
: comando não encontrado
'ash: /home/herminio/.nvm/nvm.sh: linha 16: erro de sintaxe próximo do token' não esperado
{
'ash: /home/herminio/.nvm/nvm.sh: linha 16: ` curl() {
and
$ sh .nvm/nvm.sh
: not found: 7:
.nvm/nvm.sh: 55: Syntax error: word unexpected (expecting "then")
Fresh ubuntu install doesn't include curl command, this led to lot of hair pulling.
Just thought it maybe better to use git clone, git checkout VERSION. So you don't need to download the archive of each version installed.
The nvm ls command shows v0.4.9 as the current stable version when, according to the node website, v0.4.10 is the latest stable version.
nvm install stable currently installs 0.4.9 despite the fact that nvm ls shows 0.4.10 and 0.4.11 as available stable versions. Is it sorting lexically rather than numerically?
Looking at your script I think perhaps your sort expression should be: sort -t. -k 1.2,1n -k 2,2n -k 3,3n - that certainly works better for me. Will submit a pull request for this later today.
Lucian
It seams that the documented methods for installing head are broken. I tried both nvm clone and nvm install head.
nvm clone
- command not found
nvm install head
- file not found
Nice script. I use this often...
I've added the following to my local nvm.sh file, right after "export PATH":
if [[ $MANPATH == *$NVM_DIR/*/share/man* ]]; then
MANPATH=${MANPATH%$NVM_DIR/*/share/man*}$NVM_DIR/$2/share/man${MANPATH#*$NVM_DIR/*/share/man}
else
MANPATH="$NVM_DIR/$2/share/man:$MANPATH"
fi
export MANPATH
If there is a node-v0.x.x.tar.gz in current directory, I think you can just use it.
nvm is first trying /dist/v0.4.12/node-v0.4.12.tar.gz, which doesn't exist, then trying /dist/v0.4.12.tar.gz, which does exist, and downloads successfully. nvm then fails. Output is below:
$ nvm install v0.4.12
--2011-10-31 18:49:26-- http://nodejs.org/dist/v0.4.12/node-v0.4.12.tar.gz
Resolving nodejs.org... 8.12.44.238
Connecting to nodejs.org|8.12.44.238|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2011-10-31 18:49:27 ERROR 404: Not Found.
--2011-10-31 18:49:27-- http://nodejs.org/dist/node-v0.4.12.tar.gz
Resolving nodejs.org... 8.12.44.238
Connecting to nodejs.org|8.12.44.238|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 12421469 (12M) [application/octet-stream]
Saving to: `node-v0.4.12.tar.gz'
100%[=======================================================================================================================================>] 12,421,469 4.30M/s in 2.8s
2011-10-31 18:49:30 (4.30 MB/s) - `node-v0.4.12.tar.gz' saved [12421469/12421469]
nvm: install v0.4.12 failed!
I think I can short circuit nvm manually, but is this something that could be specific to my machine? It's an ubuntu 10.04 dev server.
I notice that nvm does:
curl http://npmjs.org/install.sh | sh
but this makes it pause to ask the user if it's ok to scrub any npm 0.x stuff. It'd be better if you had it do one of these instead:
curl http://npmjs.org/install.sh | clean=yes sh
curl http://npmjs.org/install.sh | clean=no sh
depending on whether or not you think it should remove npm 0.x stuff from the nvm root.
I've just installed nvm and as I type "nvm install 0.4.12" on mac os x lion it outputs:
nvm: install N/A failed!
When sudoing node, 'command not found' is issued, because on most systems PATH is reset on sudo, for security reasons.
This makes 'sudo node' not work anymore.
Simply adding the following line at the end of the nvm.sh script, would fix it:
alias node='$NVM_BIN/node'
//possibly adding an alias for npm as well?
This assumes .bashrc for user contains these 3 lines:
. ~/.nvm/nvm.sh
alias sudo='sudo '
Hi,
I noticed that nvm is not working if CDPATH is set in the environment. If set, all cd commands echo the entered directory. With that, nvm fails to execute necessary commands.
Here is a patch, that fixes this issue:
diff --git a/nvm.sh b/nvm.sh
index 6f107ec..42a3653 100644
--- a/nvm.sh
+++ b/nvm.sh
@@ -7,7 +7,7 @@
# Auto detect the NVM_DIR
if [ ! -d "$NVM_DIR" ]; then
- export NVM_DIR=$(cd $(dirname ${BASH_SOURCE[0]:-$0}); pwd)
+ export NVM_DIR=$(cd $(dirname ${BASH_SOURCE[0]:-$0}) > /dev/null; pwd)
fi
# Emulate curl with wget, if necessary
@@ -52,17 +52,17 @@ nvm_version()
PATTERN='*.*.'
fi
if [ "$PATTERN" = 'all' ]; then
- (cd $NVM_DIR; ls -dG v* 2>/dev/null || echo "N/A")
+ (cd $NVM_DIR > /dev/null; ls -dG v* 2>/dev/null || echo "N/A")
return
fi
if [ ! "$VERSION" ]; then
- VERSION=`(cd $NVM_DIR; ls -d v${PATTERN}* 2>/dev/null) | sort -t. -k 2,1n -k 2,2n -k 3,3n | tail -n1`
+ VERSION=`(cd $NVM_DIR > /dev/null; ls -d v${PATTERN}* 2>/dev/null) | sort -t. -k 2,1n -k 2,2n -k 3,3n | tail -n1`
fi
if [ ! "$VERSION" ]; then
echo "N/A"
return 13
elif [ -e "$NVM_DIR/$VERSION" ]; then
- (cd $NVM_DIR; ls -dG "$VERSION")
+ (cd $NVM_DIR > /dev/null; ls -dG "$VERSION")
else
echo "$VERSION"
fi
@@ -181,7 +181,7 @@ nvm()
"alias" )
mkdir -p $NVM_DIR/alias
if [ $# -le 2 ]; then
- (cd $NVM_DIR/alias && for ALIAS in `ls $2* 2>/dev/null`; do
+ (cd $NVM_DIR/alias > /dev/null && for ALIAS in `ls $2* 2>/dev/null`; do
DEST=`cat $ALIAS`
VERSION=`nvm_version $DEST`
if [ "$DEST" = "$VERSION" ]; then
@@ -214,7 +214,7 @@ nvm()
[ "$NOCURL" ] && curl && return
LATEST=`nvm_version latest`
STABLE=`nvm_version stable`
- (cd $NVM_DIR
+ (cd $NVM_DIR > /dev/null
rm -f v* 2>/dev/null
printf "# syncing with nodejs.org..."
for VER in `curl -s http://nodejs.org/dist/ -o - | grep 'node-v.*\.tar\.gz' | sed -e 's/.*node-//' -e 's/\.tar\.gz.*//'`; do
Thanks,
Alex
I don't have a ~/.bashrc file.
When doing
$ npm install nvm:
npm info it worked if it ends with ok
npm info using [email protected]
npm info using [email protected]
npm info fetch http://registry.npmjs.org/nvm/-/nvm-0.0.6.tgz
npm info calculating sha1 /var/folders/OA/OAqqioLWF4KIMLzczVv9UE+++TI/-Tmp-/npm-1297686040437/1297686040437-0.6327376058325171/tmp.tgz
npm info shasum bdebf007e7fc568ae51cc0f326a7fe9506cff9ec
npm info calculating sha1 /usr/local/lib/node/.npm/.cache/nvm/0.0.6/package.tgz
npm info shasum 92a367195b3ca52a7880590928105e0ec0a7e331
npm info preinstall [email protected]
npm info install [email protected]
cat: /Users/pedroteixeira/.bashrc: No such file or directory
To use nvm, source your .bashrc file like this:
. ~/.bashrc
or log out and back into your terminal.
npm info postinstall [email protected]
npm info preactivate [email protected]
npm info activate [email protected]
npm info postactivate [email protected]
npm info build Success: [email protected]
npm ok
Npm says it's ok, but the nvm binary is not installed.
After following the installation instructions in the README, the nvm.sh
script fails to source in bash. It will return with error code 13.
After investigation, it appears the you must install a node version AND alias it to default before the script will source without error. It tries to find the active version by performing an ls
on the install directory, and upon failing to find an installed version, returns error code 13.
On initial install, the failure to find an installed node version should be a handled error. In my case, I assumed it was broken when it was returning code 13.
seems to be an issue with the ~ removing the ~ makes things work right again
How can I get my node installs to work with the "sudo" command?
nrajlich@stan:~$ node
Type '.help' for options.
node> .exit
nrajlich@stan:~$ sudo node
sudo: node: command not found
Thanks in advance!
The output of nvm help
contains the following message,
nvm install latest Install the latest, possibly unstable version
in example section.
But I couldn't use the command because nvm_version doesn't print latest version.
nvm_version latest
prints that
nvm_version:27: no matches found: v_._.*
N/A
Hi,
I am using arch linux. Tried to install node using nvm and got the following output. I can provide you more info about the environment if you need.
[vamsee@myhost ~]$ nvm sync
NEW stable: v0.4.8-rc
NEW latest: v0.4.8-rc
[vamsee@myhost ~]$ nvm install stable
bash: cd: node-v0.4.8-rc: No such file or directory
nvm: install v0.4.8-rc failed!
It would be great to have an uninstall or remove command to wipe an old version of node not used anymore.
A very simple fix will get this to work in both BASH and ZSH in nvm.sh export NVM_DIR.
Use
!$
Instead of
$BASH_ARGV[0]
For me it worked in both shells. Once I switched that everything else seems to work.
Out of the box with nvm, I am unable to use global modules:
nvm install v0.4.11
# successful spew
# started a new terminal session as the read me suggests (is that necessary?)
. ~/.nvm/nvm.sh
nvm use v0.4.11
npm install -g coffee-script
node
> require('coffee-script')
Error: Cannot find module 'coffee-script
> require.paths
[ '/Users/ian/.node_modules',
'/Users/ian/.node_libraries',
'/Users/ian/.nvm/v0.4.11/lib/node' ]
> require.paths.unshift('/Users/ian/.nvm/v0.4.11/lib/node_modules')
> require('coffee-script')
# Works
The same thing happens on v0.5.4, as far as I can tell - I'm not sure how to inspect the require paths in that version now that it's gone, though.
nvm is awesome for managing multiple versions of Node. It could be even more awesome if I could use it to manage multiple installations of the same version of Node. For example, if I need to experiment with different versions of npm but the same version of Node, or if I want to have installations of Node built in different ways via different env vars.
I noticed you like downloading tarballs :)
Wouldn't it be easier to let the user define the directory where they have a repo clone from node?
Then you can just git checkout the tag you want, build, and go nuts.
Firstly excellent work with NVM :) Just what I needed!
Checking for header port.h : not found
Checking for header poll.h : yes
Checking for function poll : yes
Checking for header sys/event.h : not found
Checking for header sys/queue.h : yes
Checking for function kqueue : not found
Everything seems to work ok, but "do I need these files", if so how do I get them?
BTW: I had to use the following or my new EC2 64 micro (free) box (amzn-ami-2011.02.1.x86_64-ebs (ami-c7c99982)) , sharing my notes.
on a new ec2
sudo yum install git-core
and nvm (do not use sudo)
git clone git://github.com/creationix/nvm.git ~/.nvm
To activate this nvm, you need to source it from your bash shell
nano ~/.bashrc (add the line below and start a new shell)
. ~/.nvm/nvm.sh
nvm ls
nvm sync
You will need this stuff too.
sudo yum groupinstall "Development Tools"
sudo yum install openssl-devel
Now you can install node (not the -rc)
nvm install v0.4.8
(Takes 10-+ mins)
nvm alias default v0.4.8
Start a new shell
As we are now using node v0.4+ we can install npm
curl http://npmjs.org/install.sh | sh
Start a new shell and you are good to go (at this point you can use npm install express).
nvm use #{version} --default
should cause future shells for the same user automatically to be using node-#{version}
. When using the --default
option, the choice of version to use should be persistent between sessions.
This would be similar to how rvm use #{version} --default
works for managing Ruby versions.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.