首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Google 是如何设计 Ruby Serverless Runtime 的?

在过去的一年时间里,Google Cloud Functions 对 Ruby 语言的支持已经落后于其他语言,但是我们现在已经赶上了,我想我会分享该产品背后的一些设计过程。 本文不是传统的设计文档。...顺便说一下,这些不是 Object 上的方法,而是作为函数上下文使用的特定类上的方法。...然而,这些语法可能传递了错误的东西。...我们不是在普通的 Ruby 类和方法中编写共享数据是正常的,而是在 Serverless 的函数中编写共享数据是危险的(即使可能的话),我们认为语法上强调区别是很重要的。...确实,这是 Google Ruby团队成员在使用其他框架(包括 Rails)时遇到的一个问题:很难测试应用程序的初始化过程,因为框架的初始化通常发生在测试之外,在它们运行之前。

2.2K60

学习一项技能要花多少时间?

Rei 写于 12 Dec 2013 前不久,一个技术 party 上有人问我:“我学习 Rails 已经2个月了,但还是对整个开发流程缺乏清晰的了解,我应该怎么学?”...现在我考虑开发什么的时间已经比要怎么开发多了,这个过程用了4年半。...我经常犯低级错误,例如花一个下午发现一个拼写错误引起的 bug,或者花一两天时间搞明白一个问题,兴奋过后又沮丧,为什么花了这么多时间在这些浅显的问题上。...那么,既然我不是天才,就不要用天才标准要求自己了。花多少时间都好,解决一个问题就是一个收获。不再只看着那些天才,而是把昨天的自己作为竞争对手,今天比昨天有进步,那么这一天就是有意义的。...能解决问题不是因为天资聪颖,而是因为已经花时间实践过了。如果有什么问题还解决不了,那是因为实践得还不够。 学习效率指数上升 万事开头难,对于技能学习也适用。

18110
您找到你想要的搜索结果了吗?
是的
没有找到

不使用 Ruby 的十个理由

他们对 Ruby 不是好奇,而是感觉我在批评他们热爱的技术。 既然这不是宗教,而是关于如何面对新的事物,我认为我们应该列出所有其他人认为不使用 Ruby 来做 Web 开发的理由。 1....你需要编码,测试,发布,并且循环这个过程,你需要快速迭代。所以,一开始开发效率大于运行效率。老拿性能来说事是愚蠢并且错误的。Ruby 的应用也能像 .NET 或者 Java 应用那样横向扩展。...Ruby 非常顽固,不自由 这个观点不仅仅是错误,简直就是愚蠢。让我问你一个问题:编写一个 HTTP 路由组件或者图像处理类库有多少种方式?...在 Twitter 这个案例中忽略了 Twitter 的快速成长得益于 Rails 的易于使用和快速开发。 任何成功的应用到最后都会遇到扩展性问题。...我的意思是,如果你认为 Ruby 是正确的技术,那么为什么不多投入一些

4K10

Rails 从入门到完全放弃

不过,还好有Node.js,让我赶上了这个时代。 怎么接触到Rails 当公司的一个PHP的多人即时聊天项目接近尾声时,我们在思考能不能将程序员生产力解放出来?是不是可以尝试一些其他的技术架构。...文件上传 上传图片 对于图片等资源的处理,最开始没有选用Carrierwave的方案,而是使用七牛云存储JS SDK,开始接触的时候,发现并没有多少参考文档,于是想是不是这个东西比较简单也比较少人用,还是...幸运的是这个过程并不困难,我将改造后的Froala用策略模式做成了一个Gem: wysiwyg-rails-qiniu,又一次造福社会。...后面灵感闪现,我为什么要给用户一个完整的点击事件?一碰到就触发键盘不是可以让用户得到的反馈跟好么。索性偷懒了一把。...开发过程中最拖慢开发进度的不是需求变动,也不是技术点,使用了assets pipeline的话,在调试页面的时候资源加载总是很慢。

2.1K20

像一名教育者一样思考代码质量

