Coder Social home page Coder Social logo

node-userid's Introduction

userid

Simple nodejs library with native bindings for getting uid and gid information.

Installation

$ npm install userid 

This relies on GNU getgrname, getgrid, etc and works on POSIX systems only. Sorry, windows.

Usage

Example

var userid = require('userid');

// get user id
console.log("root's uid is:", userid.uid("root"));

// get group id
console.log("wheel's gid is:", userid.gid("wheel"));

// get user name
console.log("uid 0 name is:", userid.username(0));

// get group name 
console.log("gid 0 name is:", userid.groupname(0));

License

Copyright (C) 2013 Jen Andre [email protected]

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

node-userid's People

Contributors

inversion avatar jandre avatar smart--petea avatar tndev avatar xecycle avatar yimgo avatar

Stargazers

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

Watchers

 avatar  avatar  avatar

node-userid's Issues

Node 12 support

This package is now incompatible with node 12. An update would be awesome!

Compilation error with node 12

On [email protected] with macOS 10.14.4 (18E226)

remod ๐Ÿ”ฅ yarn install
yarn install v1.16.0
[1/4] ๐Ÿ”  Resolving packages...
[2/4] ๐Ÿšš  Fetching packages...
[3/4] ๐Ÿ”—  Linking dependencies...
[4/4] ๐Ÿ”จ  Building fresh packages...
error /Users/skainswo/dev/remod/node_modules/userid: Command failed.
Exit code: 1
Command: node-gyp rebuild
Arguments: 
Directory: /Users/skainswo/dev/remod/node_modules/userid
Output:
gyp info it worked if it ends with ok
gyp info using [email protected]
gyp info using [email protected] | darwin | x64
gyp info spawn /usr/bin/python
gyp info spawn args [
gyp info spawn args   '/usr/local/Cellar/node/12.3.1/libexec/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
gyp info spawn args   'binding.gyp',
gyp info spawn args   '-f',
gyp info spawn args   'make',
gyp info spawn args   '-I',
gyp info spawn args   '/Users/skainswo/dev/remod/node_modules/userid/build/config.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/usr/local/Cellar/node/12.3.1/libexec/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/Users/skainswo/.node-gyp/12.3.1/include/node/common.gypi',
gyp info spawn args   '-Dlibrary=shared_library',
gyp info spawn args   '-Dvisibility=default',
gyp info spawn args   '-Dnode_root_dir=/Users/skainswo/.node-gyp/12.3.1',
gyp info spawn args   '-Dnode_gyp_dir=/usr/local/Cellar/node/12.3.1/libexec/lib/node_modules/npm/node_modules/node-gyp',
gyp info spawn args   '-Dnode_lib_file=/Users/skainswo/.node-gyp/12.3.1/<(target_arch)/node.lib',
gyp info spawn args   '-Dmodule_root_dir=/Users/skainswo/dev/remod/node_modules/userid',
gyp info spawn args   '-Dnode_engine=v8',
gyp info spawn args   '--depth=.',
gyp info spawn args   '--no-parallel',
gyp info spawn args   '--generator-output',
gyp info spawn args   'build',
gyp info spawn args   '-Goutput_dir=.'
gyp info spawn args ]
gyp info spawn make
gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
  CXX(target) Release/obj.target/userid/src/userid.o
../src/userid.cc:47:42: error: too few arguments to function call, single argument 'context' was not specified
    group = getgrgid(info[0]->Int32Value());
                     ~~~~~~~~~~~~~~~~~~~ ^
/Users/skainswo/.node-gyp/12.3.1/include/node/v8.h:2569:3: note: 'Int32Value' declared here
  V8_WARN_UNUSED_RESULT Maybe<int32_t> Int32Value(Local<Context> context) const;
  ^
/Users/skainswo/.node-gyp/12.3.1/include/node/v8config.h:347:31: note: expanded from macro 'V8_WARN_UNUSED_RESULT'
#define V8_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
                              ^
