文章列表

测试代码和可测试代码

项目中有一个要将指定时间和当前时间比较,计算相对时间的逻辑(比如显示 3 分钟前), 由于当前时间和执行测试用例的时机有关,每次执行用例都会不同,如何让这个代码可测试呢? 有些人可能想到 Mock 当前时间,测试的时候让当前时间凝固,于是有了如下代码:

1// 实际业务代码中:
2// 虽然本来只需要 moment() 就可以了,但是为了方便测试,传入了一个可 Mock 的 Date.now
3const now = moment(Date.now());
4
5// 测试用例中,Mock Date.now 方法:
6mm(Date, 'now', () => 1464969293129);

这个业务代码是 可测试 的代码吗?我认为不是。

Read more...

Tags: Code

Date: 2016-06-04

杭州购车记

终于在年前把车的事情搞定了,这是 2015 年做成的唯一一件大事,经历了不少坎坷,一路摸索过来,很多都是懵懂, 因此想通过这篇流水记录,帮助到一点大家,如果有写的不好不对的地方,大家可以给我提出,我尽力改进。

『车图』

Read more...

git+, a hack of git, smart for you.

为了信息安全,公司搭建了 gitlab.company.com 管理代码,同时限制了必须使用工作邮箱 hotoo@company.com 进行提交。

公司 gitlab 有大大小小很多仓库,不时的需要 clone 代码下来,有时忘记设置就开始提交, 提交了几次开始 push 到 gitlab 并准备提交 MR 时发现,push 被拒绝,或者 MR 无法 自动合并,因为没有使用公司的邮箱进行提交。只好取消之前的提交操作,修改邮箱配置 之后重新提交。

虽然 clone 下来配置一次就可以了,但是每个仓库都需要配置,每次 clone 都需要配置, 忘记设置了需要取消之前的提交并再来一次。

有没有办法自动进行配置呢?

Read more...

Tags: git

Date: 2015-05-27

译:Resource Timing (资源计时) 使用技巧

W3C Web 性能工作组 在 2012 年给我们带来了 Navigation Timing,这个 API 现在 基本上在主流浏览器上都可用。Navigation Timing 定义了一套用于测量主页面性能的 JavaScript API。例如:

1// Navigation Timing
2var t = performance.timing,
3    pageloadtime = t.loadEventStart - t.navigationStart,
4    dns = t.domainLookupEnd - t.domainLookupStart,
5    tcp = t.connectEnd - t.connectStart,
6    ttfb = t.responseStart - t.navigationStart;
Read more...

GitHub, GitLab, or BitBucket?

GitHub 是汇集了众多开源项目的闭源系统,

GitLab 是汇聚了较多闭源项目的开源系统。

-- @hotoo

对于个人开发者,不可避免的会有私有项目的需求。

目前比较靠谱的私有项目托管服务有:

  • GitHub
  • GitLab
  • BitBucket

下面我们稍做评比。

Read more...

Tags: Git

Date: 2014-08-03

定位到服务器集群的特定节点

齐宣王使人吹竽,必三百人。南郭处士请为王吹竽,宣王说之,廪食以数百人。 宣王死,湣王立,好一一听之,处士逃。

《韩非子·内储说上》

背景

某日,突然收到报警,某发现实时异常监控趋势图上,静态资源 404 异常有明显的上升。 分析详细的异常信息发现是某个发布操作引起某几个系统引起的。

Read more...