我热爱编程但不喜欢数学

In a fit of close-to-graduation fear for the future, I decided to look at the few things that I knew how to do and delve deeper in them. Among these, I have been lucky to dabble in cloud software and providers during my last internship at RevZilla.

为了适应即将毕业的恐惧,我决定看一些我知道该怎么做的事情,并深入研究它们。 其中,我很幸运在RevZilla的最后一次实习期间涉足云软件和提供商。

While most of the production work was in Google Cloud Platform, I spent a lot of time trying to figure out how to start a Jupiter Notebook from an EC2 instance of AWS. Having never touched AWS before that, it was, put lightly, a nightmare.

虽然大部分生产工作都在Google Cloud Platform中进行,但我花了很多时间试图弄清楚如何从AWS的EC2实例启动Jupiter Notebook。 在此之前从未接触过AWS,这简直就是一场噩梦。

But brains work in mysterious ways, and the frustration and horror that ensued made me want to learn AWS more and more after that.

但是大脑以一种神秘的方式工作,随之而来的挫败感和恐惧使我希望在此之后越来越多地学习AWS。

Fast forward to June 2020, freshly graduated from my Masters, I decided to start using Twitter a little bit more to keep up with the (sorry) state of the world and the state of my favorite technologies.

快进到2020年6月,我刚从我的硕士班毕业,我决定开始使用Twitter多一点,以跟上世界(对不起)的状态和我最喜欢的技术的状态。

I am signed up for my AWS Certified Cloud Practitioner and freeCodeCamp released a series of full-length videos by Andrew Brown on how to prepare for the AWS exams. The #AWSCertified hashtag enticed me and, after passing my CCP, I started actively tweeting about my Cloud journey and being retweeted by the #100DaysOfCloud bot.

我已经签约了我的AWS认证云从业人员, freeCodeCamp发布了Andrew Brown的一系列完整视频,介绍了如何准备AWS考试。 #AWSCertified主题标签吸引了我,并且在通过CCP后,我开始积极发布有关我的云之旅的推文,并被#100DaysOfCloud机器人转发了。

Among the bot’s retweets, I came across this tweet from Forrest Brazeal.

在该漫游器的转发中,我从Forrest Brazeal那里看到了此推文。

The Cloud Resume Challenge dares you to build a personal resume/portfolio website with a visitor counter.

Cloud Resume Challenge敢于让您建立带有访客计数器的个人简历/作品集网站。

The only catch is to deploy it fully through a number of AWS services, all while learning to correctly set up Serverless applications, CI/CD pipelines, networking, security and more.

唯一的收获是,通过学习正确设置无服务器应用程序,CI / CD管道,网络,安全性等等,可以通过许多AWS服务完全部署它。

The challenge’s first requirement was to pass the CCP exam, and with that already under the belt, I decided to jump into it.

挑战的第一个要求是通过CCP考试,而在此基础上,我决定参加考试。

July 1st was the first day of my challenge, and this is the story of what I learned.

7月1日是我挑战的第一天,这就是我学到的故事。

前端 (Front-End)

The challenge starts with a HTML/CSS version of your resume. I have had most of my programming experience between Python and C++, working on Machine Learning and Data Science applications.

挑战始于简历HTML / CSS版本。 我在Python和C ++之间拥有大部分编程经验,致力于机器学习和数据科学应用程序。

At the start of the quarantine, during the last quarter of my degree, I decided that it was time to expand on my software engineering knowledge and I decided to pick-up the MERN stack.

隔离开始时,在我学位课程的最后一个季度中,我决定是时候扩展我的软件工程知识了,我决定使用MERN堆栈。

While I did not even touch the MEN portion of the stack for this challenge, React came in handy as I decided to use Gatsby.js for static site generation. I built the whole frontend during one coffee-filled all-nighter because of excitement and insomnia. TailwindCSS is my favorite CSS framework by far and it made it surprisingly easy to build a responsive, mobile first interface. I am not an UI/UX expert (or amateur, or novice…) but for the sake of the challenge it did fit the bill.