../src/userid.cc:75:38: error: no matching member function for call to 'ToString'
  String::Utf8Value utfname(info[0]->ToString());
                            ~~~~~~~~~^~~~~~~~
/Users/skainswo/.node-gyp/12.3.1/include/node/v8.h:2528:44: note: candidate function not viable: requires single argument 'context', but no arguments were provided
  V8_WARN_UNUSED_RESULT MaybeLocal<String> ToString(
                                           ^
/Users/skainswo/.node-gyp/12.3.1/include/node/v8.h:2544:35: note: candidate function not viable: requires single argument 'isolate', but no arguments were provided
                    Local<String> ToString(Isolate* isolate) const);
                                  ^
../src/userid.cc:118:40: error: no matching member function for call to 'ToString'
    String::Utf8Value utfname(info[0]->ToString());
                              ~~~~~~~~~^~~~~~~~
/Users/skainswo/.node-gyp/12.3.1/include/node/v8.h:2528:44: note: candidate function not viable: requires single argument 'context', but no arguments were provided
  V8_WARN_UNUSED_RESULT MaybeLocal<String> ToString(
                                           ^
/Users/skainswo/.node-gyp/12.3.1/include/node/v8.h:2544:35: note: candidate function not viable: requires single argument 'isolate', but no arguments were provided
                    Local<String> ToString(Isolate* isolate) const);
                                  ^
../src/userid.cc:137:41: error: too few arguments to function call, single argument 'context' was not specified
    user = getpwuid(info[0]->Int32Value());
                    ~~~~~~~~~~~~~~~~~~~ ^
/Users/skainswo/.node-gyp/12.3.1/include/node/v8.h:2569:3: note: 'Int32Value' declared here
  V8_WARN_UNUSED_RESULT Maybe<int32_t> Int32Value(Local<Context> context) const;
  ^
/Users/skainswo/.node-gyp/12.3.1/include/node/v8config.h:347:31: note: expanded from macro 'V8_WARN_UNUSED_RESULT'
#define V8_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
                              ^
../src/userid.cc:155:40: error: no matching member function for call to 'ToString'
    String::Utf8Value utfname(info[0]->ToString());
                              ~~~~~~~~~^~~~~~~~
/Users/skainswo/.node-gyp/12.3.1/include/node/v8.h:2528:44: note: candidate function not viable: requires single argument 'context', but no arguments were provided
  V8_WARN_UNUSED_RESULT MaybeLocal<String> ToString(
                                           ^
/Users/skainswo/.node-gyp/12.3.1/include/node/v8.h:2544:35: note: candidate function not viable: requires single argument 'isolate', but no arguments were provided
                    Local<String> ToString(Isolate* isolate) const);
                                  ^
5 errors generated.
make: *** [Release/obj.target/userid/src/userid.o] Error 1
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/Cellar/node/12.3.1/libexec/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:262:23)
gyp ERR! stack     at ChildProcess.emit (events.js:200:13)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:272:12)
gyp ERR! System Darwin 18.5.0
gyp ERR! command "/usr/local/Cellar/node/12.3.1/bin/node" "/usr/local/Cellar/node/12.3.1/libexec/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Users/skainswo/dev/remod/node_modules/userid
gyp ERR! node -v v12.3.1
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
remod ๐Ÿ”ฅ 
remod ๐Ÿ”ฅ gcc --version
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/c++/4.2.1
Apple LLVM version 10.0.1 (clang-1001.0.46.4)
Target: x86_64-apple-darwin18.5.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
remod ๐Ÿ”ฅ g++ --version
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/c++/4.2.1
Apple LLVM version 10.0.1 (clang-1001.0.46.4)
Target: x86_64-apple-darwin18.5.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
remod ๐Ÿ”ฅ clang --version
Apple LLVM version 10.0.1 (clang-1001.0.46.4)
Target: x86_64-apple-darwin18.5.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
remod ๐Ÿ”ฅ 

Error when including userid module

When I include the module I get the following error:

node_modules/userid/build/Release/userid.node: undefined symbol: node_module_register

It happens after this line:
var _userid = require(path.join(__dirname, '../build/Release/userid.node'));

