Replace string to $HOME by sed

sed "s/HOME/$HOME/g" t
# sed: -e expression #1, char 9: unknown option to `s'

Why? The $HOME contains ‘/’, It is in conflict with separating character. So, change the separating character to ‘|’.

sed "s|HOME|$HOME|g" t
# Passed!

Over!

自编译 Firefox 4.0b11 安装中文语言包

最近为龙芯平台编译了 Firefox 4.0b11,默认没有中文语言支持,需要手动安装。(现在己集成到 language-pack-zh-hans-base 包中)

下载语言包

wget http://releases.mozilla.org/pub/mozilla.org/firefox/releases/4.0b11/linux-i686/xpi/zh-CN.xpi

安装语言包
在 Firefox 菜单 -> 中打开文件 zh-CN.xpi,会自动进行安装,完成后重新启动 Firefox。

应用语言包
在安装完成后语言可能还没有被应用,需要手动修改配置。打开 about:config,设下面下列,并重启 Firefox。

general.useragent.locale = zh-CN
intl.accept_languages = zh-cn,zh

Over!

MySQL 5.5 禁用 InnoDB 引擎

升级 MySQL 至 5.5 出现了问题,skip-innodb 禁用 InnoDB 引擎导致服务不能启动。查看官网得知从 5.5.5 开始默认使用 InnoDB 引擎,问题应该在这里。InnoDB 引擎的性能可能不错,但是内存使用也不少,我的小内存 VPS 有点承受不起。

VPS 上的 MySQL 目前只跑 WordPress,查看导出的 sql 文件中创建表都使用了 MyISAM 引擎,果断禁用 InnoDB 之。

my.cnf

[mysqld]
...
default-storage-engine = MyISAM
 
...
skip-innodb
...

Over!

咪咕音乐盒修复记

中国移动加入了 Linux 基金会,成为了啥金会员,这个和我关系不是很大哦。它开发了一个跨平台的音乐播放器 咪咕,这个和我有点关系。我安装上后发现音乐不能正常播放,程序会自动从第一首尝试到最后一首,就是没有一首可以播放,当时我就火了,立即删除之骂这破播放器垃圾。

从朋友那得知它使用的非常好,我觉得我处理问题有点草率了,很有可能问题不在咪咕上。(后来事实证明问题就在ISP(中国联通承德分公司)恶意修改我的HTTP请求头的UA字段值,咪咕也有责任,明知我们这些用户在中国还让这样的事发生,中国是这什么样的地方啊!!) 就在这个时候我突然想到是不是因为我的ISP会自动把我的HTTP请求头中的UA字段值修改导致的?以前在给布布的博客上留言时就发现我的浏览器是 IE,系统是 Windows XP,抓包发现ISP有这样的行为的。

我原本的 UserAgent

Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.12) Gecko/20101027 Ubuntu/10.10 (maverick) Firefox/3.6.12

ISP 恶意修改后

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)

给咪咕这样的程序提供音乐下载的服务器可能会校验一下UA是不是咪咕播放器的,虽然这个不能作为保证,但是可能性很大,于是我又抓包找出咪咕可能连接的服务器IP地址:

60.217.241.141
60.217.232.190
60.217.241.79
60.217.241.72
221.206.124.233
125.39.39.111
221.204.242.118

我又将上面的IP表编辑成路由命令,使访问这些IP都经过远在美国的VPS路由,终于听到美妙的音乐啦!

route add 60.217.241.141 dev tun0
route add 60.217.232.190 dev tun0
route add 60.217.241.79 dev tun0
route add 60.217.241.72 dev tun0
route add 221.206.124.233 dev tun0
route add 125.39.39.111 dev tun0
route add 221.204.242.118 dev tun0

我听个歌容易嘛……

Over!

Apache MPM ITK 配置

vim /etc/apache2/apache.conf
<IfModule mpm_itk_module>
StartServers        1
MinSpareServers     1
MaxSpareServers     4
MaxClients          256
        MaxRequestsPerChild     8192
AssignUserID ${APACHE_RUN_USER} ${APACHE_RUN_GROUP} # 很重要
</IfModule>

如果不要 apache.conf 文件中指定一个全局的 AssignUserID,Apache 服务进程将运行在 root 用户下,这样没有指定用户的 Virtual Host 就会进行在高权限下,很危险!

Over!

架设通过 SSH 和 HTTP 协议的 Git 服务器

本文描述如何架设通过 SSH 协议和 HTTP 协议的 Git 服务器,以 Ubuntu 操作系统为例。通过 SSH 协议方式 push,而 HTTP 方式则提供给匿名用户 clone。

这个方案可以通过用户和文件系统的权限很方便的控制项目的访问权限,开源还是闭源。

软件需求
1. git-core
2. openssh-server
3. apache2

服务器端
1. 安装 git-core

sudo apt-get install git-core

2. 创建 git 用户和组
可以使用密码认证,也可以使用证书。

sudo groupadd git
sudo useradd -d /home/git -m -g git git
sudo passwd git

3. 创建虚拟主机
这个不详细说了,没有什么特别设置。这里假设根目录是 /home/git/

4. 创建一个新的版本库

mkdir /home/git/test.git
cd /home/git/test.git
git --bare init
chmod +x hooks/post-update

客户机端
1. push 到远程版本库

mkdir test
cd test
git init
echo "test" > README
git add .
git commit -m 'Init.'
git remote add origin git@server_addr:test.git
git push origin master

2. clone 远程版本库

git clone http://server_addr/test.git

Over!