Coder Social home page Coder Social logo

hydrogen-js-sdk's Introduction

bmob-js-sdk-es6

SDK介绍

本SDK基于es6开发,致力打造基于前端混合开发需求,支持微信小程序、抖音小程序、H5、快应用、游戏Cocos、混合App等平台, 整个SDK,就dist目录下Bmob.*.js 这个文件即可使用全部功能,请使用最新版本。

安装使用

在小程序中使用 【微信小程序】【QQ小程序】【支付宝小程序】【头条小程序】【抖音小程序】

下载dist目录中的最新版本Bmob.*.js 然后在项目中引入

const Bmob = require('../dist/Bmob-1.0.1.min.js');

在WEB端和Node中使用

npm包管理下载

npm install hydrogen-js-sdk

yarn add hydrogen-js-sdk

推荐使用 yarn 下载速度快

在Node中使用

// 引入
import Bmob from 'hydrogen-js-sdk'

// 初始化
Bmob.initialize("你的Secret Key", "你的API 安全码");

在Vue中使用

import Vue from 'vue'
import App from './App.vue'

// 引入
import Bmob from 'hydrogen-js-sdk'

Vue.config.productionTip = false

// 初始化
Bmob.initialize("你的Secret Key", "你的API 安全码");

new Vue({
  render: h => h(App),
}).$mount('#app')

在React中使用

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';

// 引入
import Bmob from 'hydrogen-js-sdk'

// 初始化
Bmob.initialize("你的Secret Key", "你的API 安全码");

ReactDOM.render(<App />, document.getElementById('root'));

serviceWorker.unregister();

在HTML中使用

下载dist目录中的最新版本Bmob.*.js 然后在html中引入

<script src="Bmob-2.2.0.min.js"></script>
<script>
// 初始化
Bmob.initialize("你的Secret Key", "你的API 安全码");
</script>

初始化

为了您的前端应用安全,SDK 2.0以上版本启用新的初始化key,新SDK请使用以下方式初始化,其他方法未变动

Bmob.initialize("你的Secret Key", "你的API 安全码");

API 安全码: 在应用功能设置,安全验证,API安全码自己设置

SDK版本 2.0.0 以下保留之前的初始化方法

Bmob.initialize("你的Application ID", "你的REST API Key");

具体详细开发可参照下面的开发文档

开发文档

https://bmob.github.io/hydrogen-js-sdk/#/?id=登陆

版本 v2.5.30

  • 增加支持微信文字检测违规2.0

版本 v2.500

  • 支持H5 AI流模式
  • 支持微信小程序 AI流模式

版本 v2.4.12

  • 支持抖音小程序
  • 优化所有小程序登录流程

版本 v2.4.1

  • 更新支持Vue3
  • 优化如果使用错误key初始化,增加提示语句

版本 v2.3.1

  • 更新微信官方客户端不保存sessionKey
  • 更新解密手机号sessionKey传入加密值

版本 v2.3.0

  • 增加mediaCheckAsync媒体检查方法
  • 支持文件上传名称用户自定义

版本 v2.2.51

  • 增加Bmob.domain() 自定义域名
  • 修复不是.com域名删除文件失败

版本 v2.2.5

Note:

  • 修复nodejs环境提示签名错误

版本 v2.2.4

Note:

  • 修复md5大小写压缩错误

版本 v2.2.3

Note:

  • 微信小程序 imgSecCheck 支持检查违规并上传返回url
  • 增加SDK数据安全

版本 v2.2.2

Note:

  • 微信小程序增加校验一张图片是否含有违法违规内容(支持批量效验)

版本 v2.2.1

Note:

  • 修复sdk在node环境下的一些问题

版本 v2.2.0

Note:

  • 全面支持QQ小程序,小程序代码复用,替换最新bmob.js即可

版本 v2.1.0

