难道错了?
#2 楼 @moliliang 我自己没有用这些框架的需求,所以加了个问号。我看现在讨论得最多的是 React,然后 Vue 也在崛起?之前用过 Angular 1。没深入使用过 Angular 2,听说就像学一款新的框架?不知道比起 React 或者 Vue 有何革新之处?
突然发现“全站”这个翻译比”全栈“好。 Stack 本身是一堆东西,所以老外看了 Full Stack 多少能猜到是啥都会的意思。 Stack -> "堆栈"或者“栈”这个翻译就意义不明了,旁人看了都不知道“全栈”这个程序员自己造的词是什么意思。 建议大家推翻旧世代低质量翻译“全栈程序员”,启用新翻译“全站程序员”,通俗易懂
早就已经不是 Angular 的天下了?
我现在都是用 Let's Encrypt https://certbot.eff.org/
能不能开个淘宝店卖帐号或者积分卡?兑换成网站的积分之后用积分来支付?
能不能用这个来检查?
if (Turbolinks.supported) {
// ...
}
https://github.com/turbolinks/turbolinks#turbolinkssupported
代码量还是 ruby 少点?
→ cloc lib ~/Downloads/kata-poker-hands-elixir-master
17 text files.
17 unique files.
0 files ignored.
github.com/AlDanial/cloc v 1.70 T=0.09 s (188.3 files/s, 7774.9 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
Elixir 17 121 29 552
-------------------------------------------------------------------------------
SUM: 17 121 29 552
-------------------------------------------------------------------------------
→ ~/Downloads/kata-poker-hands-elixir-master
→ cloc lib ~/Downloads/kata-poker-hands-ruby-master
16 text files.
16 unique files.
0 files ignored.
github.com/AlDanial/cloc v 1.70 T=0.08 s (208.5 files/s, 4912.7 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
Ruby 16 54 16 307
-------------------------------------------------------------------------------
SUM: 16 54 16 307
-------------------------------------------------------------------------------
→ ~/Downloads/kata-poker-hands-ruby-master
raise + better_errors
redux 确实繁琐,看了一集 mobx (https://egghead.io/lessons/javascript-mobx-and-react-intro-syncing-the-ui-with-the-app-state-using-observable-and-observer) 的教程,好像更简洁
mobx credit: https://github.com/80percent/mobx-react-native-template
gem "passenger", ">= 5.0.25", require: "phusion_passenger/rack_handler"
改成这样试试
gem "passenger", ">= 5.0.25"
有 Rails 类似框架吗?
#27 楼 @small_fish__ 请问 crystal 做 web 开发用什么框架?我找了一下没找到
我换回 Rails 了,这个客户做完就不用 Phoenix 了。还是太繁琐,太罗嗦,比如要把 conn 和 current_user 在 templates 里到处传,比如很多 Rails 帮你打点好的地方都需要自己花时间去打点。有这时间我还不如拿来给 Rails 多加几个 Server。再说了假设 Phoenix 的返回速度是 1ms,Rails 是 200ms,我也不想为了这 199ms 去给我自己增加那么多工作量。Ruby-China 现在打开需要 1.6s 的时间,换成 Phoenix 也许就能在 1.58s 内打开,速度提升了 1.25%!
最后我学了学 Phoenix,成功用微秒级的速度说服客户从 NodeJS 转 Elixir/Phoenix。开发效率上也只是略逊色于 Rails。Learning curve 也很平缓。
但是 Phoenix 和 Rails 比起来还是很残缺不全,而且 Phoenix 作者好像也有点简陋主义的倾向,但凡能多写两行弄出来的就不给加个 helper。所以我还是更喜欢 Ruby/Rails 的理念。而且 Phoenix 也有 one-man-project 的倾向。
不过 Phoenix 速度还是要比 Rails 快很多,这一点也让我放不下,所以现在还是更倾向于 Phoenix。我感觉 Rails 现在最大的缺陷就是 Ruby 造成的速度问题。哪怕 Ruby 作者 3x3 的口号我觉得也没什么吸引人的,因为按照 Phoenix 作者的说法(https://github.com/mroth/phoenix-showdown),Elixir/Phoenix已经是Rails的10多倍了。
所以我期望中最完美的结合是 Rails 原班人马放弃 Ruby 转投 Elixir。搞个 Elixir on Rails 的大新闻出来。
抱怨了这么多主要是那一周被 NodeJS 折磨了没地发泄,sorry
最后给你们看我 prod 环境的 log,注意其中的µs
01:09:56.277 request_id=53nbaccbfib3ugpcg31ajcrlr1b13b4u [info] GET / [39/78]
01:09:56.373 request_id=53nbaccbfib3ugpcg31ajcrlr1b13b4u [info] Sent 200 in 96ms
01:15:13.716 request_id=8bhv93vm58b5donvvk98g548a6g9bckb [info] GET /
01:15:13.716 request_id=8bhv93vm58b5donvvk98g548a6g9bckb [info] Sent 200 in 282µs
01:15:45.240 request_id=tt5j6vhqsu2so2sh529qfam7di7ovj0u [info] GET /
01:15:45.241 request_id=tt5j6vhqsu2so2sh529qfam7di7ovj0u [info] Sent 200 in 313µs
01:16:47.404 request_id=2uv48orqkrqol62kuqst7me38r8e09vh [info] GET /
01:16:47.404 request_id=2uv48orqkrqol62kuqst7me38r8e09vh [info] Sent 200 in 218µs
01:17:29.837 request_id=pr2k21emb5l3hhlesc25f5i3tg45qsuv [info] GET /
01:17:29.837 request_id=pr2k21emb5l3hhlesc25f5i3tg45qsuv [info] Sent 200 in 178µs
01:50:20.497 request_id=3un89oqbhgjmhaiv2gnvp19m58ssddn6 [info] GET /
01:50:20.498 request_id=3un89oqbhgjmhaiv2gnvp19m58ssddn6 [info] Sent 200 in 191µs
02:09:52.167 request_id=1mqbkdt4ofrla3ioaa8e6l85u4umib9g [info] GET /
02:09:52.167 request_id=1mqbkdt4ofrla3ioaa8e6l85u4umib9g [info] Sent 200 in 190µs
06:50:40.028 request_id=3dn8vr2q3mubcga4usa4gbjq6lrr09tr [info] GET /
06:50:40.028 request_id=3dn8vr2q3mubcga4usa4gbjq6lrr09tr [info] Sent 200 in 305µs
07:24:49.306 request_id=tmrml479vagr43t4fep06mmu78tv8174 [info] GET /
07:24:49.306 request_id=tmrml479vagr43t4fep06mmu78tv8174 [info] Sent 200 in 208µs
13:56:16.896 request_id=qa161n1btahoakkmlh2ncspl2mpptio8 [info] GET /
13:56:16.896 request_id=qa161n1btahoakkmlh2ncspl2mpptio8 [info] Sent 200 in 201µs
我来告诉你为什么 NodeJS 发展得快: ExpressJS 跟 Sinatra/Flask 特别像,就是大家一看就懂,“嗯这个东西好,一看就会,我明天就拿它做个高并发的网站出来。“ 相反 Rails 的东西不会的人一看就会害怕,“啊这就是所谓的语法糖/魔法,果然凡人看不懂,没个一年半载怕是入不了门,我还是回去用 NodeJS 好了,高并发,也不用再学一门新语言"。
“统一前后台语言”从一开始就是一句 NodeJS 的广告词而已,NodeJS 和前端代码(如果你真的需要所谓前端代码的话)除了 Javascript 是一样的以外没有什么可以借鉴的,ReactJS 不能放到 Server 上,ExpressJS 也不能跑在浏览器里,还不是要学两套东西。再说现在学一门语言能有多难?那些一心想着”用现有的知识 (Javascript) 能做出来就最好了“的人不过是不思进取的懒人。
最近客户要开一个新项目,死活不再用 Rails 了,他觉得 Rails 慢(其实是 Angular 慢,他要是把 Rails 升上去,再让我加个 Turbolinks,我能给他弄得比现在的 Angular 代码快得多)。就让我用 NodeJS 的 Express,他听说 NodeJS 快得不得了。我花了一周时间连个登录都没做好。光是把环境配置得跟 Rails 类似就花了两天时间。剩下的时间就都用来配置环境和修一些信息不明的错误。
什么都要自己搞,Express 4 追求 unopinionated,追求 minimalist,把 session,flash 之类的都从 core 里去掉了,我又得一个一个去装回来。没有 ORM,又得装个 Mongoose。assets 不打包,要不就扔网页里,要不就配置 Webpack 之类的来打包。经常默默 Crash 不给任何错误信息,只能用 comment/console.log 来调试。
过度追求精简的我觉得是一种洁癖。什么都去掉了,到了用的时候又要让人自己装回来,自找麻烦。直接把优秀的人的多年经验拿来用不比外行乱精简更好?
NodeJS 刚面世的时候我就用了一下,给我的感觉就是一片混乱,什么都要自己去挑选组装,我那时还是个新手,连 jQuery 都不会,每天都在担心昨天作出的选择是不是一个好的选择。这次重新接触 NodeJS 之后发现还是一片混乱,还是一大堆琐碎的选择。ExpressJS 已经被原作者抛弃(因为他不靠它吃饭),被另一个人接手现在成了孤单的 one-man-project,很久都不更新一次(https://github.com/expressjs/express/commits/master)。ExpressJS 的作者现在去搞了个叫 Koa 的框架。而且以代码简短为荣(Koa's small ~550 SLOC codebase),以选项众多为荣(https://github.com/koajs/koa/wiki)。所以 NodeJS 在 Web 领域继续朝着 Configuration over Convention 的路子在走。
然后作为一个新手很重要的是文档,我反正是没看懂http://koajs.com/ 的文档。相反 Rails 的文档只要你认真读,能回答很多你学习过程中的疑惑。
我们顺便来看看 Koa 能干什么
Koa is a new web framework designed by the team behind Express,
the team abandoned Express
which aims to be a smaller,
less feature, more choice to make
ditch callbacks and greatly increase error-handling
这两个不是你自己制造的问题吗?
. Koa does not bundle any middleware within core
所以你要去找一大堆的 middleware 来完成最基本的 session,flash,etc.
unopinionated(无主见), minimalist(简陋者),这些词背后都意味着当你想做的东西不简陋的时候,你就得自己去研究总结很多 opinion。
CoffeeScript 是明日黄花,直接用 ES6 + Babel 吧。
对于我这样右手有 RSI 的人来说能少打一堆没用的括号就会尽量少打。花括号圆括号全都要按着 Shift,累。
Node 有一个巨大的优势就是内建了 nonblockIO+Ractor 对于 web 这种重 IO 操作的应用来说更加的方便。我想这两点是我想转 Node 的原因。
你再怎么 nonblocking IO,也要等数据库返回数据之后再发送内容,还要去解决异步的问题(参考 Koa 的文宣),所以虽然并发会更高,但是代码只会更繁琐,不会更方便。
test
何不先转到 Sublime Text 再转到 Atom?Sublime Text 比 Atom 快,比 Atom 稳定,也没有无法跳到定义的问题
安装是不是需要美国帐号?没有美国银行卡能注册吗?
和 Rails 5 冲突https://github.com/rails/rails/issues/25185
好用吗?和 React Native 比呢?大家怎么念它名字?我念成“下面”
可惜不叫 shanghua
用了一下 RubyMine 体验版,效率上并没有感觉到太大的提升,Features里也没有任何出彩的地方。一些熟悉的快捷键没有了还导致编辑速度下降,比如 Cmd+ 数字来切换文件,Cmd+D 来选择相同的内容。每年 400 多显得很贵,RubyMine 熟手能指教一下它的优点吗?
也许可以学 Swift 了。。https://news.ycombinator.com/item?id=10669891
heroku 必须用 2.2.3,有什么办法能指定 development 和 test 用 2.3.0-preview1,production 用 2.2.3?
经过反复试验之后,解决办法是在 Gemfile 里
#ruby=2.3.0-preview1
ruby ENV['CUSTOM_RUBY_VERSION'] || '2.3.0'
然后
heroku config:set CUSTOM_RUBY_VERSION=2.2.3