如果你买了Mac,那么很大的可能,你也买了Mighty Mouse

如果你买了Mighty Mouse,那么很大的可能,你发现你使用了一段时间之后,Mighty Mouse的滚轮向上或者向下很难滚动了。

我就碰到了这样的一个问题:我买了苹果的无线的Mighty Mouse,在使用了将近一年的时候,发现鼠标滚轮的向下功能越来越难使用,要很费劲才能够向下滚动。我考虑这是个机械问题而不是软件问题,想研究下怎么把它拆开来清洁一下,不过Mighty Mouse其实叫做Mighty Tortoise更合适,把后盖打开,卸下电池,还是无法拆开来,上面的一大块龟壳实在太紧密了。我没忍心下重手,又忍了一段时间。之后发现实在不能忍了,在网上搜了一下,发现这原来是个普遍问题,按照网上的方法进行了清理,其实很简单:

  1. 随便找一张白纸。我就从我的笔记本上面扯了一张下来。
  2. 把你的Mighty Mouse倒过来,就是把乌龟壳朝下。
  3. 手握倒过来的鼠标,把滚轮那部分贴上白纸,稍微用点力迅速旋转。转上几圈你就能发现白纸上有很多脏东西,那些就是罪魁祸首。等到没什么脏东西继续出来的时候就差不多了。
  4. That’s it. 你的鼠标应该已经恢复如初能够正常使用了。

注:

其实应该有不少其他的办法,比如用力吹,或者用压缩空气吹,或者倒过来用很大力气按滚轮并旋转等,不过我比较(脑袋中比较而已)了下感觉还是用上面的这个方法效果好并且简单,还能够清楚的看到清理的战果 :)

Apple每年都会有一些新的event举行,发布些新产品。夹不死同学的keynote总是很帅气,Apple甚至还用高清来发布keynote。不过美国时间和中国有差异,像我这么懒的人又不想熬夜,所以只能选择第二天早上起来看看新闻。看了新闻还不过瘾,还想直接看keynote视频。今天早上就是这么一个早上,Apple发布了最新的Macbook系列产品,新闻刷的一下就看完了,于是开始找keynote视频,不过似乎还没有人帖出来直接下载的链接,便自己研究了下,终于找到了方法如何直接下载苹果官方的keynote视频:

1) 使用任何下载工具[1]下载http://www.apple.com/podcasts/apple_keynotes/apple_keynotes.xml这一文件[2]

2) 打开这个文件,看看里面有没有最新的keynote链接[3]。在这个文件里面,每个special event都会有日期的,所以很容易就能够辨认出来哪个是你需要的。比如今天的,也就是2008年10月15日(美国是2008年10月14日夜)的在这个文件中显示如下:

<item>
<title>Apple Special Event, October 2008</title>
<itunes:author>Apple Inc.</itunes:author>
<description>Watch Apple CEO Steve Jobs reveal what’s new in Mac.</description>
<itunes:subtitle>Watch Apple CEO Steve Jobs reveal what’s new in Mac.</itunes:subtitle>
<itunes:summary>Watch Apple CEO Steve Jobs reveal what’s new in Mac.</itunes:summary>
<enclosure url=”http://movies.apple.com/datapub/us/podcasts/apple_keynotes/sj-keynote-20081014.m4v” length=”598065773″ type=”video/x-m4v”     />
<guid>sj-keynote-20081014</guid>
<pubDate>Tue, 14 Oct 2008 19:00:00 GMT</pubDate>
<itunes:explicit>no</itunes:explicit>
<itunes:duration>52:37</itunes:duration>
</item>

那个enclosure标签里面的链接就是直接的下载链接。

3)  随便你使用什么下载工具下载就是了,速度肯定比iTunes下载要快的多。

注:

[1] 比如我直接用curl这个命令行工具, curl  http://www.apple.com/podcasts/apple_keynotes/apple_keynotes.xml > keynotes.xml即可。或者用浏览器直接打开,现代的浏览器都可以看到视频的链接的(比如我用Firefox3就可以直接看到格式化好的feed,里面就会有视频的链接),如果不行,就看源代码就是了。

