当前位置: 首页 > news >正文

当 Tubi 遇到 Ruby

有人说 Tubi 作为 RubyConf China 金牌赞助商,明明用极具吸引力的 Elixir 后端工程师岗位和高品质的 Elixir Meetup,“拐走了”一批又一批 Rubyist 投身于 Elixir 开发中,却依然让人想在 Tubi 展台前多停留一会儿。

为什么工程师、校友甚至 Ruby 社区颇具影响力的人物都愿意来为 Tubi 站台?为什么选择小众技术语言 Elixir 构建后端服务,并长期支持 Elixir 中国社区的建设?这是一个什么样的职场环境,让 RubyConf 现场观众惊叹每年有两次 Outing,还有着“有灵魂”的工作文化?

本文将从两个方面与你分享,Tubi 与 Ruby 的故事:

  • Rubyist 眼中的 Tubi
  • 加入 Tubi 的 Rubyist 后来怎么样了
  • Tubi 与 Ruby 的故事。

Rubyist 眼中的 Tubi

初印象:是一个专业稳定的科技公司

“我是在 RubyConf 2023 第一次知道 Tubi 这家公司的,Tubi 给我的整体印象是一个专业稳定的科技公司。最让我印象深刻的是 Tubi 展台上的小电视,相比其他参展商更吸引眼球,也和流媒体公司的定位十分契合。Tubi 还介绍了 Elixir 在产品上的应用,细节处透露着技术范儿和开源精神。”

—— Rubyist 张一

技术选型很有魄力

“疫情期间,没有几家公司会为了员工健康而支持完全远程办公的,Tubi 这样做了,我也是那个时候知道 Tubi 的。

后来进一步了解到 Tubi 的技术栈基于 Elixir 和 Scala,在 Java、Python、Go 流行的大环境下选择这么小众甚至名字都没有听说过的语言是真的很有魄力,之后我也会经常在 Ruby、Elixir 技术活动上看到 Tubi 的身影,不遗余力地推广函数式编程语言。

这次在 RubyConf 上还收到了 Tubi 版红宝书 - Tubi 的技术博客合集,很技术范儿,这也真正体现了 Tubi 工程师团队‘对运用先进技术改变人们生活这一美好愿望充满无限激情’吧。希望 Tubi 赞助的 Elixir Meetup 以后能来上海,自己可以作为志愿者出一份力。”

—— Rubyist 小白

Tubi 让我看到了自由

“在与 Tubi 团队成员交流中,我深深感受到了 Tubi 独特的工程师文化,那就是自由!自由!还是自由!

‘自由’在 Tubi 不仅仅是一个词,更是一种工作的哲学。这里的工程师不会仅仅为了实现某个功能而妥协,他们对整个产品都负有责任。在 Tubi,开发者不仅是编写代码的人,他们也是产品的参与者和建议者,每个人都有权利为产品提出更好的建议。这真的让人太激动了。

读了 Tubi 在 RubyConf China 上分享的 Tubi 团队文化和技术博客,我还惊喜地发现:

第一,Tubi 特别强调一个核心价值观 —— 信任。在许多公司担心员工在家工作可能会‘偷懒’的时代下,Tubi 对其团队成员有着这样的信任,支持远程和在家工作,也相信他们会尽职尽责。这种‘信任’文化在当前竞争激烈、内卷严重的环境中显得尤为宝贵

第二,Tubi 不是通过倒排期或强制性的目标来推动团队,而是通过建立合理的工作流程,来确保产品的正常交付和优质的用户体验。这种工作方式背后的核心理念是一种契约精神,团队成员之间互相信任,共同为一个目标努力,这样不仅高效,还非常人性化。”

—— Rubyist 韩先生

加入 Tubi 的 Rubyist 后来怎么样了

据说,Tubi Elixir 工程师团队中有一半曾是 Rubyist,他们转变为 Elixir 炼金术士的过程是什么样的?在 Tubi 做 Elixir 工程师,是一种什么体验?一起听听他们的心声吧。

Rubyist 迁移到 Elixir 可能更有优势

“在最初接触 Elixir 时,我注意到 Elixir 有很多地方是受到了 Ruby 的启发,因为 Elixir 之父 José Valim 之前是 Ruby on Rails 的作者之一,这在一定程度上降低了我学习 Elixir 需要做的心理建设和学习成本。

Ruby 和 Rails 最让我欣赏的部分就是对开发者体验和开发效率的关注,而 Elixir 在这两个方面的表现也是相当出色的。Elixir 最让我欣喜的还是项目在实际应用中所表现出的卓越性能和稳定性。在我看来,这可能使最终让我的团队从 Ruby 切换至 Elixir 为主开发语言的最关键的因素。

