Skip to content

ppaydd/problem_count

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 

Repository files navigation

#ACM 刷题数查询——专为ACMers打造

关于UI

等待完善

关于core

支持查询题量的OJ如下

1.HDOJ
2.POJ
3.NOJ
4.LightOJ
5.SGU
6.URAL
7.Acdream
8.BZOJ
9.FZU OJ
10.ZOJ
11.CodeForces

一些注意事项

    1.由于LightOJ和NOJ没有提供直接通过用户名查询用户信息(尽管可以通过用户ID,但是我们无从得知)的接口,所以对于这两个
OJ,采用的方法是每隔一定时间将数据爬取到本地数据库,每当需要查询,直接从本地数据库查询即可;其他OJ均是实时查询。
    2.暂时只支持查询一个账号,未来将会支持更多的账号,届时将会才用多进程/线程的方式提高效率。
    3.core程序可以脱离WEB端直接运行,即直接运行run.py即可(当然需要带上一个用户名)。
    4.config文件里是需要用的一些配置,包括了正则表达式、各个OJ用到的URL,还有数据库配置等。
    5.如果你把程序clone到本地,那么需要先补充数据库的配置并且确保你本地已经有了mysql数据库,然后需要创建对应数据库并且新建2个表count_lightoj、count_noj,表结构如下
    >  id int not null primary key auto_increment,
    >  username varchar(250) not null,
    >  ac_number int not null
    然后首先运行spide_to_db这个程序,耗时大约10分钟,注意获取Lightoj你必须输入一个lightoj的账号 。
    6.程序运行需要一定的时间,目前看来大约需要40s。 
    7.整个程序基于python3。
    8.由于网络原因,程序运行过程中难免会出现数据获取失败的情况,另外由于LightOJ和NOJ采取的策略,你获取的数据不一定百分百正确。  
    9.LightOJ需要登录才可查看信息,程序中已经提供一个公开的使用账号。
    10.Codeforces计算AC题数时,将组队比赛中所AC的题也都算上了,但是同一道题AC多次只计算一次,因此结果应该有少许偏差。

程序所做优化

    1.程序运行时间主要花费在IO等待,所以对于单个用户的查询,可以采用多线程。
    2.多个账号查询时,采用多进程。

服务器端预期

    1.定时更新LightOJ和NOJ的数据,可以设置为1天1次。
    2.最大并发数取决于CPU核数。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 85.8%
  • HTML 7.9%
  • CSS 3.4%
  • JavaScript 2.9%