GithubHelp home page GithubHelp logo

pyconchina / lucky Goto Github PK

View Code? Open in Web Editor NEW

This project forked from pmcamp/lucky

1.0 16.0 5.0 1.8 MB

Lucky Draw+log in for PyConChina from PMCamp Conference

Home Page: http://cn.pycon.org

CSS 38.31% JavaScript 36.62% Python 4.31% HTML 20.76%

lucky's Introduction

PyCon Lucky

PyCon China 2014 活动抽奖工具

写在最前

最好在使用之前提前根据现场环境进行调试

Lucky受到现场:

  • 屏幕
  • NoteBook
  • Browser
  • etc..不固定因素影响

建议:

  • 4:3分辨率
  • Mac OS or Win7/8
  • Chrome

目录

lucky
|____19wu_data.csv      //19wu导出数据
|____19wu2lucky.py      //生成数据工具,针对19wu数据
|____js
| |____application.js   // 主要功能js
| |____luckydata.js     // 主要数据js来自19wu2lucky.py
| |____lib
| | |____jquery-1.8.0.min.js
| | |____rand.js        // 主要随机算法
| | |____unslider.min.js
|____stylesheets
| |____style.css        //主要样式文件
|____images             // 二次处理过得logos
| |____....png
|____README.md

抽奖工具说明

导入数据

  • 使用19wu2lucky.py用19wu导出数据生成抽奖数据

    • 如果没有经过签到处理,需要人工处理为csv格式签到码,门票,姓名,Email
    • 人工将赞助商信息填写到export.csv 签到码,门票留空 且 姓名=来源 & Email=手机号
    • 人工将蟒人赞助信息填写到export.csv 签到码,门票留空 且 姓名&Email保持一致
    • python 19wu2lucky.py /path/.../export.csv
  • 使用checkin2lucky.py用checkin数据生成抽奖数据

    • 签到后点击导出保存checked.txt
    • checkin2lucky.py /path/.../checked.txt

开始抽奖

  • 使用 chrom 浏览器打开 index.html
  • 点击按钮或按空格键来滚动抽奖者和抽奖
  • 如果中奖人不在现场,单击展示的名字区别标记

注意事项

  • 通过签到导入数据,然后进行签到,签到完成后导出结果,整合结果,再进行一步导入到抽奖工具中
  • 不通过签到,直接导入报名参会的信息到lucky,直接使用19wu2lucky.py导入即可
  • 两种方法选取一种即可

签到工具说明

注意! 还未可用!

面板功能

面板功能完成签到数据导入和导出

导入数据

签到工具使用前需要分别导入部分数据, 对应的数据文件会由组委会提供给会场志愿者。

签到工具处理的数据文件都是按照一定规则约定的csv文件, 如果会场志愿者拿到的数据文件(可能是xls文件)不符合下面的规则, 可以使用Excel或WPS简单处理之后另存为csv文件。

通用规则

  • 使用UTF-8编码,CLRF作为行分隔符
  • 保留头行(header row),导入文件时程序会判断该行

数据格式

各文件的数据格式(也是header row的内容)如下

  • 普通购票:签到码,门票,姓名,Email
  • 赞助商赠票:手机号,来源,计划参会城市
  • 个人捐赠:姓名,邮件,昵称

导出数据

导出文件遵从导入文件的通用规则, 其数据格式为签到码,门票,姓名,Email, 其中签到码门票为了格式统一而填充的伪数据。


折腾过程

141114-lucky-mobile-coding.jpg(JPEG 图像,480x854 像素) - 缩放 (88%)

有非常髙大上的移动开发情景出没!

鸣谢

首先要感谢Beijing的志愿者@xch&@imbugs

以及同为技术组的@Todd Gao同学

随机算法依旧继承@lxneng前辈的

优化

在逻辑上优化了几点:

  • 抽中的在界面明显位置进行展示

  • 抽中的在之后的抽奖中不再中奖

    • 不在场的区别并标记,按照中奖处理
  • 根据Name/Email进行展示

    • Email 进行了 hidden 保护个人隐私很重要