答案不是隐藏在一些父类或 mixin 中,而是藏在这种部落知识的书中。 https://guides.rubyonrails.org/?...问题不在于某样东西是“最佳实践”还是“Rails 编程方式”,而是在于它对你的受众是否有意义。 Angular 我过去犯过这个错误。...那么,为什么不像这样记录一份讲解,并在文件头部以代码注释的形式链接到这份讲解? 我认为最大的原因是可维护性。随着代码库的演变,视频将变得陈旧过时。...我认为这个想法很好,但这是唯一的好想法吗?填空:“像个 ____ 一样思考代码质量”。还有哪些有意义的想法? 我想到的最重要的是“可用性设计师”。为什么?...为什么我们不能对代码也这样做? 原文链接: https://adamzerner.bearblog.dev/think-like-an-educator-about-code-quality/?

73730

GitLab → 搭建中常遇的问题与日常维护

、配置 GitLab 后,不一定就万事大吉了,访问 GitLab 的时候可能会出现如下错误 ?     ...服务启动最少需要一分钟     这个问题楼主没有遇到,因为开始的时候,楼主就给虚拟机分了 4 核 CPU 那么说白了,只要我们的虚拟机(或真实机器)环境足够干净,硬件资源(内存和 CPU)足够好,就不太会出现如上的错误...官网去找对应版本的命令     当出现如下信息表示我们成功登入控制台 [root@localhost ~]# gitlab-rails console -e production ----------...5、退出控制台     执行命令: exit   完整过程类似如下: ?   ...看着熟悉的中文,倍感亲切,但是要注意: 此功能当初处于实验阶段,翻译尚未全部完成 ,也就是说语言功能尚未全部完成   批量添加账号   我们用 SVN 或 Git 的时候,账号往往不是自己注册的,而是统一分配的

2.9K20

GitLab技术选型为何如此不同:坚持用过气Web框架十多年、坚决不用微服务

从 GitLab 的角度看,他们本身没有复杂的运行体系,也不需要用微服务,在这样的情况下,Ruby on Rails 对他们而言反而是最佳选择。...回到 GitLab 本身,当联合创始人 Dmitriy Zaporozhets 在决定开发自己的版本控制服务器软件的时候,他其实也是 PHP 开发背景,但他没有坚持自己熟悉的方法,而是选择了 Rails...只有相当成熟的 DevOps 组织才能成功运行起微服务架构。总之,请大家明确一点——我们不是谷歌,我们可能搞不定那么复杂的大规模运行体系。”...尽管 Rails 本身并不能实现这一点,这是那些出色的贡献者和工程师们完成的,但 Rails 还是为这些成功奠定了基础。...如此一来,有些人可能会想问,GitLab 为什么不开发一套合适的插件接口?或者干脆建立基于微服务的服务接口?对于这类问题,Sid Sijbrandij 的回答是坚决的:没必要。

84620

慢的不是 Ruby,而是你的数据库

但两者的绝对差异又如何?Ruby 版本仅慢 1.2 秒多一点。这在测试和开发过程中已经足够令人恼火了。...(好吧,不是从一分钟到下一分钟的运行时,而是经过小的更改)。...这样的错误不会导致数据库集群崩溃,而是逐渐累积成昂贵且性能糟糕的应用程序。20 毫秒的减速几乎无法衡量,数百个 20 毫秒的速度减慢在几个月内逐渐增加,使响应变得令人无法接受。...而且它会查询五个连接表并且连接到至少一个索引上,而这个索引并不是为此准备的。导致大约 800 毫秒的查询。在每次页面加载时。 未优化的 where、group 和 order 调用。...[8] 请注意,虽然 DateTime:parse 很慢,但这个函数是用 C 编写的。之所以慢,并不是因为它是用 Ruby 编写的,而是因为解析如此复杂的文本很慢。

11730

【技术分享】基于 Audits 自动生成小程序质量评估报告

那究竟是哪个变量与渲染无关?这排查起来简直精疲力尽。(注意: 创建测试计划时,需要填写小程序 ID,这里并不是 AppID, 而是小程序的原始 ID) 2....MiniTest 平台地址为:https://minitest.weixin.qq.com。...举个栗子:如果一个活动到了某个时间需要下线,下线后我们携带了之前的活动 ID 去访问, 可能会访问到错误的页面。...但是很多时候,对于一个页面哪些地方可以点击,哪些地方不能点击,连我们自己都不太清楚,需要测试一下才知道,何况是机器?...这个问题在小屏手机上面会更加明显,点击区域宽、高不能低于 20px。 5. 避免 setData 数据冗余。