尽管我什至没有碰到这个挑战的堆栈中的MEN部分,但是当我决定使用Gatsby.js进行静态网站生成时,React派上了用场。 由于兴奋和失眠,我在一个充满咖啡的通宵工作中建立了整个前端。 到目前为止,TailwindCSS是我最喜欢CSS框架,它使构建响应快速,移动优先的界面变得异常容易。 我不是UI / UX专家(或不是业余爱好者,还是新手……),但出于挑战的考虑,它确实符合要求。

Check out the full thing at antoniolofiego.com
在antoniolofiego.com上查看全部内容

Once I built the webpage, I needed to host it somewhere to make it publicly accessible. The good people at AWS blessed us with Amazon Simple Storage Service (S3) and its static hosting capabilities.

建立网页后,我需要将其托管在某个地方以使其可以公开访问。 AWS的优秀人才为我们提供了Amazon Simple Storage Service(S3)及其静态托管功能。

No one likes long URLs, so the next step was to purchase a custom domain from Route 53 and obtain an SSL certificate from Amazon Certificate Manager. All of the content is served by CloudFront, AWS’s CDN and is secured using Origin Access Identity (OAI). Setting up the S3 bucket as origin was easy, but correctly arranging the DNS routing was definitely more thorny.

没有人喜欢长URL,因此下一步是从Route 53购买一个自定义域,并从Amazon Certificate Manager获得SSL证书。 所有内容均由AWS的CDN CloudFront提供 ,并使用Origin Access Identity(OAI)保护。 将S3存储桶设置为原始服务器很容易,但是正确安排DNS路由肯定更棘手。

I used GitHub as my version control hosting and created a CI workflow with GitHub Actions to build my Gatsby site and upload it to the correct S3 bucket on push.

我使用GitHub作为版本控制主机,并使用Gi​​tHub Actions创建了CI工作流程来构建我的Gatsby网站,并在推送时将其上传到正确的S3存储桶。

Everything was going great! I was on Day 2 of my challenge timeline and I felt great.

一切都很好! 我当时处于挑战时间表的第二天,感觉很棒。

And that’s where the dark descent started…

那就是黑暗后裔开始的地方……

后端 (Back-End)

Welcome to the beginning of my rabbit hellhole! The next step was to create a simple visitor counter using REST API calls made to API Gateway, which would trigger a Lambda function that updates and returns a counter stored in a DynamoDB table.

欢迎来到我的兔子地狱的开始! 下一步是使用对API Gateway进行的REST API调用创建一个简单的访客计数器,这将触发Lambda函数 ,该函数更新并返回存储在DynamoDB表中的计数器。

If that wasn’t enough, all this had to be done using SAM templates.

如果这还不够,那么所有这些都必须使用SAM模板来完成。

Fitting emotions.
合适的情绪。

SAM is the AWS Serverless Application Model, a framework to build Serverless applications using a YAML file.

SAM是AWS无服务器应用程序模型,该框架使用YAML文件构建无服务器应用程序。

In AWS’s words,

用AWS的话来说,

… the latest version SAM CLI makes serverless development easier for developers.

…最新版本的SAM CLI使开发人员更容易进行无服务器开发。

While SAM does indeed centralize serverless stacks in a single entity, which is definitely easier to track and organize, the existing documentation for it is… cryptic.

尽管SAM确实确实将无服务器堆栈集中在单个实体中,这无疑更容易跟踪和组织,但它的现有文档却是……很神秘。

SAM templates transpile into CloudFormation templates, which is another AWS Service that deserves a certification on its own and there are not a lot of good resources on how to go from Level 1 to Level 10, as they assume everyone is already at Level 11.

SAM模板转换为CloudFormation模板,CloudFormation模板是另一个AWS服务,需要单独获得认证,并且关于如何从1级升级到10级的信息不多,因为它们假定每个人都已经处于11级。

Fortunately, a member of the Cloud Resume Challenge community, Chris Nagy, recently posted an incredibly human-friendly version of a simple SAM application. So human-friendly, in fact, that even AWS-own Jeff Barr posted it on his Twitter feed.

