Git Product home page Git Product logo

cloudinary_php's Introduction

Tests license Packagist Packagist

Cloudinary PHP SDK

About

The Cloudinary PHP SDK allows you to quickly and easily integrate your application with Cloudinary. Effortlessly optimize, transform, upload and manage your cloud's assets.

Note

This Readme provides basic installation and usage information. For the complete documentation, see the PHP SDK Guide.

Table of Contents

Key Features

Version Support

SDK Version PHP 5.4 PHP 5.5 PHP 5.6 PHP 7.x PHP 8.x
2.x x x v v v
1.x v v v v x

Installation

composer require "cloudinary/cloudinary_php"

Usage

Migration

See the Cloudinary PHP SDK Migration guide for more information on migrating to this version of the PHP SDK.

The previous (1.x) version of the SDK is located here.

Setup

use Cloudinary\Cloudinary;

$cloudinary = new Cloudinary();

Transform and Optimize Assets

$cloudinary->image('sample.jpg')->resize(Resize::fill()->width(100)->height(150))->format(Format::auto());

Upload

$cloudinary->uploadApi->upload('my_image.jpg');

Security options

Contributions

  • Ensure tests run locally
  • Open a PR and ensure Travis tests pass

Get Help

If you run into an issue or have a question, you can either:

About Cloudinary

Cloudinary is a powerful media API for websites and mobile apps alike, Cloudinary enables developers to efficiently manage, transform, optimize, and deliver images and videos through multiple CDNs. Ultimately, viewers enjoy responsive and personalized visual-media experiences—irrespective of the viewing device.

Additional Resources

Licence

Released under the MIT license.

cloudinary_php's People

Contributors

abishekrsrikaanth avatar cloudinaraz avatar const-cloudinary avatar holtkamp avatar ionbazan avatar isleshocky77 avatar itaibenari avatar jackieros avatar konforti avatar leptians avatar lukitsbrian avatar m0she avatar marissa-masangcay avatar mikeys avatar nadavofi avatar nadavofir avatar nadavs avatar onassar avatar patrick-tolosa avatar peter279k avatar pixelcook avatar robinmalfait avatar ruudk avatar shedar avatar tallevami avatar tdutrion avatar thedigitalorchard avatar tocker avatar yakirp avatar yomesinc 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  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

cloudinary_php's Issues

Resize on folder-red image fails

got this url http://res.cloudinary.com/cvvv/image/upload/iphone.jpg , successfully resized . when its stored in folder
http://res.cloudinary.com/cvvv/image/upload/gadget/iphone.jpg

the API return url without 'gadget' folder
http://res.cloudinary.com/cvvv/image/upload/c_fill,h_50,w_50/iphone.jpg
instead of this correct url
http://res.cloudinary.com/cvvv/image/upload/c_fill,h_50,w_50/iphone.jpg

i use this method
cloudinary_url($img, array("width" => $w, "height" => $h, "crop" => "fill"));

Deleting all images

I want to delete all the images in cloudinary. Is there any script for it.

the samples/photoalbum/updata.php, javascript code maybe misleading, dynamically appended input[type=file] will not work

the javscript part of the code uses

$('.cloudinary-fileupload')
      .fileupload({ ...});

this is not accurate by checking out the code in cloudinary_js, it should be

$('.cloudinary-fileupload')
      .cloudinary_fileupload ({ ...});

which extended the options with headers: {"X-Requested-With": "XMLHttpRequest"}

the sample code only works because the cloudinary_js is calling .cloudinary_fileupload on every "input.cloudinary-fileupload[type=file]", however the dynamically appened input will not work as the sample shows.

Attempt to fetch transformation without cloudinaryId

I just found a bug in my own code.

