🦄 2024 独立开发者训练营,一起创业!查看介绍 / 立即报名(剩余11个优惠名额) →

博客

Node.js:Adonis.js 框架 IoC container

IoC:Inversion of Control,字面的意思是控制反转,它是一种程序设计的思路。Container 不装在哪出现,一般它都指的就是容器,只不过在什么地方出现,容器里装的东西都不太一样。下面了解一下 Node.js 应用框架 Adonis.js 里的 IoC 容器。

问题

无用抽象

先来看个程序设计问题,比如在应用里要确定数据库只被连接一次,可以把配置数据库用的代码单独放在一个文件里,然后在应用的其它地方导入这个文件里包含的东西。这段代码类似下面这样:

lib/database.js

Redux:管理 React.js 应用的数据流动


你知道 React.js 是个前端应用框架,但你经常看到它跟 Redux 一块儿出现,于是就懵了。Redux 可以作为应用里面的一部分,它可以帮我们管理应用里面的数据(State Management)。应用复杂到一定程度的时候,你需要一套更好的方法来控制各种组件上面显示的数据。

宁皓网最近推出的 Redux 课程,帮你理解 Redux 上的核心概念,还介绍了在 React 应用上使用 Redux 的方法。如果你用的是 Vue.js 框架,可以使用 Vuex 来管理应用数据。

订阅宁皓网,来学一下用 React.js 开发前端应用。

2018

努力,奋斗 ~

GraphQL:用 Graphcool 创建一个 GraphQL 后端服务

每个前端,移动端开发者都应该了解一下 GraphQL。要试一下 GraphQL,你得去搭建一个 GraphQL 后端服务,可以用 Node.js,Rails,Django 等等。最近宁皓网录了个课程,介绍了用 Node.js 创建一个 GraphQL 后端服务。等不及的话,你可以找个现成的服务。比如 Graphcool,它可以快速帮你创建一个 GraphQL 的后端服务。

创建一个后端服务以后,你就可以去练习 GraphQL 的查询,修改,订阅等等。

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。这里有个标准差的概念,对于我这初中二年级数学中等水平来说,对标准差完全没有概念。好了,别装了。应该说,我对数学除了加减乘除以外,没有一点别的想法。

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

微信好友

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

微信公众号

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

240746680

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

统计

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

社会化网络

关于

微信订阅号

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