수달의 IT 세상

[HustOJ] Online Judge System 구축하기 포스트 Teaser

[HustOJ] Online Judge System 구축하기

카테고리:

4 분 소요

HustOJ HustOJ는 전세계에서 흔히 사용하는 Online Judge System의 한 종류이다. 한국에서도 여러 대학, 중고등학교에서 수행평가나 프로그래밍 학습 교구로 많이 사용하고 있다. 다만, 현재 구글에 올라온 구축 방법들이 상당히 오래전 방법이라 최신 방법을 포스팅하고자 한다. ※ 본 게시글은 Ubuntu 22.04 LTS 버전을 기준으로 작성되었습니다. 1. HustOJ 다운로드 후 설치하기 설치 방법은 예전과 다르게 많이 간편화되어 아래의 명령어 두줄이면 자동으로 설치를 시작한다. 다만, Ubuntu 운영체제만 지원하며, WSL 및 도커로 구축한 Ubuntu는 지원되지 않고 듀얼 코어 CPU와 2G RAM 이상의 사양을 요구한다. wget http://dl.hustoj.com/

[Ubuntu] System infomation 재출력하기 포스트 Teaser

[Ubuntu] System infomation 재출력하기

카테고리:

최대 1 분 소요

System Information Ubuntu가 설치된 서버에 터미널로 처음 접속하면 다음과 같이 출력된다. System load, Processes, Usage, Temperature등을 다시 보고 싶을 때가 있는데 이럴 땐 터미널에 재접속하는 것보다 아래의 명령어를 사용하면 System information을 다시 볼 수 있다. landscape-sysinfo

[HustOJ] no test data : no *.in file found 해결하기 포스트 Teaser

[HustOJ] no test data : no *.in file found 해결하기

카테고리:

1 분 소요

문제 상황 HustOJ로 구축된 사이트를 운영하다보면 특정 문제에서 아래와 같은 메시지를 출력하며 실행중 에러 AC:0% Flag를 띄운다. no test data : no *.in file found -—time_space_table:—- 점수 : 0.000 문제 해결 해당 문제에 테스트 케이스 데이터가 없어서 생기는 문제이므로, HustOJ의 설치 경로에 테스트 케이스 데이터를 생성해주면 된다. 보통 HustOJ 설치 폴더는 /home/judge/에 위치한다. 문제가 발생한 폴더로 이동하려면 /home/judge/data/문제가 발생한 번호로 이동한다. 입력이 없는 문제의 경우에는 아래와 같은 명령어로 단순히 파일만 생성해줘도 되지만, 입력과 출력이 정해진 문제의 경우에는 테스트

[C#] Enum을 ComboBox item에 집어넣기 포스트 Teaser

[C#] Enum을 ComboBox item에 집어넣기

카테고리:

최대 1 분 소요

문제 상황 C#으로 프로그램을 만들다 보면 Enum을 ComboBox item에 집어넣어야 하는 상황이 가끔 생긴다. Linq를 사용하여 Enum을 Object[]로 만들어서 ComboBox에 넣으면 되는데, 다소 복잡하다. 소스 코드 comboBox1.Items.AddRange(Enum.GetValues(typeof(MyEnum)).OfType<object>().ToArray()); Enum.GetValues만 사용하면 반환 값이 System.Array로 나와 []로 캐스팅 하기 위해서 .OfType<object>().ToArray()를 사용한다.

[C#, OpenCL] OpenCL로 SHA1 연산하기 포스트 Teaser

[C#, OpenCL] OpenCL로 SHA1 연산하기

카테고리:

9 분 소요

Nuget C#에서 OpenCL을 사용하고자 할 때, 여러 방법이 있지만 보통 Nuget Package에서 Cloo를 추가하여 사용한다. 1. kernelSource 작성 본격적으로 OpenCL을 사용하기 이전에, 아래와 같이 kernelSource를 작성해야한다. 마땅히 참고할 소스코드가 없어, https://en.wikipedia.org/wiki/SHA-1 의 pseudocode를 참조하여 구현하였다. __kernel void sha1(__global const unsigned char* data, int length, __global uint* digest) { int num_blocks = length / 512; uint h0 = 0x67452301; uint h1 =

[C#, webhacking.kr] Challenge 4번 풀기 포스트 Teaser

[C#, webhacking.kr] Challenge 4번 풀기

카테고리:

4 분 소요

문제 상황 일반적인 webhacking.kr의 문제는 preg_match 회피 및 sql injection이 주를 이루지만 challege 4는 기존의 문제들과는 양상이 다르다. 아래는 challenge 4의 소스코드 중 일부이다. <?php sleep(1); // anti brute force if((isset($_SESSION['chall4'])) && ($_POST['key'] == $_SESSION['chall4'])) solve(4); $hash = rand(10000000,99999999)."salt_for_you"; $_SESSION['chall4'] = $hash; for($i

[HustOJ] Python3로 채점 하는데 너무 느린 문제 해결하기 포스트 Teaser

[HustOJ] Python3로 채점 하는데 너무 느린 문제 해결하기

카테고리:

1 분 소요

문제 상황 HustOJ로 구축된 사이트를 운영하다보면 사용자가 Python3로 제출하는 경우, 채점이 너무 느려 문제에서 설정한 시간이 초과되는 등의 문제가 발생한다. 보편적으로 이를 해결하기 위해 Pypy3를 도입하려고 하는 등의 생각을 하겠지만, 적용하여 테스트 해본 결과 HustOJ의 채점 동작 원리 특성상 얻는 이득이 없다. 문제 해결 따라서, judge_client.cc를 뜯어 고치는거보다 judge.conf의 설정을 변경하는 편이 훨씬 도움이 된다. 1. HustOJ가 설치된 경로에서 ./etc 경로로 이동한다. cd ../../ cd /home/judge/src/etc/ 2. judge.conf를 열어 아래와 같이 값을 수정한다. OJ_JAVA_TIME_BONUS=10 OJ_PY

[VPS, VPC] 아웃바운드 트래픽 요금 비교 포스트 Teaser

[VPS, VPC] 아웃바운드 트래픽 요금 비교

카테고리:

2 분 소요

VPS, VPC VPS(Virtual Private Server)와 VPC(Virtual Private Cloud)는 모두 컴퓨터 네트워크와 관련된 용어지만 각각 다른 개념을 가진다. VPS는 가상 개인 서버를 의미하며, 독립된 운영 체제 및 자원을 갖고 있는 가상 환경을 제공한다. 반면에 VPC는 가상 개인 클라우드를 의미하며, 클라우드 컴퓨팅 환경에서 가상 네트워크를 구축하여 사용자가 가상 리소스를 관리할 수 있는 환경을 제공한다. 본 포스팅에서는 둘을 크게 구분하지 않고 아웃바운드 트래픽 요금의 관점에서만 비교하여 서술하려고 한다. ※ 한국(서울) 리전 기준 ※ 추가 요금은 GB 당 최대 금액 제공사 기본 제공 트래픽 GB당 추가 요금