思想即力量 – Think from Song1w – EVIS.ME
一开始,我只是想找一个当前博客程序的替代品。而我发现了Typo这样令人激动的基于RoR的开源博客程序,跃跃欲试想把Typo运行在IIS + IronRuby + IronRuby.Rack上。 Typo 5.5依赖于Ruby 1.8.7 + Rails 2.3.8。IronRuby 1.0基本兼容Ruby 1.8.6,我想问题应该不大。 XP系统,一个崭新的IronRuby 1.0安装版。安装Rails: igem install rails -v 2.3.8 为了方便,打算使用SQLite数据库,在IronRuby下,sqlite3-ruby这样的gem是不能用的,需要用sqlite3-ironruby这样的替代方案。早在这一步我就应该注意到一些问题了,但我当时没有在乎: igem install sqlite3-ironruby 尝试了几次RubyGems直接安装Typo都失败了,我自己从ZIP里解压了一份Typo 5.5。 在config目录下创建database.yml: production: adapter: sqlite3 database: db/typo.db timeout: 5000 然后执行rake操作DB: rake db:create RAILS_ENV=production rake db:migrate RAILS_ENV=production 问题来了,rake报告有一系列需要依赖的gem没有安装。那就让它装: rake gems:install 找不到gem命令,没问题,把igem.bat复制一份命名为gem.bat。 再执行,大部分安装都成功了,除了json、bluecloth 2.0.5和RedCloth 4.2.2。报错都在编译Native Extension上。 去RubyForge上找齐了这三个的Windows预编译版本,再用RubyGems单独从本地安装,成功。 再尝试之前的DB Migrate操作,rake却依然报告找不到两个gem依赖: [...]
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. [...]
标题足够明了了。 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 [...]
用Milestone上的更新程序升级到了Android 2.1。系统里自带的语音拨号Voice Dialer是个好玩的东西,相信对于驾驶员也是很有用的工具。但我认为它对我而言没有太大用途,反而是个累赘。原因有三: I’ve got my Milestone updated to Android 2.1 via its update function. The Voice Dialer bound with this version is certainly an interesting tool which could be very useful tool for drivers. However, I think it’s none of use but a burden to me. Reasons as follows: 我不开车,所以用手操作还是很方便的; I’m not a driver [...]
Java版Google App Engine试用感想 Some comments on my first GAE (Java) trial 接上一篇,发表一些自己的试用感想。 例子应用的架构及实现 Architecture & Implementation of the Previous Example 先看一下自己开发了一个什么样的例子。用图说明。 看源代码,me.evis.gae.guestbook、me.evis.gae.guestbook.client和me.evis.gae.guestbook.sever三个包就是为了形成GWT的表现层和逻辑层。而me.evis.gae.guestbook.bo及其子包是为了包装GAE的数据存储服务形成数据层。 就开发过程而言,在装有Google插件的Eclipse上添加新GAE项目时,插件会代为准备好GAE相关的配置和jar包,同时也有GWT的。而创建新模块时,就纯粹是与GWT有关的事情了。在我看来Google为GWT提供的最佳实践是: 在前端弱化HTML的作用,而由后端位于client包里的入口类(Entry Point Class)编写用户界面及相关交互,在运行时Java的入口类会生成Javascript返回给客户端浏览器; 由入口类来调用同一包内的各种服务接口,并处理返回值; 对于client包中服务接口的实现,都放在server包中。 我之所以加入了bo包及其子包,主要还是是为了能更清楚地了解GWT与GAE之间的关系。由Comment DTO/DAO去以JDO方式去调用GAE的数据存储服务,然后再让上边的Comment服务的实现去调用Comment DTO/DAO而不是直接去调GAE的东西。 同时,这样的分离也给了我做单元测试的机会。我为bo包加入了test的子包。JUnit 3的测试用例直接写会出App ID之类的错误,原因是GAE的服务都是云计算,本地调用需要构建一个相应的测试环境,详见Google的官方文档或者是例子应用的源代码。 关于GWT Comments about GWT 用Java来代替Javascript,有点像写CS的感觉,不过调用服务器端的方法或者使用服务器端的变量都很方便。这种做法确实掩盖了BS和Javascript的复杂性,也有效利用了Java编译所需的严谨性。但是我认为其缺点也是显而易见的: 开发调试用户界面及交互要改Java类,就意味着重新编译,一般也会要求重启服务器,相对来说调试成本较高; 用户界面开发变得不太直观,难以分工。如果所有界面都是Java写出来的,那页面设计师和交互工程师只能轮流给Java程序员端咖啡了。个人觉得如果用GWT,各种页面元素应该还是在HTML上布局好,然后用Java去捕捉那些元素,比如按钮或者区域之类的。 GAE最核心的东西肯定还是数据存储、邮件等这些云计算服务,我想如果有更适合的选择的话,还是没有必要在GWT上投入太多的关注。 关于GAE Comments about GAE 截止到发文时也只有尝试过数据存储服务而已。关于数据存储服务,Google公布了JDO和JPA两种基于标准的接口。这些现代的数据操作方式大大简化了数据相关的开发,至少不用去数据库里建表了。但GAE是按API调用次数、数据容量、传输大小等因素综合计费的,所以开发时也必须要注意多方面的调优,个人预测Appspot上也许会有不少程序会因为API调用次数和CPU占用时间两项而额外付费。 关于Google的Eclipse插件 Comments about Google Plug-in for Eclipse 装完插件就不要挪动Eclipse了,不然要改好几个配置文件; [...]
这里是Song1w的个人博客,分享一些想法、设计和自娱自乐。原创为主,内容为主。
This is a personal blog of Song1w. The think, design and entertainment contents are shared here, most of which are created by Song1w himself.