GithubHelp home page GithubHelp logo

amihaiemil / docker-java-api Goto Github PK

View Code? Open in Web Editor NEW
266.0 22.0 55.0 768 KB

Lightweight Java Docker client

License: BSD 3-Clause "New" or "Revised" License

Java 99.65% Shell 0.35%
docker java-8 oop-library elegantobjects docker-client docker-java-api

docker-java-api's Introduction

docker-java-api

Managed by Zerocrat

Build Status Coverage Status Hits-of-Code

Donate via Zerocracy DevOps By Rultor.com We recommend IntelliJ IDEA

Lightweight, object-oriented, Docker client for Java

A Java library for the Docker Engine API. It is the equivalent of the docker command-line client, for Java applications.

Unlike other docker clients for Java, this one aims to be as lightweight as possible, with as few transitive dependencies as possible and it should cause absolutely no runtime conflicts with other frameworks or platforms like Java EE.

Another target is that this library should be a true API, not an SDK. Read this blog post and the wiki for more details.

Maven dependency

The library comes as a maven dependency:

<dependency>
    <groupId>com.amihaiemil.web</groupId>
    <artifactId>docker-java-api</artifactId>
    <version>0.0.13</version>
</dependency>

In order for it to work, you need to have an implementation of JSON-P (JSR 374) in your classpath (it doesn't come transitively since most people are using Java EE APIs so, chances are it is already provided!). If you have no idea what this means, go here.

If you are not using Maven, you can also download the fat jar.

Usage Example And Wiki

Here is all you need to do in order to pull an Image and run a Container into the local Docker engine:

final Container started = new UnixDocker(new File("/var/run/docker.sock"))
    .images()
    .pull("hello-world", "latest")
    .run();

or, the same code snippet, less fluent:

final Docker docker = new UnixDocker(new File("/var/run/docker.sock"));
final Images images = docker.images();
for(final Image image : images){
//iterate over the existing images
}
final Image helloWorld = images.pull("hello-world", "latest");
final Container started = helloWorld.run();

More info in the Wiki.

Contributing

If you would like to contribute, just open an issue or a PR.

Make sure the maven build:

$mvn clean install -Pcheckstyle

passes before making a PR. Checkstyle will make sure you're following our code style and guidlines.

Running Integration Tests

In order to run the integration tests add the itcases profile to the maven command:

$mvn clean install -Pcheckstyle -Pitcases

Docker has to be installed and the ubuntu:latest image should be pulled on the machine, with the default configuration, in order for the IT cases to work.

Stargazers over time

Stargazers over time

docker-java-api's People

Contributors

alemdomarco avatar amihaiemil avatar bkuzmic avatar dependabot[bot] avatar geertjanw avatar irinil avatar jackpan123 avatar llorllale avatar milux avatar paulodamaso avatar rultor avatar ry99 avatar sbespalov avatar

Stargazers

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

Watchers

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

docker-java-api's Issues

RtDocker.java:37: Implement method ping() to check...

The puzzle 11-1ec3d76b from #11 has to be resolved:

* @todo #11:30min Implement method ping() to check Docker's availability.

The puzzle was created by Mihai Andronache on 04-Feb-18.

Estimate: 30 minutes, role: IMP.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

RtDocker.java:41-44: Implement a jcabi-http request which...

The puzzle 4-aaff06c1 from #4 has to be resolved:

* @todo #4:30min Implement a jcabi-http request which can work with
* unix sockets; local daemon host works over a unix socker.
* This library could be a good fit for unix sockets handling:
* https://github.com/jnr/jnr-unixsocket

The puzzle was created by Mihai Andronache on 28-Jan-18.

Estimate: 30 minutes, role: IMP.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

RtContainer.java:19-21: This class represents a...

The puzzle 46-f470c157 from #46 has to be resolved:

* @todo #46:30min This class represents a Container. It has to implement the
* API's methods which are acting upon a docker Container like logs,
* delete, stop etc).

The puzzle was created by amihaiemil on 19-Mar-18.

Estimate: 30 minutes, role: DEV.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

UnixHttpClient.java:47-48: Implement a...

The puzzle 29-9f250f40 from #29 has to be resolved:

* @todo #29:30min Implement a ConnectionSocketFactory which builds
* UnixSocket objects.

The puzzle was created by amihaiemil on 24-Feb-18.

Estimate: 30 minutes, role: DEV.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

UnixHttpClient.java:57-58: Connection pooling is...

The puzzle 44-0db77e9f from #44 has to be resolved:

* @todo #44:30min Connection pooling is currently hardcoded at 10 connections
* max. Figure out how to make this configurable.

