ALPS 7월 내부대회 후기


7월 내부대회를 끝내며.

서론


내부대회로 문제를 내는 것은 세번만이다. 7월 내부대회 후기를 먼저 쓰게 됐는데, 아무래도 블로그 관리를 하지 않았을 때 한 번 냈었어서 꼬인 것 같다.

CMSJudge


  • 이제 공식 문서가 읽히기 시작한다.

1.3 버전에서 1.4 버전으로 업데이트하기도 했고, 여러 방면으로 조작을 가해보려고 했지만 쉽게 되지는 않았다. 그래도 구성만큼은 이제 30분 안으로도 할 수 있을 정도로 손에 익은 것 같다.

  • nginx를 처음 써보게 되었다.

너무 많은 부하가 가해지면 분산해주는 로드 밸런서같은 기능을 nginx를 통해서 지원해주는 것 같았는데, 1개의 CWS가 100명 정도의 참가자를 견딜 수 있다고 했어서 추가로 서버를 붙여주지는 않았다. 원래는 IP:8888, IP:8890처럼 포트를 이용해서 동아리원들에게 접근을 부탁드렸었는데, hyperflow.dev라는 내 도메인이 생긴 이상 이걸 한번 활용해보고 싶었다. 그래서 네임서버 설정을 하고 nginx를 이용해 리다이렉트 되게끔 했는데 그러고 나니 링크들이 너무 이뻤다. 그냥 ContestWebServer의 경우에는 alps.hyperflow.dev로 가도록 말씀드리면 되고, 랭킹 서버는 그 뒤에 alps.hyperflow.dev/ranking과 같이 이런 식으로 알려드릴 수 있었기에 마음이 편했다. 추가적으로 더 나아가 정적으로 만들어진 어워드 페이지도 alps.hyperflow.dev/award로 나타내었다.

뭔가 리액트의 라우터 같은 느낌인데 로드 밸런싱 / 프록시 같은 경우에도 사용할 수 있을 것 같아서 비슷한 것들이 뭐가 있는 지 알아봐야겠다는 생각도 들었고, 처음 보는거였는데 의외로 결과가 잘 나와서 뭔가 웹쪽으로 자신감도 붙은 느낌이다.

  • 업무 자동화는 정말 최고다.

ALPS에서는 구글 드라이브에 회원분들이 가입 시 입력한 구글 폼을 바탕으로 한 엑셀 파일을 가지고 있다. 이를 tsv로 받아서 이메일을 이용해 유저 네임을 만들고, 알파벳으로 랜덤하게 비밀번호를 만들어서 tsv로 export하는 간단한 스크립트 같은 것을 파이썬으로 짜둔 적이 있다. 물론 이 tsv를 이용해 cmsAddUser 기능으로 서버에 등록도 시키고, cmsAddParticipation 기능으로 컨테스트에 등록시키고, 유저 이름과 비밀번호를 메일로 발송해주는 스크립트까지 만들어 두었었다. 그러고나니 예전 같았으면 손수 했어야 할 번거로운 작업들이 약간의 코드 수정과 실행 한번이면 끝나고, 심적으로나 육체적으로나 많은 부담을 줄일 수 있었던 것 같다. 처음에는 간단한 단순노동 같은 거는 그냥 몸으로 때우면 되지라는 생각을 하긴 했었는데 막상 이거 해보면 진짜 너무 빠져든다. 파이썬 짱 업무 자동화 짱

문제


  • 폴리곤 쓰기

이번에도 코드포스 폴리곤은 안썼다. 문제가 쉽기도 하고, 무엇보다 아직까지 테스트 케이스 제너레이터를 만드는 것에서는 cpp보다 python이 압도적으로 편했기 때문이다. 대부분의 서버 작업 자동화 스크립트를 짤 때도 파이썬으로 짜서 그렇기도 하고.. 그래도 좀 난이도 있고 엄밀한 테스트 케이스를 만들기 위해서는 폴리곤을 사용해야겠다는 생각이 들었다. 벨리데이터라도 하나 짜놓으면 내 문제가 터졌을 때 탓할게 생긴다랄까.. 그런 느낌인듯.

  • PS도 하면 느니까 많이 하자

PS에 손을 놓았던 이유는 이거 그냥 너무 머리싸움인 것 같아서다. 그래도 마지막으로나마 PS 다시 한번 해보려한다. 컨테스트를 준비하면서 검수도 해야하는데, 막상 참가자였더라면 손도 못댔을 것 같은 문제들도 많았고, 내가 나간 대회들도 다 성적이 저조했었기 때문에 제대로 해보지도 않고 포기한 것 같아 마음에 항상 걸렸다. 아무튼.. 웹 서비스를 기획하던 공부하던 간에 PS를 하는 것을 어느정도 루틴 삼아서 해야겠다는 생각이 많이 들었다. 다음 학기에는 동아리 회장이 될 수도 있는데 못하면 좀 그렇기도 하고..

결론


내부대회를 열다보면 어느 부분에서 좀 시간을 많이 쓰거나 고심해야할지 알게 되는 것 같다. 이번 대회를 준비할 때에는 저번보다 인원도 많고 문제 수도 많았지만 잘 치뤄진 것 보면 이런 대회를 여는 것에 많이 익숙해진듯..? 그래도 역시 검수는 태수님이나 세윤이가 많이 힘써줘서 그런 것이지만 조금이나마 PS를 해서 도움을 드릴 수 있으면 좋겠다. 언제까지나 의지하고 방관할 수는 없는거니까. 그리고 PS하니까 개발할 때도 은근 도움 많이 된다. 다들 아무 상관 없다고 생각하고 멀리하려 하는 것 같은데 자바스크립트를 쓰던 파이썬을 쓰던 PS하는 습관때문에 어떤 구조로 코드를 짤 지 어느정도 속도가 나올지 생각하게 되더라. 물론 언어를 배울때도 이 언어의 이런 함수는 어떤 원리로 동작하는 지, 내가 적어도 루프를 돌리거나 뭐 하려면 어떤 함수를 쓰는 것이 나은지 계속 생각이 난다. 뭐 아마 비슷한 원리로 많은 회사들이 PS 진짜 잘하는 사람들을 잡아가는건지도 모르겠다는 생각도 들지만, 열심히 해야겠다.