1.3K40

微信小程序自动化框架minium实践

注意匹配规则不是正则表达式,而是通配符。...index.html文件,但是我们不能直接用浏览器打开这个 文件,需要把这个目录放到一个静态服务器上 测试结果存储在outputs下,运行命令python3 -m http.server 12345 -...的匹配版本为: Minium版本:1.0.5 开发者工具版本:1.05.2102010 python版本:3.8.8 4.出现以下报错,可能是登陆的开发者工具的账号,没有被测试小程序的开发者权限; 5.运行过程中...原因:是框架的minitest.py文件调用setup和TearDown方法的时候,没有判断配置文件"assert_capture": false这个条件 可以修改minitest.py文件,增加配置文件的判断条件...self.capture("setup") 6.命令行执行的时候加了-p xxx参数,运行时报引入的包不存在 原因:命令行运行时默认是当前路径,加-p xxx, 这样会导致脚本运行的PYTHONPATH变了(不是当前目录了

1.3K40

经验贴:如何快速掌握一门技术

这让我想起了我经常会遇到的一些读者留言: 「我想学rails,有没有推荐的ruby的入门书籍?」 「我想学android,对java掌握到什么程度才能开始?」...- 跟唱歌机学的,卖萌 「goodbye so long farewell my friend」- 跟音乐课学的,卖萌 说出的大部分的句子,她并不知道每个词的具体含义,但她知道这个句子的模糊的意思,而且从大人的反应中...比如说,我要学rails,那就直接从rails开始,遇到有关ruby的语法障碍,回过头来看看ruby文档中相关的内容,扫清障碍立刻回到rails本身,而不是先从ruby啃起。...那么,当我们在桌前堆满了从入门到专家的各种书籍,是不是也把学习变成了一场盛大庄重的仪式?重要的不是堆砌了多少知识,而是学以致用。 仅仅专注并直奔主题还远远不够。学习过程中你需要大量练习和获得反馈。...婴儿并没有在累计了3000个词汇之后才开口说话,而是当身体和大脑准备好后的第一天就张口说话了,并且,尽管说得错误百出,他们依然越挫越勇,屡败屡战。

80560

如何快速掌握一门技术

这让我想起了我在撰写「程序人生」公众号经常会遇到的一些读者留言: 「我想学rails,有没有推荐的ruby的入门书籍?」 「我想学android,对java掌握到什么程度才能开始?」...- 跟唱歌机学的,卖萌 「goodbye so long farewell my friend」- 跟音乐课学的,卖萌 说出的大部分的句子,她并不知道每个词的具体含义,但她知道这个句子的模糊的意思,而且从大人的反应中...比如说,我要学rails,那就直接从rails开始,遇到有关ruby的语法障碍,回过头来看看ruby文档中相关的内容,扫清障碍立刻回到rails本身,而不是先从ruby啃起。...那么,当我们在桌前堆满了从入门到专家的各种书籍,是不是也把学习变成了一场盛大庄重的仪式?重要的不是堆砌了多少知识,而是学以致用。 仅仅专注并直奔主题还远远不够。学习过程中你需要大量练习和获得反馈。...婴儿并没有在累计了3000个词汇之后才开口说话,而是当身体和大脑准备好后的第一天就张口说话了,并且,尽管说得错误百出,他们依然越挫越勇,屡败屡战。

95750

Ruby 应用容器封装踩坑记录(Lobsters)

但是报错依旧,再次看错误日志,看到一个隐藏逻辑:“rake 调用者是 bundler”,所以是不是应该先安装 rake ,再安装 bundler ?...虽然我们在容器镜像构建时将 root 切换到 lobsters 用户,运行应用也使用的是该用户,但是说不定这个 2.7.0 版本就是根本不会读取运行用户路径下的软件?...额外的小坑:Ruby 2.7.0 版本下 Rails 启动警告 先说结论,这个问题官方正在解决。...su lobsters -c "bundle install"; \ - su lobsters -c "bundle add puma --version '~> 4.3.3'"; \ 为什么可以删除这条命令...或许你会疑问,为什么不考虑在最初就禁用这些依赖?因为后续我们考虑开发环境也在容器中进行,所以需要保障带有开发依赖的配置也能够被正确初始化。

7.4K10

Ruby 应用容器封装踩坑记录(Lobsters)

但是报错依旧,再次看错误日志,看到一个隐藏逻辑:“rake 调用者是 bundler”,所以是不是应该先安装 rake ,再安装 bundler ?...虽然我们在容器镜像构建时将 root 切换到 lobsters 用户,运行应用也使用的是该用户,但是说不定这个 2.7.0 版本就是根本不会读取运行用户路径下的软件?...额外的小坑:Ruby 2.7.0 版本下 Rails 启动警告 先说结论,这个问题官方正在解决。...su lobsters -c "bundle install"; \ - su lobsters -c "bundle add puma --version '~> 4.3.3'"; \ 为什么可以删除这条命令...或许你会疑问,为什么不考虑在最初就禁用这些依赖?因为后续我们考虑开发环境也在容器中进行,所以需要保障带有开发依赖的配置也能够被正确初始化。

4.8K00

每敲一行代码,需要测试1000次!!!

来源:http://jgV**.cn/7GGZCs 此前Oracle 惨遭亚马逊、Salesforce 弃用,究其根本原因,不是因为亚马逊等企业为了省钱,而是因为 Oracle 数据库逐渐满足不了他们业务的发展需求...- 另外,重复以上步骤大概两周左右,直到你能得到将这些 flag 组合起来的“神秘咒语”(没有错误发生)。 - 终有一天,你会成功,带来测试失败为零的结果。...让很多程序员后悔到想剁手的“rm -rf”绝对要算一个,糟糕的不是命令行本身,而是它带来的后果。...那年写 Unix Shell 脚本,本想删除一些临时的子目录,如:rm -rf ${mydir}/ ,结果,我没检查 ${mydir} 这个变量是否为空,于是,在某种情况下,这变量真的为空了,于是,...,改 Bug 失败叫掉坑,但是,如今的大牛哪一个又不是在写 Bug 与 Debug 中博弈过来的,也正是有了这些糟糕的代码才能让彼时的菜鸟们真正得以历练,而对于历练过程中需要注意什么,对此,CSDN

58710

解密:Python风靡全宇宙,首要原因竟是它?

这也不难解释为什么“数据科学家”这一职位频繁出现在招聘网站上了。...即便从很多层面来讲,Ruby都凭借Rails赢得了这场争战,但这丝毫不影响Python成为当今最受欢迎的语言。这到底是为什么?...Oliphant的大手笔 为了揭开这个谜团,我们就不得不提一下一位大佬了,他就是Travis Oliphant。追溯到2006年。...当时,Travis Oliphant还是BYU的助理教授,他仍未创办Anaconda(注:Anaconda是一个完全以Python为基础的,目前最成功的商业数据科学平台之一)。...如果你想成为一名数据科学家,但还没入Python的坑,现在是不是也已经蠢蠢欲动了? 持续关注文摘菌,你将会读到更多Python和数据科学相关的独家资讯!

64930

激荡二十年:HTTP API 的变迁

尤其是,当 Ruby on Rails(以下简称 rails这个引领一个时代的 web 框架横空出世后,PHP 尴尬的发现,自己的优势,可能就只剩下多年来积攒的生态系统,以及在这个生态下滋养着的一大堆开发者了...rails成功催生了一系列迷弟迷妹 —— 各个语言的,无论是高仿 rails,或者受 rails 启发的框架如雨后春笋般冒出,好不热闹。...对客户端来说,这额外多了两个浪费用户宝贵等待时间的 roud trip,为什么不能一个查询就获得我想要的数据,且仅包含我想要的数据这个想法很有创意,但它忽视了灵活性带来的可能并不值得的复杂性。...在 DBA 几乎绝迹于江湖后,有哪个初创企业会把自己的后端围绕着一个特定的数据库(postgres)构建,并且几乎用尽这个数据库每一个非标准的功能,完全不考虑可迁移性?...这里 source 我使用 webassembly,并不是为了装 B,而是我希望这样的工具就像 postgREST 一样,你不需要,也无法对其二次开发。

1.7K30
领券