juraji / image-manager-2 Goto Github PK
View Code? Open in Web Editor NEWLiked https://github.com/Juraji/Pinterest-Downloader? You're gonna love this one!
License: GNU General Public License v3.0
Liked https://github.com/Juraji/Pinterest-Downloader? You're gonna love this one!
License: GNU General Public License v3.0
Describe the bug
When trying to view log files, open a directory on disk or opening an image in the system image viewer Image Manager crashes and kan only by stopped by killing the process.
Expected behavior
Desktop integration should activate the appropriate system action.
Desktop (please complete the following information):
Additional context
Note for debugging: JavaFX Desktop class in Ubuntu. Does it even work?
As described in #3, some Java flavours do not have the JavaJFX plugin.
I d/led the 2.0 release, then executed java -jar image-manager-2.0.0-SNAPSHOT.jar
as the Releases page says. I got the following error:
Error: Could not find or load main class nl.juraji.imagemanager.Main
Caused by: java.lang.NoClassDefFoundError: javafx/application/Application
My system info:
OpenJDK Runtime Environment (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.4)
OpenJDK Server VM (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.4, mixed mode)
Describe the bug
I switched to the 2.0.0 release instead of beta, input the same login info, then tried to add pinterest boards. It seemed to hang at "Initializing web session" (time 11:11:35.766 in the log below), but then much later gave the exception.
To Reproduce
Expected behavior
Pinterest boards should show up in the table.
Desktop (please complete the following information):
Additional context
11:11:08.565 [JavaFX Application Thread] INFO i.e.config.properties.LoadContext: loaded properties from []
11:11:08.718 [JavaFX Application Thread] INFO i.e.datasource.pool.ConnectionPool: DataSourcePool [storage] autoCommit[false] transIsolation[READ_COMMITTED] min[2] max[200]
11:11:09.096 [JavaFX Application Thread] INFO io.ebean.internal.DefaultContainer: DatabasePlatform name:storage platform:h2
11:11:09.798 [JavaFX Application Thread] INFO io.ebean.migration.MigrationRunner: local migrations:6 existing migrations:6 checkState:false
11:11:34.455 [JavaFX Application Thread] INFO n.j.i.fxml.dialogs.WorkDialog: Executing task "Fetching Pinterest boards..."
11:11:35.766 [Thread-8] INFO i.g.bonigarcia.wdm.WebDriverManager: Using chromedriver 2.46 (since Google Chrome 73 is installed in your machine)
Exception in thread "Thread-8" java.lang.NullPointerException
at nl.juraji.imagemanager.tasks.pinterest.PinterestWebTask.persistDriverCookies(PinterestWebTask.java:160)
at nl.juraji.imagemanager.tasks.pinterest.PinterestWebTask.done(PinterestWebTask.java:64)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:384)
at java.util.concurrent.FutureTask.setException(FutureTask.java:251)
at java.util.concurrent.FutureTask.run(FutureTask.java:271)
at java.lang.Thread.run(Thread.java:748)
11:17:46.220 [JavaFX Application Thread] ERROR n.j.i.fxml.dialogs.WorkDialog: Error executing task
java.util.concurrent.ExecutionException: java.lang.Exception: java.lang.OutOfMemoryError: Java heap space
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:192)
at nl.juraji.imagemanager.fxml.dialogs.WorkDialog.lambda$exec$2(WorkDialog.java:140)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
at javafx.event.Event.fireEvent(Event.java:198)
at javafx.concurrent.EventHelper.fireEvent(EventHelper.java:219)
at javafx.concurrent.Task.fireEvent(Task.java:1356)
at javafx.concurrent.Task.setState(Task.java:707)
at javafx.concurrent.Task$TaskCallable.lambda$call$2(Task.java:1453)
at com.sun.javafx.application.PlatformImpl.lambda$null$5(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$6(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
at com.sun.glass.ui.gtk.GtkApplication.lambda$null$5(GtkApplication.java:139)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.Exception: java.lang.OutOfMemoryError: Java heap space
at javafx.concurrent.Task$TaskCallable.call(Task.java:1465)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
... 1 common frames omitted
Caused by: java.lang.OutOfMemoryError: Java heap space
at java.lang.StringCoding$StringEncoder.encode(StringCoding.java:300)
at java.lang.StringCoding.encode(StringCoding.java:344)
at java.lang.String.getBytes(String.java:918)
at java.io.UnixFileSystem.getBooleanAttributes0(Native Method)
at java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:242)
at java.io.File.isDirectory(File.java:849)
at org.apache.commons.io.filefilter.DirectoryFileFilter.accept(DirectoryFileFilter.java:71)
at org.apache.commons.io.filefilter.NotFileFilter.accept(NotFileFilter.java:56)
at org.apache.commons.io.filefilter.AndFileFilter.accept(AndFileFilter.java:128)
at org.apache.commons.io.filefilter.OrFileFilter.accept(OrFileFilter.java:123)
at java.io.File.listFiles(File.java:1291)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:473)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.Exception: java.lang.OutOfMemoryError: Java heap space
at nl.juraji.imagemanager.fxml.dialogs.WorkDialog.lambda$exec$2(WorkDialog.java:147)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
at javafx.event.Event.fireEvent(Event.java:198)
at javafx.concurrent.EventHelper.fireEvent(EventHelper.java:219)
at javafx.concurrent.Task.fireEvent(Task.java:1356)
at javafx.concurrent.Task.setState(Task.java:707)
at javafx.concurrent.Task$TaskCallable.lambda$call$2(Task.java:1453)
at com.sun.javafx.application.PlatformImpl.lambda$null$5(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$6(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
at com.sun.glass.ui.gtk.GtkApplication.lambda$null$5(GtkApplication.java:139)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.util.concurrent.ExecutionException: java.lang.Exception: java.lang.OutOfMemoryError: Java heap space
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:192)
at nl.juraji.imagemanager.fxml.dialogs.WorkDialog.lambda$exec$2(WorkDialog.java:140)
... 19 more
Caused by: java.lang.Exception: java.lang.OutOfMemoryError: Java heap space
at javafx.concurrent.Task$TaskCallable.call(Task.java:1465)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
... 1 more
Caused by: java.lang.OutOfMemoryError: Java heap space
at java.lang.StringCoding$StringEncoder.encode(StringCoding.java:300)
at java.lang.StringCoding.encode(StringCoding.java:344)
at java.lang.String.getBytes(String.java:918)
at java.io.UnixFileSystem.getBooleanAttributes0(Native Method)
at java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:242)
at java.io.File.isDirectory(File.java:849)
at org.apache.commons.io.filefilter.DirectoryFileFilter.accept(DirectoryFileFilter.java:71)
at org.apache.commons.io.filefilter.NotFileFilter.accept(NotFileFilter.java:56)
at org.apache.commons.io.filefilter.AndFileFilter.accept(AndFileFilter.java:128)
at org.apache.commons.io.filefilter.OrFileFilter.accept(OrFileFilter.java:123)
at java.io.File.listFiles(File.java:1291)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:473)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
at org.apache.commons.io.FileUtils.innerListFiles(FileUtils.java:481)
Describe the bug
Hello, when i install the soft , i can't retreive my boards.
To Reproduce
Steps to reproduce the behavior: (Use a virtual machine to reproduce the problem if you don't want to break something)
Expected behavior
I can retreive the boards and download the images
Screenshots
proof that i was logged
Desktop (please complete the following information):
Additional context
When i use the cmd to open the jar file with --debug command : it works and open chrome to work
SAME THING on every versions of IM.
Any idea to solve ?
I see the other issues and :
Chrome don't remind the account because the soft use a specific profile ? (i tried to sync my account on chrome but when i log in, my profile don't show in)
The soft don't use the cookie that chrome created ?
I wanted to say thanks for your soft anyway. You saved a lot of my time
Here is the log txt without the debug command
18:39:38.995 [JavaFX Application Thread] INFO io.ebean.config.properties.LoadContext: loaded properties from [ebean.properties]
18:39:39.070 [JavaFX Application Thread] INFO io.ebean.EbeanVersion: ebean version: 11.38.1
18:39:39.188 [JavaFX Application Thread] INFO io.ebean.datasource.pool.ConnectionPool: DataSourcePool [db] autoCommit[false] transIsolation[READ_COMMITTED] min[2] max[200]
18:39:39.356 [JavaFX Application Thread] INFO io.ebean.internal.DefaultContainer: DatabasePlatform name:db platform:h2
18:39:39.611 [JavaFX Application Thread] INFO io.ebean.migration.MigrationRunner: local migrations:7 existing migrations:7 checkState:false
18:39:42.436 [JavaFX Application Thread] INFO nl.juraji.imagemanager.fxml.dialogs.WorkDialog: Executing task "Fetching Pinterest boards..."
18:39:43.464 [pool-3-thread-1] INFO io.github.bonigarcia.wdm.WebDriverManager: Using chromedriver 74.0.3729.6 (since Google Chrome 74 is installed in your machine)
18:39:43.476 [pool-3-thread-1] INFO io.github.bonigarcia.wdm.WebDriverManager: Exporting webdriver.chrome.driver as .\chromedriver\win32\74.0.3729.6\chromedriver.exe
18:39:43.507 [pool-3-thread-1] INFO nl.juraji.imagemanager.util.io.web.WebDriverPool: Driver instance requested
18:39:48.912 [pool-3-thread-1] INFO nl.juraji.imagemanager.util.io.web.WebDriverPool: Driver instance available: 22f277c2ac75c030d850f9de8ba76ac7
18:39:48.915 [pool-3-thread-1] INFO nl.juraji.imagemanager.tasks.pinterest.FetchPinterestBoardsTask: Initializing driver for https://pinterest.com
18:39:52.592 [pool-3-thread-1] INFO nl.juraji.imagemanager.tasks.pinterest.FetchPinterestBoardsTask: Driver: Not authenticated!
18:39:52.593 [pool-3-thread-1] ERROR nl.juraji.imagemanager.fxml.dialogs.WorkDialog: Error executing task
nl.juraji.imagemanager.util.exceptions.ManagerTaskException: Not authenticated on Pinterest
at nl.juraji.imagemanager.tasks.pinterest.PinterestWebTask.call(PinterestWebTask.java:76)
at nl.juraji.imagemanager.tasks.pinterest.FetchPinterestBoardsTask.call(FetchPinterestBoardsTask.java:34)
at nl.juraji.imagemanager.tasks.pinterest.FetchPinterestBoardsTask.call(FetchPinterestBoardsTask.java:24)
at nl.juraji.imagemanager.fxml.dialogs.WorkDialog.lambda$exec$3(WorkDialog.java:131)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
18:39:52.593 [pool-3-thread-1] INFO nl.juraji.imagemanager.util.io.web.WebDriverPool: Driver instance returned 22f277c2ac75c030d850f9de8ba76ac7
18:39:55.334 [JavaFX Application Thread] INFO nl.juraji.imagemanager.fxml.dialogs.WorkDialog: Executing task "Fetching Pinterest boards..."
18:39:55.349 [pool-4-thread-1] INFO nl.juraji.imagemanager.util.io.web.WebDriverPool: Driver instance requested
18:39:55.355 [pool-4-thread-1] INFO nl.juraji.imagemanager.util.io.web.WebDriverPool: Driver instance available: 22f277c2ac75c030d850f9de8ba76ac7
18:39:55.369 [pool-4-thread-1] INFO nl.juraji.imagemanager.tasks.pinterest.FetchPinterestBoardsTask: Driver: Not authenticated!
18:39:55.370 [pool-4-thread-1] ERROR nl.juraji.imagemanager.fxml.dialogs.WorkDialog: Error executing task
nl.juraji.imagemanager.util.exceptions.ManagerTaskException: Not authenticated on Pinterest
at nl.juraji.imagemanager.tasks.pinterest.PinterestWebTask.call(PinterestWebTask.java:76)
at nl.juraji.imagemanager.tasks.pinterest.FetchPinterestBoardsTask.call(FetchPinterestBoardsTask.java:34)
at nl.juraji.imagemanager.tasks.pinterest.FetchPinterestBoardsTask.call(FetchPinterestBoardsTask.java:24)
at nl.juraji.imagemanager.fxml.dialogs.WorkDialog.lambda$exec$3(WorkDialog.java:131)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
18:39:55.370 [pool-4-thread-1] INFO nl.juraji.imagemanager.util.io.web.WebDriverPool: Driver instance returned 22f277c2ac75c030d850f9de8ba76ac718:41:41.112 [JavaFX Application Thread] INFO io.ebean.config.properties.LoadContext: loaded properties from [ebean.properties]
18:41:41.190 [JavaFX Application Thread] INFO io.ebean.EbeanVersion: ebean version: 11.38.1
18:41:41.304 [JavaFX Application Thread] INFO io.ebean.datasource.pool.ConnectionPool: DataSourcePool [db] autoCommit[false] transIsolation[READ_COMMITTED] min[2] max[200]
18:41:41.477 [JavaFX Application Thread] INFO io.ebean.internal.DefaultContainer: DatabasePlatform name:db platform:h2
18:41:41.722 [JavaFX Application Thread] INFO io.ebean.migration.MigrationRunner: local migrations:7 existing migrations:7 checkState:false
18:41:46.553 [JavaFX Application Thread] INFO nl.juraji.imagemanager.fxml.dialogs.WorkDialog: Executing task "Authenticating on Pinterest..."
18:41:47.529 [pool-3-thread-1] INFO io.github.bonigarcia.wdm.WebDriverManager: Using chromedriver 74.0.3729.6 (since Google Chrome 74 is installed in your machine)
18:41:47.536 [pool-3-thread-1] INFO io.github.bonigarcia.wdm.WebDriverManager: Exporting webdriver.chrome.driver as .\chromedriver\win32\74.0.3729.6\chromedriver.exe
18:42:26.260 [pool-3-thread-1] INFO nl.juraji.imagemanager.fxml.dialogs.WorkDialog: Completed task "Authenticating on Pinterest..."
18:42:32.472 [JavaFX Application Thread] INFO nl.juraji.imagemanager.fxml.dialogs.WorkDialog: Executing task "Fetching Pinterest boards..."
18:42:32.589 [pool-5-thread-1] INFO io.github.bonigarcia.wdm.WebDriverManager: Using chromedriver 74.0.3729.6 (since Google Chrome 74 is installed in your machine)
18:42:32.591 [pool-5-thread-1] INFO io.github.bonigarcia.wdm.WebDriverManager: Exporting webdriver.chrome.driver as .\chromedriver\win32\74.0.3729.6\chromedriver.exe
18:42:32.623 [pool-5-thread-1] INFO nl.juraji.imagemanager.util.io.web.WebDriverPool: Driver instance requested
18:42:37.660 [pool-5-thread-1] INFO nl.juraji.imagemanager.util.io.web.WebDriverPool: Driver instance available: d52be944a5703ead9cf675993d5d1773
18:42:37.664 [pool-5-thread-1] INFO nl.juraji.imagemanager.tasks.pinterest.FetchPinterestBoardsTask: Initializing driver for https://pinterest.com
18:42:41.266 [pool-5-thread-1] INFO nl.juraji.imagemanager.tasks.pinterest.FetchPinterestBoardsTask: Driver: Not authenticated!
18:42:41.267 [pool-5-thread-1] ERROR nl.juraji.imagemanager.fxml.dialogs.WorkDialog: Error executing task
nl.juraji.imagemanager.util.exceptions.ManagerTaskException: Not authenticated on Pinterest
at nl.juraji.imagemanager.tasks.pinterest.PinterestWebTask.call(PinterestWebTask.java:76)
at nl.juraji.imagemanager.tasks.pinterest.FetchPinterestBoardsTask.call(FetchPinterestBoardsTask.java:34)
at nl.juraji.imagemanager.tasks.pinterest.FetchPinterestBoardsTask.call(FetchPinterestBoardsTask.java:24)
at nl.juraji.imagemanager.fxml.dialogs.WorkDialog.lambda$exec$3(WorkDialog.java:131)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
18:42:41.267 [pool-5-thread-1] INFO nl.juraji.imagemanager.util.io.web.WebDriverPool: Driver instance returned d52be944a5703ead9cf675993d5d1773
Describe the bug
When having Pinterest setup with Google login, it's unclear on what username and password to enter in the settings.
Expected behavior
Login should be possible via username and password or login via Google or Facebook.
Desktop (please complete the following information):
Additional context
Idea, have the user log in via a browser window, instead of the settings window.
Reproduction
What happens
The board starts indexing (the progressbars start filling up), but then the indexing abruptly stops.
Documentation is severely lacking
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.