I am using node v4.1.2

Help would me greatly appreciated.

Mark Horsman

Out-of-date mocha

When installing the latest version of userid (0.2.0), an out-of-date version of mocha gets installed, which results in these 3 errors:

npm WARN deprecated [email protected]: to-iso-string has been deprecated, use @segment/to-iso-string instead.
npm WARN deprecated [email protected]: Jade has been renamed to pug, please install the latest version of pug instead of jade
npm WARN deprecated [email protected]: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue

all these errors were fixed in the latest version of mocha (3.0.2).

Including userid module results in error

Hello,

I'm trying to use your userid module (latest 0.2.0) with node version v4.1.2, npm version 2.14.4 and nvm version 0.32.0. I get the following errors:

module.js:356 Module._extensions[extension](this, filename); ^ Error: /home/markhorsman/projects/services/node_modules/userid/build/Release/userid.node: undefined symbol: node_module_register at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.require (module.js:364:17) at require (module.js:380:17) at Object.<anonymous> (/home/markhorsman/projects/services/node_modules/userid/lib/userid.js:2:15) 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) at Module.require (module.js:364:17)

I tried with different node version, rebuilding, removing node_modules and reinstalling/rebuilding but nothing works.

Help would be greatly appreciated.

Mark Horsman

npm install fails on node version 7 on Mac

npm install userid throws an error on node v7.0.0, npm v3.10.8, on MacOS.

npm WARN deprecated [email protected]: Jade has been renamed to pug, please install the latest version of pug instead of jade
npm WARN deprecated [email protected]: to-iso-string has been deprecated, use @segment/to-iso-string instead.
npm WARN deprecated [email protected]: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue

> [email protected] install /Users/andy/Desktop/node_modules/userid
> node-gyp rebuild

gyp WARN download NVM_NODEJS_ORG_MIRROR is deprecated and will be removed in node-gyp v4, please use NODEJS_ORG_MIRROR
gyp WARN download NVM_NODEJS_ORG_MIRROR is deprecated and will be removed in node-gyp v4, please use NODEJS_ORG_MIRROR
gyp WARN download NVM_NODEJS_ORG_MIRROR is deprecated and will be removed in node-gyp v4, please use NODEJS_ORG_MIRROR
  CXX(target) Release/obj.target/userid/src/userid.o
../src/userid.cc:91:7: error: use of undeclared identifier 'getgrouplist'
  if (getgrouplist(*utfname, pw->pw_gid, groups, &ngroups) == -1) {
      ^
../src/userid.cc:99:9: error: use of undeclared identifier 'getgrouplist'
    if (getgrouplist(*utfname, pw->pw_gid, groups, &ngroups) == -1) {
        ^
2 errors generated.
make: *** [Release/obj.target/userid/src/userid.o] Error 1
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/Users/andy/.nvm/versions/node/v7.0.0/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:276:23)
gyp ERR! stack     at emitTwo (events.js:106:13)
gyp ERR! stack     at ChildProcess.emit (events.js:191:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:215:12)
gyp ERR! System Darwin 15.6.0
gyp ERR! command "/Users/andy/.nvm/versions/node/v7.0.0/bin/node" "/Users/andy/.nvm/versions/node/v7.0.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Users/andy/Desktop/node_modules/userid
gyp ERR! node -v v7.0.0
gyp ERR! node-gyp -v v3.4.0
gyp ERR! not ok
npm WARN enoent ENOENT: no such file or directory, open '/Users/andy/Desktop/package.json'
npm WARN Desktop No description
npm WARN Desktop No repository field.
npm WARN Desktop No README data
npm WARN Desktop No license field.
npm ERR! Darwin 15.6.0
npm ERR! argv "/Users/andy/.nvm/versions/node/v7.0.0/bin/node" "/Users/andy/.nvm/versions/node/v7.0.0/bin/npm" "i" "userid"
npm ERR! node v7.0.0
npm ERR! npm  v3.10.8
npm ERR! code ELIFECYCLE

npm ERR! [email protected] install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] install script 'node-gyp rebuild'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the userid package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs userid
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls userid
npm ERR! There is likely additional logging output above.

