Erning.write()

Reloading

Mac Tips 1

Prevent .DS_Store file creation on network stores

defaults write com.apple.desktopservices DSDontWriteNetworkStores true

Enable Remote Disc for MacBook Pro

defaults write com.apple.NetworkBrowser EnableODiskBrowsing -bool true
defaults write com.apple.NetworkBrowser ODSSupported -bool true

Flush DNS Cache

dscacheutil -flushcache

Set hostname and prevent the DHCP server to change your host name

scutil --set HostName

Hide the file/folder from GUI Finder

chflags hidden 
chflags nohidden 

Remove file attributes for Finder

xattr -l 
xattr -d com.apple.FinderInfo 

Clean Up Finder’s “Open With” Menu

  • Go to your Home/Library/Preferences folder
  • Find “com.apple.LaunchServices” file and trash it (you can back it up if you want)
  • Test it out!

lifehacker

VIM Tips 2 - Viewports

  • :sp or :split 拆成上下两个显示区域
  • :vsp or :vsplit 拆成左右两个显示区域

  • CTRL-w CTRL-w 在显示区域间切换

  • CTRL-w j 移到下面一个显示区域
  • CTRL-w k 移到上面一个显示区域
  • CTRL-w h 移到左面一个显示区域
  • CTRL-w l 移到右面一个显示区域
  • CTRL-w = 平分各个显示区域
  • CTRL-w - 减小一行当前显示区域
  • CTRL-w + 增加一行当前显示区域
  • CTRL-w q 关闭当前显示区域
  • CTRL-w r 向右(下)滚动显示区域
  • CTRL-w R 向左(上)滚动显示区域

VIM Tips 1

:set ignorecase
通常你都会需要这个设置

:set smartcase
当搜索的时候使用大写字母将忽略上面的ignorecase设置

:syntax on
开启源代码高亮

:set syntax=perl
强制设定某一种语言的代码高亮,通常是根据文件后缀名自动匹配

:h regexp<C-D>
当敲入[CTRL-D]之后,会得到一个包含”regex“的帮助列表,用[TAB]键可以在列表中选择

q:q/
打开一个最近使用命令的小窗口;后一个为打开最近搜索指令的小窗口 在小窗口敲RETURN键会执行所在行的命令。使用:quit退出小窗口。

安居客移动应用

iPhone应用真是太火了,我们一位同事利用安居客的API开发了一个查看周边房屋价格走势的iPhone应用,看上去还挺不错的,因此我们把它给转正了。经过调整用户界面,重构代码,然后重新以公司的帐号发布。

这个正式的app正在苹果的审核中,很快就会出现在itunes上了。这里先给大家透露一下它的界面。
更新:itune上的正式的app

5189766807 5189766461 5189766191

好了,下面说正题。这篇Blog的重点是招聘iPhone和Andriod的开发工程师。只要你对移动开发有很高的热情和很强的学习能力,不论你喜欢iOS还是Andriod平台我们都欢迎。如果你对移动开发已经很熟练了,或者在appstore上已经发布过应用,我们也是欢迎的。

关于安居客,可以参考年初的这篇blog。当然,里面的各项数据已经out了,简单的x4应该和目前的差不多。

如果你有兴趣,请尽快与我联系。另外,之前招聘的职位长期有效。

APPLESOFT BASIC CODE SAMPLE

1 GR
2 FOR I=1 TO 15:COLOR=I:HLIN 14,16 AT 11:VLIN 12,13 AT 13:VLIN 12,13 AT 17:HLIN 14,16 AT 14:VLIN 15,16 AT 13:VLIN 15,16 AT 17:HLIN 14,16 AT 17:HLIN 20,22 AT 11:VLIN 12,13 AT 19:VLIN 12,15 AT 23:HLIN 20,23 AT 14:PLOT 22,16:HLIN 19,21 AT 17:HLIN 15,17 AT 20:PLOT 14,21:VLIN 22,25 AT 13:HLIN 13,17 AT 23:VLIN 24,25 AT 17:HLIN 14,16 AT 26:PLOT 21,21:PLOT 20,22:PLOT 19,23:HLIN 19,23 AT 24:VLIN 20,26 AT 22:NEXT I:GOTO 2

复制上面的代码,并粘贴到下面这个网站,然后点击”Run”按钮
http://www.calormen.com/applesoft/

看看我在VirtualII上的运行结果

The Big Bang Anjuke

Code Swarm

