Giter Site home page Giter Site logo

dss's People

Contributors

alencion avatar chusnaval avatar doyuni avatar goesanghan avatar juhyun419 avatar parksale avatar puresin5117 avatar rullu16 avatar sia-txt avatar vincentj2 avatar yeonnseok avatar ztkmkoo avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar

dss's Issues

Set netty and akka log level from service level

See io.github.ztkmkoo.dss.core.network.rest.DssRestChannel

public class DssRestChannel {
    public DssRestChannel() {
    }

    public Channel bind(ServerBootstrap serverBootstrap, DssRestChannelProperty dssRestChannelProperty, DssRestChannelInitializer dssRestChannelInitializer) throws InterruptedException {
        Objects.requireNonNull(serverBootstrap);
        Objects.requireNonNull(dssRestChannelProperty);
        Objects.requireNonNull(dssRestChannelInitializer);
        return ((ServerBootstrap)((ServerBootstrap)serverBootstrap.channel(NioServerSocketChannel.class)).handler(new LoggingHandler(LogLevel.DEBUG))).childHandler(dssRestChannelInitializer).bind(dssRestChannelProperty.getHost(), dssRestChannelProperty.getPort()).sync().channel();
    }
}

It config netty loglevel default as debug level.
By the way, i can config the log level in the service project with create new logback.xml file(so we can see thenetty debug log), but it is necessary to make config log level possible.

How bout implementing a new log level enumeration mapping netty log level(io.netty.handler.logging.LogLevel) and let's pass the parameter to DssRestServer constructure.

Discuss upgrading junit version

Please discuss about upgrading junit version 4 to 5, and if need please commit codes.
After upgrade, make sure all the origin tests run.

Test issue

test gitter.

will close it after test.

[BUG]Not expected response

Describe the bug
The http rest response is not expected value. for dss-0.0.2.

my test code:

public class Application {

    public static void main(String[] args) throws InterruptedException {
        DssRestServer dssRestServer = new DssRestServer("127.0.0.1", 8181);

        dssRestServer
                .addDssRestService(new MyService())
                .addDssRestService(new YourService());
        dssRestServer.start();
    }
}

public class MyService implements DssRestActorService {
    public String getName() {
        return "myService";
    }

    public String getPath() {
        return "/my/service";
    }

    public DssRestMethodType getMethodType() {
        return DssRestMethodType.GET;
    }

    public DssRestContentInfo getConsume() {
        return DssRestContentInfo.APPLICATION_JSON_UTF8;
    }

    public DssRestContentInfo getProduce() {
        return DssRestContentInfo.APPLICATION_JSON_UTF8;
    }

    public DssRestServiceResponse handling(DssRestServiceActorCommandRequest commandRequest) {
        final String myName = commandRequest.getContent();
        final MyServiceResponse response = new MyServiceResponse();
        response.setResult("My service is " + myName + " service");
        return response;
    }
}

Expected behavior
Expected response like

{
    "result" : "My service is Kebron service"
}

Screenshots
image

Desktop (please complete the following information):

  • OS: Ubuntu 16.04
  • Test: Insomnia

[BUG] Project-Tuturial(KR) is not working

I have tried following the Project Tutorial(KR) in wiki but it didn't work.

I set up the project like this
dss-server
0.3.0.0
<- which is previous version
dss-server
0.3.1.0
<- which is current version
dss-server
0.0.3
<- which is guided version in Project Tutorial(KR)
but all of them is not work.

this is error log