为了省去大部分时间调整人名单,添加19wu2lucky.py

  • 根据19wu提供的报名表,直接生成./js/luckdata.js无需其他操作。

折腾

最头痛的时赞助商logo

  • 赞助商分级别
  • 不同级别赞助商多少不同
  • logo大小不比例统一

占据将近50%来po赞助商logo

使用unslider.js轮播组件来展示logo最好不过!

^.^ thx 致谢

为了统一logo大小,进行人肉PS! 统一 200 x 100

遗憾

由于任务接到时已经接近大会举行,所以准备比较仓促,很多细节优化不能够做到更好 签到任务又是迫在眉睫,技术组应急反应迅速完成签到功能,也有部分功能不够完善.

Ending

个人水平比较挫,各路支援/如此折腾的机会也是难得,感谢PyCon China!

使用过程中任何问题CallMe!

lucky's People

Contributors

7c00 avatar chencoyote avatar lins05 avatar lxneng avatar miclle avatar xen0n avatar zoomquiet avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lucky's Issues

支持离线签到

背景

  • 无论使用什么报名/门票系统
  • 都没有什么靠谱的离线签到支持
  • 而天朝特别是学校的网络,根本不可能支撑的了平滑的网络签到!

分析

  • 抽奖的前提是,已知现场到达了多少人,以减少无效抽中机率
  • 而签到是基于事先报名/门票,以及少量现场报名
  • 所以, 抽奖就是签到的反面,当然可以兼容代码 ;-)

方案

  • 相同导入数据, 不同界面
  • 保持 赞助商轮播
  • 接收唯一 签到码
  • 标定到场
  • 用专用工具,签到结束后:
    • 导出 cvs 数据备用
    • 转换为 抽奖用数据,加入到页面数据中

抽奖结果快速导出

背景

抽奖的一般流程:

  • 现场抽奖+合影
  • 会后针对性通知/提醒
  • 追踪奖品使用/回顾报道收集

分析

一般性的问题在:

  • 现场中抽情况复杂:
    • 中奖人不在
    • 代领
    • 多人中奖
    • 放弃领取
    • ...etc
  • 而现场情景紧张,无法方便的记录下来所有情况
  • 导致会后只能根据录像/录音 进行回顾,对比中奖数据,进行后期处置

方案

  • 精确厘清所有现场情况
  • 定义为最多5种状态的标记
  • 对应到5种快捷键
  • 在界面/数据上都进行标定
  • 事后,可以快速导出为 cvs 数据
    • 以便可以快速导入 Docs 等数据管理文件中进一步使用

数据导入专用工具

背景

根据往年的经验:

  • 每年报名/门票 服务系统都不同,导致抽奖人员数据格式不统一
  • 每年赞助商的 logo 变化比较大, 已经无法统一进行静态展示

分析

但是,有不变的:

  • 现象人员用来抽奖展示的只有: 姓名|邮箱|照片
  • logo 永远是尽可能的全部展示/轮播

方案

  • 明确最终可用数据格式, 给出一个可以快速定制,清理 csv 格式输入数据的 CLI 工具
  • 可以自动完成:
    • 指定有效字段
    • 处理中E混杂
    • 合理截断展示信息
    • 截取/生成 唯一性ID 用以抽奖后导出使用

[思考]离线签到的多机并行

背景

分析

  • 静态的 cvs 样数据, 转换为 JSON 数据加载到网页
  • 同样的接口, 就可以将 cvs 静态数据变化为 RESTful 本地服务
  • 多种客户端同时签到
  • 嘦确保:
    • 识别重复签到
    • 记录首次签到客户端编号
    • 多机或是单机签到数据可快速合并导出为抽奖用数据

方案

建议根据简单优先来考察:

  • 单点服务,多点签到:
    • 本地局域网络
    • 启动一个数据服务
    • 其它网页使用无认证 RESTful 接口进行读写签到数据
  • 多点服务,多点签到,定期合并
    • 本地局域网络
    • 每个签到客户端,都能启动一个数据服务
    • 通过 UTP 协议,进行快速广播数据变化
    • 根据时间戳,进行签到唯一性识别

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.