上面这张图就是安居客在Subversion源代码库里的代码大爆炸。

接下来的视频可以看到从2007年的一个工程师到现在三十来个工程师的爆炸过程,挺有趣的。

—– CodeSwarm

工程师普遍采用的时区是当地时区-8

苹果往事

我很喜欢《苹果往事》这本书,它以工程师的视角写记录了很多趣闻轶事。加上是APPLE ][将我带入计算机这个领域的,所以我对这家公司有着相当的感情。

书中有多很有趣的事,放到近三十年后的今天也还一样。例如,工程师周末、晚上常加班,还是主动的;不少有价值的东西是工程师利用业余时间制作的;用代码行数统计工程师的工作量时工程师会填上负数;开发经理和工程师互动常有困难;工程师有惰性时,好的老板能够逼工程师完成工程师自己认为不可能的任务;现实扭曲力场(Reality Distortion Field)对创造力的作用….

还有一点我看出来了,工程师普遍采用的时区是当地时区-8

书中的故事都可以着folklore.org网站上读到。

动态域名解析服务

有自己的VPS,很多服务都可以自己来做了,例如我自己安装一个VPN用来穿墙。今天用PowerDNS做了一个动态域名解析服务,替换过去老旧的方法。现在不仅可以自己用,还可以提供给其他有动态域名解析需求的同学。

更新域名的API很简单,一个HTTP请求即可。API地址是: http://dynamic.wacao.com/api/plain.php,参数为,

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

其中hostshared_key需要我来提供。这里提供一个的host和shared_key给大家测试。testing, d035cdac09dd866ed8f4a244567c4daf。域名为testing.dynamic.wacao.com.。

由于仅是一个HTTP请求,客户端很容易用各种语言实现。我自己用的是一个简单的shell脚本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/bash

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

if test -z $1 || 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}" | sha1sum -t | awk '{print $1}'`
URL="${ENDPOINT}?host=${HOST}&time=${TIME}&sign=${SIGN}"
curl "$URL"

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

$ update-dynamic-dns.sh testing d035cdac09dd866ed8f4a244567c4daf
ok. 58.33.69.77
$ host testing.dynamic.wacao.com.
testing.dynamic.wacao.com has address 58.33.69.77

我将这个脚本加到crontab里,每5分钟更新一次。

*/5 * * * * /usr/local/sbin/update-dynamic-dns.sh ${HOST} ${SHARED_KEY}

如果觉得testing.dynamic.wacao.com这样的域名不好看,而且你有自己的域名,可以想我一样,给自己的域名加一个CNAME。例如我把alcohol.swanpan.com做了一个CNAME指到alcohol.dynamic.wacao.com

;; ANSWER SECTION:
alcohol.swanpan.com.    86400   IN  CNAME   alcohol.dynamic.wacao.com.
alcohol.dynamic.wacao.com. 5    IN  A   58.33.69.77

这样我在各个地方都能用alcohol.swanpan.com这个域名访问家里的机器,方便用它穿墙

想试试的朋友告诉我你要的host,我给你发送shared_key。

USB硬盘的固定设备名和自动休眠

AirPort Extreme可以外接USB硬盘提供文件服务,但是和它的路由功能一样,都不够满足我的需求。而作为穿墙路由器的华硕小机器有4个USB口,我还用它兼作文件服务器使用,提供Samba和NFS。

但是Gentoo在这里遇到两个小问题。

第一个问题,USB硬盘是可以热拔插,这样由于载入顺序的问题,每个硬盘设备名称可能会变化。例如这个机器自带一个读卡器,在没有外挂USB硬盘时启动后候设备名为/dev/sdb。之后插入USB硬盘,USB硬盘的设备名为/dev/sdc。但是如果挂着USB硬盘启动,这两个设备的设备名就正好反过来了。我希望是固定的设备名。

第二个问题,USB硬盘长时间不访问的时候不会自动停下来,这样既不省电也不利延长硬盘的寿命。我希望在不用的时候它可以休眠。

HOW-TO: ESXi and SSH

每次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 on the character)
7. Save “/etc/inetd.conf” by typing “:wq!”
8. Restart the management service “/sbin/services.sh restart”

用下面的方法可以避免重新启动机器

8. Restart the management service “/sbin/services.sh restart”
10 – Kill inetd : kill `ps | grep inetd | cut -f2 -d” “`
11 – Start inetd: inetd

参考:VMWare KB: Tech Support Mode for Emergency Support