Project1

标题: 很无聊,很火星的咚咚……关于require与library [打印本页]

作者: 面粉    时间: 2007-8-31 09:06
标题: 很无聊,很火星的咚咚……关于require与library
这几天做了一个很无聊,很火星的东西,之前脉子似乎也说过类似的思路,不过貌似被无视了— - -bb 虽然我也是昨天才发现脉子那帖子的…………{/gg}

所谓的RP的东西就是require与Ruby的基准类库……

经FDR提醒后……大致写了如下这么一段RP内容……

temp = Dir.getwd
$:.push(temp + "/Extend/")
require 'uri'
p URI.parse('http://www.example.com:6060/').port

在RM内运行,弹出窗口提示的正是  6060

所使用的是Ruby 1.8.1 - 13 所附带的基准类库。

目前测试的结果是,1.8.1的库基本都可以引入,部分库和方法可以使用,比如写出来的uri库中的方法。但是一旦涉及到文件读写或者网络操作(如ping、访问),RM就会出现RuntimeError,导致程序非正常退出。原理由于个人能力所限,还无法分析。(目前我个人还是怀疑与文件以及文件夹的位置有关系……)

1.8.1以上的版本进会提示版本不符,以下的版本没有进行测试。

另外,我曾经试图导入Ruby Gems。无奈Gems的库文件比较多……而且文件夹设置比较复杂……同时基本均要求需运行在Ruby 1.8.4版本以上……

个人的想法大致就是:由于RM封装的只是Ruby的部分库,那么理论上完全可以添加回来。用Programming Ruby的原话来说,就是 ‘Ruby comes ``out of the box'' with a large and useful library of modules and classes.’
Ruby自带的基准库功能已经比较强大了,如果还能引入Gems进行扩展,那么RM的功能的扩展恐怕从易用性来说,就暂时不需要面对自己重新写的局面了。

不过,如果需要全面掌握Ruby的类、方法……恐怕没有指导教材是不行的 - -bbb{/gg}

所以权且在这里发个帖子……因为这东西既算不上技术,又算不上提问或者发明,只好在这里挖个坑……

PS:其实个人觉得把类库文件打开,把想要实现功能所要求的模块、类都拷贝进入RM的脚本也不失为一种方法  = =bbbbb{/gg}

题外话:Ruby CookBook这本书也蛮不错的……只不过没看Programming Ruby就来K这个……对我而言似乎还是有点奢侈了……

顺便 - -bb  问一下……
10s抛出的是 Hangup 异常么?……
作者: 面粉    时间: 2007-8-31 09:06
标题: 很无聊,很火星的咚咚……关于require与library
这几天做了一个很无聊,很火星的东西,之前脉子似乎也说过类似的思路,不过貌似被无视了— - -bb 虽然我也是昨天才发现脉子那帖子的…………{/gg}

所谓的RP的东西就是require与Ruby的基准类库……

经FDR提醒后……大致写了如下这么一段RP内容……

temp = Dir.getwd
$:.push(temp + "/Extend/")
require 'uri'
p URI.parse('http://www.example.com:6060/').port

在RM内运行,弹出窗口提示的正是  6060

所使用的是Ruby 1.8.1 - 13 所附带的基准类库。

目前测试的结果是,1.8.1的库基本都可以引入,部分库和方法可以使用,比如写出来的uri库中的方法。但是一旦涉及到文件读写或者网络操作(如ping、访问),RM就会出现RuntimeError,导致程序非正常退出。原理由于个人能力所限,还无法分析。(目前我个人还是怀疑与文件以及文件夹的位置有关系……)

1.8.1以上的版本进会提示版本不符,以下的版本没有进行测试。

另外,我曾经试图导入Ruby Gems。无奈Gems的库文件比较多……而且文件夹设置比较复杂……同时基本均要求需运行在Ruby 1.8.4版本以上……

个人的想法大致就是:由于RM封装的只是Ruby的部分库,那么理论上完全可以添加回来。用Programming Ruby的原话来说,就是 ‘Ruby comes ``out of the box'' with a large and useful library of modules and classes.’
Ruby自带的基准库功能已经比较强大了,如果还能引入Gems进行扩展,那么RM的功能的扩展恐怕从易用性来说,就暂时不需要面对自己重新写的局面了。

不过,如果需要全面掌握Ruby的类、方法……恐怕没有指导教材是不行的 - -bbb{/gg}

