hiredis 源码学习

前段时间学习 Redis 时候,听到 hiredis 的大名,正好也在做异步的学习,就找来代码学习一下。 我几乎不太会 C,仅限于最简单的语法,完全没有在生产环境中写过, 所以先看个 Client 简单代码,下次看 Memcached 代码应该会更顺畅一些。

Hiredis 是用 C 写的 Redis 客户端,对 Redis 协议进行了简单的封装, 同时提供了同步和异步的两种 API。Hiredis 的代码位于 https://github.com/redis/hiredis

more ...

Java 运行参数调整

JVM 在线上运行的时候,可以调整一些运行参数,查看参数帮助如下:

运行 java -h 可以看到 Java 运行可调整的参数。 运行 java -X 可以查看 Java 支持的额外参数。 注意一些参数的默认开启在 JDK6 和 JDK7 之间会有差异,甚至在 JDK7 的不同 update 也会有差异,运行 java -XX:+PrintFlagsFinal 查看默认的参数配置。

参考: Java HotSpot VM Options The most complete list of -XX options for Java JVM Tuning JVM Garbage Collection for Production Deployments JVM -XX: 参数介绍

more ...


从 SVN 到 Git,找回丢失的历史

前段时间在将公司的 SVN 项目迁移到 Git 上面去,遇到一个很少见的问题: 有一个小伙伴使用 git-svn 做 rename 操作时候,将一个目录 svn mv 了, 导致新目录只存了最近几个月提交历史,丢失了历史信息。对团队开发而言, 历史提交是非常宝贵的财产,我们想了一些办法,把这些数据提取出来。

more ...

Goodbye 2013, Hello 2014

2013 年末,我给自己制定了几个年度目标:

离梦想更近一步

找一个靠谱的姑娘,我感觉她需要我,我也需要她了

  1. 成为一个为百万用户级别提供技术支撑的人物,要能独当一面
  2. 帮助网站进行性能优化
  3. 制定规则,平衡猥琐实现和优雅
  4. 继续写博客,分享积累 + 翻译文章

关于感情

先来谈谈感情,我和她在一起一年半了,虽然偶尔有小摩擦,但总体上面还是非常幸福的。 找到一个能产生共鸣,生活兴趣相近,相互欣赏的人太难了。一定会珍惜的。

more ...

Linux 程序员的 Mac 安装记录

作为一个 Linux 的老用户,我再一次验证了那句老话「Linux 用户有钱就换 Mac」。 前段时间,托朋友从香港购入一台 rMBP,下面就是我的 Mac 使用安装记录。

Brew

Brew 是 Mac 下面的包管理工具,通过 Github 托管适合 Mac 的编译配置以及 Patch,可以方便的安装开发工具。

安装 Brew:

我安装的 Brew 包:

more ...


在 Python 中使用 GDB 来调试[译文]

大约一年前,我接触了 Java 中的 Btrace 能够不停机查看线上 JVM 运行情况的特性让我艳羡不已。 另外还有强悍的 jStack 和 jConsole 来进行运行期侦测,JVM 的工业级强度果然不是盖的。

当时公司技术方面也遇到了一些瓶颈,一部分原因是 CPython 本身的 IO 模型问题, 另一方面也和早期代码写的极不工整脱不了关系。万般无奈之下,我们用 Jython 推翻重做了主要业务,效果立竿见影,但同时也把真实问题给规避掉了。

在这之后我们在 JVM 的领导下,走上了康庄大道。但我心中始终还有一个梗, 就是想对性能遇到瓶颈的 Python Process 进行线上侦测。 这篇文章就是开始的第一步。

PS:这篇文章理论上是可行的,但是在我机器(Ubuntu 12.04 / 系统自带 Python) 无法正常执行,会爆出 unable to read python frame information 的问题。解决方法我会在下篇文章中写出。这里只是单纯翻译一下原文。

原文可以移步 https://wiki.python.org/moin/DebuggingWithGdb

more ...

15 分钟学会 R 语言[译文]

仗着自己有几门语言的基础,我在学新语言时候,都会选择一些快速入门教程。 比如 Learn X in Y minuts 就是我经常光顾的站点。

前段时间,小柒在用 R 写数据分析脚本,我就建议她把 Learn X in Y minuts 里面的 R 语言教程翻译出来。话说 Learn X in Y minuts 里面的中文贡献还是非常多的,赞。

Learn X in Y minuts 的源码托管在 Github。 小柒被我逼着把这篇 R 语言教程 翻译到 R 语言教程中文版

下面是译文,有不妥的地方可以留言或者直接去 Github 上面 Pull request。


R 是一门统计语言。它有很多数据分析和挖掘程序包。可以用来统计、分析和制图。 你也可以在 LaTeX 文档中运行 R 命令。

more ...