42BTC.com python笔试题 ( 选择最佳回答者奖励的 价值 420 RMB 的 比特币 )

2013-03-25 22:41:21 +08:00
 zuroc
42BTC.com python笔试题 ( 选择最佳回答者奖励的 价值 420 RMB 的 比特币 )


** 前言 **

https://42btc.com 是一个比特币交易平台 , 属于42区( http://42qu.com )旗下产品

因为项目发展势头不错 , 现在需要招人

同时 , 还有有电信云计算的公有云项目外包(就是帮电信做一个卖vps的解决方案) , 也需要人

前端后端都需要 ( 简历-> 42btc.com@gmail.com )


我一直相信 , 分配并完成一个小项目 , 是考察一个人水平的最好方式

所以 , 现在我出一个基于gae的小项目 (也是42btc需要的一个功能 ) , 作为招人的笔试题

并将从完成的人中 , 选出一个最佳回答者, 奖励的 420 RMB (用bitcoin结算, 你可以在http://42btc.com 出售兑换成RMB )

前端就直接给自己个人博客作为作品展示吧


应用使用Python 基于Google App Engine开发

因为GAE被墙 , 您可以使用 smarthosts ( https://code.google.com/p/smarthosts , 需要自己配置自己的APP的域名) , 然后用https 即可访问

需求如下

** 不过, 先插播一条广告 **

北京 2013 Python聚会

地点:北京地铁10号线亮马桥附近京信大厦1234。地图见:http://www.qfpay.com/contact/
时间:2013年3月30日 14点 开始

主题:
1。构建自动化的编译测试android,ios应用(Mengyang li)
2。凤翔 - 类parse的数据平台分享 (liucong)
3。自动化django admin (sshwsfc)
--

4。SSO的单点登录解决方案 (张沈鹏 , 就是我)

预告片 :

写新网站, 要写 注册 / 登录 / 微博&豆瓣&QQ登录(还有绑定邮箱) / 发送激活邮件 / 找回密码 / 更改邮箱 / 上传头像 / 剪裁头像 / 绑定手机 / 填写地址 / 用户设置自己的个性网址 ...

然后 , 写新网址, 所有东西重新折腾一遍 , 所有来围观的新用户也跟着重新折腾一遍 …

终于, 有一天, 你累, 心老了, 不想再这样折腾了

于是, 你需要 SSO的单点登录解决方案 以及 跨网站的用户身份系统 -- 俗称 通行证

其实 , 我觉得 , 通行证可以成为类似评论 ( 类似 disqus.com ) 的 网站无关的插件式解决方案

.... … … … … … … … …

我想 , 这是我人生中最后一次写用户帐号系统


广告结束

** 项目需求正文 **

API

ticker (股票实时的牌价)

描述

此API是一个基于Google App Engine channel 的 长连接
牌价的意思就是股票交易市场那些红红绿绿的价格

输出数据 :

{"0-1": [1364213624, 266255757, 122982587944, 46500000000, 46500000000, 49500000000]}

数据解析 :

{
"0-1" # 买进的货币 - 卖出的货币 , 货币用数字用数字常量表示
:
[
1364205583, # 时间 (精确到秒)
#以下数值为整数 , 除以 100000000 后为真实数据
266255757, # 1 当日累计交易量 , 单位为 买进货币
122982587944, # 2 当日累计交易量 , 单位为 卖出货币
46500000000, # 3 当前成交的价格
46500000000, # 4 当前买进的最高报价 (单位为 卖出货币)
49500000000, # 5 当前卖出的最低报价 (单位为 卖出货币)
]}

货币的数字常量 : 0 - 比特币 , 1 - 人民币

** 演示作品要求实现以下功能 **

1. 首页
这是一个方便测试页面
有一个表单
可以输入上面除时间外的五个参数
然后点击提交 , 会像所有连接着的客户端推送数据

2.
客户端会用一个access_token为标识符创建长连接

3.
客户端每隔1分钟需要发送一个心跳包给服务器
否则服务器端会断开链接(移出send_message的队列)
断开链接的时候 , 服务器会给客户端发送最后一条错误消息
{“error”:{“code”:1, msg:”connection timeout”}}

4.
为了方便使用 , 我们同时在github维护一个官方的 ticket 仓库保存所有的牌价历史

我们会在一台linux服务器上启动一个进程
通过socket主动去连接这个google长链接
当收到新数据的时候, 会追加当日的牌价文件中(一行一个) 比如 2013-03-01.txt
然后commit , 这样用户就可以很容易的拿到所有的历史数据

最后, 每分钟可以commit多次, 但是最多只push一次(如果没有更新不push, **首次更新立即push,方便调试**)
push 请单独开一个线程 , 不要阻塞接受数据的线程

同时commit的时候, commit的注释请直接用这条数据
这样写浏览器插件的同学就可以通过直接访问类似如下的
https://api.github.com/repos/torvalds/linux/commits
链接拿到当前数据
PS:
这个链接还可以通过 jsonp 调用
https://api.github.com/repos/torvalds/linux/commits?callback=xxxxxxx
这样可以接着跨域嵌入到网页中
同时还接受以下参数
* since
Optional ISO 8601 Date - Only commits after this date will be returned
* until
Optional ISO 8601 Date - Only commits before this date will be returned

如何写socket请参考 https://gist.github.com/zuroc/5237007
操作git请用 http://www.pygit2.org/

7.
最后 , 请用Gogole Doc为其编写文档


** 成品演示 : **

启动linux的github同步进程
在你的app首页输入一个数据 , 然后提交
然后 , 刷新 github 能看到数据更新 和 相应的commit

代码请遵循 PEP8 规范
https://code.google.com/p/zhong-wiki/wiki/PEP8

如果需求有不清楚的地方 , 请+我的qq 375956667 或 gtalk zsp042@gmail.com 沟通

参考文献 :
在GAE上使用服务器推(Channel API)+聊天室示例
http://955.cc/cDFd

Channel API Overview (Python)
https://developers.google.com/appengine/docs/python/channel/overview?hl=en

** 付费方式 : **

请将您的

1. 代码地址 ( 代码放在 bitbucket.orggithub.org 上 )
2. 演示的gae的空间地址
3. 演示的历史仓库地址

发送到 42btc.com@gmail.com

我们会于4月底前, 评选出最优雅清晰的实现整合到42btc.com中
被选择的那个版本 , 将支付作者价值420元的bitcoin
( 价格以付费前一天 http://42btc.com 的最终平均价为准 )
你可以在42btc.com上卖到它(兑换为人民币) , 或是自己收藏着玩
5640 次点击
所在节点    酷工作
10 条回复
december
2013-03-26 10:24:42 +08:00
现在还有人玩这个啊,教主你是后知后觉吗?
nkliwenjian
2013-03-26 11:10:28 +08:00
果断吐槽一下吧。
1. 编程规范里面的就近原则知道吧,定义变量的地方应该跟使用变量的地方尽可能的靠近。你竟然还在中间插广告。
2. 整个文章的排版乱七八糟的。
3. 写代码就算了,还规定各种技术选型啊之类的东西,强迫别人搭环境?殊途同归好么,把自己的需求提炼成一个核心的骨干,让别人表达出来那意思就好了。
likexian
2013-03-26 11:22:31 +08:00
看着这乱七八糟的排版,还有东一句西一句的描述我就蛋痛。
fanhan
2013-03-26 21:01:31 +08:00
@likexian 哈哈,院长又在吐槽了
chinshou
2013-03-26 22:32:58 +08:00
420元真是一笔巨款啊
SharkIng
2013-03-26 22:45:24 +08:00
给我感觉就是想让多个人以应聘的名义帮自己公司写一个小程序,然后最多付420元,这个比在猪八戒上话1000多招人写高明多了啊。
Mac
2013-03-26 22:50:33 +08:00
成功的三要素:坚持,不要脸,坚持不要脸。
66450146
2013-03-26 23:18:34 +08:00
这样好像没有直接提供固定面值的 BTC 有吸引力啊。。。
darcy
2013-03-27 01:43:25 +08:00
42btc是运行在裸域下的,并且加了证书,我很好奇教主咋跟GAE关联起来的,反向代理?
加上Chanel功能,必然凭空增加很多压力,开个子频道直接连GAE?

记得以前Channel要付费的,从教主这个帖子中才发现如今已经由了免费流量,顺手写了一个Demo,有空的同学继续完善
https://bitbucket.org/darcyliu/broadcast
wenbinwu
2013-03-27 02:01:09 +08:00
我是来看价值420的代码的 =D

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/64016

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX