玩玩开源

将以前写的一个 Code Review 小工具放到 Google Code 上了。放上去一是玩玩开源,体验一下 Google Code 的功能,二是发挥它的“萤火之光”。东西是很简单,但是前同事离职创业的时候把这个东东拷回家了(偶然在他的电脑上看到 :-),让我觉得这个小玩意还是有点用的。

类似的工具很多,但要么不通用,例如 Sun 有个 wx webrev 全套工具很好用,可惜只支持内部的代码管理工具,要不就是太大,例如 Review Borad,太庞大了。而我这个刚刚好,简单说一下就是提供一个工具可以比较两个文件或者目录,生成各种格式 diff 的静态 html 页面,另有有一个 wrapper 脚本可以在当前 svn 工作目录从还未提交的修改生成代码复查的 web 页面,比原始的 diff -r 或者 svn diff 好读得多,反正用在我们自己项目里面非常方便。

增加其他版本控制工具的支持也不难,但是我们现在用 svn,所以我就先不给自己找麻烦了。其他就看主页 coderev 吧。

(Update on Aug 23, 2008) 将版本控制相关的命令抽象了一下,定义了一些 entry point,SVN 和 CVS 的操作放到单独的 lib 里面实现,很像驱动程序了,呵呵。这个设计我自个很满意,写好了之后加个 CVS 支持只花了几分钟,等用到 git 的时候相信也能很快实现。

Aug 20, 2008 at 1:01am | 3 Comments
Tags: and

Java Open Source Announcement

这个声明势必在业界引起不小的震动。不用说,一定会出现大量的关于这一事件的 blog。

...

WHAT IS HAPPENING:

On Monday, November 13, Sun will announce the open sourcing of Java
technology. By releasing all of the key Java implementations - Java
Standard Edition (traditionally run on desktops), Java Micro Edition
(traditionally run on phones and embedded devices) and Java
Enterprise Edition (traditionally run in business infrastructure) -
using the Free Software Foundation's GNU General Public License
(GPLv2), the license at the center of the GNU/Linux community - we
are reaching out to new developers. Frankly, we are reaching out to a
community of developers that historically viewed Sun as an outsider.

With this move, we are no longer an outsider, we are the world's
largest contributor to both the free software and GPL communities. We
are now the free software movement's most significant benefactor. And
as we move ahead and you communicate with customers, partners and
across the blogosphere, please make sure they all know.

And make sure they know why this is good for our business: the more
developers, devices and new services on the internet - the more
demand there is for the network innovation Sun sells to the marketplace.

...

我有个也是学计算机的同学,在 OpenSolaris 开源一年的时候还没有听说过它,宣传不可谓不失败。这次我响应一下号召,呵呵。请向你的朋友、同事、合作伙伴宣传这一事件,

Nov 13, 2006 at 10:53pm | 0 Comments
Tags:

Web OS

从朋友那听到 webos 一说,随便一搜,原来并不是空话, YouOS 这个 MIT 的作品,把 WebOS 从想象变成了现实,可以毫不夸张的说,它真的能算一个操作系统,用浏览器登陆后,看到界面类似于 Gnome,有浏览器,桌面图标,墙纸,文件管理器,富文本编辑器,便签,内部邮件工具,内部聊天工具,甚至还有一个酷酷的 Shell 终端窗口,我想任何人看第一眼都会说“哇!” :o 赶紧注册一个帐号试一试吧!下面是个浏览器全屏后的截图(19"显示器还是不够大呀):

另外一个称为 eyeOS 的东东相对 YouOS 来说功能就简单多了,但是它是基于 GPL 的开源软件,它是个简单的桌面环境,文件管理器,日历程序,计算器,相当强大的富文本编辑器,桌面主题非常绚丽,我家小鼠看一眼都喜欢上了 ;-) 同样值得期待。

更多 Screenshot

我搭了一个 eyeOS,想看看的朋友可以在 这里 登陆,用户名:iam,密码:agoodman,你是个好人,不会搞破坏,对吧? ;-) (退出会话的按钮在右下角)

Jul 28, 2006 at 11:26pm | 0 Comments
Tags: and

SSH via Proxy

公司只能通过 http proxy 上网,Solaris 里面自带的 ssh-http-proxy-connect 命令不管用,想到 dreamhost 提供的 shell 中摆弄几下总也不成功。今天 google 到一个东西可以说是最好的解决办法:goto-san-connect 1.96,比以前发现的http tunnel方便多了。