所以权且在这里发个帖子……因为这东西既算不上技术,又算不上提问或者发明,只好在这里挖个坑……

PS:其实个人觉得把类库文件打开,把想要实现功能所要求的模块、类都拷贝进入RM的脚本也不失为一种方法  = =bbbbb{/gg}

题外话:Ruby CookBook这本书也蛮不错的……只不过没看Programming Ruby就来K这个……对我而言似乎还是有点奢侈了……

顺便 - -bb  问一下……
10s抛出的是 Hangup 异常么?……
作者: 柳之一    时间: 2007-8-31 18:57
“脉子那帖子”没有找到,也不知道楼主所说的上文是什么。不过,感觉是不是楼主在讨论rmxp中调用ruby library?

我也想调用,不过一使用 require 就告诉我没有定义,怎么也没有想出解决的办法,也无从下手。

先不管 rmxp是否支持1。8,也不管是否全面支持library,能支持一个也行啊。

例如我想建立个tempfile,在ruby中是
  1. require "tempfile"
  2. temp = Tempfile.new("my-temp")
  3. temp.puts "面粉"
复制代码


那么在rmxp里如何调用呢?

把类库文件打开,把想要实现功能所要求的模块、类都拷贝进入RM的脚本也不失为一种方法

这个办法挺好的,不知能不能调用,关键在于调用啊。手里刚买的rubyrecipebook2(日文版,ruby创作者监修,200多人民币)不能在rmxp调用的话不就白买了,汗。
作者: 越前リョーマ    时间: 2007-8-31 19:42
没明白写了些什么……
作者: 面粉    时间: 2007-8-31 23:48
以下引用柳之一于2007-8-31 10:57:42的发言:

“脉子那帖子”没有找到,也不知道楼主所说的上文是什么。不过,感觉是不是楼主在讨论rmxp中调用ruby library?

我也想调用,不过一使用 require 就告诉我没有定义,怎么也没有想出解决的办法,也无从下手。

先不管 rmxp是否支持1。8,也不管是否全面支持library,能支持一个也行啊。

例如我想建立个tempfile,在ruby中是

   本帖相关代码如下:
require "tempfile"
temp = Tempfile.new("my-temp")
temp.puts "面粉"


那么在rmxp里如何调用呢?


把类库文件打开,把想要实现功能所要求的模块、类都拷贝进入RM的脚本也不失为一种方法

这个办法挺好的,不知能不能调用,关键在于调用啊。手里刚买的rubyrecipebook2(日文版,ruby创作者监修,200多人民币)不能在rmxp调用的话不就白买了,汗。


注意到这两句了么?
temp = Dir.getwd
$:.push(temp + "/Extend/")


require会向$:所储存的目录数组请求文件。
因此将自己所存放文件的文件夹位置推入就可以了。

至于脉子的帖子……比较古老了……

http://rpg.blue/viewthread.php?tid=17433

有兴趣就看看好了……

另外,貌似目前使用类库文件的操作等会使得程序非正常退出……

至少在Vista下如此…… - -bbb  XP下会不会这样子还不清楚……{/gg}

现在只能说是:可以将类库导入,并使用一部分……
------------------------------------------------------

另外TO楼上的,没看明白就不要回帖说:我没看明白。然后就溜之大吉,去混下一个帖子。

毕竟这帖子不是留着让人说“我不明白”而又不想搞明白的人回复的。
作者: 美兽    时间: 2007-9-2 02:56
原来如此,以前曾经试过更改$:,但记得提示只读?难道是人品问题— —
有机会一定试试。

第二个,答案应该是肯定的。
作者: 面粉    时间: 2007-9-2 06:37
以下引用美兽于2007-9-1 18:56:51的发言:

原来如此,以前曾经试过更改$:,但记得提示只读?难道是人品问题— —
有机会一定试试。

第二个,答案应该是肯定的。


在不作任何推入处理的情况下……
RM的 $: 是空的……{/gg}

另外,FDR测试了socket库……在他那里依然crash……{/gg}

关于问题2……感谢美兽殿……已经知道了 - -bbbb
作者: 柳之一    时间: 2007-9-2 18:03
自己又试着require了,socket果然require不出来
自己先是想为什么,就去搜索ruby文件夹,结果竟然发现socket.rb不存在,还以为是自己的版本低,下了最新版本之后,还是没有,后来查看竟然ruby没有自己的库,是c扩展
在src下面找到socket。

