个人编程风格_为个人利益而编程

个人编程风格

James PondUnsplash拍摄的照片

免责声明 :这篇文章并不旨在关注与编程有关的任何道德方面。 它的目的不是教育性的,也不是鼓舞人心的。 这只是一个示例性的故事,说明编程如何成为简化日常生活的有用技能,以及对工作的感激之情。

在我获得学士学位的大学中,内部Web系统存在相当多的性能问题,这些问题在课程注册期间达到顶峰。 在每个学期开始时,学生会提早起床并尝试登录注册系统。 由于系统无法一次处理所有学生,因此只有一部分幸运的学生可以登录并注册他们的课程。

对于普通学生来说,情况是他们想要登录的课程在他们能够登录时就已经满了。这之所以发生,主要是因为要么课程的能力很有限,要么不允许该学生参加由于他们的专业学位而在当天开课,或者已经参加过该课程的人正在为尚无法登录的朋友们保留一个位置。 只有当登录尝试次数减少时,系统才能按预期运行。

对于大多数注册系统表现不佳的学校来说,这可能是一个标准问题。 但是,问题在于,无法注册课程会妨碍那些试图注册更高级别课程的学生,或者更糟的是那些试图毕业的学生。 这些人最终不得不参加暑期课程,或者至少将其再延长一个学期。

几天前的几天,我收到了姐姐的信息,姐姐是同一所大学的新生。 她告诉我,一个学生创建了一个应用程序,该应用程序可以跟踪该课程有多少个可用位置,并向希望发送任何空缺通知的学生发送电子邮件。 它不能解决无法登录的问题。但是,在实践中,人们会立即被告知可用的地点并可能注册他们的课程,从而使他们能够按时完成学业。 为此,开发人员所需要的只是课程注册号列表以及学生的电子邮件地址。

对于您的同学来说,当然是一件很不错的事情。

对? aa

显然,他为每门学生要学习的课程索取50土耳其里拉(截至撰写本文时,为50 TRY约合10美元)。 例如,如果学生想学习心理学课程,数学课程和应用数学部分的座位,而这是数学课程的必备条件,则他需要向开发者支付30美元,这是在目前的土耳其经济中,可观的钱。

更糟糕的是,不能保证在那个过程中会有空缺。 如果没有人放弃课程,那么运气不好。 ¯\ _(ツ)_ /¯

尽管我尊重创建应用程序所花费的时间和精力,以及决定将其作为一项有利可图的服务来提供的服务,但我仍然认为,每门课程收取10美元的费用,无非是剥削了除了支付能力外别无选择的人该费用只是为了能够注册某些课程。

不用说,当我姐姐问我是否可以帮助她向开发人员支付3个以上课程的费用时,我感到非常恼火。 星期六晚上我很平静。 我想我会看一下如何构建这样的应用程序:真的有多难?

我需要研究几个关键事项:

1)了解如何从课程注册网站获取课程座位信息

2)能够定期(即每x分钟)检查可用性信息

3)向学生发送有关课程的可用性的信息性电子邮件

由于我在单身汉期间使用相同的注册系统已经有几年了,所以我已经知道在哪里可以找到我所需要的信息:课程的总容量,已经注册的人数以及剩余的可用座位数。 绕过几个链接后,事实证明,通过简单的Web抓取就可以管理它。

对此的唯一挑战是调查课程页面HTML布局。 在弄脏了一段时间之后,我能够使用Node.js以及npm软件包cheeriorequest-promise来刮擦必要的信息。 这个过程有点丑陋,但是由于蜘蛛侠特许经营权的这些明智话语,我才能够发挥自己的实力,然后屈服于冒名顶替综合症:

糟糕HTML伴随着糟糕的文档查询。
本·帕克

收到必要的信息后,我必须确保可以定期处理该信息。 注册需求量大的课程是一场争分夺秒的竞赛,因此我们越频繁地检查是否有空缺,就越好。

在Google上快速搜索到的我该如何做的想法使我想到了计划工作 。 简而言之,它是一个实用程序,用于计划所需的命令以特定的时间/间隔运行。 我将在文章末尾列出一些资源,以帮助了解有关cron作业和美味佳肴的更多信息,以编写运行它们的命令。

要将脚本添加为cron作业,请在我的Ubuntu终端中运行

crontab -e

…并且我添加了以下几行,因此脚本每分钟运行一次(请注意,#用于注释一行)

# Uncomment the line below before registration starts, so the script can run every minute
# */1 * * * * node ~/Desktop/Code/robin/crawl.js

crawl.js脚本基本上会加载CRN列表以及要通知的电子邮件地址。

课程注册编号(CRN)列表

检索相应课程的网站后,将存储总座位数,已用座位数和可用座位数,以进行进一步比较。 在下一分钟,脚本将检查与前一分钟是否存在任何差异。 如果没有任何变化,则不会通知学生(或向其发送垃圾邮件)。

我要做的最后一步是查看如何从节点脚本发送电子邮件。 我以前曾接触过node-mailer ,因此创建了一个Gmail帐户来发送电子邮件后,我继续使用该软件包,如其文档所示。

形成将传递到nodemailer的电子邮件对象

加上简单的缓存机制,以便仅在检查的最后一分钟有实际更改时才发送电子邮件,整个过程大约花了我4-5个小时。

星期一早上,真相的时刻到了。 我曾要求在课程注册期的正式开始时间之前提供电子邮件地址和课程注册号的列表。 开始前一分钟,我取消了启动定期检查的路线的注释。

到第二天,由于电子邮件通知,我姐姐得以注册5门课程,这使她不仅可以注册成为其专业学位的核心先决条件的课程,还可以根据自己的喜好更改时间表。 基于这次成功的执行,我感到有更多的动力去进行此应用程序的下一步,即将其公开并免费与学生共享。

是我真正喜欢成为软件开发人员的一部分。 我遇到了我认为有问题的东西,或者可以更好地处理。 我做了一些研究,将一些非常基础的东西放在一起,然后观察它的工作。

在大约3年的专业经验中,我发现有机会从事许多玩具项目,同时还从事全职工作。 就像这个故事一样,我处理的大多数玩具项目都是出于当下的需要。 他们中的大多数甚至没有太过挑战。 一切归结为进行研究,并一路努力学习良好做法。

通过构建这些项目,我学到了不同的技术和设计模式,但是我最欣赏的质量就是深入研究并提出更好的问题。 这是否使我成为一个更好的软件开发人员还是有争议的,但是我觉得这些素质会影响我的日常生活。

我喜欢这样的事实,我可以出于好奇或只是为了娱乐而练习我的手Craft.io品,并为我或他人带来积极的价值。

我喜欢失败了。 我主要是因为以下事实而失败:越失败,我做得越少。

我热爱好奇,可以激发我的决心,也可以以此为生。

这些因素和许多其他激励因素帮助我自信地鼓励人们开始编程。

我喜欢我的工作。

感谢您阅读我的(第一篇)文章!

如所承诺的,下面是我在探究cron时发现有用的一些链接。

https://cron-job.org/cn/ 一种用于免费执行cron作业执行的服务

此处 可以找到一篇很好的文章,以了解有关该概念的更多信息

https://crontab.guru/ 一个帮助可视化cron命令输出的网站

翻译自: https://hackernoon.com/programming-for-personal-benefits-662f8469f430

个人编程风格

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值