seleniumkit / selenograph Goto Github PK
View Code? Open in Web Editor NEWPowered version of Selenium Grid Router
License: Other
Powered version of Selenium Grid Router
License: Other
Versions ;
Ubuntu : 14.04
Selenograph : 1.2-1
Mongod : 3.4.4
I have designed my test.xml file and the same is reflected on selenograph UI on the specified port (4444). When I start the service of yandex-selenograph , it shows that that the service is connected to the given port but eventually lands up into the above mentioned error.
I have libmongo-client0-dbg package installed (alternate for mongo driver) but not working :(
Also looked for bson installation and mongodb java driver & mongodb- java-driver-core ; still not working
I also get the below error ๐
ERROR CamelotAggregationStrategy - Repository failure occurred, SKIPPING MESSAGE for plugin 'quotaStats' with key 'all'
Caused by ru.yandex.qatools.camelot.api.error.RepositoryFailureException: Failed to get exchange for key 'all': Failed to get exchange for key 'all'
ERROR MongodbAggregationRepository - [quotaStats] Failed to update map for key 'all'
Caused by org.bson.codecs.configuration.CodecConfigurationException: Can't find a codec for class org.apache.camel.impl.DefaultExchangeHolder.: Can't find a codec for class org.apache.camel.impl.DefaultExchangeHolder.
Is there any dependency package I am missing or any version compatibility issue? Please specify.
I am using Selenograph to run my test cases which are in turn using docker based zelenium instances to execute the java based Test Cases.
I am somehow not able to initialize my Remote Web Driver.
Can you please help me with this ?
=============== Full stacktrace follows: ===============
Caused by java.lang.RuntimeException: Failed to init broadcaster: application context is probably not web application context!: Failed to init broadcaster: application context is probably not web application context!
at ru.yandex.qatools.camelot.web.core.AtmosphereClientBroadcastersProvider.initBroadcaster(AtmosphereClientBroadcastersProvider.java:70)
at ru.yandex.qatools.camelot.web.core.AtmosphereClientBroadcastersProvider.getBroadcaster(AtmosphereClientBroadcastersProvider.java:50)
at ru.yandex.qatools.camelot.web.core.LocalPluginFrontendNotifier$Notifier.notify(LocalPluginFrontendNotifier.java:39)
at sun.reflect.GeneratedMethodAccessor88.invoke(null)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at ru.yandex.qatools.camelot.common.AnnotatedMethodDispatcher.callMethod(AnnotatedMethodDispatcher.java:107)
at ru.yandex.qatools.camelot.common.AnnotatedMethodDispatcher.findSuitableMethodAndCall(AnnotatedMethodDispatcher.java:95)
at ru.yandex.qatools.camelot.common.AnnotatedMethodDispatcher.call(AnnotatedMethodDispatcher.java:66)
at ru.yandex.qatools.camelot.common.AnnotatedMethodDispatcher.dispatch(AnnotatedMethodDispatcher.java:42)
at ru.yandex.qatools.camelot.common.PluggableProcessor.dispatchMessage(PluggableProcessor.java:75)
at ru.yandex.qatools.camelot.common.PluggableProcessor.process(PluggableProcessor.java:61)
at org.apache.camel.processor.DelegateSyncProcessor.process(DelegateSyncProcessor.java:63)
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460)
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:121)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190)
at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:62)
at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:141)
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:460)
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:121)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190)
at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:62)
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190)
at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:109)
at org.apache.camel.processor.UnitOfWorkProducer.process(UnitOfWorkProducer.java:68)
at org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:412)
at org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:380)
at org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:270)
at org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:380)
at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:221)
at org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:124)
at org.apache.camel.impl.DefaultProducerTemplate.sendBodyAndHeaders(DefaultProducerTemplate.java:233)
at org.apache.camel.impl.DefaultProducerTemplate.sendBodyAndHeaders(DefaultProducerTemplate.java:379)
at ru.yandex.qatools.camelot.util.ServiceUtil$3.produce(ServiceUtil.java:184)
at ru.yandex.qatools.camelot.mongodb.MongodbClientSendersProvider.lambda$null$10(MongodbClientSendersProvider.java:101)
at ru.qatools.mongodb.MongoTailableQueue.lambda$poll$4(MongoTailableQueue.java:82)
at java.util.Iterator.forEachRemaining(Iterator.java:116)
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580)
at ru.qatools.mongodb.MongoTailableQueue.poll(MongoTailableQueue.java:82)
at ru.yandex.qatools.camelot.mongodb.MongodbClientSendersProvider.lambda$initPoller$11(MongodbClientSendersProvider.java:101)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
When there is user that alphabetically is before all then the filter show at the first time that this user can see all browsers/devices
add new user with the name aaaa with some of the resources and on the first time you enter to the UI it will show that this user can access to all resources.
after switching to other user and back this issue disappear.
Thanks
Installing latest version (1.1) on Ubuntu 14.04 LTS
partial_log.txt
workaround is to add the property+value
grid.router.quota.repository=ru.qatools.gridrouter.ConfigRepositoryXml
The class Key contains a method that split the browser name by dash delimiter. this raise limitation when working the browser name like "Android-1". The original Selenium GRID does support this...
public static String browserName(String name) { return name.contains("-") ? name.split("-")[0] : name; }
or provide an escaping on this character
Thanks
Does is support native app selenium grid execution , what is to be configured in quota.xml to make it support iOS and Android since they are not browser but platforms. any brief notes about regions and the xml structure, when i execute for native it say cannot find with capabilitie null 10.0.1
When I try to execute a test with this plateform and only with Firefox I have this issue :
Session [null] not available and is not among the last 1000 terminated sessions
Plateform :
Node with selenium-3.5.2
Grid with selenium -3.5.2
Selenograph 1.2 (with GridRouter)
This is OK when I execute on Chrome, Chome Headless, IE (7, 9, 10, 11).
Maybe someone has an idea ?
Hi guys,
I'm trying to install that on Ubuntu 14.04 but i'm having some problems.
I've installed mongodb before and after that i've done your install steps. The process starts but i can't see the app running.
I'm trying to access the app on:
http:/ip:4444/wd/hub but i'm getting:
HTTP ERROR: 503
Problem accessing /wd/hub. Reason:
Service Unavailable
Powered by Jetty:// 9.3.3.v20150827
Any ideas here?
Regards
I am getting the exception when i run it in Ubuntu Server 14.04 , 32 bit in Virtual Box Vm with 8b ram
tail -f /var/log/grid-router/grid-router.log
2016-11-20 18:30:22.629:WARN:oejut.QueuedThreadPool:qtp21837577-11: Unexpected thread death: org.eclipse.jetty.util.thread.QueuedThreadPool$3@e85257 in qtp21837577{STARTED,8<=7<=200,i=5,q=0}
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (malloc) failed to allocate 32756 bytes for ChunkPool::allocate
# An error report file with more information is saved as:
# /tmp/hs_err_pid2732.log
[thread 797760320 also had an error]
[error occurred during error reporting , id 0xe0000001]
Java HotSpot(TM) Client VM warning: ignoring option MaxPermSize=512m; support was removed in 8.0
2016-11-20 18:39:46.771:INFO::main: Logging initialized @109ms
2016-11-20 18:39:46.785:INFO:oejr.Runner:main: Runner
2016-11-20 18:39:46.902:INFO:oejs.Server:main: jetty-9.3.3.v20150827
2016-11-20 18:39:52.115:WARN:oejut.QueuedThreadPool:qtp21837577-13:
java.lang.OutOfMemoryError
at java.util.zip.Inflater.inflateBytes(Native Method)
at java.util.zip.Inflater.inflate(Inflater.java:259)
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:152)
at java.io.FilterInputStream.read(FilterInputStream.java:133)
at java.io.FilterInputStream.read(FilterInputStream.java:133)
at org.objectweb.asm.ClassReader.a(Unknown Source)
at org.objectweb.asm.ClassReader.<init>(Unknown Source)
at org.eclipse.jetty.annotations.AnnotationParser.scanClass(AnnotationParser.java:988)
at org.eclipse.jetty.annotations.AnnotationParser.parseJarEntry(AnnotationParser.java:970)
at org.eclipse.jetty.annotations.AnnotationParser.parseJar(AnnotationParser.java:921)
at org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:842)
at org.eclipse.jetty.annotations.AnnotationConfiguration$ParserTask.call(AnnotationConfiguration.java:163)
at org.eclipse.jetty.annotations.AnnotationConfiguration$1.run(AnnotationConfiguration.java:545)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)
at java.lang.Thread.run(Thread.java:745)
2016-11-20 18:39:52.119:WARN:oejut.QueuedThreadPool:qtp21837577-13: Unexpected thread death: org.eclipse.jetty.util.thread.QueuedThreadPool$3@1ddef8 in qtp21837577{STARTED,8<=8<=200,i=6,q=0}
Exception in thread "qtp21837577-13" java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.java:714)
at org.eclipse.jetty.util.thread.QueuedThreadPool.startThreads(QueuedThreadPool.java:462)
at org.eclipse.jetty.util.thread.QueuedThreadPool.access$200(QueuedThreadPool.java:47)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:639)
at java.lang.Thread.run(Thread.java:745)
2016-11-20 18:39:52.144:WARN:oejut.QueuedThreadPool:qtp21837577-11:
java.lang.OutOfMemoryError
at java.util.zip.Inflater.inflateBytes(Native Method)
at java.util.zip.Inflater.inflate(Inflater.java:259)
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:152)
at java.io.FilterInputStream.read(FilterInputStream.java:133)
at java.io.FilterInputStream.read(FilterInputStream.java:133)
at org.objectweb.asm.ClassReader.a(Unknown Source)
at org.objectweb.asm.ClassReader.<init>(Unknown Source)
at org.eclipse.jetty.annotations.AnnotationParser.scanClass(AnnotationParser.java:988)
at org.eclipse.jetty.annotations.AnnotationParser.parseJarEntry(AnnotationParser.java:970)
at org.eclipse.jetty.annotations.AnnotationParser.parseJar(AnnotationParser.java:921)
at org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:842)
at org.eclipse.jetty.annotations.AnnotationConfiguration$ParserTask.call(AnnotationConfiguration.java:163)
at org.eclipse.jetty.annotations.AnnotationConfiguration$1.run(AnnotationConfiguration.java:545)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)
at java.lang.Thread.run(Thread.java:745)#
2016-11-20 18:39:52.147:WARN:oejut.QueuedThreadPool:qtp21837577-11: Unexpected thread death: org.eclipse.jetty.util.thread.QueuedThreadPool$3@1ddef8 in qtp21837577{STARTED,8<=8<=200,i=0,q=0}# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (malloc) failed to allocate 32756 bytes for ChunkPool::allocate
# An error report file with more information is saved as:
# 2016-11-20 18:39:52.146:WARN:oejut.QueuedThreadPool:qtp21837577-14:
java.lang.OutOfMemoryError
at java.util.zip.Inflater.init(Native Method)
at java.util.zip.Inflater.<init>(Inflater.java:103)
at java.util.zip.ZipInputStream.<init>(ZipInputStream.java:98)
at java.util.zip.ZipInputStream.<init>(ZipInputStream.java:80)
at java.util.jar.JarInputStream.<init>(JarInputStream.java:76)
at java.util.jar.JarInputStream.<init>(JarInputStream.java:62)
at org.eclipse.jetty.annotations.AnnotationParser.parseJar(AnnotationParser.java:913)
at org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:842)
at org.eclipse.jetty.annotations.AnnotationConfiguration$ParserTask.call(AnnotationConfiguration.java:163)
at org.eclipse.jetty.annotations.AnnotationConfiguration$1.run(AnnotationConfiguration.java:545)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)
at java.lang.Thread.run(Thread.java:745)
2016-11-20 18:39:52.149:WARN:oejut.QueuedThreadPool:qtp21837577-14: Unexpected thread death: org.eclipse.jetty.util.thread.QueuedThreadPool$3@1ddef8 in qtp21837577{STARTED,8<=8<=200,i=0,q=0}
2016-11-20 18:39:52.146:WARN:oejut.QueuedThreadPool:qtp21837577-16:
java.lang.OutOfMemoryError
at java.util.zip.Inflater.inflateBytes(Native Method)
at java.util.zip.Inflater.inflate(Inflater.java:259)
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:152)
at java.util.zip.ZipInputStream.read(ZipInputStream.java:194)
at java.util.jar.JarInputStream.read(JarInputStream.java:207)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:284)
at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
at java.util.jar.JarInputStream.getBytes(JarInputStream.java:112)
at java.util.jar.JarInputStream.checkManifest(JarInputStream.java:94)
at java.util.jar.JarInputStream.<init>(JarInputStream.java:86)
at java.util.jar.JarInputStream.<init>(JarInputStream.java:62)
at org.eclipse.jetty.annotations.AnnotationParser.parseJar(AnnotationParser.java:913)
at org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:842)
at org.eclipse.jetty.annotations.AnnotationConfiguration$ParserTask.call(AnnotationConfiguration.java:163)
at org.eclipse.jetty.annotations.AnnotationConfiguration$1.run(AnnotationConfiguration.java:545)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)
at java.lang.Thread.run(Thread.java:745)
2016-11-20 18:39:52.149:WARN:oejut.QueuedThreadPool:qtp21837577-16: Unexpected thread death: org.eclipse.jetty.util.thread.QueuedThreadPool$3@1ddef8 in qtp21837577{STARTED,8<=8<=200,i=0,q=0}
2016-11-20 18:39:52.146:WARN:oejut.QueuedThreadPool:qtp21837577-17:
java.lang.OutOfMemoryError
at java.util.zip.Inflater.inflateBytes(Native Method)
at java.util.zip.Inflater.inflate(Inflater.java:259)
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:152)
at java.util.zip.ZipInputStream.read(ZipInputStream.java:194)
at java.util.jar.JarInputStream.read(JarInputStream.java:207)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:284)
at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
at java.util.jar.JarInputStream.getBytes(JarInputStream.java:112)
at java.util.jar.JarInputStream.checkManifest(JarInputStream.java:94)
at java.util.jar.JarInputStream.<init>(JarInputStream.java:86)
at java.util.jar.JarInputStream.<init>(JarInputStream.java:62)
at org.eclipse.jetty.annotations.AnnotationParser.parseJar(AnnotationParser.java:913)
at org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:842)
at org.eclipse.jetty.annotations.AnnotationConfiguration$ParserTask.call(AnnotationConfiguration.java:163)
at org.eclipse.jetty.annotations.AnnotationConfiguration$1.run(AnnotationConfiguration.java:545)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)
at java.lang.Thread.run(Thread.java:745)
2016-11-20 18:39:52.150:WARN:oejut.QueuedThreadPool:qtp21837577-17: Unexpected thread death: org.eclipse.jetty.util.thread.QueuedThreadPool$3@1ddef8 in qtp21837577{STARTED,8<=8<=200,i=0,q=0}
2016-11-20 18:39:52.146:WARN:oejut.QueuedThreadPool:qtp21837577-10:
java.lang.OutOfMemoryError
at java.util.zip.Inflater.inflateBytes(Native Method)
at java.util.zip.Inflater.inflate(Inflater.java:259)
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:152)
at java.io.FilterInputStream.read(FilterInputStream.java:133)
at java.io.FilterInputStream.read(FilterInputStream.java:133)
at org.objectweb.asm.ClassReader.a(Unknown Source)
at org.objectweb.asm.ClassReader.<init>(Unknown Source)
at org.eclipse.jetty.annotations.AnnotationParser.scanClass(AnnotationParser.java:988)
at org.eclipse.jetty.annotations.AnnotationParser.parseJarEntry(AnnotationParser.java:970)
at org.eclipse.jetty.annotations.AnnotationParser.parseJar(AnnotationParser.java:921)
at org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:842)
at org.eclipse.jetty.annotations.AnnotationConfiguration$ParserTask.call(AnnotationConfiguration.java:163)
at org.eclipse.jetty.annotations.AnnotationConfiguration$1.run(AnnotationConfiguration.java:545)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)
at java.lang.Thread.run(Thread.java:745)
2016-11-20 18:39:52.151:WARN:oejut.QueuedThreadPool:qtp21837577-10: Unexpected thread death: org.eclipse.jetty.util.thread.QueuedThreadPool$3@1ddef8 in qtp21837577{STARTED,8<=8<=200,i=0,q=0}
/tmp/hs_err_pid8052.log
2016-11-20 18:39:52.156:WARN:oejut.QueuedThreadPool:qtp21837577-15:
java.lang.OutOfMemoryError
at java.util.zip.Inflater.inflateBytes(Native Method)
at java.util.zip.Inflater.inflate(Inflater.java:259)
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:152)
at java.util.zip.ZipInputStream.read(ZipInputStream.java:194)
at java.util.jar.JarInputStream.read(JarInputStream.java:207)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:284)
at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
at java.util.jar.JarInputStream.getBytes(JarInputStream.java:112)
at java.util.jar.JarInputStream.checkManifest(JarInputStream.java:94)
at java.util.jar.JarInputStream.<init>(JarInputStream.java:86)
at java.util.jar.JarInputStream.<init>(JarInputStream.java:62)
at org.eclipse.jetty.annotations.AnnotationParser.parseJar(AnnotationParser.java:913)
at org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:842)
at org.eclipse.jetty.annotations.AnnotationConfiguration$ParserTask.call(AnnotationConfiguration.java:163)
at org.eclipse.jetty.annotations.AnnotationConfiguration$1.run(AnnotationConfiguration.java:545)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)
at java.lang.Thread.run(Thread.java:745)
2016-11-20 18:39:52.157:WARN:oejut.QueuedThreadPool:qtp21837577-15: Unexpected thread death: org.eclipse.jetty.util.thread.QueuedThreadPool$3@1ddef8 in qtp21837577{STARTED,8<=3<=200,i=1,q=1}
Exception in thread "qtp21837577-15" [thread 790346560 also had an error]Exception in thread "qtp21837577-11" [thread 791673664 also had an error]Exception in thread "qtp21837577-14" [thread 790678336 also had an error]Exception in thread "qtp21837577-16" [thread 790014784 also had an error]Exception in thread "qtp21837577-17" [thread 789683008 also had an error]
Hey,
I've created new entry with browser name "iPhone_onXcode7" and "Android 6 on Genymotion" and from unknown reason when tests are using one of those resources and the Quota bar show 0 out of....
Any idea why?
My current architecture is
Two Selenograph services behind hardware load balacner (checking the /ping API status code)
When I wish to restart one of the machines I would like to stop it gently...
my suggestion is to change the return status code from the /ping API to be 5xx or 4xx
Or to change the return value from ok to something else (like "shunting down" or whatever).
Once no new connection will arrive it will be fully shutdown.
Or any suggestion you have...
WDYT?
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.