RubyConf RubyConf China 2017 讲师和主题介绍

hooopo for Ruby China · 2017年06月14日 · 最后由 wpzero 回复于 2017年07月28日 · 13113 次阅读

在接下来的时间里,会逐步公开确定的主题,同时我们也会定期和讲师同步分享的准备情况,随着准备的越来越充分,已经公布的内容也可能会有更新。

Leveraging the power of NGINX with Ruby

Ruby is expressive and a joy to model domains in. NGINX is a battle-tested web server that gives you access to features like reverse proxy and even image transformation on the fly.

How can we leverage Ruby's beauty with the power of NGINX? With ngx_mruby. In this talk we'll explore programming with Ruby to configure NGINX.

讲师:tylerdiaz - Strikingly

简介:Strikingly 资深后端工程师,架构师。12 岁开始编程,16 岁时做了一个网络社区并以 5 位数(美元)的价格被收购,17 岁时成为 Y Combinator 史上最年轻的初创企业联合创始人,并曾在多个初创企业技术部门担任要职。阅历丰富,曾经旅居 20 多个国家和地区,技术领域之外,他还是铁人三项运动员和专业油画师。

A brief introduction to Machine Learning - 如何在 Rails 项目中使用机器学习

机器学习、深度学习、推荐系统和人工智能是近年来的热门话题和技术,本演讲将入门介绍什么是机器学习、如何在 Rails 中搭建机器学习系统,该如何整合 Python 成熟的 scikit-learn 和 Keras 套件,以及分享学习数据科学和机器学习领域的一些个人经验,希望能够抛砖引玉吸引更多 Rubyist 开始接触这个不明觉厉的领域。

讲师:张文钿 ihower - 北京全栈思维教育科技

简介:《Ruby on Rails 实战圣经》作者,现为 全栈营 首席研究员,曾担任 RubyConf China 2010 和 2013 讲者。

金数据是如何鉴黄的

金数据作为平台工具,在帮助用户提升工作效率上发挥了巨大的作用。然而,「不法分子」也利用这个平台的便捷性创作了很多非法内容,黄色表单就是其中很有特色的一种。本次演讲将介绍我们是如何利用机器学习开发「智能鉴黄」与「不法分子」斗智斗勇的。

讲师:姜鹏 @warmwind - 金数据

简介:金数据研发负责人,资深 Ruby On Rails 程序猿。研究机器学习不久,正在探索其在 RoR 工程领域的优秀实践。

ActiveRecord 源码分析及应用扩展

ActiveRecord 框架剖析

  • Association (has-many/has-one/belongs-to/through/Polymorphic association) Reflection 实现机制
  • STI, Polymorphic Association
  • Scope (default scope and chainable scope)
  • Eager loading (avoid n+1 issue)

ActiveRecord 中 Association 扩展应用场景

  • brand-new-copy
  • multiple-versions

讲师:Leon - leader engineer@freewheel

简介:Ten years work experience, including programming experience in C++, C#, Ruby, Python and Golang.

mobx-ruby 将前端联动编程带入 Ruby

此主题主要是将 vue, react 联动编程思想引入 ruby 后端或前端开发 ( 基于 opal ). 然后在此基础上,实现的一个自动联动的 ruby gem: mobx-ruby. 讲解以下内容:

  • mobx-ruby 的来源:受前端 vue 和 react 的核心思想启发
  • 实现 mobx-ruby 的技术讲解
  • 应用场景 ( 取代 callback, 与 actioncable 结合,实时应用开发 )
  • mobx-ruby 与 opal 的结合

讲师:李亚飞 @lyfi2003 - 八十二十

简介:深圳百分之八十网络技术公司联合创始人,深圳 Ruby 活动组织者,Ruby on Rails 资深开发者,负责过多起创业产品的开发,擅长极速开发新产品。经过长期的创业经历,对产品设计,前端开发均有深入研究。

为 Ruby 设计一款 AOT(Ahead-of-time)编译器

我们为 Ruby 设计了一款 AOT 编译器,名为 Ruby Compiler (rubyc),并完成了其开源的初步实现。通过 AOT 编译,用户可以把一个 Ruby 工程编译成一个单一的可执行文件,不仅方便了部署、分发、升级,还可以保护工程源代码。我们将向听众分享 Ruby Compiler 的使用方法和实现原理,并介绍其应用前景

