RubyTuesday [杭州][2013年5月16日] Ruby Tuesday 活动召集 - 朴灵讲 nodejs

fsword · 2013年05月13日 · 最后由 luikore 回复于 2013年05月24日 · 10322 次阅读

本次 Ruby Tuesday 不是在周二,是在周四,请各位注意

  • 时间:2013-5-16 星期四 19:00 - 20:30
  • 主题:Node.js 分享
  • 地点:西湖国际科技大厦 B 楼 2 楼飞来峰
  • 主讲:朴灵 https://github.com/JacksonTian

大家可以从文二路的入口进入,如果不熟悉,可以找一个阿里系的同学带路,也可以和我联系(13685751275)

Ruby 社区向来热心接纳各种新技术,之前我们也曾经沟通过一些 Node.js 的知识,但是朴灵所在的团队在过去很长时间里一直在用 Node.js,我们这次专门请他来做一些分享,和这个领域的高手交流交流

考虑到一些了解较少的同学,现场可能会介绍一些基本情况,如果你能预先做些 homework,相信会得到更多

是不是穿越了?标题上的时间是上个月?

👍 已经改正了。

#1 楼 @lgn21st 好吧,作为程序员,copy&paste 是可耻的......

这个必须有录像。@fsword 就靠你了。

看到主讲各种期待了

#5 楼 @xds2000 这个真的没录像啊,ruby tuesday 亮点就是轻量级嘛

注意是周四...

杭州 Ruby 社区继续被其他社区攻陷,XD

node.js ... 完全没前途的东西嘛

#11 楼 @ChanceDoor 你竟然还要问为什么...

#12 楼 @bhuztez 是啊 因为我不知道 并且我想知道

#9 楼 @yedingding 哈哈哈哈,我们是个心胸宽广的社区啊

补充了一下地址

#15 楼 @fsword 看来我跟 Node 无缘了... 又要回老家周末才能回来

#16 楼 @yedingding 你不是才回过家吗?

#17 楼 @fsword 家里有事得回去

#18 楼 @yedingding 恩,都到了顾家的年龄了

朴灵是被我骗过来的,哈哈哈

么么,有什么想听的都可以在回帖里说下,我可以准备下。

#10 楼 @bhuztez 别介,Ryan Dahl 在写 Node 之前也写过 Ruby 的。

#22 楼 @JacksonTian

别扯了,Node.js 就是坑爹货。异步逻辑本来就很恶心,Node.js 又不是第一个异步框架,而且比之前的异步框架都更难用。就异步框架里面,你说 Emacs,Tcl,Perl/POE,Python/Twisted,Ruby/EventMachine,渣渣的 Node.js 比得过哪个?

我觉得在这里你也找不出几个比我更早折腾 Node.js 的了,我开始折腾 Node.js 的时候,Node.js 的版本号才刚刚 0.1.x。

#23 楼 @bhuztez 兼听则明,朴灵团队在真实的线上环境中使用 nodejs 已经有很长时间了,而我对 nodejs 的了解还仅限于异步、事件驱动的概念层次,所以我是希望从真正用 nodejs 干活的人这里学习更多的信息,了解更多 node 社区的情况

#23 楼 @bhuztez 擦 我记得我刚开始折腾的时候也是 0.1 呢 http://helloworld.group.iteye.com/group/topic/20827

不过后来这东西火的一塌糊涂,就没心情用了..

#25 楼 @hooopo 没比我早啊 ... 时间上,在你发的那帖 10 天之后,我就再也没碰过 Node.js 了

#24 楼 @fsword 看 CoffeeScript 和 Express 就知道 Node 跟 Ruby 多紧密了

#26 楼 @bhuztez 我记得当时 node 的 logo 上还有一朵云呢 现在怎么变得那么丑?

#25 楼 @hooopo 为什么火了反而不用... 不明白... 图的不就是开发效率么

#28 楼 @hooopo 不记得了,之后我就把所有和 Node.js 有关的东西都删了。

