<?xml version="1.0" encoding="UTF-8"?><!-- generator="WordPress/2.9.2" -->
<rss version="0.92">
<channel>
	<title>Erning.write()</title>
	<link>http://erning.net</link>
	<description>Reloading</description>
	<lastBuildDate>Sat, 27 Feb 2010 09:55:26 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>en</language>
	
	<item>
		<title>工程师普遍采用的时区是当地时区-8</title>
		<description><![CDATA[
我很喜欢《苹果往事》这本书，它以工程师的视角写记录了很多趣闻轶事。加上是APPLE ][将我带入计算机这个领域的，所以我对这家公司有着相当的感情。
书中有多很有趣的事，放到近三十年后的今天也还一样。例如，工程师周末、晚上常加班，还是主动的；不少有价值的东西是工程师利用业余时间制作的；用代码行数统计工程师的工作量时工程师会填上负数；开发经理和工程师互动常有困难；工程师有惰性时，好的老板能够逼工程师完成工程师自己认为不可能的任务；现实扭曲力场(Reality Distortion Field)对创造力的作用&#8230;.
还有一点我看出来了，工程师普遍采用的时区是当地时区-8  
书中的故事都可以着folklore.org网站上读到。
]]></description>
		<link>http://erning.net/archives/the-timezone-for-engineers-is-usually-8-hours-behind</link>
			</item>
	<item>
		<title>动态域名解析服务</title>
		<description><![CDATA[有自己的VPS，很多服务都可以自己来做了，例如我自己安装一个VPN用来穿墙。今天用PowerDNS做了一个动态域名解析服务，替换过去老旧的方法。现在不仅可以自己用，还可以提供给其他有动态域名解析需求的同学。
更新域名的API很简单，一个HTTP请求即可。API地址是: http://dynamic.wacao.com/api/plain.php，参数为，

host &#8211; 主机名，FQDN为 ${host}.dynamic.wacao.com
time &#8211; unixtime形式的请求时间，时间误差在正负5分钟内有效
sign &#8211; 签名，格式为 sha1(${host}${time}${shared_key}) 
ip &#8211; 可选。如果未提供IP地址则采用客户端请求的来源地址

其中host和shared_key需要我来提供。这里提供一个的host和shared_key给大家测试。testing d035cdac09dd866ed8f4a244567c4daf。域名为testing.dynamic.wacao.com.。
由于仅是一个HTTP请求，客户端很容易用各种语言实现。我自己用的是一个简单的shell脚本。

#!/bin/bash

function usage {
    echo "Usage: $0 {host} {shared_key}"
}

if test -z $1 &#124;&#124; test -z $2
then
    usage
    exit 1
fi

HOST=$1
SHARED_KEY=$2
ENDPOINT="http://dynamic.wacao.com/api/plain.php"

TIME=`date +%s`
SIGN=`echo -n "${HOST}${TIME}${SHARED_KEY}" &#124; sha1sum -t &#124; awk '{print $1}'`
URL="${ENDPOINT}?host=${HOST}&#038;time=${TIME}&#038;sign=${SIGN}"
curl "$URL"

执行后立即能够解析，TTL为5秒。

$ update-dynamic-dns.sh testing d035cdac09dd866ed8f4a244567c4daf
ok. 58.33.69.77
$ [...]]]></description>
		<link>http://erning.net/archives/dynamic-domain-service</link>
			</item>
	<item>
		<title>USB硬盘的固定设备名和自动休眠</title>
		<description><![CDATA[AirPort Extreme可以外接USB硬盘提供文件服务，但是和它的路由功能一样，都不够满足我的需求。而作为穿墙路由器的华硕小机器有4个USB口，我还用它兼作文件服务器使用，提供Samba和NFS。
但是Gentoo在这里遇到两个小问题。
第一个问题，USB硬盘是可以热拔插，这样由于载入顺序的问题，每个硬盘设备名称可能会变化。例如这个机器自带一个读卡器，在没有外挂USB硬盘时启动后候设备名为/dev/sdb。之后插入USB硬盘，USB硬盘的设备名为/dev/sdc。但是如果挂着USB硬盘启动，这两个设备的设备名就正好反过来了。我希望是固定的设备名。
第二个问题，USB硬盘长时间不访问的时候不会自动停下来，这样既不省电也不利延长硬盘的寿命。我希望在不用的时候它可以休眠。
设备名的问题可以用udev的rules解决。我加了一个udev配置文件/etc/udev/rules.d/99-external-storages.rules。

KERNEL=="sd*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="0158", ATTRS{serial}=="20071114173400000", SYMLINK+="cardreader%n"
KERNEL=="sd*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="1bcf", ATTRS{idProduct}=="0c31", ATTRS{serial}=="20090717090A", SYMLINK+="storage/neso%n"

这样给内置的读卡器添加了一个设备名的符号链接/dev/cardreader；给我的NESO 1T硬盘添加了设备名符号链接/dev/storage/neso。用固定名称访问设备的问题就解决了。
第二个问题稍微复杂些，一直没找到方便的方法。laptop-mode-tools也没能满足我的要求。一番搜索后找到sdparm可以用来控制USB硬盘，还有一段perl脚本用来调度sdparm。这样就可以满足我的需求了。脚本的原始出外我给忘了，这里我稍微修改了一点，增加对设备名符号链接的支持。

#!/usr/bin/perl -w
use File::Basename;
use Cwd 'abs_path';

$statfile = "/proc/diskstats";
die "$0: Cannot read $statfile\n" unless -r $statfile;

$&#124; = 1;
($disk, $interval) = (@ARGV);

if (-l $disk) {
    $original_disk = $disk;
    while (-l $disk) {
        $disk [...]]]></description>
		<link>http://erning.net/archives/static-device-name-and-auto-spin-down-for-usb-harddisk</link>
			</item>
	<item>
		<title>HOW-TO: ESXi and SSH</title>
		<description><![CDATA[每次ESXi要在服务器上开启SSH服务，总是忘记具体操作方法，都要去google才行，这里记录一下。

 1. Go to the ESXi console and press alt+F1
 2. Type: unsupported
 3. Enter the root password(No prompt, typing is blindly)
 4. At the prompt type “vi /etc/inetd.conf”
 5. Look for the line that starts with “#ssh” (you can search with pressing “/”)
 6. Remove the “#” (press the “x” if the cursor is [...]]]></description>
		<link>http://erning.net/archives/how-to-open-ssh-service-on-vmware-exsi4</link>
			</item>
	<item>
		<title>安居客招聘架构师</title>
		<description><![CDATA[先开门见山，安居客招聘架构师，包括软件架构师和系统架构师。工作地点是上海浦东陆家嘴。有意者请与我联系，@erning 或 erning at anjuke dot com。
随着公司的发展，安居客也开始组建专门的架构师团队了。这个职位没还有特定的需求描述，简单说需要具备互联网应用的多方面经验。还有至少要会写代码，会翻墙。
安居客目前需要从架构方面解决的问题有很多，比如从代码的框架、开发流程开始，使得我们越来越多的工程师能够方便的并行开发；项目能够更方便的部署到测试环境、staging环境和生产环境；更有效的监控网站的各个模块；提高性能；消除减少单点故障&#8230;&#8230;
我们需要已经具备实际经验的资深人士加盟，当然也欢迎认为自己能行的年轻人。
很多人可能还不了解或不知道安居客(http://www.anjuke.com/)，我稍微介绍一下。
安居客也是一个start-up公司（有VC、有上市计划，这些都可以google到）。从2007年开始，经过三年的努力，在网络找房的平台上做到了一定的成绩。从各项数据上看，都做到了每年10倍的增长。
业务上安居客有明确的商业模式，很早就盈利了（不是靠流量买广告）。从刚开始的2007年就有收入，到2009年全年实现的销售收入比年初的计划翻了一倍多。具体数额公司没说能够公开，就不好透露。
还是主要说说技术部门的情况。在2007年网站刚上线的时候还部署在虚拟机里的，2个开发工程师。2008年初有三台服务器，不到20万的日访问量，5个开发工程师。现在近百台服务器部署在多个IDC，约1000万的日访问量，差不多20个开发工程师。
网站目前架构简单说是PHP+MySQL运行在Linux上，加上用Java实现的一些后端服务模块。一样也用到了很多开源项目，例如搜索用的是Lucene，消息系统用的是RabbitMQ，前端是Nginx。图片存储用到了MogileFS（现在每天上传的照片超过40万张）。还有Squid, Memcached等等。
大致情况就是这样了。再有在安居客这样快速发展的start-up公司，以我的经验可以体验到和大公司不同的乐趣。因为你可以也需要接触到开发和运营一个网站的各个方面；有个平台可以将自己的想法付诸实现；还能享受到将一个网站从小做到大的快乐。
再次邀请有兴趣的朋友加盟。还请朋友们多帮我推荐。另外安居客除了架构师还需要很多PHP开发工程师、Java开发工程师、测试工程师和系统管理员。
]]></description>
		<link>http://erning.net/archives/anjuke-is-recruiting-architect-2010-01</link>
			</item>
	<item>
		<title>mppc for kernel 2.6.31</title>
		<description><![CDATA[之前我搞了一台华硕的小机器做穿墙路由器，操作系统用的是Gentoo Linux。
SSH的socks5钻墙是好了，但我现在还想要开VPN到墙外，还有VPN到公司里，这样在家里用起来就更方便了。
有些PPTP的VPN需要mppe,mppc。而我用的Gentoo不像Ubuntu，原装的内核不带mppe-mppc模块，得自己打补丁。可是这补丁只到2.6.13，之后的没有了。之前每次内核升级都遇到同样麻烦:&#124;
不过最终还是google到了devil-linux项目里现成的2.6.31补丁。


cd /usr/src/patches
wget http://ftp.devil-linux.org/pub/devel/sources/1.4/linux-2.6.31-mppe-mppc-1.3.patch.bz2
bunzip2 linux-2.6.31-mppe-mppc-1.3.patch.bz2
cd /usr/src/linux
patch -p1 &#60; /usr/src/patches/linux-2.6.31-mppe-mppc-1.3.patch
make menuconfig


选上CONFIG_PPP_MPPE_MPPC=m

Device Drivers  --->
[*] Network device support  --->
&#60;M&#62;   PPP (point-to-point protocol) support
&#60;M&#62;     Microsoft PPP compression/encryption (MPPC/MPPE)

然后重新编译安装内核。这样就有了ppp_mppe_mppc模块。
最后emerge ppp的时候需要带上USE=&#8221;mppe-pmmc&#8221;参数。我是把&#8221;net-dialup/ppp mppe-mppc&#8221;添加到&#8221;/etc/portage/package.use&#8221;文件里。
]]></description>
		<link>http://erning.net/archives/mppc-for-kernel-2-6-31</link>
			</item>
	<item>
		<title>安居客三周年年会上的光影节目</title>
		<description><![CDATA[
这个由技术部和运营部联合的节目我觉得是最好的
]]></description>
		<link>http://erning.net/archives/lighting-show-on-the-third-anniversary-of-anjuke</link>
			</item>
	<item>
		<title>My Linux Gateway</title>
		<description><![CDATA[
使用透明网关，将web流量通过squid走，cache之后可以提高家里机器访问web的速度。
通过squid配置，将被墙的站点设置成通过SSH隧道走。但squid本身不能forward给socks5代理，因此中间加了个privoxy中转。被墙的站点也可以在squid缓存，节省流量。
如果所有的web访问都通过SSH隧道，访问国内的站点慢了。不仅会反向被墙还浪费海外主机的流量。
没有海外主机的时候，SSH隧道可以用TOR替代。
https不可以做透明代理，这时候需要将浏览器的proxy设置到网关的squid。
图上没标出，网关上还安装有bind，提供域名解析服务，用来对付DNS解析被篡改的问题。
现在这个硬件用的是Asus EeeBox b202，安静省电。
]]></description>
		<link>http://erning.net/archives/my-linux-gateway</link>
			</item>
	<item>
		<title>好租</title>
		<description><![CDATA[好租(http://haozu.com)为什么google都不收入呢？难道这个域名原来有过前科？
]]></description>
		<link>http://erning.net/archives/haozu-com-excluded-by-google</link>
			</item>
	<item>
		<title>410的OpenID讨论</title>
		<description><![CDATA[
照片源自Yupoo
]]></description>
		<link>http://erning.net/archives/410-openid-discussion</link>
			</item>
</channel>
</rss>