License GPLv3?

Hey jandre, great job on this project. Would you consider changing the license to avoid the copyleft requirement carried by GPL? Perhaps something like MIT?

Is this package dead? Moving to new home.

@jandre, there are many pending pull requests here. I have reached out to npm about taking over this package and merging the pending pull requests. If we don't hear from you, I'll be moving stuff to my own github account once npm makes me a co-owner of the package.

OpenSUSE

The userid dont work on openSUSE

Module Version mismatch (Ubuntu 14.04)

module.js:460
return process.dlopen(module, path._makeLong(filename));
^

Error: Module version mismatch. Expected 46, got 47.
at Error (native)
at Object.Module._extensions..node (module.js:460:18)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:313:12)
at Module.require (module.js:366:17)
at require (module.js:385:17)
at Object. (/root/backend/node_modules/userid/lib/userid.js:2:15)
at Module._compile (module.js:435:26)
at Object.Module._extensions..js (module.js:442:10)
at Module.load (module.js:356:32)

Seems to be broken in 0.12.0

Hi there,

This seems to no longer work on NodeJS 0.12.0. The following errors are spewed when trying to install.

npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
|
> [email protected] install /Users/DaneEveritt/Sites/gsd/node_modules/userid
> node-gyp rebuild

child_process: customFds option is deprecated, use stdio instead.
  CXX(target) Release/obj.target/userid/src/userid.o
../src/userid.cc:25:25: error: unknown type name 'Arguments'; did you mean
      'v8::internal::Arguments'?
Handle<Value> Uid(const Arguments& args);
                        ^~~~~~~~~
                        v8::internal::Arguments
/Users/DaneEveritt/.node-gyp/0.12.0/deps/v8/include/v8.h:127:7: note: 
      'v8::internal::Arguments' declared here
class Arguments;
      ^
../src/userid.cc:26:30: error: unknown type name 'Arguments'; did you mean
      'v8::internal::Arguments'?
Handle<Value> UserName(const Arguments& args);
                             ^~~~~~~~~
                             v8::internal::Arguments
/Users/DaneEveritt/.node-gyp/0.12.0/deps/v8/include/v8.h:127:7: note: 
      'v8::internal::Arguments' declared here
class Arguments;
      ^
../src/userid.cc:27:31: error: unknown type name 'Arguments'; did you mean
      'v8::internal::Arguments'?
Handle<Value> GroupName(const Arguments& args);
                              ^~~~~~~~~
                              v8::internal::Arguments
/Users/DaneEveritt/.node-gyp/0.12.0/deps/v8/include/v8.h:127:7: note: 
      'v8::internal::Arguments' declared here
class Arguments;
      ^
../src/userid.cc:28:25: error: unknown type name 'Arguments'; did you mean
      'v8::internal::Arguments'?
Handle<Value> Gid(const Arguments& args);
                        ^~~~~~~~~
                        v8::internal::Arguments
/Users/DaneEveritt/.node-gyp/0.12.0/deps/v8/include/v8.h:127:7: note: 
      'v8::internal::Arguments' declared here
class Arguments;
      ^
../src/userid.cc:32:15: error: calling a protected constructor of class
      'v8::HandleScope'
  HandleScope scope;
              ^
/Users/DaneEveritt/.node-gyp/0.12.0/deps/v8/include/v8.h:816:13: note: declared
      protected here
  V8_INLINE HandleScope() {}
            ^
