RubyConf RubyConf AU 2017 总结

mengqing · 2017年03月07日 · 最后由 elibinary 回复于 2017年03月17日 · 9823 次阅读
本帖已被管理员设置为精华贴

今年代表了公司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去观看所有的讲座

huacnlee 将本帖设为了精华贴。 03月07日 21:27

听不懂。。哎。。。

👏 百度链接真有趣

谢总结~~😝

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

everpointer 回复

hanami 我也在看

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

daqing 回复

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

Gameboy emulator 😃 很有趣

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