目测 http://cnodejs.org/ 还是那风格

#29 楼 @jiyinyiyong Node.js 有屁个开发效率...

即便是异步框架内部 (Emacs,Tcl,Perl/POE,Python/Twisted,Ruby/EventMachine ...),你说哪个不能完爆 Node.js?

#29 楼 @jiyinyiyong 主要是只会写 hello world 啦 匿..

#25 楼 @hooopo 不知道幕后黑手是谁,完全不该火的啊...

#31 楼 @bhuztez 这个.. 这个.. 我经验少,, 楼上别拿这么吓人的话来打击我 Emacs 没接触过用来做网站的,求讲解.. Tcl 和 Perl 有各种原因让我学不会,对于效率我没话说 Twisted 和 EventMachine.. 求对比 幕后应该是 Google 没错吧,JS 不火也不会有 Node

#25 楼 @hooopo 我居然黑过 nodejs.. 大神你这个帖子怎么翻出来的。

node.js 的社区比较活跃,而且 js 可以前后通杀了,这个很爽,还有 npm 灰常好用~

#36 楼 @xieren58 每次听到 ruby 开发者说“npm 比 bundler 好用”我就只能“interesting”了

#35 楼 @Saito 专业挖掘黑历史..

#36 楼 @xieren58 JavaScript 一个都杀不了。写 Web 界面,还得整天操心浏览器兼容性,这个语法特性这个浏览器不支持,那个 DOM 属性那个浏览器访问的时候有坑,恶心死了。后端就更别提了,这个库的 binding 没有,那个库的 binding 也没有,都得自己写啊。还有,客户端咋办?

目测,目前想用只一种语言通杀还只有 Python ...

#39 楼 @bhuztez python 怎么写 web 界面..

#41 楼 @krazy 不管你信不信,反正我现在就在用 Python 开发 Web 界面...

#25 楼 @hooopo nodejs 之前的时候我也折腾过 server-side js

#33 楼 @bhuztez JS 是浏览器端标准,就凭这一点就有理由火起来

#39 楼 @bhuztez 你不能对一个版本还只有 0.10 的工具有太多期望。nodejs 之于所谓“高并发”、“实时性”来说,就像当年的 PHP,或者是 jQuery,做东西 quick & dirty。当然有人用

worse is better,不是么

#45 楼 @ShiningRay 语言本身就不显然比之前的异步框架支持的语言更好,用 Node.js 做东西既不 quick 又 dirty ...

#46 楼 @bhuztez 做像聊天室这种东西,nodejs 还算不错的吧,socket.io 这类现成库,也有一些替代的,ruby 这方面就少了,我只知道一个 faye,faye 还是兼有 nodejs 实现的。

#46 楼 @bhuztez nodejs 关注点不同,可能不合你的口味。 就像我其实比较希望他能支持 fiber,然后出一个类似于 em-syncrony 的库,或者直接语言级别上支持 async(老赵做的那种东西)。但是发现 nodejs 的开发人员的思维方式不太一样,所以也没办法

#42 楼 @bhuztez 求指点求解救.. 还有说了一堆别的语言 reactor pattern 的实现和用的早两个事实还是没法说明为啥 node.js 很渣啊

觉得 node.js 做些前端开发工具自给自足挺方便的 (yeoman workflow, coffeescript...),其他也确实一般..

#47 楼 @ShiningRay cometd 在 Node.js 出来之前就可以了 ...

#48 楼 @ShiningRay 严重怀疑他们想的是前后端用相同的 pattern 来干活

#50 楼 @bhuztez 没错啊,cometd 以前也搞过,但不管你服务器端用哪种语言,最终还是得客户端写 js 啊 前后端公用一些东西有好处的,比如客户端的 validation 可以和服务器端 validation 公用 model 也可以公用,然后只要改一下存储的 adapter 就行了