[2] 如果你要问我是怎么找到这个xml文件的,也很简单。Apple在iTunes专门有一个keynote的feed, 你用iTunes订阅了这个feed之后,在iTunes里面右键点击这个订阅,选择”Show Description”,也即查看描述,在描述页面里面有一个订阅的地址,就是这个xml文件。

[3] 如果你用iTunes订阅了这个feed,直接在iTunes里面就能够看到是不是有新的内容出现,不用每次都下载这个文件来看是不是有新的内容。

前段时间看了一个TED上面的演讲,演讲人叫Robert J. Lang,是一位NASA的工程师。他有一个很有趣的研究,是关于将数学应用于日本的一种叫做Origami的折纸艺术(中国是不是也有,不知道谁早?)。通过应用高超的数学技巧,能够使用纸张折叠出异常复杂、逼真的三维的物体。在他在TED上的演讲中,就有不少例子,其中还有一个三菱的汽车广告,广告中的所有场景和物体(当然,除了三菱的汽车)都是使用这种方式构造出来的。他还有一个关于Origami的网站(似乎国内被GFW掉了,需要代理),里面也有很多例子。

同样的一张纸,通过不同的数学计算能够折叠出不同的形状,这不就像变形金刚的变形吗?可以想象一下,变形金刚的最初的形状其实是一大个二维平面状物体,通过应用类似的数学技巧,只要每次通过计算机计算折叠的方式,就可以转化成为三维的一个物体。也许不能像汽车飞机一样行动,但是在形状上模仿肯定是没有什么太大问题的,而且一个变形金刚应该能够通过不同的计算,变形成为多种不同的形状。如果做一个权衡,只要求变成一种形状,但是在特定的地方加一些特定的设备(如汽车的轮子或者飞机的推进器),是很有可能实现真正的变形金刚的变形功能的~更可能实现的,是基于这个做一个简单的变形玩具,肯定会卖疯的:-)

发布Ruby Gem

五月 21, 2008

RubyGems是一个用于Ruby的包管理工具,虽然并未包含在Ruby的发行版中,但是可以认为是事实上Ruby世界中标准的发布Ruby程序和库的工具,可以很方便的管理gem之间的依赖性。

如果你是在进行Open Source的Ruby程序开发,可以直接通过Rubyforge来发布gem。不过如果是自己的私有项目,可能就需要自己搭建一个Web server来进行gem的发布了。如果系统中已经安装了RubyGems的话,通过gem server (gem help server看看用法)就可以启动一个简单的gem发布的server。不过很可能的,你已经有一个Web Server在系统环境中了(如Apache Web Server),这个时候就通过以下的几个步骤可以完成把这个Web Server改造成为一个gem distribution server:

1) 建立一个发布目录,并设置Apache(或者其他的Web Server)使得这一目录能够通过Web访问。并在这一发布目录下建立一个名为gems的子目录。

比如我们在htdocs目录下建立一个目录dist,并建立一个gems子目录。

2) 拷贝打包好的gem到dist/gems目录中。

 如拷贝allmighty-1.0.gem到htdocs/dist/gems目录中。

3) 在命令行界面中,进入dist目录,运行“gem generate_index .”(请注意最后的一个点,表示当前目录)。这一命令会对gems子目录中的所有gem建立一个索引文件yaml,并存放在dist目录下,以便可以通过gem install命令安装时查找。

4) You’re done~

在这之后,你就可以通过”gem install allmighty –source http://yourhost.com/dist/”命令来安装你新发布的gem了。

5) 如果以后还有新的gem需要发布或者有新的版本的gem需要发布,请从步骤2)开始继续即可。

关于RubyGems,有一本很好的书,介绍了其使用、开发和发布等,有兴趣的话可以看看。

Practical Ruby Gems

expensr.com is dead

三月 18, 2008

