Dec 25, 2010

setup subversion on Debian/Ubuntu

清理目录时,发现很久前为我妹演示svn的工作机制时,写的怎么搭建subversion服务.

1. install software
$ sudo apt-get install subversion libapache2-svn

2.
$ sudo svnadmin create /home/svn
$ sudo chown -R www-data:www-data /home/svn

3. configure
$ sudo vim /etc/apache2/mods-enabled/dav_svn.conf
uncomment

DAV svn
SVNPath /home/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd


4. create password file
$ sudo htpasswd2 -cm /etc/apache2/dav_svn.passwd
$ sudo htpasswd2 -m /etc/apache2/dav_svn.passwd

5. reload apache2
$ sudo /etc/init.d/apache2 reload

deploy GAppProxy 2.0 on GAE

老板本的GAppProxy 都用了 219 days, 21:46:26 , 很久前就看到2.0支持ssl了,今天部署下.

现在只是每天使用,早就忘了,当年是这么把它传到 appspot.com的了。下面记下

0. Install Google App Engine SDK for Python
    http://code.google.com/appengine/downloads.html#Google_App_Engine_SDK_for_Python
    http://googleappengine.googlecode.com/files/google_appengine_1.4.0.zip

    download and extract uncompress google_appengine_1.4.0.zip.

    modify PATH variable in ~/.bashrc for GAE.

1. checkout GAppProxy
    $ svn checkout http://gappproxy.googlecode.com/svn/trunk/ gappproxy

2.deploy GAppProxy 
   modify fetchserver/app.yaml, application:


   $ cd gappproxy && appcfg.py update fetchserver


   login appspot.com, My Applications-> -> Versions, choose the lastest and make default.


3. edit localproxy/proxy.conf
   listen_port, fetch_server


4. testing
   $ localproxy/proxy.py

authenticate Debian/Ubuntu repositories: install public key

 W: GPG error: http://ftp.us.debian.org testing Release: The following signatures
couldn't be verified because the public key is not available: NO_PUBKEY xxxxxxxxxxxx

$ gpg --keyserver subkeys.pgp.net --recv-keys 55BE302B
$ gpg -a --export 55BE302B | sudo apt-key add -

or

sudo apt-key adv --keyserver pgp.mit.edu --recv-keys 55BE302B

Dec 23, 2010

搭建项目组内部wiki

  看到txt2tags有一段时间了,在Ubuntu下工作一个多月了吧,以后也会一直在Linux下工作,必须抓紧放弃讨厌的二进制文件格式,选个处理纯文本的工具完成文档。

  上周笔试题是边学边用txt2tags完成的,最近,项目组要写很多文档,为扩大做准备。首先想到的就是wiki了,其实,之前一直用trac做wiki的,但,trac有些不好的地方。

  trac的不爽之处:
  1. 啥都做, 喜欢 do one thing, and do it well.
  2. 貌似用的自己的数据库,想只把wiki分离出来不太方便
  3. 想把wiki页面转换成其他格式,不是很方便

  自己用过一段时间的vimwiki, 总觉得太简单了,而且,那天项目组来个用emacs的就不好整了。

  考虑到txt2tags one source multi target. 纯文本,语法也比较简单,容易上手,txt2tags.org 几乎所有页面都可以查看源文件。

  最终,决定用txt2tags,用git管理 *.t2t,大家都可以随便修改wiki页面,当然,修改稍微麻烦了些,必须先通过git checkout下来,必须学习txt2tags markup语法,然后,一个字一个字的写,写好再push上去,我已经写好git hooks/post-update 根据修改文件在/var/www/wiki下生成相应的 .html。

  虽然难了些,但,我们是开发组,大家应该多学习点知识,不管是编码还是写文档,争取都做得专业点,争取做公司技术实力最强的项目组。

  一切都刚刚开始,好的愿望,希望坚持会有好的结果。

Nov 29, 2010

working in Ubuntu