../src/userid.cc:33:23: error: no member named 'NewSymbol' in 'v8::String'
  target->Set(String::NewSymbol("uid"), FunctionTemplate::New(Uid)->GetF...
              ~~~~~~~~^
../src/userid.cc:34:23: error: no member named 'NewSymbol' in 'v8::String'
  target->Set(String::NewSymbol("username"), FunctionTemplate::New(UserN...
              ~~~~~~~~^
../src/userid.cc:35:23: error: no member named 'NewSymbol' in 'v8::String'
  target->Set(String::NewSymbol("gid"), FunctionTemplate::New(Gid)->GetF...
              ~~~~~~~~^
../src/userid.cc:36:23: error: no member named 'NewSymbol' in 'v8::String'
  target->Set(String::NewSymbol("groupname"), FunctionTemplate::New(Grou...
              ~~~~~~~~^
../src/userid.cc:39:31: error: unknown type name 'Arguments'; did you mean
      'v8::internal::Arguments'?
Handle<Value> GroupName(const Arguments& args)
                              ^~~~~~~~~
                              v8::internal::Arguments
/Users/DaneEveritt/.node-gyp/0.12.0/deps/v8/include/v8.h:127:7: note: 
      'v8::internal::Arguments' declared here
class Arguments;
      ^
../src/userid.cc:41:15: error: calling a protected constructor of class
      'v8::HandleScope'
  HandleScope scope;
              ^
/Users/DaneEveritt/.node-gyp/0.12.0/deps/v8/include/v8.h:816:13: note: declared
      protected here
  V8_INLINE HandleScope() {}
            ^
../src/userid.cc:44:11: error: member access into incomplete type 'const
      v8::internal::Arguments'
  if (args.Length() > 0 && args[0]->IsInt32()) {
          ^
/Users/DaneEveritt/.node-gyp/0.12.0/deps/v8/include/v8.h:127:7: note: forward
      declaration of 'v8::internal::Arguments'
class Arguments;
      ^
../src/userid.cc:45:26: error: type 'const v8::internal::Arguments' does not
      provide a subscript operator
    group = getgrgid(args[0]->Int32Value());
                     ~~~~^~
../src/userid.cc:47:52: error: no member named 'New' in 'v8::String'
    return ThrowException(Exception::Error(String::New("you must supply ...
                                           ~~~~~~~~^
../src/userid.cc:51:18: error: no member named 'Close' in 'v8::HandleScope'
    return scope.Close(String::New(group->gr_name));
           ~~~~~ ^
../src/userid.cc:51:32: error: no member named 'New' in 'v8::String'
    return scope.Close(String::New(group->gr_name));
                       ~~~~~~~~^
../src/userid.cc:53:52: error: no member named 'New' in 'v8::String'
    return ThrowException(Exception::Error(String::New("gid not found")));
                                           ~~~~~~~~^
../src/userid.cc:57:25: error: unknown type name 'Arguments'; did you mean
      'v8::internal::Arguments'?
Handle<Value> Gid(const Arguments& args)
                        ^~~~~~~~~
                        v8::internal::Arguments
/Users/DaneEveritt/.node-gyp/0.12.0/deps/v8/include/v8.h:127:7: note: 
      'v8::internal::Arguments' declared here
class Arguments;
      ^
../src/userid.cc:59:15: error: calling a protected constructor of class
      'v8::HandleScope'
  HandleScope scope;
              ^
/Users/DaneEveritt/.node-gyp/0.12.0/deps/v8/include/v8.h:816:13: note: declared
      protected here
  V8_INLINE HandleScope() {}
            ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make: *** [Release/obj.target/userid/src/userid.o] Error 1
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:267:23)
gyp ERR! stack     at ChildProcess.emit (events.js:110:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:1067:12)
gyp ERR! System Darwin 14.0.0
gyp ERR! command "node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Users/DaneEveritt/Sites/gsd/node_modules/userid
gyp ERR! node -v v0.12.0
gyp ERR! node-gyp -v v1.0.2
gyp ERR! not ok 
npm ERR! Darwin 14.0.0
npm ERR! argv "node" "/usr/local/bin/npm" "install" "userid"
npm ERR! node v0.12.0
npm ERR! npm  v2.5.1
npm ERR! code ELIFECYCLE

npm ERR! [email protected] install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] install script 'node-gyp rebuild'.
npm ERR! This is most likely a problem with the userid package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls userid
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /Users/DaneEveritt/Sites/gsd/npm-debug.log

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.