"C:\Program Files\Java\jdk-11.0.7\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2020.1.3\lib\idea_rt.jar=55031:C:\Program Files\JetBrains\IntelliJ IDEA 2020.1.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\door6\Desktop\contributon\dss\dss-server\target\classes;C:\Users\door6\Desktop\contributon\dss\dss-core\target\classes;C:\Users\door6.m2\repository\io\netty\netty-all\4.1.45.Final\netty-all-4.1.45.Final.jar;C:\Users\door6.m2\repository\com\fasterxml\jackson\core\jackson-core\2.10.2\jackson-core-2.10.2.jar;C:\Users\door6.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.10.2\jackson-databind-2.10.2.jar;C:\Users\door6.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.10.2\jackson-annotations-2.10.2.jar;C:\Users\door6.m2\repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;C:\Users\door6.m2\repository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;C:\Users\door6.m2\repository\com\typesafe\akka\akka-actor-typed_2.13\2.6.3\akka-actor-typed_2.13-2.6.3.jar;C:\Users\door6.m2\repository\org\scala-lang\scala-library\2.13.1\scala-library-2.13.1.jar;C:\Users\door6.m2\repository\com\typesafe\akka\akka-actor_2.13\2.6.3\akka-actor_2.13-2.6.3.jar;C:\Users\door6.m2\repository\com\typesafe\config\1.4.0\config-1.4.0.jar;C:\Users\door6.m2\repository\org\scala-lang\modules\scala-java8-compat_2.13\0.9.0\scala-java8-compat_2.13-0.9.0.jar;C:\Users\door6.m2\repository\com\typesafe\akka\akka-slf4j_2.13\2.6.3\akka-slf4j_2.13-2.6.3.jar;C:\Users\door6.m2\repository\org\slf4j\slf4j-api\1.7.30\slf4j-api-1.7.30.jar io.github.ztkmkoo.dss.server.rest.DssRestServer
22:50:38,851 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
22:50:38,852 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
22:50:38,854 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/C:/Users/door6/Desktop/contributon/dss/dss-server/target/classes/logback.xml]
22:50:39,057 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
22:50:39,059 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
22:50:39,073 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT]
22:50:39,189 |-WARN in ch.qos.logback.core.ConsoleAppender[STDOUT] - This appender no longer admits a layout as a sub-component, set an encoder instead.
22:50:39,189 |-WARN in ch.qos.logback.core.ConsoleAppender[STDOUT] - To ensure compatibility, wrapping your layout in LayoutWrappingEncoder.
22:50:39,189 |-WARN in ch.qos.logback.core.ConsoleAppender[STDOUT] - See also http://logback.qos.ch/codes.html#layoutInsteadOfEncoder for details
22:50:39,191 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to INFO
22:50:39,191 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT]
22:50:39,192 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
22:50:39,195 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@1fe20588 - Registering current configuration as safe fallback point

2020-07-21 22:50:40 [INFO ] [Slf4jLogger.scala]applyOrElse(104) : Slf4jLogger started
2020-07-21 22:50:40 [INFO ] [DssRestServer.java]start(69) : Create actor system: akka://system
2020-07-21 22:50:40 [INFO ] [DssRestChannelInitializer.java]dssRestChannelInitializer(121) : Setup dssRestChannelInitializer
2020-07-21 22:50:40 [INFO ] [DssRestChannelInitializer.java]newAllocatedDssRestHandler(57) : freeHandlerQueue is empty. try to initialize new one: rest-handler-1
2020-07-21 22:50:40 [WARN ] [DssRestMasterActor.java]dssRestPathResolver(35) : Service list is empty
2020-07-21 22:50:40 [INFO ] [DssRestChannelInitializer.java]newAllocatedDssRestHandler(57) : freeHandlerQueue is empty. try to initialize new one: rest-handler-2
2020-07-21 22:50:40 [INFO ] [DssRestHandler.java]dssRestHandler(201) : Setup dssRestHandler: rest-handler-1
2020-07-21 22:50:40 [INFO ] [DssRestHandler.java]dssRestHandler(201) : Setup dssRestHandler: rest-handler-2

[BUG]Netty ChannelHandlerContext is not serializable

class DssHttpSimpleHandler extends AbstractDssHttpHandler {

// ...

    @Override
    protected void handlingHttpRequest(ChannelHandlerContext ctx, HttpRequest request, String content) {
        masterActor.tell(new HttpMessages.Request(ctx, request.uri(), content));
    }

// ...
}

Tell master actor the non serializable object.
Please resolve it.

[BUG]Publish 0.4.2

dss-server -> dss-core::0.0.1-SNAPSHOT
but dss-core::0.0.1-SNAPSHOT not deployed to maven central..

So the tutorial project could not find artifact io.github.ztkmkoo:dss-core:jar:0.0.1-SNAPSHOT..

Try to reform issue format

There are 2 issue format now.
And its so bad..

Please re-design the format and add some new useful format.

Add jdbc data access layer interface

Add jdbc data access layer interface.
In nowaday dss system, we need impletment singleton DAO(data access object) and call it in service actor.
It is so inefficient that add a data acess layer interface and user implement it, at last we run the data access actor in the background can work greate.

Add lombok.config files

Project lombok is very useful java library helps us automatically plugs into your editor and build tools.
https://projectlombok.org/

But, there are some known problems. (like @DaTa annotations, so dangerous sometimes)
Try to add an config to make it safe.

Upgrade travis ci jdk version

On sonarqube service, the version of Java (1.8.0_252) you have used to run this analysis is deprecated and we will stop accepting it from October 2020.

So we have upgrade the jdk after #63

detail:

https://sonarcloud.io/documentation/upcoming/

The version of Java installed in the scanner environment should be upgraded to at least Java 11 by October 2020. Pre-11 versions of Java are already deprecated and scanners using them will stop functioning after October 2020. This refers specifically to the JDK or JRE installed and used in the context where your SonarCloud scanner analysis tool is running. This may be your local build environment or your CI service. Should you need some hints on how to do this, please check our help page.