Ruby on Rails 在‘用很少的代码实现很多的功能’这件事上树立了行业标杆,一直被业界认为是快速启动一个 Web 项目的最佳技术选择。Elixir 的 Phoenix 框架在很大程度上受到了 Rails 的启发,近几年也开拓了一些新的领域,例如一出现就广受关注的 Phoenix LiveView,以及随后出现的其它语言框架。相比 Rails,Phoenix 的确让人感到有一点上手难度,但在我看来,这一点难度的增加所带来的效率提升,绝对值得!

对于已经熟练 Ruby on Rails 的开发者来说,适应 Elixir 和 Phoenix 的过程是非常顺畅的,这比起从其他语言迁移到 Elixir 来说可能有更显著的优势。”

—— Tubi Elixir 高级工程师 Horvo

“刚开始使用 Elixir 时,我感觉两种技术语言的语法比较像,写起来都很舒服,只不过 Elixir 是函数式语言,刚开始写需要有一点风格的转换,但是不会有太大的不适应。当我逐步了解到 Elixir / Erlang 背后强大的 OTP 生态,不禁赞叹 Elixir 真的别有洞天啊!”

—— Tubi Elixir 工程师,Tristen

Elixir 和 Tubi 带给我属于工程师的双倍快乐

“我在读书期间,业余时间开始学习 Ruby 和 Elixir;毕业第一份工作就选择了 Tubi,也直接投身到了 Elixir 的开发上,这份确信至今未变。事实证明,很多之前没有接触过 Elixir 的同事们都能快速适应新的开发生态,而且在 Tubi 可以遇到一群和 Elixir 一样优雅的小伙伴啊。”

—— Tubi Elixir 工程师,Tristen

“在 Tubi 写任何语言都会是非常开心的,Elixir 本身又带给我很多属于工程师的快乐,这两者叠加在一起就是双倍的喜悦。对于喜欢一门语言的开发者来说,最幸运的就是刚好有一家很棒的公司正在用这门语言(并且你还有机会在那里工作)。我很庆幸能有在 Tubi 写 Elixir 的机会。

Tubi 有很多需要解决高并发、高复杂度的业务场景,这些比较有挑战性的项目让我在技术上收获了很多宝贵经验。另外,在应对这些复杂、高并发、实时性强的需求时,Elixir 总会给我更多的信心,我因此可以分出更多精力到架构设计和代码质量上。”

—— Tubi Elixir 高级工程师 Horvo

Tubi 与 Ruby 的故事

2019 年中旬,Tubi 正在紧锣密鼓地筹备第一场 Elixir Meetup,为了让更多中国开发者有机会了解 Elixir 这门小众但表现惊艳的技术语言,我们在 Tubi 工程师的帮助下,与 Ruby China 建立了联系。

当时负责 Tubi 中国团队招聘的 Doris 分享道:“Ruby 社群非常开放和包容。虽然我们招聘的是 Elixir 后端工程师,但我还是受邀加入了 Ruby China 的几个群组,有机会去介绍 Tubi 及工作机会,并分享与 Elixir Meetup 相关的活动信息。这次参加 RubyConf China,我见到了许多一直以来帮助 Tubi 的网友,激动万分。”

在本次 RubyConf China 中,Tubi 第一位 Ruby 开发者也亲临现场。虽然他已经离开 Tubi,但仍然全力以赴地为我们提供支持。

人们常说 Rubyist 是一群为爱发电的人,这一点不假。或许正因为 Tubi 同事们和 Rubyist 有着共同的技术热情,才让我们有幸相遇并携手共进。

关注 Tubi,创造更多可能性

Tubi 中国团队热招岗位持续更新中,欢迎点击查看。让我们在 Tubi,一起为了“让人人都能免费享受高品质的视频内容”而高效工作,也有品质的生活!

相关文章:

当 Tubi 遇到 Ruby

有人说 Tubi 作为 RubyConf China 金牌赞助商,明明用极具吸引力的 Elixir 后端工程师岗位和高品质的 Elixir Meetup,“拐走了”一批又一批 Rubyist 投身于 Elixir 开发中,却依然让人想在 Tubi 展台前多停留一会儿。 为什么工程师、校友甚至 …...

【C++从0到王者】第二十四站:多态的底层原理

文章目录 前言一、虚函数表二、一道经典的例题三、深度剖析多态的条件之一:为什么必须是父类的指针或引用四、深度剖析多态的条件之二:为什么是虚函数的重写/覆盖?五、虚函数表的一些总结六、关于Func3的验证七、动态绑定与静态绑定八、总结 …...

