用cheerio替代jsdom减少内存泄漏

jsdom用来解析获取的页面并生成dom,在抓取页面数据的时候非常方便好用,但是,jsdom似乎存在内存泄漏的问题。在数据量较小的情况下并不明显,数据一大马上就会变得可以感知。并且window.close()的调用并不能完全解决问题,只能延缓这种泄漏的速度。 在node执行时加入--trace_gc参数可以看到内存清理的信息。下面的示例数据略乱,只是放出来看看的。 [3657] 163984 ms: Scavenge 190.5 ...

缓存Google字体副本

那一天,人类终于回想起了曾一度被它们所支配的恐怖和被囚禁于鸟笼中的那份屈辱。仰望高墙,Google远去。在没有Google的结界里,还写个球代码... 这一轮风头似乎还没有任何结束的迹象,虽然我无奈地先移除了google字体并希望不日的将来就可以恢复,但现在看来却是这么的遥遥无期。最后,终于无法忍受系统默认字体的丑陋,在歇斯底里的纠结里翻越高山,存下火种——缓存Google字体到本地实在是无奈的选择。 关于Google字体以及现代网络字体格式WOFF,我在很早以前就写过一篇WOFF和Google Font API,当时,WOFF的浏览器支持环境还不是很好, ...

换用pm2运行Ghost

从WordPress换到Ghost以来也快半年了。相对于前辈WordPress,Ghost还是非常年轻的,所以很多功能都还不完善。2个月前的0.4.2版本才刚刚支持到tag,而静态页面的支持也只是在年初。即便年轻,Ghost也没有甩开大步往前冲,其更新频率其实并不高。 之前一直使用官方提供的自启动脚本运行Ghost,好处是服务器重启后无需关心应用的启动,对于我这种不时折腾服务器的人来说还是非常实用。不过却有一个致命的缺点,就是如果服务器上同时运行数个node应用,官方脚本service ghost restart会将其他应用一并停掉,这点就相当烦人了, ...

雅马哈P-105电钢琴

从一个念想到实现,如果念想本身不符合自身,那么实现的过程就必须跨越道道鸿沟,比如钢琴之于我,是非常不相称的东西,但向往之心犹在,万不会因为时光流转而销声匿迹,反而因为念想的时长而愈发强烈。最后,用一个借来的名义,付诸实践,美其名曰为了孩子。且不觉,只要心怀理想,男人就永远是个少年~ 真钢琴和电钢琴的选择上没有疑虑,家用后者完胜。只是在选择产品的时候还是花了很多时间的,比如卡西欧,罗兰, ...

《纪念碑谷》:一场华丽的视觉欺骗

今天下午无意中看到app store首页上推荐的游戏:《纪念碑谷》(Monument Valle),看到游戏截图的风格,再加上诸多热情洋溢赞美评论,终于还是没能忍住,忽略了25RMB的价格买来玩了起来。虽然游戏流程非常短暂,我玩了大概1小时多就通关了,但这个游戏带来的各种体验之美,是足以值回票价的! 画面非常简单,但绝对不失美感。简单淡雅的颜色将这个游戏的虚无缥缈的特性烘托了出来,再加上美轮美奂的背景音乐,仿佛自己也身处于这样一个纯粹的几何和色块的世界。官方建议玩的时候使用耳机,我拿出了放在抽屉已经很久的K701, ...

Ghost的静态页面

Ghost从0.4开始支持静态页面,前段时间升级的,换句话说也才刚刚支持这么重要的特性。Ghost的静态页面功能是怎样的,会不会和已有的路由有冲突?是否会输出rss?都不得而知。所以就先写一个About页面测试一下。 之前的About页面我一直是自己在ghost里加了自定义的路由,放了一个静态页,这是也是从WP转移过来之后的临时之举。现在终于可以把一堆乱七八糟的静态页也放到Ghost里一起管理了。 试用的结果:Ghost静态页不会在出现在博客的文章列表里,也不会输出在RSS里。于是我就去掉了自定义的路由,让Ghost统一管理。实际上从一整个站点迁到Ghost上不可避免的有很多混乱的路由条目,随着Ghost日趋完善, ...

冬日游黄山

去年年底的时候,部门组织去黄山。虽然一想到路上那艰辛的几个小时一度退缩,但最后还是没有经受住山川美景的诱惑,屁颠屁颠地跟去了:) 第一个目的地是宏村,但因为忙着小组活动所以没顾得上拍什么照片,最后在离开的时候才有时间定下来选个合适的角度,拍了一张夕阳下的湖边村图。但宏村总体给我的映像很淡薄,除了村里首富曾经住过的房子里那些精美的雕刻以外,最让我有感受的并不是宏村本身,而是村边山上的满地落叶在阳光下烁烁生辉的场景。 第二天登上黄山,名山之景也确实没有让人失望。相比于海岛优美的“天海一色”,山上凛冽寒气勾勒出来的“天地一线”显然更为壮丽和摄人心魄。 ...