分类
原创作品

OPPO电子书阅读器评测

一个月前入手OPPO的Enjoy Ebook E601,今天才想起写下些所谓评测的文字。

这款电子书最特色的算是Android操作系统和相对高昂的售价(汗)。

外观白色,5寸电子墨水屏(16阶灰度,无触摸或手写),重量嘛,单手拿着长时间一定会累。左边框上有1~0的触摸式数字键,右边框上有上下翻页和一个越用越觉得难用的轨迹球,下边框有对称的两组翻页键和五向按键,手感都还不错。算上底部的,整机的翻页键多达4组,充分考虑到了不同用户的使用习惯,包括左撇子用户。

从开机到可以使用大约1分钟的时间。基于Android 1.5的SDK,看得出做了不少的定制。本机内置存储容量有2GB,其中固件系统之类的已经占用了不少,我额外加了4GB的SD卡,而据经销商说安装8GB以上的SD卡系统响应会变慢。

连接电脑USB后的拷贝速度在2.07~2.12MB/秒。书籍列表中按名称排序时是以中文(拼音)英文首字母混排的。

我先后尝试了若干PDF 技术文档:一个31MB的文档经过长时间处理系统提示无法打开;另一个5MB的,花了32秒,却只有首页能显示,其他为白页,可能与文档图文混排的内容有关;最后一个4MB有833页的文档经过10秒的加载成功打开了,而后每次翻页 需要10~11秒,且由于原文档中含有图形的页眉页脚,所以没办法达到令人满意的缩放比例(毕竟程序没办法知道页眉页脚有没有意义)。经多次尝试,可以认为这款电子书对PDF的良好支持只能限定在纯文本的范畴,图片多了、格式多了都有可能无法处理。

购入这款电子书的动机,正所谓醉翁之意不在酒。我一直在为自己的电子版漫画收藏寻找一个合适的浏览设备。当前几年电子墨水技术兴起的时候,我就向往这个技术能为漫画发烧友带来福音。现在终于出手了,自然要用电子书尝试一下看漫画的效果。

论结果只能说中规中矩。优点:

  • 有专门的图片浏览模式,菜单里包含一项漫画模式的选项,从右到左、先右左再上下等六种模式足以看出产品设计和开发人员对这类特定消费人群的理解。
  • 2~4秒钟可以完成图片翻页,这个速度可以接受。
  • 支持ZIP压缩包,可以浏览压缩包内的图片。

缺点:

  • 5寸屏幕果然偏小,虽然缩放失真不大,但费眼睛。
  • 只能显示黑白(彩色图会自动转为灰度),对比度较真正的纸张也差距很大。
  • 图片浏览没有书签功能,只能勉强用收藏功能替代,而遗憾的是ZIP内的图片收藏后无法顺利定位。

总体感觉这不是一个漫画发烧友真正想要的设备。

理想中的设备其阅读体验不仅不该差于纸质漫画,而且应大大超越升华:节省空间、便于保存、可视面积大、机身轻薄、反射自然光、色彩饱满、底色更白、对比度更高、翻页瞬间完成、书签功能易用,等等。更理想的,漫画发烧友可以获得一套以这样设备为基础的完整解决方案:电子出版、无线连接、在线购买、后台下载、虚拟书柜、在线社区要素、更换彩壳、手写涂鸦,等等。AMAZON Kindle的成功就在于它不仅仅是设备,而是提供了完整的解决方案,想想不用接电脑就能更新内容还真是很舒服的事情啊。

最后发发牢骚,买了这款电子书阅读器,iPad的采购计划就无限期搁置了,不过对三星的Galaxy Tab还是有些期待的。

分类
English 原创作品 技术

Local Flex4 language reference in Chrome App

You may already encounter problem when setting up a local copy of Flex4 language reference.

The latest as-doc is leveraging XMLHTTPRequest to retrieve the packages and classes list. In order to make it work, you have to turn off the “Enable native XMLHTTP support” in your IE7/8 browser due to the out-of-date implementation in asdoc.js. This seems not convenient at all.

There’re still other browser candidates for this task. Chrome is a good one to provide a clean view (without toolbar, tabs, etc.) for Flex4 doc. All you need is to create the following shortcut (the allow-file-access-from-files parameter is necessary).

“%USERPROFILE%\Local Settings\Application Data\Google\Chrome\Application\chrome.exe” –app=”file:///<doc path>/AS3_Reference/index.html” –allow-file-access-from-files

Then you may double-click this shortcut and view the flex4 doc with full features (and without browser stuffs).

Fyi, a full list of Chrome’s command line parameters can be found at http://src.chromium.org/svn/trunk/src/chrome/common/chrome_switches.cc

分类
原创作品 技术

Ruby/RoR on IIS6.1 via IronRuby and .NET3.5

标题足够明了了。

Ruby是个好东西。第一次接触Ruby的语法,就被它的简洁和动态特征吸引了。RoR (Ruby on Rails) 具体有多好我倒不是很关心,对我来说Ruby的意义更在于扩展了server-side的语言和技术体系。

市面上主流的web开发技术确实很多。自己的工作内容是J2EE,但业余兴趣也做这个就有些枯燥了;我对ASP.NET情有独钟,无奈其升级换代太快,技术体系也偏庞大;PHP一直没有机会深入学习,一直觉得它的语法不够清爽。

在给定browser端的技术方案是Flex、Ajax或者HTML5的前提下,其实server端是什么技术区别也不会太大。如果这个技术从语言层面即可以面向对象又有足够动态特性,从框架层面可以保持轻量又足够灵活,那就是一个优秀的选择。Ruby上基于Rack有Sinatra可以轻松编写RESTful Service,目前对我已足够了。

