如何以非常怪异的方式说“谢谢”

最近,我们在Tooploox参加了一次内部黑客活动。 该活动从选择5个最有趣的项目开始,然后分成负责每个项目的团队。 我们(Jeremi,Sebastian和Karol)每天都是iOS开发人员。 只有一个项目(亚洲人在我们之前的文章中描述过一款VR游戏)不包含某些移动应用,因此我们可以加入我们想要的任何团队。 我们考虑过尝试一些新的东西,一些我们不太了解或根本不知道的东西。 因此,当我们得知我们的同事Bartek需要一些后端和tvOS开发人员时,我们毫不犹豫地决定帮助他。 最后,我们的团队由Bartek(我们的创始人和设计师Magda(我们的特殊任务女人)和Swift学徒,Sebastian(第一次是tvOS开发人员)以及Jeremi和Karol(iOS开发人员)组成,他们希望尝试编写后端。

什么是感恩节?

感恩节是一个小型应用程序,它可以帮助Tooploox的人们向其他人说声谢谢。 在我们公司,我们感谢许多事情,从很少的事情开始,例如为早餐制作美味的沙拉到更大的沙拉,例如准备会议。 我们的应用程序必须满足一些其他要求:

  • 它应该尽可能简单-我们不想考虑如何感谢某人,我们只想这样做
  • 表示感谢应该快捷方便-我们希望可以很方便地进入可以感谢某人的地方
  • 每个人都应该能够加入感谢信—在许多情况下,一个以上的人想要感谢某人的某件事,因此其他人也应该很容易地加入感谢声
  • 应该以一种吸引人的眼神来表达谢意-越多的人看到我们的谢意,越好

考虑到这些要求,我们开始计划我们的应用程序。 首先,我们需要选择要使用的技术。

谢谢你到处的一切

我们从寻找一种可以让我们以简单快速的方式表示感谢的工具开始。 幸运的是,Tooploox的每个人都使用Slack,因此我们决定为此创建Slack命令。 该命令非常简单,看起来像这样: \thx @bartosz.bak for great designs 。 真的很简单,不是吗?

该解决方案还有一个更大的优势-其他人可以使用附加的按钮来响应Slack消息,因此每个人都可以表达他/她的赞赏。

引擎盖下

正如我之前提到的,我们没有任何后端工程师,但是我们有两个人想了解有关它的知识。 由于Jeremi是唯一拥有构建后端软件经验的人,因此他是选择技术的人。 因此,我们开始使用Flask开发第一个真正的后端-Flask是Python最流行的Web框架之一。 作为后端的主机,我们使用了Heroku。 对于一个经验丰富的后端开发人员来说,我们应用程序的技术细节可能不是很有趣-它只是PostgreSQL数据库,带有一些用于与Slack API和tvOS应用程序通信的端点。 有趣的是,我们获得了有关此类应用程序如何工作的知识,以及开发前端(移动,电视或网络)与后端应用程序之间的区别。

首先,开发方法完全不同。 开发移动应用程序时,您会使用一种强类型的语言(Swift,Java,Kotlin或Objective-C)和一个编译器,该编译器会捕获您的大多数简单错误。 您不需要太在意名称,因为如果您输入错误,编译器会检测到该错误并阻止您运行代码。 在Python中,许多概念都是基于整个社区使用的约定,而不是由框架和编译器强制执行的一些严格规则。 最初,要适应它是非常艰巨的挑战。

但是它确实有一些优势。 我们认为,最大的工具是可用于Python后端开发的工具。 您要解码/编码JSON数据吗? 没问题,我们有jsonify库。 或者,也许您想在SQL数据库中保存一些数据? 只需使用SQLAlchemy,定义模型并将数据保存在两行代码中即可。 烧瓶框架很棒。 但不仅如此。 后端开发中还使用了其他一些工具,这些工具对我们有很大帮助。 我们最喜欢的是ngrok,它使我们能够在本地测试与Slack的通信,而无需将我们的代码连续发送到Heroku服务器。

除此之外,我们发现后端开发人员遇到的问题与我们的问题大不相同。 例如,在我们的前端世界中,我们很少关心数据。 通常,我们只是在屏幕上显示它们,然后它们消失了。 在后端,处理数据至关重要。 您需要仔细准备数据库,以便能够高效地获取数据。 然后,您需要注意此数据的安全性和一致性。 另一个问题是在远程环境中运行代码。 开发iOS应用程序时,将设备放在办公桌上(或者甚至在笔记本电脑中放置模拟器),然后单击“运行”按钮,然后即可测试应用程序。 但是,如果您开发后端应用程序,则需要将其部署到服务器上,注意远程数据库等。首先,对于我们来说,习惯它有点麻烦。

让我们看看谁谢谢你

该项目的主要问题之一是用于电视应用的技术。 最初的想法是只创建一个Web应用程序,然后使用Raspberry Pi或任何其他能够打开该应用程序的设备。 唯一的问题是,我们希望拥有一种通过遥控器控制应用程序的方法。 当然可以在Raspberry Pi上做到这一点,但是将远程限制为仅限于Web浏览器要困难一些。 这就是为什么我们决定使用第四代Apple TV的原因-它支持第三方应用程序(可以用我们心爱的Swift编写),并具有允许控制该应用程序的遥控器。 我们谁都没有为tvOS编写应用程序的经验,因此我们渴望尝试使用Swift编写新的东西。 不幸的是,事实证明编写tvOS应用程序与编写iOS应用程序几乎相同。 我们既感到悲伤又高兴,因为这不是一个很大的挑战,但是我们可以快速行动并充分利用iOS开发中的所有经验。 我们甚至做了一些实验并切换了项目
从tvOS到iOS,所有已编译和应用程序的代码都运行良好(除了UI不适用于iOS设备)。 当然,两个平台之间会有一些差异。 tvOS由远程而不是触摸屏控制,因此与控件和屏幕上的视图进行交互存在差异。 它的主要部分是焦点引擎,它管理着焦点视图(焦点视图是在给定时间可以与之交互的视图)如何变化。

该应用程序本身包含主屏幕:

  • 屏幕上显示以前的“感谢”列表,该列表还会模态显示新的感谢
  • 显示统计信息的屏幕-谁最感谢,总共有多少人感谢,等等。

尝试新的东西!

老实说,很长时间以来,我们从编程中获得的乐趣并不多。 Hackaton是使您的想法成真,与通常不合作的人打交道的好时机,但这也是尝试新事物,学习新事物并找出其他团队的同事所面临问题的好方法。

我们也鼓励您检查我们的运球照片,也可以在其中找到质量更好的图像和视频作为附件。