Archive for the ‘ruby’ Category

XMLRPC::Client.new2 is IPv4 only!

Tuesday, June 23rd, 2009

稍微测试了一下,用Python写一个IPv6的XML-RPC客户端比较简单:

import xmlrpclib

server = xmlrpclib.ServerProxy('http://[::1]:4444/usermgmt')
print server.list_users({'namespace' : 0})

如上,如果是loopback,只要把127.0.0.1换成IPv6的表示方式[::1]即可。对于ruby,可惜就不是这样了。如果依样画葫芦写出如下代码:

require 'xmlrpc/client'

server = XMLRPC::Client.new2('http://[::1]:4444/usermgmt')
p server.call('list_users', {'namespace'=>0})

那么我们很可能得到下面一条错误信息:
getaddrinfo: Name or service not known (SocketError)

在线文档中可以看到,XMLRPC::Client.new2的代码,可以确信它假设url是IPv4的。不过,不要气馁。我们还有一个最基本的接口:XMLRPC::Client.new,指定host为”::1″(注意,不要加中括号),path设为”/usermgmt”,注意前面有个”/”,如下:

server = XMLRPC::Client.new('::1',       # host
                            '/usermgmt', # path
                            8010,        # port
                            nil,         # proxy_host
                            nil,         # proxy_port
                            nil,         # user
                            nil,         # password
                            false,       # use_ssl
                            nil)         # timeout (default: 30)

code generation

Monday, March 9th, 2009

读“Code Generation in Action”,看到其中对ERB的运用,真是大为折服。当初读“Programming Ruby”的时候,里面也稍微提到了一点ERB,心想它不就是个模板处理工具嘛,和GNU AutoGen大同小异。如今随手可见各种tokenizer/parser,配合适当的templating system,其威力真的是不容小觑。

《天龙八部》中萧峰在聚贤庄以一套江湖中人人皆会的粗浅功夫 — 太祖长拳,对敌少林寺两大“玄”字辈高僧,却能够占尽上风。高手果然是摘花飞叶皆可伤人啊!

The Beginning of the End

Tuesday, January 20th, 2009

明天开始休假,2008年的工作时间算是结束了。
require ‘date’
delta =
DateTime.now - Date.new(2007, 7, 16)
puts delta.to_i

原来刚好工作了555天。最近的7个工作日写了一千行Ruby代码,刚好完成年前安排的任务。玩了很长时间h3,不知道为什么居然没有厌倦 — 按照以前实习时的经验,应该不会超过连续两个礼拜。可能现在和以前的心境有所区别。

已经很久没有抱着笔记本用Emacs写LaTeX文档了,至于我的sysnotes,一年共有89个changeset,而在我的googlepages上只张贴了两份文档,都是关于Scheme。我对代码自动生成抱有浓厚兴趣,而年度的末尾开始使用Ruby,这是好事。

Learning Ruby

Tuesday, December 23rd, 2008

2003年左右曾经面对学习Ruby,Python还是Perl的问题上摇摆不定。后来稍微学了点Perl,偶尔也翻过Python,对于Ruby一直未曾有半点涉猎。一来是当时觉得它的语法有点怪异,二来可能是出于狭隘的民族观吧。

看完“Programming in Ruby”的前五章,我觉得它是我见过的最接近Lisp的程序语言。一种奇妙的感觉油然而生 — 学C可以帮助理解计算机系统结构,而学完Lisp后可以很轻松的理解许多高级程序设计语言中的概念,甚至觉得这些语言不过是穿着语法糖衣的Lisp罢了。