我为女友做了一款App

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我和女友总是找不到合适的电影看。通常,这个过程是这样的:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我:你想看什么电影?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"女友:我不知道,你想看什么?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我:我们看《金刚大战哥斯拉》吧"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"女友:不,扎克·斯奈德的《正义联盟》怎么样?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我:不,太长了。《米纳里》怎么样?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"女友:不,太严肃了。......怎么样?"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"所以,你懂的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我们通常每周看1到2部电影,所以经常这样……"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"这种事不只是发生在我和女友身上。以前,我和朋友真的花一个多小时选电影。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"问题很简单:我们不知道自己愿意看哪些电影。我甚至不知道愿意看什么电影。有什么解决办法吗?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作为一名软件工程师,我以技术为生。我可以做一些东西来解决这个问题。但前提是,我要先研究一些,人们解决这个问题的方法。而我在推特上发现了有用的信息。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我很兴奋,这似乎是个好主意:如果你和你的另一半都有一款App,你可以向左或向右滑动流媒体上的电影。当你们找到的电影相匹配时,它会让你们知道。—— c a i t l i n"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"这并非一个原创想法,但我之前从未做过手机应用,所以我认为这将是一个很酷的学习体验。除此之外,我还可以用它来解决我和我关心的人之间的实际问题,这非常特别。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"如何开发一款手机App?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在基础层面上,我知道自己需要:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"处理API调用的后端服务器"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"一个实际渲染应用的前端客户端"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"一个存储电影和用户爱好的数据库"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"一个用于存储图片的对象存储解决方案"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"既然是第一次研究手机应用开发,为什么不学习各个层次上的新东西呢?"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"前端:React Native"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我不想编写原生代码,因为……,我没时间做那个。跨平台开发显然更理想。据我所知,我的选择要么是React Native,要么是Flutter。我在之前的一些项目中用过React。虽然我不是React专家,但我至少了解一些它的基本知识。所以,我决定使用React Native。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"值得注意的是,我用了"},{"type":"link","attrs":{"href":"https:\/\/docs.expo.io\/?fileGuid=1nTXNuk6H50PbHMt","title":"","type":null},"content":[{"type":"text","text":"expo"}]},{"type":"text","text":"来处理实际的构建和部署过程。它为我节省了很多时间!"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"后端:express.js"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"对此,我没有太多要说的。我以前从未用过Node.js,但经常听说它,所以我想尝试一下。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我很惊讶,它竟然如此容易使用!如果你理解了API的工作原理,就很容易深入下去。而且,我第一次编写了自己的中间件——太棒了!节省了我很多时间!"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"数据库:MongoDB"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我以前只用过SQL数据库,所以我想也应该尝试一下面向文档的数据库。编写模型非常简单,但是我很难理解MongoDB的查询和聚合流。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我认为,查询还可以优化,但是,我能让它工作就不错了。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"Blob存储:Azure Storage"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我选择用它的唯一原因是,每月可以获得100美元的Azure免费信贷。说实话,我认为它的文档很差,交互也很难。不过,这是可行的,但有些情况,我仍然不清楚应该如何处理。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"获取数据"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我编写了一个自动化的网络爬虫,它用新电影填充我的数据库。你知道世界上只有大约50万部电影吗?我可以在数据库中添加进所有电影。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"TimeLine"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"构建App"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"开发应用花费的时间最少,这让我很沮丧。我花了2-3周时间才把应用构建到能运行的地步(除了一些小Bug的修复)。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"结果给我留下深刻印象。我能够:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"看看我和我的朋友想看什么"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"成立一个小组,看看我们愿意看什么"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"根据服务(Netflix、Hulu等)过滤和查看电影"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"按类型过滤和查看电影"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/0e\/0ef49cb8de0320983269d1303ea22037.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/b0\/b0165d58d40101ceabb0bc6f15a587d1.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"通过应用商店审批"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"这个过程非常糟糕。我必须一次性支付25美元才能进入谷歌Play商店,每年支付100美元才能进入苹果应用商店。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"此外,还有一些愚蠢的要求。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我需要至少提供X张截图,而且还指定了每张图的分辨率。最重要的是,我等了很长时间才获得批准。这个等待过程真的让我很痛苦。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"苹果,谷歌。让我发布应用吧,你们已经掏空了我的口袋!"}]}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"市场营销"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"虽然这个App最初是为我和我的朋友们准备的,但是如果我必须花钱开发这个应用,也许能吸引更多用户,把钱赚回来。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Reddit:和往常一样,我把它传遍了reddit,并得到一些相当积极的反馈,在r\/sideproject上的多个帖子获得大约100个赞。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Facebook:我把创意分享给大学的朋友们,还在facebook上发了帖子。他们很支持我,帮我推广这个应用。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"此外,我发现一个名为loom的服务,并录下我对所有注册朋友的感谢。这不仅可以让他们见到我,还能鼓励他们与朋友分享。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"后续"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"目前,WeWatch大约有400个用户,这比我以前做过的任何东西都要多!上周末,我的女友让她的朋友们和我们一起过周末,我们要找部电影看。这是我的机会:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我:我们用WeWatch吧"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"女友:不,那太费时间了。我们就看《空中大灌篮》吧!"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"看来,我还要做些改进。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"原文链接:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"https:\/\/jerseyfonseca.com\/blogs\/wewatch?fileGuid=1nTXNuk6H50PbHMt"}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章