It took me ages to realise why I was not getting a transformed image back from cloudinary using my function:
public static function getCloudinaryThumb($cloudinaryId, $size, $jpgToPng = true, $cropType = 'fill', $format = 'jpg') { $cloud = new CloudinaryCall(); $cloudinaryF = new CloudinaryField($cloudinaryId); if ($cropType == 'faceFill') { $params = array('width' => $size, 'height' => $size, 'crop' => 'fill', 'gravity' => 'face'); } else if ($cropType == 'fill') { $params = array('width' => $size, 'height' => $size, 'crop' => $cropType, 'gravity' => 'auto:no_faces'); } else { $params = array('width' => $size, 'height' => $size, 'crop' => $cropType); } $params['format']=$format; if ($jpgToPng) $params['format']='png'; return $cloudinaryF->url($params); }

This always seemed to work for me, but then I realised that the images which were giving problems did not have a cloudinaryId stored with them.

Surely it would make sense to include some sort of exception or error message return from within the Cloudinary PHP to report where a missing or invalid cloudinaryID is passed, rather than just returning a null string.

This would certainly make it easier to test the code being used to call cloudinary...

How to upload file from stream

Please I would like to know how to upload file from php input stream.
example
$data=file_get_contents("php://input");

Attempt to delete image (when no longer exists)

I have come across an odd issue.

I use ajax to pass the details of images as they are uploaded back to my server, and again use the same call if a user decides to delete an image.

The code for deleting sometimes times (it would appear) - basically no data is returned by the server.

Having investigated, the issue is around the commands:

			`$result = \Cloudinary\Uploader::destroy($cloudinaryId);`

This normally works fine and my code returns a flag to let the ajax know that the image has been removed from the database lookup and cloudinary.

However, if the cloudinaryId has already been destroyed once, then I get the issue of nothing being returned by the JSON call. There is nothing in the PHP error logs, so I assume the destroy call is simply stuck somewhere.

Is there a means of checking if the cloudinary id is valid before calling this routine (maybe) ?

Negative paramaters are no longer allowed

Negative crop parameters or other transformations are now cause breaking 400 errors. E.g. e_saturation:-30 will become e_saturation:sub30 when using the cloudinary_url() function after updating from 1.6 to 1.7 causing the resulting image to fail to load.

Option 10065 is not supported by this curl implementation - Google App Engine

google\appengine\runtime\CurlLiteOptionNotSupportedException: Option 10065 is not supported by this curl implementation.
at google\appengine\runtime\CurlLite->setOptionsArray (/base/data/home/runtimes/php/sdk/google/appengine/runtime/CurlLite.php:487)
at curl_setopt_array (/base/data/home/runtimes/php/sdk/google/appengine/runtime/CurlLiteStub.php:1325)
at curl_setopt (/base/data/home/runtimes/php/sdk/google/appengine/runtime/CurlLiteStub.php:1319)
at Cloudinary\ in /base/data/home/runtimes/php/sdk/google/appengine/runtime/CurlLite.php on line 487 (/base/data/home/apps/s~.../Clouder/cloudinary/Api.php:284)

Using curl lite on google app engine cause this trouble. To fix it you can change the cURL you want use with the php.ini file :

extension = 'curl.so'

non-static library in the future?

Hey guys. Whoever coded this and wrote the docs clearly invested a lot of time and energy making all calls static. To the novice PHP coder, this may seem to make the library easier to use but in fact it does not when using your lib in the context of a modern dependency injection container (Symfony, Laravel, Pimple, etc). Having all static calls gets in the way test driven development as well.

Instantiated class variables with dependency injection is a much better approach.

Please resist any urge to make function calls static!

Class 'Cloudinary\Api\GeneralError' not found in

I have copied the contents of src into my root folder/Cloudinary

Within that I have another folder named Api which contains GeneralError. However, we attempting to use $api->resources()

I receive the below:
Fatal error: Class 'Cloudinary\Api\GeneralError' not found in /srv/disk4/2728061/SITE-NAME-HERE on line 1344

Server returned unexpected status code - 502