Java从入门到精通24==》数据库、SQL基本语句、DDL语句

Java从入门到精通24》数据库、SQL基本语句、DDL语句 2023.8.27 文章目录 <center>Java从入门到精通24》数据库、SQL基本语句、DDL语句一、什么是数据库二、数据库的优缺点1、使用数据库的优点&#xff1a;2、使用数据库的缺点&#xff1a; 三、MySQL基本语句四、DDL语句 …...

学习ts(十)装饰器

定义 装饰器是一种特殊类型的声明&#xff0c;它能够被附加到类声明&#xff0c;方法&#xff0c;访问符&#xff0c;属性或参数上&#xff0c;是一种在不改变原类和使用继承的情况下&#xff0c;动态的扩展对象功能。 装饰器使用expression形式&#xff0c;其中expression必须…...

如何在 Opera 中启用DNS over HTTPS

DNS over HTTPS&#xff08;基于HTTPS的DNS&#xff09;是一种更安全的浏览方式&#xff0c;但大多数 Web 浏览器默认情况下不启用它。了解如何在 Opera 浏览器中启用该功能。 您可能不知道这一点&#xff0c;但您的网络浏览器并不像您希望的那样私密或安全。您会看到&#xff…...

STM32 F103C8T6学习笔记13:IIC通信—AHT10温湿度传感器模块

今日学习一下这款AHT10 温湿度传感器模块&#xff0c;给我的OLED手环添加上测温湿度的功能。 文章提供源码、测试工程下载、测试效果图。 目录 AHT10温湿度传感器&#xff1a; 特性&#xff1a; 连接方式&#xff1a; 适用场所范围&#xff1a; 程序设计&#xff1a; 设…...

QT基础使用:组件和代码关联(信号和槽)

自动关联 ui文件在设计环境下&#xff0c;能看到的组件可以使用鼠标右键选择“转到槽”就是开始组件和动作关联。 在自动关联这个过程中软件自动动作的部分 需要对前面头文件进行保存&#xff0c;才能使得声明的函数能够使用。为了方便&#xff0c;自动关联时先对所有文件…...

TCP最大连接数问题总结

最大TCP连接数量限制有&#xff1a;可用端口号数量、文件描述符数量、线程、内存、CPU等。每个TCP连接都需要以下资源&#xff0c;如图所示&#xff1a; 1、可用端口号限制 Q&#xff1a;一台主机可以有多少端口号&#xff1f;端口号与TCP连接&#xff1f;是否能修改&#x…...

【Docker】云原生利用Docker确保环境安全、部署的安全性、安全问题的主要表现和新兴技术产生

前言 Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 云原生利用Docker确保环境安全、部署的…...

explain各个字段代表的意思

id&#xff1a;联表查询是每个表的读取顺序&#xff0c;数字越大越先被读取。相同就需要通过table字段判断select_type&#xff1a;查询类型或者是其他操作类型&#xff08;PRIMARY、UNION、UNION RESULT等&#xff09;table&#xff1a;正在访问哪个表partitions&#xff1a;匹…...

【已解决】Windows10 pip安装报错:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x98

环境&#xff1a;win10, Python3.9 在Pycharm安装YoloV5的依赖包时出现报错&#xff1a;UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x98 出现 ‘gbk’ codec can’t decode… 的报错一般是因为读取文件出现编码问题导致没法读取文件&#xff0c;因此可以在报错…...

goland 中的调试器 -- Evaluate

今天一个好朋友 找到我&#xff0c;问我关于goland中Evaluate 小计算器的使用方式&#xff0c;说实话&#xff0c;我在此之前也没用过这个东西&#xff0c;然后我就找一些相关文档&#xff0c;但是这类文档少的可怜&#xff0c;所以我就稍微研究一下&#xff0c;找找材料&#…...

你知道公司内部维基到底有哪些功能吗

维基指的是一种协作工作的平台&#xff0c;也就是开源的编辑系统。员工可以在企业维基里面进行存储、共享和协作之类的操作&#xff0c;将企业内部员工的知识共享聚集在一起。今天looklook将会详细讲讲公司内部维基具体到底有哪些功能&#xff0c;供大家参考。 公司内部维基的功…...

netdata监控服务器主机(包括Docker容器)

效果 Docker部署 创建挂载目录 mkdir -p /data/netdata/{netdatacache,netdatalib}docker运行 docker run -d --namenetdata \-p 19999:19999 \-v /data/netdata/netdatalib:/var/lib/netdata \-v /data/netdata/netdatacache:/var/cache/netdata \-v /etc/passwd:/host/etc…...

