欢迎访问
讨论版列表 - 本站建设 - 主题数: 15 | 文章数: 32 | 管理员: admin

本站建设

版面 | 文摘区 | 马克区

文章数: 2 | 分页: << 1 >>
admin
[回复] [修改] [删除] [返回版面] 1  
作者: admin, 讨论版: 本站建设, 发表时间: 2013-12-13 02:56:41 PST
标题: 关于本站的历史
关键字:

本站是一个编程练习的在线评测系统(Online Judge). 产生的背景, 如同现在市面上流行的不少面试宝典一样, 是当下IT大公司面试考算法题潮流的产物.

关于本站的历史, 先要提到leetcode.com. 这是由mitbbs站网友, 在google工作的1337c0d3r建立的面试编程练习网站, 那里最早的讨论文章发表于2010年2月, 最早的OJ题目加于2011年3月. 2012年我听说这个网站, 12月开始做题, 觉得挺不错, 对强化编程能力很有帮助. 到一月底题做得差不多了, 然后用一个多星期业余时间做了个OJ的核心功能. 一是出于兴趣, 二是觉得有些题上面没有, 如果自己做一个想加什么题加什么题就比较方便. 但当时没有继续.

到2013年夏天,leetcode网站由于访问量大速度变得常常很慢, 甚至难以登陆. mitbbs的待字闺中版有不少人抱怨. 7月中旬, realbeyond号召做一个中文的online judge, 一时间应者云集. 我就给我的OJ做了一个网站的壳, 需要中文验证码的, 放上去. 然后开始加题. 但是开始加第一个题花了5个小时, 主要时间用在写输入输出及比较的处理函数上. 意识到一个人时间有限, 在mitbbs的待字闺中版发信希望得到帮忙. 但是没有什么回应. 我想到输入输出及比较的处理函数是基于数据类型. 如果一个题目输入有多个参数, 组合甚多, 似乎每个题都要单独对待, 这样工作量巨大; 但如果采用正交处理, 化整为零, 各个击破, 则可以写一套通用的API函数来解决. 然后又花了一周, C++和Java各写了2000行程序的API class, 从此可以复用各个数据类型的输入输出比较函数. 这样加新题速度提高了5-10倍, 即便一个人加题, 也基本不是问题了. 之后认识到光是一个OJ, 没有人气没有讨论, 用起来会很枯燥的, 也不利于交流提高. 所以又花两周加了个BBS.

所有代码, 除了OJ的编辑器(编程序的那个黑框)用的是开源的ACE(http://ace.c9.io), 全都是从头写起的. 这样虽然一开始速度慢, 但所有细节一清二楚, 日后要加什么新功能易如反掌. 而且我一直有这个想法, 积累做网站的代码, 以后要做什么新网站, 可以迅速上线. 所以这也算给了我一个机会, 有动力去做. 做这个项目过程中, 从架构到编程细节, 全部从头搞定, 也算是一般工作里难得的体验.

现在这个网站非常灵活. 比如虽然是中文的壳, 但是改变一个设置变量, 可以立即变成英文的. 在现有架构上, 加新的语言版本也很容易, 提供一套关键词翻译即可. BBS是仿照的mitbbs的格式, 加新版只需要加一张数据库表就可以了. 如果要改成其它论坛的形式, 现有收集的参数应该大致够, 花一些时间改动界面即可. OJ现在是仿照leetcode的样式, 但改成别的界面也不是问题.

在homecox上线之后, 很快有别的网友开发的类似网站上线, 分别是itint5.com和imagong.com. 有意思的一件事, 是好象这三个网站的开发者的姓都一样?

Itint的开发者是flexme, 从国内申请到google总部的工作, 有几个月的空档, 正好做这个东西. Itint应该是基于wordpress的网站模板, 讨论版基于开源的OSQA(http://www.osqa.net/), 网站放在Alibaba的服务器上. 用户体验比较好, 速度快而稳定, 支持C/C++/Java/Python, 有相当数量的新题, 一些功能比较有新意. 后面看似乎leetcode也有借鉴Itint的功能. 

Imagong的开发者是imagong, 应该是回国工作数年的博士, 现在大约在上海. Imagong为帮助国内程序员出国工作而建立, 除了提供相关信息的不少专题文章, 一开始收集了256道题的描述, 称为字节指数. 后来加上了OJ, 一开始支持Java, 后来加上了C++. Imagong的优点之一是对每一道OJ题都有较为细致的讲解.

随后leetcode进行了改版, 更换了更美观大方和易于扩展的界面, 速度得到提高, 也加了一些新题, 包括其它OJ网站的题目. 现在这仍然是绝大多数人访问的刷题网站.

现在既然leetcode有了改进, 本站重复建设已有内容的意义不大. 当然, 可以作为另一个选择, 加入别的OJ网站没有的题目. 因为开放加题API, 有兴趣的用户也可以提交自己的题目. 新的面试题不断出现, 总可以不断的加入题库, 归纳总结. 在功能上也可以改进. 比如更好的分类, 允许用户选取针对性的题目来练习, 以及更好的用户进度统计和管理. 总之, 有一些新意. 建设和维护这样一个网站需要不少业余时间. 作为工作的人, 不能保证经常有时间更新添加内容, 有空为之.


--

最后修改: admin on 2014-04-04 05:02:41 PST
※ 来源: homecox.com  [来自: 66.]


admin
[回复] [修改] [删除] [返回版面] 2  
作者: admin, 讨论版: 本站建设, 发表时间: 2015-07-20 04:45:45 PST
标题: Re: 关于本站的历史
关键字: Forum OSQA

leetcode和itint5所用的论坛应该是GPL软件OSQA。 

OSQA is a Stackoverflow like QA system in Python. See introduction here.

 OSQA is the open source Q&A system. It is more than just an FAQ page, it is a full-featured Q&A community. Users earn points and badges for useful participation, and everyone in the community wins. OSQA is built and maintained by a team of developers who share an interest in making a great, free, open source Q&A system available to everyone. The OSQA project is hosted and financially supported by DZone, Inc. Its features include

    A question and answer engine that’s dead simple to use, has wiki-like features and a voting system
    A social networking engine that allows you to connect with and follow other people and topics and send private messages to each other
    A reputation system that lets you give and receive props for positive contributions to the community
    A powerful search function that helps you find relevant information quickly and easily
    The ability to create groups to help narrow content focus
    The ability to export site data
    The ability to easily federate content that’s created on your site (federating content = reusing content generated on one of your sites in another)
    The ability to import data from your current or old Stack Exchange site
    Support for widgets to expand functionality
    Automatic site activity reports
    The ability to customize your site using themes
    The ability to embed videos, audio and images


--

※ 来源: homecox.com  [来自: 72.]


Reply

Please log in first.