讲师:潘旻琦 @psvr

简介:Ruby 与 C++ 的重度用户,长期参与 GitLab、Node.js 等开源项目的开发,是 Node.js 的核心成员,曾担任 RailsConf 等海外技术会议讲师。

Ruby 异步编程奥德赛

演讲将关注于异步编程在 Ruby 发展中的五大问题:

  • Ruby Web 编程的性能瓶颈
  • Ruby 主流 Evented 模型横向比较
  • "async/await" 在 Ruby 中的无缝实现
  • 通过元编程构建 Ruby 异步生态
  • 目前的状态和未来的发展方向

讲师:丁盛豪 @dsh0416

简介:一个愤青,一个 Ruby 语言感觉要上天,写了某个框架,成为 Github 星星大户,然后一股莫名的优越感涌上心头,开始觉得别人都是垃圾。

Ethereum on Ruby

  • What's blockchain
  • What's Ethereum
  • Ethereum & Ruby

讲师:谢晗剑 - @jan - 秘猿科技

简介:秘猿科技首席执行官兼联合创始人,长期从事区块链技术研究与开发,以太坊网络核心开发成员,自主知识产权区块链通用平台 CITA 总架构师,区块链技术社区 Ethfans 联合创始人。DEVCON2、DEVCON3 大会演讲嘉宾。

从头开始,打造 Ruby 项目的容器化集成工具

我时常被人问起,一个公司要向容器化迁移真正需要的是什么。如果你们缺人,那就招;如果缺服务器,那就买;如果是缺工具,那么聚光灯请往这儿打,我要开始分 (zhuang) 享 (bi) 了,我将为你讲述如何从头开始,打造一套偷懒增效的容器化项目持续集成工具

  • 因地制宜,设计好你的镜像打包流程
  • 一劳永逸,把打包流程模块化
  • 偷懒光荣,跑得要更快,配置要更简单
  • 授人以鱼,管理界面化,降低同伙学习成本

讲师:周艺 @IChou - 速递易

简介:速递易基础平台 Ruby 工程师一枚,擅长搞事情,喜欢重构既有代码,长期专注于 Ruby 项目在高并发场景下的优化。参与设计了速递易容器化流程方案,并主导了速递易全面容器化的实现。

Rails 的前端开发之道

介绍彩程设计在这几年使用 Ruby On Rails 做前端开发的一些心得,以及介绍彩程设计为 Ruby On Rails 打造的前端模块化解决方案 tao_on_rails:https://github.com/mycolorway/tao_on_rails

讲师:刘思远 @farthinker - 彩程设计

