本博客最早一篇文章创建于 2008 年 7 月,当时我从自己开发的 ASP 博客系统迁到 WordPress,之前的文章未迁移。2013 年 3 月,又从 WordPress 迁到自己开发的 Python 博客系统(详情),文章迁移了一部分。2014 年初再次改用 NodeJS 重新开发了博客系统(详情),数据完全保留,使用至今。
我有使用 Kindle 阅读的习惯,从 Paperwhite 到 Voyage 到 Oasis,我都第一时间入手。几年下来,我在亚马逊和图灵社区购买并读过的 Kindle 版书籍加起来也有几十本了。如果你也喜欢用 Kindle 阅读,请下载本站合辑 Kindle 版。
2024 年
- 我失业了 (Apr 10, 2024)
2022 年
- 聊聊一些近况 (Mar 19, 2022)
2017 年
- 如何为 ThinkJS 3 网站优化 TTFB 时间 (Nov 28, 2017)
- 本博客开始支持 TLS 1.3 (Aug 06, 2017)
2016 年
- HTTPS 常见部署问题及解决方案 (Dec 12, 2016)
- 开始使用 VeryNginx (Dec 10, 2016)
- iOS 10 Safari 视频播放新政策 (Oct 07, 2016)
- 开始使用 ECC 证书 (Aug 27, 2016)
- HTTP Alternative Services 介绍 (Aug 21, 2016)
- 谈谈 Nginx 的 HTTP/2 POST Bug (Aug 20, 2016)
- 开始使用 Docker (Aug 14, 2016)
- 移动 WEB 通用优化策略介绍(二) (Aug 14, 2016)
- 博客统计报告(2016 上半年) (May 27, 2016)
- 为什么我们应该尽快支持 ALPN? (May 18, 2016)
- 为什么我们应该尽快升级到 HTTPS? (May 16, 2016)
- 关于启用 HTTPS 的一些经验分享(三) (May 05, 2016)
- 如何压缩 HTTP 请求正文 (Apr 18, 2016)
- HTTP 协议中的 Content-Encoding (Apr 17, 2016)
- Chrome 中 scrollingElement 的变化 (Apr 16, 2016)
- 移动 WEB 通用优化策略介绍(一) (Apr 16, 2016)
- 谈谈 HTTP/2 的协议协商机制 (Apr 14, 2016)
- 三种解密 HTTPS 流量的方法介绍 (Mar 28, 2016)
- 本博客 Nginx 配置之完整篇 (Mar 21, 2016)
- 从无法开启 OCSP Stapling 说起 (Mar 13, 2016)
- 利用图片传输数据的另类思路 (Mar 10, 2016)
- 使用 nghttp2 调试 HTTP/2 流量 (Mar 07, 2016)
- HTTP Public Key Pinning 介绍 (Mar 05, 2016)
- Certificate Transparency 那些事 (Feb 03, 2016)
- 从启用 HTTP/2 导致网站无法访问说起 (Jan 17, 2016)
- 使用 Elasticsearch 实现博客站内搜索 (Jan 05, 2016)
2015 年
- Let's Encrypt,免费好用的 HTTPS 证书 (Dec 25, 2015)
- 关于启用 HTTPS 的一些经验分享(二) (Dec 22, 2015)
- 从 Nginx 默认不压缩 HTTP/1.0 说起 (Dec 15, 2015)
- 关于启用 HTTPS 的一些经验分享(一) (Dec 04, 2015)
- 域名小知识:Public Suffix List (Nov 28, 2015)
- 基于 HTTP/2 的 WEB 内网穿透实现 (Nov 23, 2015)
- HTTP/2:新的机遇与挑战 (Nov 22, 2015)
- HTTP 代理原理及实现(二) (Nov 20, 2015)
- HTTP 代理原理及实现(一) (Nov 20, 2015)
- Golomb-coded sets 原理介绍 (Nov 16, 2015)
- TLS 握手优化详解 (Nov 08, 2015)
- ThinkJS 2.0,带你超越梦想一起飞 (Oct 30, 2015)
- HTTP/2 头部压缩技术介绍 (Oct 25, 2015)
- 使用 Wireshark 调试 HTTP/2 流量 (Oct 24, 2015)
- H2O 中的 Cache-Aware Server Push 简介 (Oct 21, 2015)
- 使用 BoringSSL 优化 HTTPS 加密算法选择 (Oct 15, 2015)
- Disqus,我又回来了! (Oct 14, 2015)
- AMP,来自 Google 的移动页面优化方案 (Oct 10, 2015)
- window.opener.location 安全风险讨论 (Oct 09, 2015)
- Content Security Policy Level 2 介绍 (Oct 05, 2015)
- 让多说评论框完美支持 HTTPS (Sep 27, 2015)
- 使用 SRI 增强 localStorage 代码安全 (Sep 26, 2015)
- Subresource Integrity 介绍 (Sep 23, 2015)
- 像素化你的代码 (Sep 19, 2015)
- 诡异问题排查之「DataURI 引发的血案」 (Sep 12, 2015)
- 本博客零散优化点汇总 (Sep 12, 2015)
- HTTP Client Hints 介绍 (Sep 10, 2015)
- 关于本站备案那点事 (Sep 03, 2015)
- HTTP/2 资料汇总 (Aug 31, 2015)
- 开始使用 Vagrant (Aug 23, 2015)
- Bugtags, 让移动应用测试变得更轻松 (Aug 17, 2015)
- Nginx 开始支持 HTTP/2 了 (Aug 16, 2015)
- HTTP/2 中的 Server Push 讨论 (Jun 16, 2015)
- ThinkJS 中的 Behavior 介绍 (Jun 11, 2015)
- 开始使用 HTTP/2 (Jun 07, 2015)
- 浏览器中常见网络协议介绍 (Jun 03, 2015)
- HTTP/2 与 WEB 性能优化(三) (Jun 01, 2015)
- 使用两步验证提高账号安全性 (May 31, 2015)
- 本博客 Nginx 配置之性能篇 (May 27, 2015)
- 本博客 Nginx 配置之安全篇 (May 24, 2015)
- HTTP/2 与 WEB 性能优化(二) (May 22, 2015)
- HTTP/2 与 WEB 性能优化(一) (May 19, 2015)
- 改进 ThinkJS 的异步编程方式 (May 15, 2015)
- Referrer Policy 介绍「续」 (May 11, 2015)
- 9.9 美元一年的 VPS 及配置指南 (May 11, 2015)
- Referrer 还是 Referer? (May 09, 2015)
- Referrer Policy 介绍 (May 06, 2015)
- HTTP 协议中的 Transfer-Encoding (May 04, 2015)
- HTTP 请求头中的 X-Forwarded-For (May 02, 2015)
- HTML5 视频直播(三) (May 01, 2015)
- HTML5 视频直播(二) (Apr 25, 2015)
- HTML5 视频直播(一) (Apr 24, 2015)
- 针对不同主机使用不同 SSH Key (Apr 19, 2015)
- 搭建 ngrok 服务实现内网穿透 (Apr 19, 2015)
2014 年
- 1.5kb 代码让图片抖起来 (Aug 11, 2014)
- 移动 Web 与 JavaScript 定时器 (Mar 27, 2014)
- Chrome 和 Web Fonts 二三事 (Mar 24, 2014)
- SPDY 3.1 中的请求 / 响应头 (Mar 15, 2014)
- Chrome 32 开发者工具的几个变化 (Jan 19, 2014)
- HTTP 协议中 Vary 的一些研究 (Jan 01, 2014)
2013 年
- Webkit 异步加载 CSS 的奇怪现象 (Dec 25, 2013)
- 小成本实现部分选中的复选框 (Dec 22, 2013)
- devicePixelRatio = 1.5 引发的问题 (Dec 20, 2013)
- 页面动画滚动的交互细节 (Dec 08, 2013)
- BOM 和 JavaScript 中的 trim (Dec 07, 2013)
- AMD 的 CommonJS wrapping (Dec 05, 2013)
- Chrome 滚动条冻结现象 (Dec 02, 2013)
- Genymotion:超赞的安卓虚拟机 (Nov 28, 2013)
- 两个常见的 Affix 交互问题 (Nov 25, 2013)
- 开始用 Markdown 写博客 (Nov 24, 2013)
- 本博客正式启用 HTTPS (Nov 22, 2013)
- Chrome 31 的一个 Bug(已修复) (Nov 14, 2013)
- 打造 Mac 下的完美开发环境 (Oct 09, 2013)
- iOS7 中 Safari 的一个离奇 Bug (Oct 08, 2013)
- FileSystem API 实现文件下载器 2 (Oct 01, 2013)
- 用 FileSystem API 实现文件下载器 (Oct 01, 2013)
- 不会被 iOS 停掉的网页定时器 (Sep 25, 2013)
- ES6 中的 Set、Map 和 WeakMap (Sep 23, 2013)
- ES6 中的生成器函数介绍 (Sep 20, 2013)
- image-orientation: 让图片自动旋转 (Sep 15, 2013)
- 如何在 Mac 下使用 Fiddler (Sep 13, 2013)
- 尝试 ES6 中的箭头函数 (Sep 11, 2013)
- 中英文混排及中文引号 (Sep 10, 2013)
- IE 的浏览器模式和文本模式(二) (Sep 07, 2013)
- 看懂 Fiddler 的瀑布图 (Sep 04, 2013)
- 打造自己的在线收藏服务 (Sep 01, 2013)
- firebug1.12 更新 (Aug 29, 2013)
- Http 请求头中的 Proxy-Connection (Aug 26, 2013)
- 四种常见的 POST 提交数据方式 (Aug 21, 2013)
- 使用 Canvas 绘制背景图 (Aug 18, 2013)
- [小Tip]用好浏览器的控制台 (Aug 11, 2013)
- 一些安全相关的HTTP响应头 (Jul 23, 2013)
- Content Security Policy 介绍 (Jul 22, 2013)
- 你所不知道的HostOnly Cookie (Jul 10, 2013)
- 《奇舞周刊》有 Kindle 版合辑啦 (Jul 03, 2013)
- 关于提高 Tab 切换速度的思考 (Jul 01, 2013)
- cocos2d-html5 文字自动换行 (Jun 25, 2013)
- 异步编程:When.js快速上手 (Jun 23, 2013)
- Web Search Workflow for Alfred (May 09, 2013)
- getAttribute和getAttributeNode (Apr 25, 2013)
- 页面变灰二三事 (Apr 22, 2013)
- [小Tip]给元素命名时容易踩的坑 (Apr 06, 2013)
- Alfred2工作流推荐 (Mar 28, 2013)
- 用Alfred2快速搜索QWrap文档 (Mar 27, 2013)
- Chrome扩展与用户隐私 (Mar 20, 2013)
- Google Reader二三事 (Mar 19, 2013)
2012 年
- [彩蛋]这是什么? (Dec 13, 2012)
- JavaScript动画漫谈 (Nov 15, 2012)
- 第三方Flash组件带来的安全问题 (Jul 22, 2012)
- [小Tip]Webkit下设置hash的一个坑 (Jul 19, 2012)
- firebug1.10更新 (Jul 16, 2012)
- [小Tip]IE9中focus执行顺序差异 (Jul 10, 2012)
- 在Mac下使用berserkJS (Jul 10, 2012)
- 如何更好的使用Cookie (Jun 19, 2012)
- [小Tip]ABP扩展对前端开发的影响 (Mar 29, 2012)
- 用Weinre远程调试移动网页 (Mar 14, 2012)
- Webkit下最无敌的跨大域方案 (Mar 02, 2012)
- 让Sublime Text2支持浏览器中预览 (Feb 20, 2012)
- 图片自动旋转的前端实现方案 (Feb 15, 2012)
- 关于浏览器模式和文本模式的困惑 (Feb 08, 2012)
- [小Tip]IE矩阵滤镜Matrix一个大坑 (Jan 13, 2012)
- 如何获取浏览器的DNS解析时间 (Jan 07, 2012)
- 一个浏览器诊断小工具 (Jan 01, 2012)
2011 年
- [小Tip]JavaScript转整数杯具两则 (Dec 30, 2011)
- Sublime Text2:超赞的现代编辑器 (Dec 23, 2011)
- [小Tip]下载.lnk遇到的怪事 (Nov 29, 2011)
- QWrap简介之核心库定制 (Sep 28, 2011)
- 恭喜月影结婚啦 (Sep 23, 2011)
- 也谈跨域数据交互解决方案 (Sep 12, 2011)
- FaceBook的NoScript策略 (Sep 10, 2011)
- 关于前端代码Review的一些思考 (Aug 27, 2011)
- 用Opera Mobile调试手机版网页 (Jul 19, 2011)
- 一种效果还不错的图片排列策略 (Jul 12, 2011)
- QWrap简介之组件编写 (Jul 06, 2011)
- IE10 Platform Preview 2 (Jul 04, 2011)
- [自己动手]让Editplus更好用 (Jun 26, 2011)
- 如何使用Flash来实现本地存储.续 (Jun 23, 2011)
- 使用浏览器原生函数优化动画 (Jun 20, 2011)
- CSS裸奔节2011 (Apr 08, 2011)
- Django博客系统部署小结 (Mar 26, 2011)
- IE9、Opera11.10和firefox4 (Mar 21, 2011)
- 换域名的一些善后工作 (Mar 18, 2011)
- 两个激进的前端优化手段 (Mar 16, 2011)
- Pingback和Xml-RPC (Mar 14, 2011)
- Django博客系统开发小结 (Mar 13, 2011)
- 又换新博客了~ (Mar 12, 2011)
2009 年
- 使用Gears获取当前地理位置 (Sep 05, 2009)
- 用flash计算图片平均颜色 (Sep 02, 2009)
- 跨浏览器的“复制到剪贴板”.续 (Aug 25, 2009)
- Javascript与Flash通信全解析 (Aug 24, 2009)
- 轻松去掉web中flash右键菜单 (Apr 07, 2009)
- 使用js callback的一个小技巧 (Apr 03, 2009)
- Flash10安全策略更新 (Jan 30, 2009)
- 用Fiddler来调试web应用 (Jan 11, 2009)
2008 年
- 利用服务器返回header来传输数据 (Oct 05, 2008)
- Maxthon引发的系列问题 (Sep 20, 2008)
- 如何使用Flash来实现本地存储 (Sep 12, 2008)
- 一种很帅的JS代码书写方式 (Sep 09, 2008)
- 如何控制浏览器的历史记录 (Sep 05, 2008)
- 不同浏览器处理后退的一些异同 (Sep 03, 2008)
- IE与Firefox处理Attribute的几点差异 (Sep 02, 2008)
- Opera下自定义右键菜单的研究 (Aug 10, 2008)
- 跨浏览器的“复制到剪贴板” (Aug 09, 2008)
- 慎用keyup事件 (Jul 28, 2008)