The puzzle was created by George Aristy on 15-Mar-18.

Estimate: 30 minutes, role: DEV.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

UnixSocket.java:110-111: Implement this method, use...

The puzzle 7-ed06e452 from #7 has to be resolved:

* @todo #7:30min Implement this method, use UnixSocketAddress to send the
* request via the unix socket.

The puzzle was created by Mihai Andronache on 28-Jan-18.

Estimate: 30 minutes, role: IMP.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

SocketResponse.java:39: Implement and test the headers()...

The puzzle 14-aa715a86 from #14 has to be resolved:

* @todo #14:30min Implement and test the headers() method.

The puzzle was created by Mihai Andronache on 04-Feb-18.

Estimate: 30 minutes, role: IMP.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

RtContainer.java:22-24: Once we have the CI environment...

The puzzle 46-21e68db8 from #46 has to be resolved:

* @todo #46:30min Once we have the CI environment properly setup with a Docker
* instance, write integration tests for this class as well
* (RtContainerITCase).

The puzzle was created by amihaiemil on 19-Mar-18.

Estimate: 30 minutes, role: DEV.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

RtDocker.java:35-36: Implement RemoteDocker which will...

The puzzle 11-6dd03fe4 from #11 has to be resolved:

* @todo #11:30min Implement RemoteDocker which will make the requests over
* a tcp socket and TLS if certificates are provided.

The puzzle was created by Mihai Andronache on 04-Feb-18.

Estimate: 30 minutes, role: IMP.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

AssertRequest.java:52-55: Figure out how to let the user...

The puzzle 38-1586cf52 from #38 has to be resolved:

* @todo #38:30min Figure out how to let the user specify the failure message
* for each condition in case a test on the request fails. This way, if the
* request does not meet a given condition, then the test's error will show the
* reason why it didn't.

The puzzle was created by George Aristy on 13-Mar-18.

Estimate: 30 minutes, role: DEV.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

BaseRequest.java:464-470: Implement and unit test method...

The puzzle 87-bd2cb401 from #87 has to be resolved:

* @todo #87:1h Implement and unit test method formParam(String, Object)
* Details <a href="http://stackoverflow.com/
* questions/8659808/how-does-http-file-upload-work">here</a>
* (second answer). <br> e.g. While FormEncodedBody.formParam adds
* the param to a body with enctype application/x-www-form-urlencoded,
* method MultipartFormBody.formParam should add it to a body with
* enctype multipart/form-data.

The puzzle was created by Mihai Andronache on 28-Jan-18.

Estimate: 60 minutes, role: IMP.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

Images.java:46-48: Images should extend Iterable<Image>....

The puzzle 71-cf823270 from #71 has to be resolved:

* @todo #71:30min Images should extend Iterable<Image>. Refactor so that
* the user should not have to call this `iterate()` method and instead
* just iterate on 'docker.images()'.

The puzzle was created by George Aristy on 19-Apr-18.

Estimate: 30 minutes, role: DEV.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

Switch to Apache HTTPClient

Although not as object-oriented as jcabi-http, we need the apache client since it can support both Unix and TCP sockets + it offers clientside SSL encryption, which jcabi-http lacks.

RtContainer.java:13-15: This class represents a...

The puzzle 26-c1e6c3eb from #26 has to be resolved:

* @todo #26:30min This class represents a Container. It has to implement the
* API's methods which are acting upon a docker Container like inspect, logs,
* delete, start, stop etc).

The puzzle was created by amihaiemil on 13-Mar-18.

Estimate: 30 minutes, role: DEV.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

Docker.java:35-37: Add the first implementation of...

The puzzle 1-36a37d16 from #1 has to be resolved:

* @todo #1:30min Add the first implementation of Docker,
* RtDocker (Restful Docker) which should be the only public class
* inside the API, the entry point.

The puzzle was created by Mihai Andronache on 28-Jan-18.

Estimate: 30 minutes, role: IMP.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

SslHttpClient.java:48-50: Add path for certificates as a...

The puzzle 23-d9c71050 from #23 has to be resolved:

* @todo #23:30min Add path for certificates as a parameter and, with those
* certificates, register the http/https protocols, similar to how "unix" is
* registered in UnixHttpClient.

The puzzle was created by rultor on 26-Mar-18.

Estimate: 30 minutes, role: DEV.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

Docker.java:35-36: Continue implementing the rest of the...

The puzzle 3-571befa7 from #3 has to be resolved:

* @todo #3:30min Continue implementing the rest of the Docker API (except
* for Swarm, which is being handled in another ticket).

