• Add capybara-webkit to your Gemfile and let Guard::Bundler install it automatically (or manually via bundle install if you don’t use Guard).

    gem 'capybara-webkit', '>= 1.0.0.beta4'
    
  • Set Javascript driver to :webkit for Capybara in spec_helper.rb.

    Capybara.javascript_driver = :webkit
    
  • Configure RSpec use non-transactional fixtures, configure Database Cleaner in spec_helper.rb.

    Notice with this setup, we’ll only use truncation strategy when driver is not :rack_test. this will make normal specs run faster.

    config.use_transactional_fixtures = false
    
    config.before :each do
      if Capybara.current_driver == :rack_test
        DatabaseCleaner.strategy = :transaction
        DatabaseCleaner.start
      else
        DatabaseCleaner.strategy = :truncation
      end
    end
    
    config.after :each do
      DatabaseCleaner.clean
    end
    
  • Tag your scenarios in spec/acceptance/*_spec.rb to use Javascript driver if necessary.

    scenario 'Create a lolita via AJAX', :js => true do
    end
    
  • Wait for any AJAX call to be completed in your specs. This is very important, or you will get many strange issues like no database record found, AJAX call get empty response with 0 status code, etc.

    For example if you have a simple AJAX form, the success callback will simply redirect browser to another page via location.href = '/yet_another_page';. You can use the following code to wait for it done.

    scenario 'Create a lolita via AJAX', :js => true do
      visit new_lolita_path
    
      click_on 'Submit'
    
      wait_until { page.current_path == lolita_path(Lolita.last) }
    
      # Your expections for the new page
    end
    
标签:, ,

前段时间入手 T-Mobile G2 之后把 Google 拼音输入法升级到了在 G1 上跑起来慢吞吞的最新版,结果遇到各种小问题用得很不爽,一怒之下抄起家伙把它狠狠改了一通。虽然还有些小问题,但影响没那么严重就暂时懒得管了。

懒得另外写说明了,直接引用 GitHub repo 里的 README 吧。

目的

使用 apktool 对 Google 拼音输入法 Android 版进行反向工程[注1],在 Dalvik JVM 汇编层级微调修改它,使其更适合日常使用。

注1:实际上不是真正完整的反向工程,后来有大量借助 Android Open Source Project 中 Google 拼音输入法 1.0.0 的 Java 源代码理解反汇编得到的 smali 代码。

问题修正

  • 中文模式下硬件键盘上某些标点符号没有被正确映射为中文(全角)形态,尤其是在 T-Mobile G2 上。
  • 中文模式下在软键盘未初始化时使用硬件键盘 Enter 键会导致 Google 拼音崩溃。
  • 中文模式下软键盘上的圆括号不是中文(全角)形态。
  • 软键盘上的 & 和 < 符号被不正确地转义成了 & 和 <。(MOD 版引入的问题。)
  • 中文模式下软键盘在空闲状态时 Del 不能删除字符。(MOD 版引入的问题。)

细节改进

  • 中文模式空闲和联想状态下 Alt + Del 像系统默认行为一样删除当前行。
  • 中文模式选字状态下 Alt + Del 删除所有拼音字符并回到空闲状态。
  • 中文模式下回到空闲状态以及空闲状态输入字符后重置 Alt 和 Shift 状态,避免使用 Del 修正输入内容时误删当前行。(MOD 版引入的不便。)
  • 中文模式下硬件键盘 _ (下划线)映射为—(半个破折号),`(反单引号)映射为·(英文人名分隔符)。

如何使用

下载 Google 拼音输入法 1.3.4 MOD v3,使用 adb 工具或 Android 的 Package Manager 安装。或者 git clone 此 smali 源代码仓库自己用 apktool 编译生成 .apk 文件。

注意:安装 MOD 版本之前必须先卸载官方版本。

感谢

  • @pipitu: 在我头昏眼花犯下低级错误的时候帮我查阅 smali 资料,让我得以“拨云见日醍醐灌顶茅塞顿开遍体舒畅的神一般的展开”。
标签:, ,

Ruby

开始之前应该看看 Ruby 官方网站 上的 About RubyRuby in Twenty MinutesRuby From Other Languages 得到初步的印象和感性认识。在页面底部可以选择语言查看中文版。

经验比较丰富的开发者可以通过 Ruby User’s Guide [注1] 快速入门 Ruby,之后应该准备一本 The Ruby Programming Language 作为日常参考。因为作为 Ruby 语言创始人松本行弘参与编写的书籍,它对 Ruby 语言的介绍最完整。而世界上第一本介绍 Ruby 语言的英文书籍 Programming Ruby 大概是最多人用于入门 Ruby 的书籍,虽然对于有经验的开发者来说它稍显啰嗦。Programming Ruby 第一版有提供免费的在线版本。如果你还没有任何程序设计经验,Ruby Programming: 向Ruby之父学程序设计 应该是不错的选择,作者高桥征义是日本 Ruby 协会会长。

Rails

同样,有经验的开发者可以直接通过 Ruby on Rails Guides 入门 Rails。而 Agile Web Development with Rails 则大概是最多人用于入门 Rails 的书籍,它的第四版已经使用目前最新的 Rails 3。

中文资料

@ihower 组织的 Ruby Taiwan 社区有提供 Ruby User’s Guide 的繁体中文翻译以及 Ruby on Rails Guides 前两章的繁体中文翻译。@ihower 自己编写的 Ruby on Rails 實戰手冊 也是一部很不错的面向有一定经验开发者的在线书籍。

其它

Ruby on Rails 社区非常注重代码的美观及可读性。使用相同的 coding style 是保证代码美观可读的有效措施之一,所以在自己尝试写代码时应该看看 Ruby Coding Style Guide

真正开始使用 Ruby on Rails 之后,Rails Searchable API DocRubyDoc.info 一定会是最常用的两个在线文档服务。

注1: Ruby User’s Guide 写于 Ruby 1.8.3 时代,现在建议使用的 Ruby 版本是 1.8.7。文中提到的 eval.rb 应该使用 irb 取代,另外可以使用 irbtools 大幅度增强 irb。Ruby Taiwan 的繁体中文翻译版本对类似问题有提供译注,建议参考。

该日志未加标签。

终于如愿看完 IMAX 版 Inception 了,虽然是在脖子和眼球鸭梨巨大的第一排。以下是一些原本发到 Twitter 的零散想法。

新手造梦师 Ariadne 肯定是使命召唤现代战争2的粉丝。

Inception 看完之后我还是倾向于认为他们所在的现实仍然是梦境。

的确看完 Inception 出来稍微想一下“我在干什么”这样的问题时就会开始怀疑自己是不是在梦境中……

总觉得 Ariadne 已经无可救药地被 Dom 吸引,但 Dom 却几乎不可能爱上她,因为他跟 Mal 经历得太多。

另外,那个关于 Inception 像虚拟机嵌套的说法恰好搞反了“现实”与“虚拟”的时间快慢差异。

陀螺也是个神奇的东西,它可以无视造梦者对梦境设计的物理规则约束,拥有自己独立的物理规则。

觉得整个剧中最有勇有谋的角色是新手造梦师 Ariadne。

我明白了,陀螺可以正常工作说明它一直在 Dom 的梦中,也就是说 Inception 中的真实世界其实都是 Dom 一个人的梦境。RT @rainux: 陀螺也是个神奇的东西,它可以无视造梦者对梦境设计的物理规则约束,拥有自己独立的物理规则。

剧中所展现的共享梦境方式都是所有人同时进入梦境。这样的条件下不可能发生年轻状态的 Dom 见到年老 Saito 的情景,因此一定也可以在别人入梦一段时间以后直接闯入。剧中试图让 Dom 回到现实的 Mal 就是这样进来的。而试图让 Dom 留在更深梦境里的 Mal 则是 Dom 自己潜意识里的 projection——这也说明了 Dom 的确是希望留在梦境中而不是跟 Mal 回到真正的现实。

其实一开始我觉得她有点像是个被恶魔诱惑的角色,没想到后来那么强。RT @unkstar: @rainux 嗯,我也超喜欢这个萝莉。。

因为梦境的魅力太强了,在自己的梦境里可以是无所不能的。这也是她离开之后还是回来找 Dom 的原因。不太可能搞上啊,刚发那篇 blog 里有关于这个的想法。RT @unkstar: @rainux 诱惑?为什么这样说?我倒是很遗憾她没能和Cobb搞上。。

准确地说是造梦师在自己的梦境里是无所不能的。没有强大心智的人最终一定会迷失在无尽的梦境里——不过谁能说这到底是好事还是坏事呢?毕竟他们经历了比其他人丰富无数倍的人生。cc @unkstar

该日志未加标签。

四叠半神话大系随想

August 11th, 2010

一口气看到四叠半最后一话最后一幕,忍不住放声大笑。是笑小津也有这样羞涩可爱的一面?抑或是笑“我”也会用妖怪式的表情和语气说出“这是我爱的表达”?还是说其实是从心底里对这样的结局,对“我”回归这样的平凡普通却又美好异常的生活由衷地感到高兴?

看到第十话时觉得这是一部对阿宅强力吐槽的片子。被自我束缚在无穷无尽的四叠半宅化绝对领域里,再也无法走出去体验普通的日常,就连最普通的家常米饭也能使其泪如泉涌(强烈的中枪感)。

跟无头骑士异闻录一样,四叠半神话大系所表达的东西也正是孤独时的我对生活的理解——普通人一般平凡的日常就是最好的生活状态。可是就像男主角们一样,当我曾自己拥有这样的平凡日常时,却并不满足于它。总是觉得自己做得失败,妄想我可以有更好的生活状态。结果呢,自然可想而知。虽然现在自说自话的我觉得自己已经醒悟了,想要结束这样浪费生命的轮回,想要找回那难得的平凡日常。可是,当我真正到达那一天时,真的会就此满足吗?

现在是吐槽时间:

  1. 最后一话“我”顶着历尽艰难困苦折磨终于获得救赎找到生命中唯一光芒般意味的 BGM 奋不顾身赤身裸体冲向小津的场景,以及最后一幕“我”腹黑地反受为攻逆推蹭得累小津的场景,都在强烈地表达其实这就是一部腐片吧!

  2. 说出“四叠半告诉我们,选了不同的路结局还是会一样”的某人,你的悲观还真是深入骨髓啊。

想起了 Aaron 的话,“解决的办法就是,去爱别人。”是啊,四叠半里的“我”也正是因为终于勇敢地跨出了那一步,主动去爱朋友,爱喜欢的人,才会迎来这样圆满的结局吧。

“良机一直都在你眼前徘徊,请一定要抓住它。”我也非常想要抓住它,可是我这样的普通人却总是看不清自己眼前的世界。那个一直不引人注目地隐匿于我生命中某个角落的明石,你在哪里?

PS: 写完发现取标题还真是麻烦,那么就用这平凡普通的标题吧。

标签:
Page 1 of 2912345...1020...Last »