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

我们弃用 Firebase

当然,也有 Firebase 模拟器,但它们很慢,也很难调试,而且普遍存在不足;经常会在负载不是很大情况下出现意料之外失败,而你可能期望有一个能够承受足够负载、健壮本地环境。...Firebase CLI 限制相当严格: 对于像启用 Firestore 这么简单事情,你也只能通过仪表板完成不能通过命令行。 firebase login:ci 有意禁止传递认证密钥。...在过去几个月里,开发人员偶尔会反馈由于缺少权限导致 Firebase Hosting 失败。我们团队上周也开始报告这个问题。...尽管 Firebase 开发有所下降,但我最近还是经常在这个权限仪表板上看到自己。 根据 Cloud Function 部署文档:Firebase 错误只能在 Google Cloud 上解决。...Supabase 正基于 Deno 开发他们无服务器函数套件,这表明他们对优秀技术很重视。 我们喜欢 Supabase 使用 PostgreSQL。

32.5K30

我们在未来会怎样构建Web应用程序?

现在我们需要手动更新成功操作和失败操作才行。 这是为什么?在后端,数据库本来就能做乐观更新啊——为什么我们不能在浏览器中这样做?...新代码更改有时会引入一些你意想不到方法来更新数据库对象。突然之间,你就遇到了麻烦。 这里要问问题是,为什么要在 API 级别进行身份验证?...于是乎,现在只有少数代码更改(不是大多数更改)会影响权限了。  G. 审计、撤消 / 重做 并且在某些时候,我们要完成需求会增加复杂性。 例如,假设我们需要支持“撤消 / 重做”,用于好友操作。...从本质上讲,能做到这一步程序员都变成了数据库工程师。但是,如果我们在浏览器中有一个数据库,让它扮演分布式数据库中一个“节点”,上面的任务不就可以自动完成了吗?...至于剩下项目(审计、撤消 / 重做、写入离线模式、衍生数据)——Firebase没有解决它们

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

RethinkDB:​​为什么我们失败

我在这里将这些评论汇总成一个建议失败原因列表。 其中一些原因对他们来说有一定道理,但它们是症状不是原因。 事后看来,有两件事出了问题——我们选择了一个糟糕市场,并针对错误指标优化产品。...他们希望产品在需要时实际存在,不是三年后。 触手可及速度。人们希望 RethinkDB 能够快速处理他们实际尝试过工作场景,不是我们建议“现实世界”中场景。...例如,他们会编写快速脚本来测量插入一万份文档不读回它们需要多长时间。MongoDB 出色地掌握了这些场景,而我们则打了一场失败教育市场之战。 一个用例。...我们无法理解为什么人们会选择一个几乎不做它应该做事情(存储数据)系统,有一个大内核锁,随机抛出错误,实现单节点功能,尽管分片系统是产品核心功能之一,但它几乎不能正常工作,基本上没有提供正确性保证,...早期 RethinkDB 有点像这样。我们对产品或市场没有直觉,所以我们会在没有真正了解我们在做什么情况下完成建立公司动作。更重要是,我们有巨大乐观偏见。

1.3K40

译文:开发人员面临 10个最常见JavaScript 问题

