设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 4248|回复: 16
打印 上一主题 下一主题

很无聊,很火星的咚咚……关于require与library

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2005-10-22
帖子
519
跳转到指定楼层
1
发表于 2007-8-31 09:06:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
这几天做了一个很无聊,很火星的东西,之前脉子似乎也说过类似的思路,不过貌似被无视了— - -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 异常么?……
3rd chapter ==> 55% 完工日期===>202X年?

跳不跳呢跳不跳呢跳不跳呢……下个项目死磕HQ……

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2005-10-22
帖子
519
2
 楼主| 发表于 2007-8-31 09:06:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
这几天做了一个很无聊,很火星的东西,之前脉子似乎也说过类似的思路,不过貌似被无视了— - -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 异常么?……
3rd chapter ==> 55% 完工日期===>202X年?

跳不跳呢跳不跳呢跳不跳呢……下个项目死磕HQ……

Lv3.寻梦者

梦石
0
星屑
1624
在线时间
1609 小时
注册时间
2007-8-28
帖子
3253

第3届短篇游戏大赛主流游戏组冠军第1届Title华丽大赛新人奖

3
发表于 2007-8-31 18:57:42 | 只看该作者
“脉子那帖子”没有找到,也不知道楼主所说的上文是什么。不过,感觉是不是楼主在讨论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调用的话不就白买了,汗。
“我推荐你一个游戏吧,avg的,剧情特感人”
“我擦,都是文字图片的游戏有啥好玩的,连个战斗都没有!”
“我推荐你一个游戏吧,rpg的,战斗也新颖”
“我擦,怎么米有作i弊器?“
”你不是喜欢战斗么?”
“不,我是剧情党!!”

继续阅读请点击
http://rpg.blue/blog-53316-10027.html
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3263
在线时间
3616 小时
注册时间
2006-9-6
帖子
37399

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

4
发表于 2007-8-31 19:42:25 | 只看该作者
没明白写了些什么……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2005-10-22
帖子
519
5
 楼主| 发表于 2007-8-31 23:48:34 | 只看该作者
以下引用柳之一于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楼上的,没看明白就不要回帖说:我没看明白。然后就溜之大吉,去混下一个帖子。

毕竟这帖子不是留着让人说“我不明白”而又不想搞明白的人回复的。
3rd chapter ==> 55% 完工日期===>202X年?

跳不跳呢跳不跳呢跳不跳呢……下个项目死磕HQ……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

月下可怜人

梦石
0
星屑
50
在线时间
10 小时
注册时间
2005-11-23
帖子
4085

第1届短篇游戏比赛亚军

6
发表于 2007-9-2 02:56:51 | 只看该作者
原来如此,以前曾经试过更改$:,但记得提示只读?难道是人品问题— —
有机会一定试试。

第二个,答案应该是肯定的。
纵然千里外,我等雁归来。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2005-10-22
帖子
519
7
 楼主| 发表于 2007-9-2 06:37:20 | 只看该作者
以下引用美兽于2007-9-1 18:56:51的发言:

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

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


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

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

关于问题2……感谢美兽殿……已经知道了 - -bbbb
3rd chapter ==> 55% 完工日期===>202X年?

跳不跳呢跳不跳呢跳不跳呢……下个项目死磕HQ……
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1624
在线时间
1609 小时
注册时间
2007-8-28
帖子
3253

第3届短篇游戏大赛主流游戏组冠军第1届Title华丽大赛新人奖

8
发表于 2007-9-2 18:03:35 | 只看该作者
自己又试着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}
“我推荐你一个游戏吧,avg的,剧情特感人”
“我擦,都是文字图片的游戏有啥好玩的,连个战斗都没有!”
“我推荐你一个游戏吧,rpg的,战斗也新颖”
“我擦,怎么米有作i弊器?“
”你不是喜欢战斗么?”
“不,我是剧情党!!”

继续阅读请点击
http://rpg.blue/blog-53316-10027.html
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

苹果梨

梦石
0
星屑
43
在线时间
6 小时
注册时间
2007-2-14
帖子
720
9
发表于 2007-9-2 21:08:13 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2005-10-22
帖子
519
10
 楼主| 发表于 2007-9-2 21:12:06 | 只看该作者
Ruby可以使用C的库文件。

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

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

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

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

另外……RM使用的是1.8.1的Ruby版本。这个在帮助里面有……{/gg}
3rd chapter ==> 55% 完工日期===>202X年?

跳不跳呢跳不跳呢跳不跳呢……下个项目死磕HQ……
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-4 07:21

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表