• 我的透明创业实验 at 2019年05月20日

    程序员的正确姿势

  • 如何看待 996.ICU at 2019年04月28日

    996.icu是社会对劳动密集型、可替代性强、年龄敏感、壁垒不高等等强应用型职业面临的严峻挑战的一种善意提醒。

    这种职业状态是很大一部分程序员职业发展可能的最终状态。

    世上大部分抗议都是效果不大的,只有尽可能想办法避开。

    以上说给我自己听的。

  • 两千多个挺正常的,你nginx和puma是跑在同一台机器上的,nginx每次转发请求实际上都会创建新的TCP连接,连接没有被复用后面就timewait了。如果并发量高的话确实会出问题,upstream就会连不上,sourceIP:Port -> DesIp:Port耗尽了。

    一般有几个解决方案:

    • 把可用随机端口调大 net.ipv4.ip_local_port_range
    • 后端多搞几个upstream
    • Nginx在upstream中用长连接
    • 开tcp_tw_reuse 和时间戳 并且限制timewait的总数量,当触发上限时就会剔除旧的
    • nginx和puma在同一台机器上时可以用unix socket 避开tcp协议栈
  • 关于散列表的一些思考 at 2019年03月13日

    棒!

    可以继续解释一下哈希如何存放不同类型的key和value

  • 18年三月份刚来上海面的第一家就是薄荷,宝贵的经历啊。

    由于当时经验不足,也没有”证据“证明自己是谁(底气很虚),然后被问了两个简单的工程应用问题,仓皇之下答的一塌糊涂。回去了解了一下就是简单的乐观锁应用和feed流的知识,听到vincent叹息了声”时间过的好快“(面试时),当时就意识到没戏了。面试前准备了许久了数据结构/算法/redis底层/tcp/LB等知识完全没被问到,当时也不太懂要引导面试官往自己熟悉的方向走,或者争取机会在其他方面证明自己。

    vincent当时出于礼貌(自己感觉当时该立即埋头出门的),带我逛了一下薄荷,个人感觉薄荷还是不错的!

    在经历了一系列类似的场景后,让我蓄积了大量动力去尝试写技术文章。认识到构建个人对外的沟通界面真是太重要了。

    还在路上的菜鸟在此表示感谢!

  • 从上帝视角看微服务 at 2019年03月05日

    描述系统混乱程度的经典概念。维基百科

  • 什么是 RPC? at 2019年01月31日

    角色扮演游戏? 作为游戏盲又了解了一个概念···

  • 有个简单的方案:

    功能有这几个重点:

    • 竞拍,更新状态(价格/截止时间等)
    • 到点后自动结束竞拍

    有两个对象:(名字随意取的)

    • 被竞拍物(Goods)
    • 竞拍物状态(GoodsStatus)

    每次有人出更高的价格,其实就是在更新GoodsStatus,可以为每次出价都持久化一条数据,核心字段是价格截止时间竞拍人,并将Goods对应到最新的GoodsStatus。

    每次竞拍都往sidekiq中插入一条定时任务,任务执行时检查当前GoodsStatus是否是最新的,不是的话直接退出。如果是最新的话就结束竞拍。

    用sidekiq的时候需要注意的是,sidekiq取定时任务的时间点并不精准,可能会有数秒的误差(可以配置),sidekiq里面的任务本质上是一个个被取出处理的,要保证sidekiq的处理能力足够强,避免当竞拍任务过多时,任务延迟过多。

    竞拍应该还有个大盘,大盘在”轮询“的时候,也可以检查时间点,做结束竞拍的动作。

  • 文章不错,聊一点个人拙见。

    更喜欢将本文标题理解为: 开发者如何变得更加优秀、能创造更大的价值?

    之所以这样理解,是因为很多人像我一样现在只是一个普通的开发者,但我相信很多年后,随着不断地积累,我们这帮人会慢慢从开发者的角色逐渐分化,变成一个复杂的综合体,也只有这样,才能够真正地实现更大的价值创造,分化的方向大概是:

    • 拥有产品经理的能力
    • 拥有项目经理的能力
    • 拥有leader的能力(判断力、打造团队等)
    • 拥有开发者的能力
    • 拥有搞定人的能力
    • ···

    多年后,从开发大军中脱颖而出的人,都会拥有上面这些方向的素质,成为一个复合体。放眼望去,在大的团队或项目中产生核心价值的人,都是这种复合体。 大部分节点上的螺丝钉都只是螺丝钉而已,当然这些螺丝钉的价值总和还是会非常大的,只不过均分到人头上就不见得了。

    不过,除了上面的分化,部分在技术圈备受崇敬的人还有另一种发展方向,就是成为能搞定高难度技术点的精英,他们会在相对单纯的技术环境下创造价值。 不过大部分这种人才其实也具备产品经理和项目经理的能力。

    能吃透行业,在某个方向上有深耕的复合体,具有很大的单点价值。

    Matz是开发者吗? 不是,他是一名拥有开发能力的和项目管理能力的产品经理。他的核心价值在于设计了Ruby这款解放程序员的产品,并在带领开发者迭代ruby这个项目。

    马化腾是开发者吗? 不是,他早期是拥有开发能力的产品经理,现在应该算是懂技术、产品、项目管理、市场···的leader。

    ···

    一个人只有两只手,一天能写的代码量太有限,高价值的代码更有限。何况岁数变大,体能还在下降····

  • 说实话,这个代码我不能快速看懂。“冗长”点的代码更容易理解吧。 文章里代码写的糙,将就点看😂

努力走向优雅、简洁、有逻辑地表达。