Update README.md

  • update README.md with new files.(CONTRIBUTION.md or CODE_OF_CONDUCT , etc..)

Add rest server tests

Please add rest server tests to dss-server module.
Check if all the functions works, if not please report the bugs.

You may need to add some http client dependency and complete the test.

Recommended tests:

  • basic rest test. (normal json request and its expected response)
  • check if contents types and encode module works well

Design network interface to accept netty modules

#54 I tried to make netty and akka work together but failed.

I have an idea that if i design Channel, EventLopp and other class, can make netty channel work on akka actor.
I will make the boss actor and working actor to implement netty bossGroup and workerGroup.

Make Netty Handler as Akka actor

There is a big flaw in this dss server system.
Netty handler have the blocking codes with concurrent hash map.

like io.github.ztkmkoo.dss.core.network.rest.handler.DssRestHandler, i have to handle the Netty ChannelHandlerContext with the concurrent container to handling receive also send action.

Please resolve it.

It would be a big upgrade.

[BUG] FileNotFoundException in dss-server testcode

Describe the bug

@Test
    public void testSsl() throws Exception {
        final PrivateKey privateKey = loadPrivateKeyFromFile(loadFromTestResources("ssl/private.der"));
        final X509Certificate certificate = loadX509CertificateFromFile(loadFromTestResources("ssl/private.crt"));

        final SslContext sslContext = SslContextBuilder.forServer(privateKey, SSL_PASSWORD, certificate).build();

        final DssRestServer dssRestServer = new DssRestServer("127.0.0.1", 8181, true, sslContext);
        dssRestServer
                .addDssRestService(new TestService("test", "/hi", DssRestMethodType.GET));

        stopDssRestServerAfterActivated(dssRestServer, 10 ,15);

        dssRestServer.start();

        assertTrue(dssRestServer.isShutdown());
    }

When I fork this repository and install, I got error in this test code

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
java.io.FileNotFoundException: C:\Users\����??\Documents\GitHub\dss\dss-server\target\jacoco.ex (������ ��θ� ã�� �� �����ϴ�)
	at java.io.FileOutputStream.open0(Native Method)
	at java.io.FileOutputStream.open(FileOutputStream.java:270)
	at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
	at org.jacoco.agent.rt.internal_14f7ee5.output.FileOutput.openFile(FileOutput.java:67)
	at org.jacoco.agent.rt.internal_14f7ee5.output.FileOutput.startup(FileOutput.java:49)
	at org.jacoco.agent.rt.internal_14f7ee5.Agent.startup(Agent.java:122)
	at org.jacoco.agent.rt.internal_14f7ee5.Agent.getInstance(Agent.java:50)
	at org.jacoco.agent.rt.internal_14f7ee5.PreMain.premain(PreMain.java:45)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:386)
	at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:401)