源码:http://zippo.taiyo.co.jp/~gotoh/ssh/connect.c

编译方法源码里就有。

用于 openssh 时在 ~/.ssh/config 里用 ProxyCommand 命令,例如:

Host joyus
User fakename Hostname joyus.org
ProxyCommand connect -4 -H proxyserver:port %h %p

更多信息:

Using OpenSSH through a SOCKS compatible PROXY on your LANhttp://zippo.taiyo.co.jp/~gotoh/ssh/openssh-socks.html
Detailed usagehttp://zippo.taiyo.co.jp/~gotoh/ssh/connect.html

打包下载:http://joyus.org/pub/goto-san-connect-1.96.tar.gz

Jul 10, 2006 at 10:32pm | 0 Comments
Tags: , and

GNU screen实在是太帅了!

在单位电脑上用 screen 启动要长时间运行的程序,回到家 VPN 登到机器上后,screen -d -r 恢复,哈哈,终端就切换到我这里来了,看看日志,没啥问题,再 detach 让它接着运行,明天去公司再切换回去看,虚拟的终端太棒了。简单记一下基本用法:

$ screen -t “ssh-host1″ ssh host1 参数 -t 指定一个 title,便于标示多个窗口时

C-a : 打开命令输入,类似 VIM 的冒号模式

在冒号提示符后面可以启动新任务:screen ssh -t “host2″ console.sh host2

C-a c 直接开个新 shell

$ vim somefile 在新 shell 中启动新任务,这样任务都在一个会话(session)中

C-a C-d 断开(detach)当前会话,进程仍在后台执行,即使退出最外面的 shell,只要不断网不关机,session 都会在那

other-term $ screen -ls 列出所有的 session,这个例子中只有一个

other-term $ screen -r 恢复这个 session

other-term $ screen -d -r 如果其他终端 attach 到了这个 session,先断开它,再从本终端恢复

C-a S 开个新窗口,注意是大写 S,小写 s 是发送 C-S,终端会停止滚屏的哦(C-a C-q 恢复)

C-a TAB 切换到新窗口

C-a 1 在当前窗口中打开编号为 1 的任务

C-a C-n 下一个任务

C-a C-p 上一个任务

C-a C-a 循环切换任务

C-a ? 列出帮助信息,记住这个就不怕了

所有命令默认都是 C-a 开始,在 bash 中本来这个键本来是跳到行首的,没了这个功能可不太爽,定制的方法是在 ~/.screenrc 中指定,例如指定为后引号 `:

escape ``

这样所有命令都变为 ` 开始,要输入 ` 本身,则要按它两次。

再如始终显示状态条,包括窗口 ID 号和名字等信息

hardstatus string '%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<'

screen 主页:http://www.gnu.org/software/screen/

一个不错的介绍:http://gentoo-wiki.com/TIP_Using_screen

Jun 22, 2006 at 6:00am | 0 Comments
Tags: , , and

Thunderbird 1.5 拼写检查改进了

Thunderbird 1.5 不错,他们周末编译出了 Solaris x86 的版本,用了一下,最贴心的改进是 Spell check as you type,非常适合我这种写英文邮件错误百出的人,以前要写完才能检查,还得一个一个看,现在错误的拼写在写的时候就会被标出来,那些内部的缩略语就可以方便的忽略了。不过语法检查还没有,期待将来能加上这个功能。

今天院里下了毕业答辩的通牒了,2 月 24 号之前就得提交论文,可我过年还不得不要花掉 10 多天,唉,熬夜吧。

Jan 18, 2006 at 12:01am | 0 Comments
Tags: and

在只允许 proxy http 外出的环境中使用 ssh/telnet

公司内部只能通过 http 代理进行外出访问,FTP 下载、Gaim 这种本身支持代理的东西虽然没有问题,但要想 ssh 或者 telnet 登陆外面的服务器就不好办了。Google 到了httptunnel,可以建立 HTTP 隧道跑任何 TCP 应用,支持 proxy,它由客户端 htc 和服务端 hts 两个程序组成,安装很简单:

wget http://ftp.gnu.org/gnu/httptunnel/httptunnel-3.3.tar.gz
tar xzvf ../tarball/httptunnel-3.3.tar.gz
cd httptunnel-3.3/
./configure
make

这就得到了 hts 和 htc,可以 make install 装到 /usr/local/bin,或者直接把 hts htc 复制到要的位置就好了。

假设要从内网 10.1.1.1 登陆外面的 234.5.6.7,在两台机器上分别装好 httptunnel,10.1.1.1 上要运行 htc,234.5.6.7 上要运行 hts(最初只好在能登陆的环境中操作啦),代理服务器为 222.188.125.66:3128,原理如下:

10.1.1.1                    222.188.125.66       234.5.6.7
.------------------------. .-----------------. .-----------------------.
| [ssh client] | | [proxy :3128] | | [sshd] |
| | | | / | | ^ |
| | | | / | | | |
| `----> [htc :2222] -+--+->--' `-->--+--+-> [hts :4433] ---' |
`------------------------' `-----------------' `-----------------------'

