全栈工程师成长记

编程重新定义人生

主厨精选 9/23日记

Objective

完成:RubyConf China 2016 Day1

Reflective

情绪:

低点:没有

Interpretive

学到:

  1. i18n 是 internationalization(国际化) 的约定缩写
  2. 代码中不能含有中文,代码的国际化就是无需通过修改代码便可以适应不同国家和地区的需求
  3. 使用 yml 文件作为词典配置文件
  4. 互联网产品标配中英文语言是主流
  5. 本地化的益处:改善用户体验、提高付费转化率、提高访客注册转化率、扩大市场占有
  6. 如果不能做好本地化,宁可不要进入一个市场
  7. gettext 可以把自然语言变成参数来传递(提取 msgid )
  8. gettext 负责提取 msgid,fast_gettext 负责翻译(缓存占用仅为 gettext 的 1/500)
  9. 用 onesky 进行翻译协作
  10. 对翻译人员的要求:以目标语言为母语、对互联网产品有所了解、了解产品中的特定翻译点
  11. 自动计算工资系统的目的是帮助 HR 处理 90% 重复工作,使其将精力留在“人”的部分
  12. 人事行政不分家
  13. 把签到记录从线下做到线上,每天凌晨用自动脚本批量抽取数据进行计算
  14. 针对津补贴背后复杂的需求,使其可以添加不同的扣发规则(触发选项)
  15. 一切皆可重算:原始数据 + 规则 = 核算结果
  16. 原始数据不要包括结果计算,模型不要去计算,原始数据模型也不要去动
  17. 以资源的视角进行开发(比如把注册表单当成资源来看,new 一个 registration)
  18. 《Growing Rails Applications in Practice》
  19. 创建更多的业务的所有的action都用默认的7个标准方法,然后做模版
  20. 通过加密某些关键字段(如员工姓名、部门、职位),使其他字段的数据变得无意义
  21. 所有的业务逻辑都在 routes.rb 里面
  22. 真实世界里,审批通过之前不会创建一个新资源
  23. 面向资源编程需要过的一个坎是,create、delete可能不是真正的对数据进行操作
  24. 大多数开发者都没有架构的能力
  25. 微服务的好处:易于理解和维护,每一个子服务都不过分复杂;独立开发和测试,可选不同技术栈,易于扩展
  26. MVC + ServiceObject,抽象业务层
  27. 康威定律:组织形式等同系统设计
  28. TGID (Thread group id)是真正意义上的进程ID,是 get_pid 的结果(多个线程合并成一个线程组)
  29. 解决内存泄漏问题的四个步骤: Survive,保证服务可用。企业级应用需要企业级的稳定,可以慢但不能崩。 Address,定位问题。到底是内存暴涨(某个时间段特别高)还是内存泄漏(平滑的曲线)? Fix,解决问题。继续追踪,本例中发现是Redis问题,升级(或降级)版本号解决…… Lesson,总结经验。出了问题不能猜。
  30. 同一个问题的会有不同解决思路(到最后各自的代码风格差异会变得很大),有时很难说哪个是最好的,但面对现实的业务状况,折中的选择一个也许是最快的途径
  31. Rails API 和 Grape 应该根据不同的应用场景做选择
  32. Basic Auth 等同于裸奔,Basic Auth +HTTPS 等同于在黑夜中裸奔,不要把所有的安全机制都寄托在 HTTPS 上。
  33. 安全原则:1.不要乱用算法;2.不要乱改算法。
  34. 使用 rails stats 查看项目统计信息,包括class、method、代码行数统计等
  35. 在 Atom 中使用 control + command + 上下键 可以将选中的代码进行移动上下移动
  36. 在 Atom 中使用 command + R 可以快速定位并打开文件
  37. 在 Atom 中使用 command + D 可以快速定位当前 controller 里面的某个 action
  38. 使用 mkdir -p xxx/yyy/zzz 可以直接创建多重嵌套的文件夹结构(比如有一个 spec 文件夹,想创建一个spec/support/page_objects/devise/session 这样的路径,使用 mkdir -p 参数就可以一步到位而不需逐层建立)
  39. 产品的迭代是从自行车到摩托车到汽车的过车,而不是从汽车轮到汽车底盘到汽车的过程
  40. 部署之前先把代码中的 binding.pry 去掉或者注释掉,否则……还能怎样,当然是会报错啦

领悟:

RubyConf China 2016 今天在成都举办第八届年会,虽然作为一个新手没能听懂太多大会主题演讲的技术细节,但作为刚加入 Ruby 社区的新成员,能够近距离的接触各路 Ruby 大神还是有点小激动。当然一天8个主题演讲听完,最大的感受是收获颇丰——很多的理念、方法论和技术实现是第一次了解到或者是之前听过但理解得不够多、不够深入,比如“主厨精选”、“约定大于配置”、“面向资源编程”、Turbolinks、gettext等等。

当然来到成都,“吃吃吃”是一个躲不开的话题。

早上在会场附近的西月城谭豆花吃早餐,点了一份面条,服务员问我还要点哪一款豆花,我说不用了,然后她的表情像是在说:"来我们店你不吃豆花?这可是我们的招牌……"。

RubyConf China 给大家准备了主会场二楼的自助餐,结果我硬是把价值120多元的自助餐吃成了10几块的快餐,这也是我平时不喜欢吃自助餐的原因:看上去有很多,但想吃的没几个。

Decisional

形容:过得非常充实的一天

努力:过更充实的一天