RubyConf RubyConf AU 2017 总结

mengqing · 发布于 2017年3月07日 · 最后由 elibinary 回复于 2017年3月17日 · 1989 次阅读
13587
本帖已被设为精华帖!

今年代表了公司Oneflare和几位同事参加了在墨尔本招开的第五届澳大利亚RubyConf。今年公司有幸赞助了RubyConf AU,顺便得到了几张免费的门票。如果我没记错的话,门票全票的话貌似要700多澳刀一张😅

因为记得笔记不是很多,所以一直在等正式的视频。现在视频终于出来了,我在这里给大家大概的概括下大会的内容,和大家分享下。如果有什么提问,大家可以一起讨论。


Reinvesting in Ruby - Tim Riley

  • Ruby已经有21年的历史了,在这21年里,Ruby经历了很多,也面临了很多挑战和竞争
  • 老对手们 (PHP, .NET, JAVA, PYTHON)
  • 新对手们 (Scala, Elixir, Go, Clojure, Nodejs)
  • Rails基本上已经代表了Ruby,有好处,也有坏处。好处是Rails提供了一个简单易懂的标准,坏处是这个标准已经被广泛运用到很难再去有任何的改变了
  • Ruby的未来在哪里,怎么去追上别的语言

Icelab的dry-rb或许可以让Ruby有个更好的未来。dry-rb is a collection of gems that help users to code ruby in a functional way. 它有三大宗旨

  1. Functions as values
  2. Immutability
  3. Avoid side effects

这里我就不一一简绍每一个gem了,大家有兴趣的可以观看youtube的live demo,或者上他们的官方网站去体验下


Ruby, HTTP/2, and You - Hiro Asari

  • 很久很久以前,网页就是一群字母,一句句子,一段文章,就是辣么滴简单
  • 再后来,人们想要看图片了,再后来,人们想要听声音了,HTTP/1.1就这么出生了

HTTP/1.1

  • Connections are kept alive
  • 请求是按照先到先得的顺序来被处理的
  • 每次请求都会传输Session数据
  • 不同的阅览器有不同的concurrent connection的限制数

HTTP/2

  • 二进制header, 更小,节省时间
  • header用HPACK来压缩
  • Multiple Full Duplex Connections (类似于async)
  • 服务器可以根据某些设定的配置来推送资源,例如,如果你请求一个css文件,服务器可以同时推送给你图片,字体,等等的资源

目前Rack还不能完全支持HTTP/2,但是可以通过其他的方式来实现(proxying)

最后Hiro还列出了一些Do和Do not

DO

  • 资源放CDN上
  • 减少DNS的搜索
  • 确认生产环境能否支持HTTP/2
  • 把资源模块化
  • 测试不同的服务器

DO NOT

  • 重定向HTTP请求
  • Shard Domain

Writing a Gameboy emulator in Ruby - Colby Swandale

这个没有太多可以概括的,但是非常有意思,建议大家可以去看下


Functional Programming For The Anxious Developer - Julian Doherty

  • 当人们在码代码的时候,都会表现焦虑
  • 当你焦虑的时候怎么办?点我
  • 当需要考虑的越少时,会出错的概率就越小,出错的概率小了,你也就不会焦虑了

Pure Functions

# do this
def sheepies(num, eaten)
  # no side effects, doesn't use external state 👍
  num - eaten
end

# don't do this
def bad_sheepies(num, eaten)
  do_sudo_command("DELETE FRICKING EVERYTHING") # 💩 
  num - eaten
end

# don't do this
def foo(bars)
  bars << "I just 💩  on your data!"
end

Immutability

  • 当需要改变物体时,创建一个新的物体
  • 确保变量不会改变(那还叫变量么?)
  • 确保不会有其他的代码会改变变量

Statelessness

  • 尝试着不要去想变量
  • 只有表达式,和用来改变它的函数,用来输出到其他的函数里去

algebrick, hamsterdam, hamster都是用来帮助去实现这些理论的


Actors in Ruby! Why let Elixir have all the fun? - Marcos Matos

你碰到过并发么,你需要并发么,当你需要的时候怎么办

  • 不需要,反正Ruby也做不了
  • 换application server (puma, thin)
  • 加EC2
  • 试试看Elixir😓

为了解决并发,很多人会用Process Fork,但是

  1. 浪费资源
  2. 协调会比较困难

Actor有什么不同

  • OO
  • 每一个object都是在自己的领域里运行,不会牵扯到别的objects
  • 所有的method call都是异步的,而且没有返回值
  • Supervisor, 确保至少有一个Worker能工作

Celluloid


Persistence pays off: a new look at rom-rb - Piotr Solnica

  • 应用数据和持久数据应该分开
  • 应用数据是你的应用里最重要的一员
  • 定义应用数据
  • 从数据库里提取应用数据
  • 储存应用数据,根据不同的数据库来转变数据的结构
  • 总结:数据库里的数据不等于应用数据
  • 总结2:ActiveRecord不推广以上的建议
  • 总结3:用rom-rb

Defragging Ruby - Aaron Patterson

tenderlove的演讲,每次都是一阵狂笑。。我就不概括了,大家请看video


Functional in the front: rails in back - Louis Simoneau && Rahul Trikha

  • 介绍了什么是Elm
  • Elm的好处
  • demostration

PS:我只挑选了个别我认为比较感兴趣的主题出来,大家可以去Youtube的list去观看所有的讲座

共收到 12 条回复
2 huacnlee 将本帖设为了精华贴 3月07日 21:27
96

听不懂。。哎。。。

19766

👏 百度链接真有趣

1437
thanks
25844

谢总结~~😝

4390

赞,在玩hanami,正好用了dry-rb 和 rom-rb

101
4390everpointer 回复

hanami 我也在看

15099

赞👍

729

第一个 演讲里面提到的 《why atom chose ruby?》这个文章怎么Google不到?

60
101daqing 回复

hanami 的结构, 跟 phoenix 1.3 之前的结构比较类似

28004

Gameboy emulator 😃 很有趣

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册