Giter VIP home page Giter VIP logo

ali-oss's Introduction

ali-sdk

NPM version build status Test coverage Gittip David deps iojs version node version npm download

SDK include all aliyun, taobao, tmall, alibaba open serivces.

Goal of this module

Let global users can all use ali's services more easily.

Support Services

aliyun

name status description version usage origin api
OSS DONE Simple Store like S3 - OSS Usage OSS API
OTS TODO Table Store like HBase - OTS Usage OTS API
OCS ING Cache Service like Memcached - OCS Usage OCS protocol
ECS TODO Elastic Compute like EC2 - ECS Usage -
RDS ING Relational Database like MySQL - RDS Usage -
DRDS TODO Distribute Relational Database - DRDS Usage DRDS API
SLB TODO Server Load Balancer - SLB Usage -
CDN TODO Content Delivery Network v1.6 2014-10-01 CDN Usage CDN API
SLS TODO Simple Log Service - SLS Usage SLS API
MQS TODO Message Queue 2014-07-08 MQS Usage MQS-API
OpenSearch TODO Search Engine - OpenSearch Usage OpenSearch API
MTS TODO Multimedia Transcoding Service v1501 MTS Usage MTS API
ACE TODO Aliyun Cloud Engine - ACE Usage [ACE API]
ESS TODO Elastic Scaling - ESS Usage ESS API
OAS TODO Archive Service - OAS Usage OAS API
KVStore ING Key-Value Store like Redis - KVStore Usage KVStore API
ODPS TODO Data Processing like Hadoop - ODPS Usage ODPS API
ADS TODO Analytic Database, Realtime OLAP - ADS Usage [ADS API]

taobao

TBD

tmall

TBD

alibaba

TBD

License

MIT

ali-oss's People

Contributors

1019272778 avatar aloisklink avatar ari1c avatar beajer avatar binghaiwang avatar dead-horse avatar dependabot[bot] avatar duan007a avatar duncup avatar fengmk2 avatar fool2fish avatar greenkeeperio-bot avatar hengshanmwc avatar luozhang002 avatar mars-coder avatar microj avatar pedestrian93 avatar peterrao avatar popomore avatar qin avatar rdwh avatar richex-cn avatar rockuw avatar semantic-release-bot avatar shungang avatar snyk-bot avatar taotao7 avatar weiyie avatar yunzzy avatar zensh 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  avatar  avatar

ali-oss's Issues

我采用浏览器直接上传到oss, oss回调应用服务器有没有node.je 版本的。

https://help.aliyun.com/document_detail/oss/practice/pc_web_upload/js_php_callback.html?spm=5176.docoss/practice/post_object_callback.2.3.nN7GWD

<?php
// 1.获取OSS的签名header和公钥url header
$authorizationBase64 = "";
$pubKeyUrlBase64 = "";
/*
 * 注意:如果要使用HTTP_AUTHORIZATION头,你需要先在apache或者nginx中设置rewrite,以apache为例,修改
 * 配置文件/etc/httpd/conf/httpd.conf(以你的apache安装路径为准),在DirectoryIndex index.php这行下面增加以下两行
    RewriteEngine On
    RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization},last]
 * */
if (isset($_SERVER['HTTP_AUTHORIZATION']))
{
    $authorizationBase64 = $_SERVER['HTTP_AUTHORIZATION'];
}
if (isset($_SERVER['HTTP_X_OSS_PUB_KEY_URL']))
{
    $pubKeyUrlBase64 = $_SERVER['HTTP_X_OSS_PUB_KEY_URL'];
}

if ($authorizationBase64 == '' || $pubKeyUrlBase64 == '')
{
    header("http/1.1 403 Forbidden");
    exit();
}

// 2.获取OSS的签名
$authorization = base64_decode($authorizationBase64);

// 3.获取公钥
$pubKeyUrl = base64_decode($pubKeyUrlBase64);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $pubKeyUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
$pubKey = curl_exec($ch);
if ($pubKey == "")
{
    //header("http/1.1 403 Forbidden");
    exit();
}