Mybatis学习|第一个Mybatis程序

1.创建一个数据库以及一个用户表&#xff0c;并插入三条数据用来测试 2.创建一个空的maven项目 在pom.xml中导入本次测试用到的三个依赖&#xff0c;mysql驱动、mybatis依赖、以及单元测试junit依赖 将这个 空的maven项目当成一个父项目&#xff0c;再创建一个空的maven子项目用…...

计算机网络MTU和MSS的区别

在计算机网络中&#xff0c;MTU代表最大传输单元&#xff08;Maximum Transmission Unit&#xff09;&#xff0c;而MSS代表最大分节大小&#xff08;Maximum Segment Size&#xff09;。 1.MTU&#xff08;最大传输单元&#xff09;&#xff1a; MTU是指在网络通信中&#x…...

redis学习笔记 - 进阶部分

文章目录 redis单线程如何处理并发的客户端&#xff0c;以及为何单线程快&#xff1f;redis的发展历程&#xff1a;redis单线程和多线程的体现&#xff1a;redis3.x单线程时代但性能很快的主要原因&#xff1a;redis4.x开始引入多线程&#xff1a;redis6/redis7引入多线程IO&am…...

SE5 - BM1684 人工智能边缘开发板入门指南 -- 模型转换、交叉编译、yolov5、目标追踪

介绍 我们属于SoC模式&#xff0c;即我们在x86主机上基于tpu-nntc和libsophon完成模型的编译量化与程序的交叉编译&#xff0c;部署时将编译好的程序拷贝至SoC平台&#xff08;1684开发板/SE微服务器/SM模组&#xff09;中执行。 注&#xff1a;以下都是在Ubuntu20.04系统上操…...

基于Java+SpringBoot+vue前后端分离英语知识应用网站设计实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…...

vue使用vue-router报错

报错1. app.js:172 Uncaught TypeError: vue_router__WEBPACK_IMPORTED_MODULE_0__.default is not a constructor at eval (index.js:4:1) at ./src/router/index.js (app.js:108:1) at webpack_require (app.js:169:33) at fn (app.js:442:21) at eval (main.js:7:71) at ./…...

编写Dockerfile制作Web应用系统nginx镜像,生成镜像nginx:v1.1,并推送其到私有仓库。

环境&#xff1a; CentOS 7 Linux 3.10.0-1160.el7.x86_64 具体要求如下&#xff1a; &#xff08;1&#xff09;基于centos基础镜像&#xff1b; &#xff08;2&#xff09;指定作者信息&#xff1b; &#xff08;3&#xff09;安装nginx服务&#xff0c;将提供的dest目录…...

js 类、原型及class

js 一直允许定义类。ES6新增了相关语法(包括class关键字)让创建类更容易。新语法创建的类和老式的类原理相同。js 的类和基于原型的继承机制与Java等语言中的类和继承机制有着本质区别。 1 类和原型 类意味着一组对象从同一个原型对象继承属性。因此&#xff0c;原型对象是…...

day-30 代码随想录算法训练营 回溯part06

332.重新安排行程 思路&#xff1a;使用unordered_map记录起点机场对应到达机场&#xff0c;内部使用map记录到达机场的次数&#xff08;因为map会进行排序&#xff0c;可以求出最小路径&#xff09; class Solution { public:vector<string>res;unordered_map<stri…...

txt、pcd、las、ply 格式点云基本的读写和显示 (附 python c++ 代码)

一、文本(txt) 1.1、存储结构 使用文本格式存储的点云数据文件结构比较简单,每个点是一行记录,点的信息存储格式为 x y z或者 x y z r g b。 1.2、读取 读取文本格式的点云数据时,可以按照一般的文本读取方法,这里记录一下如何使用open3d读取txt格式的点云数据 impo…...

k8s节点pod驱逐、污点标记

一、设置污点&#xff0c;禁止pod被调度到节点上 kubectl cordon k8s-node-145 设置完成后&#xff0c;可以看到该节点附带了 SchedulingDisabled 的标记 二、驱逐节点上运行的pod到其他节点 kubectl drain --ignore-daemonsets --delete-emptydir-data k8s-node-145 显示被驱逐…...

【项目 计网6】 4.17 TCP三次握手 4.18滑动窗口 4.19TCP四次挥手