幸运的是,Cloud Resume Challenge社区的成员Chris Nagy最近发布了一个非常人性化的简单SAM应用程序版本。 实际上,它非常友好,以至于甚至AWS拥有的Jeff Barr都将其发布在他的Twitter feed上。

After banging my head on the SAM template for a couple more days I managed to have a working application that deployed the correct services in an appropriate fashion.

在SAM模板上敲了几天之后,我设法有了一个可以正常工作的应用程序,它以适当的方式部署了正确的服务。

For the Lambda function, I used Python 3.8 and Boto3, its AWS SDK. The function updates the DynamoDB table and returns a CORS-enabled response that my frontend will be able to fetch and use. Everything was tested using pytest and the service mocking package moto.

对于Lambda函数,我使用了Python 3.8和Boto3(其AWS开发工具包)。 该函数更新DynamoDB表并返回启用了CORS的响应,我的前端将能够获取和使用该响应。 一切都使用pytest和服务模拟包moto进行了测试。

I built my own custom CI/CD pipeline that creates a Python environment, gives me programmatic access to AWS services, tests my Lambda functions and deploys the SAM stack, again using GitHub as my repo hosting service and GitHub actions. The obvious, but always important thing to remember is to use GitHub Secrets instead of committing or hard-coding your AWS credentials in a codebase.

我构建了自己的自定义CI / CD管道,该管道创建了Python环境,使我能够以编程方式访问AWS服务,测试Lambda函数并部署SAM堆栈,再次使用GitHub作为我的回购托管服务和GitHub动作。 要记住的明显但始终重要的事情是使用GitHub Secrets,而不是在代码库中提交或硬编码您的AWS凭证。

I finally updated my frontend with a new component, VisitorsCounter, that makes a POST request to the appropriate API Gateway endpoint and displays the counter on the bottom of the page.

最后,我用一个新组件VisitorsCounter更新了前端,该组件向适当的API Gateway端点发出POST请求,并将计数器显示在页面底部。

The final output of my challenge can be seen at https://antoniolofiego.com.

我的挑战的最终输出可以在https://antoniolofiego.com上看到。

我学到了什么以及下一步 (What I learned and where to next)

I thoroughly enjoyed this challenge and I have been able to learn so much from all the deep dives in documentation, StackOverflow posts and AWS subreddit.

我非常喜欢这个挑战,并且能够从文档,StackOverflow帖子和AWS subreddit的所有深入研究中学到很多东西。

However, I would be a liar if I did not mention the incredible support received from the Cloud Resume Challenge community and Discord channel. I would like to thank Forrest for creating it, as I believe that, by bringing together so many driven and dedicated folks, he accomplished twice as much as he hoped to accomplish while creating this challenge.

但是,如果我不提及从Cloud Resume Challenge社区和Discord渠道获得的令人难以置信的支持,那我将是个骗子。 我要感谢Forrest创造了它,因为我相信,通过召集这么多有干劲和执着的人们,他完成了挑战时实现了他希望完成的两倍。

The #100DaysOfCloud mascot is