// 4.获取回调body
$body = file_get_contents('php://input');

// 5.拼接待签名字符串
$authStr = '';
$path = $_SERVER['REQUEST_URI'];
$pos = strpos($path, '?');
if ($pos === false)
{
    $authStr = urldecode($path)."\n".$body;
}
else
{
    $authStr = urldecode(substr($path, 0, $pos)).substr($path, $pos, strlen($path) - $pos)."\n".$body;
}

// 6.验证签名
$ok = openssl_verify($authStr, $authorization, $pubKey, OPENSSL_ALGO_MD5);
if ($ok == 1)
{
    header("Content-Type: application/json");
    $data = array("Status"=>"Ok");
    echo json_encode($data);
}
else
{
    //header("http/1.1 403 Forbidden");
    exit();
}

?>


使用put方法时爆socket hang up

大概代码是这样的:
for (var i = arr.length - 1; i >= 0; i--) {
var tmp = arr[i];
co(function* () {
var obj = yield client.put('/operation/'+ tmp,fs.createReadStream(UPLOAD_IMG_PATH+'/'+tmp));
if( obj.res.statusCode == 200 ){
// do sth
}else{
//log sth
}
}).catch(function (err) {
// log err
});
}
通过一个循环把服务器上的文件(主要就是图片)上传,经常(10个会有4,5个)会有图片上传失败,看log的话,基本上都是:ResponseError: socket hang up (req "error"), PUT http://cycang-act.oss-cn-hangzhou.aliyuncs.com/operation/img/1462419785/1462419709777.png -1 (connected: true, keepalive socket: false, agent status: {"createSocketCount":21,"closeSocketCount":3,"errorSocketCount":0,"timeoutSocketCount":9,"requestCount":11,"freeSockets":{"cycang-act.oss-cn-hangzhou.aliyuncs.com:80::":9},"sockets":{"cycang-act.oss-cn-hangzhou.aliyuncs.com:80::":3},"requests":{}})
headers: {}
跟put还是putstream 并没有关系,似乎是一个样子的。

os: CentOS 6.5 64位
node:官网LTS
web框架:express 4.13.1

Not working in React Native.

In React Native, there is no node core modules, such as url, path and crypto, etc. I tried using rn-nodeify to make RN support those core modules, but it is still not working.

Before using rn-nodeify:
image

After using rn-nodeify:
image

head 方法设计不合理

  • 描述:head 方法应该永远 resolve ,如果找不到可以 resolve(null) ,但是不能 reject。
  • 原因:因为没有 exist 类方法,通常使用 head 来判断该文件是否存在。但 head 方法当 result 0 时直接走了 reject,实际上 result 0 也是“执行成功”。但比如插入失败(已存在或非法名字等)属于执行失败,此时应走 reject 。
  • 影响:判断结果只能通过 catch,从而导致脱离主逻辑次序,影响程序设计。
  • 解决:当找不到这个文件时,通过 resolve( null ) 返回。或增加 exist 方法。

如何在controller里面使用sdk

比如此router:

'use strict';
router.post('/fileupload', function(req, res) {
  ...
  result = yield store.put(localPath, remotePath);
  res.send(result);
});

但是会对yield报错:

SyntaxError: Unexpected strict mode reserved word

对generator还不是太熟,能否提供一些正确使用的sample codes?

ps:node版本是iojs-v3.2.0

执行例子的时候抛 Unexpected identifier

var oss = require('ali-oss');

// Create a Bucket store instance.
var store = oss({
  accessKeyId: 'xxxxxx', //xxx这里保密
  accessKeySecret: 'xxxx',
  bucket: 'xxxx',
  region: 'oss-cn-hangzhou'
});
// List buckets in this account.
var result = yield store.listBuckets({
  "max-keys": 10
});

console.log(result);

