原文地址点击这里
译者注:Stitch是针对Amazon Web Services Inc.(AWS)云上的MongoDB Atlashosted数据库服务(尽管Atlas本身就支持迄今为止的其他云平台)。虽然它初只适用于Atlas集群,但Stitch将会扩展以支持任何MongoDB数据库。Stitch提供JavaScript,iOS和Android的原生SDK,以帮助开发人员管理支持基于数据的应用程序的后端,其功能包括数据存储和检索、数据访问控制、安全性、数据隐私以及组合各种服务,如认证、付款、消息等。
作者 Nick Makes 发表时间 July 2, 2019
“哦,Gramma,我用计算机工作,”我大声的结结巴巴的说(是的,Gramma是我们这些孙子辈对她的称呼)。我不满足于把自己的工作说成是“帮忙建网站”,她露出真诚的微笑,礼貌的表示出她有多自豪,我们终开始抓到重点:家庭,食物和(无论好坏)波士顿红袜队。
Enter stage left: https://grammas.kitchen
网站地址:https://grammas.kitchen
简短的“解释”我的工作之后,我脑子里出现了一个理想的解决方案:我要用她不知名的菜谱建一个网站。这个思想与我使用MongoDB的情况非常吻合,我是一款云端产品MongoDB Stitch的用户。我可以让奶奶知道,在学习时我每天给用户提供什么样的服务,我给生活做了什么。
这就是我初工作的出发点:一个可以浏览奶奶菜谱的简单网站。
我这个项目的目标没有特别顺序,具体内容如下:
继续熟悉*cript, React和Redux
使用Stitch标准化email/password认证流程(例如注册->确认->登录)
利用Stitch的认证监听器开发一个“认证路由”组件
借助Stitch的“文档规则”支持一个复杂的用户家庭、朋友和其他公共菜单分享网络。
让奶奶感到骄傲
时间和计划不是稳定有效的资源,但MongoDB的核心任务是与我们的用户产生共鸣。我的团队经常会花时间使用我们的产品,找出能够让每个开发者持续创新的办法。考虑到email/password认证循环是我们的系统中少使用的特性之一,我有了一个机会做个项目,既可以用于白天的工作也可适用自己的生活。
这篇博客的余下内容不是讲如何实现项目的。我会在Github repo里面探讨相关问题。相反,在做这个项目时我会考虑一些更大的主题,也就是我遇到的困难和接受的教训。
当你解决一个问题时的感觉
不管一个问题对一个人看上去多么平凡,对另外的人来说它就是个新鲜事物。那种接近、承担和终解决一个新问题的感觉是我们成为程序员的根源所在。我对次成功的通过注册、确认和登录完成一个认证循环的过程很着迷。如果感兴趣,你就不会嫌弃项目太小或者已经被完成过太多次。那种满足的瞬间不断推动我们这些专业程序员去做更大和更好的事情——我可以给我们的认证提供者的文档提供有意义的反馈。
不要再发明轮子
很明显作为开发者,我们不认为有解决不了的问题,但包含在计算中的时间和复杂度用于决定事情值得学习与否。对于我来说,适当的安全就够了,这不是重要的问题。我曾经做了一年多的开发但仍然对一些产品涉及的问题不甚了解,这个项目令我豁然开朗:不管你出于什么目的,认证的问题对于它都没有困难。可能你想要实现无需认证,或者事件限制游客访问。可能用户有邮箱和密码要分享,或者可能你有JWTs(译者注:JWTs是一个很棒的身份验证机制。它们给你一个结构化的方式声明用户和它们可以访问的内容,可以对它们进行加密和签名来防止在客户端进行篡改。)要处理。Stitch以一种简单的方式体现他。在当今时代,快速发展和急剧变化对于公司的生存至关重要,任何达到目的可靠捷径都是值得一试的。
再次发明轮子(虚伪的意图)
我仍然记得次见到Redux代码时很好奇他的黑魔法,究竟他是怎么成功的工作的。使用*cript工具时,只见黑魔法不断增加。因为任何好的假设都会告诉你,这种工具与可用的现有解决方案完全不同。告诉你我对此感觉很好,因为我不需要花费一周的时间用于调整Redux架构的各种设置。使用Redux actions不是什么黑魔法,事实上挑选一个适合需求的库才是我的信心所在。
选择正确的方法
信心是一把双刃剑。如果没有信心,你很难真正的相信任何行动的过程。但是信心太多,突然间你会忽视潜在的更简单和更具扩展性的方案。在我之前对许多*cript Redux框架进行逆向的努力中,我开发了一种模式,我开始非常喜欢创建行为和相关状态管理减少器。我会把行为的创建器和减少器写在一起,然后将相关的减少器合并起来,管理一个普通的应用程序状态的局部切片。突然,我的独立行为和相关减少器可以很好的共存。当做一些业余项目时,我没有一个适当的状态管理的长期计划,因此处理逻辑来修改我的代码库周边应用程序状态切片没什么问题。
尽管我非常喜欢我的类型安全构建器方法用于快速和脏动作/减速器定义,但我很快意识到随着状态的发展,管理状态在许多不同地方的变化的开销变得困难。 我认为使用已经实现了这些目标的现有框架比自己的框架更加符合项目的利益。 我仍然喜欢我的实用程序,但是不断重新评估您每天可能使用的工具和方法,以保持您和您的生产力,这一点非常重要。
学习新的语言
在学习MongoDB的时候,我正在尝试Go和JavaScript技术栈,这是我之前涉猎很少的两种语言。显然,专业扩展我的工具集的机会对我来说是明智的; 我一直很感激有机会成长为我所聘用的角色。 这是一种后天的感觉,一直让自己陷入不舒服的境地。 然而,在一天结束时,我真的相信这是一条自我改善之路。 六个月前,我从未想过要做一个致敬奶奶特殊烹饪方法的食谱网站。 现在,我的家人有办法方便地查找如何制作她的长热锅(译者注:这种食物有点像虎皮辣椒,把辣椒做熟切开,里面放上火腿、芝士和胡椒粉)和大名鼎鼎的鸡排。
MongoDB的臭鼬工厂
(译者注:臭鼬工厂(英语:Skunk Works)是洛克希德·马丁公司开发项目(Advanced Development Programs)的官方认可绰号。臭鼬工厂以担任秘密研究计划为主,研制了洛马公司的许多飞行器产品,包括U-2侦察机、SR-71黑鸟式侦察机以及F-117夜鹰战斗机和F-35闪电II战斗机、F-22猛禽战斗机等。)
每年在指定的一周内,我们称之为“臭鼬工厂”,工程师们可以在他们定期安排的节目中休假,以接受他们喜欢的任何项目。 我期待着今年的“臭鼬工厂”在这个网站上开始我的下一次专用迭代。
我想研究样式和颜色,并在JS中引入某种形式的CSS。 我还想引入具有“家庭”属性用户的想法,自动查看其中发布的新食谱,并邀请其他人做为“朋友”或“新成员”加入。
“臭鼬工厂”是个佳时间点,我可以和同事分享热衷的项目并找到具有志同道合之人。
我在磨练建立网站的所有技能之外,好的奖励是奶奶和我的家人在网站完成后的食谱。 她很喜欢看到它,我们甚至在晚上准备了一份晚餐食谱,正好赶上圣诞节。
译者:张冲