#52 楼 @ShiningRay 不管你信不信,反正我现在就在用 Python 开发 Web 界面,我就是不用 JavaScript...

#54 楼 @bhuztez 我信啊,完全信,Google Web Toolkit 还能自己把 java 编译成 js。 Coursera 的教程还用 Python 在网页里做游戏呢

#55 楼 @ShiningRay GWT 我用了近 2 年,刚开始很过爽,后来都是痛苦的回忆。 在 js 上包装一层,基本不避免的需要直接使用 js 的场景。比如, 我想在 GWT 中 jquery, 需要用 JSNI 包一层。 我想在 GWT 中用 pushlet 客户端,需要用 JSNI 包一层。

@bhuztez python 开发 web 完全不用 js? 求详解。

这么多人黑不缺我一个了 : )

看这两段类似功能的代码量的对比

https://github.com/chloerei/code_campo/blob/master/app/controllers/topics_controller.rb https://github.com/cnodejs/nodeclub/blob/master/controllers/topic.js

虽然说 cnodejs 这段没有分离 model 代码所以多了不少,但主要还是异步回调还有错误码判断耗费太多代码。

前端学 js 目前是唯一选择,即使用 coffee 也是基于对 js 的了解才能用好。后端我就不想用 js 了,什么用着舒服用什么,并发问题还有不少选择,Erlang 或 Go 对我吸引力还大点。

@luikore 这里怎么能少了你?!

#58 楼 @zgm

很欣慰看到这么多 nodejs 黑... 今晚见

话说当初有人问我 用啥写网站需要学的东西最少...我给的建议是 nodejs+mongodb+bootstrap 之后没过多久就感觉把人引坑里了...

ruby,rails 玩过,工作用 python,但还是喜欢 node.js~

今天好热闹啊,这么多回帖?

EventMachine VS Node.js

喵,可耻地迷路了

我们已经在会议室了

现场演示朴灵团队做的各种 nodejs 应用......

演示淘宝时光机的时候,我们让一个以前没用过的小兄弟在朴灵的机器上尝试,于是他淡定的打开了 chorme.....的隐身窗口

羡慕呀,深圳咋没这活动~

谁还记得那个速度超快的 angularjs.cn...

关于回调函数层次太多的问题,朴灵同学展示了自己的做法,原来除了 wind.js 这种通用方案外,还有这个思路 https://github.com/JacksonTian/eventproxy/blob/master/lib/eventproxy.js ,长见识啊

#68 楼 @fsword 必须的,做前端的每天都记背 Chrome 快捷键

无脑黑没意义啊,我还嫌 ruby 太慢呢

错过了,这么近。。。。

#54 楼 @bhuztez 期待不用 JavaScript 写的远超 GitLab N 条街的产品。B 大最近有时间来 Ruby Tuesday 布道一下吗?

#76 楼 @yedingding 直接 Teahour 邀请做一期啊..

#77 楼 @Saito 不错,双管齐下......

只会 js 的时候想学 node.js。不过那时候在 windows 下安装 node.js 还需要 cygwin,最后不了了之。 现在对 js 完全没有兴趣了

#64 楼 @haosdent 这不是我讲过的视频么,哈哈哈

#70 楼 @ChanceDoor angularjs.cn 跟 node.js 有啥关系……

话说我做了 EJS 和 slim 的性能比较,还是 slim 速度快

ruby 版 http://ruby-china.org/topics/7957#reply18

js 版

ejs = require('ejs')

template = "<div>"+
  "<h1 class='header'><%= header %></h1>" +
  "<h2 class='header2'><%= header2 %></h2>" +
  "<h3 class='header3'><%= header3 %></h3>" +
  "<h4 class='header4'><%= header4 %></h4>" +
  "<h5 class='header5'><%= header5 %></h5>" +
  "<h6 class='header6'><%= header6 %></h6>" +
  "<ul class='list'>" +
  "<% list.forEach(function(e){ %>" +
    "<li class='item'><%= e %></li>" +
  "<% }) %>" +
  "</ul>" +
  "</div>"

