还是Babylon好用

翻译软件我以前一直都在用金山词霸。在论坛里别人常常谈Babylon,最近刚出了版本6,昨天安装了一个试了一下,确实不错。其实从功能上来讲词霸也差不多,不过我现在对于软件的看法,除了功能性外,易用、友好性和厂家(或者作者)的品质也很重要,不是我崇洋媚外,国内许多软件厂商的态度实在不欣赏。

安装文件上来说,词霸有安装盘,600多M吧大概,具体忘了,而Babylon只有两位数而已。其实词霸光翻译软件也很小,不过它带了太多的垃圾东西(似乎是有试用的毒霸、影霸?)。Babylon直接从网站上下载即可,即使你网络很差。

Babylon还支持在线词典,词霸我不太清楚,好像没有吧。Babylon添加词典也很方便,到它官方网站下就可以了,有许多免费的,一般大小在几个M,不是很大,不过wikipedia可是很大的,呵呵,差不多一个G了。有很多优秀的词典如Oxford、Merriam-Webster等,不过要收费。

最关键的还是取词方式。好多人说Babylon只能鼠标点击取词不方便,不能像词霸那样方便地鼠标悬停取词。我原来也是这样认为而不想换用Babylon,不过越来越觉得鼠标移上去就翻译实在很影响工作或阅读。尤其是有时候使用软件的菜单,词霸会不识时务地用它的浮动窗口把子菜单盖住,弄得很郁闷。当然它有选项可以加辅助键取词。但金山词霸这种取词方式还是不大好,似乎是用了Windows编程中的钩子技术(不知道Babylon有没有使用)吧,有时候会让程序崩溃。比如你用Visual Studio写程序的时候千万别开词霸自动取词,你未保存的程序随时可能丢失。至少还没听说Babylon有这样的问题。另外金山词霸在某些程序中无法取词,比如Eclipse的编辑器,Babylon不受这个限制。

当然了,如果你所阅读的东西满篇都是生词,金山词霸的词方式还是首选。对于有一定英语阅读能力的人,Babylon更好一些。想起来Linux里用的那个StarDict,选中取词的方法是真的不方便,可能是受限于X Window的API吧,不知道它的Windows版本怎么样?

许多用户对Babylon的评价是"优秀的软件"。最后,附一张Babylon 6的截图,很清爽:

1146656567511.JPG

Del.icio.us : ,

不打游戏了

上学期末开始打魔兽,打到现在,浪费了太多的时间。

最近是CS、魔兽轮着玩,晚上睡觉时想着第二天要做点事情,不过一起床就又想玩了。现在做论文是有点费劲、无聊,每次做得郁闷的时候,或者做得有点成果的时候,就想打游戏了,呵呵。

今天WEG终于结束了,我也想着打游戏要停一下了,先把论文做好了再说。

也不是没有其它的事情,每次跟家里联系,总感觉自己应该挣点钱,总感觉很对不起家里。可是过几天就又忘记了,真是惭愧。爸爸现在身体不太好,想着找个时间得让他找个好医院检查一下。忽然觉得自己太没有责任心了。

以前有事情了总是心里惦记着,想尽早地完成,现在学会往后拖了,正在做的论文就是这样,面对比较烦的问题时就不想努力做下去。

这些天上网多一些,发现许多全新的东西,感觉自己还是要多关注学习,不只是学业中所必需的任务,多关心那些IT界的新事物也很有益处。魔兽删了,CS也删了。学习累了就睡觉吧,或者写写BLOG,也比玩游戏强多了。

Del.icio.us :

又到一年劳动节

五一节就来了。

想那些旅游胜地肯定又是人满为患,即使是合肥的野生动物园,路上也走不通了,所以我们就算想去游玩,也不会选择在五一期间的。就待在校园吧,安安静静,跟平常一样。

前几年到这个时候就有点兴奋,不过现在这似乎对我们没有什么意义了。晚饭去一家自助吃了个大饱,然后回来CS,这就算我们庆祝劳动节了,哈哈。去和回来都从安徽大学经过,感觉气氛就是跟科大不一样,适合生活。科大,不管适合不适合学习,反正适合变态。

现在也没什么心情,这周的任务没怎么做,周报没什么可以写的,这几天要加油干了,五一过后就是中期检查。虽然检查不检查无所谓,还是想把这个项目完成,给本科划一个句号。说实在的,到这个时候,心也不好静下来,做的东西又复杂,一层套一层的,真的很乱。

劳动光荣。^_^

Del.icio.us :

配置Blog

又给Blog的侧栏加了一个计数器,是从amazingcounters申请的。使用的时候有一个sponsor link,必须放在页面可见地方,否则计数器不可用,我就直接弄了一个空链接,呵呵,主要是那个广告比较影响市容:)

以前从来没弄过Google AdSense,今天试着申请了一下,竟然通过了。看了一下,税务方面似乎对美国以外的没有什么要求。其实也就是玩个新鲜,呵呵,本来访问这个Blog的人就没几个,谁会去点它。

今天用IE打开Blog,发现右边的侧栏挤到网页的最下面,和左边的文章页面一点都不搭界了,Firefox下好好的。很奇怪,小强和我使用一个主题,他的就显示很好。用FrontPage打开比较了半天,最后终于发现是文章里那个猴子骑斑马的图片太宽了,IE不会自动把它缩放到适合那个层的大小。现在把所有大一些的图片都重新调整了一下,IE可以正常显示了,希望以后别再出现这样的情形。