按照给出的例子,结果抛出以下错误

ewqwqe:node-oss lingjia$ node --harmony  index.js 
/Users/lingjia/workspace/node-oss/index.js:11
var result = yield store.listBuckets({
                   ^^^^^
SyntaxError: Unexpected identifier
    at exports.runInThisContext (vm.js:73:16)
    at Module._compile (module.js:443:25)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:501:10)
    at startup (node.js:129:16)
    at node.js:814:3

node版本v0.12.0
实在没搞明白,特来请教:)

操作多个 bucket 下的 objects

可能存在需要在一个 oss instance 上操作多个 bucket 下的 objects,感觉有两种思路:

// 增加 bucket 选项,每次传递
client.get('file', {
  bucket: 'bucket'
})

// 可以在支持传递 bucket 的基础上,增加一个 deletages,简化参数传递
var client = oss({
  bucket: ['bucketA', 'bucketB']
})
client.bucketA.get('file')
client.bucketB.get('file')

如何在浏览器中使用?

我通过browerify生成可用于浏览器的js文件,但是遇到下面的问题:

  1. 浏览器报failed to parse URL '//x.y.z/foo/bar',不知道为什么url中缺少了'http:'打头。通过手工修改js在url前面增加'http:'解决。
  2. 浏览器发出的请求header中不包含'Date',导致请求失败。

我觉得手工修改browserify生成的js文件肯定不是一个好办法,请问一下如果要在浏览器中使用ali-oss应该怎么做?

