Posts by Year

2020

写一个开源的 macOS 程序可以赚多少钱?

五年前,我在 GitHub 开源了一个 macOS 上的 Redis 管理工具,取名 Medis,同时把它放到了 App Store 以 30 元一个的价格出售。换句话说,你既可以直接免费下载使用,也可以花 30 元购买,两者功能一样,全凭自愿。

Back to Top ↑

2015

纯 CSS 实现打地鼠游戏

只借助 CSS 而不使用 JavaScript 来实现一个网页游戏并不需要什么新潮的技术,简单的几个选择器组合就能创造出意想不到的效果,再配合上 CSS3 的“绘图”能力,甚至可以做出不逊于 JavaScript 实现的网页游戏。 为了参加公司内的 CSS3 比赛,我连夜做了一个 CSS3 打地鼠游戏(其实准备时...

Back to Top ↑

2014

Code Game 对技术的选取

这篇日志将以偏技术的角度介绍我最近在做的业余项目 Code Game,其中我会解释 Code Game 对某些技术是如何进行取舍的,包括为什么不使用 CoffeeScript 以及选择 Myth 代替 Less/Sass 的原因。

只需 4 步,手把手教你如何实现滤镜功能

滤镜对于照片而言,起到的是雪中送炭和锦上添花的作用。优秀的滤镜,能让随手之作显得别有风味,又能为已经绝色的照片画龙点睛。现在几乎凡是和照片相关的应用程序都有滤镜功能,而相较而言介绍滤镜原理和实现的文章又少之又少,为此我专门写了这篇文章来系统地讲解滤镜是如何实现的。

Good Practices to Structure an Express App

Having heavily used the Express framework for 3 years, I’ve discovered a few patterns and conventions to structure an Express app. These patterns make my cod...

Express 框架中间件的依赖问题与解决方案

作为 Node 社区最受欢迎的框架,Express 在沿用 Connect 的 middleware 机制的同时,还提供了在定义路由时使用的 route-specific middleware(下面称“路由中间件”)。路由中间件与 Connect 的 middleware 十分相似,可以用来执行预载入资源或校验请...

Back to Top ↑

2013

纯 CSS 实现高度与宽度成比例的效果

最近在做一个产品列表页面,布局如右图所示。页面中有若干个 item,其中每个 item 都向左浮动,并包含在自适应浏览器窗口宽度的父元素中。

减少异步嵌套,Express-promise

在使用 Express 框架开发网站或 API 时,经常会因为 Node.js 的异步流程造成逻辑代码中嵌套回调函数过多的问题。这时可以考虑使用 Promise 来简化这个流程。关于 Promise 可以参考以下资料:

开源的数据统计可视化工具:Ranaly

不少互联网项目都需要对项目的数据,如用户数量的增长趋势、最近注册的用户列表和当前在线用户数量等进行统计,而我最近在做的项目需要将这些统计数据以图表的形式展现出来。为此我开发了统计框架Ranaly,以使开发者只需要简单地配置就能生成一个强大的统计数据可视化后台。

Back to Top ↑

2012

最近入手的数码产品

博客很久没有更新了,最近计划出版一本Redis的入门书籍,所以时间都放到写书上了。其实写书倒也不算是件能让人忙起来的事情,但它却能轻易地占据人的生活。记得高一下学期刚开学的时候学生会开始招新,我需要准备一篇千字左右的讲稿,结果在演讲的前一周我就把讲稿写完了。然而在接下来的7天里我却满脑子都是讲稿的事:虽然我已经完...

人生苦短,我用双拼

这篇文章写给使用全拼的人(怎么知道我用的是不是全拼?答:如果你不知道你在用什么输入法,那你很可能在用全拼)。

Web 开发者怎么学 Node.js

如果你是一个 Web 开发者,想必你一定听过 Node.js。这篇文章会告诉你如何开始学习 Node.js。

直播: 豌豆荚Hack Day!

前天和昨天参加了豌豆荚的 Hack Day,这次 Hack Day 的主题是“Hi Web, High Web! ”,要求是使用豌豆荚百宝袋创建一个 Web 应用。

使用Redis做产品统计的两种模式

产品运行过程中及时记录收集并分析统计数据对产品的持续改进有重要的指导作用。其中有两个很常见的统计模式:每小时新增的用户数量和一周内活跃的用户(对于一个漂流瓶应用,可能是每天都扔瓶子或捞瓶子的用户)数量。在实际开发中我使用 Redis 来实现这两个模式。

体验傲游浏览器 Mac 版后的吐槽

今天获得了傲游浏览器 Mac 版的内测资格,下载体验过后,决定吐槽一下。 其实这篇文章用一句话总结就很切题了:“尼玛啊这不就是 Chrome 吗!”

小谈“微创新”—中国互联网怎么了

从Facebook到人人网,从Quora到知乎,再从Path到朋友圈,中国互联网一直很善于模仿国外优秀的产品并御其于国门之外。而WWDC 2012更是让独自享受着“单机版互联网”的中国用户心花怒放:iOS 6在中国终于放弃了摆在桌面上永远打不开的Youtube和Twitter转而内置优酷视频和新浪微博。

MySQL 迁移到 Redis 记

前些日子,一个悠闲又不悠闲的下午,我还在用 Node.js 写着某个移动互联网应用的 API 服务端。那时还是用 MySQL 作为数据库,一切都很好,所有功能正常运行。可是有很多问题让人不安:

纪念人生中收到的第一枚假币

今天中午叫了外卖,掏钱结账时送餐的小伙拿着我给的 50 元钱看了半天跟我说是假币,我半信半疑地拿过来仔细看了看,发现确实是假的,纸张的质感差距很大。再对着阳光看看水印,可把我笑喷了:

我常用的 Mac 和 iPhone 软件

最近买了Reeder的iOS版,感觉甚爽,尤其是和Read it later配合使用,给大家推荐一下。顺便列举一些我常用的Mac和iPhone软件。

让阅读更轻松,readability for node.js发布

Readability是从一个开源项目发展而来的产品,该项目托管在Google Code上,不过现在已经不再维护。由于其最初设计在浏览器上运行,在node.js中难以使用,而且转换效果和Readability现在的服务也相差较大。所以这几天我重写了这个项目,具体更新内容附后。

module.exports 还是 exports?

Node.js 通过实现 CommonJS 的 Modules/1.0 标准引入了模块(Module)概念,一个模块可以通过 module.exports 或 exports 将函数、变量等导出,以使其它 JavaScript 脚本通过 require() 函数引入并使用。

入手神器 TL-WR703N 一日谈

有这样一个无线路由器:它支持 OpenWrt,支持 USB,支持 3G 拨号,能通过电脑 USB 接口充电,也可以反过来给手机充电,只有信用卡的一半大小。而且,只要 99 块钱。

SIM 卡剪卡想悲剧都难

最近入手了部iPhone 4 8GB,买时联通营业厅已经不提供给老用户的iPhone合约机套餐了,想要套餐就得用新号。

Back to Top ↑

2011

PHP 实现单例模式

目前的一个项目有几个模块需要实现单例模式,于是想实现一个 Singleton 基类来使这些模块通过继承该基类实现 Singleton。

Back to Top ↑