I'm a Pro, as in Procrastinator.

0%

提高自制力的一个有效的方式就是自我量化,其中一个重要的维度即是时间记录,通过对我们的工作、生活各个方面进行数据记录和分析,可以帮助我们优化自己的时间管理策略,提高生产力。
对程序员而言,我们迫切需求有一个工具能够记录我们在工作中的时间分配和利用率。对于项目管理而言,也有了解开发人员开发效率的需求。
WakaTime正是这样一个工具。它专为程序员和开发者而设计,通过简单配置,它就可以记录我们花在各个项目、各种工具(IDE、浏览器、编辑器等)以及具体工作内容的时间。
对比Rescuetime的大而全,Wakatime专精于记录编程和编辑的方面。推荐开发者都去试试,至少可以帮助提升自制力… :)

Read more »

什么是CAP定理

CAP由Eric Brewer在2000年PODC会议上提出,是Eric Brewer在Inktomi期间研发搜索引擎、分布式web缓存时得出的关于数据一致性(consistency)、服务可用性(availability)、分区容错性(partition-tolerance)的猜想:

It is impossible for a web service to provide the three following guarantees : Consistency, Availability and Partition-tolerance.

C 代表 Consistency 一致性, A 代表 Availability 可用性, P 代表 partition-tolerance 分区容错性。

  • 数据一致性(consistency):如果系统对一个写操作返回成功,那么之后的读请求都必须读到这个新数据;如果返回失败,那么所有读操作都不能读到这个数据,对调用者而言数据具有强一致性(strong consistency) (又叫原子性 atomic、线性一致性 linearizable consistency)
  • 服务可用性(availability):所有读写请求在一定时间内得到响应,可终止、不会一直等待
  • 分区容错性(partition-tolerance):在网络分区的情况下,被分隔的节点仍能正常对外服务

在某时刻如果满足AP,分隔的节点同时对外服务但不能相互通信,将导致状态不一致,即不能满足C;如果满足CP,网络分区的情况下为达成C,请求只能一直等待,即不满足A;如果要满足CA,在一定时间内要达到节点状态一致,要求不能出现网络分区,则不能满足P。即C、A、P三者最多只能满足其中两个。

K-means算法采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大,是很典型的基于距离的聚类算法。该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目标。

Read more »

Promise类似于一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。

Read more »

JavaScript的设计不同于传统编程语言,它自成一派,有很多的奇妙特性。

今天就来聊聊变量提升。

变量提升是什么

ES5之前,JavaScript实际上并不存在块级作用域。JavaScript引擎对JavaScript中var类型变量的声明的处理方式是:

  • 如果变量在函数外部声明,那么该变量会被提到全局作用域顶端
  • 如果变量在函数内部声明,那么该变量会被提到函数作用域顶端
    Read more »

异步编程一直是JavaScript中的麻烦事,但在浏览器环境中,对异步的支持是必须的。JavaScript一直都有异步的解决方案。最早是回调函数,但由于连环回调会带来严重的嵌套问题,所以后来换做扁平化的Promise解决方案。

Read more »