文章目录 4.17 TCP三次握手4.18滑动窗口4.19TCP四次挥手 4.17 TCP三次握手 TCP 是一种面向连接的单播协议&#xff0c;在发送数据前&#xff0c;通信双方必须在彼此间建立一条连接。所谓的“连接”&#xff0c;其实是客户端和服务器的内存里保存的一份关于对方的信息&#xff…...

茶叶小笔记

文章目录 茶叶的作用茶叶的主要成分茶多酚氨基酸(蛋白质)生物碱 茶叶的分类乌龙茶铁观音(安溪) 绿茶龙井(西湖)龙井43 绿茶(日照)毛尖(信阳毛尖)太平猴魁六安瓜片 红茶金骏眉大红袍 白茶云南白茶 黄茶黑茶花草茶 茶叶的形状过期茶的利用茶叶蛋大排档泡澡泡脚除湿除臭 茶渣的利用…...

安全开发-JS应用NodeJS指南原型链污染Express框架功能实现审计WebPack打包器第三方库JQuery安装使用安全检测

文章内容 环境搭建-NodeJS-解析安装&库安装安全问题-NodeJS-注入&RCE&原型链案例分析-NodeJS-CTF题目&源码审计打包器-WebPack-使用&安全第三方库-JQuery-使用&安全 环境搭建-NodeJS-解析安装&库安装 Node.js是运行在服务端的JavaScript 文档参考…...

Android JNI系列详解之CMake编译工具的使用

一、CMake工具的介绍 如图所示&#xff0c;CMake工具的主要作用是&#xff0c;将C/C编写的native源文件编译打包生成库文件&#xff08;包含动态库或者静态库文件&#xff09;&#xff0c;集成到Android中使用。 二、CMake编译工具的使用 使用主要是配置两个文件&#xff1a;CM…...

springboot中关于继承WebMvcConfigurationSupport后自定义的全局Jackson失效解决方法,localdate返回数组问题

一般情况下我们在config里增加jackson的全局配置文件就能满足基本的序列化需求&#xff0c;比如前后端传参的问题。 Configuration public class JacksonConfig {public static final String LOCAL_TIME_PATTERN "HH:mm:ss";public static final String LOCAL_DATE…...

苏州网站建设哪个比较牛/爱站网

互斥量和信号量的区别 1. 互斥量用于线程的互斥&#xff0c;信号量用于线程的同步。 这是互斥量和信号量的根本区别&#xff0c;也就是互斥和同步之间的区别。 互斥&#xff1a;是指某一资源同时只允许一个访问者对其进行访问&#xff0c;具有唯一性和排它性。但互斥无法限制访…...

wordpress主题安装ftp/江苏seo平台

文章目录1、文件结构速览2、创建appcam2.py&#xff1b;3、创建index.html&#xff1a;4、创建camera.html&#xff1a;5、创建style.css&#xff1a;6、启动服务7、验证上一节我们用flask创建了一个视频流媒体服务器&#xff0c;这一节让我们用Flask创建另一个python 网络服务…...

合肥做网站web0551/十堰seo优化

1.看看demo是怎样的在网上搜索“iOS支付宝sdk”&#xff0c;下载sdk&#xff08;如图1&#xff09;图1进入到图2点击左侧移动支付Demo&SDK再点击右侧的iOS&Android版资源&#xff0c;点击右侧SDK&DEMO下载SDK图2下载完成后解压&#xff0c;就得到了这个&#xff08…...

笑话网站程序/如何优化搜索关键词

本文详细地为大家展示了如何用Axure&#xff0c;实现商品详情页中的放大镜效果&#xff0c;enjoy~网站上面已经有一些关于放大镜效果的文章&#xff0c;但叙述的不是很详细&#xff0c;像我这样的小白可能看晕&#xff0c;我最近刚好学习到这里&#xff0c;所以且尝试把学到的尽…...

钉钉免登 wordpress/全网万能搜索引擎

[url]http://bbs.kafan.cn/viewthread.php?tid211671&extrapage%3D1[/url]相信各位一定在为电脑中毒.流氓插件等问题头疼重装系统,一键还原这些解决办法都存在各种不足.传统的杀毒软件面对如今铺天盖地的病毒,***,流氓软件也是只有招架之功.无还手之力.归根结底,我们得想办…...

如何查公司网站谁家做的/灰色词首页排名接单

一、开闭环系统稳定性和收敛性 1. Open loop&#xff08;开环系统&#xff09; 某LTI线性时不变系统如下&#xff0c; 如上一节”控制系统分析1&#xff08;系统稳定性和收敛性&#xff09;“所讲&#xff0c; 开环系统矩阵A的特征值决定系统稳定性&#xff0c;收敛速度。 …...