bripkens / event-loop-stats Goto Github PK
View Code? Open in Web Editor NEWExposes stats about the libuv default loop
License: MIT License
Exposes stats about the libuv default loop
License: MIT License
Hi,
https://www.npmjs.com/package/@risingstack/event-loop-stats
Risingstack using node-pre-gyp compile c++ code, similarly is this possible to implement like them in event loop stats NPM.?
Hi!
I would like to add prebuilds to this repository. Would you accept a pull request?
We could use https://github.com/prebuild/prebuildify.
The fix for #6 seems to cause another case of incorrect stats.
For illustration
const els = require('event-loop-stats');
const express = require('express')
const app = express()
const port = 3000
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`)
})
setInterval(() => {
console.log(els.sense());
}, 10000)
Gives the following output
Example app listening at http://localhost:3000
{ min: 0, max: 8104, num: 16, sum: 10000 }
{ min: 10003, max: 10003, num: 1, sum: 10003 }
{ min: 10003, max: 10003, num: 1, sum: 10003 }
{ min: 10002, max: 10002, num: 1, sum: 10002 }
{ min: 10005, max: 10005, num: 1, sum: 10005 }
{ min: 10005, max: 10005, num: 1, sum: 10005 }
{ min: 10005, max: 10005, num: 1, sum: 10005 }
When I was tried to install the event loop stats in Windows 10-pro environment, below error is throwing
Previously I installed gc-stats npm with any problem.
My question is event loop stats supporting in windows10 environment?
help me to to fix the issue.
if not defined npm_config_node_gyp (node "C:\Users
\bane\AppData\Roaming\nvm\v6.11.2\node_modules\npm\bin\node-gyp-bin\....\node_modules\node-gyp\bin\node-gyp
.js" rebuild ) else (node "" rebuild )
Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Platforms\x64\PlatformToolsets\v140\Toolset.targets(36,5):
error MSB8036: The Windows SDK version 8.1 was not found. Install the required version of Windows SDK or change
the SDK version in the project property pages or by right-clicking the solution and selecting "Retarget solution"
. [C:\Users\bane\Desktop\logger\node_modules\event-loop-stats\build\eventLoopStats.vcxproj]
gyp ERR! build error
gyp ERR! stack Error: C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe
failed with exit code: 1
gyp ERR! stack at ChildProcess.onExit (C:\Users\bane\AppData\Roaming\nvm\v6.11.2\node_modules\npm\node_mo
dules\node-gyp\lib\build.js:258: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 Windows_NT 10.0.14393
gyp ERR! command "C:\Program Files\nodejs\node.exe" "C:\Users\bane\AppData\Roaming\nvm\v6.11.2\node
_modules\npm\node_modules\node-gyp\bin\node-gyp.js" "rebuild"
gyp ERR! cwd C:\Users\bane\Desktop\logger\node_modules\event-loop-stats
gyp ERR! node -v v6.11.2
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok
npm WARN [email protected] No description
npm WARN [email protected] No repository field.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] install: node-gyp rebuild
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\bane\AppData\Roaming\npm-cache_logs\2017-10-05T10_19_15_714Z-debug.log
Write now this module is not working in Worker threads.
Please refer the below article and please make it work in worker threads also.
https://nodejs.org/api/addons.html#worker-support
Hi,
Is this possible to calculate Avg number of milliseconds spent in the loop since last sense?
Thanks
When I manually block the event loop for a full second with a while loop, event-loop-stats
will still report a maximum way below that, for example 5ms. Is there something I don't understand about how to use the library? I call eventLoopStats.sense()
every second.
Hi,
max: Maximum number of milliseconds spent in a SINGLE LOOP since last sense call.
min: Minimum number of milliseconds spent in a SINGLE LOOP since last sense call.
I don't understand what is the meaning max number of ms spend in a SINGLE LOOP?
When & what are the scenarios the event loop time will increase?
If you anyone have a link please send it to me.
Hi
Tried to install event-loop-stats
with node.js 12 but got the following error:
In file included from ../../nan/nan_converters.h:67:0,
from ../../nan/nan.h:202,
from ../src/eventLoopStats.cc:1:
../../nan/nan_converters_43_inl.h: In static member function ‘static Nan::imp::ToFactoryBase<v8::Boolean>::return_t Nan::imp::ToFactory<v8::Boolean>::convert(v8::Local<v8::Value>)’:
../../nan/nan_converters_43_inl.h:18:51: warning: ‘v8::MaybeLocal<v8::Boolean> v8::Value::ToBoolean(v8::Local<v8::Context>) const’ is deprecated: ToBoolean can never throw. Use Local version. [-Wdeprecated-declarations]
val->To ## TYPE(isolate->GetCurrentContext()) \
^
../../nan/nan_converters_43_inl.h:22:1: note: in expansion of macro ‘X’
X(Boolean)
^
In file included from /home/az/.node-gyp/12.3.1/include/node/v8-internal.h:14:0,
from /home/az/.node-gyp/12.3.1/include/node/v8.h:25,
from /home/az/.node-gyp/12.3.1/include/node/node.h:63,
from ../../nan/nan.h:51,
from ../src/eventLoopStats.cc:1:
/home/az/.node-gyp/12.3.1/include/node/v8.h:2524:63: note: declared here
V8_WARN_UNUSED_RESULT MaybeLocal<Boolean> ToBoolean(
^
/home/az/.node-gyp/12.3.1/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
declarator __attribute__((deprecated(message)))
^~~~~~~~~~
In file included from ../../nan/nan_converters.h:67:0,
from ../../nan/nan.h:202,
from ../src/eventLoopStats.cc:1:
../../nan/nan_converters_43_inl.h: In static member function ‘static Nan::imp::ValueFactoryBase<bool>::return_t Nan::imp::ToFactory<bool>::convert(v8::Local<v8::Value>)’:
../../nan/nan_converters_43_inl.h:37:57: warning: ‘v8::Maybe<bool> v8::Value::BooleanValue(v8::Local<v8::Context>) const’ is deprecated: BooleanValue can never throw. Use Isolate version. [-Wdeprecated-declarations]
return val->NAME ## Value(isolate->GetCurrentContext()); \
^
../../nan/nan_converters_43_inl.h:40:1: note: in expansion of macro ‘X’
X(bool, Boolean)
^
In file included from /home/az/.node-gyp/12.3.1/include/node/v8-internal.h:14:0,
from /home/az/.node-gyp/12.3.1/include/node/v8.h:25,
from /home/az/.node-gyp/12.3.1/include/node/node.h:63,
from ../../nan/nan.h:51,
from ../src/eventLoopStats.cc:1:
/home/az/.node-gyp/12.3.1/include/node/v8.h:2562:51: note: declared here
V8_WARN_UNUSED_RESULT Maybe<bool> BooleanValue(
^
/home/az/.node-gyp/12.3.1/include/node/v8config.h:307:3: note: in definition of macro ‘V8_DEPRECATED’
declarator __attribute__((deprecated(message)))
^~~~~~~~~~
In file included from ../../nan/nan_new.h:189:0,
from ../../nan/nan.h:203,
from ../src/eventLoopStats.cc:1:
../../nan/nan_implementation_12_inl.h: In static member function ‘static Nan::imp::FactoryBase<v8::Function>::return_t Nan::imp::Factory<v8::Function>::New(Nan::FunctionCallback, v8::Local<v8::Value>)’:
../../nan/nan_implementation_12_inl.h:105:32: error: no matching function for call to ‘v8::Function::New(v8::Isolate*&, void (&)(const v8::FunctionCallbackInfo<v8::Value>&), v8::Local<v8::Object>&)’
, obj));
^
In file included from /home/az/.node-gyp/12.3.1/include/node/node.h:63:0,
from ../../nan/nan.h:51,
from ../src/eventLoopStats.cc:1:
/home/az/.node-gyp/12.3.1/include/node/v8.h:4125:31: note: candidate: static v8::MaybeLocal<v8::Function> v8::Function::New(v8::Local<v8::Context>, v8::FunctionCallback, v8::Local<v8::Value>, int, v8::ConstructorBehavior, v8::SideEffectType)
static MaybeLocal<Function> New(
^~~
/home/az/.node-gyp/12.3.1/include/node/v8.h:4125:31: note: no known conversion for argument 1 from ‘v8::Isolate*’ to ‘v8::Local<v8::Context>’
In file included from ../../nan/nan_new.h:189:0,
from ../../nan/nan.h:203,
from ../src/eventLoopStats.cc:1:
../../nan/nan_implementation_12_inl.h: In static member function ‘static Nan::imp::FactoryBase<v8::StringObject>::return_t Nan::imp::Factory<v8::StringObject>::New(v8::Local<v8::String>)’:
../../nan/nan_implementation_12_inl.h:337:37: error: no matching function for call to ‘v8::StringObject::New(v8::Local<v8::String>&)’
return v8::StringObject::New(value).As<v8::StringObject>();
^
In file included from /home/az/.node-gyp/12.3.1/include/node/node.h:63:0,
from ../../nan/nan.h:51,
from ../src/eventLoopStats.cc:1:
/home/az/.node-gyp/12.3.1/include/node/v8.h:5380:23: note: candidate: static v8::Local<v8::Value> v8::StringObject::New(v8::Isolate*, v8::Local<v8::String>)
static Local<Value> New(Isolate* isolate, Local<String> value);
^~~
/home/az/.node-gyp/12.3.1/include/node/v8.h:5380:23: note: candidate expects 2 arguments, 1 provided
In file included from ../../nan/nan_new.h:189:0,
from ../../nan/nan.h:203,
from ../src/eventLoopStats.cc:1:
../../nan/nan_implementation_12_inl.h:337:58: error: expected primary-expression before ‘>’ token
return v8::StringObject::New(value).As<v8::StringObject>();
^
../../nan/nan_implementation_12_inl.h:337:60: error: expected primary-expression before ‘)’ token
return v8::StringObject::New(value).As<v8::StringObject>();
^
In file included from ../src/eventLoopStats.cc:1:0:
../../nan/nan.h: In constructor ‘Nan::Utf8String::Utf8String(v8::Local<v8::Value>)’:
../../nan/nan.h:1034:53: error: no matching function for call to ‘v8::Value::ToString()’
v8::Local<v8::String> string = from->ToString();
^
In file included from /home/az/.node-gyp/12.3.1/include/node/node.h:63:0,
from ../../nan/nan.h:51,
from ../src/eventLoopStats.cc:1:
/home/az/.node-gyp/12.3.1/include/node/v8.h:2528:44: note: candidate: v8::MaybeLocal<v8::String> v8::Value::ToString(v8::Local<v8::Context>) const
V8_WARN_UNUSED_RESULT MaybeLocal<String> ToString(
^~~~~~~~
/home/az/.node-gyp/12.3.1/include/node/v8.h:2528:44: note: candidate expects 1 argument, 0 provided
In file included from /home/az/.node-gyp/12.3.1/include/node/v8-internal.h:14:0,
from /home/az/.node-gyp/12.3.1/include/node/v8.h:25,
from /home/az/.node-gyp/12.3.1/include/node/node.h:63,
from ../../nan/nan.h:51,
from ../src/eventLoopStats.cc:1:
/home/az/.node-gyp/12.3.1/include/node/v8.h:2544:35: note: candidate: v8::Local<v8::String> v8::Value::ToString(v8::Isolate*) const
Local<String> ToString(Isolate* isolate) const);
^
/home/az/.node-gyp/12.3.1/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
declarator __attribute__((deprecated(message)))
^~~~~~~~~~
/home/az/.node-gyp/12.3.1/include/node/v8.h:2544:35: note: candidate expects 1 argument, 0 provided
Local<String> ToString(Isolate* isolate) const);
^
/home/az/.node-gyp/12.3.1/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
declarator __attribute__((deprecated(message)))
^~~~~~~~~~
In file included from ../src/eventLoopStats.cc:1:0:
../../nan/nan.h:1044:74: error: no matching function for call to ‘v8::String::WriteUtf8(char*&, int, int, const int&)’
length_ = string->WriteUtf8(str_, static_cast<int>(len), 0, flags);
^
In file included from /home/az/.node-gyp/12.3.1/include/node/node.h:63:0,
from ../../nan/nan.h:51,
from ../src/eventLoopStats.cc:1:
/home/az/.node-gyp/12.3.1/include/node/v8.h:2738:7: note: candidate: int v8::String::WriteUtf8(v8::Isolate*, char*, int, int*, int) const
int WriteUtf8(Isolate* isolate, char* buffer, int length = -1,
^~~~~~~~~
/home/az/.node-gyp/12.3.1/include/node/v8.h:2738:7: note: no known conversion for argument 1 from ‘char*’ to ‘v8::Isolate*’
In file included from ../src/eventLoopStats.cc:1:0:
../../nan/nan.h: In member function ‘void Nan::AsyncWorker::SaveToPersistent(const char*, const v8::Local<v8::Value>&)’:
../../nan/nan.h:1818:64: warning: ‘bool v8::Object::Set(v8::Local<v8::Value>, v8::Local<v8::Value>)’ is deprecated: Use maybe version [-Wdeprecated-declarations]
New(persistentHandle)->Set(New(key).ToLocalChecked(), value);
^
In file included from /home/az/.node-gyp/12.3.1/include/node/v8-internal.h:14:0,
from /home/az/.node-gyp/12.3.1/include/node/v8.h:25,
from /home/az/.node-gyp/12.3.1/include/node/node.h:63,
from ../../nan/nan.h:51,
from ../src/eventLoopStats.cc:1:
/home/az/.node-gyp/12.3.1/include/node/v8.h:3359:26: note: declared here
bool Set(Local<Value> key, Local<Value> value));
^
/home/az/.node-gyp/12.3.1/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
declarator __attribute__((deprecated(message)))
^~~~~~~~~~
In file included from ../src/eventLoopStats.cc:1:0:
../../nan/nan.h: In member function ‘void Nan::AsyncWorker::SaveToPersistent(const v8::Local<v8::String>&, const v8::Local<v8::Value>&)’:
../../nan/nan.h:1824:42: warning: ‘bool v8::Object::Set(v8::Local<v8::Value>, v8::Local<v8::Value>)’ is deprecated: Use maybe version [-Wdeprecated-declarations]
New(persistentHandle)->Set(key, value);
^
In file included from /home/az/.node-gyp/12.3.1/include/node/v8-internal.h:14:0,
from /home/az/.node-gyp/12.3.1/include/node/v8.h:25,
from /home/az/.node-gyp/12.3.1/include/node/node.h:63,
from ../../nan/nan.h:51,
from ../src/eventLoopStats.cc:1:
/home/az/.node-gyp/12.3.1/include/node/v8.h:3359:26: note: declared here
bool Set(Local<Value> key, Local<Value> value));
^
/home/az/.node-gyp/12.3.1/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
declarator __attribute__((deprecated(message)))
^~~~~~~~~~
In file included from ../src/eventLoopStats.cc:1:0:
../../nan/nan.h: In member function ‘void Nan::AsyncWorker::SaveToPersistent(uint32_t, const v8::Local<v8::Value>&)’:
../../nan/nan.h:1830:44: warning: ‘bool v8::Object::Set(uint32_t, v8::Local<v8::Value>)’ is deprecated: Use maybe version [-Wdeprecated-declarations]
New(persistentHandle)->Set(index, value);
^
In file included from /home/az/.node-gyp/12.3.1/include/node/v8-internal.h:14:0,
from /home/az/.node-gyp/12.3.1/include/node/v8.h:25,
from /home/az/.node-gyp/12.3.1/include/node/node.h:63,
from ../../nan/nan.h:51,
from ../src/eventLoopStats.cc:1:
/home/az/.node-gyp/12.3.1/include/node/v8.h:3368:26: note: declared here
bool Set(uint32_t index, Local<Value> value));
^
/home/az/.node-gyp/12.3.1/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
declarator __attribute__((deprecated(message)))
^~~~~~~~~~
In file included from ../src/eventLoopStats.cc:1:0:
../../nan/nan.h: In member function ‘v8::Local<v8::Value> Nan::AsyncWorker::GetFromPersistent(const char*) const’:
../../nan/nan.h:1836:61: warning: ‘v8::Local<v8::Value> v8::Object::Get(v8::Local<v8::Value>)’ is deprecated: Use maybe version [-Wdeprecated-declarations]
New(persistentHandle)->Get(New(key).ToLocalChecked()));
^
In file included from /home/az/.node-gyp/12.3.1/include/node/v8-internal.h:14:0,
from /home/az/.node-gyp/12.3.1/include/node/v8.h:25,
from /home/az/.node-gyp/12.3.1/include/node/node.h:63,
from ../../nan/nan.h:51,
from ../src/eventLoopStats.cc:1:
/home/az/.node-gyp/12.3.1/include/node/v8.h:3412:55: note: declared here
V8_DEPRECATE_SOON("Use maybe version", Local<Value> Get(Local<Value> key));
^
/home/az/.node-gyp/12.3.1/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
declarator __attribute__((deprecated(message)))
^~~~~~~~~~
In file included from ../src/eventLoopStats.cc:1:0:
../../nan/nan.h: In member function ‘v8::Local<v8::Value> Nan::AsyncWorker::GetFromPersistent(const v8::Local<v8::String>&) const’:
../../nan/nan.h:1842:55: warning: ‘v8::Local<v8::Value> v8::Object::Get(v8::Local<v8::Value>)’ is deprecated: Use maybe version [-Wdeprecated-declarations]
return scope.Escape(New(persistentHandle)->Get(key));
^
In file included from /home/az/.node-gyp/12.3.1/include/node/v8-internal.h:14:0,
from /home/az/.node-gyp/12.3.1/include/node/v8.h:25,
from /home/az/.node-gyp/12.3.1/include/node/node.h:63,
from ../../nan/nan.h:51,
from ../src/eventLoopStats.cc:1:
/home/az/.node-gyp/12.3.1/include/node/v8.h:3412:55: note: declared here
V8_DEPRECATE_SOON("Use maybe version", Local<Value> Get(Local<Value> key));
^
/home/az/.node-gyp/12.3.1/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
declarator __attribute__((deprecated(message)))
^~~~~~~~~~
In file included from ../src/eventLoopStats.cc:1:0:
../../nan/nan.h: In member function ‘v8::Local<v8::Value> Nan::AsyncWorker::GetFromPersistent(uint32_t) const’:
../../nan/nan.h:1847:57: warning: ‘v8::Local<v8::Value> v8::Object::Get(uint32_t)’ is deprecated: Use maybe version [-Wdeprecated-declarations]
return scope.Escape(New(persistentHandle)->Get(index));
^
In file included from /home/az/.node-gyp/12.3.1/include/node/v8-internal.h:14:0,
from /home/az/.node-gyp/12.3.1/include/node/v8.h:25,
from /home/az/.node-gyp/12.3.1/include/node/node.h:63,
from ../../nan/nan.h:51,
from ../src/eventLoopStats.cc:1:
/home/az/.node-gyp/12.3.1/include/node/v8.h:3416:55: note: declared here
V8_DEPRECATE_SOON("Use maybe version", Local<Value> Get(uint32_t index));
^
/home/az/.node-gyp/12.3.1/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
declarator __attribute__((deprecated(message)))
^~~~~~~~~~
In file included from /usr/include/c++/7/cassert:44:0,
from /home/az/.node-gyp/12.3.1/include/node/node_object_wrap.h:26,
from ../../nan/nan.h:53,
from ../src/eventLoopStats.cc:1:
../../nan/nan_object_wrap.h: In destructor ‘virtual Nan::ObjectWrap::~ObjectWrap()’:
../../nan/nan_object_wrap.h:24:25: error: ‘class Nan::Persistent<v8::Object>’ has no member named ‘IsNearDeath’
assert(persistent().IsNearDeath());
^
In file included from ../../nan/nan.h:2657:0,
from ../src/eventLoopStats.cc:1:
../../nan/nan_object_wrap.h: In member function ‘void Nan::ObjectWrap::MakeWeak()’:
../../nan/nan_object_wrap.h:67:34: warning: ‘void v8::PersistentBase<T>::MarkIndependent() [with T = v8::Object]’ is deprecated: Weak objects are always considered independent. Use TracedGlobal when trying to use EmbedderHeapTracer. Use a strong handle when trying to keep an object alive. [-Wdeprecated-declarations]
persistent().MarkIndependent();
^
In file included from /home/az/.node-gyp/12.3.1/include/node/v8-internal.h:14:0,
from /home/az/.node-gyp/12.3.1/include/node/v8.h:25,
from /home/az/.node-gyp/12.3.1/include/node/node.h:63,
from ../../nan/nan.h:51,
from ../src/eventLoopStats.cc:1:
/home/az/.node-gyp/12.3.1/include/node/v8.h:567:22: note: declared here
V8_INLINE void MarkIndependent());
^
/home/az/.node-gyp/12.3.1/include/node/v8config.h:307:3: note: in definition of macro ‘V8_DEPRECATED’
declarator __attribute__((deprecated(message)))
^~~~~~~~~~
In file included from /usr/include/c++/7/cassert:44:0,
from /home/az/.node-gyp/12.3.1/include/node/node_object_wrap.h:26,
from ../../nan/nan.h:53,
from ../src/eventLoopStats.cc:1:
../../nan/nan_object_wrap.h: In static member function ‘static void Nan::ObjectWrap::WeakCallback(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)’:
../../nan/nan_object_wrap.h:124:26: error: ‘class Nan::Persistent<v8::Object>’ has no member named ‘IsNearDeath’
assert(wrap->handle_.IsNearDeath());
^
make: *** [Release/obj.target/eventLoopStats/src/eventLoopStats.o] Error 1
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js: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 Linux 4.15.0-50-generic
gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/az/Downloads/NodeJSTests/Random/node_modules/event-loop-stats
gyp ERR! node -v v12.3.1
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
Do you plan to support node12?
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.