Running \Cloudinary\Uploader::add_tag and after a 35 calls, it returned 502 from Cloudinary.

More specifically:

Fatal error: Uncaught exception 'Cloudinary\Error' with message 'Server returned unexpected status code - 502 - ' in /var/www/vhosts/staging/lib/cloudinary/cloudinary_php/src/Uploader.php:296 Stack trace:
#0 /var/www/vhosts/staging/lib/cloudinary/cloudinary_php/src/Uploader.php(225): Cloudinary\Uploader::call_api('tags', Array, Array) 
#1 /var/www/vhosts/staging/lib/cloudinary/cloudinary_php/src/Uploader.php(203): Cloudinary\Uploader::call_tags_api('gallery_159', 'add', Array, Array) 
#2 /var/www/vhosts/staging/www/assets/php/cron/gallery_tag_migration.php(57): Cloudinary\Uploader::add_tag('gallery_159', Array) 
#3 {main} thrown in /var/www/vhosts/staging/lib/cloudinary/cloudinary_php/src/Uploader.php on line 296

I noticed this was resolved in two other language libraries:

Strange code concatention instead of method call?

I'm refering to:

if ($this->verifyUpload && !$preloaded.is_valid()) {

In line 38:
if ($this->verifyUpload && !$preloaded.is_valid()) {

(!$preloaded in concatenated with function is_valid())

I think you meant:
if ($this->verifyUpload && !$preloaded->is_valid()) {

$preloaded method valid result is negated

I'm arguing it because such method call is used afterwards.

Deleting multiple IDs doesn't work

The API Class generates a wrong URL when deleting multiple Public IDs.

When I run the API Documentation Example:
$api = new \Cloudinary\Api(); $result = $api->delete_resources(array("image1", "image2"));
The Class generated the following URL:
https://api.cloudinary.com/v1_1/limango/resources/image/upload?public_ids%5B%5D=image1&public_ids%5B%5D=image2
Which is faulty according to the API and results in throwing a "General Error" Exception

Upload Broken on PHP 5.3.3

Hi, I hope this finds you well. We just signed up and we are trying to intergrate your SDK in our php 5.3.3. based application to upload images. Your documentation and composer.json file says this sdk works on php 5.3.3 but we are seeing lots of parse errors on features that are missing in php 5.3. The most common error we are seeing when trying to upload image by using

\Cloudinary\Uploader::upload($file);

is
PHP Parse error: syntax error, unexpected '[' in '/cloudinary/cloudinary_php/src/Cloudinary.php on line 281

Any help in this matter would be greatly appreciated.

Thanks

Missing start_offset = 0 in the url.

I want to add a image to the start of the video. So i have take a look in the documentation. See: http://cloudinary.com/documentation/video_manipulation_and_delivery#concatenate_videos_with_images
The documentation says:

start_offset (optional) set to 0 (so_0 in URLs) to concatenate the image at the beginning of the video instead of at the end.

So i try to add the start_offset = 0 but it was not in the url. So i have take a look in the code and i think i found the problem here: https://github.com/cloudinary/cloudinary_php/blob/master/src/Cloudinary.php#L440

You use the "empty"-function, per definition 0 is empty in PHP and so the function return a null.
See http://php.net/manual/en/function.empty.php#refsect1-function.empty-returnvalues

If i change the line to the following code, it works:

 if ($value === '' || $value === null) {

This are my Settings:

Array
(
    [0] => Array
        (
            [width] => 1024
            [height] => 768
            [crop] => fill
            [start_offset] => 4
            [duration] => 1.8
            [flags] => layer_apply
        )

    [1] => Array
        (
            [width] => 1024
            [height] => 768
            [overlay] => image:image_2043
            [flags] => splice
            [duration] => 3.6
        )

    [2] => Array
        (
            [start_offset] => 0
            [flags] => layer_apply
        )

    [3] => Array
        (
            [overlay] => video:audio_2585
            [duration] => 5.4
            [opacity] => 0
        )

)

and this is the wrong url, each linebreak is a replacment of the "/"

res.cloudinary.com
xxxxxxxx
video
upload
c_fill,du_1.8,fl_layer_apply,h_768,so_4,w_1024
du_3.6,fl_splice,h_768,l_image:image_2043,w_1024
fl_layer_apply
du_5.4,l_video:audio_2585,o_0
video_2593

and here with the fix:

res.cloudinary.com
xxxxxxxx
video
upload
c_fill,du_1.8,fl_layer_apply,h_768,so_4,w_1024
du_3.6,fl_splice,h_768,l_image:image_2043,w_1024
fl_layer_apply,so_0
du_5.4,l_video:audio_2585,o_0
video_2593

mention of wrappers for cloudinary

Hi,

I was wondering if you guys had any plan of mentioning wrapper of the cloudinary_php library. I created and am maintaining a small Laravel wrapper for Cloudinary that seems to be use by some people, so I was wondering if it would make sense to have some documentation mentioning those.
I am sure that I am not alone.

Sorry if this is not the right location to mention that.

Thanks!

Unable to delete all derived images from a single (or multiple) transformation(s)

There's inconsistency with code documented at Admin API and Cloudinary PHP library.

Function delete_resources accepts transformation and not transformations.

If I pass transformation, it will be sent with request as is, and in the end will be ignored by Cloudinary API, causing all the images passed to have all of their derived images to be removed.

Workaround was to rename transformation to transformations at line 119 in Api.php

return $this->call_api("delete", $uri, array_merge(array("public_ids"=>$public_ids), $this->only($options, array("keep_original", "invalidate", "transformations"))), $options);

But you must use string format for transformations parameter (meaning you have to only pass a single transformation), because array won't be transformed, since it's not transformation parameter it was expecting.

Anyhow I'd gladly make a patch but I can't find time to do so anytime soon. This is more for people who stumble on this issue.

Also, images are of type fetch, not upload in my case, if it means anything to maintainers.

I think this commit introduced the bug 0601bbe

PHP 7.1 support

Does cloudinary_php package officially support PHP 7.1?
I see it's not configured in travis CI config.

Server returned unexpected status code - 0 -

Since yesterday i am receiving following error while uploading a file to cloudinary via the uploader.
"Server returned unexpected status code - 0 -"

I've tried various things but i cannot find the issue. What could status code 0 mean?

public function handle($path, File $file)
    {
        $uploader = new Uploader();
        try {
            $uploadOptions = ['resource_type' => 'auto', 'public_id' => $path, 'unique_filename' => false];
            \Log::info('Trying to upload file to cloudinary with options: '.print_r($uploadOptions, true));
            \Log::info('File: ' . print_r($file, true));
            $resource = $uploader->upload($file->getRealPath(), $uploadOptions);
        } catch (\Exception $e) {
            \Log::error('Uploading file to Cloudinary not successfull', ['context' => $e->getMessage()]);
            return false;
        }
        return $resource['url'];
    }

Move PhotoAlbum sample from Mysql to Sqlite

Hi,

In order to make the PhotoAlbum sample easier to execute with no external dependencies, would it be possible to move away from Mysql that requires a server to a file based database such as Sqlite?

According to the documentation, Redbean supports Sqlite so it should not be difficult. It basically require to change the settings file to the following line:

R::setup('sqlite:' . __DIR__ . '/dbfile.db');

This will create the file if it does not exists or use it as database if it exists. The file should also be excluded from the repository (added in .gitignore).

Note: it is the opposite of the best practice to use a local file to save data into, and the file can therefore be stored in /tmp on Unix based system, but it may not work on Windows systems

There is no tag for the 1.0.7 version.

I am trying to migrate an old project to using composer.

The project contains a 1.0.7 version of the library.
Would it be possible to create a 1.0.7 tag with commit : 62c4da6

A simple matter of :
git tag -a 1.0.7 62c4da6
git push origin --tags

thanks!

Encode URL

The method cl_image_tag doesn't appear to return a fully encoded URL.

Take the following filename as an example:

Folder's/logo.jpg

In order to avoid any HTML errors I would have expected the following:

Folder%27s%2Flogo.jpg

However, the following is returned and as such breaks the img element:

Folder's/logo.jpg

SSL: certificate verification failed

I started getting this error, which shows up every time I attempt an image upload.

Error in sending request to server - SSL: certificate verification failed (result: 5)

This is 1.0.12 installed via composer. I verified that src/cacert.pem exists and reinstalled all packages via composer too.

If it helps troubleshooting - no errors if I comment out the certificate configuration and disable certificate validation in your Uploader.php file:

// curl_setopt($ch, CURLOPT_CAINFO,realpath(dirname(__FILE__)).DIRECTORY_SEPARATOR."cacert.pem");
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

Video transformations not working

I'm testing out cloudinary for a client project. I've worked with images and everything works fine, transformations and all are okay.

However, video transformations are not working. I have tried multiple times but applying any transformation to a video doesn't work.

Compare the two links below. The first one works, the other one with transformations doesn't work and also in my cloudinary dashboard settings, I didn't turn on secured transformations.

Sources

http://res.cloudinary.com/rovyl/video/upload/v1/contents/txgyzprsp9qewcdhsoma.mp4

http://res.cloudinary.com/rovyl/video/upload/c_pad,h_70,w_480/v1/contents/txgyzprsp9qewcdhsoma.mp4

Separate out Cake Plugin repo for submodule usage?

would much prefer to be able to use it that way if possible.

Also to add cloudinary libs into the plugin's Vendor dir as a sub-submodule, IMO would be preferable.

Note for ReadMe: should this line

Extract the cloudinary_php archive into vendors library

be

Extract the cloudinary_php archive into app/Vendors library

?

Haven't yet poked through the code to see, but seems like the latter? (but if you moved cloudinary_php archive into app/Plugin/CloudinaryCake/Vendors as a submodule you would need a different description anyway)

Hopefully this makes sense

Cloudinary SDK for php is not working in drupal

I installed cloudinary module in Myproject/sites/all/modules/.. It is showing "Please make sure the Cloudinary SDK library is installed in the libraries directory. The Cloudinary SDK for PHP library could not be found." in admin/config/media/cloudinary and also unable to edit API settings(cloud name, API key, API secret).

Missing resources_by_context method

Hi, in going through your API documentation, I noticed that resources_by_context() is missing from this PHP implementation, and I'm trying to use it for a site I'm building currently. Is there any way you could get this added soon? I figured that other people would find this helpful too. Thanks!

what mysql tables does the database require?

I am trying to test Photo Album with localhost using MAMP and phpMyAdmin but can't find documentation on the tables to be set up in a database configured for image uploads. Do you have a sql script that can be run once the table is created to build out the necessary tables? The documentation simply says:
R::setup('mysql:host=localhost;dbname=photo_album', 'my_db_user', 'my_db_password');
at https://github.com/cloudinary/cloudinary_php/tree/master/samples

Use CI

Could you enable the project both on travis-ci so the test suit is automatically triggered?

Let me know if and when it can be done and I'll do a PR adding the configuration then.

Parse error with PHP 5.5

PHP Parse error: syntax error, unexpected '.', expecting ',' or ';' in /var/jenkins/workspace/Feature-branch-API-MAIN-PHP-Testing/vendor/cloudinary/cloudinary_php/src/Cloudinary.php on line 15

The syntax below requires PHP 5.6:

+ const USER_AGENT = "CloudinaryPHP/" . Cloudinary::VERSION;

In your composer.json you say that minimum version of is PHP 5.3. You will either have to revert the line above or change your composer to:

    "php": ">=5.6.0",

Dynamic SEO suffix is now available with non-private CDNs

Currently when using a url_suffix parameter in the cloudinary_url() function, cloudinary_php throws an exception identified as "URL Suffix only supported in private CDN".

However, according to the official Cloudinary docs, url suffixes are now usable for all plans and doesn't require private CDNs anymore. Source

Hopefully this updated feature will be supported in future versions of this API.

upload_large is changing the extension, making uploads fail

When uploading raw files using upload_large, the SDK seems to be adding characters to the end of the extension, making the files be rjected because they don't match the allowed_formats value. On my windows machine, it adds .tmp, and on our Ubuntu servers it's adding 5 random characters. This difference might be due to the way the OSs handle temp files.

Here's my code:

<?php
use \Cloudinary\Uploader;

require("./src/Cloudinary.php");
require("./src/Uploader.php");

\Cloudinary::config(array(
    'cloud_name'    => 'XXX',
    'api_key'       => 'XXX',
    'api_secret'    => 'XXX'
));

$filename = "a test document.txt";
$options['return_error']        = true;
$options['resource_type']       = 'auto';
$options['public_id']           = $filename;
$options['allowed_formats']     = array('txt');

$uploadedFileData = Uploader::upload_large($filename, $options);

print_r($uploadedFileData);

This yields the result:

Array
(
    [error] => Array
        (
            [message] => Raw file format tmp not allowed
            [http_code] => 400
        )

)

If I remove allowed_formats then the upload works, but note the public_id, url, secure_url have .tmp on the end, and the original filename is wrong.

Array
(
    [public_id] => a test document.txt.tmp
    [version] => 1530109839
    [signature] => a4880c7ff86ab0fb5e9e3d6ba4396e42d207be01
    [resource_type] => raw
    [created_at] => 2018-06-27T14:30:39Z
    [tags] => Array
        (
        )

    [bytes] => 17
    [type] => upload
    [etag] => b3a809c63dee723a35b2be625a77a4e0
    [placeholder] =>
    [url] => http://res.cloudinary.com/crowdicity-eu-cld/raw/upload/v1530109839/a%20test%20document.txt.tmp
    [secure_url] => https://res.cloudinary.com/crowdicity-eu-cld/raw/upload/v1530109839/a%20test%20document.txt.tmp
    [overwritten] => 1
    [original_filename] => cld246C
)

Namespacing issue for helper functions

Hi I'm trying to call cl_image_upload_tag() in a Symfony2 controller. Because this is a helper function and not part of the Cloudinary or Uploader classes, I can't seem to call the function in a civilized php way.

$cloud_form = \cl_image_upload_tag('image_id', array("callback" => $this->get("router")->generate("cloudinary_callback")));

In Sf2 I need to handle the logic in a controller and then echo out the result in Twig: {{ cloud_form|raw }}

People with more ability than me say that we need to improve the composer instructions for the Cloudinary code set.

Use curl_file_create instead of @

I was receiving a curl error when running with latest php version (I believe 5.5.x)

I fixed the error in my fork via these 2 commits specifically:

electblake@1bf619c
electblake@0ad2a66

Let me know if you'd like me to branch out and send a pull request so fix can be merged into main repo.

Since I've stopped using cloudinary service, I may not be able to keep my fork updated.

Class Cloudinary\Akamai defined twice

@tocker heads-up, after updating from 1.5.0 => 1.6.0 a warning was generated:

 - Updating cloudinary/cloudinary_php (1.5.0 => 1.6.0) 
 - Generating autoload files

Warning: Ambiguous class resolution, "Cloudinary\Akamai" was found in both "/Users/user/workspace/project/vendor/cloudinary/cloudinary_php/src/Akamai.php" and "/Users/user/workspace/project/vendor/cloudinary/cloudinary_php/src/Cloudinary/Akamai.php", the first will be used.

So Cloudinary\Akamai is defined twice in the same project... Is this on purpose?

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.