V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 外包信息请发到 /go/outsourcing 节点。
• 不要把相同的信息发到不同的节点
zuroc
V2EX  ›  酷工作

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

  •  
  •   zuroc · 2013-03-25 22:41:21 +08:00 · 5644 次点击
    这是一个创建于 4297 天前的主题,其中的信息可能已经有所发展或是发生改变。
    42BTC.com python笔试题 ( 选择最佳回答者奖励的 价值 420 RMB 的 比特币 )


    ** 前言 **

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

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

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

    前端后端都需要 ( 简历-> [email protected] )


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

    所以 , 现在我出一个基于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 [email protected] 沟通

    参考文献 :
    在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. 演示的历史仓库地址

    发送到 [email protected]

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

    记得以前Channel要付费的,从教主这个帖子中才发现如今已经由了免费流量,顺手写了一个Demo,有空的同学继续完善
    https://bitbucket.org/darcyliu/broadcast
    wenbinwu
        10
    wenbinwu  
       2013-03-27 02:01:09 +08:00
    我是来看价值420的代码的 =D
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2354 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 15:52 · PVG 23:52 · LAX 07:52 · JFK 10:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.