发布于 11月26, 2016

学习、使用 React 是碰到的一些疑惑点

分不清的propsstate

『props、state 傻傻分不清楚!』,应该会有 React 初学者,和博主一样发出过这样的感叹吧。它们两个是 React 初学者最容易混淆和纠结的地方,也是 React 最基本的概念,下面分享下我对它们两个的理解:

1.props是有父组件传递到子组件的,可以理解为props是子组件对外暴露的接口。因为props是父组件传递给子组件的,是父组件的状态,因此,子组件内部禁止修改props,如果要修改props,只能通过事件回调,通知父组件去修改。

2.state是组件自身的状态,通常与外界无关,并且不会对外暴露。

3.关于propsstate什么时候用?在编写组件时,如果你希望某个字段从外界获取,那就用props吧。

异步的setState

在某些情况下调用setState更新状态后,不会立刻改变this.state,也就是说你可能无法获取到最新的状态值,相信会有一些 React 初学者和博主一样遇到过这样的情况吧。这个是由 React 的批量更新机制造成的,是为了提高性能,避免组件多次渲染而做的优化,感兴趣的同学可以看下深入理解 React 的 batchUpdate 机制Change Detection And Batch Update这两篇文章。

阅读全文 »

发布于 08月16, 2016

计算两个时间段是否有重叠的算法

前言

本篇文章是对项目中一段判断时间是否有重叠的代码,进行优化的一个记录和思考。算法(暂且叫做算法吧)本身很简单,想强调的是解决问题的思路,有时我们从正面解决一个问题,方案可能会非常复杂,这时可能就要变通下,尝试从另一面或换个角度,可能就会使问题得到很大的简化,解决方案也会更加容易理解。

分析需求

需求很简单:给出任意两个时间段,如果发现有重叠,就给予用户提示。

通常在解决问题时,我们事先都会根据问题枚举出一些可能的组合、场景,然后从中找出一些规律,进一步找到解决方案。所以,在解决这个需求时,我们首先要列举出两个时间段都会有哪些组合。

阅读全文 »

发布于 08月03, 2016

使用 Let's Encrypt,开启网站 HTTPS 时代

为什么要 HTTPS

HTTP 是基于 TCP 协议上的超文本传输协议,是互联网中应用最为广泛的网路协议,被用在客服端和服务端之间传递信息。但它有以下缺陷:

  1. 传输的数据是明文的
  2. 通信双方无法验证对方身份
  3. 无法校验数据完整性

由于第 1 点缺陷,导致当向服务端提交密码、信用卡号等敏感信息的时候,是非常不安全的;由于第 2、3 点缺陷,造成在数据传输时就很容易被第三方劫持、篡改等,常见的就是网页被插入广告。

而 HTTPS 可以很好的解决上面的问题,它是运行在 SSL/TLS 上,SSL/TLS 运行在 TCP 上。其中传输的数据都是加密的,并且客户端、服务器端可以互相验证对方的身份,以及校验数据的完整性。

阅读全文 »

发布于 06月26, 2016

记录最近折腾 Ubuntu 时学到的一些命令

前言

当在计算机上进行某些操作(如:操作文件、git等)时,是选择使用图形界面,还是命令界面?在这个问题上,我一直是更加倾向于使用图形界面,我的观点是这样的:

  1. 图形界面上一个操作可能会对应几个命令,这样效率会更高些
  2. 很多命令大多是缩写,这样不好理解、不方便记忆

但最近同王纯谱神两位同学一起买了个云服务器,然后系统选择的是Ubuntu,由于系统默认也是命令界面,起初我也要求装了个图形界面,但是图形界面装好后,使用起来并没有达到预期,一个是界面太丑了,估计是安装的版本有点旧,另一个原因是远程操作的过程很卡,整个过程很不顺畅。

那既然图形界面用着没那么爽,就不能在这颗树上吊死,自己也得改变下思维,就趁着这个机会开始学习和积累一些关于命令行的相关知识吧。

tree 显示目录结构

在知道tree命令之前,查看某个目录下面都有哪些文件时,我都是使用的ls命令,这个命令只会列举出第一层的文件信息,并不会显示当前目录的文件结构,所以,在我们想了解目录的结构时,就很鸡肋了,这时候tree就闪亮✨✨✨登场啦啦啦。

你可以运行 tree --help 查看它都有哪些参数,这篇文章我只会提几个很实用的参数。

阅读全文 »