msokk / electron-render-service Goto Github PK
View Code? Open in Web Editor NEWMicroservice for rendering PDF/PNG/JPEG from HTML with Electron
License: MIT License
Microservice for rendering PDF/PNG/JPEG from HTML with Electron
License: MIT License
Is it possible to disable the certificate check? I.E. for self-signed certificates.
Hello
I try install on Debian 9 and crash all the time:
root@WIKI:~# npm install -g electron-render-service
/usr/bin/electron-render-service -> /usr/lib/node_modules/electron-render-service/bin/electron-render-service.js
> [email protected] postinstall /usr/lib/node_modules/electron-render-service/node_modules/electron
> node install.js
/usr/lib/node_modules/electron-render-service/node_modules/electron/install.js:47
throw err
^
Error: EACCES: permission denied, mkdir '/usr/lib/node_modules/electron-render-service/node_modules/electron/.electron'
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] postinstall: `node install.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] postinstall 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! /root/.npm/_logs/2018-10-16T19_33_36_521Z-debug.log
root@WIKI:~# nodejs -v
v10.12.0
root@WIKI:~# npm -v
6.4.1
Best Regards
TaKeN
I've got a page with an animation on it, and want to generate a PDF of the page after the animation has finished. I can't use waitForText
with a text that's on the page because that generates a PDF from before the animation. So I tried setting a timeout for when the animation should be done that renders a text with style display: none
. That text doesn't seem to get picked up though. I tried display: hidden
but that text got visibly rendered unfortunately.
Could we please have waitForText
detect text with display: none
(or some other solution that achieves the goal of triggering the pdf render without being visible on the pdf)?
Branch | Build failing 🚨 |
---|---|
Dependency | eslint-config-airbnb-base |
Current Version | 11.1.1 |
Type | devDependency |
This version is covered by your current version range and after updating it in your project the build failed.
As eslint-config-airbnb-base is “only” a devDependency of this project it might not break production or downstream projects, but “only” your build or test tools – preventing new deploys or publishes.
I recommend you give this issue a high priority. I’m sure you can resolve this 💪
There is a collection of frequently asked questions and of course you may always ask my humans.
Your Greenkeeper Bot 🌴
When installing electron-render-service through npm I run into an error which causes electron not being able to run.
On request I can post the full verbose logging, I have already tried npm cache clean but that doesn't do anything either.
Rendering the test file below as PDF fails if I define the waitForText
argument with foo
:
http://localhost:3000/pdf?waitForText=foo&url=http://localhost/test.html&delay=0&accessKey=secret
(The render service actually just goes into a never-ending loop or so… it’s not possible to render another working URL, either.)
However, with waitForText=bar
it succeeds:
http://localhost:3000/pdf?waitForText=bar&url=http://localhost/test.html&delay=0&accessKey=secret
Is this a restriction of this option that text is not detected if it is dynamically inserted by JavaScript? Or am I doing something wrong?
From the pull request I understand that it actually should work “if text is loaded via XHR or websocket requests after the inital dom is ready”…
Any suggestions?
<html>
<script>
setTimeout(function() {
var e = document.querySelector('body');
e.innerHTML = 'foo';
}, 3000);
</script>
bar
</html>
Branch | Build failing 🚨 |
---|---|
Dependency | mocha |
Current Version | 3.2.0 |
Type | devDependency |
This version is covered by your current version range and after updating it in your project the build failed.
As mocha is “only” a devDependency of this project it might not break production or downstream projects, but “only” your build or test tools – preventing new deploys or publishes.
I recommend you give this issue a high priority. I’m sure you can resolve this 💪
Thanks to all our contributors, maintainers, sponsors, and users! ❤️
As highlights:
--inspect-brk
on command-line (@igwejk)semistandard
directly (@kt3k)The new version differs by 89 commits0.
fb1687e
:ship: Release v3.3.0
1943e02
Add Changelog for v3.3.0
861e968
Refactor literal play-icon hex code to a var
1d3c5bc
Fix typo in karma.conf.js
9bd9389
Fix spec paths in test HTML files
0a93024
Adds tests for loading reporters w/ relative/absolute paths (#2773)
73929ad
Comment special treatment of '+' in URL query parsing
e2c9514
Merge pull request #2769 from igwejk/support_inspect_break_in_opts
038c636
Support --inspect-brk
on command-line
b4ebabd
Merge pull request #2727 from lamby/reproducible-build
882347b
Please make the build reproducible.
a2fc76c
Merge pull request #2703 from seppevs/cover_utils_some_fn_with_tests
ed61cd0
cover .some() function in utils.js with tests
f42cbf4
Merge pull request #2701 from craigtaub/landingSpec
6065242
use stubbed symbol
There are 89 commits in total.
See the full diff
There is a collection of frequently asked questions and of course you may always ask my humans.
Your Greenkeeper Bot 🌴
Currently getting this set up and running is a real pain, with services dotted around the place that have to be daemonised, manual install steps, and the like.
Would be really good to get some sort of packaged version of this (releases only, I'd imagine), so that it becomes a simple <add repo> && apt install electron-render-service
(I set up parsoid just prior to this and it was a breeze by comparison!)
I'm not sure if these are things to fix but it might help someone else and/or be useful in the readme.
To get this working with swarm mode I had to set HOSTNAME to nothing and use /dev/shm instead of setting shm_size.
docker service create --name ers --mount type=tmpfs,dst=/dev/shm,tmpfs-size=134217728 -e RENDERER_ACCESS_KEY=changeme -e HOSTNAME= --publish 3000:3000 msokk/electron-render-service
Or the compose file:
version: '3'
services:
electronrenderservice:
image: msokk/electron-render-service
ports:
- "3000:3000"
environment:
- RENDERER_ACCESS_KEY=changeme
- HOSTNAME=
volumes:
- /dev/shm:/dev/shm
To test:
http://localhost:3000/pdf?accessKey=changeme&url=http%3A%2F%2Fgoogle.com
To see what happens to your code in Node.js 10, Greenkeeper has created a branch with the following changes:
.travis.yml
If you’re interested in upgrading this repo to Node.js 10, you can open a PR with these changes. Please note that this issue is just intended as a friendly reminder and the PR as a possible starting point for getting your code running on Node.js 10.
Greenkeeper has checked the engines
key in any package.json
file, the .nvmrc
file, and the .travis.yml
file, if present.
engines
was only updated if it defined a single version, not a range..nvmrc
was updated to Node.js 10.travis.yml
was only changed if there was a root-level node_js
that didn’t already include Node.js 10, such as node
or lts/*
. In this case, the new version was appended to the list. We didn’t touch job or matrix configurations because these tend to be quite specific and complex, and it’s difficult to infer what the intentions were.For many simpler .travis.yml
configurations, this PR should suffice as-is, but depending on what you’re doing it may require additional work or may not be applicable at all. We’re also aware that you may have good reasons to not update to Node.js 10, which is why this was sent as an issue and not a pull request. Feel free to delete it without comment, I’m a humble robot and won’t feel rejected 🤖
There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot 🌴
After making a simple HTTP POST using fetch
, I write the PDF file in the response to my local file system. However, although the PDF file contains the right structure in terms of header and number of pages, the contents aren't being displayed! Furthermore, if I use some app like Postman and save the resulting PDF in my file system the content is correct. I ran vimdiff
between both PDF files (the one which I downloaded with my Node service and the one downloaded by Postman) and they seem to differ on the stream after the "</Filter /FlateDecode " sentence. Am I missing anything? Am I supposed to handle any specific encoding format?
Also, I tried to run the stability unit test cases and both GET and POST requests were failing.
Now that headless is about to appear in v59 of Chrome are you going to switch so xvfb can be dropped? It doesn't have paper size etc but that is in review afaik so v60 should be a good bet
PNG and JPG renders often seem to be taken too early, before electron has finished rendering.
Examples, produced by repeating this request with different browserHeight / browserWidth values:
Some also only show a transparent background & a scrollbar:
I experimented with triggering the call to capturePage
in a ready-to-show
event handler, or adding a static delay before this call. Neither eliminated the issue.
I've spent some time now using both electron-render-service and electron-pdf. I have some proposals I'd like to offer, and if there is agreement I can perform the work.
renderer.js
with electron-pdf
This makes sense to me because it would allow this project to benefit from enhancements to electron-pdf, while providing a robust and flexible API server for anyone wishing to setup rendering as a service vs. embedding it directly in their application.
Hi,
very cool idea and make-up of this!
I just gave it a spin but unfortunately, it does not work :(
On startup I see also this but I guess it should not prevent it from working:
#3
The problem is that I just get no response when doing this for example:
http://0.0.0.0:3000/pdf?url=http://www.heise.de&access_key=secret
Also I see this when starting the service:
libudev: udev_has_devtmpfs: name_to_handle_at on /dev: Operation not permitted
Any idea?
I forked your repo to better suit my needs and customize the Dockerfile. I then updated Electron to the latest 1.6.x release but noticed garbled text in my PDF. I haven't thoroughly tested this but a document with webfonts looked just plain bad. Reverting to 1.4.x was fine. Just letting you know in case you were planning to update. Otherwise your repo is great.
Running on docker 1.11.12, following the example, replacing localhost for node_address:
docker run -t -e RENDERER_ACCESS_KEY=secret -p 3000:3000 msokk/electron-render-service
wget -o out.pdf http://localhost:3000/pdf?url=https://github.com/msokk/electron-render-service&accessKey=secret
The pdf content returned is:
--2016-08-10 12:28:22-- http://localhost:3000/pdf?url=https://github.com/msokk/electron-render-service
Resolving localhost (localhost)... 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:3000... connected.
HTTP request sent, awaiting response... 403 Forbidden
2016-08-10 12:28:22 ERROR 403: Forbidden.
What am I missing? thank you
4.0.7
to 4.0.8
.This version is covered by your current version range and after updating it in your project the build failed.
electron is a direct dependency of this project, and it is very likely causing it to break. If other packages depend on yours, this update is probably also breaking those in turn.
Release Notes TBD.
There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot 🌴
Setting width
or height
in the clipping rectangle documented here doesn't change the actual output.
Branch | Build failing 🚨 |
---|---|
Dependency | eslint-config-airbnb-base |
Current Version | 11.1.0 |
Type | devDependency |
This version is covered by your current version range and after updating it in your project the build failed.
As eslint-config-airbnb-base is “only” a devDependency of this project it might not break production or downstream projects, but “only” your build or test tools – preventing new deploys or publishes.
I recommend you give this issue a high priority. I’m sure you can resolve this 💪
There is a collection of frequently asked questions and of course you may always ask my humans.
Your Greenkeeper Bot 🌴
I'm considering this service along with another docker container and would use it from within my private docker network. No auth needed.
Branch | Build failing 🚨 |
---|---|
Dependency | eslint |
Current Version | 3.16.1 |
Type | devDependency |
This version is covered by your current version range and after updating it in your project the build failed.
As eslint is “only” a devDependency of this project it might not break production or downstream projects, but “only” your build or test tools – preventing new deploys or publishes.
I recommend you give this issue a high priority. I’m sure you can resolve this 💪
applyDefaultPatterns
in line-comment-position
(#8183) (alberto)+ +a
to ++a
in space-unary-ops (#8176) (Alan Pierce)coveralls
to ^2.11.16 (#8161) (alberto)create
in no-use-before-define
(#8166) (Justin Anastos)linefix
and gh-got
(#8160) (alberto)lines-around-comment
doesn't disallow empty lines (#8151) (alberto)ignoreRestSiblings
option didn't cover arguments (fixes #8119) (#8120) (Toru Nagashima)The new version differs by 29 commits .
f882a11
3.17.0
6748c18
Build: package.json and changelog update for 3.17.0
4fdf6d7
Update: deprecate applyDefaultPatterns
in line-comment-position
(#8183)
25e5817
Fix: Don't autofix + +a
to ++a
in space-unary-ops (#8176)
a6ce8f9
Build: Sort rules before dumping them to doc files (#8154)
0af9057
Chore: Upgrade to a patched version of mock-fs (fixes #8177) (#8188)
bf4d8cf
Update: ignore eslint comments in lines-arount-comment (fixes #4345) (#8155)
dad20ad
New: add SourceCode#getLocFromIndex and #getIndexFromLoc (fixes #8073) (#8158)
18a519f
Update: let RuleTester cases assert that no autofix occurs (fixes #8157) (#8163)
a30eb8d
Docs: improve documentation for RuleTester cases (#8162)
a78ec9f
Chore: upgrade coveralls
to ^2.11.16 (#8161)
d02bd11
Fix: padded-blocks autofix problems with comments (#8149)
9994889
Docs: Add missing space to create
in no-use-before-define
(#8166)
4d542ba
Docs: Remove unneeded statement about autofix (#8164)
20daea5
New: no-compare-neg-zero rule (#8091)
There are 29 commits in total. See the full diff.
There is a collection of frequently asked questions and of course you may always ask my humans.
Your Greenkeeper Bot 🌴
This is awesome! Thanks!
Would it be easy to add an option to allow HTML-content to be sent instead of an URL? Or even multiple pages, like:
<html>
<body>
This is page 1
</body>
</html>
<html>
<body>
This is page 2
</body>
</html>
?
Branch | Build failing 🚨 |
---|---|
Dependency | eslint |
Current Version | 3.16.0 |
Type | devDependency |
This version is covered by your current version range and after updating it in your project the build failed.
As eslint is “only” a devDependency of this project it might not break production or downstream projects, but “only” your build or test tools – preventing new deploys or publishes.
I recommend you give this issue a high priority. I’m sure you can resolve this 💪
The new version differs by 8 commits .
589ab67
3.16.1
4fec5b2
Build: package.json and changelog update for 3.16.1
ff8a80c
Fix: duplicated autofix output for inverted fix ranges (fixes #8116) (#8117)
a421897
Docs: fix typo in arrow-parens.md (#8132)
22d7fbf
Chore: fix invalid redeclared variables in tests (#8130)
8d95598
Chore: fix output assertion typos in rule tests (#8129)
9fa2559
Docs: Add missing quotes in key-spacing rule (#8121)
f3a6ced
Build: package.json update for eslint-config-eslint release
See the full diff.
There is a collection of frequently asked questions and of course you may always ask my humans.
Your Greenkeeper Bot 🌴
https://github.com/msokk/electron-render-service/blob/master/Dockerfile#L31
electron-prebuilt is now electron
When I stop the ERS container with docker stop electron-render-service
and then subsequently start it again with docker run electron-render-service
I get the following error message in the logs:
2017-03-02T15:38:40.151926962Z xvfb-run: error: Xvfb failed to start
I currently circumvent this by simply removing the container and running a new one from the image – but would it be possible to make this work, anyway? Or is this a limitation of Docker?
Hi!
According to https://david-dm.org/msokk/electron-render-service the electron dependency has a Chromium Remote Code Execution
Hi there,
I noticed the argument pageSize
is checked to be one of ['A3', 'A4', 'A5', 'Legal', 'Letter', 'Tabloid']
, but a custom pageSize is supported by Electron too... Could this be added easily?
Just a warning, no issues so far.
Simple POST to callback_url
would be the easiest.
It doesn't seem possible to change the default font used by the webview for rendering (even if they are installed in the container and available to xvfb). This results in many pages looking different than in other browsers. How can this be set?
Additionally it would be useful to have the user agent definable somewhere, even if it's not per request.
Great project.
4.0.6
to 4.0.7
.This version is covered by your current version range and after updating it in your project the build failed.
electron is a direct dependency of this project, and it is very likely causing it to break. If other packages depend on yours, this update is probably also breaking those in turn.
defaultId
not taking affect when set to 0
and no "cancel" button was present on macOS. #17151process.versions.chrome
reporting the wrong patch version. #17218webContents.print()
not working correctly. #17116ShowOpenDialog
and ShowSaveDialog
. #17176There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot 🌴
https://code.google.com/p/chromium/issues/detail?id=174583
Workaround is to add -webkit-filter: blur(0);
to the box-shadow element.
Ooh! Here's an issue that I have no idea how to solve!
When I use the built image on Docker Hub that was built 9 days ago, all works well. But if I build from the Dockerfile using docker build -t electron-render-service .
...
and then run it:
docker run -it electron-render-service
I get: xvfb-run: error: Xvfb failed to start
Any ideas?
This needs more work, given that it will be dependent on browser window size.
https://github.com/atom/electron/blob/master/docs/api/browser-window.md#wincapturepagerect-callback
https://github.com/atom/electron/blob/master/docs/api/browser-window.md#winsetcontentsizewidth-height-animate
5.14.1
to 5.15.0
.This version is covered by your current version range and after updating it in your project the build failed.
eslint is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.
4088c6c
Build: Remove path.resolve in webpack build (#11462) (Kevin Partington)ec59ec0
New: add rule "prefer-named-capture-group" (fixes #11381) (#11392) (Pig Fang)a44f750
Upgrade: [email protected] (#11461) (Teddy Katz)d3ce611
Sponsors: Sync README with website (ESLint Jenkins)ee88475
Chore: add utils for rule tests (#11453) (薛定谔的猫)d4824e4
Sponsors: Sync README with website (ESLint Jenkins)6489518
Fix: no-extra-parens crash when code is "((let))" (#11444) (Teddy Katz)9d20de2
Sponsors: Sync README with website (ESLint Jenkins)3f14de4
Sponsors: Sync README with website (ESLint Jenkins)3d6c770
Sponsors: Sync README with website (ESLint Jenkins)de5cbc5
Update: remove invalid defaults from core rules (fixes #11415) (#11427) (Teddy Katz)eb0650b
Build: fix linting errors on master (#11428) (Teddy Katz)5018378
Chore: enable require-unicode-regexp on ESLint codebase (#11422) (Teddy Katz)f6ba633
Chore: lint all files in the repo at the same time (#11425) (Teddy Katz)8f3d717
Docs: Add non-attending TSC member info (#11411) (Nicholas C. Zakas)ce0777d
Docs: use more common spelling (#11417) (薛定谔的猫)b9aabe3
Chore: run fuzzer along with unit tests (#11404) (Teddy Katz)db0c5e2
Build: switch from browserify to webpack (fixes #11366) (#11398) (Pig Fang)The new version differs by 22 commits.
b00a5e9
5.15.0
c3aebb1
Build: changelog update for 5.15.0
4088c6c
Build: Remove path.resolve in webpack build (#11462)
ec59ec0
New: add rule "prefer-named-capture-group" (fixes #11381) (#11392)
a44f750
Upgrade: [email protected] (#11461)
341140f
Revert "Chore: remove devDependency common-tags (#11455)" (#11460)
d3ce611
Sponsors: Sync README with website
aaba636
Chore: remove devDependency common-tags (#11455)
ee88475
Chore: add utils for rule tests (#11453)
d4824e4
Sponsors: Sync README with website
6489518
Fix: no-extra-parens crash when code is "((let))" (#11444)
9d20de2
Sponsors: Sync README with website
3f14de4
Sponsors: Sync README with website
3d6c770
Sponsors: Sync README with website
de5cbc5
Update: remove invalid defaults from core rules (fixes #11415) (#11427)
There are 22 commits in total.
See the full diff
There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot 🌴
3.4.0
to 3.4.1
.This version is covered by your current version range and after updating it in your project the build failed.
supertest is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.
The new version differs by 9 commits.
8ef3840
3.4.1
cea9ff5
Merge pull request #535 from visionmedia/v3.4.1
013caf0
doc(History.md) changelog updated
0d4a6dc
Merge pull request #533 from rimiti/publish-only-necessary
9ed4909
chore(package-lock.json) file updated
c1a1c37
fix(test/supertest.js) test fixed, message has been updated
87756fb
Revert "chore(test/supertest.js) obscure test removed"
9e6851b
Revert "chore(test/supertest.js) obscure test removed"
ad882c2
chore(.npmignore) only publish necessary files
See the full diff
There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.
Your Greenkeeper Bot 🌴
Branch | Build failing 🚨 |
---|---|
Dependency | eslint-plugin-import |
Current Version | 2.3.0 |
Type | devDependency |
This version is covered by your current version range and after updating it in your project the build failed.
As eslint-plugin-import is “only” a devDependency of this project it might not break production or downstream projects, but “only” your build or test tools – preventing new deploys or publishes.
I recommend you give this issue a high priority. I’m sure you can resolve this 💪
The new version differs by 27 commits.
c41ed06
bump to v2.5.0
94187a3
bump debug
version everywhere
54687d1
resolvers/webpack: v0.8.2
dac23a1
eslint-module-utils: v2.1.1 (bumping to re-publish to npm)
d92ef43
Merge pull request #696 from eelyafi/new_line_fixer
3f9e4bf
[Tests] comment out failing (and probably invalid) test
4067495
Only apps should have lockfiles.
ebaa8e3
Merge pull request #873 from lukeapage/patch-3
3268cb1
Fix documentation of newline-after-import example
3c46d30
rollback utils dependency to 2.0.0
e3a32ad
add yank note to utils change log
089f7f1
add yanking note to root change log
dfbe0e7
Upgrade debug version of eslint-module-utils (#844)
3d9c642
Merge branch 'release'
b8e9a0b
Merge pull request #861 from benmosher/release-2.4.0
There are 27 commits in total.
See the full diff
There is a collection of frequently asked questions and of course you may always ask my humans.
Your Greenkeeper Bot 🌴
How can i use it with websites that i have to login first
I'm making something within a Saleforce.com APEX page where I had to use their own AJAX client, where responses are always parsed as text, rather than giving me the option to parse the response as a blob, as I'd normally do with SuperAgent. As a result, I need electron-render-service
to send back a temporary URL to the client where they can then perform a simple get to the resource.
I'm working on a PR where the render service saves a file to public/download-[timestamp].pdf
. It then returns the URL of the file to the client as JSON. Once the file has been accessed, it is deleted.
I've got it working in the narrow use-case for my client, but I was thinking of turning it into a PR for the project. I've designed it so that there's anther query parameter sendBinaryOrURL
which you can set to binary
or url
, defaulting to binary
if you don't provide the parameter (replicating the current flow).
Would you be interested in accepting a PR for this?
I have some HTML content which has a bunch of style definitions inlined into it and when posting the content to electron-render-service
, I get a PDF with no style applied to the contents (no colors, alignments, table stylings, etc...).
Are there any kind of limitations when rendering HTML styled content?
Branch | Build failing 🚨 |
---|---|
Dependency | electron |
Current Version | 1.6.3 |
Type | dependency |
This version is covered by your current version range and after updating it in your project the build failed.
As electron is a direct dependency of this project this is very likely breaking your project right now. If other packages depend on you it’s very likely also breaking them.
I recommend you give this issue a very high priority. I’m sure you can resolve this 💪
There is a collection of frequently asked questions and of course you may always ask my humans.
Your Greenkeeper Bot 🌴
Branch | Build failing 🚨 |
---|---|
Dependency | async |
Current Version | 2.4.1 |
Type | dependency |
This version is covered by your current version range and after updating it in your project the build failed.
async is a direct dependency of this project this is very likely breaking your project right now. If other packages depend on you it’s very likely also breaking them.
I recommend you give this issue a very high priority. I’m sure you can resolve this 💪
There is a collection of frequently asked questions and of course you may always ask my humans.
Your Greenkeeper Bot 🌴
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.