baekjoon   8년 전

안녕하세요.

온라인 저지가 생긴지도 5년이 되었네요.

그동안 PHP로 열심히 저지를 관리했는데... 더 이상 관리를 못하겠어서 ㅠㅠ 온라인 저지를 새로 짜고 있습니다.

PHP로 저지 운영한다고 하면, 주로 받는 질문 중에 하나가 무슨 프레임워크를 사용하냐고 물어보는데, 그런거 없습니다! 순수 PHP입니다.

물론 순수 PHP이긴 하지만, 직접 프레임워크 같은걸 만들어서 관리를 하고 있네요.

2010년에 오픈 소스 프로젝트 https://github.com/zhblue/hustoj 를 이용해서 저지를 관리하기 시작했고, 2012년 쯤에는 웹은 100% PHP로 다시 작성했고, 채점은 수정해서 쓰고 있었습니다. (hustoj 라이센스가 GPL인데, 원저자에게 https://www.acmicpc.net/license 에서 언급하는 것으로 코드 공개를 대체한다고 허락을 받아서 코드 공개는 하지 않았습니다)

PHP와 C로는 이미 한계가 보이기 시작해서, 채점은 C++로, 사이트의 내부는 Python과 node.js로 대체했습니다.

문제를 푸는데는 사실 지금도 큰 상관은 없지만, 제가 생각하는 현재의 문제점은

  • 사이트 가입하고 바로 이메일 인증을 보내면 되는데, 왜 굳이 따로 페이지를 가서 눌러야 할까
  • 회원 가입할 때 있는 학교와 학교 이메일 인증의 학교는 무슨 차이일까
  • 한 번에 하나만 채점하기 때문에, 어떤 사람이 시간이 오래 걸리는 솔루션을 제출하면 채점을 너무 오래 기다려야 한다
  • 사이트 이용 문턱이 너무 높다. (도움말이 없음..., 튜토리얼도 없음)
  • 팀은 버그 투성이
  • 문제집은 너무 느리다
  • 문제를 찾기 너무 어렵다
  • 위키는 죽었다
  • 문제를 번역해도 반영이 너무 오래 걸린다
  • 이해할 수 없는 런타임 에러 (예: C++에서 sync_with_stdio, 얼마 전에 글에도 올라온 Ocaml)

대충 이런 문제가 있다고 생각합니다.

그래서 온라인 저지를 node.js로 다시 작성하고 있습니다. 서버비도 너무 많이 나와서 아마존으로 옮기려고 하고 있고요.

처음 코딩을 잘못 시작해서... 무언갈 추가하려면 소스파일 한 최대 30개는 고쳐야 하는 상황이고요, git을 쓰고 있긴 한데, 지금 상태에서는 개발 서버를 구축하는게 너무 까다로워서... 라이브 코딩을 하고 있습니다. (가끔 로딩이 안되고 흰 화면이 뜨면, 제가 라이브 코딩을 하다가 에러가 난 상태...)

node.js로 작성을 하면 저에게 있어서 가장 좋은 점은 개발 속도입니다. 언어를 4개를 쓰다보니... 뭐 하나 DB 구조를 바꾸면 각각 언어에 대해서 바꿔야 합니다! 새로운 프로그래밍 언어를 추가하기도 편하고, 새로운 기능을 만드는데도 얼마 걸리지 않습니다. 그리고, 사이트에 실시간을 추가할 수 있습니다. 예를 들면, 페이스북처럼 알림같은 기능이요. 그리고 서버비용도 많이 줄어들 것으로 생각됩니다.

사용자에게 좋은 점은 가장 먼저 사용자 편의성이 되겠지요. 뭔가 말로 표현할 수는 없지만, 많이 편해질 것으로 예상됩니다. 그리고 프로그래밍 언어도 지금의 50개에서 약 100개정도를 지원할 수 있습니다. 이 100개는 실제로 100개가 아니고, 컴파일러를 선택할 수 있게 해서 100개입니다. 또, 지금은 리눅스에서만 채점을 하기 때문에, Visual Studio C++을 지원하지 않지만, 아마도 Windows에서 채점도 가능하게 됩니다. OS X에서 Swift로도 채점을 할 수 있게 되고요. 물론, 두 OS 모두 이론상으로는 가능합니다. Windows는 쉽게 지원할 수 있지만, OS X는 조금 어렵겠네요...

아직 확정은 아닌데 아마 다음과 같이 바뀔 것으로 예상됩니다.

  • 문제 번역을 한 다음 요청을 하지 않아도 빠른 시간 내에 반영이 된다.
  • 제출 하기 전에 컴파일 에러를 확인할 수 있다.
  • 채점을 각각 다른 서버에서 하기 때문에 채점을 기다릴 필요가 없다
  • 알림이 오면 새로 고침 없이 확인할 수 있다.
  • 언어와 컴파일러를 각각 따로 선택할 수 있다
  • 위키가 사이트와 합쳐진다. (예: 문제 풀이 게시판 or 위키)

혹시 바라는 점이 있으면 댓글로 자유롭게 적어주세요.

감사합니다.

baekjoon   8년 전

이 업데이트와 동시에 코딩은 없어집니다.

yukariko   8년 전

문제집 화면에 내가 푼 상황이 progress bar로만 되어있는데

수치가 없어 제 상황을 알기가 조금 힘듭니다.

예를들면 문제집 문제수가 4개일때 3개풀고 1개만 남은 경우와

문제수가 20개일 때 18개 풀고 2개만 남은 경우가 있는데,

풀어야 할 문제가 가장 적게 남은 경우는 전자인데, 그래프는 후자가 더 높게 나와있어서 어느 문제집을 풀어야 클리어가 빠른지 알기가 어렵습니다.

그래프 중간에 숫자로

현재까지 푼 문제 수 / 전체 문제 수

같은 정보가 남았으면 좋겠습니다.

joonas   8년 전

@yukariko 약 1년전에 비슷한 의견을 낸 적이 있었는데, 이런건 어떤가요?

333f1adec909f8e5622dc038fca9c36c.png


yukariko   8년 전

음 저 2,1은 틀린문제수이고 나머지 시도하지 않은 문제는 포함하지 않는거로 보이는데

저 1 뒤에 시도하지 않은 문제수도 표시한다면 좋은것 같습니다 ㅎㅎ

79brue   8년 전

+ 코딩은 테스트가 안 됩니다

이런... 5일 전 테스트가 아직도 안되고 있어요

joonas   8년 전

@79brue https://www.acmicpc.net/board/view/2335 "문을 닫는 시간은 2015년 4월 23일 정오입니다."

79brue   8년 전

@Joonas 조금 더 연장된다고 했잖아요

joonas   8년 전

@79brue 4월 24일에 "이번주 내로 없어집니다" 라고 하셨는데 어느덧 달력이 6월이네요.

79brue   8년 전

아 그렇군요...

uss01   8년 전

로그인하는 그 맨 위 창에 맞은 문제 수를 보여주면 않될까요?

알려면 자신 닉네임을 일일이 클릭해야 되서 불편합니다.

댓글을 작성하려면 로그인해야 합니다.