今天把许久未升级的Chromium从 09年9月的 4.0.256.0 (32792) 升级到了 5.0.364.0 (42796)
peacekeeper分数 由原来的36xx 一跃至5150,我惊呆了。
CPU: AMD Phenom(tm) 9650 Quad-Core Processor
内存: 4G
显卡:集成显卡HD3300
操作系统: Ubuntu 9.04

—-04.27—-
今天升至 5.0.388.0 (45607) 后 分数升至 5500 分 了….
因 1.9.1 装载gem的速度只有1.8.7的1/2~1/3。:(
自上次关注ruby 1.9 stable到现在已有13个月(ruby稳定版已更新为1.9.1-p0)
到现在的p376 经过376个版本的考验,加之众gems的完善,是时候更新了。
其中最中意的更新为允许,可惜的是若以这种写法的代码就不兼容1.8了。
{foo:”bar”} 形式写hash
最不满意的更新为由字符默认识别由US-ASCII代替UTF-8,弄得许多文件都要挂个
#encoding:utf-8
—-
有点头疼,1.9.1的rails启动时间是1.8.7的一倍
若有如下代码foo.rb
require 'rubygems'
require 'active_record'
RAILS_ROOT = File.join(File.dirname(__FILE__),"..")
Dir[File.join(RAILS_ROOT,'app/models/*.rb')].each{|file|
require file
}
time foo.rb
1.8.7 耗时
real 0m0.314s
user 0m0.252s
sys 0m0.049s
% cumulative self self total
time seconds seconds calls ms/call ms/call name
15.12 0.62 0.62 461 1.34 2.21 Array#map
11.46 1.09 0.47 235 2.00 3.15 Array#select
8.54 1.44 0.35 1447 0.24 2.42 Array#each
6.83 1.72 0.28 18931 0.01 0.01 String#to_s
5.85 1.96 0.24 237 1.01 42.57 Kernel.gem_original_require
1.9.1 耗时
real 0m0.728s
user 0m0.586s
sys 0m0.064s
% cumulative self self total
time seconds seconds calls ms/call ms/call name
19.05 0.40 0.40 283 1.41 21.34 Kernel.require
12.38 0.66 0.26 264 0.98 1.55 Array#map
9.05 0.85 0.19 626 0.30 2.59 Array#each
7.62 1.01 0.16 200 0.80 2.80 Module#class_eval
7.62 1.17 0.16 20678 0.01 0.01 Symbol#to_s
5.71 1.29 0.12 346 0.35 0.40 Array#include?
同样都是源码编译,参数也都一样,
一、异常
| 名称 |
描述 |
相当于 |
| $! |
捕获的异常 |
Exception |
| $@ |
异常的backtrace |
Exception#backtrace |
例:
begin
raise "err msg"
rescue
p $! # #<RuntimeError: err msg>
p $@ #["(irb):2:in `irb_binding'", "/usr/local/lib/ruby/1.8/irb/workspace.rb:52:in `irb_binding'", ":0"]
end
二、正则
对于 m=str.match(pattern)
| 变量 |
性质 |
描述 |
相当于 |
| $& |
只读,本地 |
匹配的项 |
m[0] |
| $` |
只读,本地 |
匹配的字符串之前未匹配的部分 |
m.pre_match |
| $\’ |
只读,本地 |
匹配的字符串之后未匹配的部分 |
m.post_match |
| $+ |
只读,本地 |
最后一个匹配的项 |
m[m.size-1] |
| $1,$2 |
只读,本地 |
所指定的匹配的项 |
m[n] |
| $~ |
本地 |
匹配的结果 |
m |
例:
"start-111-222-333-444-end" =~ /(\d+)-(\d+)-(\d+)-(\d+)/
p $& #"111-222-333-444"
p $` # "start-"
p $' # "-end"
p $+ # "444"
p $1 # "111"
p $2 # "222"
p $~[3] # "333"
三、IO/String
| 描述 |
默认 |
说明 |
| $_ |
|
gets,readline最后读入的行 |
| $F |
|
$_.split 仅当选项-a为真时 |
| $/ |
“\n” |
用于gets,readline等分割符 |
| $\ |
nil |
print与IO.write的分割符 |
| $, |
nil |
Array#join的分割符 |
| $; |
nil |
String#split的分割符 |
| $. |
|
ARGF.lineno |
| $< |
|
ARGF |
| $* |
|
ARGV |
| $> |
|
$defout |
| $defout |
|
print与printf的输出变量,缺省为$stdio |
| $stdin |
|
当前标准输入 缺省 STDIN |
| $stdout |
|
当前标准输出 缺省 STDOUT |
| $stderr |
|
当前标准错误输出 缺省 STDERR |
四、进程
| 名称 |
描述 |
| $0 |
当前ruby程序名 |
| $$ |
Process.pid |
| $? |
最后执行的外部程序的返回状态 |
四、其它
| 名称 |
描述 |
| $: |
$LOAD_PATH |
| $” |
已require的module,用于避免二次载入 |
| $DEBUG |
是否为DEBUG状态, -d –debug开启则为真 |
| $FILENAME |
$<.filename |
| $SAFE |
安全等级 |
| $VERBOSE |
verbose选项是开启则为真 |
| $-O |
$/ |
| $-a |
-a选项开启则为真 |
| $-d |
$DEBUG |
| $-F |
$; |
| $-I |
$: |
| $-l |
-lis选项开启则为真 |
| $-p |
-pis选项开启则为真 |
目标:通过本文章学习并编写一个gem ‘hello’
一、认识RubyGems
1、什么是RubyGems
RubyGems是ruby下的包管理系统。最著名gem的当属Rails
2、gem的基本文件布局
| 文件名 |
类别 |
描述 |
| gemspec |
文件 |
gem的规范说明。 |
| lib |
文件夹 |
用于lib文件的存放 |
| bin |
文件夹 |
可执行文件 |
| ext |
文件夹 |
c/c++源文件 |
| tests |
文件夹 |
单元测试文件 |
3、gemspec文件规范常用项
| 名称 |
类别 |
缺省 |
描述 |
| *name |
String |
|
gem名称 |
| *version |
String |
|
版本号 |
| *date |
Time |
Time.now |
Gem创建日期 |
| *platform |
String |
Gem::Platform::Ruby |
gems所使用的平台 |
| *summary |
String |
|
gem描述 |
| *require_paths |
Array |
["lib"] |
用于require调用时的默认路径 |
| files |
Array |
|
gems所包含的文件 |
以上为关键的几个选项,其中打*号的为必须的项,若要添加作者,可执行文件等选项可参见Gem规范
3、编译
gem build gemspec文件
4、安装
gem install 生成的gem
二、编写最简gem hello
1、创建文件与文件夹
hello/hello.gemspec
hello/lib/hello.rb
2、编写 hello.gemspec
Gem::Specification.new do |s|
s.name = 'hello'
s.version = '0.1.0'
s.summary = 'hello gems'
s.files = ["lib/hello.rb"]
end
3、编写 lib/hello.rb
def hello
"HELLO"
end
4、编译
gem build hello.gemspec
5、安装
gem install hello
6、测试
require 'rubygems'
require 'hello'
puts hello
—-
输出HELLO 测试成功
三、相关链接
1、RubyGems官方网站
2、Rubyforge
2、Gem规范
3、本文的hello gem源码
随着电脑使用时间推移,渐渐认识这些被浬没的精华,如今,成了它们忠实的拥护者。
正坚定不移使用的非主流软件:
1、桌面操作系统用Ubuntu,主流的人用Windows
简评:Ubuntu,使用简单,平民化,好用的桌面Linux
2、浏览器用Chromium/Chrome,主流的人用IE/Firefox
简评:Chromium系列,快
3、编辑器用vi,主流的人用Editplus,Notepad,VisualStudio,Eclipse等
简评:vi系列,自定义强,没有最顺手只有更顺手。
4、编程用Ruby,主流的人用Php,Java,C++等
简评:Ruby,简单快捷。但还是无法完全替代php,c++
5、数据库用PostgreSQL,主流的人用MySQL
简评:PostgreSQL,强大。
尝试使用但失败即现已未使用的软件:
1、桌面操作系统用Red Hat
简评:Red Hat用的比较早RH9(上面印的是Red Hat 2004)那大该在04年,当时水平不足用Linux吃力,同时对影音支持不完善,且要玩电脑游戏,还有VC++等,最终放弃而归。
2、编辑器用Emacs
简评:比起vi太笨重
3、Dvorak键盘布局(最近太忙,用Dvorak控制Vim与五笔效率实在是惨不忍睹,等有空再卷土重来)
简评:看上去很美,但习惯不是说变就能变的。
如用Dvorak打“你好”,思维过程是
1、左手无名指第一排,左手小指第一排,食指下面一排2个
2、 然后翻译成 wqvb
3、 再映射到Dvorak键盘 中指下面一排,无名指下面一排,无名指下面,食指下面
因为有了1这个过程,所以很难全部Dvorak化至少很长一段时间。
这就是母语和第一外语的区别啊。
3-9
70 points, so you achieved position 199780 of 236761 on the ranking list
You type 126 characters per minute
You have 17 correct words and
you have 0 wrong words
3-9 18:50
90 points, so you achieved position 193999 of 255483 on the ranking list
You type 147 characters per minute
You have 20 correct words and
you have 0 wrong words
3-10 04:23
105 points 26 WPM
3-14 02:34
151 points 211 CPM 39 WPM
3-16~4-7 未使用
4-10 07:26
210 points 283 CPM 52 WPM
4-25 17:48
258 points 341 CPM 65 WPM
5-24 13:19
265 points 358 CPM 67 WPM
8-10 21:10
318 points 415 CPM 74 WPM
注:5个月已回到了到ASDF巅峰水平 http://www.jiangmiao.org/blog/582.html
8-25 17:56
328 points 417 CPM 80 WPM
8-28 01:25
331 points 427 CPM 77 WPM
9-01 14:30
321 points 436 CPM 77 WPM
附:测速地址
程序员专用的键盘布局。提高打英文的速度:
http://www.kaufmann.no/roland/dvorak/
目前打字非常吃力,仿佛回到了15年前刚开始学电脑那会儿,特别是用五笔打中文,每分钟不超过6个字。
qwerty 在 http://speedtest.10-fast-fingers.com/ 上的速度是 370~410 CPM 之间
324 points, so you achieved position 11515 of 232742 on the ranking list
You type 418 characters per minute
You have 78 correct words and
you have 0 wrong words
据说 Dvorak比qwerty有30%性能提升,那么使用Dvorak后有望达到500+ CPM。但愿如此。
现在几个小困难需要克服,其中比较关键的是vim的键位要重新适应。
时间证明一切,1周后看看Dvorak之路是否有前景。
近期评论