元编程还是 Elixir 好,完全在编译时完成,几乎不会带来性能损耗,甚至可以把一些计算挪到编译时完成。跟楼上说的 Lisp macro 一脉相承,但语法更加友好。
Ecto 的语法感觉比 AR 的要好用和灵活,基本就是 SQL(毕竟 SQL 是最好的语言)。
query = from p in Post,
join: c in Comment,
where: p.category_id == 1 and p.inserted_at <= ^datetime,
group_by: p.id,
select: [p, count(c.id)]
作者还是之前 ruby 社区的大牛 ryanbigg
我说的是他这个场景下的问题。那也比 Redis 不加连接池,一上来就等着好吧,而且连接池比线程数多就可以规避这个问题了。
加连接池不是为了解决 Redis 慢的问题,而是为了解决竞争的问题吧。Newrelic 比较新的版本,Redis 应该不会把太多 Ruby 的时间算进去
嗯,我也跟 Kevin 有过几面之缘,很靠谱,也知道一些 launchschool 不错的学生,觉得 launchschool 已经是同类中很不错的了。真的是那句话,“修行靠个人”,你个人一定要找准目标和方向。
不知道的话就去了解就好了啊,比如考虑一个实际的后端问题和前端问题,解决完之后看你更喜欢哪个。我印象中 launchschool 的课程应该是一些实际项目吧,这样就很好啊,只是你需要的是更多深度,而不是很多重复的劳动。也可以和 Kevin 聊聊看,我相信他应该会给你很多不错的建议的。
我们招人有自己的要求,你如果感兴趣的话,可以邮件聊一下。
我觉得你有两个问题,一个是目标大小,一个是目标太大。
目标太小是,“就是为了学 rails 的”。不管 @knwang 办 launchschool 的目的是不是这个,但我觉得你个人不能把这个当做目标,而应该是”学编程“、“学后端或前端开发“、”成为软件工程师“这类大一点的目标,而 Rails 只是通向这个目标一种途径,或者说能帮你找到工作的途径。人人都可能很快学会 Rails,但真正能够做实际项目、解决实际问题、抗住流量、做优化等等才是你应该想办法去掌握的。
目标太大是,你涉猎太广了。”全栈“工程师并不是那么容易做的,真正好的全栈工程师我很少见到。而且你也觉察到学很多东西比较吃力,特别是你还没有编程基础。我觉得你应该通过 launchschool 的课程快速找到自己想要专注的事情,然后钻研地越来越深入。如果你喜欢做用户交互方面的、喜欢调整各种页面,那你可能适合做前端;你如果更喜欢和数据打交道、喜欢研究底层网络、操作系统等等,那你可能更适合做后端。如果你都不喜欢,或者不能坚持下来,那你可能不适合做这一行。
另外,关于 Rails/Ruby 的问题,我个人观点是,学习一下还行,但你如果想用来做比较大项目的话,那千万别用。但是考虑到你的情况,如果你想做后端,最好还是坚持以 Ruby/Rails 为途径,更深入学习后端开发,然后找个不错的公司做做实际项目。等你已经比较熟悉了,再看看其他语言。等你能认识到 Ruby/Rails 的不足,知道怎么去解决,但知道有些很难解决的时候,你应该已经是个不错的后端工程师了。如果你想学前端,那就丢掉 Ruby/Rails 吧,这不是前端范畴的,你应该去看看 JS/React 等等,但前端也有很多工程上的问题,性能的问题要去解决。
至于公司的话,如果你愿意来上海,可以考虑我们公司,虽然比不过很多大公司,但起码有真实用户的线上流量和很多实际问题,而且 Ruby 还是在整个服务中发挥了很重要的作用,应该可以帮助你成为一个不错的后端工程师,而不仅仅是 Rails 工程师。 https://www.liulishuo.com/job-detail.html?id=4&entity=3
Rails 还需要“唱”衰吗?
Redis 没加 connection pool 的话,肯定有问题啊,其他啥都不用看,先把这个改了看看再说。而且楼主说了 "非数据库非 redis 的底层占用时间巨大",应该就是 "Ruby" 的时间,这个很大概率就是锁了
我估计你卡在 Redis 的锁了,Redis 默认没有加连接池,为了线程安全,几乎所有的地方都会用锁 https://github.com/redis/redis-rb/blob/master/lib/redis.rb#L93 特别是像你这种并发这么高的情况下,线程极度繁忙,锁个几百毫秒应该很正常
用这个吧 https://github.com/mperham/connection_pool pool size 设成线程数量就好
用的什么 web server?puma 还是 unicorn?这个不说清楚,光看框架一点用都没。另外看看 CPU 跑满了没,没跑满的话,应该还有优化空间
@fredwu 也是澳洲的公司吗?
打算试一下看看
如果你是提前建立好了连接,然后直接切换着用,应该没事,每次只是从不同的连接池里拿连接而已。但如果你上边那个代码会每次去建立新连接,就会代码一些开销,这个得去看一下 Rails 源码了。但应该都不会出现你说的“爆了”吧,连接池用的太多的话,最多是其他线程需要等待一会儿才能拿到连接。
项目跑起来,加个 byebug 跟进去看一下呗
居然是谷歌翻译。。而且,确实跟 Elixir/Erlang 没任何关系啊。。
没看懂你想表达什么。。我这里运行最后结果是 nil
,没啥问题
不过 delete_all 居然也敢用。。
首先,不要太相信 Benchmark 了,自己得有个判断。其次,就算不是为了速度,Rails 也不值得用啊,没什么可取之处
如果你不能把 RSpec 用的足够简单的话,还是不要用了
哈哈哈。写 Elixir 基本上就是在写 Erlang 嘛 😂
不相信你用 Erlang 写的能更好用。。到时围观你一下你会做成什么样
linq to sql 不就是 ecto 嘛。。
不知道能不能把相关主题安排在一起,比如一上午都是前端,这样就可以翘一上午了 😂
@lgn21st 你不讲一个吗? 😈
@AquarHEAD 你居然也有 ruby-china 账号,id 还这么前
Elixir Shanghai 前来支持
问题信息太少,谁都没法回答你的问题呀。起码给点 log 什么的
同求认识
上次 meetup 有见到一个巧议的工程师,挺靠谱的。支持一下
期待一下