201
Hyperion 2011-09-09 07:22:47 +08:00
|
202
eth2net 2011-09-09 07:37:20 +08:00 via Android
手机版不能翻页啊。
|
204
linchanx 2011-09-09 07:49:10 +08:00
这个帖子居然火到200+的回复。。。
|
205
huacnlee 2011-09-09 09:07:13 +08:00
潜水看了很久,本来我不太想说的,掺和进这趟浑水,得罪了谁都不太好.
我觉的 @Los 一开始只是喜欢 V2EX,想用 Rails3.1 模仿做一个练练手而已。 @Livid 大度一些,有人模仿那是对你的肯定啊!你看 @Los 的 http://histart.me ,人家的页面一只写着 "thanks olivida" |
206
skywinger 2011-09-09 09:50:31 +08:00
@Los 谢谢你推荐的那两个网站,我会去了解。另外,实在是想和你交流下技术方面的信息,像你这样的geek,我很想结交。^_^
|
207
Livid MOD @huacnlee 他一开始并不是想自己做一个练练手,而是:
「谁有精力来全面clone一个PB2的rails版本?不做任何功能和UI上的变化,以我个人开发的话,开发周期估计要一个星期左右,有可能不需要一个星期,也可能超过一个星期稍微长点,其中最浪费时间最无奈的应该是对PB2中l10n多语言支持手工转为rails用I18n格式。这个开发周期对我现在而言太长了,谁有精力来开发呢?」 如果用我们之前在学校学过的语文知识,来归纳这段话的中心思想,那么你觉得中心思想是什么? |
208
mkeith 2011-09-09 09:59:13 +08:00
@Livid 我理解的意思是:@Los 估计他自己clone一个PB2要一周左右的时间,但是他时间不是很充裕,不能空出一周的时间完全做这个,所以号召大家一起来做。
|
209
Livid MOD @mkeith 因为我看到他用了「全面clone」的字眼,所以在我的理解中,他是觉得这里目前已有的所有功能都可以在一个星期内全部搞定。
对此,我只想说,等真的试过了,完整做出来了,再来看看自己究竟用了多长时间吧。 |
210
maol 2011-09-09 10:24:18 +08:00 1
插几句。
放下各人心中的误会,其实那只是一点点情绪反应,化学反应,夫妻吵架样的,说不明白的。其实都是因为对这个项目的爱。 但讨论到这里,显示出众人对这个项目有 恨 : livid 一直处于单打独斗的状态,PB没有一个建立在一个成熟框架之上,别人也便很难贡献代码进来,或者基于某些框架重构(tipfy,webapp2)?或者完善文档? rails可以让更多的人参与到其中,因为它建立了合作的基础。我到是很期待。希望LIvid把这种争论理解为更多人希望参与的需求吧 |
211
Livid MOD @maol 非常同意你说的。
作为这套代码的作者,我确实不觉得这套代码好,列问题的话,可以列出一堆。 完整重构我考虑过,而 GAE 确实是个纠结的事情,很多想做的功能,受限于 GAE 而无法有靠谱的实现,比如 follow。 而如果抛弃 GAE,那基本上就是一个全新的项目了。而现在我已经有全新的项目在进行中,而且确实不在 GAE 上。 所以目前 GAE 上的 V2EX 的 codebase,我的结论就是:暂时不会有巨大的重构,但是会有持续的更新和优化(在 GAE 更改了定价规则之后,这样的优化就更有必要了)。 而至于其他同学想用各种技术做自己的论坛产品,就请尽管尝试好了。但是我希望他们在做的,是一件有独创性的新作品。并且,我相信,有创意并且想做大事的人,一定不会希望自己的作品,带着别人的影子,否则,还不如赶快去点点上班好了。 |
212
chuck911 2011-09-09 11:59:21 +08:00
livid也是人,而且是跟大家一样的年轻人,运营一个社区、把握一个社区的导向,不容易啊
Los和livid都是正常地流露了自己的感情嘛 其实我个人觉得“和谐”并不很重要,在冲动的驱使下做一个东西是很酷的,这样才像海盗和摇滚乐手 恐怕facebook起初也只是个人情绪的产物,他也想不到后面会发展出巨大的意义 而livid也应该在大家的心中走下神坛,livid也跟大家一样,没必要一直“大度”,言语的交锋都无所谓,它恰好可以作为动力的来源 |
213
fanyange 2011-09-09 12:12:00 +08:00
对于很多喜欢PB2的朋友来说,我就是简单地想用PB2,不管是不是跟GAE绑定,不绑定更好。我上面的回复也说过了,如果真要做有价值的东西,是要考虑网站价值和代码的结合的。
而livid想的更多的是一整个社区的运作和独创性、创造价值什么的。他想鼓励做站的人自己创造一切。但我觉得,渐渐地livid流露出一种“你们任何一个都无法单独做到我所做到的”的意思,但一个程序员可能只是想简单地做到某一步,其余的运作什么的独创性什么的价值什么的,又可能由另一些人去完成,但他们都收益于这个程序员。我相信集体的力量。 |
214
lainuo 2011-09-09 12:52:38 +08:00
wow, 这个帖子有意思.
|
215
Los OP @huacnlee 其实根本原因是出现在我预计「一个星期」的开发周期上,@Livid 无法接受「一个星期」完成一个PB2的开发,后面的言论,只不过是自找自说,没趣。
|
216
Los OP @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写法,原有写法才是合适的。 |
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回应也好,各位回帖/争吵也好,都不是为了吵架而来的.无谓对错,只是方式问题.大家都相互包容吧. |
218
Los OP @fly2never 请翻到第一页看下我最开始的回复,我从来没有否认PB2的构思所需要花费的事情,并且我还在 #3 的回复里特定指出构思的过程才是最花时间的。关于开发周期,有人比我更短,我预计的时间已经不是太短的了,况且我在已经找到一堆现成的gem来完成PB2一些比较花时间的功能。我不知道大家对一个月的1/4的概念是什么,那起码是1/4的收入,还没有加上开发完一个项目后的思路放空期,这个时间段加起来更长。
大家或者觉得奇怪为什么我要提出明确的开发周期,这个只是为了说明竟然我提出这个想法但为什么不自己去实现的却想要让别人去实现,是因为这个时间太长对于我实在不允许(并且这里没有完全排除对rails开发效率的自豪感,抱歉,rails开发人员或多或少都会以rails的开发效率自豪,对外偶尔无意识提出开发周期预测很正常,我跟我团队的人习惯对每个开发项目提出预计的开发周期,不做两个星期以上预测,如果感觉周期超过两个星期以上,会将开发进度分割开来,以能两个星期内完成为好,更多相关请翻到第一页 #94 查看我的回复),或者我在这里将预计的开发开发周期改为1年就不那么得罪人了,但这里某些人为何以自己没掌握的技术就来判断别人的能力? |
220
Los OP 「PB2」是程序的代号,「V2EX」是一个社区,我想作为建立人的 @Livid 比我更清楚两者之间的区别,我在主题里通篇没有提到过半个V2EX的字眼,单纯对「PB2」这个程序技术实现作为想法,你一上来回复就一副教训人的姿态来说一通运营之类的,末了还不够解气非得在twitter上来讽上那么几句「说永远比做容易」,这能让我怎么样?在这坐实「眼高手低」「只说不做」的头衔?
而关于运营,V2EX至今还是那么一个人独自的玩具,没人可用,会出现这种情况基本是创立人的原因,抱歉,我真的不觉得这是一个成功的运营。 |
221
Just1n 2011-09-09 16:01:24 +08:00
潜水看了好久,深感网络的确会放大某些不应该放大的情感或者内容。
记得之前有一次在msn上跟集团内外地城市的一个同事聊天,感觉一句很平常话,可是对方却为此感到很生气。后来还是打电话过去道歉了。跟他解释说,msn聊天是没有表情和语气的,所以,可能会造成一些误会,而在线下,配上表情,语气和手势,或许就不会有那样的误会了。 事实上也好像如此。我想,如果是在线下说这些话,估计大家都争吵不起来了。难不成,大家真会撸起袖子,拿块板砖,对拍么? |
222
lwjef 2011-09-09 16:02:30 +08:00 via iPod
@chloerei "I think the OpenBSD crowd is a bunch of masturbating monkeys"
哈哈哈 |
225
Los OP 针对 第三页 #20 的「没人可用」语意进行解释,免得造成误会,应该是「手下无可用之人」
|
227
ooof 2011-09-09 16:21:42 +08:00
本来在想,类似这样的长贴,有一个只看某一个人的回复,类似“只看楼主”功能也许有用。
然后发现,此时我这里点“只看楼主”,列表是空的。 |
228
standme 2011-09-09 16:22:36 +08:00
还是希望大家多 讨论 ,而非 争论 。
|
229
kissfire 2011-09-09 17:01:02 +08:00
los确实没恶意
|
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 从来就没有这一类意思, 这是一种错觉. 没啥好说得了, 我对我火上浇油的行为表示很羞愧... |
231
bluef 2011-09-09 17:49:38 +08:00
|
233
lanisle 2011-09-09 17:58:04 +08:00
|
234
Los OP 关于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 |
235
Los OP 关于上面「第三页 #34」 我所发的代码,这部分代码只是刚刚在TextMate随便建个文本手工敲的,并没有在项目里运行测试过,所以可能会存在一些小bug,不过这些代码都是可用并且完整的Notifications功能块代码,是一个完整的功能。
上面的代码如果需要局限Notifications的数量,可以考虑使用redis的list来配合完成,但要写多一些代码来判别list是否有重复的notifi存在,而set本身就可以忽略重复的数据,所以省回这一步。 |
237
Los OP @keakon 不会错过的,所有未读notifi都存在redis里,而且,这部分代码并没有包含主动push到浏览器端的功能。
|
238
vicalloy 2011-09-09 18:40:02 +08:00
我给我的论坛系统做了套v2ex的皮肤。就实际操作来看,细节问题还是挺多。
大功能做起来都很快,最后处理细节花费的时间很可能会超过预期。 |
239
Los OP @keakon 这里的异步处理是为了解决大量Notifications处理时候的性能问题,如果用户量和信息量不多,可以直接去掉Resque的异步任务处理
|
240
wtl 2011-09-09 18:44:19 +08:00
@Los 请教个问题,对于datamapper与activerecord怎么看?本人不是很喜欢ar以表为中心的建模方式
另外 reddis在项目中的使用? |
241
Los OP Redis 是一个高性能的key-value数据库,跟rails结合使用可以天衣无缝,解决大量的性能问题,嘿,现在我是超喜欢它
|
243
Los OP @wtl 关于datamapper与activerecord的比较我倒没有太多想法(可以说没有见解),但我习惯用activerecord,毕竟是rails的配套产品,很多地方配合习惯了。
|
245
Los OP |
246
keakon 2011-09-09 19:07:04 +08:00
@Los 据我所知,redis是存在丢失数据的风险的,为了提高性能,写入文件的间隔一般都达到几分钟了吧。
说些题外话。就代码来说,以我直观的看法就是符号太多了。 如果说Python是写英文的话,Ruby就是写公式了。 英文可以一眼区分出是否优雅,而公式只能看出是否复杂。 这是我在学习Ruby时最大的障碍。 另一点就是我不喜欢Ruby的一些省略,例如自动return最后一行表达式,函数调用可以不带括号。 我知道我自己可以因为不喜欢,而不去这样写。但我没法限制别人这么做,我也不可能不去读别人的代码。 我同意很多人喜欢这种自由,可这种不考虑副作用(比如得手动return nil,没法直接传递函数,查找函数调用时经常搜到注释)的默认做法让我觉得设计者考虑问题有点单纯。 还有一个很大的区别:做同一件事,Python和Ruby都可能有几种写法,区别就在于前者只有一种是最简单而优雅的,并且同时还是效率最高的。 这也可以看出Ruby鼓励多样性,但我不得不为学习多种方式付出N倍的时间,因为我没法避免遇到这样的代码。 所以虽然Ruby有很多我喜欢的特性,但最终还是放弃了。设计者在观念上与我格格不入,这是我感到最遗憾的。 |
247
Los OP redis只是存储notifications未读标示,notifications是存储在mysql数据库里的。
上面的代码我是集中起来了,包括一个数据库创建的代码,3个model,2个controller,一个Resque的job,还有一个views层的erb代码,所以看起来可能有点乱,但在具体项目中,这些代码都是分开来摆放的。 而关于ruby与Python差异,只能说各有好坏,选择哪个就看个人喜好了。 |
251
Kymair 2011-09-10 00:45:56 +08:00
@Los 说真的同学, 我还是希望你能够把代码放出来,这里的很多人会感兴趣的。你已经花了半天证明了你可以,又在这个帖子里花了这么多的篇幅讨论具体的细节问题(甚至贴了代码),让我很难觉得"七天“的周期是真的对你来说太长了。
我相信现在大家完全认为你可以,为什么不去做呢?在这个长达200多回复的帖子继续讨论细节,似乎有些尴尬了。 |
255
Los OP 汗,notifications代码今早无聊时试运行一下,发现竟然漏写了一个参数,并且有些小bug(创建主题时候如果title和内容body都出现 @某人 会重复提醒一次,还有一个地方将set改为list更适合,但会导致一个操作的时间复杂度为O(N),N为当前用户的未读提醒条数,这个数字一般不会很大,所以性能影响不大。
|