Archive for May, 2009

issue about install SCIM on OLPC

Wednesday, May 27th, 2009

好朋友有台 OLPC 刚升级了 image,装不上中文输入法。今天下午我也一起看了一下,发现是 package dependencies 的问题。

SCIM 需要一个 libgnomecanvas 的包,它依赖与另外一个 libglade2,系统上装的是一个 2.6.2-5 的版本,升级无效,直接下载了一个 rpm,用 rpm 装不上,但是 yum localinstall 显示安装成功,我就真的以为成功了。

然后继续安装 SCIM,问题依旧,显示 libglade2 还是老版本。下载 libglade2 然后重装,问题依旧。

后来发现一个可能是线索的提示,说 libglade2 安装成功,但是缺少 public key,查了一下可能是下的那个 rpm 的 publisher 不能被 OLPC 验证。

问题最终还没解决,有遇到类似情况的朋友请指教。

update: 发现类似问题 http://www.olpcnews.com/forum/index.php?topic=4130.0

acts_as_taggable_on_steroids 与 will_paginate 的整合

Friday, May 8th, 2009

使用 acts_as_taggable_on_steroids 之后经常找有某个 tag 的 item:

@items = Item.find_tagged_with(”tag”)

找到很多需要分页显示,于是顺利成章的在后面加上:

@items = Item.find_tagged_with(”tag”).paginate :page => paramsp[:page] || 1, :per_page => 20

发现无效!原因是 find_tagged_with 返回的是 Array,will_paginate 强大的分页功能瞬时歇菜。

于是乎整合一下两者:

module ActiveRecord
module Acts #:nodoc:
module Taggable #:nodoc:
module SingletonMethods

def count_tagged_with(*args)
options = find_options_for_find_tagged_with(*args)
options.blank? ? 0 : count(”#{table_name}.id”, options.merge(:select => nil, :distinct => true))
end

def _paginate_tagged_with(tags, options = {})
page, per_page = wp_parse_options!(options)
offset = (page.to_i - 1) * per_page
count = count_tagged_with(tags, options)
options.merge!(:offset => offset, :limit => per_page.to_i)
items = find_tagged_with(tags, options)
returning WillPaginate::Collection.new(page, per_page, count) do |p|
p.replace items
end
end

end
end
end
end

之后调用

@items = Item.paginate_tagged_with tag, :page => paramsp[:page] || 1, :per_page => 20

restful_authentication plugin 在IE上弹出登录窗口的问题

Sunday, May 3rd, 2009

我在做过的 Rails 项目中一直使用 restful_authentication plugin,前一段有个别人向我反应用IE访问 1KG.org,点击一些需要登录后才能用的功能时,不能跳转到登录界面,而是弹出一个窗口提示输入 username & password,起初我在 VMWare 虚拟的XP中拿IE6测了一下,没有这样的情况,又拿周围一两台机器试了试,也没发现问题,于是想当然的以为是那哥们的机器中了流氓插件,导致IE不正常。

这两天配合易助网的 Boyu 同学在 1KG.org 上添加 Google AdWords Tracking code 时,他说自己身边的 IE 都有真个问题,我才意识到问题可能具有普遍性!

老婆电脑上有IE7,测试一下,也有弹窗的问题!

Google 一番,发现问题是 IE 发送不太合格的 Accepts,导致 rails 不能正确识别请求的类型造成的弹窗。

整个问题在一个 ticket 中讲的很详细

我用的解决办法是将 format.any 改成 format.any(:js, :xml):

def access_denied
    respond_to do |format|
      format.html do
        store_location
        redirect_to new_session_path
      end
      format.any(:js, :xml) do
        request_http_basic_authentication 'Web Password'
      end
    end
  end

欢迎各位用 IE 到 1KG.org 上测试一下。