Posted by Captain Zhan
Wed, 13 May 2009 10:00:00 GMT
今天在mac os x leopard上安装typo时遇到
[BUG] cross-thread violation on rb_gc()
错误.
google了一下, 发下有可能是因为系统上安装了多个版本的ruby 引起的. 我的mac上的确有多个ruby: 一个是leopard原带的, 另一个是自己用macport安装的. 但是系统原带的ruby1.8.6已经在清理硬盘空间时给删除了, 文件快捷链接也都换了, 使用ruby -v也显示是1.8.7版的信息.
全系统搜索了一下, 竟然发现系统上还有个
/System/Library/Frameworks/Ruby.framework/Versions/Current/usr
里面带有ruby文件.
将它去除, 改成一个文件快捷链接到自己安装的那个ruby文件那里, 问题解决了.
Posted in Ruby on Rails | Tags leopard, ruby | no comments
Posted by Captain Zhan
Mon, 11 May 2009 09:54:00 GMT
在本地查看rDoc文档其实很简单, 只要运行:
gem server
你就可以用浏览器通过 http://localhost:8808/ 网址查看所有已经安装的ruby gem的rDoc文档了.
Posted in Ruby on Rails | Tags rdoc, ruby | no comments
Posted by Captain Zhan
Mon, 29 Dec 2008 15:25:00 GMT
16进制到10进制:
>> "B0A0".hex
=> 45216
或
>> "B0A0".to_i(16)
=> 45216
10进制到16进制:
>> 45216.to_s(16)
=> "b0a0"
Posted in Ruby on Rails | no comments
Posted by Captain Zhan
Sat, 13 Dec 2008 13:13:00 GMT
用Ruby复制一个对象(object)也许没有你想像的那么容易. 今天我google了半天, 做个总结吧.
先从最简单的开始, b = a 是复制吗? 看代码说话:
>> a= [0,[1,2]]
>> b=a
>> b[0]=88
>> b[1][0]=99
>> b
=> [88, [99, 2]]
>> a
=> [88, [99, 2]]
从上面代码发现, 一但修改b, 原来的a也同时被改变了. 甚至:
Read more...
Posted in Ruby on Rails | no comments
Posted by Captain Zhan
Sun, 17 Aug 2008 15:20:00 GMT
如果比较功能相同的几组代码的运行速度, 可以使用ruby语言里的
Benchmark模块.
(开始前 设置中文环境, $KCODE = 'u')
比如, 连接两个字串, 如:
str1 = "中国"
str2 = "一定强!!!"
可以使用+
?> str1 + str2
=> "中国一定强!!!"
也可使用
>> "#{str1}#{str2}"
=> "中国一定强!!!"
还可以使用<<
>> str1 << str2
=> "中国一定强!!!"
(注意这种方法会改变str1的值,
>> str1
=> "中国一定强!!!")
如果想要知道这三种方法哪一个速度更快, 就可以使用Benchmark比较.
先定义三个不同的方法:
Read more...
Posted in Ruby on Rails | no comments
Posted by Captain Zhan
Sat, 16 Aug 2008 12:41:00 GMT
目标, 用ruby语言以句子为单位拆分一个字串. 如:
给出字串:
s="这是一个句子,另一个句子.一个新句子!难道这不是另一个句子吗?"
将它分拆为:
["这是一个句子,"], ["另一个句子."], ["一个新句子!"], ["难道这不是另一个句子吗?"]
样式.
测试前将ruby的$KCODE环境变量设置为'u', 启动UTF8编码支持中文.
$KCODE='u'
尝试1:
>> s.split(/\.|,|\?|\!/)
=> ["这是一个句子", "另一个句子", "一个新句子", "难道这不是另一个句子吗"]
等同于:
>> s.split(/[.,!?]/)
=> ["这是一个句子", "另一个句子", "一个新句子", "难道这不是另一个句子吗"]
虽然分开了句子, 但失去了标点.
>> s.split(/([.,!?])/)
=> ["这是一个句子", ",", "另一个句子", ".", "一个新句子", "!", "难道这不是另一个句子吗", "?"]
用括号将正则组成一组, 标点出来了, 但和句子是分开的.
改用scan
>> s.scan /.+?[.,?!]/
=> ["这是一个句子,"], ["另一个句子."], ["一个新句子!"], ["难道这不是另一个句子吗?"]
成功了!!
如果一定要这样:
>> s.scan(/(.+?(\.|\?|\!))/).collect{|p|p[0]}
=> ["这是一个句子,另一个句子.", "一个新句子!", "难道这不是另一个句子吗?"]
也是可行的.
Posted in Ruby on Rails | no comments
Posted by Captain Zhan
Fri, 25 Apr 2008 15:42:00 GMT
总结字串转变到其它与它相关的object的方法. 在这里整理分享一下, 希望能帮助到你.
变量相关
读取
instance_variable_get("@name")
设置
instance_variable_set("@name", "三国演义")
method相关
string到method名
send
book.send("name")
注意: book.send("name") = "三国演义" 会出错.
但可以:
book.send("name=", "三国演义")
单复数转化
string复数化
pluralize
可用于生成table_name
"country".pluralize
Read more...
Posted in Ruby on Rails | no comments
Posted by Captain Zhan
Sat, 22 Mar 2008 13:38:00 GMT
让机器读懂之前先让人读懂!
出发点?
数据的价值不一, 因此不应该用同样的方式显示这些数据.
价值?
价值针对不同个体应该是不一样的, 有条件最好做到面向不同个体(根据IP地址, 性别, 年龄, 历史记录), 如果做不到就尽量力求满足最大群体.
数据怎样的价值?
有用?/没有用?
重要?/不重要?
要紧?/不要紧?
不同的显示?
文字:字体, 字体大小, 颜色, 底色... 直接改用图标?
位置,:左上角? 扔到最下面?
方案
数据和显示的对接
数据输出时附带显示模式信息, 对准备好的view pattern直接对接
out => (data, view_options)
@title, @content, @sidebar, @item.name, @item.content 变量名直接附带意义
比rails更rails
使用统一的column名, 如name, content...
使用统一的变量名, 如@title, @item...
使用统一的view patterns, 如用来显示列表的index页面, 换到哪个model一样使用.
使用统一的view 局部pattern(最简单, google, wikipedia化, 实用, 可以指出数据的重要性, 美观不是第一的, 美观还费带宽和美工), 如可以重复使用的list显示pattern, comments显示pattern....
Posted in 信息处理, Ruby on Rails | no comments
Posted by Captain Zhan
Fri, 09 Nov 2007 00:38:00 GMT
我把我关注的Ruby on Rails的图书列在这里,做个提醒。
The Rails Way (Addison-Wesley Professional Ruby Series)
Pro ActiveRecord: Databases with Ruby and Rails (Pro)
Advanced Rails Recipes: 72 New Ways to Build Stunning Rails Apps
Agile Testing with Ruby and Rails
Professional Ruby Collection: Mongrel, Rails Plugins, Rails Routing, Refactoring to REST, and Rubyisms
Scaling Rails: Building Giant Websites
Foundations of RSpec: Behavior-Driven Development with Ruby and Rails
Advanced Rails
Posted in Ruby on Rails | no comments
Posted by Captain Zhan
Fri, 05 Oct 2007 08:44:00 GMT
Open MDB file on Ubuntu, convert it to CSV, import it to Rails
MDB is a data file format used by Microsoft Office Access. To open and view MDB files on ubuntu, you can install a tools named
mdbtools :
sudo apt-get install libmdbtools mdbtools mdbtools-gmdb
This will also install MDB viewer, and you can use it to open and view MDB files. It also can be used to export tables to CSV(Comma-separated_values) files.
And here is an example importing CSV data into Rails model:
require ‘csv’
CSV::Reader.parse(File.open('/path/to/file', 'rb')).each do |row|
Production.create(:name => row[1],
:price => row[3])
end
Posted in 信息处理, Ruby on Rails | no comments