Running io.github.ztkmkoo.dss.server.rest.DssRestServerTest
10:34:13,857 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
10:34:13,858 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
10:34:13,858 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/C:/Users/%ec%84%b8%ec%9d%bc/Documents/GitHub/dss/dss-server/target/classes/logback.xml]
10:34:14,099 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
10:34:14,103 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
10:34:14,161 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT]
10:34:14,387 |-WARN in ch.qos.logback.core.ConsoleAppender[STDOUT] - This appender no longer admits a layout as a sub-component, set an encoder instead.
10:34:14,387 |-WARN in ch.qos.logback.core.ConsoleAppender[STDOUT] - To ensure compatibility, wrapping your layout in LayoutWrappingEncoder.
10:34:14,387 |-WARN in ch.qos.logback.core.ConsoleAppender[STDOUT] - See also http://logback.qos.ch/codes.html#layoutInsteadOfEncoder for details
10:34:14,390 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to INFO
10:34:14,390 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT]
10:34:14,392 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
10:34:14,395 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@3954d008 - Registering current configuration as safe fallback point
2020-07-20 10:34:18 [INFO ] [Slf4jLogger.scala]applyOrElse(104) : Slf4jLogger started
2020-07-20 10:34:19 [INFO ] [DssRestServer.java]start(63) : Create actor system: akka://system
2020-07-20 10:34:19 [INFO ] [DssRestChannelInitializer.java]dssRestChannelInitializer(121) : Setup dssRestChannelInitializer
2020-07-20 10:34:19 [INFO ] [DssRestChannelInitializer.java]newAllocatedDssRestHandler(57) : freeHandlerQueue is empty. try to initialize new one: rest-handler-1
2020-07-20 10:34:19 [INFO ] [DssRestChannelInitializer.java]newAllocatedDssRestHandler(57) : freeHandlerQueue is empty. try to initialize new one: rest-handler-2
2020-07-20 10:34:19 [INFO ] [DssRestPathResolver.java]lambda$null$0(62) : Add mapping GET /hi to test
2020-07-20 10:34:19 [INFO ] [DssRestHandler.java]dssRestHandler(201) : Setup dssRestHandler: rest-handler-2
2020-07-20 10:34:19 [INFO ] [DssRestHandler.java]dssRestHandler(201) : Setup dssRestHandler: rest-handler-1
2020-07-20 10:34:23 [INFO ] [DssRestServer.java]stop(95) : Channel try to close. [Active: true][Open: true]
2020-07-20 10:34:23 [INFO ] [DssRestServer.java]stop(101) : Actor system try to terminate
2020-07-20 10:34:23 [INFO ] [DssRestServer.java]start(80) : Shut down worker and boss group gracefully
2020-07-20 10:34:23 [INFO ] [Slf4jLogger.scala]applyOrElse(104) : Slf4jLogger started
2020-07-20 10:34:23 [INFO ] [DssRestChannelInitializer.java]dssRestChannelInitializer(121) : Setup dssRestChannelInitializer
2020-07-20 10:34:23 [INFO ] [DssRestServer.java]start(63) : Create actor system: akka://system
2020-07-20 10:34:23 [INFO ] [DssRestChannelInitializer.java]newAllocatedDssRestHandler(57) : freeHandlerQueue is empty. try to initialize new one: rest-handler-3
2020-07-20 10:34:23 [INFO ] [DssRestChannelInitializer.java]newAllocatedDssRestHandler(57) : freeHandlerQueue is empty. try to initialize new one: rest-handler-4
2020-07-20 10:34:23 [INFO ] [DssRestHandler.java]dssRestHandler(201) : Setup dssRestHandler: rest-handler-3
2020-07-20 10:34:23 [INFO ] [DssRestPathResolver.java]lambda$null$0(62) : Add mapping GET /hi to test
2020-07-20 10:34:23 [INFO ] [DssRestHandler.java]dssRestHandler(201) : Setup dssRestHandler: rest-handler-4
2020-07-20 10:34:23 [INFO ] [DssRestPathResolver.java]lambda$null$0(62) : Add mapping GET /hello to test2
2020-07-20 10:34:24 [INFO ] [DssRestServer.java]lambda$createActorSystem$0(89) : Actor system terminated.
2020-07-20 10:34:24 [INFO ] [DssRestServer.java]stop(95) : Channel try to close. [Active: true][Open: true]
2020-07-20 10:34:24 [INFO ] [DssRestServer.java]stop(101) : Actor system try to terminate
2020-07-20 10:34:24 [INFO ] [DssRestServer.java]start(80) : Shut down worker and boss group gracefully
Tests run: 3, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 10.656 sec <<< FAILURE!
testSsl(io.github.ztkmkoo.dss.server.rest.DssRestServerTest)  Time elapsed: 0.019 sec  <<< ERROR!
java.io.FileNotFoundException: C:\Users\%ec%84%b8%ec%9d%bc\Documents\GitHub\dss\dss-server\target\test-classes\ssl\private.der (지정된 경로를 찾을 수 없습니다)
	at java.io.FileInputStream.open0(Native Method)
	at java.io.FileInputStream.open(FileInputStream.java:195)
	at java.io.FileInputStream.<init>(FileInputStream.java:138)
	at io.github.ztkmkoo.dss.server.rest.DssRestServerTest.loadPrivateKeyFromFile(DssRestServerTest.java:148)
	at io.github.ztkmkoo.dss.server.rest.DssRestServerTest.testSsl(DssRestServerTest.java:82)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
	at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
	at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
java.io.FileNotFoundException: C:\Users\����??\Documents\GitHub\dss\dss-server\target\jacoco.ex (������ ��θ� ã�� �� �����ϴ�)
	at java.io.FileOutputStream.open0(Native Method)
	at java.io.FileOutputStream.open(FileOutputStream.java:270)
	at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
	at org.jacoco.agent.rt.internal_14f7ee5.output.FileOutput.openFile(FileOutput.java:67)
	at org.jacoco.agent.rt.internal_14f7ee5.output.FileOutput.writeExecutionData(FileOutput.java:53)
	at org.jacoco.agent.rt.internal_14f7ee5.Agent.shutdown(Agent.java:137)
	at org.jacoco.agent.rt.internal_14f7ee5.Agent$1.run(Agent.java:54)
2020-07-20 10:34:24 [INFO ] [DssRestServer.java]lambda$createActorSystem$0(89) : Actor system terminated.
Results :
Tests in error: 
  testSsl(io.github.ztkmkoo.dss.server.rest.DssRestServerTest): C:\Users\%ec%84%b8%ec%9d%bc\Documents\GitHub\dss\dss-server\target\test-classes\ssl\private.der (지정된 경로를 찾을 수 없습니다)
Tests run: 3, Failures: 0, Errors: 1, Skipped: 0

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.