niyue

Archive for the ‘software’ Category

Mac下很赞的PDF阅读器 – Skim

In mac, software on April 18, 2010 at 11:28 AM

Skim是一个功能很强大的但是较轻量的Mac下的PDF阅读器。自从升级到Mac OS X 10.6之后,我一直也没有去下载过Adobe Reader,因为感觉太庞大了(9.3版本是40.3M),一直就用系统自带的Preview看PDF,一般也就看看篇幅比较短的内容,也还过的去。最近开始看一本500页的电子书,长时间用Preview,希望能调到一个比较好的模式观看,但是总是无法完成。

后来特地去找了找,发现了Skim,使用下来发现确实不错,这里只针对我自己的阅读需要列举几点相对Preview的好处:

  1. 缩放功能。PDF书籍往往两侧都有大量的空白空间,对于我的13寸的MacBook,屏幕空间还是很重要的资产。Preview下的缩放的可调整粒度太粗,想把内容放大些往往一zoom in就过了头,但是再zoom out又觉得太小。Skim中的缩放粒度更细,能够更精确的调整到我想要的那个缩放幅度。
  2. 全屏阅读。想要全屏阅读原因同上,笔记本屏幕对我来说太小了。Preview只有一个SlideShow全屏,两侧的空间根本没利用上,反而把PDF内容变的更小了,感觉更主要是用来看照片用的。Skim的全屏则可以调整,充分利用整个屏幕的空间。Skim还有一个presentation mode的全屏,看起来就和Preview中的全屏差不多,但是对我用处不是很大,可能讲课什么的时候会比较有用。
  3. Apple Remote支持。可以用Apple Remote来遥控翻页和缩放等。听起来有点傻,连屏幕的字都感觉小了难道还准备坐在几米开外遥控着看?如果你把Mac接到你家的大号电视上你就不会这么想了。Skim app PDF reader

CJK-Lyx @ Ubuntu

In software, ubuntu on October 25, 2006 at 5:09 PM

最近准备开始写论文了,正所谓”工欲善其事,必先利其器”,一个好的编辑器当然很重要(Word直接被排除在外:-p).早就听说了LaTex的大名,不过一直觉得学起来太困难没有下手,不过它有一个图形化的前端Lyx,原来稍微用过一阵,感觉很不错,唯一没有解决的问题就是中文的编辑问题,这两天终于决定把它给解决掉.

我的系统是Ubuntu Dapper 6.0.6,上面安装Latex和cjk-latex都是轻而易举的事情(sudo apt-get latex cjk-latex),但是后面的中文化工作连续折腾了我两天时间还是没有完全解决.主要有下面的几个困难:

  • 给LaTex添加中文字体,比如Windows下的simsun.ttf。添加字体的时候涉及到需要修改的文件夹和文件太多了,网上的一些文档又大多过时或者不符合Ubuntu系统上的实际,很难派上用场,自己琢磨试验了好久时间。
  • 在Ubuntu上编译并安装CJK-Lyx。这个工作也是很困难的,因为Ubuntu的软件库里面只有Lyx,但是没有CJK-Lyx,而且CJK-Lyx的binary distribution又没有debian系统上可用的,只有rpm,所以只好从源代码开始编译,结果configure,make,make install三部曲我就搞了一个下午时间,而且在自己的机器上死都找不到zlib库,明明有啊,只好到其他的机器上面(也是Ubuntu dapper)编译好了再拷贝过来。
  • CJK-Lyx的配置使用。这个问题也是很麻烦的,网上的资料就两三篇,绝大多数都是转贴,而且就那两三篇还是过时的,现在的1.4版也有出入。又是一阵琢磨。

直到现在这个CJK-Lyx还是有问题,编辑的每部分文字最后几个字虽然能够正常保存,但是在Lyx编辑器里面看不到,存在乱码问题。虽然可以用latex转换成其他格式再看,但是总是不是很很爽,还不如直接用LaTex呢。sigh,现在只能在Windows上面试着编译看看了,等问题解决了有时间我会把它整理出来,相关文档实在太少了。

