2025 独立开发者训练营:AI Agent!查看介绍 / 立即报名 →

博客

GraphQL:查询与修改(Queries and Mutations)

介绍怎么查询 GraphQL 服务。

字段:Fields

最简单的查询就是告诉 Graphql 你想要的字段是什么:

{
  hero {
    name
  }
}

查询结果:

{
  "data": {
    "hero": {
      "name": "R2-D2"
    }
  }
}

注意看查询与结果的数据形状,它们是一致的。这是 GraphQL 最重要的一个特点,你会获取到期待的数据,服务器确切地知道客户端想要的字段。

name 字段的类型是 String,上面例子里,name 的值是 R2-D2,他是电影 Star Wars 里的人物。

上面这个例子,你要的是人物的 name,返回的是个字段串类型的数据。字段的值也可以是对象,你可以选择对象里的某些字段。GraphQL 的查询可以找到相关的对象还有它们的字段,这样客户端只需要用一个请求就可以提取大量相关的数据。如果是 REST,可能需要来回跑几次才能得到需要的数据。

GraphQL:接口查询语言介绍

GraphQL 是一种接口查询语言,还是一个服务端的用来执行查询的 runtime ,根据你的数据自己定义一个 type system 。GraphQL 不跟任何数据库或者任何存储引擎绑定在一起,它可以让你使用自己已有的代码和数据。

创建一些类型,在类型上添加字段,为每个类型上的每个字段提供一些返回数据用的方法。比如有个 GraphQL 服务可以告诉你当前登录的用户(me),可以给你返回用户的 id 还有用户名,这个 GraphQL 大概像这样:

type Query {
  me: User
}

type User {
  id: ID
  name: String
}

字段的方法:

function Query_me(request) {
  return request.auth.user
}

function User_name(user) {
  return user.getName()
}

GraphQL 服务运行以后,一般给你提供一个 URL,你可以在上面验证还有执行查询。服务收到查询以后,它会先确定查询里用的类型还有字段已被定义,然后它会执行提供的方法生成查询结果。

网站维护:视频无法播放,控制台显示:net::SPDY_PROTOCOL_ERROR

最近有些会员反应在 Chrome 上播放视频的时候出现错误:net::SPDY_PROTOCOL_ERROR。周末我看看到底是怎么回事,调试时网站可能会暂时无法使用。抱歉了啊 :)

# 2017-12-26

这是个挺奇怪的问题,我猜是 Chrome 最近升级引起的。SPDY 是个加速用的东西,Chrome 不再支持它了,我发现老版本的 Nginx 里面带个 SPDY 模块。升级了 Nginx 以后,就不带这个模块了。我猜有可能是现在浏览器不再支持 SPDY,但网站服务器仍然想用 SPDY 这个东西传输数据。所以导致了 net::SPDY_PROTOCOL_ERROR。再观察观察。

# 2017-12-28

今天发现了问题,是一个模块里设置了错误的 Header,导致一些负载均衡会报错,去掉设置无效的 Header 的代码,视频加载的时候就不会再提示 net::SPDY_PROTOCOL_ERROR 了。

机器学习:术语

参考书:《机器学习》by 周志华。学习笔记,仅供参考:)

机器学习术语

周老师在《机器学习》一书中的开始,解释了很多关于机器学习的术语。

数据集:dataset

一组数据记录就是一个数据集(dataset)。

示例:instance

数据集里的每一个记录就是一个示例(instance)。每条记录是关于一个事件或者对象的描述。示例也叫样本(sample)。

特征:feature

反映事件或对象在某方面的表现或性质的东西就是特征(feature)。也叫属性(attribute)。

属性空间:attribute space

属性张成的空间。也叫样本空间(sample space)或输入空间。

D = { x1, x2, ..., xm }

表示包含 m 个示例的数据集。

机器学习:监管学习与无监管学习(Supervised Learning & Unsupervised Learning)

机器学习可以根据 the amount and type of supervision they get during training,分成 Supervised learning,Unsupervised earning,Semi supervised learning,还有 Reinforcement learning。

参考书:《Hands-On Machine Learning with Scikit-Learn and TensorFlow》by Aurélien Géron

