GIF2017参会记

每年的GIF大会,基本都会去看一下,也算是对自己过去一年的总结,今年的GIF也没有让我失望,尤其是第一天的演讲内容,带给我了很多启发和感触。

首先要赞一下极客公园,每一年来参会都能感受到进步,无论是从入场安排还是嘉宾演讲安排都体现了做事的态度,越来越好,不断最求进步。

由于GIF是3天的日程,没有全程参与,只记录一些自己感兴趣的内容和看法。

网站用户行为数据统计方案设计

最近公司针对网站用户浏览行为要做数据统计及分析(至于为什么不用目前市场上比较成熟的谷歌分析百度统计以及新兴的GrowingIO,CTO说收集的信息太多,不敢用,好吧),毕竟现在的产品要一切以数据说话,当然是为了更好的了解用户以针对不同的用户制定不同的营销策略。打住……本文不是介绍数据分析以及现在比较火热的增长黑客的理论,而是要介绍一下针对网站用户行为数据,如何去做数据收集和统计。

系统设计

我在调研了谷歌统计、百度统计以及growingio的统计代码之后,得出网站用户行为数据统计的普遍方案如下:

  • html动态创建script标签,src指向一个analytics.js
  • analytics.js收集客户端数据,主要包括页面跟踪数据和事件跟踪数据,并将数据发给后端数据收集服务
  • 后端数据收集服务接收数据写入数据库,并为前端页面设置用户跟踪cookie

数据库索引及慢查询优化

索引是对数据库中一列或几列的数据按照特定的数据结构进行排序保存的一种方式。使用索引可以加快数据库查询或排序时的速度。如果不使用索引那么查询数据时就会进行全表扫描也就是每条数据读取一遍,而使用索引可以快速找到要查询的数据,不用扫描所有数据。

索引的优点

  • 可以大大提高数据查询的速度
  • 在实现数据的参考完整性方面,可以加快表和表之间的连接
  • 在分组和排序时,可以减少分组和排序的时间

当然,索引也有缺点,所以我们不能在表中随意的创建索引

深入理解ES6异步编程

JavaScript 的单线程,如果没有异步编程的话将会苦不堪言。ES6 之前,异步编程的方法,大概有下面4种:

  • 回调函数
  • 事件监听
  • 发布/订阅
  • Promise对象

无论采用哪种方法,代码都不显得那么优雅。ES6将 JavaScript 异步编程带入了一个全新的阶段。回想起第一次遇见 Generator 时的兴奋之情仍然历历在目。一直以为自己理解了Generator 函数,直到今天有朋友问起一些问题才发现自己根本就没有理解清楚,为了让自己更加清楚明白,参考了阮一峰的深入掌握 ECMAScript 6 异步编程系列的文章后,就有了下文。

主要从4个方面讲述 ES6 的异步编程,分别是Generator、Thunk、Co以及Async (严格说是属于 ES7 的范畴了)。

服务器推送以及sse实战

最近在做crm系统,有一个需求是外呼系统收到来电通知时要给客户端(浏览器)实时推送一条信息,告诉客户端有来电了,也就是弹框显示来电电话号码。由于不是客户端主动请求服务端数据,所以就需要一个方案来解决服务端主动推送数据给客户端的问题。

服务器推送数据也算是一类问题了,目前的解决方法也有不少,主要可以分成两类。这两类方法的区别在于是否基于HTTP协议实现,不使用HTTP协议的做法是实用HTML5新增的WebSocket规范,而使用HTTP协议规范的做法则包括简易轮询、COMET技术和本文要介绍的HTML5服务器推送事件(Server-sent Events)。