本文通过工具从以前的 html 转成 markdown,格式可能有问题。
这篇文章有三个标签LXMP``Go``HUSTOJ
,在我接管服务器以前,这三个东西我是一个也不知道的,靠着自己的不懈折腾,时隔大半年,收获颇丰。今夜不眠,拿出来聊聊。
LAMP
这是HUSTOJ
的原始架构,我接管服务器的第一件事就是一周内搭好oj
,那一周我是在机房没日没夜的呆了几天,终于把我们自己的oj
给架起来了。
Linux
如果真的要找基础,就是大一下蹭在KDE
下生活过三个月,后来移居OSX
但是敲命令的习惯还是保留了下来。以至于至今没怎么好好的用过Windows
!
在最开始,很多人给我的建议就是鸟哥的私房菜
,天哪这么厚一本书我怎么可能几天内看完!所以在最开始的时候其实很简单,需要什么了就去百度就去Google
,查不到的就去问各路大神了。由于迁居OSX
导致一直没有踏踏实实地下来学习过Linux
,导致今日依旧小白一个。
Apache
最早接触这些东西是当年看哈佛的计算机公开课时提到的XAMPP
,然后一直用了它很久包括使用Linux
时在本地学HTML5依旧用得它。所以在这个时候格外吃力,都是去百度Apache如何修改网站位置``Apache如何添加子域名
之类白痴之极的问题,也曾立志去研习Apache
配置详解,后来由于你们猜得到的原因就没怎么碰过了。
在Linux
下最喜欢的命令就是apt-get
,特别喜欢update
和upgrade
的感觉。我曾两次upgrade
服务器,第一次出现了小问题一个下午搞定了,第二次依旧手贱,结果把HUSTOJ
的Judged
搞坏了,边被吐槽边修复了两三天(当时正值计算机学院在OJ
上做算法作业!)深感无力回天,不得已拿Go
重写了Judged
。由于积累了数天的重判任务于是就把判题端开到了十进程。。两三天的调试,至今运行良好。
MySQL
其实对MySQL的熟悉完全是嘴表层最表层的,没有系统学过数据库理论,甚至连SQL
语法都没怎么学过,同样是遇到一个问题就去白痴地问一次。开发oj
时几乎也都是copy
-paste
照猫画虎过来的。后来学Go
时认识了orm
这类东西,从此对SQL
再没有去看了。早上看到一篇程序员等级,最低级的被成为CRUD
程序员,我估计我连这些都不算够格。
PHP
PHP
在这些东西是最早接触的,曾在w3school
上看过,但是由于上述知识的匮乏,其实跟没学一样(曾一度去琢磨php和js该学哪个),
开发oj
时真正要用php
了那个时候一般我改一句代码oj
就会挂一次,经常被问得就是今天
oj我怎么上着上着就上不去了过一会又好了!?``你是在作死!!!
等等之类的。
庆幸毕竟是有压力在身上,学对PHP
还是学了点。也认识了很多,从语法灵活度来说PHP是多么简单的语言,但是在语法组织上你会觉得这是让人烦到死的东西。由于是Python``Ruby``Go
等极简语法语言的崛起。
Go
我为什么会走上Go
说来完全是打发寂寞,于是我就去网上看世界上有哪些语言,先被python``ruby
这类轻巧的语言所吸引,又因为速度的传言转到了NodeJS
,暑假期间蹭用HTML5
写过一个游戏,我感觉到了JS
在某些方面的力不从心(当然一定是有解的只是感觉不那么优雅)。后来意外看到了Go
语言并被它深深地吸引。
意外的是我的两个朋友哈工大的光光和电子科大的42大神都开始学
Go
。回过头看那个时候正是一些东西在国内迅猛发展的时期,Astaxie
、UnKnwon
等大神开始大力推广Go
,MongoDB
当时还算最火的,当时SSDB
貌似还没出来的说。当时我周围的学长们大多都不知道这是些什么玩意。
- 在那个时候几列火车从我身边高速驶过,我不知道我是否属于这些列车,但是我知道,这些列车都将开往未来。
Nginx
由于某些历史原因使得我成了在很多方面有强迫症的人,很多方面都试图用最好的且不惜成本,浏览器、编辑器、播放器甚至输入法、日历等几乎所有类型的工具我都要做个横向对比找出最顺手的。
服务器软件也不例外,不知道被谁忽悠了Nginx
远远优于Apache
。下定决心要进入Nginx
的世界,从LNMP
的搭建、配置这些基本的学起,到后来需要高级功能时已不再使用Apache
,后来学了Go
,对pass``rewrite
要求多了就再没离开过Nginx
了。但是说时候这个环境比LAMP
复杂多了大概最开始的几次每次都出小问题,多配几次才可以顺利地搞下来。
HUSTOJ
HUSTOJ
的代码写得极其简单随意,像我这种没有软件工程基础的人大概花了不到一天的功夫就搞懂了它的大概框架,改起来自然也是得心应手,越来后来一些问题也越来越明显:
-
代码清晰度有待提高,大框架简单,细节上自然要复杂多了。
在做二次开发时每次的思路的很简单,但工作量甚大,譬如
user
改一个字段,你就得把所有select
了user
的页面代码全部修改,还得边改边调试。
从这几方面来讲随着需求越来越高,一直二次开发下去是个很不明智的做法,所以有必要规划一套适合各种复杂情况的在线编程学习平台。
庆幸我正好在学Go
。
如果把HUSTOJ
分为三块,Web``Judged``Judge_client
。前两部分基本已经用Go
重写。其中Judged
已经在服务器上正常使用半年,目前运行良好。
最后
之前在做OJ
的时候我就考虑一个问题,如果要比做OJ
,那我永远做不过杭电,结合自己的教育梦,我希望能一步一步打造一个在线编程教育平台。