expensr.com是一个在线的个人记账软件,我从2007年下半年开始用它,感觉很符合我的需要 – 简单易用,能够有基本的统计报表功能。我在2007年7月底的时候还给它们发了个邮件,提了点关于它的报表显示的建议。在我发邮件的第二天expensr就给了我答复,说它们正在做帐户之间转帐这一功能,这个如果做好的话报表这方面的显示就ok了。我当时对它的响应速度很满意。

但是到了2008年春节期间,expensr进行了一些更新,但是引入了一个bug – 中文输入的所有的字符显示都不正常了,这直接导致了我没有办法继续使用这一系统,我的所有的帐户名称和大多数的开支名称都是使用中文填写的。这次,我再次给它们发了邮件报告了这一bug,但是过了很久都没有反馈。我在这之后的一段时间又发了两封邮件报告这一bug,但是都没有得到答复。现在,2008年3月18日,距离我发现这一bug已经45天了,系统没有任何的更新来修复这一严重的bug,对我的三封邮件也没有任何的响应。我看了expensr的官方blog,从2007年12月11日之后就没有任何更新了,虽然从网上搜索的结果看来,expensr.com很有前途,但是就目前我的使用和观察,expensr.com命不久矣
update:
果然一个月之后expensr.com宣布被收购,expensr.com的用户都会转到moneyStrands,希望转移之后的应用能够比较好。

购买Mac

九月 12, 2007

最近正在筹划如何比较合算的购买一台Mac,购买Apple的东西的方法比较多,在线购买或者线下购买,Apple自己的商店或者第三方的商店,都有一些不同的讲究。

使用Education Discount实际购买者现身说法:

结论就是:
对于Apple Online Store上面使用Education Discount进行购买的话,Apple可能会进行随机的检查。而且照回复的情况来看,随机检查的概率还是比较高的。如果被发现是欺骗的话,会要求退款。如果不理会这一退款请求的话,可能会收到律师信…因为省的不多,100刀也就800RMB不到,比较起来还是不值得冒这个险。如果你在美国有认识学生的话就很好办了,直接叫其帮忙代买一下,这个似乎完全没有什么问题。而且如果是能够通过学校内的Apple Store进行购买的话,可能会更加便宜。

如果你是在Apple的零售店里面购买的话,则完全看你人品好不好,碰到个好的服务员的话就ok了…

Rails的file_column插件是一个简单但是功能比较完备的文件上传插件。这一插件已经有很长时间没有更新了(最后一次更新是在2005年),但是就其功能和兼容性来说,一般的使用似乎没有什么问题。其用法也相当简单,大致的看看网站上面的文档即可。但是如果要做一些自定义的工作的话,就需要直接看它的源代码了。代码量不多,包括测试代码也就10多个文件。

最容易碰到的自定义需求应该就是定制上传文件存储的位置了,默认是在public目录下根据不同的模型名称来建立目录,明显的,这很容易造成“污染”,导致public目录下面生成大量的子目录。在看了其源码之后,注释中说明是可以通过给file_column这一方法传入参数:root_path来覆盖默认值的。我将root_path设置到public目录的file子目录下,试了之后在开发模式下上传文件确实没有问题,但是进行functional testing的时候发现并不正确。我在模型中设置了对文件大小进行验证的validates_filesize_of。这一方法在测试运行时验证查找的路径是在public目录下查找,这明显是不正确的,也即,仅仅覆盖root_path参数虽然能够在开发模式下正常工作,但是functional testing有些不同,按照其注释中的说法以及源代码,进行单元测试时file_column会把RAILS_ROOT/test/tmp/file_column这一目录作为根目录,而不是RAILS_ROOT/public/。单元测试时应该在setup方法中调用setup_fixture_files,在teardown中调用teardown_fixture_files,这两个方法会把文件fixtures复制到RAILS_ROOT/test/tmp/file_column目录下测试,测试结束后就移除。但由于根目录被我们传入的参数root_path覆盖,导致测试时的代码无法通过。解决的办法有两个,一个是按照不同的运行h环境来设置根目录,代码如下: 

