Hegwin.Me

长风破浪会有时,直挂云帆济沧海。

学习ES2015 Part 3

Learn New Features in ES 2015 Part 3

# Array 新特性 ## Array Destructing 感觉这也是从Ruby或者类似的语言学习过来的方法,在ES5,我们没有办法直接把数组的各个值一次性赋给多个变量,而现在我们可以了,假设我们有这么一个数组: ```js let users = [ 'Hegwin', 'Jason', 'Ken' ]; ``` 如果我们想直接把`users`的三个元素依...

学习ES2015 Part 2

Learn New Features in ES 2015 Part 2

# String ES2015中加入了Template String的概念,当我们想要把变量值拼接到字符串中间时,不再需要不停地的使用`+`了,这也是我觉得可以欢呼的地方。 具体是这样操作的:JS里普通那个的字符串依旧是用单引号或者双引号包围,但是Template String则用反引号包围(感觉在Markdown里打个反引号真要命)。 过去: ``` let ful...

学习ES2015 Part 1

Learn New Features in ES 2015 Part 1

# 变量声明 ## 使用 `let` 声明变量 * 终于不再有`var` hoisting的问题了,可以声明块级的变量了 (欢呼) * 解决 for 循环中中变量泄漏的问题 * 同一block中,let声明的变量可以重新赋值,但再次声明同名的变量时会抛出异常 TypeError ## 使用 `const` 声明变量 * 声明一个read-only的变量,生...

关于Highcharts

Some Notes about Highcharts

关于使用HTML SVG绘制图形,我目前尝试过两个JS库——C3.js 和 Highcharts。二者相比,我个人感觉C3比较难用,需要设定的参数很多:优点是我可以自己控制的东西有很多,但是缺点是开发起来很慢且让人烦躁(所以才会有个 D3.js 来占有它的市场)。最近用了Highcharts,感觉还不错,例子和文档都比较清爽,画图的各种参数也是相当简洁(唔,但是参数并不见得少很多),比 C3...

Redis入门心得

Start to roll with Redis

NoSQL的概念已经有很久了,只是我最近才真正开始用到Redis。 我是在2012年底接触到Redis,那时使用的版本是的是2.6.7。我的使用场景是在初始化项目的时候,把地址信息(省、市、区、街道的信息)存进redis作为缓存,方便快速读取。除此之外也未做他用,因此当时也没有深入研究 Redis。 我最近一个项目开始更多地用到Redis,这时的版本已经是3.0。我们从第三方读取...

new Date()在Firefox和Chome下不同效果

Differrent behavior of new Date between Firefox and Chrome

我最近的一个项目需要画图表,使用的JS库是D3js。我遇到一个很神奇的问题,就是在Chrome上能显示出来的点和线,在Firefox下面显示不出来。 初步察看原因,发现是点坐标的计算结果不一样。我们的X轴是时间轴,同样的日期在Chrome下计算的X坐标是正常的坐标,而在Firefox下计算出来的坐标是负值,导致无法在graph上显示出来。 后来仔细察看,发现是`new Date(...

Vim查找工具Ack

Search with Ack in Vim

在vim中进行全局查找,每次用vim原生的 vimgrep 时都觉得挺郁闷的,因为我不太常用,所以感觉命令复杂,总记不住。 于是在同事的建议下,我试了试 Ack.vim,果然觉得还不错。只是我在安装的时候遇到一些小问题。 Ack.vim依赖ack(>=2.0),但是我在Ubuntu下按照说明使用命令 apt-get install 安装时,总是给我安装的1.9x的版本。

Vim插件管理工具Vundle

Manage your vim plugins with Vundle

Vim的许多魔法需要插件来完成。在我最开始接触Vim时,安装插件总是先去官网上下载,然后在看说明安装到某个目录。一开始我会觉得新鲜,弄得多了之后便觉得这样下载和安装还挺麻烦的,于是开始寻找插件管理工具。这时候我接触到了Vundle。 从Vundle这个名字上,我们就可以看出他是 Vim Bunlder,用来管理Vim的各种插件。它的文档和Github在这里:[http://github...

Selenium driver 对 JS Confirm 的处理

How to handle javascript confirm with selennium webdriver

在Web开发中经常会使用JS弹出确认框,在feature测试脚本如何处理这个弹出框呢? page.driver.browser.switch_to.alert.accept # => 点击OK page.driver.browser.switch_to.alert.dismiss #=> 点击 Cancel page.driver.browser.switch_to.a...

Rails权限验证工具Pundit

Rails Authorization with Pundit

在人们开始使用Rails 4之后,cancan 的复杂以及兼容性修复不及时而遭人诟病,大家将目光投向了新的工具 Pundit。 Pundit 是一个纯 Ruby 的gem,用于权限验证。 基本思路是Pundit对于需要鉴权的对象,根据用户的操作,会去这个对象的对应policy中寻找和执行鉴权的方法,继而实现验证。 也就是说,对于任意的Ruby Class,需要验证用户...