参考文献:

  1. TeX和LaTeX中的字体
  2. TeX Font Guide
  3. 用LaTeX写漂亮学位论文

Update: Windows上的编译也失败了,懒得在Windows上再看一遍原因了,先考虑直接Vim+LaTex了。

Update2:有用的LaTex模板

  1. Tex/LaTex模板
  2. thuthesis@gforge

几个有用的ubuntu的软件库

In software, ubuntu on September 9, 2006 at 10:34 AM

在Ubuntu上面安装软件真的很方便,只要记得apt-get install/remove就能够搞定大多数的软件了.不过有的时候有些软件的最新版本刚刚发行,还没有添加到官方的软件库中,这个时候想用新版本但是没得用就比较痛苦了.这时有三个选择:

  1. 放弃使用新版本,继续使用旧版本直到官方软件库发布新版本
  2. 自己编译新软件而后手动安装
  3. 寻找uptodate的软件库,添加新的软件库并安装想要的新软件

无疑方法1并不是什么很好的办法,还是不能立刻用上需要的新特性;而方法2则退回到了原始的状态,每次安装一个软件可能都要看半天如何编译如何安装,其中可能会碰到的问题等等,一个简单的软件可能都需要半天时间才能顺利装好,这当中耗费的时间很不值得.所以我的一般选择都是方法3,如果3不能解决的话可能就会先不使用新版本,一直等到官方的repository上面有release为止了.