简介:彩程设计联合创始人。Rails 前端框架 Tao(https://tao.zhiren.com)的作者。一直致力于寻找既能达到彩程产品品质,又能适应彩程产品节奏,并且可持续发展的前端架构和工程方法,希望能在用户体验、工程化和成本的冲突中找到平衡。

爱因斯坦搞炼丹 - Elixir: A Haskeller's Perspective

Haskell 程序员对于 Elixir 函数式编程角度的入门介绍。

讲师:祖与占,这个家伙很懒 什么也没留下。

如何用 Erlang 快速开发 Web 快速开发框架

凭借 Erlang 无与伦比的元编程能力,在编译期进行更多的检查,更早的暴露潜在的问题,提升开发效率。哪怕是司空见惯的 Web 框架,用 Erlang 也可以很容易的做的比主流更好。

讲师:@bhuztez

简介:Erlang 脑残粉,特别脑残。除了吹牛什么都不会。更多时候就是一个单纯的 asshole。

dry-rb 函数式 Web 编程实践

讲师:刘常洋 @rcvkiu - Autodesk

简介:编程语言爱好者,喜欢探索不同的软件开发实践。目前在 Autodesk 从事全栈 Web 开发。

  • Rails 已经过时了?不会 Elixir & Phoneix?
  • 没关系,使用纯面向对象编程语言 Ruby 也可以进行函数式 Web 开发!
  • Strict typing, pattern matching, monads... 统统都到碗里来!
  • 介绍如何使用 dry-rb 和 rom-rb 构建 Web 应用

关于 Ruby Web 实时通信方案的深度剖析

以 Ruby 开发的 Web 实时应用其可选方案有很多,但是目前并没有全面讲解这些方案的指南。此次演讲将会与大家分享 Ruby 在实时通信方面有哪些解决方案,并且剖析各种方案并比较其优劣。最后作为案例向大家介绍薄荷科技在 Web 实时应用中的实践。

讲师:侯俊杰 @falm - 薄荷网

简介:全栈工程师,老夫 20 岁血气方刚之时,在茫茫人海中多看了 Ruby 一眼后不能自拔,自此投身于 Ruby 开发,目前在薄荷科技主攻通讯服务和前端开发。

我们如何改造 Gitlab?

从 2014 年到现在,我们团队支撑了一个华为公司内部极其庞大的软件研发平台。当然,直接拿 Gitlab 来部署是不可能的。要正常运行,我们需要对 Gitlab 做各种各样的深度改造。在提升性能、增强稳定性、功能集成、工作流创新等方面,我们进行了诸多探索。在此次演讲中,我们会与大家交流其中的甘苦与心得,并期待在交流中,收获更多的启发。

讲师:庄表伟 @zhuangbiaowei - 华为

简介:华为公司内源社区平台架构师、开源社理事

我居然看到了 B 大大!我好激动!

支持!期待!

👍 @lgn21st 你不讲一个吗? 😈

不知道能不能把相关主题安排在一起,比如一上午都是前端,这样就可以翘一上午了 😂

tony612 回复

@hooopo 请开启防翘课模式

AOT(Ahead-of-time)编译器 不错

lgn21st 回复

@tony612 谢谢提醒 😂

如果只看开头和结尾的话,会怀疑自己是不是看错标题或者点错链接 😂

jasl 回复

目前还没弄完。还有一个月时间,我尽快吧。不过已经感觉有点不太好了。你可以去找 https://www.zhihu.com/people/fleurer/ 问问,昨天被他偷拍了。我感觉上面某个演讲的作者,可能要将他的框架称为量产炮灰型框架了 ...

bhuztez 回复

我猜猜:Erlang 版 linq to sql? 路由能编成一个 DFA?

bhuztez 回复

李亚洲老师啊。。。 @fleuria 也是论坛元老的,不过早已不活跃,祖与占跟他也认识的

没关系,我们吃瓜群众跪看 dalaos 论战

luikore 回复

路由编 DFA Midori 有做到。。。

jasl 回复

代码地址?

jasl 回复

吓尿。这么几行代码?也没看有调用什么库。

bhuztez 回复

用了的... 这里我做了点微小的贡献

路由匹配是通过这个库 https://github.com/sinatra/mustermann 就是 Sinatra 2.0 的路由库,这个库很强大的

那个函数的代码的作用是遍历 mountAPI(就当控制器吧),暴力写到当前 scope 的路由里,达到展开的效果,而 Mustermann 内部是类似 AST 的结构

jasl 回复

这个库的代码也好简单。DFA 到底在哪里?

bhuztez 回复

它内部是 AST,https://github.com/sinatra/mustermann/tree/master/mustermann/lib/mustermann/ast 老实说这库的源码还没有好好读过,但基本上是设计有量版的 Journey AST 的定义

luikore 回复

差不多吧。全在编译期完成,100% 无运行期额外开销 ...

jasl 回复

这么看来,可能是你不知道什么是 DFA。算了,不扯这个了。

luikore 回复

linq to sql 不就是 ecto 嘛。。

bhuztez 回复

嗯我说错了,并不能算 DFA,Mustermann 内部没仔细看过,Journey 有 OR 语义,不好搞 DFA

bhuztez 回复

我也做过一个把全路由编译成一个 oniguruma 正则,不过这么巨大的正则处理 capture 比较 tricky, 映射到参数的部分只能靠 C API 完成。当然 oniguruma 不是 DFA, 是 DFA 的话就没那么强大的 feature 啦。

现在在做一个 lexer, 用它实现路由更优雅点,类似 awk 的写法,最终能根据情况选择并成一个 DFA 或者类 pikevm... 说回来 mustermann 应该就够快了,路由那点损耗其实很少... 都是白费劲

tony612 回复

ecto 功能弱爆了,用起来还这么麻烦

luikore 回复

只需要能支持 capture 的 DFA 就可以了。合并成一个 DFA 的好处在于编译期就能发现是不是有些 URL 会被多个 pattern 匹配。

bhuztez 回复

不相信你用 Erlang 写的能更好用。。到时围观你一下你会做成什么样

tony612 回复

要是比 ecto 好,你得换 Erlang !!!

bhuztez 回复

哈哈哈。写 Elixir 基本上就是在写 Erlang 嘛 😂

bhuztez 回复

快开源啊!

光看主题已经很高能了!

luikore 回复

这个是很容易做的。问题在于并不能检查输出的 column 有没有被用到

bhuztez 回复

感觉很 nb 啊,期待哈

luikore 回复

感觉不太好,现在看起来好像我就是来砸场的 ...

我提交一个议题,用 ruby 来做卡牌游戏的服务端

@psvr 这个编译是不是也用一个类似 memory-fs 的东西来 mock 路径?

@luikore memory-fs 是啥呀?求链接。

我的这个是通过 libsquash 劫持文件系统类系统调用,并转发至自己进程内存中的一个 SquashFS 实现的。

对对对,就是 libsquash

memory-fs 是 https://github.com/webpack/memory-fs , 不过明显没有 libsquash 牛逼

jasl RubyConf China 2017 售票开始!(已更新日程安排) 提及了此话题。 07月12日 01:00
zoujyuzim 回复

慢慢来吧。这个对轮子哥太不友好了。尽管我并不是针对他。轮子哥整天炫耀 C++,正则表达式,GUI 框架以及吃软饭。把轮子哥黑成不会 C++ 了,这事就已经吓的他连写好几篇谁都看不懂的,考不上三本系列了。这次把轮子哥黑成不会正则表达式,他又要有好久没心思玩了。下回要是再把他黑成不会 GUI 框架,他估计要自暴自弃了,整天只炫耀自己吃软饭了,这样不好。

jmukirin 回复

2013 年的时候,我们当时就用了 Ruby 做斗地主棋牌后端,那时 rails 还是 4.2.x, 用 WebSocketRails 做通讯。 再后来,我们又用 pomelo 重写了后端。

luikore 回复

举个微小的例子

-pattern(
   { integer,
     "[0-9]+",
     {erlang, binary_to_integer},
     {erlang, integer_to_binary}
   }).

-dispatch({root, "posts/", {dispatch, post}}).
-dispatch({post, "", {endpoint, index}}).
-dispatch({post, "{id:integer}", {endpoint, post}}).

test() ->
    [<<"/">>,<<"posts/">>] =
        url_reverse(index, #{}),
    [<<"/">>,<<"posts/">>,<<"10">>] =
        url_reverse(post, #{id => 10}),
    {index,#{},<<>>} =
        url_dispatch(<<"/posts/">>),
    {index,#{},<<"a">>} =
        url_dispatch(<<"/posts/?a">>),
    {post,#{id := 10},<<>>} =
        url_dispatch(<<"/posts/10">>),
    {post,#{id := 10},<<>>} =
        url_dispatch(<<"/posts/1%30">>),
    error =
        url_dispatch(<<"/posts/10/">>),
    ok.

自动生成的函数大概长这样

url_reverse(post, #{id := Vid}) ->
    [<<"/">>, <<"posts/">>,
     url:encode(erlang:integer_to_binary(Vid))];
url_reverse(index, #{}) -> [<<"/">>, <<"posts/">>].

url_dispatch(Bin) ->
    case url_dfa(Bin) of
      error -> error;
      {18, #{}, Rest} -> {index, #{}, Rest};
      {23, #{1 := T1, 2 := T2}, Rest} ->
          {post,
           #{id => erlang:binary_to_integer(url:decode(binary:part(Bin,T1,T2-T1)))},
           Rest}
    end.

不错哇,虽然这 API 和 angular-ui-router 差不多...

所有主题已经更新完。

hooopo RubyConf China 2017 售票开始!(已更新日程安排) 提及了此话题。 07月16日 20:15
需要 登录 后方可回复, 如果你还没有账号请 注册新账号