编程

一个伪前端的Go入门

最近因为突发奇想对并发编程不知道哪就来了兴趣,然后想来Go是现在非常炙手可热的一门并发编程语言,而Erlang虽然有其迷人之处,但是这么纯正的函数式语言要学起来实在是曲线也有点陡。

吉祥物
这货是Go的吉祥物,强行卖萌,是个……鼹鼠吗?

OK不扯了,打算边学边写一点文章介绍下Go的入门,那么这一篇就是入门中的入门了,可能会显得有点无聊。

一个eval引发的血案

昨天碰到一个线上问题,一个页面在一般的情况下加载执行,它的交互功能是正常的,但使用异步方式加载它的内容进来塞页面里,交互功能就丢掉了。

LRU缓存置换算法

这篇文章是科普性质的,外加推销一下中文注释……

LRU(Least Recently Used, 近期最少使用)算法是缓存置换算法当中的经典案例——这个中文翻译听起来相当莫名其妙,所以我们还是叫LRU吧。虽然我们现在常常都用了更高阶的缓存服务,但如果要在一些语言(比如JS)当中自己实现一个简单的K-V的缓存类的时候,不放试试写一个LRU,因为它的算法思路真的相当简单,但实现起来又是非常有趣。

"北上广大迁徙"前端开发心得

前阵子和好基友@licstar一起做了一个很蛋疼很好玩的数据可视化小品,叫做北上广大迁徙。使用了百度地图手机App的热力图数据,做成了动态的,并对其中的热点进行解读,来了解大城市中人群每天一个循环的“迁徙”。

整个开发用了几个小时的时间吧,我负责前端,他负责数据部分以及提供算法,这篇文章简单介绍一下其中前端部分在开发中的一些小心得。

JavaScript中定时器的精度

之前写了一篇文章介绍JS中的高精度计时,那么,与高精度相对的,低精度又是什么呢?或者说我们常接触到的精度是在什么水平?

这篇文章主要探讨一下JS里常用的定时器,看看它们能达到什么精度。由于结论我也不知道,所以基本上这篇文章算边做实验边写的吧,有问题希望各位看官能帮忙指出。文中的实验覆盖范围很小,而且方法也极度不严谨,大家先且一看吧,也许有时间我会再重新做实验。

JavaScript中的高精度计时

HRT(High Resolution Timing, 高精度计时)在一些场合有很大的作用,比如游戏开发中,需要精确的计算两帧之间的时间差。

在JS中常常用(new Date()).getTime()来获取毫秒级的时间戳,虽然是毫秒级,但事实上它的真实精度只能达到大概16ms的级别。例如

1
2
3
while (true){
console.log((new Date()).getTime()); // 这样死循环浏览器会跪的,责任自负
}

会发现它事实上大概16ms才跳一次,也许是17ms、又或者15ms吧,反正实际精度是有限的——什么?你跟我说是1ms?我告诉你那是因为新的系统或者浏览器使用了更高精度——但这不影响这篇文章的内容……

这对于日常应用来说完全够用了,但是对于游戏这样的场合,高精度计时就有它不可取代的意义了。

“正则大挑战”心得

就是!!!这是昨天在微博上看到的“只要把这16个题做完,你就可以精通正则。”啧啧啧,好奇心驱使我点开了……

然后……真是太好玩了,这是一个正则表达式的游戏,其中有的题目简直丧心病狂,可以说是我做过最难的编程puzzle之一了。

这篇博客将会分享一下我的解答,后来@小雪-Joanna给我发了一个牛人答案(标准答案?)里面我看得懂的也分析一下。

在BAE上使用hexo搭建博客

之前的文章中,我介绍了如何使用hexo来编辑博客内容,以及它自带的发布到GitHub-Pages的功能。

但是我最后并没有把它部署到GitHub-Pages上,原因主要有:

  1. 在国内的访问速度比较一般;
  2. 提交代码后,要等好几分钟才能看到效果;
  3. 一个网站只能绑定一个域名。

作为熊掌社的一名码农,我自然想到了把博客部署到BAE上面去。