终于可以直接在pure Linux 上工作,可以不在使用Windows了, 目前公司要求安装Ubuntu

明天过去继续安装、配置, 安装乱七八糟的软件,修改配置 总是很麻烦,但,能不用windows 这点麻烦算什么 :-)

chinaunix php code jam

去年 CU 的C编程, 拿了个小奖, 结果看到晚了,我要的书都被其他人拿走了,只好拿了1000分。

今年十一快结束了,发现CU的PHP编程大赛,做了10几道题,又一个2等小奖。

今年CU mm 显然更加友好,我以为只有一件T恤,今天CU mm 打电话说还有本书呢, 赞

广告时间, 迎接ChinaUnix九周年庆技术实践之二----C/C++编程大赛!

Nov 25, 2010

fcitx en_US local

$ sudo apt-get install fcitx im-switch

英文locale, 所以要修改下配置文件, /etc/gtk-2.0/gtk.immodules 或者 /usr/lib/gtk-2.0/2.10.0/immodule-files.d/libgtk2.0-0.immodules

找到 xim , 在适当的地方加上 en,如下:
"xim" "X Input Method" "gtk20" "/usr/share/locale" "en:ko:ja:th:zh"

$ im-switch -s fcitx

note: 也许需要 dpkg-reconfigure locales

重启下 X即可

Nov 4, 2010

first oss contribution

  很久之前发现 alsa 有个shell script (alsa-compile.sh)不支持 Debian/Ubuntu, 刚好我公司用的是Debian testing, 所以发现了, 并且加了几行代码就可以支持了。
  最近我的任务就是给开源社区fix bug,所以,用我的巨烂英语, 很不好意思的和国外developer交流着
  patch 如下,下次争取fix c code
diff --git a/utils/alsa-compile.sh b/utils/alsa-compile.sh
index 4f72d10..1ae0c49 100755
--- a/utils/alsa-compile.sh
+++ b/utils/alsa-compile.sh
@@ -329,6 +329,16 @@ is_rpm_installed() {
     fi
 }

+# Echo "true" if deb installed, else "false"
+is_deb_installed() {
+    dpkg -l $1 2>&1 | grep -Eq '^ii'
+       if test "$?" = "0"; then
+               echo "true"
+       else
+               echo "false"
+       fi
+}
+
 # Install package
 # $1 is package name
 install_package() {
@@ -340,6 +350,14 @@ install_package() {
     Fedora|RHEL)
         test "$pkg" == "lsb" && pkg="redhat-lsb"
         ;;
+    Debian|Ubuntu)
+        test "$pkg" == "lsb" && pkg="lsb-release"
+        test "$pkg" == "git" && pkg="git-core"
+        test "$pkg" == "alsa-lib-devel" && pkg="libasound2-dev"
+        test "$pkg" == "gettext-tools" && pkg="gettext-base"
+        test "$pkg" == "gettext-devel" && pkg="gettext"
+        test "$pkg" == "ncurses-devel" && pkg="ncurses-bin"
+        ;;
     *)
         echo >&2 "Cannot install $1 for unsupported distribution $distrib."
         exit 1
@@ -352,6 +370,9 @@ install_package() {
     Fedora|RHEL)
         yum install -y $pkg
         ;;
+    Debian|Ubuntu)
+        apt-get install -y $pkg
+        ;;
     *)
         echo >&2 "Cannot install $pkg for unsupported distribution $distrib."
         exit 1
@@ -400,6 +421,12 @@ check_kernel_source() {
             install_package $kernel_devel
         fi
         ;;
+    Debian|Ubuntu)
+        local kernel_devel="linux-source-$(uname --kernel-release | sed 's/-.*$//')"
+        if test $(is_deb_installed $kernel_devel) = "false" ; then
+            install_package $kernel_devel
+        fi
+        ;;
     *)
         echo >&2 "Cannot install kernel sources for unsupported distribution $distrib."
         exit 1