Hegwin.Me

无边落木萧萧下,不尽长江滚滚来。

Ruby Conf China 2023 参会笔记 Day 2

Takeaways from Ruby Conf China 2023 Day 2

今年,AI真是一个大热的议题,从 EverythingGPT 到 LLM,大家都在讨论着这一场新的技术变革。为期两天的 Ruby Conf China 2023 上,也有三个议题关注到 AI 和 LLM,令人感到兴奋。

这篇文章记录一下我在 Ruby Conf 第二天学习到的内容。这天有2位讲师在讲如何让 Ruby 和 AI一起工作,有深奥的理论(比如 Attention,但我没懂),也有实际运用的分享。

从移植 Active Record 中学到的几件事

by 王左

queryx - Golang和TypeScript的schema优先和类型安全的ORM(也就是把ActiveRecord移植到Go和TS上的一个实践)

  • Schema 优先,由 schema.hcl 的文件实现
    • queryx db:create
    • queryx db:migrate
  • 类型安全
    • 数据类型:支持不同的数据库
    • BigInt 在 JS 中不安全
  • 从 AR 中借鉴的内容
    • 支持多种环境的数据库.yml
    • 查询方法
    • 关联 belongs_tohas_many
    • 约定大于配置
    • 数据库适配器
  • 消失的框架
    • 根据 DB 配置和所需数据类型生成代码
    • 运行时不依赖于查询queryx

React 18 & Rails 7.1,全栈三个月开发绩效系统

by Eric Guo (天华)

背景:

  • 为一家拥有 3000 名员工的公司开发绩效评估系统
  • 一名程序员
  • 90 个工作日

为什么选择 Rails + React?

  • Rails:人类最快的web app framework
  • 复杂的用户界面交给 React

如何确保质量:

  • 关注数据模型
  • 代码清晰
  • 更多思考;更少代码(更少错误)

如何快速开发:

  • 只开发客户基本要求的功能(或项目经理提到过 5 次以上的功能)
  • 不分割 FE/BE
  • 快速交付和反馈
  • 更多利用人工智能

Rust 重铸 Ruby

Ruby

  • 简单(编码)
  • 随心所欲的创造

Rust

  • 简单(系统)
  • 在规则下的创造
  • 编译即正确
  • 安全性

用 Rust 重塑 Ruby 的例子

  • YJIT
    • Shopify 用 Rust 重写了 YJIT
    • 关注 LBBV
    • 减少踩坑
  • Yarp
    • BG:C语言的Ruby解析器,但允许使用Rust。
    • 由 CRuby 团队维护
  • Artichoke
    • 重写 RubyVM
    • 验证可行性(未在生产环境使用)
    • Ruby 代码 → Artichoke → WebAssembly
  • 用 Rust 编写 Ruby gem

Toggle Everything in Ruby

by 周小虫 (金数据)

# There is no such code in Jinshuju
if customer.id = 1234567
  # Do something specific for this customer
else
  # Usual process
end

SaaS 中的定制服务

  • 硬编码 - 成为技术债务
  • 功能切换 - 作为公司资产
  • 在功能切换中,任何对象都可以是功能切换的 User,但不一定是业务中的 User
  • 黑白名单

使用GrowthBook

  • 切换上下文(Context)
  • 规则 (Rules)
  • A/B 测试

其他实现方式

  • 将所有Toggles存储在Hash中
  • 一致Hash以支持按百分比滚动发布
  • 在 Redis 中定义Toggle Function(是用Lua定义, since Redis 7)

用 Solargraph 和 DAP 提升 Rails 开发信心

by 陈泽宇 (青岛伊利诺斯电气)

为什么类型协助能增强开发信心?

  • 智能代码自动补全
  • 文档提示
  • 错误诊断

工具箱:

Data visualization based on LLM

by 靳晓明 (Ekohe)

案例研究: 利用 LangChain 和 OpenAI 实现数据分析和可视化

LangChain

  • 连接 LLM 和外部数据的框架
  • 它从各种资源中读取数据,进行转换和存储
  • 代理:提示词模板,并选择要调用的函数,如 Pandas
  • 回调:钩子和流程处理
  • 优点
    • 实施简单快捷(提示词 + LLM API)
    • 应用范围广
  • 缺点
    • 同一提示结果不稳定
    • 微调提示的变化超出预期
    • 代理的迭代各不相同,耗费时间

技术进步

Glue AI applications with Ruby

by Ding Shenghao

基本概念:

  • 事实: 事实应该是给出的,而不是推断的
  • 规则: 可用Prolog表达
  • 事实 + 规则 → 推断

LangChain

为什么选择 Ruby?

  • Ruby 是另一种面向对象的 Lisp
  • 对 DSL 友好,对元编程友好
  • 约定重于配置

以上就是我在本次 Ruby Conf China 的学习笔记了;最后一张结束时的合照。

Ruby-Conf-China-2023-Day-2.jpg

< Back