imgClient. 所有方法 返回的是 Buckets list

 co(function * () {
      var info = yield imgClient.getExif('DSC_0003.JPG');
      console.log(info)

    }).catch(function (err) {
      return cb(err);
    });
 params { name: 'DSC_0003.JPG@exif',
  method: 'GET',
  host: 'img2.hd3p.com',
  resource: '/DSC_0003.JPG@exif',
  timeout: undefined,
  authResource: '/hd3p/DSC_0003.JPG@exif',
  successStatuses: [ 200 ] }
{ res:
   { status: 200,
     statusCode: 200,
     headers:
      { server: 'AliyunOSS',
        date: 'Thu, 30 Jun 2016 08:21:05 GMT',
        'content-type': 'application/xml',
        'content-length': '3741',
        connection: 'keep-alive',
        'x-oss-request-id': '5774D671F9C7D38CD90C4BF3',
        'x-oss-server-time': '1' },
     size: 3741,
     aborted: false,
     rt: 34,
     keepAliveSocket: false,
     data: <Buffer 3c 3f 78 6d 6c 20 76 65 72 73 69 6f 6e 3d 22 31 2e 30 22 20 65 6e 63 6f 64 69 6e 67 3d 22 55 54 46 2d 38 22 3f 3e 0a 3c 4c 69 73 74 41 6c 6c 4d 79 42 ... >,
     requestUrls: [ 'http://oss-cn-hangzhou.aliyuncs.com/' ] },
  data:
   { Owner: { ID: '31147124', DisplayName:

使用webpack打包后,出现跨域问题

新版本的http-browserify会将withCredentials默认设置为true,除非手动设置为false。

if (typeof params.withCredentials === 'undefined') {
        params.withCredentials = true;
    }

    try { xhr.withCredentials = params.withCredentials }
    catch (e) {}

导致测试环境下出现
XMLHttpRequest cannot load http://***.***.aliyuncs.com/pk1474962037953_84718. Response to preflight request doesn't pass access control check: A wildcard '*' cannot be used in the 'Access-Control-Allow-Origin' header when the credentials flag is true. Origin 'http://127.0.0.1:3000' is therefore not allowed access. The credentials mode of an XMLHttpRequest is controlled by the withCredentials attribute.

OSS后台是如何控制的?目前好像默认返回Access-Control-Allow-Origin:*

求指导.

在multipartUpload时出现Error:_getFileSize requires Buffer/File/String.

在multipartUpload时出现Error:_getFileSize requires Buffer/File/String.

file文件为multer解析出的对象

{ fieldname: 'video',
  originalname: 'IMG_2211.MOV',
  encoding: '7bit',
  mimetype: 'video/quicktime',
  buffer: <Buffer 00 00 00 14 66 74 79 70 71 74 20 20 00 00 00 00 71 74 20 20 00 00 00 08 77 69 64 65 03 31 e8 87 6d 64 61 74 00 cc 40 07 00 fa 9b cc 3e bc 94 15 96 e5 ... >,
  size: 53616182 }

node版本v5.11.0

浏览器端调用multipartUpload接口,配置progress回调时报错,不配置进度回调则没问题

出现版本:v4.3.0
浏览器端调用multipartUpload接口,页面出现如下错误:
error TypeError: You may only yield a function, promise, generator, array, or object, but the following object was passed: "undefined"
页面调用方法如下:

ossUpload = new OSS.Wrapper({
                endpoint: 'https://xxxx',
                accessKeyId: 'xxxxxxxxx'
                accessKeySecret: 'xxxxxxxxxx',
                cname: true
            });
ossUpload.useBucket('xxx');
ossUpload.multipartUpload(file.name, file, {
                progress: function(p, cpt){
                    console.log(p);
                    console.log(cpt);
                }
            }).then(function(res){
                console.log('success', res);
            }).catch(function(error){
                console.log('error', error);
            });

具体错误打印如下:

0.3333333333333333
Object {file: File, name: "test.ppt", fileSize: 2641920, partSize: 1048576, uploadId: "2229B482342323414B533C3E1180F0814"…}
error TypeError: You may only yield a function, promise, generator, array, or object, but the following object was passed: "undefined"(…)

麻烦帮忙看一下这个问题是怎么出现的,要怎么解决,谢谢了
备注: 我如果采用ossUpload.multipartUpload(file.name, file)的形式调用的话,页面就不会报错,能够上传成功,但是这个就没有进度回调了

删除目录功能

deleteDir
有时候需要清理一个目录,一个一个删太麻烦

求不用generator版

能不能提供一个无generator,yield版本。

原因:

  • 比如meteor,这种nodejs只能保持在0.10.40的库,不能够很好的支持。
  • 比较老的项目,不能升级nodejs,但希望用到aliyun sdk。

建议给 public api 包一层 co.wrap

现在 对外暴露的 API 都是直接的 generator function, 只能配合着 co yield 使用。
包上一层 co.wrap 之后,api方法返回的是 Promise, 可以配合 yield / await / or直接then 使用。

ali-oss depend的platform js在client端报错?

我在一个Meteor的app里打算使用ali-oss从浏览器直接上传文件,程序会在我call import OSS from 'ali-oss';时报错说platform.js 734行的exec result为null。请问ali-oss支持浏览器端直接上传文件吗?这个会不会是platform.js在浏览器端执行的问题?谢了!

line 734: version = /[\d.]+/.exec(data.version)[0];

Uncaught TypeError: Cannot read property '0' of null platform.js:734
parse @ platform.js:734
(anonymous function) @ platform.js:1127
meteorInstall.node_modules.ali-oss.node_modules.platform.platform.js @ platform.js:1135
fileEvaluate @ install.js:141
require @ install.js:75
meteorInstall.node_modules.ali-oss.lib.client.js @ client.js:28
fileEvaluate @ install.js:141
require @ install.js:75
meteorInstall.client.components.task_detail.index.jsx @ index.jsx:4
fileEvaluate @ install.js:141
require @ install.js:75

Promise.all多文件上传的问题

我们项目的使用环境是IOS10,使用Promise.all并发上传时可能会出现文件校验失败,概率非常高。而且IOS9、PC均无这个问题;我猜测上传过程中出现了分片乱续而导致。

如何在multipartupload中自定义content disposition来重命名下载文件?

在client端我们将文件名以hash的形式存储在oss中以达到同一文件多版本的功能,可是希望在点击url下载时能以原文件名下载。

我尝试以html5的download attribute实现该功能,可是没有work,应该是因为有默认的content disposition以上传文件名设置在了header中。从文档中我看到put和putStream API都可以自定义Content-Disposition,但是multipartupload中并没有。

https://github.com/ali-sdk/ali-oss#multipartuploadname-file-options

    var client = new OSS.Wrapper({
      region: 'oss-cn-beijing',
      accessKeyId: *,
      accessKeySecret: *,
      bucket: '*'
    });

    let updatedFiles = files.map(file => {
      file.progress = 0;
      const id = Random.id();
      client.multipartUpload(id, file, {
        progress: function* (p) {
          file.progress = p;
        }
      }).then(function(res) {
        addFile(file.name, file.type, file.size, client.signatureUrl(id), task._id);
      });
      return file;
    });

设置的host和endpoint设置的终不同

var client = Cluster({
  cluster: [{
    host: 'host1',
    accessKeyId: 'id1',
    accessKeySecret: 'secret1'
  }, {
    host: 'host2',
    accessKeyId: 'id2',
    accessKeySecret: 'secret2'
  }],
  schedule: 'masterSlave', //default is `roundRobin`
});

这种初始化方法host指定并不起作用,永远都是hangzhou,该行为与3.X.X不同

百度编辑器图片自动上传到OSS上

当我改写百度编辑器使图片直接上传到OSS上时,ali-oss报错无法获得文件,是什么原因呢?因为百度编辑器里的input是写在iframe里面,所以无法获取文件吗

错误信息和官方 php 版本不一致

endpoint 配置错了的情况,上传文件时报的异常是:

SignatureDoesNotMatchError: The request signature we calculated does not match the signature you provided. Check your key and signing method.

改成 php 版本,报错信息是:

<b>Fatal error</b>: 
Uncaught exception 'OSS\Core\OssException' with message 'InvalidBucketName: 
The specified bucket is not valid. 
RequestId: 56725A457201E7539F50E2F1' in aliyun-oss-php-sdk-2.0.1/src/OSS/Result/Result.php:97

错误配置情况是 endpoint 前面多加了 bucket ,比如 endpoint: '${bucket}.xxx.aliyun-inc.com'

各种接口总报这个错误

[2016-05-05 17:08:35.164] [ERROR] oss-logger - TypeError: Path must be a string. Received undefined
    at assertPath (path.js:7:11)
    at Object.extname (path.js:1429:5)
    at Client.proto.createRequest (/Users/madoka/Workspace/github/nodeoss/app/node_modules/ali-oss/lib/client.js:239:65)
    at Client.proto.request (/Users/madoka/Workspace/github/nodeoss/app/node_modules/ali-oss/lib/client.js:296:24)
    at next (native)
    at onFulfilled (/Users/madoka/Workspace/github/nodeoss/app/node_modules/co/index.js:65:19)
    at /Users/madoka/Workspace/github/nodeoss/app/node_modules/co/index.js:54:5
    at co (/Users/madoka/Workspace/github/nodeoss/app/node_modules/co/index.js:50:10)
    at toPromise (/Users/madoka/Workspace/github/nodeoss/app/node_modules/co/index.js:118:63)
    at next (/Users/madoka/Workspace/github/nodeoss/app/node_modules/co/index.js:99:29)
TypeError: Path must be a string. Received undefined
    at assertPath (path.js:7:11)
    at Object.extname (path.js:1429:5)
    at Client.proto.createRequest (/Users/madoka/Workspace/github/nodeoss/app/node_modules/ali-oss/lib/client.js:239:65)
    at Client.proto.request (/Users/madoka/Workspace/github/nodeoss/app/node_modules/ali-oss/lib/client.js:296:24)
    at next (native)
    at onFulfilled (/Users/madoka/Workspace/github/nodeoss/app/node_modules/co/index.js:65:19)
    at /Users/madoka/Workspace/github/nodeoss/app/node_modules/co/index.js:54:5
    at co (/Users/madoka/Workspace/github/nodeoss/app/node_modules/co/index.js:50:10)
    at toPromise (/Users/madoka/Workspace/github/nodeoss/app/node_modules/co/index.js:118:63)
    at next (/Users/madoka/Workspace/github/nodeoss/app/node_modules/co/index.js:99:29)

给个思路这么调试

Put/Multipart请求中如果带有callback,没有正确处理返回的json

如果PUT/MultipartUpload时带有x-oss-callback头,则OSS会在PUT/CompleteMultipartUpload中返回JSON格式的数据,而不是XML,SDK没有处理这种情况,会导致parseXML出错。

yield client.multipartUpload(key, file, {
  progress: progress,
  headers: {
    'x-oss-callback': callback
  }
});

https://help.aliyun.com/document_detail/oss/api-reference/object/Callback.html

需要注意的是,如果类似CompleteMultipartUpload这样的请求,在返回请求本身body中存在内容(如XMl格式的信息),使用上传回调功能后会覆盖原有的body的内容如{"a":"b"},希望对此处做好判断处理。

The callback_example.js was unalbe to run with the last 'co'

I npm install the last package co, I found the callback_example.js was unalbe to run with the last co with the below error; at last, I found there is co package under the 'ali-oss'. would you like to upgrade the sample please?
------------------------------error-------------------------------
/Users/happysky/Documents/cupid/CuipdRest/node_modules/co/index.js:57
return Promise.reject(e);
^
ReferenceError: Promise is not defined
at onFulfilled (/Users/happysky/Documents/cupid/CuipdRest/node_modules/co/index.js:57:14)
at co (/Users/happysky/Documents/cupid/CuipdRest/node_modules/co/index.js:44:10)
at Object. (/Users/happysky/Documents/cupid/CuipdRest/callback_example.js:10:17)

Allow `options.streaming` to be set when `.get*()`

我在做一个 OSS 命令行工具,希望 get 文件的时候能够获取进度信息,目前 yield store.get() 要等到请求处理完才返回。看代码发现 urllib 支持 streaming,感觉能传这个参数就可以。

可否考虑支持?

any-promise introduce global leak in test

  1) test/object.test.js signatureUrl() should signature url get object ok:
     Error: global leak detected: @@any-promise/REGISTRATION
      at apply (node_modules/thunks/thunks.js:345:38)
      at tryRun (node_modules/thunks/thunks.js:224:19)
      at callback (node_modules/thunks/thunks.js:193:24)
      at runThunk (node_modules/thunks/thunks.js:214:54)
      at run (node_modules/thunks/thunks.js:249:30)
      at next (node_modules/thunks/thunks.js:259:18)
      at node_modules/thunks/thunks.js:327:9

修改资源的 URL

http://{endpoint}/{bucket}/{resource} 改成 http://{bucket}.{endpoint}/{resource},前面的方式之后将不再支持了。

multipart upload 时 response 解析错误

在使用 multipart upload 传文件时,同时使用了上传回调。在 multipart upload 中最后一个请求(Complete Multipart Upload)失败,错误信息为:
Error: Non-whitespace before first tag.(…)
我们回调服务器的返回是 json 格式,但是看起来 sdk 貌似当成 xml 解析了。
我看到 sdk 里面,_initMultipartUpload 方法里将 xmlResponse 置为 true,回调服务器的返回类型是必须为 xml 吗?

while (1) {
  switch (_context5.prev = _context5.next) {
    case 0:
      options = options || {};
      options.headers = options.headers || {};
      this._convertMetaToHeaders(options.meta, options.headers);

      options.subres = 'uploads';
      params = this._objectRequestParams('POST', name, options);

      params.mime = options.mime;
      params.xmlResponse = true;  
      params.successStatuses = [200];

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.