把原来有WordPress链接的栏禁用,换了与自己有关的一些链接,以后还会继续补充。

No IE那个logo去掉了,主要是看着它太和网页的本色太不协调了,呵呵,加了Firefox with Google Toolbar
和Google AdSense的推广链接,虽然颜色亮,给人感觉还是比较温和的。

DoNews的WP还是配置空间不大,大概BSP提供的都这样吧,不太可能把index.php之类的拿来让我们修改。以后有了条件还是自己找个空间,申请个域名,想怎么搞就怎么搞。

Technorati :

Spread Firefox!

用Firefox已经很习惯了,IE反倒不舒服。Tabbed browsing,只打开一个实例就可以了。舒服的增量搜索,让我现在很不习惯大多数文本编辑或查看工具的搜索方式。还有一堆好用的插件,数不过来。

我现在安装的插件不多:

Tab Mix Plus–标签浏览
FlashGot–曾经因为Firefox缺乏多线程工具而痛苦,现在它已经做得很好了。
Google Toolbar for Firefox–搜索关键字提示,充分应用Firefox功能的页面关键字搜索,还有关键的一点,可以在网页上取词翻译,这可没有for IE
Gmail Manager–Gmail的管理、通知程序
FoxyTunes–在Firefox里控制你喜欢的音乐播放器,foobar2000/iTunes/WinAmp等等,一般的都支持。

索性今天就在Blog的侧栏加了一栏”No IE”和”Spread Firefox”的宣传图片,呵呵。希望更多的人开始认识Firefox,使用Firefox,并喜欢它。

Technorati : ,

猴子倒骑斑马

合肥野生动物园我去过两次,当时还没有现在的熊猫和白虎。让人觉得不错的是那个野兽园的观光大桥,听说现在上面卖鸡了,买了马上扔下去喂野兽,就几十块钱,呵呵。

园里的孔雀和鹿是到处跑的,小鹿看见人伸手就以为是人要喂它,就跑过来了。还有海狮馆的表演也很好。

有一次去的时候在猴园看,它跟斑马园是挨着的,猴子可以去斑马那边逛。当时一只斑马在中间的栏杆旁边散步,一个猴子看见了,就在栏杆上跟着它跑,跑着跑着瞅准了就跳到斑马背上去了。又一只猴子看见了,就抓着马尾巴也爬上去了。斑马大概已经习惯了,若无其事地继续走。前几天在论坛上看同学发的动物园照片,竟然又有这样的情景,保留下来,呵呵,这个挺像故事"张果老倒骑毛驴"的吧?如下:

monkey.jpg

合肥的怪异天气

昨晚睡觉没关阳台的门,早上还不知道8点就被雷声吵醒了。

中午的时候, 往外面一看,大吃一惊,天黑得跟晚上一样,以为是日食了呢,赶紧跑出去看。可是日食应该会有预报的,原来是云层太厚了。各大网站上都报道了这个现象,呵呵。在合肥最讨厌它的天气了,不过今天让我长了见识:)

下面是两张网上复制的图片(新华网):

Img242634350.jpg Img242634351.jpg

还有几张是同学在东区理化大楼拍的:

雨前1.jpg 雨前2.jpg

雨前3.jpg

代码生成器的弱智错误

中缀表达式计算的翻译存在严重问题,以前的想法是,右操作数计算结果放在%ebx中,左操作数结果放%eax,再根据运算符计算即可。但仔细想想便知道,计算左操作数时,仍可能用到%ebx,所以是不可行的。

现在是把左操作数的结果放在栈上,维护一个临时空间的表,表的大小根据需要的最多临时变量确定。

目前可以翻译了,递归函数也没问题。以上问题是由于用一个binary Euclid’s algorithm求最大公约数的算法做测试而发现的,呵呵。这个算法比较有个性,不同于常见的辗转相除法。具体见
http://www.cut-the-knot.org/blue/binary.shtml

开始设计实验了

Berkeley的实验已经做到可以接受函数参数及返回值、局部变量了,不准备再继续做面向对象特性了,而开始做计算机系实验的设计。
感觉这个难度更大了,要考虑的事情更多。现在应该把玩的心收一收,集中精力完成毕业设计。如果做完得早,说不定还可以出去做兼职赚点小钱,哈哈。

The simplest working compiler!

比较弱智,呵呵。
源程序如下:

class Program {
static int i;
static int j;
static boolean b;

static void Main() {
i = 3 * 5;
j = i + 10;
func();
print(j);
}
static void func() {
print(i);
}
}

翻译成汇编码:

.section    .rodata
format:
.string    "%dn"
.text
.globl main
.type    main, @function
main:
pushl    %ebp
movl    %esp, %ebp
subl    $8, %esp
movl    $3, %eax
movl    %eax, %ebx
movl    $5, %eax
imull    %ebx, %eax
movl    %eax, i
movl    i, %eax
movl    %eax, %ebx
movl    $10, %eax
addl    %ebx, %eax
movl    %eax, j
call    func
movl    j, %eax
movl    %eax, 4(%esp)
movl    $format, (%esp)
call    printf
leave
ret
.globl func
.type    func, @function
func:
pushl    %ebp
movl    %esp, %ebp
subl    $8, %esp
movl    i, %eax
movl    %eax, 4(%esp)
movl    $format, (%esp)
call    printf
leave
ret
.local    i
.comm    i, 4, 4
.local    j
.comm    j, 4, 4
.local    b
.comm    b, 4, 4