Note:

  • 修复初始变动导致SDK文件上传失败
  • 增加获取openid新方法 Bmob.User.openId()
  • webSocket 请求改为 let BmobSocketIo =new Bmob.Socket('appkey') 初始化

版本 v2.0.0

Note:

  • SDK初始化变动,推出全新加密机制
  • 增加debug调试模式 bmob.debug(tue) 可以打印请求相关信息
  • 修复config文件在小程序下引入异常问题

版本 v1.7.1

Note:

  • 编译后的的语法修改为es5
  • bmob.min.*.js文件增加版本信息、更新日期

版本 v1.7.0

Note:

  • 支持今日头条小程序一键登陆
  • 支持今日头条小程序access_token 获取
  • 支持今日头条小程序文件上传等

版本 v1.6.7

Note:

  • 修复nodejs XMLHttpRequest is not defined的问题

版本 v1.6.6

Note:

  • 增加今日头条小程序支持
  • 修复nodejs 缺少依赖包axios需要手动引入一次问题

版本 v1.6.5

Note:

  • 修复分组查询替换排序结果

版本 v1.6.4

Note:

  • 增加小视频视频截图功能
  • 增加解密小程序数据接口
  • 调用云函数增加支持Bmob.run方法

版本 v1.6.3

Note:

  • 修复快应用注册函数在特殊情况下,参数错乱问题
  • 修复小程序文件上传路径返回字符串类型
  • 增加登陆退出功能

版本 v1.6.2

Note:

  • 修复relation类型不能排序
  • relation增加默认返回记录数
  • 统计函数count,支持统计同时返回记录

版本 v1.6.1

Note:

  • 修复relation只能关联用户表bug

版本 v1.6.0

Note:

  • 修复上一个版本,增加分组查询导致普通查询失效bug
  • 增加子查询使用文档

版本 v1.5.2

Note:

  • 优化网络请求,去掉多余的为空参数
  • 增加统计相关的查询功能

版本 v1.5.1

Note:

  • 修复or查询失败的问题

版本 v1.5.0

Note:

  • auth 登陆授权函数,修改提示更人性化

  • 修复openid多出双引号问题

版本 v1.4.4

Note:

  • Cocos Creator 开发工具在原有支持浏览器调试模式,增加模拟器模式
  • 增加小程序登陆auth 函数登陆后,第二次调用,返回登陆信息
  • 修复修改表数据第二种方式会自动增加一个id字段bug

版本 v1.4.3

Note:

  • 增加小程序检测违规内容方法Bmob.checkMsg
  • 增加查询=== 支持

版本 v1.4.2

Note:

  • 修复所有语法支持eslint
  • 修复查询== bug

版本 v1.4.1

Note:

  • 增加地理位置相关操作

版本 v1.4.0

Note:

  • 增加超级权限MasterKey功能
  • 增加后台数据库更新本地缓存也会自动更新函数Bmob.User.updateStorage
  • 增加更新用户表、本地缓存会自动更新功能
  • 优化请求网络请求对象

版本 v1.3.1

Note:

  • 优化File对象上传文件必须登录
  • 修复短信验证未传入手机号问题
  • 更新文档获取用户列表描述问题

版本 v1.3.0

Note:

  • 增加Relation一对多表关联
  • 增加Relation类型关联查询
  • 优化Pointer一对一表关联
  • 修复include查询一对一关联表的bug
  • 修复条件查询时,count方法查询返回所有数据

版本 v1.2.0

Note:

  • 增加华为快应用quick支持

版本 v1.1.1

Note:

  • 修复set方法类型判断错误
  • 增加文件上传file类型关联

版本 v1.1.0

Note:

  • 增加服务端nodejs支持

版本 v1.0.2

Note:

  • 修复set 类型只能传字符串类型
  • 修复H5文件上传返回只返回连接
  • 增加兼容小程序游戏SDK

版本 v1.0.1