t = ejs.compile(template)
env = {
  header: "Header",
  header2: "Header2",
  header3: "Header3",
  header4: "Header4",
  header5: "Header5",
  header6: "Header6",
  list: ['1000000000', '2', '3', '4', '5', '6', '7', '8', '9', '10']
}

console.log(t(env))

for (var i=0; i < 100000; i++) {
  t(env)
}

看来 rails 的瓶颈就是 activerecord =_=

#83 楼 @luikore forEach 的性能没有直接 for 性能好。

ejs 的性能本来就一般~

#84 楼 @JacksonTian 我的机器上

$ node -v
v0.10.6

# list.forEach(function(e){
1.76s user 0.02s system 100% cpu 1.770 total

# for(var j=0; j < list.length; j++)
2.22s user 0.02s system 100% cpu 2.236 total

# var len=list.length; for(var i=0;i<len;i++)
1.77s user 0.02s system 100% cpu 1.777 total

而 ruby slim 还是略快

$ ruby -v
ruby 2.1.0dev (2013-04-25) [x86_64-darwin12.3.0]

1.48s user 0.01s system 99% cpu 1.497 total

之前和 handlebars 比较过也是 slim 快。

另外 slim 不是 ruby 里最快的模板引擎,它的性能比起 erb 还是略慢。

#33 楼 @bhuztez node 开发还在石器时代,能火是因为前端社区太太太太活跃了,为什么太活跃呢,是因为很多前端抓着稻草想告诉他们 boss 他们也可以干后端的活了。

#82 楼 @aptx4869 他的后台就是 node 啊

#86 楼 @luikore 用 SpiderMonkey 跑啊,好歹弄个 list comprehension 的例子啊,V8 就是坑爹货

#88 楼 @ChanceDoor 它是快在前端,用了 angular.js,页面是在浏览器渲染的,全部数据都用 json……但是后台 json 响应时间 20 毫秒难道 rails 实现不了?那点数据量就算工作在 development 环境下不开 cache 都能实现吧……就算翻个倍时间人类也感觉不出差别啊

其实令人较感兴趣的反而是他怎么做到能让 google 搜索到上面的内容的,直接 wget 任意一个链接下来的都是同样的模板,上面没有内容的,难道 google 爬虫还会执行 js,还是说后台会针对爬虫调用 phantonjs 什么的……

看着你们真幸福。哈尔滨孤苦伶仃。。

#79 楼 @yedingding #78 楼 @fsword #77 楼 @Saito #54 楼 @bhuztez 求 B 大 email...

  • 1,非常期待有 B 大的 Teahour :D

招聘 RUBY 开发人员 2 名

岗位要求:

  1. 计算机本科以上学历,有扎实的 Ruby 基础,使用 Ruby 开发 Web 应用 2 年以上
  2. 有基于 Rails 开发的项目经验,熟悉 Rails 的配置
  3. 熟悉 Sequel Gem
  4. 熟悉 SQL Server 及 MySQL 数据库操作
  5. 有较强的学习能力,能快速地熟悉开发项目及环境
  6. 熟悉 Linux 环境开发,熟练使用 git,rvm
  7. 良好的英语理解和沟通能力
  8. 兼职亦可 联系人:周小姐 [email protected] 联系电话:15924188331 工作地址:滨江区

#94 楼 @jennyzhou 请阅读招聘版版规,请联系论坛管理员 [email protected]

#86 楼 @luikore 今天正好在弄这方面的东西,社区原来总结过 http://cnodejs.org/topic/4f16442ccae1f4aa27001109 可以看看。

#96 楼 @JacksonTian cool, 如果有 RDTSC 测算前两次渲染时钟周期的结果就更好了,因为浏览器端选模板引擎要考虑无 JIT 的效果...

需要 登录 后方可回复, 如果你还没有账号请 注册新账号