后来又测试了几个库,根据我的现有测试结果,得出以下几个结论(实验范围有限,在有限的范围里的结果)

柳的猜想:  rm可以使用ruby的库,但是必须是rb库,即以rb结尾。其他类型的库,例如c扩展库目前打不开,或是不支持。

即rm的自身rb局限性

附录:1.6版本的socket 有bug,会不会和版本有关系就不知道了。

问一下,rm的ruby版本是多少?1.4?哈哈

面粉能不能加上qq?
我的qq:

  1. require "matrix"

  2. mat0 = Matrix[[5,6,1],[2,6,5],[6,8,2]]
  3. qq = mat0.transpose

  4. p qq
复制代码


然后在p的效果里,就出现一行我的qq号。
不想让其他人知道,加个密,{/tp}
作者: gpra8764    时间: 2007-9-2 21:08
提示: 作者被禁止或删除 内容自动屏蔽
作者: 面粉    时间: 2007-9-2 21:12
Ruby可以使用C的库文件。

前提是库文件必须包含Ruby的头文件,并使用一个知道如何编译C源的extconf.rb进行编译。

编译后生成的是后缀名为.so的文件。

然后在Ruby内require,即可当作一般的rb库一样调用。

不过RubyCookBook当中提到,C代码中的错误很有可能使得Ruby的解释器崩溃……{/gg}

另外……RM使用的是1.8.1的Ruby版本。这个在帮助里面有……{/gg}
作者: 轮回者    时间: 2007-9-3 00:38
哪里还能找到RUBY1.8.1么?
我找不到旧版的了。
作者: 面粉    时间: 2007-9-3 00:58
以下引用轮回者于2007-9-2 16:38:35的发言:

哪里还能找到RUBY1.8.1么?
我找不到旧版的了。


1.8.1的Ruby可以到这里找……

http://rubyforge.org/frs/?group_id=167&release_id=10461

有很多有趣的咚咚 XD

今天还搜到几个基于Ruby的引擎{/gg}

不过共同的地方是……底层部分基本都是用C代码写的库{/gg}

比如这个……http://rubygame.sourceforge.net/doc/2_0_0/

只是require并且有效利用起来就很困难了……(这个用的是OpenGL - -bb)

另外还有一个shatteredruby……这个就比较有趣了……

具体的介绍可以看这里……

http://blog.gaaga.net/archives/category/3d-graphics/ogre/shatteredruby



只是目前连Ruby自身的库文件都不见得能够全部使用,所以也只能是开开眼了 - -bbbb
作者: 轮回者    时间: 2007-9-3 05:23
ming-ruby一个可以放SWF的东西……可惜也只能看看
作者: simounF    时间: 2007-9-3 09:06
提示: 作者被禁止或删除 内容自动屏蔽
作者: 猫哥哥    时间: 2007-12-20 10:20
试着在RM里require 'win32ole.so',果然出现RuntimeError。

但感觉这个RuntimeError有些奇怪。
一般看到的RuntimeError的格式都是
  1. 格式:RUNTIME ERROR SSS AT III:MMM
  2. SSS是运行错误代码,III是错误发生的程序段,MMM是错误地址
复制代码

可以查代码来找问题的原因。但RM这个的格式却不一样……想不通……{/gg}

[LINE]1,#dddddd[/LINE]

刚刚才意识到,推入$:的路经包含了中文会报错……怪不得之前新建工程测试了好几次都提示找不到文件{/gg}
作者: 夜天羽    时间: 2007-12-20 20:17
难道我的VIP不够!!!!我记得我有2VIP的!!
作者: 灼眼的夏娜    时间: 2007-12-22 18:00
以下引用猫哥哥于2007-12-20 2:20:16的发言:

试着在RM里require 'win32ole.so',果然出现RuntimeError。

但感觉这个RuntimeError有些奇怪。
一般看到的RuntimeError的格式都是

   本帖相关代码如下:
格式:RUNTIME ERROR SSS AT III:MMM
SSS是运行错误代码,III是错误发生的程序段,MMM是错误地址

可以查代码来找问题的原因。但RM这个的格式却不一样……想不通……





刚刚才意识到,推入$:的路经包含了中文会报错……怪不得之前新建工程测试了好几次都提示找不到文件


[本贴由作者于 2007-12-20 11:29:59 最后编辑]


错误原因是因为 win32ole.so 这些库 隐式链接了 ruby解释器的 dll文件。。 RM里米有。。  所以运行出错。。。= =




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1