Note:

  • 增加containedIn方法,查询某一字段值在某一集合中的记录
  • 增加notContainedIn方法来查询在集合外的目标对象
  • 增加exists方法,查询含有某一特定属性的对象
  • 增加doesNotExist方法,查询没有这一特定属性的对象

运行

//安装依赖
npm install

//项目运行
npm run dev

目录结构

|-- index.html
|-- lib                   源码库文件
|   |-- app.js            导出文件
|   |-- axiosRequest.js   web请求库
|   |-- bmob.js           初始化文件
|   |-- common.js         短请求接口
|   |-- config.dev.js     测试配置文件
|   |-- config.js         配置文件
|   |-- dataType.js       类型判断
|   |-- error.js          错误警告
|   |-- file.js           文件操作
|   |-- pay.js            小程序支付
|   |-- query.js          数据操作
|   |-- request.js        请求判断
|   |-- sms.js            短信
|   |-- socket.js         实时通讯
|   |-- storage.js        缓存
|   |-- user.js           用户
|   |-- utils.js          公用函数
|   |-- webstorage.js     web缓存
|   |-- wxRequest.js      小程序请求库
|   |-- wxstorage.js      小程序缓存
|-- main.js               web调试入口

功能列表

公共方法

  • 获取一行数据
  • 修改一行数据
  • 删除一行数据
  • 增加一行数据
  • 删除字段的值
  • 字段原子计数器
  • 条件查询
  • 复杂查询
  • 数组操作
  • 查询数据列表
  • 地理位置查询
  • 注册
  • 登录
  • 手机验证码登陆
  • 验证Email
  • 修改密码
  • 查询用户
  • 短信验证码、发送、验证
  • 文件(图片)上传
  • 文件删除 *
  • APP推送 *
  • 云函数调用
  • 数据关联Pointer查询、增加
  • 批量数据操作 增、删、改
  • 主人推送消息
  • 获取服务器时间

小程序方法

  • 生成小程序二维码
  • 获取access_token
  • 一键登录接口
  • 更新用户信息(更新缓存)
  • 小程序支付
  • 小程序模板消息
  • 支付退款接口

公用网络请求库

  • web

  • nodejs

  • 小程序

  • 快应用

公用本地缓存处理

  • web

  • nodejs(无)

  • 小程序

  • 快应用

增强功能

  • Relation
  • ACL

开发规范


  1. 请求链接路由放到config文件PARAMETERS变量
  2. 变量函数命令统一用英文,尽量优先参考Bmob目前jssdk 相关名称。
  3. 开发一个函数功能,记得补上文档,具体请看文档模板 doc.md
  4. 操作数据库的函数语法在群里与队友商量确定

