6分钟阅读

引言

本周,我参加了我的第一次黑客马拉松 — 一个为期两天的在线活动,名为 开发以颠覆 吸引了约一百支1-4人的团队参加。经过近二十小时的编码、大量学习和几个不眠之夜后,我开发了 SurgeLingo,一个颠覆性的语言学习工具 — 为我赢得了"最佳个人黑客"奖、加拿大科技峰会的门票以及Beats耳机等奖励。以下是我学到的经验、关于产品的介绍,以及最后的一些建议。

关于SurgeLingo

这最初发布在 黑客马拉松提交页面.

灵感

作为一名语言学习者,当我处于初学者和中级阶段时,我总是发现很难找到可理解、容易获取的内容。大多数外语资源要么太长、太难,要么很难获得。

我创建SurgeLingo来解决这个问题。它使用一个包含数百万句子的开源句子数据库,根据用户选择的设置(如语言、难度和标签)提供个性化的句子推送。这些句子会逐渐变得更难,只需点击一下就可以学习和存储。

在线方面解决了可访问性问题,个性化响应解决了难度问题,200字符的限制使得使用SurgeLingo学习变得轻松自如,无论是在公交站等候一分钟,还是在家里集中学习一小时。

它的功能

从以下来源获取句子 Tatoeba,SurgeLingo创建了一个巨大的带标签句子数据库,称为"surges"——因为通过使用该平台,用户在学习中"迅速前进"。这些句子通过自然语言处理被简化为未变位形式,并可以与用户已知的单词进行比较,以显示个性化结果。

用户可以上传自己的单词表,例如从频率列表中获取,以生成这些已知词汇。每当他们查看句子时,可以点击红色的未知单词(他们现在已经学会的)将其添加到数据库中 — 或者在学习后直接将整个句子标记为已知。

为了更专注的学习,用户可以改变返回句子的难度(例如,从简单,即句子内容的90%是已知的,到困难,即只有70%是已知的)。他们还可以通过指定句子中包含的单词、标签、作者等来搜索特定类型的surge — 这对于学习词汇来说非常完美 在上下文中. 仅仅从闪卡学习并不能真正帮助你成长,除非你在上下文中看到新词(就像SurgeLingo提供的那样),因为这将巩固其含义并展示其用法。

下面你可以看到一个surge的例子。 alt

此外,用户通过撰写和提交自己的surges来为社区做出贡献。

技术栈

尽管时间很短,但这是我曾经承担过的最雄心勃勃的项目之一。

这个 前端 是用Nuxt和Vue 2构建的。TailwindCSS用于样式设计,而模块 nuxt-authnuxt-axios 用于实现用户身份验证和后端请求的流畅处理。

这个 后端 使用Flask Python微框架构建,并使用PostgreSQL数据库存储用户信息、句子('surges')等内容。

这个 nltk Python包,一个自然语言处理库,被用来处理surge句子和用户词库的 词干提取,这是一个将单词还原为词根形式的过程。这使得系统能够支持具有变位的语言。还使用了一些其他扩展Flask功能或允许内容生成的包。

挑战

Nuxt和Flask是一种罕见的组合,因此我不得不深入研究许多问题,以协调后端API和前端。

其中最明显的是用户身份验证 — 我不得不设置一个基于cookie的隐式刷新系统,而我在前端用于身份验证的库 nuxt-auth 并非为Flask设计。因此,我不得不定制模块配置,并采用一种较少人知的JWT令牌传递方法。

当然,另一个挑战是时间问题。独自工作并在周末有一些活动,平衡项目开发是一个挑战。我不得不为一些不是优先考虑的页面留下"即将推出"的内容,比如"关于我们"或用户资料页面。

我学到了什么

我学到了很多关于文字处理的知识,因为我必须对多种语言的所有单词进行词干提取,以便句子分析能够很好地进行。

同样,我探索了一些以前不了解的通过Flask进行PostgreSQL管理的方面,比如 BaseQuerys、高级筛选等等。这些新获得的知识肯定会在未来派上用场。

建议

作为黑客马拉松新手,很多东西对我来说都很陌生——以下是我希望在开始之前就听到的一些事情。

专注于核心功能

我花了大量时间(数小时)来构建未注册用户的主页——结果在视频或照片中除了顶部20%以外甚至都没有展示出来。这减少了我用于开发网页应用核心功能的时间——当我在构建核心功能的某些部分遇到困难时,失去的时间让我感到压力很大。

因此,我的第一个建议是从零开始构建,不要考虑那些评委可能根本不会看的装饰性内容。

我甚至留下了一些404页面和空链接(比如用户设置)——不太可能有人会看到它们。

制定行动计划

这对任何项目都是显而易见的,不仅仅是短期黑客马拉松项目——重要的是要知道 什么 在开始构建之前,你要构建什么以及如何构建。我在周末中途创建了一个按时间顺序排列的待办事项清单,将任务摆在眼前加快了开发过程,并帮助我识别错误。

生动描述产品

大多数黑客马拉松都会有一个主题——专注于你的作品如何解决那个主题/问题,尽可能使用引人注目和富有情感的词语。当然,不要 撒谎 关于产品——但适度就好。

此外,我认为填写完整的提交表格也会产生奇效。我写了几页——我觉得花在这上面的半小时比再花半小时写一些函数更有价值。

不要害怕寻求帮助

黑客马拉松的组织者非常热情和乐于助人——即使对于我一些明显的初学者问题也是如此。虽然存在竞争氛围,但其他参赛者通常也很乐意提供帮助,回答一两个与黑客马拉松相关的简短问题。

牢记时间

时间框架的要求包括填写提交详情、 制作视频 (我真的低估了这需要多长时间,制作演示文稿、录制好视频并上传花了将近90分钟),观看开幕式——当然还有睡眠时间。

我的完成时间非常紧迫,这导致了错误和压力的出现。我建议至少在最后期限前两个小时完成所有编码工作——将剩余时间用于寻找可能在视频中出现的错误、设置录制软件、拍照、撰写报告等。

结论

总的来说,构建这个项目很有趣,尽管时间框架造成了一些压力——这可能反映在视频参赛作品中。我在开发SurgeLingo的过程中学到了很多,并认为它有真正的未来潜力——我正在认真考虑继续开发它。

参加黑客马拉松是一次令人惊叹的经历,第二天早上得知我赢得了一个类别的奖项——以及一些很棒的奖品,这让整个经历更加特别!

我希望阅读这些内容并查看这些提示对你有所帮助。

留言