Unibook 课本交易平台 (Unibook Textbook Exchange)
发布于 8 年前 作者 ginward 4093 次浏览 来自 分享

花了点时间做了个小App,面向北美的用户,可以交易(Used)大学教科书。

App Store: Unibook (App Store)

Website: Unibook - University Textbook Exchange

架构是Nginx(Proxy)+NodeJS+Redis+MongoDB+Objective C

第一次使用 lets encrypt的免费HTTPS证书服务。感觉还是不错哒。证书服务开放开源有利于更多的网站转为HTTPS链接,这样会减少类似域名劫持的风险。还有一点值得点赞的是,iOS的plist可以禁止非HTTPS访问。

MongoDB终于不用担心SQL注入了。因为MongoDB会自动把String转为BSON,再存储。不过Javascript注入还是有可能的,因为MongoDB是允许执行特定的JS代码的。所以还是要过滤特定字符。有一个叫做 Content Filter的开源代码我觉得写的挺好的。在JS层面解析JSON,监测到Object和Function类型后再过滤,而不是过滤所有的字符。当然,可能还是有漏洞,这个就慢慢地去学了。

Redis的Index还是要技巧的。这一次感觉搜索的功能做的不大好,没有做好关键词的联想,只是单纯地搜索课程代码。比如CSC411, 如果搜索CSC41, 就搜索不到了。

Nginx的反向代理也是第一次使用。本来想用Node Cluster, 但感觉那玩意儿维护起来没有Nginx方便。 亲测了下,发现1Core+1G RAM+1Mbps的阿里云ECS大概撑到1M/S就撑不住了。使用一台Macbook创建1000个并发连接,服务器基本就被阻塞了,而且是在我已经开了三个worker的情况下。当然在用户量少的情况下(most likely so)还是不用往上scale的。当然scale也很方便,直接horizontally scale就好了。

本来想用Socket做一个Chat,但是觉得太费时间,而且人们已经有facebook微信了,所以最后干脆使用每个大学生都有的学校官方email作为验证方式和沟通渠道。比如@harvard.edu, 只有Harvard的学生才能注册和使用。闲杂人等一律屏蔽掉。

iOS的屏幕size简直是五花八门了。这一次光是适配iOS的屏幕就花了几个小时,而且还做不到完美适配iPhone4S以及iPad。有那么一瞬间我觉得苹果已经lost its way了, 就像上个世纪乔帮主出走Apple后的状态一样,乱糟糟的,急于变现Cash Cow. 但是Objective C写起来还是很爽的,可能是因为它是C的关系吧。

另外,发现从北美访问阿里香港的服务器延迟会有点高。而且在启用redis的时候,阿里云ECS的安全组策略并没有发挥作用,把redis的端口向全球开放了,最可笑的是我居然用telnet连上了。后来赶紧绑定本机。

其实做这个App的主要是是练手,而且想做一个实用型用的App。之前写的几个App,都觉得过于关注商业模式,有点浮躁、浮夸了。因为是在Canada写的所以Logo上还画了个小枫叶🍁(是用真的枫叶拓的哦)

这一次不想改变世界。就这样静静地在网站上挂着吧…

写了个英文简介,自己从Quora手动转过来的。自己转自己的,不算抄袭吧~ If you are a University student, you can check this site: Unibook - University Textbook Exchange I developed this App myself, using a month or so. It is what I would call “workable App” - nothing too fancy, just a platform for students to exchange second hand textbooks. You enter the course code to search - such as “CSC411” - and the platform will return a list of the textbooks with the course code on sale. All users will be verified with their official University email address. For example, email addresses ending with “@utoronto[DOT]ca” will be able to register as a student in the University of Toronto. I am still testing it - and currently there are only three universities enabled. You can always shoot me an email to if you would like to add your university on the list. (jinhua.wang@hereips[DOT]com) Unibook (App Store)

2 回复

赞,学习了

回到顶部