相关知识点


  1. 【链接】多对多关系BmobRelation学习笔记(js,微信小程https://www.zybuluo.com/z77/note/1114404
  2. API 接口文档 http://doc.bmobapp.com/data/restful/index.html

感谢


  1. yanghuanrong https://github.com/yanghuanrong
  2. youngjuning https://github.com/youngjuning
  3. magic007 https://github.com/magic007
  4. BoolTrue https://github.com/BoolTrue

在此欢迎大家贡献代码

hydrogen-js-sdk's People

Contributors

booltrue avatar heshaoyue avatar longer96 avatar magic007 avatar wqaurora avatar yanghuanrong avatar yklinga 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

hydrogen-js-sdk's Issues

分组统计结果排序不起作用

query.statTo("sum", "point");
query.statTo("groupby", "user");
query.statTo("order", "-_sumPoint");
无论如何设置,查询结果都不能排序

can't find variable:localStorage

我是用react-native 开发App,安装bomb,npm install hydrogen-js-sdk,安装完成之后引入bomb,出现can't find variable:localStorage

查询所有

查询所有返回的res,要怎么遍历啊
for (var i = 0; i < res.length; i++) {
let object = res[i];
}
这样写报错

小程序最新js-sdk不能在数据库创建数据

console.log(Bmob)
var Event = Bmob.Object.extend("event");
let event = new Event();

小程序IDE报错,但是打印出来的Bmob是有的,但是没有Object,是不是修改了创建数据的方法,但是没有修改文档?

还有个问题就是最新的js-sdk包含了websocket吗,不需要引入websocket 的js文件了吗,还是按文档操作?
Cannot read property 'extend' of undefined;

约束Pointer值查询,不支持containedIn方法

文档中约束查询如下:

const pointer = Bmob.Pointer('_User')
const poiID = pointer.set('QdXD888B')
const query = Bmob.Query('test')
query.equalTo("userId","==", poiID);

但是不支持containedIn方法

const pointer1 = Bmob.Pointer('_User')
const poiID1 = pointer1.set('QdXD888B')
const pointer2 = Bmob.Pointer('_User')
const poiID2 = pointer2.set('QdXD888B')
query.containedIn("playerName", ["poiID1", "poiID2",]);

用复杂查询 的话,请问如何加入或 条件,如:username如何取'hello'或'high'
query.statTo("where", '{"own":{"$inQuery":{"where":{"username":"Hello"},"className":"_User"}}}');

最后一个问题:查询条件使用了statTo后,使用query.include('own') 无法返回pointer对应的结果

query.statTo("where", '{"own":{"$inQuery":{"where":{"username":"Hello"},"className":"_User"}}}');
query.include('own')

类型文件似乎存在一个错误

export interface BmobPromise<T = any> extends Promise<BmobPromise> {
}

似乎应该为

export interface BmobPromise<T = any> extends Promise {
}

为什么我引入任何一个版本的SDK都不行啊?

提示“”Cannot read property 'extend' of undefined;at "pages/index/index" page lifeCycleMethod onLoad function
TypeError: Cannot read property 'extend' of undefined“,但是我从百度上下载了一个源码版的bmob.js就可以用,什么情况?你这个SDK是可以供小程序使用嘛。

vue-cli3 中使用 code: 10007 error: "AppKey is empty"

按照官网教程引入
// 安装
npm install hydrogen-js-sdk

// 打开 main.js
import Bmob from "hydrogen-js-sdk";

// 初始化 SDK版本 2.0.0 以下保留之前的初始化方法
Bmob.initialize("你的Application ID", "你的REST API Key");

但是调用的时候一直提示这个错误。

说一下发现的问题

1.目前的很多方法都很局限性
比如:destroyAll,saveAll 等批量的方法都只能在find回调里面使用。保存和更新的save也只能在get方法之后使用。
2.Pointer类型的支持相比老版本的要差很多
老版本的pointer很好理解 要关联对象只需set进去一个带有objectId的对象就能直接关联起来。而现在只能重新构建一个_type=Pointer的对象,并且把objectId设置好才行 这样有时候再做保存更新的时候会多出来一步操作。
3.上传文件返回的对象没有_type属性
同第二点没有type属性,在做文件关联的时候还是要重新构造一下__type 。 像这样:
nessImgTemp.img.__type = 'File';
4.对于array的支持也不太好
更新,删除都很麻烦,必须先get才行,最好是获取到objectId就可以直接进行更新,修改,删除等操作

nodejs里登录成功,获取当前用户还是空的啊

Bmob.User.login(name, password).then(response => {
    console.log("登录成功"+response);
    //获取用户当前信息
    let current = Bmob.User.current();
    if(current == null) {
      console.log("用户数据是空的");
    }
    
    req.session.user = current;
    res.redirect('/');
  }).catch(err => {
    res.render('login', {message: err.error});
 });

云函数

您好,我最近写小程序调用bmob云函数时,小程序报错:Cannot read property 'run' of undefined。
小程序中调用的函数如下:test:function(){
console.log(Bmob)
Bmob.Cloud.run('test', {}, {
success: function (result) {
alert(result);
},
error: function (error) {
}
})
我检查错误的时候,用控制台打印出Bmob,发现并没有cloud这一属性。请问是什么问题呢?

在NodeJS中使用时提示:XMLHttpRequest is not defined

ReferenceError: XMLHttpRequest is not defined
at D:\NodeJS\BookSpider\node_modules\hydrogen-js-sdk\src\lib\axios.min.js:9:2483
at new Promise ()
at e.exports (D:\NodeJS\BookSpider\node_modules\hydrogen-js-sdk\src\lib\axios.min.js:9:2384)
at e.exports (D:\NodeJS\BookSpider\node_modules\hydrogen-js-sdk\src\lib\axios.min.js:9:8385)
at process._tickCallback (internal/process/next_tick.js:68:7)
at Function.Module.runMain (internal/modules/cjs/loader.js:744:11)
at startup (internal/bootstrap/node.js:285:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:739:3)

如何查询(a=1 and b=1) or c=2 的结果

文档里 或查询,是这样的:
const query = Bmob.Query("tableName");
const query1 = query.equalTo("isLike", '>', 150);
const query2 = query.equalTo("isLike", '<', 150);

query.or(query1, query2);
query.find().then(res => {
// 返回 isLike > 150 or isLike < 5 的值
console.log(res)
});
如何给query1 添加一个and条件

新版小程序sdk Relation 反向查询如何使用?

旧版sdk:反向关联查询,查询Post 表中 likes 列中有我的 Post(获得我点赞了的帖子)

var currentUser = Bmob.User.current();
    var query = Bmob.Relation.reverseQuery('Post', 'likes', currentUser);
    query.find({
        success: function(results) {
            console.log('查询成功 >', results);
        },
        error: function(error) {
            console.log("查询失败: " + error.code + " " + error.message);
        }
    });

新版的如何使用啊?文档没有细说 谢谢

bmob.js里面的初始化提示判断条件

文件里面的提示判断条件好像有问题,导致总是提示初始化失败。

Bmob.initialize = (secretKey, securityCode, masterKey) => {
  if (securityCode > 6) { //这里的判断条件好像应该是securityCode.length > 6
    console.log(`Bmob初始化失败,2.0版本SDK请使用API安全码初始化,文档地址:https://bmob.github.io/hydrogen-js-sdk/#/?id=初始化`)
  }
  Bmob._config.secretKey = secretKey
  Bmob._config.securityCode = securityCode
  Bmob._config.applicationMasterKey = masterKey
}

修改一行记录 -方法一 ,会造成额外添加一个字段“id”

修改一行记录
简介:
通过主键获取一行记录
方式一:
const query = Bmob.Query('tableName');
query.set('id', 'objectId') //需要修改的objectId
query.set('nickName', 'Bmob后端云')
query.save().then(res => {
console.log(res)
}).catch(err => {
console.log(err)
})


上述方法执行后可以成功修改记录,但是会额外插入一个字段“id”

请求头没有加密

X-Bmob-Application-Id:
X-Bmob-REST-API-Key:

如果不加密的话,很容易被抓包把

query.count(n) 返回结果不对

使用query.count(n) 进行查询时,通过网络面板可以看到返回了 { count: 100, results: [...]} 等数据,但是query.count(n).then(res => console.log(res)) 打印结果只有 100,即只打印了count值,没有完整的数据。

验证码登录问题

发送验证码的时候是6位数字,在通过验证码登录的时候,进行验证码验证的时候,要求用Number类型,js在转number类型的时候 前面的0会被清掉(比如: ‘’023231‘) 转为number类型是23231,这样验证码会不通过,导致验证失败。

relation查询问题

在进行relation查询时,代码如下
const query = Bmob.Query('_User')
query.field('f', wx.getStorageSync('userid'))
query.relation('infoPic').then(res => {
console.log(res)
})
会出现404notfound
会发现此时查询的链接也
https://api.bmobcloud.com/1/infoPic?where=%7B%22%24relatedTo%22%3A%7B%22object%22%3A%7B%22__type%22%3A%22Pointer%22%2C%22className%22%3A%22_User%22%2C%22objectId%22%3A%22ce4c655f0f%22%7D%2C%22key%22%3A%22f%22%7D%7D

而正常情况下,查询链接应该为
https://api.bmobcloud.com/1/classes/infoPic? 开头

故而发现
query.relation('classes/infoPic').then(res => {
此处应填写'classes/infoPic'才能正常查询relation

[Bug]: Uncaught ReferenceError: Bomb is not defined

I install with npm: npm install --save hydrogen-js-sdk

and I try to log the variable Bomb as document:

import Bmob from 'hydrogen-js-sdk'
console.log(Bomb)

However, it throws and error, message is "Uncaught ReferenceError: Bomb is not defined"

Show my screenshot:

image

Should I try to install it with special version?

Pointer类型,File类型的字段根本不能保存

const own = { "__type": "Pointer", "className": "Game", "objectId": "DdUOIIIW" } const query = Bmob.Query('tableName'); query.get('objectId').then(res => { console.log(res) res.set('own',own) res.save() }).catch(err => { console.log(err) })
上面的代码是sdk文档里面的代码,我测试了 根本不能运行 直接 415错误
看了看代码
const set = (key, val) => { if (!isString(key) || !isString(val)) { throw new error(415) } oneData[key] = val }
我去,set方法的key,和val 只能是string类型 这还保存个毛线啊
你知道老版本的sdk保存多方便吗? 直接set进去一个对象 就能直接保存了啊 根本不需要构造什么pointer对象
而且我还有的字段是file类型,这个以前直接new File对象就oK了,然后直接save的时候帮你上传,现在如何上传根本不清楚 怎么弄都是报错
key和val 都是string 我也不知道如何进行下一步了 有时间帮你们改改sdk吧....
新版本的sdk还是很支持的,希望能优化的更好 至少老版本的功能不能丢啊

百度小程序支持

能否支持百度呢?拷贝引用bmob.xxx.min.js 好像不行哦
“Cannot read property 'createTextNode' of undefined” ,应该是没有document

JS 短信登录 API 输入参数校验问题

短信登录API signOrLoginByMobilePhone 函数要求输入的短信验证码 smsCode 类型必须为 Number,如果收到的6位短信验证码以0或00开头,那么传入的Number就会变成自动变成5位或4位,这时接口会返回验证码错误。

实际测试时,遇到这种情况,控制台获取的前端向服务器发起的GET请求中 smsCode参数确实会变成不足6位,导致验证码错误。

同样的情况下,如果我把sdk中对 smsCode 的类型校验修改为 String并传入完整的6位字符串类型短信验证码,则不会报错,可以正常登陆。

1.4.2构建缺少依赖包axios

是的,1.4.2 后面提交了一次,包含了axios包,你目前可以看到里面有。 npm install hydrogen-js-sdk 目前axios包还没更新上去

新版小程序下查询Relation问题

新版微信小程序下:Relation查询时,field方法限定条件后无法返回查询结果:
let current = wx.Bmob.User.current();
const query = wx.Bmob.Query("oder");
query.field("dcUsers", current.objectId);//这里在oder数据表里有dcUsers字段,为Relation类型,里面有相应的objectId
query.relation("_User").then(res => {
console.log(res);//返回{count: 0, results: Array(0)},我想返回的结果时dcUsers里含有查询objectId的所有数据
})
请问是哪里出了问题?

文件上传一个疑问

如果我已知File了,而不是绝对路径,我该怎么上传文件,我看文档上只有根据path来上传的
Bmob.File(name, path).save()

文件上传无法自定义文件名

Bmob.min.js中的{name:t,route:f._config.parameters.FILES+"/"+f._config.secretKey+"."+r,data:n}会导致上传文件名固定为secretKey+拓展名,修改为{name:t,route:f._config.parameters.FILES+"/"+t,data:n}之后可以在调用dataURLtoFile()时自定义文件名。

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.