The puzzle was created by Mihai A on 28-Mar-18.

Estimate: 30 minutes, role: DEV.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

RtContainer.java:42-44: Keep implementing the rest of the...

The puzzle 57-4a6d0f49 from #57 has to be resolved:

* @todo #57:30min Keep implementing the rest of the Container operations.
* See the Docker API Docs for reference:
* https://docs.docker.com/engine/api/v1.35/#tag/Container

The puzzle was created by George Aristy on 03-Apr-18.

Estimate: 30 minutes, role: DEV.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

UnixSocket.java:119-121: We need an implementation of...

The puzzle 9-b2c9a2a2 from #9 has to be resolved:

* @todo #9:30min We need an implementation of Response (to be returned
* by method send(...)) which will animate the output received from the
* server.

The puzzle was created by Mihai Andronache on 30-Jan-18.

Estimate: 30 minutes, role: IMP.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

LocalDockerTestCase.java:39-42: Implement a unix socket...

The puzzle 39-a863f6f1 from #39 has to be resolved:

* @todo #39:1h Implement a unix socket server so we can also unit
* test the calls made with UnixHttpClient. The user should be able
* to specify what response it expected with each request to a certain
* path.

The puzzle was created by amihaiemil on 11-Mar-18.

Estimate: 60 minutes, role: DEV.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

UnixHttpClientTestCase.java:50-52: Implement a unix...

The puzzle 38-ae2c79c8 from #38 has to be resolved:

* @todo #38:30min Implement a unix socket server so that we can also test
* the calls made with UnixHttpClient. The user should be able to specify
* what response it expected with each request to a certain path.

The puzzle was created by George Aristy on 13-Mar-18.

Estimate: 30 minutes, role: DEV.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

ISE: Connection is still allocated

Apparently, using BasicHttpClientConnectionManager (e.g. inside UnixHttpClient) is not ok since it provides a single connection.

This throws the exception:

final Docker docker = new LocalDocker(
    new File("/var/run/docker.sock")
);
docker.ping();
docker.ping();

Becuase the connection is still allocated from the first call. We should either close the connection after each call somehow (not always wanted, of course), or maybe use PoolingClientConnectionManager?

Docker.java:33-34: Start implementing the other parts of...

The puzzle 1-606fe8a1 from #1 has to be resolved:

* @todo #1:30min Start implementing the other parts of the API,
* such as Swarm, Nodes, Services etc.

The puzzle was created by Mihai Andronache on 28-Jan-18.

Estimate: 30 minutes, role: IMP.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

Images.java:36-37: Continue implementing the rest of the...

The puzzle 71-994768b7 from #71 has to be resolved:

* @todo #71:30min Continue implementing the rest of the operations for the
* Images interface. See the docs referenced above for more details.

The puzzle was created by George Aristy on 19-Apr-18.

Estimate: 30 minutes, role: DEV.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

Swarm.java:40-43: Implement all of the Swarm operations....

The puzzle 3-e861473a from #3 has to be resolved:

* @todo #3:30min Implement all of the Swarm operations. See
* https://docs.docker.com/engine/api/v1.35/#tag/Swarm for reference and also
* the roadmap laid out here:
* https://github.com/amihaiemil/docker-java-api/issues/3#issuecomment-375821822

The puzzle was created by Mihai A on 28-Mar-18.

Estimate: 30 minutes, role: DEV.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

RemoteDockerTestCase.java:42-43: RemoteDocker: implement...

The puzzle 23-6815c522 from #23 has to be resolved:

* @todo #23:30min RemoteDocker: implement the rest of the test cases
* (including integration tests) for RemoteDocker.

The puzzle was created by rultor on 26-Mar-18.

Estimate: 30 minutes, role: DEV.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

RtContainers.java:44-47: We should handle unexpected...

The puzzle 26-85773a93 from #26 has to be resolved:

* @todo #26:30min We should handle unexpected responses somehow, responses
* that are not part of the happy flow (e.g. response 500 instead of 201
* on create). We could implement an exception which would parse the
* HttpResonse and provide a meaningful, well-formatted message.

The puzzle was created by amihaiemil on 13-Mar-18.

Estimate: 30 minutes, role: DEV.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

LocalDocker.java:41-43: Build an HttpClient which works...

The puzzle 27-7964fdea from #27 has to be resolved:

* @todo #27:30min Build an HttpClient which works over unix socket. The actual
* Socket can be created using the jnr-unixsocket library. Then, pass the
* created socket to a connection pool used by the HttpClientBuilder.

The puzzle was created by amihaiemil on 22-Feb-18.

Estimate: 30 minutes, role: DEV.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