我热爱编程但不喜欢数学_云恢复挑战或我如何学会不再担心并热爱云相关推荐

  1. Lovesource博士:或者我是如何学会不再担心和热爱开放的

    我曾经写代码. 我不再了 造成这种情况的原因很多,其中包括我不太擅长的事实. 需要澄清的是,我认为我擅长编写代码, 1但我不太擅长编写代码. 2事实证明,我在其他方面非常擅长,所以我的职业生涯3朝着不 ...

  2. 我是如何学会不再担心和喜欢SQL中的NULL的

    应使用适当的SQL函数来避免为数据串联.比较.ORDER BY或GROUP BY等操作获得不需要的输出.您不应该试图阻止NULL值--相反,以克服其限制的方式编写您的查询. 该NULL值是一种表示未知 ...

  3. 我热爱编程,但我讨厌这个行业

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 作者简介:Tamic,程序猿,业余时间玩玩开源,聊聊技术,写写博文,有个人微信公众号「开发者 ...

  4. 学编程会拉低数学成绩,巴黎大学跟踪1500个小学生得出结论

    "怎么培养数学逻辑思维?来点编程试试?" 大概这是很多人的既有认知,毕竟感觉程序员们的数学都挺好的. 巴特,反转来了. 来自巴黎大学的研究人员发现,小学生改用编程课学数学后,对成绩 ...

  5. python编程要懂英语吗_学习编程必须要会英语吗?

    原标题:学习编程必须要会英语吗? 很多刚开始想学编程的人都问这问那,比如"我英文差能学编程吗?"."我数学差能学编程吗?". 之前给大家分析了数学与编程之间的关 ...

  6. 【520大礼包】《Scratch趣味编程进阶——妙趣横生的数学和算法》免费送啦!

    快!关注这个公众号,一起涨姿势- 内容简介 本书将Scratch作为一门程序设计语言看待,通过大量数学和算法方面的编程案例,为广大中小学生提供了一本编程进阶的参考教材.本书根据案例类型分为12章,共有 ...

  7. 学编程要先学习数学吗?

    需要,不过对于编程而言,更重要的是兴趣. 这个事情是这样一个逻辑: 人们普遍对数学有偏见,造成了一种社会心理,导致很多人实际上无法去理解和喜欢数学. 编程中的数学,本质与前者是一样的,但是没有被无知的 ...

  8. 你敢说你热爱编程,你热爱学习吗?

    "如果是一个不进行任何形式的创作,也没有许多成文的分析总结,甚至连各个社交平台的好友(粉丝)都不多,只是大声呐喊着"我真的很热爱..."的人,在我眼里是很可疑的.至少他在 ...

  9. c++中stringstream_文史哲与艺术中的数学_智慧树章节答案

    文史哲与艺术中的数学_智慧树章节答案更多相关问题 His mother told me that he ______ read quite well at the age of five. A) sh ...

最新文章

  1. python设计选择题代码_《Python程序设计》试题库
  2. 缓存初解(四)---Ibatis的缓存配置+Ehcache
  3. python基础学习[python编程从入门到实践读书笔记(连载二)]:外星人入侵项目
  4. 加载pdf_Java 插入附件到PDF文档
  5. Linux 进程间通信:管道、共享内存、消息队列、信号量
  6. Codeforces Round #628 (Div. 2) E. Ehab‘s REAL Number Theory Problem 巧妙的质因子建图
  7. PHP 实现Session入库/存入redis
  8. java 字符串索引从0开始_无限字符串中的字符串的第一个索引-Java
  9. verilog宏功能中dds信号发生器_什么是相位相干性?了解生成相位相干射频信号的三种配置方法...
  10. 11.消息摘要算法之MD5
  11. 业务需求访谈中需要注意的重要法则(转)
  12. 夺命雷公狗---微信开发54----微信js-sdk接口开发(1)之快速入门
  13. OpenNESS NTS 的前世今生
  14. Mac上挂载移动硬盘出现“Read-only file system“问题
  15. 服务器怎么直接访问数据库文件路径,如何在服务器中找到数据库文件路径
  16. x64dbg 自带脚本系统
  17. Android数字证书
  18. lammps胶体输出的日志文件
  19. 2022广东省安全员B证第四批(项目负责人)上岗证题目及在线模拟考试
  20. 已解决ValueError: 4 columns passed, passed data had 2 columns

热门文章

  1. 关于windows任务管理器,进程界面,应用列表空白问题
  2. 帆软添加外部echarts插件不生效
  3. 四川大学计算机学院赵伟,2006级优秀学子留影
  4. CS专业的道路上有哪些课程要学?
  5. 展晓凯:“零经验”的我与唱吧从零到四亿
  6. python接口自动化实战(框架)
  7. Type I and Type II errors
  8. RocketMQ一:快速入门和集群架构
  9. 如何在手机上恢复删除的照片?两种恢复的方法
  10. 变身小小科学家 南瓜科学让孩子爱上实验