监管学习:Supervised Learning

在监管学习中,喂给算法的数据里包含着期望得到的结果,这些东西叫 Labels(标签)。比如一个邮件垃圾过滤系统,训练它的时候用的邮件数据带着标签,邮件实例的标签表示邮件是正常邮件,还是垃圾邮件。

常见的监管学习任务有 Classification(分类)。邮件垃圾过滤器得到一个邮件,会知道它的类别属于正常邮件还是垃圾邮件。

从标准差到五行

记录一段学习经历。今天学 Python ,看到人家介绍 statistics 模块,它里面提供了一些数据统计会用到的工具。有些是能明白,比如 mean 平均数,median 中位数。不过介绍到 pstdev 与 stdev 时就懵了,pstdev 是 Population standard deviation,stdev 是 Sample standard deviation。这里有个标准差的概念,对于我这初中二年级数学中等水平来说,对标准差完全没有概念。好了,别装了。应该说,我对数学除了加减乘除以外,没有一点别的想法。

通过搜索我看到了下面这个公式:

微信小程序:评论功能的设计与开发

最近为微信小程序设计与开发一个评论功能,后面会用视频的形式为大家展示出来,先说下大概的思路。评论一般会嵌入到其它内容里面显示,比如一个文章内容主体的下面可以显示一个评论列表,可以添加新的评论。

接口

因为评论内容要嵌入到其它内容里面,也就是用户在某个内容上面提交的评论要属于这个内容,就是评论内容与被评论的内容之间要关联在一起。比如可以在接口里面用 post 属性表示评论所属的内容。评论之间还可以进行回复,一个人留了一条评论,另一个人可以回复这条评论,就是评论与回复之间也应该有个关联,比如在接口里用 parent 表示这条评论回复的是哪条评论。

Let's Encrypt:用免费的 SSL 证书,让网站支持 HTTPS

申请 Let's Encrypt 提供的免费 SSL 证书,配置网站使用 HTTPS,让网站应用更安全。直接在运行网站的服务器上去申请 SSL 证书更方便一些,你也可以在一台服务器上去为在其它服务器上运行的网站申请 SSL 证书,这需要做额外的验证。操作都非常简单,不用紧张:)

我在一台 CentOS  7 服务器上申请了 Let's Encrypt 签发的 SSL 证书,我的网站的 Web 服务器用的是 Nginx

安装 EPEL 仓库

在 CentOS 的 EPEL 仓库里可以找到签发 Let's Encrypt 证书用的工具。所以先安装一下这个仓库,执行:

sudo yum install epel-release -y

安装签发证书工具

用 Certbot 工具申请 Let's Encrypt 证书,先安装一下:

Vue.js:前端应用系列课程

过年之前我们再出个前端应用系列课程。前端框架会使用 Vue.js,后端服务选择的是 WordPress。其实选择什么后端服务都可以,我拿 WordPress 做个演示,你也可以很容易把它替换成其它的后端服务,比如 Drupal,Laravel,Node.js,Rails 等等。课程主要解决一般的前端应用的常见需求,比如内容列表,分页,内容页面,身份验证,文件上传还有内容发布。

Vue.js

课程里会用到 Vue.js 框架提供的全家福,用 vue-cli 创建项目,Vue 作为应用的主框架,vue-router 用作应用的路由,vuex 管理应用的数据。课程里会帮你理解这些东西涉及到的大部分概念。比如 vuex 里面的 actions,mutations,state 等等。

微信小程序:绑定微信帐号的服务端接口设计(WordPress)

用户可以在小程序那里选择用微信登录, 在用微信登录之前要把用户的微信帐号与网站帐号绑定在一起,就是在数据库里记录一下用户微信给我们提供的 openid 。绑定的时候可以保存用户的一些其它的信息,比如用户的微信头像,所在城市,省份等等。在小程序上调用 wx.getUserInfo 接口可以获取到微信用户的相关信息。得到以后,把这些信息发送到后端服务接口来处理。

微信好友

用微信扫描二维码,
加我好友。

微信公众号

用微信扫描二维码,
订阅宁皓网公众号。

240746680

用 QQ 扫描二维码,
加入宁皓网 QQ 群。

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点