事实上,对于任何有经验软件开发人员来说,将基本JavaScript功能构建到网页中都是一项相当简单任务,即使他们是JavaScript新手。...正如这些例子表明那样,类型强制转换规则有时会一清二楚。因此,除非明确需要类型胁迫,否则通常最好使用===和!==(不是==和!=),以避免类型胁迫任何意外副作用。(==和!...因此,如果在没有名称情况下调用构造函数,则名称将默认为default。...否则将被忽略或默默失败代码错误现在将生成错误或抛出异常,更快地提醒您代码库中JavaScript问题,并更快地将您引导到它们源代码。 ·防止意外全局。...当尝试删除不可配置属性时,非严格代码将默默失败,而在这种情况下,严格模式会引发错误

1.2K20

Python DeBug7个步骤【Programming】

我知道,这是完全不现实情况,对吧? 不幸是,日志或日志消息似乎经常在错误时间出现。...如果底部没有帮助,并且你代码已经有一段时间没有被连接了,那么运行它将是非常有帮助。我推荐pylint或者flake8。通常情况下,它指向了我一直忽略错误。...想想看,当蛋糕没有起酥时候,忘记加发酵粉是多么明显。 是时候查看一下堆了。很有可能问题出在代码中,不是Python核心,甚至不是第三方软件包,所以先扫描堆栈,在代码中寻找代码行。...题外话 为什么不是一个打印声明?我过去常常依赖于打印语句。它们有时仍然派得上用场。但是一旦我开始处理复杂代码库,尤其是那些打网络电话代码库,打印就变得太慢了。...继续前后移动,顺着堆栈向上移动,找出您调用偏离轨道地方。如果您一直到达跟踪顶部没有遇到断点,那么恭喜您,您已经发现了问题:您应用程序拼写错误。这里没有经验,没有,一点也没有。 4.

1.2K00

权重衰减== L2正则化?

神经网络是很好函数逼近器和特征提取器,但有时它们权值过于专门化导致过度拟合。这就是正则化概念出现地方,我们将讨论这一概念,以及被错误地认为相同两种主要权重正则化技术之间细微差异。...神经网络非常擅长于逼近线性或非线性函数,在从输入数据中提取特征时也非常出色。这种能力使他们在计算机视觉领域或语言建模大范围任务中执行奇迹。但是我们都听过这句名言: “能力越大,责任越大”。...这句话也适用于无所不能神经网络。它们强大函数逼近功能有时会导致它们对数据集过度拟合,因为它们逼近了一个函数,这个函数在它所训练数据上表现得非常好,但在测试一个它从未见过数据时却惨败。...正则化 正则化可以定义为我们对训练算法所做任何改变,以减少泛化误差,不是训练误差。有许多正则化策略。...Reparametrized L2 Regularization equation 从上面的证明,你必须理解为什么L2正则化被认为等同于SGD情况下权值衰减,但它不是其他优化算法情况,如Adam,

85420

「首席架构师看敏捷数据」核心实践:测试驱动开发(TDD)简介

如果它们失败了,您需要更新您功能代码并重新测试。一旦测试通过,下一步就是重新开始(您可能首先需要根据需要重构设计中任何重复,将TFD转换为TDD)。 图1示。测试优先开发(TFD)步骤。...与其先编写函数代码,然后再编写测试代码,如果您真的编写了测试代码,那么您应该在编写函数代码之前编写测试代码。此外,您可以通过非常小步骤来完成—一次测试和少量对应函数代码。...采用TDD方法程序员拒绝编写新函数,直到第一个测试失败,因为该函数不存在。事实上,在对代码进行测试之前,他们甚至拒绝添加任何一行代码。...挑战在于,这两种形式TDD都要求从业者具有技术测试技能,许多需求专家通常没有这些技能(这也是为什么泛化专家比专家更可取另一个原因)。 TDD一个基本假设是您有一个可用测试框架。...我认为Bob Martin说得很好:“编写单元测试行为更多是一种设计行为,不是验证行为。它也更多是一种文件化行为,不是验证行为。

72420

【译】Google 官方文章——如何去做coder review

它们是以基本原则为基础,应当以这些原则为依据,不仅仅是以个人意见为依据,有时几乎都没有选择。...鼓励开发者解决他们知道现在需要解决问题,不是推测将来可能需要解决问题。...测试并非来测试它们本身,一般也极少为了测试测试(如测试一下测试代码有没有问题又走了测试流程),因此我们要保证测试是有效。 当代码真的有问题,测试是否会失败?...沮丧很多时候是对于cr评论写作方式有关,并非来自reviewer对于代码质量坚持。 晚点再来整理干净 一个常见推迟原因是开发人员希望完成任务(这可以理解)。...这不是因为开发人员不负责任,而是因为他们可能有很多其他工作要完成,于是清理工作便会在成堆工作中被遗忘。因此,通常最好坚持开发人员在代码在合并后清理它们

53050

谷歌反“背锅”文化

有人认为“问责”是指因为错误决定受到惩罚,或者是必须面对自己行为后果。Brush 则认为,“问责”是组织保证你会被根据自己为负责事情做出相关行为,产生后果进行评估。...有时会相信通过概率、可能性或是一些侥幸,才能让事情完全正确或完全错误。这种情况下,如果只评估结果,那么你会对组织以及什么可行、什么不可行有非常糟糕理解。...这本书中,还探讨了人们会因为什么才会更快乐。人们不会因为升职加薪或是其他什么原因而更快乐,因为这类事情发生频率太低了,所以它们不是个好激励因素。...但这会导致人们缺乏改进动力。状态好的人达成了目标后会开始摸鱼,毕竟他们已经完成任务离目标还有十万八千里的人可能会觉得这个目标太难了,他们下辈子都没办法完成,并最终放弃了实现这个死目标的动力。...因为在这种文化内,没有人会这么做,也没有人会去提及这些东西。如果人们会因为提出风险或者承认失败受到惩罚,那么他们也将被要求对任何决定做出毫无转圜余地承诺,只能承诺不能否定。

14420

10 个角度分析软件工程师应该知道 100 件事

糟糕程序员操心代码,优秀程序员操心数据结构以及它们之间关系。--Linus Torvalds 在代码注释中解释你为什么要写这些代码,不是解释你在做什么。但不要过度描述,不要把注释当成小说写。...100% 代码行或分支覆盖率并不意味着你代码就没有 bug。测试用例要覆盖所有的功能需求,不是覆盖代码行或分支。...当你在某个问题上困了很长一段时间没有任何进展时,重新描述这个问题或向别人解释这个问题,大多数情况下这样做都会有神奇效果。为什么小黄鸭调试法会如此受欢迎,现在你应该知道答案了。...如果你经理没有为你失败负责,并责怪你,那么在他们手下工作就是在拿你个人和职业发展冒险。 经验年限只是一个数字。有时候你会发现初级工程师比高级工程师对某些事情更熟悉。...12额外建议 记住帕累托法则 (80/20 法则),它几乎适用于软件工程方方面面: 80% 工作是由 20% 工程师完成; 80% 影响是由 20% 工作带来; 80% 错误是由

19020

10 个角度分析软件工程师应该知道 100 件事

糟糕程序员操心代码,优秀程序员操心数据结构以及它们之间关系。--Linus Torvalds 在代码注释中解释你为什么要写这些代码,不是解释你在做什么。但不要过度描述,不要把注释当成小说写。...100% 代码行或分支覆盖率并不意味着你代码就没有 bug。测试用例要覆盖所有的功能需求,不是覆盖代码行或分支。...当你在某个问题上困了很长一段时间没有任何进展时,重新描述这个问题或向别人解释这个问题,大多数情况下这样做都会有神奇效果。为什么小黄鸭调试法会如此受欢迎,现在你应该知道答案了。...如果你经理没有为你失败负责,并责怪你,那么在他们手下工作就是在拿你个人和职业发展冒险。 经验年限只是一个数字。有时候你会发现初级工程师比高级工程师对某些事情更熟悉。...额外建议 记住帕累托法则(80/20 法则),它几乎适用于软件工程方方面面: 80% 工作是由 20% 工程师完成; 80% 影响是由 20% 工作带来; 80% 错误是由 20%

17310

应用上云2小时烧掉近50万,创始人:差点破产,简直噩梦

好吧,猜猜是什么,到中断功能触发或通知云用户时,损坏可能已经完成了。 结算大约需要一天时间,因此这就是我们第二天注意到收费原因。 3. Google应该向我们收取$ 100,不是$ 72K!...Google最后一天 另一个任务是了解我们错误,并制定我们产品开发策略。并非团队中每个人都知道发生了什么,但是很明显我们遇到了一些大麻烦。...6 我们所有的错误 在云上部署有缺陷算法 上面已经讨论过了。...在不完全了解Firebase情况下使用Firebase 有些事情只有经过大量经验才能学到。Firebase不是一种可以学习语言,它是Google提供容器化平台服务。...它具有由他们定义规则,不是由自然法则或特定用户可能会认为规则来定义。 ? 另外,在Node.js中编写代码时,必须注意后台进程。

42.7K10

密码学是如何保护区块链

虽然我们的确永远无法确保一个系统没有任何漏洞——毕竟系统都是由不完美的人类完成,但是“任何系统都可以被攻破”这一观点却是错误。自90年代初以来,我们利用密码技术已经可以实现完全免受黑客攻击。...这不是因为密码学不起作用,也不是因为有人“破解”了密码学——就像你银行错误地处理了你账户时不是数学错误、你妈妈下载不熟悉附件感染计算机病毒时不是电子邮件错误一样。...如果你能猜到这些地址私钥,那么你就可以将其中钱发送给任何人。与密码不同,你可以在自己机器上本地验证私钥,没有服务器会限制你尝试次数或频率。 那为什么没有人偷​​走这些钱呢?...答案在于用作私钥数字近乎荒谬大小。它们足够大。 我们从一个简单思维实验开始。想象一下,你私钥足够大,大到世界上所有的计算机一起工作,他们需要24小时才能猜到。...如果在你私钥上增加仅仅一位数字,计算机就需要十倍计算量,也就是需要十天不是一天。增加六位数字会使这一时间达到27000年。 在任何情况下,生成私钥所需创建随机数计算能力都是微不足道

1.2K150

WordPress开发人员犯12个最严重错误

这就是为什么许多开发人员在他们变量和函数名前面加上了一些与插件本身相关独特东西。除了消除代码冲突之外,在启用了大量插件时,还可以更容易地发现问题。...有了这个,我可以轻松地阅读和管理代码,不必担心有很长唯一名称。 在使用它们之前,我建议您很好地理解命名空间,因为它们常常以错误方式使用。...这就是为什么重新安装WordPress原因(是的,如果你有最后一个版本的话),因为任何被入侵文件都将被真正WordPress核心文件覆盖。...12.使用WordPress函数和代码片段但不理解它们 通常情况下,当开发人员陷入困境并在StackOverflow这样地方找到解决方案时,他们很高兴他们设法使某些工作成功,不去理解该代码背后逻辑...2.虽然代码执行其工作,但它可能包含不需要实现任务无效函数。如果代码没有进行优化,那么这种“复制粘贴”实践可能会导致维护网站速度变慢,尤其是在项目的不同位置使用了多个代码片段。

2.9K10

非程序员学习编程指南

在这种压力下,我们经常会感到恐慌,并且担心如果我们没有完成工作会怎么样。这限制了我们清晰思考能力,短暂休息通常会让我们再次高效地工作。 3....由于某些部分需要先完成,因此他们可能还必须重新编写部分代码,否则他们代码顺序就会变得很凌乱,他们就不理解编写好代码了(我有时也会犯这种错误,我对此感到很内疚)。...原型价值在于它为你提供学习方法,不是代码本身。 建议: 在你着手编写代码之前,请花一周左右时间列出项目的所有主要特性,以及如何编写它们。...另外,有许多错误过于笼统,可能会包含许多不是面临问题。...对于初级开发人员来说,排除此类通用错误是非常困难,在这种情况下,最好由高级开发人员进行指导,他们可以指出你编写代码的确切问题,并为你提供帮助。询问学校毕业班学生或者老师会是一个不错选择!

47600

《哈佛商业评论》:人工智能商业之路机遇和挑战

机器学习系统不仅在许多应用中取代了旧有的算法,而且在许多曾经被人类做得最好任务上也占尽先机。尽管这些系统并不完美,但它们错误率已经表现比人类更好了。...更重要是,如果人类完成了一项任务,我们会很自然地假设此人在相关任务中具有一定能力。但是,机器学习系统是被训练来完成特定任务,因此通常他们知识不会泛化。...但要注意是,机器学习系统是无法完全代替这个职位、流程或业务模型。大多数情况下它们是对人类活动补充,使他们工作变得更有价值。对于新劳动分工来说,最有效规则很少是“把所有的任务交给机器”。...这可能会使证明系统在所有情况下,尤其是在没有在培训数据中表示情况下工作很难,甚至不可能。缺乏可验证性对于任务应用场景是一个问题,例如控制核电站,或者涉及生死抉择。...讨论人工智能极限可以从毕加索对计算机观察出发:“但它们是无用,只能给你答案。”它们当然不是一无是处,正如机器学习最近胜利彰显那样,但毕加索观察仍然提供了参考。

1.4K110

泄露2.2亿条数据,谷歌Firebase平台数据库被100%读取

他们扫描了 500 多万个域名,发现有 916 个网站没有启用安全规则或安全规则设置错误。...Eva向BleepingComputer 透露,他们找到了一些 Firebase 实例,这些实例要么完全没有设置安全规则,要么配置不当,从而允许对数据库读取权限。...该脚本消耗大量内存,不适合执行任务,因此被 Logykk 用 Golang 编写变种脚本取代,该脚本花了两个多星期才完成互联网扫描。...一切是如何开始 在互联网上扫描配置错误 Firebase 实例暴露 PII 是研究人员两个月前开展另一个项目的后续行动,当时由于配置错误问题,他们获得了人工智能招聘软件解决方案 Chattr...使用 Firebase 实例管理员和 "超级管理员 "权限。

9210

Linux 初学者常犯 7 个错误

更新不是自动 更新是必不可少,因为它提供了新和改进功能,同时消除了现有的错误。这些更新对于系统安全也很重要,Linux 包含自动更新功能,但默认情况下处于禁用状态。...这就是为什么新用户有时不更新系统并出现错误原因。尽管在 Linux 中启用自动更新很容易,但初学者仍然不知道如何手动完成。因此,请定期检查更新并更新系统以消除错误和漏洞。...这就是为什么请选择替代方案不是寻找Windows工具原因。...6.命令很简单 Linux 用户主要依靠命令来快速执行各种任务。因此,作为初学者,预计您在使用命令时会犯错误,但有时会成为一场噩梦。Linux 或 Windows 命令提示符中命令区分大小写。...如果您配置错误,请不要担心,因为您有可能知道该错误配置故障排除。因此,如果您犯了错误,请始终尝试找到解决方案,不是放弃。

18140

浏览器之性能指标-FID

❝FID测量用户输入事件必须是「离散」(有限)。 ❞ 连续类型用户交互,如缩放或滚动页面,无法准确地使用该指标进行测量。这是因为它们通常不在浏览器主线程上运行并具有不同约束条件。...---- FID测量是输入延迟,不是处理延迟 FID并「不测量由于用户交互导致网页实际处理或更新」。这是因为开发人员可以通过将事件处理程序与与事件相关任务分离来操纵FID。 ---- 3....为什么会出现输入延迟呢 ❝输入延迟(Input Delay)是指在没有用户请求情况下加载页面元素,例如图像或脚本。...然而,在某些情况下,这些资源可能会在没有用户直接请求情况下被加载。例如,当网页中脚本文件被设置为自动加载,并且不是在用户直接与网页交互时才加载,就会导致输入延迟。...如果将它们分解为较小任务,用户输入可以在它们之间被处理。尽量保持任务在「50毫秒以下」以确保安全。 我们使用setTimeout模拟长任务

40440

独家 | 一个好事件跟踪字典是什么样

在Honeydu案例中,我会问:为什么一个新用户没有成功创建他们第一张发票?他们是否查看了不同模板,却没有找到与自己相关模板?他们是否尝试从头开始创建一个发票、却发现回到我们模板目录太难了?...2、是旅程不是指标 我在前文讨论关键之一是要在事件中达到正确抽象水平,其基础是追踪旅程,不是指标。...在Honeydu中,"添加新付款方式失败 "和 "支付发票失败 "是两个事件例子,它们常在事件追踪工作中被遗忘,因为它们是对用户行为反应,不是在产品中采取实际行动。...这个练习可以帮助你发现那些被你忽略没有预料到、或在业务中改变东西。要明确是,我并不是说一切决策都必须在有数据情况下才能被做出。...当你在内部工具和系统上工作时,你客户是另一组员工不是公司最终客户,此时并没有收入或其他指标的直观反馈来告诉你,你做得算是糟糕、良好还是优秀。

36220
领券