• 微团队管理日志 at 2021年01月09日

    我们组里做技术分享,大家都认认真真做 ppt,但我们技术负责人分享就只用 emacs。但他却是把问题讲的最清楚、最明白的。

    Robert Morris 讲课也不做 ppt,课件就是有缩进的文本。同样的是东西讲的太明白了。

    但他们这种我都学不来,我对技术理解没那么深,也讲不了那么明白,只有努力并老老实实做 ppt。

    我们技术负责人几乎不怎么管我们。和产品、前端、测试团队比起来,我们后端是最松散的。

    但他在技术上影响了我们很多(我们很多慢慢的都按照他的套路玩了)。比如忽悠我们买 Safari Books,忽悠我们看有价值的技术书籍、做有价值的思考。再比如看他怎么写代码、做架构、解决问题。他搞事情,简直就是降维打击。

    没逼我们干过什么,但真的是被他忽悠忽悠着就上道了。

    做一件事总有一些规则,比如演讲要写 ppt,管理要打卡。但有的人,可以打破这些。

  • Rails 微服务初探 at 2020年12月29日

    恩,是的,无状态是说服务本身没有状态。

    如果是无状态的服务,比如 API 服务,一致性一般是由后面存储保证。

    一般 API 服务,可以不去考虑 CAP。存储服务(包括有状态的服务),比如 ETCD,才需要考虑 network partition 的时候,是否可读可写之类的。

    一致性一般是由后面存储保证

    不过也有特殊情况,GFS 存储就不保证一致性,由 lib 来处理。riak_pg(pub/sub),network partition 的时候可用,连回来的时候解决冲突。

  • Rails 微服务初探 at 2020年12月29日

    ETCD 的一致性保证有点迷,读的时候是有可能读到旧数据的。

    ttps://etcd.io/docs/v3.3.12/learning/api_guarantees/

    然后,network partition 的时候,有说能读,有说不能读的,https://stackoverflow.com/a/28927474/2477886

    ETCD 基于 Raft,但没完全用 Raft,Raft 的 request 都是要经过 master,这样的话,没办法横向扩展,ETCD 应该是没有完全用。。。具体怎么用的,还得看代码。。

  • Rails 微服务初探 at 2020年12月29日

    debug 才是麻烦的事情

    一致性,有些时候也没那么重要,可以牺牲掉换新能,或者业务层处理一下。

    很关键的地方,再根据具体情况处理。

  • Rails 微服务初探 at 2020年12月29日

    CAP 是存储要考虑的,除非这个服务没办法搞成无状态的才需要考虑。而且几个节点 partion 的可能很小,可以不考虑。

  • 赞赞赞👍

  • 听起来蛮不错的,不过我还没试过看小说,觉得词汇量比较大,会不太容易 😂

    语法可以靠猜,大体理解应该还 ok。

  • Install Ruby on Apple Silicon at 2020年11月29日

    不考虑我比较穷这一点以外,感觉挺香的。

  • 明白,再次感谢。

  • 哦,明白了,感谢。

  • 再请教一下,是不是说探测出热点,就把数据在 web server 里缓存一份,降低后面存储的压力?换句话说,其实 web server 承担了缓存的责任?

    感觉这个场景和 facebook 的有点像,他们有篇论文 Scaling Memcache at Facebook 感觉应该有一定的参考价值。

  • 请教一下 redis 报警设置在百分之 40,这感觉有点低啊,为啥不弄高点?

  • 感谢,我知道 Erlang 为了利用多核 CPU 有一系列的优化,有绑定 CPU、spin、sleep 线程之类的。但我没深入研究过 😂,对硬件了解的比较少 😂

    不过凭感觉,Ruby Actor 应该是有优化空间的。当然,能利用多核,已经是非常大的一步了。

  • 请教几个问题,还没看过 Reactor,不知道理解的对不对 😂

    这个 benchmark,要是 reactor 可以"绑定"到 cpu core 上,是可以成倍提升的?

    Ruby 在调度(Ruby Reactor 是不是直接用系统线程调度的?)reactor 的时候,其实会有,一开始 reactor1 在 cpu0 上跑,然后跑着跑着,跑到 cpu1 上了这种情况?

    而且随着 reactor/thread 的增加,这种情况会变多。

  • 一直没找到比较好的 rust 学习资料,尝试写过一个小的 project,不过后来放弃了 😂

  • Ruby 3 Fiber 变化前瞻 at 2020年11月17日

    java 有个 redis 的客户端,就是单线程 + 异步 io。

    thread 和 fiber 有不同的适用场景。fiber 没办法抢占式调度,最后还得借助系统线程。

  • 111 at 2020年11月13日

    我对我说的那些话做个总结吧。。。

    RoR 比 Java + IDE + Package 生产力更高

    那两个 query 的例子,就是为了说明,Java 没有很好的东西处理这些常见的问题。所以需要花人力解决,所以生产力不高。

    @rfactor

    还有张口闭口 IDE 提示、手写 SQL 的,这些是编程入没入门的问题吧。

    我在说生产力。。。举例能证明我的观点就够了。。。

    如果是超大型微服务的项目(业务域内核心几十个系统),我不知道现在 RoR 在这方面怎么样

    @fengkuok 是想说,这个场景下,Java 是一个选择,RoR 不一定行。

    我的回复意思是,RoR 缺少实践,可能不行。但和生产力没啥关系。

    为什么我们两个能聊下去?

    大公司(有很多内部系统的公司),你的服务要依赖很多不稳定的其他服务和代码,并且要提供稳定的服务。用 Ruby,没有相应的支持(背书),要自己搞。背后隐藏来很多奇奇怪怪的东西。

    关于楼主说的这件事

    这是楼主他们公司的事,我就是看个热闹。我不了解他们的具体情况,没发言权。

    不过可以说一点,人力成本对小公司挺重要的,大公司,人力成本就没那么重要了。

    *** 我只是说生产力问题,只针对下面这句罢了。***

    感觉像讲故事,最近用 spring boot 做了一个小项目,在 idea 强大的智能完成加持下,感觉也不比 rails 效率低多少,但静态语言带来的安全感让写代码的心智负担降低很多。

    最后,脱离场景(不了解情况)谈技术没有任何意义。

  • RoR 通过约定,降低复杂度。Spring 把复杂度都暴露给开发者了。有些 Java 的不便利,Ruby 里面就没有。

    估计要习惯一下,习惯了就好。

  • 111 at 2020年11月09日

    恩,是的。

    用不用 java 或者 spring 要看场景,每个人的认知都不一样,无关对错,个人选择罢了。

    单说 web/API 开发。

    如果是大公司,团队选择技术栈,那么我会选 java 和微服务。 如果是小公司:RoR 或者 Phoenix。 如果是个人项目:我会选 RoR。

  • 111 at 2020年11月09日

    这个是我个人的看法 😂 ,我觉得参考价值不大。。。

    不过确实没听过大公司,用 RoR 做微服务 😂

  • 111 at 2020年11月09日

    超大型微服务的项目

    我没研究过,但现在让我选的话,我不会用 RoR,因为觉得 RoR 缺少微服务方面的实践。

    RoR 搞微服务的话,需要一些探索。Java 和 Go 这种,更稳妥一些。

  • 111 at 2020年11月09日

    n + 1 这个问题,我自问自答吧。

    Java Spring 要解决这个问题,我手写 sql,同时有两个变量保存,还要把变量的关联关系对应上。。。

    大体是

    List<User> users = userMapper.findById(1024);
    List<Book> books = bookMapper.selectMutiByUserId(users);
    
    return presentUserWithBooks(users, books);
    

    (最好应该加 transaction)

    当然,这些代码并不是全部,首先是要写 selectMutiByUserId 这条 sql。

    presentUserWithBooks 也要改,要把 user 和他的 books 对应上。。。

    往快了说,我需要至少 30min。。。

    如果是 RoR,2min 搞定,测都不用测。

    user = User.includes(:books).find(1024)
    return present_user_with_books(user)
    
  • 111 at 2020年11月09日

    我主要是针对这句话

    感觉像讲故事,最近用 spring boot 做了一个小项目,在 idea 强大的智能完成加持下,感觉也不比 rails 效率低多少,但静态语言带来的安全感让写代码的心智负担降低很多

    举的例子,也是开发中比较常见的,也是想说明,RoR web/API 开发这个场景下,开发效率会高很多。

    技术栈对软件开发进度的影响,这个是另一个问题。这个问题本身想说明白就很难。比如,反复修改花费的时间这块要不要算,这个大家就有不同的理解。

    单单

    RoR web/API 开发这个场景下,开发效率比 Java Spring 高很多

    这个观点想说明白已经很难了。。。就算是有了具体例子。。。

    所以,关于“技术栈对软件开发进度的影响”,我觉得我还是保持沉默比较好。

  • 错过了。。。大佬们有没有 ppt 或者录像啥的? @xiaoronglv @luikore

    跪求

  • 111 at 2020年11月05日

    恩,是的,IDE 有很多强大的功能。

  • 111 at 2020年11月05日

    额。。。麻烦先看下前后文。

    我是说 IDE @Data 默认是不能提示的。。。路由也是。

    RoR 没 IDE,是因为多数的时候,不需要。编辑器的自定补全,差不多就够用了。

    RoR 和 IDE 的关系是,不用 IDE 大家也能很高效的写代码,但如果有更强大的补全,自然是有帮助的。

    Java 和 IDE 的关系是,如果没有 IDE,几乎是写不了代码。。。至少,我只有写 java 的时候,才会去用 IDE。

    RoR/Ruby + 编辑器效率多数的时候 >= Java + IDE。

  • 111 at 2020年11月04日

    项目中的模型的属性和方法

    属性,用了 @Data,IDE 可以提示吗?反正我的没提示,你要是知道话,我刚好学习下。

    controller 中的方法,route 中的路径

    RoR controller 之间不会相互调用,不需要知道有哪些方法。。。

    路径有命令行 rake routes 打印所有路径。

    java spring 如果想知道有哪些路由,是怎么搞的?这个我确实不知道,想学些下。

  • 111 at 2020年11月04日

    比起代码的健壮性,ROR 的这点简洁不值一提。

    这句话,你是想说 RoR 更简洁?

    跟你聊的就是 RoR 和 Java 系列的开发效率高的问题。那段代码,还真扯不出健壮性问题。。。

    你想聊健壮性,可以在达成“RoR 更简洁”这个基础下,我们继续聊。

    IDE 自动引入

    还是要按快捷键的,如果要使用鼠标操作的话,就跟麻烦了。。。重名了,还得选。。。IDE 只不过让自动引入变的不那么麻烦罢了。

    用 rails 基本上就别考虑用 IDE 了。。。

    因为用不着。

    这个 List<Shop> shops = dao.query(Shop.class, Cnd.orderBy().desc("shopName"), new Pager(1, 20)); 需要 IDE 提示,这个 shops = Shop.page(1).per(20).order(shop_name: :DESC) 编辑器就够了。

    RoR 之所以 IDE 不流行,是以为没有 IDE 大家写的也挺 happy。IDE 对 Java 来说才是必需品。

    所以 IDE + JAVA 这一套更适合打工人

    恩,是的,Java 创造了更多的岗位,从这个角度看,确实如此。

  • 111 at 2020年11月03日

    少了一行,一开始没看出来,不好意思。

    star 还是算了吧😂