这里列举几个有用的软件库,包含了最近我想要的一些新软件的发布(当然其他的软件库可能也有,这里只是列几个我知道的):

  1. Opera 9以及Real Player 10(deb http://archive.canonical.com/ubuntu dapper-commercial main)
  2. Skype (deb http://download.skype.com/linux/repos/debian/ stable non-free)
  3. Vim7 (deb http://mirror.ubuntulinux.nl dapper-seveas all)

two eclipse window+dual monitor Ubuntu

In software on June 22, 2006 at 8:04 PM

几个因素同时作用使得我有机会用上现在的这个dual monitor的配置,工作效率提高了不少(可以一边上网同时聊天:-) ),不过今天看到一篇文章,发现还可以大幅度提高Eclipse的使用效率.立刻试了了一下,感觉不错,调试程序的时候肯定方便很多,因为Eclispe的Debug的persipective总是感觉空间不够,screenshot两张做个纪念.

1. Dual Monitor Ubuntu

Dual Monitor Ubuntu

2. Two Eclipse Window in Dual Monitor Ubuntu

Two Eclipse Window in Dual Monitor Ubuntu

语音识别改卷系统

In idea, software on June 18, 2006 at 10:24 AM

昨天帮老师改了大半天图形学的考卷,上次也改过一次,不过这次的数量可多多了.前面批的时候脑子还轻松些,到了晚上统计分数就很痛苦了,神经紧绷的算了半天,虽然都是100以内的加减法,但是终归不敢马虎大意,可能一不小心成绩就差了一个档次了.改了一个多小时,忙到9点世界杯开始才搞定.
今天事后回想了一下整个改卷的过程,突然想到要是当时找一个语音识别的工具包,利用这个工具包写一个小型语音改卷计算器,只要人工念一下10,2,5.5,8,over,就自动计算出74.5这个成绩,又准确又省力,不是很酷?不过原来只知道IBM的一个ViaVoice有这种功能,MS Office也有,不过Licence好像会有问题.今早冲到实验室立马找了一下相关的工具包,发现有不少free的Speech Recognition的工具包(Speech Recognition Software).可惜考卷已经改好了,没有动力去做些实验看看好不好用了,暂且先记下一笔.不知道高考的改卷系统里面的统计分数是如何做的呢?

Update:

今天下午老师又在进行最后的登分活动了,把所有考卷的成绩登记到成绩表上,看他登的真是那个辛苦.所有的考卷都乱序,成绩表上也是乱序,老师的做法是遍历所有的考卷,在成绩表上查找对应的学号并进行登记,时间复杂度O(n^2),方法有问题,这里应该有一个考卷登分系统,对试卷按照学号进行预排序,然后对有序数组进行二分查找只需要O(logn),n份卷子的话就是O(nlogn).对于前面的排序算法的话,人工排序好像用快排或者堆排序都不方便,用插入排序比较现实,不过也变成O(n^2)了,想了想可以用两路归并排序,人工排的话相对简单而且只要O(nlogn),这样总的时间复杂度只要O(nlogn).300份卷子每份卷子登记需要10秒的话大概可以节省14000分钟.呵呵,好像估算误差满大的,纯属娱乐锻炼下脑子.

怎样才能称为一次新的版本发行?

In management, software on March 27, 2006 at 2:23 PM

今天看到了Karl Fogel写的Producing Open Source Software,有很多有用的东西,以后可以慢慢参考。刚看了几个章节,跳着看的,看到第七章“Packaging, Releasing, and Daily Development”,发现了Karl对版本发行的定义:

  • Old bugs have been fixed. This is probably the one thing users can count on being true of every release.
  • New bugs have been added. This too can usually be counted on, except sometimes in the case of security releases or other one-offs (see the section called “Security Releases” later in this chapter).
  • New features may have been added.
  • New configuration options may have been added, or the meanings of old options may have changed subtly. The installation procedures may have changed slightly since the last release too, though one always hopes not.
  • Incompatible changes may have been introduced, such that the data formats used by older versions of the software are no longer useable without undergoing some sort of (possibly manual) one-way conversion step.

居然有一项是“引入新的bug”,好象各种软件(比如MS的Windows)都确实符合这一条件…这才注意到好象Release Notes里面都会包含一个Known Bug之类的

如何有效地报告Bug

In management, software on February 14, 2006 at 4:01 AM

用户或者测试人员如何有效地向开发人员报告系统的bug一直是一个满难说清的问题,前段时间我给其他人讲的时候主要讲的就是JIRA如何使用好像,今天终于看到了一些报告Bug的指导原则,以后可以参考一下:

  1. bug writing guidelines
  2. 如何有效地报告bug

我的Firefox扩展

In software on December 2, 2005 at 2:37 PM
Enabled Extensions: (11)ColorZilla 0.8.3.1
FlashGot 0.5.9.98
Google Toolbar for Firefox 1.0.20051104
IE Tab 1.0.6.4
ListZilla 0.7
Mouse Gestures 1.0.4
Noia 2.0 (eXtreme) 2.991
Piggy Bank 2.1.0
Tab Mix Plus 0.2.5.2
View Rendered Source Chart 1.2.03
Web Developer 0.9.4
Disabled Extensions: (1)Slogger 0.5.11

Subversion的安装

In software on July 27, 2005 at 1:36 PM

这几天准备开始一个新项目,由于要求多个人的协作,所以准备使用一个源代码管理系统,很自然的选择了现在很热的Subversion。原来一直没有很好的使用过类似的系统像CVS,只是偶尔用CVS去checkout一下sourceforge或者java.net上面一些项目的代码,但是自己从来没有checkin过。大致看了几篇文章:

Version Control with Subversion

Subversion快速入门

《使用 Subversion 进行版本控制》附录D

然后就开始动手了,中间碰到不少麻烦,最后的步骤总结如下(我是采用Subversion Stand Alone的方式安装的,不是作为Apache的一个模块安装的):

1. 当然是去subversion.tigris.org下载Subversion了

2. 下载以后安装,建立一个目录repository,然后使用subversion安装目录下的bin子目录中的svnadmin将目录repository创建为一个文档库(我是用TortoiseSVN直接创建的,所以具体的命令行参数我也不太明)

3. 修改repository目录下面的conf文件夹中的两个文件以配置可以使用这一文档库的用户权限,具体的配置方法看看里面的那两个文件很容易就知道了

4. 运行bin子目录里面的svnserve.exe -d -r repository 开启Subversion服务,也可以使用SVNService将Suversion包装为一个Windows服务运行

5. 使用Subversion的客户端如TortoiseSVN或者Subclipse等等连接刚刚开启的Subversion服务就可以了

注意:我原来从来没有正式使用过CVS或者类似的工具,犯了一个大错误,浪费了不少时间。我把我的项目的编译输出(Eclipse里面可能是bin目录这种目录,里面有无数的.class文件)也包括在了版本控制的范围内,结果从Subversion服务器checkout之后的项目Eclipse会自动进行Automatically Build。在构建的过程中会将bin目录下的所有的文件或者目录删除(也包括Subversion进行控制所依赖的.svn目录,应该是一个隐藏目录,里面包括了Subversion要用到的版本控制的信息),这一目录删除了之后,客户端便丢失了版本控制的信息,新建的目录名字又是和原来Subversion中一样的文件名,提交的时候一直出现某某目录“阻碍(obstructed)”或者某某目录不在版本控制之下,导致提交失败。很郁闷的弄了一天多时间终于意识到了问题的原因,解决方法也很简单,就是在创建版本库的时候不要将编译器输出的这些类的目录导入到Subversion上去,在checkout之后构建生成了新的bin或者classes这些目录,也不要将其加入到Version Control,而是选择“add to ignore”忽略这些输出,以后提交或者update就不会有问题了。

Jbpm和Shark比较的feature list

In java, software on June 21, 2005 at 7:19 AM

前一段时间做的一个jbpm和shark的feature对比,今天整理笔记突然又看到这张记录纸了,so post here and drop the paper.作比较的时候Shark是1.0版本,而Jbpm是2.0版本(现在已经出到3.0了)

 

Shark

Jbpm

持久层 Shark自己的一个ORM的方案DODS,感觉不是很好 大名鼎鼎的 Hibernate(Jbpm2中使用的是Hibernate 2.1,Jbpm3种使用的是Hibernate3)
灵活性 Shark给人的感觉就是庞大,需要独立的运行一个工作量引擎服务 相对更加灵活,和OSWorkflow有的一比,也可以作为嵌入式的工作流引擎
后台管理 其实这点和上面一点有点相对应了,灵活性差其实是由于提供的功能太多的缘故,Shark自带了一个管理程序,界面虽然差了一点,但是功能满全面的 Jbpm2中没有提供后台的管理,Jbpm3还没怎么用过,好像是有的,不知道具体功能如何
流程定义的图形设计器 Shark使用的WfMC定义的XPDL语言定义流程,有一个JaWE来图形化定义流程,不过XPDL是在是看起来很难懂 Jbpm2中没有流程图形定义器,不过Jbpm3中已经有了,是基于Eclipse的一个插件,可以使用它定义Jbpm使用的JPDL,而且不仅是插件形式,后面还会出stand alone的版本
表单定制 这个Shark可以借助XPDL来进行表单定制,没看太懂就是了 Jbpm2不支持,原来看了Jbpm的MailList里面说在考虑Jbpm3中会加入这方面的内容,现在似乎没有看到还
用户模型 好像必须采用Shark中的用户模型 灵活性的体现,任意的用户模型。Jbpm3.1的roadmap里面考虑自带一个简单的用户模型供使用
异构系统交互 Shark可以开CORBA的服务,这个方面的功能很强大 只能通过Java和异构系统的交互似乎,Java能做的Jbpm就行
学习成本 Shark使用的XPDL很难看懂… 相对简单
文档 感觉是一片空白,给的那几个pdf都不顶什么用,用两三个小时就全部看完了,组织的不是很好而且。相对其他的方面,这个是最大的缺点了 挺全面的文档,一个chapter一个chapter的,看起来也方便