Saturday, June 28, 2008

java bin目录下的native2ascii使用

直接在命令行中输入native2ascii后可以进入控制台,输入字符串之后native2ascii会将字符串转为unicode编码。
$> native2ascii
test中文
test\u2030\u220f\u2260\u00ca\u00f1\u00e1

Friday, June 20, 2008

vim syntax highlight under mac

$> vi ~/.vimrc
set nocompatible
syntax on

$> mkdir -p ~/.vim/colors
$> vi ~/.vim/colors/test.vim
" customize color scheme in test.vim
" colorscheme test

In mac leopard, there are many colorscheme included, these are in “/usr/share/vim/vim70/colors/”

reference: http://www.cs.cmu.edu/~maverick/VimColorSchemeTest/index.html

Thursday, June 19, 2008

delete all file using linux command file

之前用过以下linux命令删除svn的目录:
$> find . -name '.svn' -exec /bin/rm -f {} \;

对于delete操作可以简写如下:
$> find . -name '.svn' -delete
确认即可删除所有.svn目录

Tuesday, June 17, 2008

Textmate usefull hotkey

delete current line: ctrl + shift + k
duplicate current line: ctrl + shift + d
join next line to current line: ctrl + shift + j

Monday, June 16, 2008

javascript ruby interpreter -- johnson

require 'johnson'

puts Johnson.evaluate("4 + 4") # => 8
puts Johnson.evaluate("4 + foo", :foo => 4) # => 8

js_function_test = "foo = function (bar) { return parseInt(bar); };"
puts Johnson.parse(js_function_test)
puts Johnson.parse("alert(33)")

ctx = Johnson::Runtime.new
ctx['alert'] = lambda { |x| puts x }
puts ctx.evaluate('alert("Hello world!");')


j = Johnson::Runtime.new

# Introduce a new JavaScript function, named print,
# which calls a Ruby function
# j.print = lambda {|msg| puts msg}; # => undefined method `print=' for #<Johnson::Runtime:0x4e8c70>
j[:print] = lambda {|msg| puts msg};

# Add in a new pure-JavaScript function which calls
# our previously-introduced print function
j.evaluate("function alert(msg){ print('Alert:' + msg); }");

# Prints out 'Alert: text'
j.evaluate("alert('text');");

class Monkey
def eat
puts "Nom, nom, nom, bananas!"
end
end

j = Johnson::Runtime.new

# toss a monkey into the runtime
m = Monkey.new
j[:m] = m

# add a JSland function to our monkey...
j.evaluate("m.chow = function() { this.eat() }")

# ...and now it's available as an instance method on our native Ruby object!
m.chow

Friday, June 13, 2008

java已发行的版本及版本名称

版本号 名称 中文名 发布日期
JDK 1.1.4 Sparkler 宝石 1997-09-12
JDK 1.1.5 Pumpkin 南瓜 1997-12-13
JDK 1.1.6 Abigail 阿比盖尔--女子名 1998-04-24
JDK 1.1.7 Brutus 布鲁图--古罗马政治家和将军 1998-09-28
JDK 1.1.8 Chelsea 切尔西--城市名 1999-04-08
J2SE 1.2 Playground 运动场 1998-12-04
J2SE 1.2.1 none 无 1999-03-30
J2SE 1.2.2 Cricket 蟋蟀 1999-07-08
J2SE 1.3 Kestrel 美洲红隼 2000-05-08
J2SE 1.3.1 Ladybird 瓢虫 2001-05-17
J2SE 1.4.0 Merlin 灰背隼 2002-02-13
J2SE 1.4.1 grasshopper 蚱蜢 2002-09-16
J2SE 1.4.2 Mantis 螳螂 2003-06-26
将来发行的版本:
J2SE 5.0 (1.5.0) Tiger 老虎 已发布了Beta版本
J2SE 5.1 (1.5.1) Dragonfly 蜻蜓 未发布
J2SE 6.0 (1.6.0) Mustang 野马 未发布

