AJAX初尝试——ACM/ICPC类比赛气球管理系统
很早之前做过一个,白板没界面,20秒暴力刷新,数据库每个team一个n列的对应n个题目的标记项,只能对单个比赛暴力把全部user_id导入单独的气球表(也就是cid=1000用这个表的话,cid1001就不能用)。
后台效率且不说了,对单个比赛而言,最不舒服的就是页面浏览到某个位置,标记某个team气球已发,为了把数据存入数据库,页面刷新,直接回到顶端去了。诸如此类很多不舒服的地方。
今年省赛说什么也不能用PC^2了,没有专门的裁判团队,一个人管PC^2要累死去。用起OJ,气球系统也要勉强上台面吧。。
————————————
重新把气球表做成了:[编号] | [用户ID] | [比赛ID] | [气球标记](用int的二进制位)
系统后台增加Private比赛的时候,Private参赛者权限信息(有用户ID对应比赛ID)同时导入气球表。
·1· 开始还纠结当修改Private权限时候气球表要怎么对应增删条目,一层for循环+NOT EXISTS (SELECT xxx)似不够高效。后来发现还是自己的sql太小白了,INSERT+SELECT是可以从一个表批量导入另一个表的。相对而言DELETE就简单许多了。保留了[气球标记]不为0的信息,以免Private权限再次修改又把这个ID重新加进来发多气球。
早前做的气球系统是用原OJ的Rank修改的,这次细看了一下Rank代码和数据库的关系,重写了一遍出题信息的读取,气球榜做成了静态的,不按Rank排序,这样也许方便工作人员看气球和队伍的对应关系吧,跳来跳去的发气球应该不太舒服。
写AJAX用的GET方式,后台简单判断了一下气球管理员的SESSION,修改气球标记或返回错误信息。datatype用的json,毕竟这个用着好舒服,json_encode一下就echo,直接拿来做关联数组。
·2·更新气球榜的时候遇到了纠结。之前预想AJAX局部更新很爽,真正写起代码的时候才发觉其实后台还是要查询完整出题信息的,要和前端交互,就又要把完整信息发给前端,前端和表格每个<td>判断变化,还是直接修改,好像复杂度差不多哎。。不过最大的问题是,一开始是用和后台差不多的代码生成了table,然后对每个<tr>直接暴力jquery().html("xxx"),然后修改气球标记的click事件就 失!效!了!这么奇葩的事情,用 on(click, function(){...都不行。纠结一下午,最后想难道真的是这样能破坏页面吗。就把代码改成了一个一个去更新<td>,最后竟然好了。
当然也添加了待发气球的数量提醒。
说到这个数量题型,打算做成随窗口移动,这样随时能看到,然后根据情况来看是否新增加一个待发气球,就自动把窗口移过去吧。省赛12号就开始了,这两天还得把代码打印的方案搞出来,气球这个用起来感觉还不错,先放一放。

AJAX初尝试——ACM/ICPC类比赛气球管理系统的更多相关文章
- HDU 5876 Sparse Graph 【补图最短路 BFS】(2016 ACM/ICPC Asia Regional Dalian Online)
Sparse Graph Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)To ...
- R语言爬虫初尝试-基于RVEST包学习
注意:这文章是2月份写的,拉勾网早改版了,代码已经失效了,大家意思意思就好,主要看代码的使用方法吧.. 最近一直在用且有维护的另一个爬虫是KINDLE 特价书爬虫,blog地址见此: http://w ...
- 2014嘉杰信息杯ACM/ICPC湖南程序设计邀请赛暨第六届湘潭市程序设计竞赛
比赛链接: http://202.197.224.59/OnlineJudge2/index.php/Contest/problems/contest_id/36 题目来源: 2014嘉杰信息杯ACM ...
- ACM ICPC 2015 Moscow Subregional Russia, Moscow, Dolgoprudny, October, 18, 2015 G. Garden Gathering
Problem G. Garden Gathering Input file: standard input Output file: standard output Time limit: 3 se ...
- 【转】lonekight@xmu·ACM/ICPC 回忆录
转自:http://hi.baidu.com/ordeder/item/2a342a7fe7cb9e336dc37c89 2009年09月06日 星期日 21:55 初识ACM最早听说ACM/ICPC ...
- 【转】ACM/ICPC生涯总结暨退役宣言—alpc55
转自:http://hi.baidu.com/accplaystation/item/ca4c2ec565fa0b7fced4f811 ACM/ICPC生涯总结暨退役宣言—alpc55 前言 早就该写 ...
- hduoj 4712 Hamming Distance 2013 ACM/ICPC Asia Regional Online —— Warmup
http://acm.hdu.edu.cn/showproblem.php?pid=4712 Hamming Distance Time Limit: 6000/3000 MS (Java/Other ...
- 2016 ACM/ICPC Asia Regional Dalian Online 1006 /HDU 5873
Football Games Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- Java in ACM/ICPC
目录 Java在ACM/ICPC中的特点 在ACM/ICPC中使用Java需要注意的问题 Java与高精度计算 1.Java在ACM/ICPC中的特点 Java的语法和C++几乎相同 Java在执行计 ...
随机推荐
- 模拟Vue之数据驱动1
一.前言 Vue有一核心就是数据驱动(Data Driven),允许我们采用简洁的模板语法来声明式的将数据渲染进DOM,且数据与DOM是绑定在一起的,这样当我们改变Vue实例的数据时,对应的DOM元素 ...
- gulp css 压缩 合并
//导入工具包 require('node_modules里对应模块') var gulp = require('gulp'), //本地安装gulp所用到的地方 concat = require(' ...
- 可视化库-seaborn-回归分析绘图(第五天)
1. sns.regplot() 和 sns.lmplot() 绘制回归曲线 import numpy as np import pandas as pd from scipy import stat ...
- 值得推荐的C/C++开源框架和库
值得推荐的C/C++开源框架和库 转自:http://www.cnblogs.com/lidabo/p/5514155.html - 1. Webbench Webbench是一个在Linux下 ...
- oc NSLog输出格式大全
本文的内容是总结了一下iOS开发中NSLog输出格式大全,虽然比较基础,但有总结毕竟会各位正在学习iOS开发的朋友们一些小小的帮助. %@ 对象 %d, %i ...
- linux基础命令:
linux基础命令: 显示 echo 输出我写的内容 ls 查看当前目录的文件 pwd 查看当前目录 ifconfig 查看网卡信息 grep 过滤 -v 取反 -n man 查看命令的帮助信息 md ...
- 【Java】JVM(六)虚拟机字节码执行引擎
一.概述 执行引擎是虚拟机中最核心的部分之一, 虚拟机自己实现引擎,自己定义指令集和执行引擎的结构体系. 二.栈帧 栈帧包含(1)局部变量表.(2)操作数栈.(3)动态链接.(4)方法返回地址.(5) ...
- Mysql count(1) group_concat 高级用法(count 过滤条件,group_concat过滤条件)
1.官方文档: count:COUNT(expr) [over_clause] https://dev.mysql.com/doc/refman/8.0/en/group-by-functions.h ...
- Docker三剑客之 Compose
简介 Docker-Compose 是 Docker 的一种编排服务,是一个用于在 Docker 上定义并运行复杂应用的工具,可以让用户在集群中部署分布式应用. 通过 Docker-Compose 用 ...
- css字体加粗
参考 https://zhidao.baidu.com/question/2138403197991538308.html font-weight:bold;