UnixSocket.java:44-45: Write a test that will open a...

The puzzle 9-0048a495 from #9 has to be resolved:

* @todo #9:30min Write a test that will open a socket
* to which this request is sent.

The puzzle was created by Mihai Andronache on 30-Jan-18.

Estimate: 30 minutes, role: IMP.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

Swarm.java:40-43: Continue implementing all of the Swarm...

The puzzle 70-0fb5bff7 from #70 has to be resolved:

* @todo #70:30min Continue implementing all of the Swarm operations. See
* https://docs.docker.com/engine/api/v1.35/#tag/Swarm for reference and also
* the roadmap laid out here:
* https://github.com/amihaiemil/docker-java-api/issues/3#issuecomment-375821822

The puzzle was created by Mihai A on 04-Apr-18.

Estimate: 30 minutes, role: DEV.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

SocketResponse.java:40-41: Refine the body reading logic....

The puzzle 14-ad81abd3 from #14 has to be resolved:

* @todo #14:30min Refine the body reading logic. Have to take into account
* the Transfer-Encoding header and cover the empty body case.

The puzzle was created by Mihai Andronache on 04-Feb-18.

Estimate: 30 minutes, role: IMP.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

RtContainersTestCase.java:33-35: Write unit tests for all...

The puzzle 26-a8980bc9 from #26 has to be resolved:

* @todo #26:30min Write unit tests for all the methods of RtContainers.
* AssertRequest should be passed in the ctor, with the right expected
* response and predicates.

The puzzle was created by amihaiemil on 13-Mar-18.

Estimate: 30 minutes, role: DEV.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

UnixHttpClientITCase.java:49-51: This should be...

The puzzle 44-50450105 from #44 has to be resolved:

* @todo #44:30min This should be un-ignored and refactored after #41 is
* done. The unix socket server needs to be spooled up, and the url
* changed accordingly.

The puzzle was created by George Aristy on 15-Mar-18.

Estimate: 30 minutes, role: DEV.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

RtDocker.java:39-41: Reimplement ping() with the new...

The puzzle 32-472ade5c from #32 has to be resolved:

* @todo #32:30min Reimplement ping() with the new HttpClient architecture.
* It should create an HttpGet method and send it with the encapsulated
* client.

The puzzle was created by amihaiemil on 11-Mar-18.

Estimate: 30 minutes, role: DEV.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

RtContainersTestCase.java:47-48: Implement tests on the...

The puzzle 47-15f4a258 from #47 has to be resolved:

* @todo #47:30min Implement tests on the rest of the methods of RtContainers.
* Currently only testing the create(String name) method.

The puzzle was created by George Aristy on 15-Mar-18.

Estimate: 30 minutes, role: DEV.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

UnixServer.java:132-133: Make the response from this...

The puzzle 41-7d61f78a from #41 has to be resolved:

// @todo #41:30min Make the response from this buffer
// configurable and then implement some tests.

The puzzle was created by George Aristy on 04-Apr-18.

Estimate: 30 minutes, role: DEV.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

RtContainersTestCase.java:49-52: Impediment: once #45 is...

The puzzle 47-dbe85f1e from #47 has to be resolved:

* @todo #47:30min Impediment: once #45 is done, unignore the following tests
* and refactor accordingly if needed: ioErrorIfResponseIs400,
* ioErrorIfResponseIs404, ioErrorIfResponseIs406, ioErrorIfResponseIs409,
* ioErrorIfResponseIs500.

The puzzle was created by George Aristy on 15-Mar-18.

Estimate: 30 minutes, role: DEV.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

RtSwarm.java:42-44: The code for inspect() is essentially...

The puzzle 3-b7c517df from #3 has to be resolved:

* @todo #3:30min The code for inspect() is essentially copy-pasta from
* RtContainer.inspect(). Considering that there will be more "inspect"
* methods down the road, we should make this code reusable somehow.

The puzzle was created by Mihai A on 28-Mar-18.

Estimate: 30 minutes, role: DEV.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

LocalDocker and RemoteDocket

There will be 2 implementations of Docker:

  1. LocalDocker, working through a UnixSocket request, connected to the local docker daemon
  2. RemoteDocker, working thorugh an tcp request, connected to a remove docker daemon.

Docker.java:35-36: Continue implementing the rest of the...

The puzzle 71-99102c6f from #71 has to be resolved:

* @todo #71:30min Continue implementing the rest of the Docker API (except
* for Swarm and Images, which are being handled in another ticket).

The puzzle was created by George Aristy on 19-Apr-18.

Estimate: 30 minutes, role: DEV.

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

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.