V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Los
V2EX  ›  Project Babel

假如建立一个PB2的rails版本分支

  •  
  •   Los · 2011-09-07 14:18:47 +08:00 · 28336 次点击
    这是一个创建于 4622 天前的主题,其中的信息可能已经有所发展或是发生改变。
    谁有精力来全面clone一个PB2的rails版本?
    不做任何功能和UI上的变化,以我个人开发的话,开发周期估计要一个星期左右,有可能不需要一个星期,也可能超过一个星期稍微长点,其中最浪费时间最无奈的应该是对PB2中l10n多语言支持手工转为rails用I18n格式。

    这个开发周期对我现在而言太长了,谁有精力来开发呢?

    现成可用的gem
    判断是否mobile
    https://github.com/brendanlim/mobile-fu
    头像上传
    https://github.com/jnicklas/carrierwave
    twitter绑定
    https://github.com/jnunemaker/twitter
    recaptcha验证
    https://github.com/ambethia/recaptcha
    处理输入内容中的@
    https://github.com/mzsanford/twitter-text-rb
    256 条回复    1970-01-01 08:00:00 +08:00
    1  2  3  
    Hyperion
        201
    Hyperion  
       2011-09-09 07:22:47 +08:00
    @SolidZORO 围观一下zpix作者,脑补和黑历史果然是最恐怖的东西……

    顺便问一下,在奇怪的地方下载到的完整版zpix,能用个人于非营利用途吗?
    还是只有试用版本才能使用?
    eth2net
        202
    eth2net  
       2011-09-09 07:37:20 +08:00 via Android
    手机版不能翻页啊。
    lwjef
        203
    lwjef  
       2011-09-09 07:45:32 +08:00 via iPod
    @eth2net 地址后加上?p=* 自己跳喽
    linchanx
        204
    linchanx  
       2011-09-09 07:49:10 +08:00
    这个帖子居然火到200+的回复。。。
    huacnlee
        205
    huacnlee  
       2011-09-09 09:07:13 +08:00
    潜水看了很久,本来我不太想说的,掺和进这趟浑水,得罪了谁都不太好.
    我觉的 @Los 一开始只是喜欢 V2EX,想用 Rails3.1 模仿做一个练练手而已。 @Livid 大度一些,有人模仿那是对你的肯定啊!你看 @Loshttp://histart.me ,人家的页面一只写着 "thanks olivida"
    skywinger
        206
    skywinger  
       2011-09-09 09:50:31 +08:00
    @Los 谢谢你推荐的那两个网站,我会去了解。另外,实在是想和你交流下技术方面的信息,像你这样的geek,我很想结交。^_^
    Livid
        207
    Livid  
    MOD
       2011-09-09 09:54:14 +08:00
    @huacnlee 他一开始并不是想自己做一个练练手,而是:

    「谁有精力来全面clone一个PB2的rails版本?不做任何功能和UI上的变化,以我个人开发的话,开发周期估计要一个星期左右,有可能不需要一个星期,也可能超过一个星期稍微长点,其中最浪费时间最无奈的应该是对PB2中l10n多语言支持手工转为rails用I18n格式。这个开发周期对我现在而言太长了,谁有精力来开发呢?」

    如果用我们之前在学校学过的语文知识,来归纳这段话的中心思想,那么你觉得中心思想是什么?
    mkeith
        208
    mkeith  
       2011-09-09 09:59:13 +08:00
    @Livid 我理解的意思是:@Los 估计他自己clone一个PB2要一周左右的时间,但是他时间不是很充裕,不能空出一周的时间完全做这个,所以号召大家一起来做。
    Livid
        209
    Livid  
    MOD
       2011-09-09 10:03:04 +08:00
    @mkeith 因为我看到他用了「全面clone」的字眼,所以在我的理解中,他是觉得这里目前已有的所有功能都可以在一个星期内全部搞定。

    对此,我只想说,等真的试过了,完整做出来了,再来看看自己究竟用了多长时间吧。
    maol
        210
    maol  
       2011-09-09 10:24:18 +08:00   ❤️ 1
    插几句。
    放下各人心中的误会,其实那只是一点点情绪反应,化学反应,夫妻吵架样的,说不明白的。其实都是因为对这个项目的爱。
    但讨论到这里,显示出众人对这个项目有 恨 :
    livid 一直处于单打独斗的状态,PB没有一个建立在一个成熟框架之上,别人也便很难贡献代码进来,或者基于某些框架重构(tipfy,webapp2)?或者完善文档?
    rails可以让更多的人参与到其中,因为它建立了合作的基础。我到是很期待。希望LIvid把这种争论理解为更多人希望参与的需求吧
    Livid
        211
    Livid  
    MOD
       2011-09-09 10:34:22 +08:00
    @maol 非常同意你说的。

    作为这套代码的作者,我确实不觉得这套代码好,列问题的话,可以列出一堆。

    完整重构我考虑过,而 GAE 确实是个纠结的事情,很多想做的功能,受限于 GAE 而无法有靠谱的实现,比如 follow。

    而如果抛弃 GAE,那基本上就是一个全新的项目了。而现在我已经有全新的项目在进行中,而且确实不在 GAE 上。

    所以目前 GAE 上的 V2EX 的 codebase,我的结论就是:暂时不会有巨大的重构,但是会有持续的更新和优化(在 GAE 更改了定价规则之后,这样的优化就更有必要了)。

    而至于其他同学想用各种技术做自己的论坛产品,就请尽管尝试好了。但是我希望他们在做的,是一件有独创性的新作品。并且,我相信,有创意并且想做大事的人,一定不会希望自己的作品,带着别人的影子,否则,还不如赶快去点点上班好了。
    chuck911
        212
    chuck911  
       2011-09-09 11:59:21 +08:00
    livid也是人,而且是跟大家一样的年轻人,运营一个社区、把握一个社区的导向,不容易啊
    Los和livid都是正常地流露了自己的感情嘛
    其实我个人觉得“和谐”并不很重要,在冲动的驱使下做一个东西是很酷的,这样才像海盗和摇滚乐手
    恐怕facebook起初也只是个人情绪的产物,他也想不到后面会发展出巨大的意义
    而livid也应该在大家的心中走下神坛,livid也跟大家一样,没必要一直“大度”,言语的交锋都无所谓,它恰好可以作为动力的来源
    fanyange
        213
    fanyange  
       2011-09-09 12:12:00 +08:00
    对于很多喜欢PB2的朋友来说,我就是简单地想用PB2,不管是不是跟GAE绑定,不绑定更好。我上面的回复也说过了,如果真要做有价值的东西,是要考虑网站价值和代码的结合的。

    而livid想的更多的是一整个社区的运作和独创性、创造价值什么的。他想鼓励做站的人自己创造一切。但我觉得,渐渐地livid流露出一种“你们任何一个都无法单独做到我所做到的”的意思,但一个程序员可能只是想简单地做到某一步,其余的运作什么的独创性什么的价值什么的,又可能由另一些人去完成,但他们都收益于这个程序员。我相信集体的力量。
    lainuo
        214
    lainuo  
       2011-09-09 12:52:38 +08:00
    wow, 这个帖子有意思.
    Los
        215
    Los  
    OP
       2011-09-09 13:41:35 +08:00
    @huacnlee 其实根本原因是出现在我预计「一个星期」的开发周期上,@Livid 无法接受「一个星期」完成一个PB2的开发,后面的言论,只不过是自找自说,没趣。
    Los
        216
    Los  
    OP
       2011-09-09 14:11:46 +08:00
    @makestory topic不一定有major post,如果有只能有一个major post,因为topic不一定有内容主体,可能只需要一个title就够了,所以title是必须的,major post是可选的并且只可一个。


    topic.major
    topic.replys

    这些很简单就可以实现,如果不想在Associations处实现的话,现有的代码基本不需要更改太多就可以实现
    #class Topic < ActiveRecord::Base

    def major
    self.posts.major.first
    end

    def replys
    self.posts.reply
    end


    上面就可以完成了,但这个写法不符合最新的rails写法,原有写法才是合适的。
    fly2never
        217
    fly2never  
       2011-09-09 14:59:25 +08:00
    @livid可能不是最厉害的那一类coder,但他做了很多程序之外的事情,比如运营V2EX社区.py和ROR语言不同,每个人的编码能力有高下.所以一星期还是一年的争论确实不好比较. @Los你只看到了Clone一个社区花的时间,可曾想到@livid设计构思这么一个社区的功能,氛围,价值观,etc所花费的时间,编码仅仅只是其中一小部分时间.

    @Los从你原帖的意味来看,有那么一点点的炫耀的意思[一周,浪费,无奈...],我想作为coder这种心态很正常,但是一个自知的coder向来也有很强的自尊心.想想自己的心血之作被人用一个星期cover了,确实不是滋味.即使对方的编码能力比自己强N倍也一样.在公共场合[或半公共场合]炫耀无疑会伤害到原作者.V2EX是一个包容的社区,大家都不是抱着吵架的目的来的.

    @livid,有人clone是件好事.如果无法接收别人对项目的指点,那何必开源呢.摆出运营一个网站/写出完整的版本才算真正的clone不是一个很好的道理.如果有人指出linux源码中有一段是垃圾,linus跳出来说"你知道维护一个linux内核需要多少功夫吗?有本事你完整写出一个内核,否则我认为你是挖坑"这样的话,会不会显得很滑稽呢?linus多半不会care,随便你怎么弄,有本事就提交代码到liunx kernal repo,否则免谈. @Los如果在代码上多多指出现有代码的不适之处,而不是无意中发帖地引起误会争吵,我想本贴的就不会出现那么多争吵.

    Anyway,正如发帖区底部的句子: "All for a better world". @Los clone也好,@livid回应也好,各位回帖/争吵也好,都不是为了吵架而来的.无谓对错,只是方式问题.大家都相互包容吧.
    Los
        218
    Los  
    OP
       2011-09-09 15:34:45 +08:00
    @fly2never 请翻到第一页看下我最开始的回复,我从来没有否认PB2的构思所需要花费的事情,并且我还在 #3 的回复里特定指出构思的过程才是最花时间的。关于开发周期,有人比我更短,我预计的时间已经不是太短的了,况且我在已经找到一堆现成的gem来完成PB2一些比较花时间的功能。我不知道大家对一个月的1/4的概念是什么,那起码是1/4的收入,还没有加上开发完一个项目后的思路放空期,这个时间段加起来更长。
    大家或者觉得奇怪为什么我要提出明确的开发周期,这个只是为了说明竟然我提出这个想法但为什么不自己去实现的却想要让别人去实现,是因为这个时间太长对于我实在不允许(并且这里没有完全排除对rails开发效率的自豪感,抱歉,rails开发人员或多或少都会以rails的开发效率自豪,对外偶尔无意识提出开发周期预测很正常,我跟我团队的人习惯对每个开发项目提出预计的开发周期,不做两个星期以上预测,如果感觉周期超过两个星期以上,会将开发进度分割开来,以能两个星期内完成为好,更多相关请翻到第一页 #94 查看我的回复),或者我在这里将预计的开发开发周期改为1年就不那么得罪人了,但这里某些人为何以自己没掌握的技术就来判断别人的能力?
    chloerei
        219
    chloerei  
       2011-09-09 15:39:20 +08:00
    @fly2never 其实linus是比较大炮的,记得他说过BSD的人是猴子什么的
    Los
        220
    Los  
    OP
       2011-09-09 15:52:11 +08:00
    「PB2」是程序的代号,「V2EX」是一个社区,我想作为建立人的 @Livid 比我更清楚两者之间的区别,我在主题里通篇没有提到过半个V2EX的字眼,单纯对「PB2」这个程序技术实现作为想法,你一上来回复就一副教训人的姿态来说一通运营之类的,末了还不够解气非得在twitter上来讽上那么几句「说永远比做容易」,这能让我怎么样?在这坐实「眼高手低」「只说不做」的头衔?


    而关于运营,V2EX至今还是那么一个人独自的玩具,没人可用,会出现这种情况基本是创立人的原因,抱歉,我真的不觉得这是一个成功的运营。
    Just1n
        221
    Just1n  
       2011-09-09 16:01:24 +08:00
    潜水看了好久,深感网络的确会放大某些不应该放大的情感或者内容。

    记得之前有一次在msn上跟集团内外地城市的一个同事聊天,感觉一句很平常话,可是对方却为此感到很生气。后来还是打电话过去道歉了。跟他解释说,msn聊天是没有表情和语气的,所以,可能会造成一些误会,而在线下,配上表情,语气和手势,或许就不会有那样的误会了。

    事实上也好像如此。我想,如果是在线下说这些话,估计大家都争吵不起来了。难不成,大家真会撸起袖子,拿块板砖,对拍么?
    lwjef
        222
    lwjef  
       2011-09-09 16:02:30 +08:00 via iPod
    @chloerei "I think the OpenBSD crowd is a bunch of masturbating monkeys"
    哈哈哈
    ooof
        223
    ooof  
       2011-09-09 16:06:01 +08:00
    @Just1n 如果有一个系统,能专门放大与提取这类细微的东西也许不错 :)
    standme
        224
    standme  
       2011-09-09 16:06:36 +08:00
    @Los 貌似你的开发速度很快,不知道有没有时间和闲散精力给我写一个小项目啊,我写好了需求,做写了前台
    Los
        225
    Los  
    OP
       2011-09-09 16:07:04 +08:00
    针对 第三页 #20 的「没人可用」语意进行解释,免得造成误会,应该是「手下无可用之人」
    Los
        226
    Los  
    OP
       2011-09-09 16:09:09 +08:00
    @standme 抱歉,时间有限。而且,我不接项目开发的活,感谢你的信任。
    ooof
        227
    ooof  
       2011-09-09 16:21:42 +08:00
    本来在想,类似这样的长贴,有一个只看某一个人的回复,类似“只看楼主”功能也许有用。

    然后发现,此时我这里点“只看楼主”,列表是空的。
    standme
        228
    standme  
       2011-09-09 16:22:36 +08:00
    还是希望大家多 讨论 ,而非 争论 。
    kissfire
        229
    kissfire  
       2011-09-09 17:01:02 +08:00
    los确实没恶意
    Hyperion
        230
    Hyperion  
       2011-09-09 17:12:00 +08:00
    网络上只能靠文字来了解一个人的态度, 可能@Los 你的表达实在太会让人产生误解, 我在第一页就写过了.

    依靠CI和各种现成的扩展, PHP熟手也未必不能在一个礼拜里山寨一份PB2, 但多多少少不会很完美. rails我接触的不多, 看懂还是可以的, 要我写我对着手册也能鼓捣出一堆, 而且以前看了很多关于rails的帖子, rails "变态" 的地方, 多少还是知道一点的. 最初看到这个帖子的时候我并没有什么特别的感觉, 但后来#70楼不小心戳到了我的疯穴, 这是后话了.

    按照Livid 第二页所说的, Livid应该是一个对待"坑"很认真的人. 一个礼拜能把挖的坑完再填完, 但@Los 又觉得这些时间对自己来说太长了, 多多少少会让人觉得@Los 对copy PB2的不重视, "随便刷刷胶水就能搞定" 的意思在里面. 当然, 多看几楼, 就知道其实@Los 从来就没有这一类意思, 这是一种错觉.

    没啥好说得了, 我对我火上浇油的行为表示很羞愧...
    bluef
        231
    bluef  
       2011-09-09 17:49:38 +08:00
    @Hyperion 我在#70楼主要针对一开始大部分人对@Los 用一周就能实现PB2大部分功能的不屑, 而且很多程序员也都有这样那样对自己能力的高度自信和自尊. 并且我习惯在不了解对方的情况下还是应该先建立对对方的信任, 如果最后不能完成事情再来评论也不迟.

    其实整件事看来就是@Los 无意间说出的一些话触到了一些人敏感的神经, 当然我的神经比较大条, 一直觉得@Los 在用一个程序员常用的语气在谈论一件非常平常的事情(比如一个项目或者一个功能如何实现可能需要的时间)而已. 当然以前我也比较敏感, 但是自从进了某厂之后... @yoyicue 你懂的
    bluef
        232
    bluef  
       2011-09-09 17:53:03 +08:00
    @Hyperion um, 我说的一些话也比较直接, 如果有所冒犯还请海涵并指出问题.
    lanisle
        233
    lanisle  
       2011-09-09 17:58:04 +08:00
    我也来了。

    最早对LZ发表的内容的理解就是简单地做一个ruby的分支,一周时间也只是单纯coding的时间,没有什么恶意,如果后来@livid 没有出来说一些我也认为有点敏感的话语的话也不会激起 @Los 的情绪。

    把V2EX和PB2分开讨论吧,论点不同没啥结果的。
    Los
        234
    Los  
    OP
       2011-09-09 18:22:18 +08:00
    关于rails的开发效率,以 @Livid 这个讨论 http://www.v2ex.com/t/17897 的Notifications功能作为开发例子,有经验的rails开发人员可以在一个小时内完成,比如以下的代码是使用Redis的Set数据类型,结合Resque(https://github.com/defunkt/resque)的异步处理,半个小时内手工敲出来的,除开空行,总代码行数60行左右,完成了Notifications的创建,并且点击进主题会自动消去相关notif,现在设计是支持大量的notifs,类似于google reader中未读条数显示,200条以上未读提醒会以「200+」来显示。而在性能方面,notif的相关可变处理都是利用redis,时间复杂度都为O(1),所以只要redis足够快,那么这方面代码就没有问题。
    以下是相关代码
    http://gist.github.com/1205886
    Los
        235
    Los  
    OP
       2011-09-09 18:29:29 +08:00
    关于上面「第三页 #34」 我所发的代码,这部分代码只是刚刚在TextMate随便建个文本手工敲的,并没有在项目里运行测试过,所以可能会存在一些小bug,不过这些代码都是可用并且完整的Notifications功能块代码,是一个完整的功能。

    上面的代码如果需要局限Notifications的数量,可以考虑使用redis的list来配合完成,但要写多一些代码来判别list是否有重复的notifi存在,而set本身就可以忽略重复的数据,所以省回这一步。
    keakon
        236
    keakon  
       2011-09-09 18:33:24 +08:00
    @Los 表示确实很难读,粗略看了下,如果发通知时用户不在线,上线时怎么查看错过的通知?
    Los
        237
    Los  
    OP
       2011-09-09 18:36:54 +08:00
    @keakon 不会错过的,所有未读notifi都存在redis里,而且,这部分代码并没有包含主动push到浏览器端的功能。
    vicalloy
        238
    vicalloy  
       2011-09-09 18:40:02 +08:00
    我给我的论坛系统做了套v2ex的皮肤。就实际操作来看,细节问题还是挺多。
    大功能做起来都很快,最后处理细节花费的时间很可能会超过预期。
    Los
        239
    Los  
    OP
       2011-09-09 18:44:10 +08:00
    @keakon 这里的异步处理是为了解决大量Notifications处理时候的性能问题,如果用户量和信息量不多,可以直接去掉Resque的异步任务处理
    wtl
        240
    wtl  
       2011-09-09 18:44:19 +08:00
    @Los 请教个问题,对于datamapper与activerecord怎么看?本人不是很喜欢ar以表为中心的建模方式
    另外 reddis在项目中的使用?
    Los
        241
    Los  
    OP
       2011-09-09 18:47:06 +08:00
    Redis 是一个高性能的key-value数据库,跟rails结合使用可以天衣无缝,解决大量的性能问题,嘿,现在我是超喜欢它
    mlzboy
        242
    mlzboy  
       2011-09-09 18:48:29 +08:00
    @Los 这个贴要火了,los不完成,对不住大家哈
    Los
        243
    Los  
    OP
       2011-09-09 18:49:39 +08:00
    @wtl 关于datamapper与activerecord的比较我倒没有太多想法(可以说没有见解),但我习惯用activerecord,毕竟是rails的配套产品,很多地方配合习惯了。
    bluef
        244
    bluef  
       2011-09-09 18:49:48 +08:00
    @Los 直播吧XD
    Los
        245
    Los  
    OP
       2011-09-09 19:00:25 +08:00
    @mlzboy @bluef 汗,其实我平时最喜欢的是到 github.com 刷屏而已,这类型的即时展现代码的压力很大的,上面的代码完全没有测试过,如果出现重大问题那不是囧死
    keakon
        246
    keakon  
       2011-09-09 19:07:04 +08:00
    @Los 据我所知,redis是存在丢失数据的风险的,为了提高性能,写入文件的间隔一般都达到几分钟了吧。

    说些题外话。就代码来说,以我直观的看法就是符号太多了。
    如果说Python是写英文的话,Ruby就是写公式了。
    英文可以一眼区分出是否优雅,而公式只能看出是否复杂。
    这是我在学习Ruby时最大的障碍。

    另一点就是我不喜欢Ruby的一些省略,例如自动return最后一行表达式,函数调用可以不带括号。
    我知道我自己可以因为不喜欢,而不去这样写。但我没法限制别人这么做,我也不可能不去读别人的代码。
    我同意很多人喜欢这种自由,可这种不考虑副作用(比如得手动return nil,没法直接传递函数,查找函数调用时经常搜到注释)的默认做法让我觉得设计者考虑问题有点单纯。

    还有一个很大的区别:做同一件事,Python和Ruby都可能有几种写法,区别就在于前者只有一种是最简单而优雅的,并且同时还是效率最高的。
    这也可以看出Ruby鼓励多样性,但我不得不为学习多种方式付出N倍的时间,因为我没法避免遇到这样的代码。

    所以虽然Ruby有很多我喜欢的特性,但最终还是放弃了。设计者在观念上与我格格不入,这是我感到最遗憾的。
    Los
        247
    Los  
    OP
       2011-09-09 19:19:52 +08:00
    redis只是存储notifications未读标示,notifications是存储在mysql数据库里的。

    上面的代码我是集中起来了,包括一个数据库创建的代码,3个model,2个controller,一个Resque的job,还有一个views层的erb代码,所以看起来可能有点乱,但在具体项目中,这些代码都是分开来摆放的。

    而关于ruby与Python差异,只能说各有好坏,选择哪个就看个人喜好了。
    Los
        248
    Los  
    OP
       2011-09-09 19:24:19 +08:00
    @keakon rails 用了很多「魔法」,不熟悉rails的话,有些代码可能读起来真是一头雾水
    wtl
        249
    wtl  
       2011-09-09 19:37:47 +08:00
    @keakon 我建议再多去尝试几天 再多几天你就不会头痛看不懂 甚至感觉和读新闻一样
    Los
        250
    Los  
    OP
       2011-09-09 19:41:39 +08:00
    @wtl 代码从TextMate复制进gist.github.com里格式会有改变,空格和间格都会变乱了,看起来有点郁闷
    Kymair
        251
    Kymair  
       2011-09-10 00:45:56 +08:00
    @Los 说真的同学, 我还是希望你能够把代码放出来,这里的很多人会感兴趣的。你已经花了半天证明了你可以,又在这个帖子里花了这么多的篇幅讨论具体的细节问题(甚至贴了代码),让我很难觉得"七天“的周期是真的对你来说太长了。

    我相信现在大家完全认为你可以,为什么不去做呢?在这个长达200多回复的帖子继续讨论细节,似乎有些尴尬了。
    Los
        252
    Los  
    OP
       2011-09-10 08:40:12 +08:00
    @Kymair 嗯,讨论技术实现跟去开发项目花费的时间不能等同的,讨论技术,可以在休息时候抽空聊聊就行了。
    huacnlee
        253
    huacnlee  
       2011-09-10 09:38:38 +08:00
    @Los #50 你需要将TextMate设置成 softtab, 这样到 Github 就没问题了
    Los
        254
    Los  
    OP
       2011-09-10 09:52:27 +08:00
    Los
        255
    Los  
    OP
       2011-09-10 10:18:46 +08:00
    汗,notifications代码今早无聊时试运行一下,发现竟然漏写了一个参数,并且有些小bug(创建主题时候如果title和内容body都出现 @某人 会重复提醒一次,还有一个地方将set改为list更适合,但会导致一个操作的时间复杂度为O(N),N为当前用户的未读提醒条数,这个数字一般不会很大,所以性能影响不大。
    mlzboy
        256
    mlzboy  
       2011-09-10 20:43:25 +08:00
    @Los gtalk什么的有哇,留一个,
    1  2  3  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1343 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 16:56 · PVG 00:56 · LAX 09:56 · JFK 12:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.