从JDK1.2.2开始,主要版本(如1.3,1.4,5.0)都是以鸟类或哺乳动物来命名的. 而它们的bug修正版本(如1.2.2,1.3.1,1.4.2)都是以昆虫命名的.

转自: http://www.jspcn.net/htmlnews/11049407933281549.html

Wednesday, June 11, 2008

关闭firefox工具条的提示

在拖动某个网页保存为书签时,firefox总是会在工具条上提示:
Drag and drop this icon to create a link to this page
这个很影响操作,可以通过firefox的about:config进行设置:
1. 在地址栏输入: about:config 回车
2. 输入tips,找到browser.chrome.toolbar_tips,修改值为false即可。

Tuesday, June 10, 2008

如何用ruby验证字符串中是否包括中文字


def include_chinese_char?(str)
# /[\u4e00-\u9fa5]/ unicode 中文字符集范围 即: 一-龥
/[一-龥]/ =~ str
end

puts include_chinese_char?("ruby regexp.")
puts include_chinese_char?("中 ruby regexp.")
puts include_chinese_char?("ruby 中 regexp.")
# >> nil
# >> 0
# >> 5

字符串与unicode编码的相互转换

unicode编码简而言之就是将每一个字符用16位2进制数标识。但是通常都用4位的16进制数标识。
例如:
1)中文字符串"你好"的unicode码为:\u4f60\u597d;
2)英文字符串"ab"的unicode码为:\u0061\u0062;
其中\u是标识unicode码用的,后面的4位16进制数则是对应字符的unicode码。

1、unicode编码规则
unicode码对每一个字符用4位16进制数表示。具体规则是:将一个字符(char)的高8位与低8位分别取出,转化为16进制数,
如果转化的16进制数的长度不足2位,则在其后补0,然后将高、低8位转成的16进制字符串拼接起来并在前面补上"\u" 即可。

2、用java代码说明unicode的编码规则 [java的unicode解码编码的代码详见javaeye的帖子]

public class Unicode {

public static void main(String[] args) {
char c = '一'; // 一(4e00)是unicode中文字符集首字,龥(9fa5)是unicode中文字符集尾字
int i, j;
i = c & 0xFF;
j = c >>> 8;
System.out.println("Original character is: " + c);
System.out.println("low 8 bit is: " + i);
System.out.println("high 8 bit is: " + j);
}

}
$> javac Unicode.java
$> java Unicode
Original character is: 一
low 8 bit is: 0
high 8 bit is: 78
78转为16进制为4e,将高、低8位转成的16进制字符串拼接起来即为\u4e00,这就是中文字"一"的unicode编码。
在ajax请求返回的responseText或者json数据可以先在服务器端编码为unicode格式传给客户端浏览器,这样客户端的页面无论是什么编码,js都可以很好的处理返回的内容。
4e00的十进制值为4 * 16 * 16 * 16 + 14 * 16 * 16 + 0 * 16 + 0 = 19968
网页中则可以用&#19968;来表示中文字"一",这样不论网页以何种编码,页面始终都可以正常显示,而不会出现乱码。这种方法以前在做wap项目常常将页面上所有中文字都用unicode编码后发布,就是为了避免乱码问题。

3、javascript代码,验证字符串中是否包括中文字
/[\u4e00-\u9fa5]/.test(str)

4、ruby中验证字符串中是否包括中文字
/[一-龥]/ =~ str

Reference:
http://haoi77.javaeye.com/blog/198840

Number toString 方法使用

Number.toString(radix)
Converts a number to a string, using a specified radix (base), and returns the string. radix must be between 2 and 36. If omitted, base 10 is used.
比如中文“一”字的unicode编码为\u4e00,要想得到对应的unicode十进制编码,在js中不必用4 * 16 * 16 * 16 + 14 * 16 + 0 + 0 = 19968来获得,可以直接用Number.toString()方法得到:
(0x4e00).toString(10) = "19968"
这样得到的值可以再用js加上前后缀成为"&#" + "19968" + ";" = "一"后可以直接从网页中输出。
反过来,如果知道十进制的一个数字,也可以很容易转换成16进制的值:
(19968).toString(16) = "4e00"