跨平台是我选Ruby的另一个理由。这里所说的跨平台是指可以在多种虚拟机上运行。已知的有可以运行在Java虚拟机上的JRuby,和运行在.NET虚拟机上的IronRuby。这对我来说意味着在纯Ruby环境下开发的应用可以很轻松的迁移到Java平台或者.NET平台。或者再说明白一点,国内还没见到比较靠谱的Ruby虚拟主机服务商,而.NET在国内则满地都是,还便宜,而且什么时候Java主机大众化了,我还可以把应用迁移过去。

回到方案。要点是DIY编译一下IronRuby.Rack。基本过程参考如下视频即可:
http://www.iamnotmyself.com/2010/04/22/RunningRailsInIIS7WithIronRubyRack.aspx

我的开发编译环境比较老,但经过反复尝试也成功部署了。

1、下载并安装IronRuby。http://www.ironruby.net/Download ,我下载了其中1.0 for .NET2.0(据说for .NET4.0的版本会更快)的Windows Installer,这个发行版本内置了Ruby 1.8及其周边。安装至C:\IronRuby\,安装程序会帮我把环境变量之类的设置好。

2、在Ruby上安装Rack、数据库和RoR。 参考http://www.ironruby.net/Documentation/Real_Ruby_Applications/Rails

  • Rack和Rails,在命令行里执行:
    > igem install rake rails --no-rdoc --no-ri
    Successfully installed rake-0.8.7
    Successfully installed activesupport-2.3.5
    Successfully installed activerecord-2.3.5
    Successfully installed rack-1.0.1
    Successfully installed actionpack-2.3.5
    Successfully installed actionmailer-2.3.5
    Successfully installed activeresource-2.3.5
    Successfully installed rails-2.3.5
    8 gems installed
  • 数据库选了SQLite3:
    > ir -S gem install sqlite3-ironruby --no-ri --no-rdoc
    Successfully installed sqlite3-ironruby-0.1.1
  • 随便建个目录,然后自动生成RoR的应用:
    > ir -S rails IronRubyOnRails
          create
          create  app/controllers
          create  app/helpers
          create  app/models
          create  app/views/layouts
          create  config/environments
          create  config/initializers
          ......
  • 利用内置Web服务器测试RoR,http://localhost:3000 能正常显示页面即成功:
    > cd IronRubyOnRails
    > ir script\server
    => Booting WEBrick
    => Rails 2.3.5 application starting on http://0.0.0.0:3000
    => Call with -d to detach
    => Ctrl-C to shutdown server
    [2009-04-22 13:55:50] INFO  WEBrick 1.3.1
    [2009-04-22 13:55:50] INFO  ruby 1.8.6 (2009-03-31) [i386-mswin32]
    [2009-04-22 13:55:50] INFO  WEBrick::HTTPServer#start: pid=10848 port=3000

3、下载IronRuby的源代码。http://github.com/ironruby/ironruby/ ,v1.0-rtm或者稍新点的都可以,没有Git直接下载zip包也可以。老实说只会用到其中ironruby/Hosts/IronRuby.Rack目录下的内容。

4、启动Visual Studio 2008(我用的是Visual Web Developer Express 2008),把刚才源代码中ironruby/Hosts/IronRuby.Rack中的IronRuby.Rack.sln作为解决方案打开,会报几个错,不过没关系。

5、查看各项目的属性,检查编译.NET版本是否是3.5。从IronRuby的安装路径中找到以下DLL库,然后添加到IronRuby.Rack工程的引用中。

IronRuby.dll
IronRuby.Libraries.dll
IronRuby.Libraries.Yaml.dll
Microsoft.Dynamic.dll
Microsoft.Scripting.Core.dll
Microsoft.Scripting.Debugging.dll
Microsoft.Scripting.dll
Microsoft.Scripting.ExtensionAttribute.dll

 

6、修改各web项目的web.config。以IronRuby.Rack.Example为例,修改LibraryPaths和GemPath值,把原路径都改到IronRuby的安装路径里去。

7、给IronRuby的安装目录加入NETWORK SERVICE用户组的可读权限,然后在IDE环境中运行IronRuby.Rack.Example(或者IronRuby.Rails.Example)。如果目标IIS版本低于7,如Window Server 2003的IIS6.1,则需要修改浏览器URL来让请求通过ASP.NET处理,如加入后缀.aspx或者.ashx。当然也可以调整IIS的配置使得ASP.NET引擎处理所有请求。结果类似下图即为通过。

ironruby_on_iis

8、部署至远程IIS。需要编译一个发行版的IronRuby.Rack.dll,把IronRuby.Rack项目的生成方式改为release,再生成一次即可。注意这里的目标runtime是.NET3.5,如果用.NET2.0的话编译是很难通过的。把第5步中的所有DLL与这个DLL一起拷贝到远程IIS虚拟目录的bin目录下。

本机编译的发行版本(.NET3.5) IronRuby.Rack

9、上传IronRuby安装路径中的Lib目录至同一远程IIS虚拟目录中。调整web.config第6步中的路径,然后与config.ru、app.rb一起上传至同一目录。

10、浏览器中按第7步的方式测试。第一次加载很慢,以后就快很多了。URL要加后缀这点非常麻烦,部署在Windows Server 2008 + IIS7上应该可以解决(理论上就可以用for .NET4.0的方案了)。

欢迎来到Ruby的世界。