yunyunlover 2007-12-4 20:49
组织一个简单的多人聊天室软件项目,大家可以报名参加~
这个projet的目标,是实现一个多用户的聊天软件~算是简易版的聊天室,只要实现基本功能就可以~~
这个项目是完完全全可以让一个新手立刻上马的~~~
我们使用:
用ruby来编程
图形界面工具用: TK, GTK+, QT, wxWidgets,或 Fox,.....[color=Red]这里我选用了GTK+[/color]
用模型DRb连接用户和服务器
因为GTK+的缘故~要在linux下完成这个项目
基本功能的实现有以下:
1,实现聊天室的用户界面,连接一个服务器并且很容易接受应用程序的等待。
2,应用程序允许放弃一个聊天的服务器
3,在多用户中实现连接到一个服务器的文字聊天
4,在每个用户登录时更新用户信息(登录名,城市。。。。。)
根据进行的进度,我们可以附加实现以下功能:
1,保存所有的信息到服务器和用户的文件里。
2,显示表情图片。
3,传送文件。
4,用户登录界面。
5,安全的传送数据。
对于[color=Red]drb[/color],有以下一些提示:
drb的功能是非常强大和简单的实现用户和服务器之间的交流
大家可以使用模型rinda,他是模型Linda在ruby下的一个分支([url=http://en.wikipedia.org/wiki/Tuple_space]http://en.wikipedia.org/wiki/Tuple_space[/url]).
[img]http://www.isima.fr/%7Eponge/cours/programmation-avancee-0708/tuplespace.png[/img]
Linda的联想图
其中, tuplespace是一个放置管道的空间,他来管理应用程序的空间分配的信息,每个管道都有任意的大小,并且一般来说,一个管道是有生命时间的限制的(比如:60s)。
至于管道空间的操作有如下:
1. 写:写一个管道到管道空间里
2. 读:从管道空间读取数据,寻找你想要的管道,根据存在的尺寸和管道值的条件(比如说:第一个由message_type_ 开始的元素)
3. 取:和读一样,但是是从管道空间里删除一个管道。
下面是关于读和写的程序编码:
[b]emitter.rb[/b]
[color=Red]#!/usr/bin/env ruby[/color]
[color=Red]require 'drb/drb'[/color]
[color=Red]require 'rinda/ring'[/color]
[color=Red]require 'rinda/tuplespace'[/color]
[color=Red]DRb.start_service 'druby://localhost:6666'[/color]
[color=Red]tuple_space = Rinda::TupleSpace.new[/color]
[color=Red]ring_server = Rinda::RingServer.new tuple_space[/color]
[color=Red]while true[/color]
[color=Red] tuple_space.write [:message, gets][/color]
[color=Red]end[/color]
[color=Red]DRb.thread.join[/color]
[b]reader.rb[/b]
[color=DarkOrchid]#!/usr/bin/env ruby[/color]
[color=DarkOrchid]require 'drb/drb'[/color]
[color=DarkOrchid]require 'rinda/ring'[/color]
[color=DarkOrchid]require 'rinda/tuplespace'[/color]
[color=DarkOrchid]DRb.start_service[/color]
[color=DarkOrchid]tuple_space = Rinda::RingFinger.primary[/color]
[color=DarkOrchid]while true[/color]
[color=DarkOrchid] puts tuple_space.take([:message, nil])[1][/color]
[color=DarkOrchid]end[/color]
[color=DarkOrchid]DRb.thread.join[/color]
[color=#333333][font=Tahoma,Verdana][size=12px][/size][/font][/color]
[[i] 本帖最后由 yunyunlover 于 2007-12-4 13:51 编辑 [/i]]
yunyunlover 2007-12-4 20:59
我对这个项目目前有一点构想~~~~~但是因为对ruby完全的不熟悉~~~~
所以希望各位ruby高手也能来给个主意~~~~
这个项目是被skyover和drive2me两位热心的管理员鼎立支持的~~~
所以,虽然还没开始,我已经万分感激了~~~
我会在半个月内努力完成,希望能在圣诞节前做完所有的工作~~~~
之后会把开发的心得发上来和大家分享~~~
(自然,如果只是在大家的帮助下,我一个人完成的话~)
yunyunlover 2007-12-4 21:03
如果有人参与这个项目的话~我想大家分工合作的重点就是drb和GTK+的界面
也就是一个人(团队)专门研究如何开发聊天室基本功能的实现
另一个人(团队)专门研究GTK+界面的实现
之后,大家在把项目和在一起~~~
这个聊天室的功能就基本实现了~~
yunyunlover 2007-12-4 21:14
聊天室的界面大致如下:
admin 2007-12-4 23:03
已经通过,项目地址:[url]http://dev.ruby-lang.org.cn/projects/show/8[/url]
wiki地址:[url]http://dev.ruby-lang.org.cn/wiki/8[/url]
SVN地址:[url]http://svn.ruby-lang.org.cn/rchat[/url]
希望早日签入代码,招到人手,兴旺起来!
playing5460 2007-12-8 21:57
支持!
playing5460 2007-12-8 22:16
现在进展如何?
drive2me 2007-12-9 10:08
还没开始呢,现在要找人带他们做,还要找会员一起来做。
我去发通知,找人来开发。
admin 2007-12-14 09:48
yunyunlover 还没有把代码check-in吗?
yunyunlover 2007-12-16 02:28
不知道怎么check in~~~~
admin 2007-12-16 12:50
我发给你的附件看了吗?在论坛里有个帖子上有说明的。
你需要安装一个SVN的客户端来做这事。
Sevenpairs 2007-12-19 17:10
请问有没有相关的参考书籍,或者是介绍ruby图形界面的书?谢谢
bob.yang 2007-12-20 00:14
回复 #12 Sevenpairs 的帖子
使用ruby开发GUI程序,可以使用 wxRuby, wxRuby 是wxWidget的一个ruby语言绑定实现。
主页是:[url]http://wxruby.rubyforge.org/wiki/wiki.pl[/url]
wxWidget 是一个跨平台的GUI库,是用C++实现的。有很长的历史,类似于MFC,但是是开源的。因为MFC逐渐退出微软的产品线,现在有很多C++的程序员开始用wxWidget编写windows,MacOS, linux下的GUI程序了。
drive2me 2007-12-20 11:44
To Bob.Yang,
Bob你终于来了,太好了。这位楼主的愿意把他们大学(一家法国大学)的项目拿到这里作为开源项目来做,但他也刚开始了解Ruby,所以需要我们的开发版主协助他来管理和开发这个项目。
你可以帮助他找到一位开发版主(我们的会员)来开发他们大学的项目吗?我一直在找,但还没有找到。这个月我很忙,Sky也很忙,你来了,正好帮助我们一下。谢谢!
bob.yang 2007-12-20 21:15
回复 #14 drive2me 的帖子
drive2me 兄,我会先在论坛上召集一下该项目版主。
如果暂时没有的话我先兼职着。呵呵
phoenix 2008-1-8 19:32
能不能用Rails写后台,这样不用另外开发服务端程序,可以同时使用Web聊天和专门的客户端聊天,自己开发的客户端只要发送HTTP请求就好了,后台根据客户端的不同而返回相应的渲染页面,如果这个项目要用到Rails,我报个名。
miserableman 2008-1-28 10:43
我也來報名
在公司學了幾個星期的Rails,很想也自己做個看看