在 234.5.6.7 上运行 hts:

hts -F localhost:22 -S 4433

在 10.1.1.1 上运行 htc 然后就可以 ssh 从本机穿过隧道:

htc -S -F 2222 234.5.6.7:4433 -P 222.188.125.66:3128
ssh -v localhost -p 4433 -l username

Cool!

Jan 12, 2006 at 5:37am | 0 Comments
Tags: , and

Gaim 用于 Gtalk 时必须保存密码的解决办法

Gaim 2.0.0beta1 连接 Gtalk 时必须要在帐号文件 accounts.xml 中存储密码,不然就用空密码去登陆,自然失败。虽然 Unix 的文件权限机制不错,但像我这样在 NIS 域里面简直就形同虚设,别人可以从 root 切换到我的帐号,访问我的 HOME,虽然是非法,但总算得上是没有控制的。

看了 Gaim 主页上 关于password 问题的 FAQ ,它说 Gaim 现在不对 accounts.xml 里面存储的密码进行加密,将来的版本中应该也不会这么做,原因是多方面的……,我看了半天,不知道是不是理解错误,总觉得他的解释很牵强。

那只好不要在文件中保存密码了。登陆 MSN 时,会先弹出窗口输入密码,偏偏登陆 Gtalk 时就很白痴的直接用空密码去登陆。看了一会源码加上 gdb,终于找到问题。从源码看,Jabber 协议中密码是可选的,因此没设密码时照样登陆。解决的办法就简单了,从
src/protocols/jabber/jabber.c 中去掉这个选项:

  1425  static GaimPluginProtocolInfo prpl_info =
1426 {
1427 OPT_PROTO_CHAT_TOPIC | OPT_PROTO_UNIQUE_CHATNAME | 1428 OPT_PROTO_PASSWORD_OPTIONAL,

如果之前已经 make install 过,只要重新编译后把 src/protocols/jabber/jabber/.libs/ 下的 libjabber.la 和 libjabber.so 覆盖到放 plugin 的目录($prefix/lib/gaim/)下就好了。这样就能像登陆 MSN 一样,弹出窗口来输入密码。调试时发现该目录下所有的插件都会装载,移走不需要的插件显然能增加启动速度和减少占用资源。

开源就是好啊。

Update: 2.0.0beta2 出来了,fix 正是和我的一样 ;-)

Jan 9, 2006 at 10:06pm | 0 Comments
Tags: , and

Gaim 2.0.0beta1

gaim 2.0.0beta1 多账号同一窗口,cool! Gaim 2.0.0beta1上个月就发布了,试了一下,开始在 Solaris 上用 gcc 编译都不过,看了错误信息,说没有定义 SIOCGIFCONF,找了一下系统头文件,是文件包含的问题,临时在 src/stun.c 前面加上 #define BSD_COMP 就可以解决了。用起来感觉还是不错的,因为是 beta1,有一些明显的 bug 都还没解决,例如登陆 GTalk 非得保存密码才能登陆成功,主要变化:

  • 聊天时文字是平滑滚动,这个见仁见智吧
  • 中英文混合输入时不会再一个回车就发送了
  • 主面板下方在线状态的几个大按钮,看不懂为什么放在那
  • Jabber 加了个图标,登陆 Gtalk 好看一些了
  • 据说 Audio 功能不错了,可惜 Solaris 上没有编出库来,将来应该能支持 GTalk 的语音

Jan 6, 2006 at 1:14am | 0 Comments
Tags: , and

 1

Tags

Blogroll

Fairy World | STUPiD | 阅微草堂 | ShelleX | 流浪五天