if RAILS_ENV != "test"
  file_column :image, {:root_path => File.join(RAILS_ROOT, "public", "files")}
end
if RAILS_ENV == "test"
  file_column :image, {
  :root_path => File.join(RAILS_ROOT, "test", "tmp", "file_column", "files")
  }
end

但是这样做也有一个缺点,那就是如果在测试模式下进行集成测试的话(如使用selenium进行测试),file_column又会到test/tmp/file_column下查找文件。这也是明显不正确的,会导致文件无法访问。另外一个做法,可以做到万无一失的–直接修改file_column这一插件的代码:-)

用Eclipse习惯了,切换到Visual Studio之后发现有很多不顺手的地方。Eclipse中有一个功能,使用Ctrl+Shift+R就能够快速根据文件名打开任意的文件资源。在IntelliJ IDEA中也有这一功能,Ctrl+Shift+N就可以搞定。但是Visual Studio中却没有,每每要到目录树中查找一个文件,十分耗时。

今天偶然间发现了可以利用Eclipse来“帮助”Visual Studio实现这一功能。做法十分简单,把Visual Studio中的项目导入到Eclipse中。比如这是一个C++的项目(VS中最经常遇到的),因此就需要经常打开*.cxx,*.cpp,*.h等类型的文件。在Eclipse中文件关联中将这些类型的文件设置为使用VS打开,这样就可以在Eclipse中使用Ctrl+Shift+R迅速定位文件,然后一按回车,文件就在VS中打开了:)

Debugging DFC实在是很痛苦的一件事情,因为DFC类库十分庞大,API的层次很深,很多层次都是非常薄的对下层的一个封装。如果是DFC的使用者,只要考虑其外部接口还比较容易,但是作为API的开发者来说的话,尤其是作为一个刚入门还不太了解其内部结构的新手来说,每次都要花费很多时间在debugger上,仅仅是为了看一下一次访问的整个层次结构是什么样的。于是利用前段空下来的时间,写了一个小工具(InvokeVis)来进行Java的Call Stack的一个可视化。

目前这个工具支持四种可视化的输出格式:

普通文本格式
很简单的格式,仅仅使用缩进来表示不同层次的调用。
GraphViz Dot格式
这一格式可以使用GraphViz中的dot工具来进行转换,可以输出为gif, jpg, png, post script等多种格式。
HTML格式
这是基于Yahoo的YUI的一个HTML格式,Call Stack被可视化的表示为一颗HTML树。
XML格式
这一格式可以使用SpringGraph来进行浏览,用户可以通过Flash来交互式的浏览Call Stack。目前的代码库中自带了一个定制的SpringGraph的flash,可以查看InvokeVis输出的XML格式。

最开始我考虑支持的最主要的格式其实是Dot格式,只希望能够输出为一般的图片就可以了。但是后来发现Dot格式输出的图片的可扩展性不是很好,尤其是对于DFC这种超级巨大的类库而言,一个简单的小程序就会输出几千个节点的图片(在用GraphViz Dot工具转化成jpg时甚至因为节点过多无法输出,只能转化成gif),要想看清图片的细节,只能局限与整个图片的很小一部分,仅仅是窥豹一斑。于是就考虑输出为HTML树这种可以动态变化的方式来进行浏览,扩展性确实得到了很大提高,基本不管多大的节点数都不会有什么扩展性问题。但是又觉得HTML树看起来的时候的可视化效果不如dot格式转化出的图片出色,最后转而想到flash格式的输出,应该来说最后得到的flash的效果还是不错的,但是有部分功能还需要进一步完善,尤其是对现在这一flash中输出的是无向图而不是有向图(方向表示方法调用的发向, caller method -> callee method)这一点很不满意,如果有时间的话会把这点先改进一下。
输出效果图:

Dot format, converted by GraphViz? into gif format:

HTML format:

XML format, visualzed with SpringGraph? flash:

CJK-Lyx @ Ubuntu

十月 25, 2006

最近准备开始写论文了,正所谓”工欲善其事,必先利其器”,一个好的编辑器当然很重要(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
下一页 »