아직미분류2011. 4. 27. 19:12

이하의 글은 퍼온 글이다. 출처를 밝히지 않고 마음대로 퍼가도 좋다. 애초에 이 블로그 주인이 쓴 글도 아니니, 이 블로그를 출처로 밝혀서는 안 된다. 또한, 이 글의 의견은 블로그 주인의 의견과 일치하지 않을 수도 있다.

많은 사람들이 셧다운제의 의도와 의지에 대해서 지지를 보낸다. 게임중독은 술, 약물과 같이 청소년에게서 일단은 멀어져야 할 존재라고. 그런데 셧다운제를 반대하는 사람들의 전부가 셧다운제의 의도와 의지를 몰라서 그러는 것이 아니다. 셧다운제 논란의 본질은, 특정한 정책 목적을 달성하는 데에 적합한 정책 수단이 미비한 상황에서, 과연 의도와 의지만으로 정부가 정책을 강행할 수 있는가에 달려있다.

대테러 전쟁을 생각해보자. 대테러 전쟁은 분명 명분이 있는 전쟁이다. 의도와 의지는 누구나 인정할 만 한 것이다. 하지만 대테러 전쟁에는 다음과 같은 문제들이 수반된다. 첫째, 예산이 너무 많이 들어서 다른 정부 사업에 차질을 빚게하지 않는가? 둘째, 대테러 전쟁을 주관하는 부처가 비정상적으로 팽창된 권한을 갖게되지는 않는가? 셋째, 민간인 오폭 등 원래 목표하지 않았던 대상에 피해가 갈 수 있지 않은가? 이런 문제들로 인해 대테러 전쟁은 엄청난 비난에 시달린다. 만약 미래에 엄청난 고등기술이 발명되어 목표된 테러조직의 수뇌부만 정확하게 제거하거나 신병을 확보할 수 있다면 모르겠으나, 일단 부작용이 너무 많은 것이다.

셧다운제도 마찬가지다. 의도와 의지가 중요한 것이 아니다. 게임중독을 근절시키기 위한 정책적 수단이 너무 허술한데, 그것을 억지로 끼워맞춰넣으려고 하니까 문제가 되는 것이다.

셧다운제의 가장 큰 첫번째 문제점은 '무엇을 게임으로 볼 것인가?'에 있다. 흔히들 게임타령하지만 실제로 게임이 무엇인가에 대해서 학계에서 명확한 합의가 이루어진 적은 없다. 이는 미국에서 스마트폰으로 앱을 통해 지상파 영상을 송출하는 것을 둘러싸고 미디어 업계간에 논쟁이 벌어진 것과 마찬가지다. 스마트폰으로 송출된 지상파 영상은 단순히 TV가 작아진 것인가? 아니면 앱으로 프로그램 시청권을 판매한 것인가? (http://biz.heraldm.com/common/Detail.jsp?newsMLId=20101124000614)게임도 마찬가지다. 애초에 이건 누가 어떤 목적으로 정의하냐에 따라서 게임의 폭이 갈릴 수 밖에 없는 것이다. 예를 들어, 교육부에서 학습 성취 동기를 고양하려는 목적으로 사자성어 빈칸 맞추기 프로그램을 개발했다고 가정해보자. 그것은 게임인가? 어떤 회사에서 광고를 위해 하나의 웹페이지에 접속한 모든 사람들이 실시간으로 그 회사 제품들을 형상화한 캐릭터를 가지고 놀 수 있다고 치자.(http://blog.naver.com/asf978?Redirect=Log&logNo=80123113992) 이것은 게임인가? 일단 뭐라고 게임을 정의해야할지부터 곤란하다. 이는 각 기업체의 흥망을 가르는 것이기 때문에 극도로 민감한 사안이다. 지금도 정부부처에서 동반성장을 장려한답시고 중소기업들만 진출할 수 있는 사업분야를 선정하는 과정에서 엄청난 혼선이 빚어지고 있는데, 도대체 게임은 무슨수로 구분할 것인가?

그래서 결론이 '온라인게임' 셧다운제가 된 것이다. 왜냐하면 정부는 '자신이 규제할 수 있는 것이 전체라고 간주하고 싶기 때문'이다. 스마트폰이 등장하기 이전에 모든 휴대폰에 강제로 깔렸던 WIPI를 기억하는가? (WIPI라는 단어를 듣고 지긋지긋함을 떠올리지 않은 당신은,우리나라 정부가 IT산업을 장려하기는 커녕 옭죄느라고 정신이 없었다는 사실을 모르는 평범한 시민일 것이다) WIPI는 정부가 무선인터넷 플랫폼을 표준화하려는 거창한 시도에서 이루어졌다. 그래서 모든 휴대폰에 매직엔이니 UTO니 같은 것들이 이름만 바꿔서 똑같이 나왔던 것이다. 하지만 정작 정부가 관할할 수 없는 거대 공룡기업, 그러니까 애플이 스마트폰을 내세워서 들이닥치자 너무나도 깔끔하게 정책 전부를 포기해버렸다. 무선인터넷의 '한국형' 표준규격을 만들어 IT시장을 지배하겠다던 의도와 의지는 어디로 갔는가? 셧다운제도 마찬가지다. 게임의 유해성에 관해 한참 떠들고 났더니 정작 무슨수로 웹페이지에 널려있는 플래시기반 게임들, 모바일 게임들, 인터넷을 연결할 필요가 없는 콘솔게임들, 심지어 쌍방향 광고의 일부로 자리잡은 여러 웹페이지 그 자체를 어떻게 할지 막막해진 것이다. 결국 WIPI 때도 그랬듯이 정부가 쉽게 이래라 저래라 할 수 있는 국내 중대형 기업체들만 집합시켜서 '온라인게임'을 규제할 뿐이다. 정말 병신같은 짓이다. 보나마나 거대공룡기업들이 들이닥쳐서 시장개방을 요구하면 다시 금방 폐지할, 그러니까 그동안 한국 기업들만 족쇄채우는 놀음인 것이다.

게다가 더 코믹한 부분은 정부도 어떻게 오프라인으로 구동되는 게임들, 그러니까 가장 조악한 패미콤이나 게임보이부터 시작해서 PS3, XB360, PSP 같은 매체들을 어떻게 규제할 지 감이 오지 않는 것이다. 집집마다 들이쳐서 막아야 하나? 정부는 한심하게도 예전 WIPI때와 똑같은 방식을 쓰려고 했다. 앞으로 한국에서 팔리는 모든 콘솔과 모바일 기기는 12시 이후 게임프로그램을 실행 불가능하게 만드는, 프로그램을 설치하라는 것이었다. 그것도 청소년에 한해서! 와우! 물론 게임기업체의 사업상 기밀을 알아내야 하는 일이므로 당연히 그만뒀다. 소니가 자사의 콘솔 OS를 해킹하여 분석한 해커를 대상으로 초거액의 소송협박을 하는판에, 한국 정부가 무슨수로 소니에게 콘솔에다 셧다운 프로그램을 깔라고, 깔고 나면 우리가 그 결과를 감수할테니 OS한번 내놔보라고 할 수 있는가?

압권은 이러한 모든 시스템을 개발하는 데에 드는 비용을 기업체가 부담하라는 데에 있다. 기업이 사회환원 겸 하면 되지 않냐고? 방금 위에서도 언급했듯이, 게임 프로그램의 모든 코드와 소스가 어떻게 구성되어 있는가는 사실상 해당 기업체의 기밀이요, 자산이다. 그것을 침해 (물론 지금도 심의라는 명목하에 버젓이 침해하면서 빤히 들여다보기는 하지만) 하면서 까지 막나갈수는 없으니, 지금과 마찬가지로 정부는 직접적으로 손을 대지 않고, 대신 너희들이 개발한 셧다운 프로그램을 우리가 감수하겠다 - 라는 것이다.

그러니까 결국 정부도 사실 알고 있는 것이다: 셧다운제는 결코 실현될 수 없다는 것을. 그러니까 이런 골치아픈 일은 적당히 하는 시늉만 내야지, 괜히 세게 나가다가는 기업들 줄소송에 휘말려서 행정소송이나 헌법재판소까지 가면 큰일 난다는 것을.

셧다운제 찬성론자들은 그래도 억지로 한번 우겨본다. 한국의 게임중독의 핵심은 '온라인 게임'이므로 이것만 잡으면 된다고. 이거라도 잡으면 꽤나 게임중독이 안정될 것이라고. 이 사람들은 풍선효과에 대해서는 전혀 생각하지 않는 것 같다. 풍선의 한쪽을 잡으면 다른쪽이 늘어난다. 온라인 게임시장의 빈 자리를 콘솔 과 모바일 게임 시장이 메울 것이다. 그게 전부다. 정부는 비싼 돈과 시간을 투자해서 온라인 게임 기업의 주가를 떨어뜨리고 콘솔 게임 기업의 주가를 올리는 일을 하고 있는 셈이다. 당장에라도 소송이 나지 않는 것은 아직 우리나라 게임 기업들이 이런 소송을 해본적이 없기 때문이다.

셧다운제의 가장 큰 두번째 문제점은 '그렇다면 누가 셧다운제를 관할할 것인가?'다. 그래, 위의 논점이 다 좋다고 치자. 그렇다면 이제 셧다운제는 누구의 관할이 되어야 하는가? 셧다운제가 이대로 시행되면 계속해서 셧다운제의 장악 범위안에 포함될 게임과 그렇지 않은 게임을 구분해야 한다. 포함된 게임은 셧다운 프로그램이 제대로 포함되어 있는지 검수를 해야한다. 그렇지 않은 기업에는 통제를 가해야 한다. 이 엄청난 권력의 파이를 누가 차지할 것인가?

여성가족부는 당연히 자신들의 관할이라고 주장한다. '청소년'의 게임중독을 막는 것이기 때문이다. 아, 그렇다면 '청소년'의 무면허 운전을 막는 것은 국토해양부가 아니라 여성가족부가 해야할 일이다.

여성가족부는 자신이 무엇을 관할할 수 있는지, 자신들이 이에 적합한 인력을 보유하고 있는지 조차 관심이 없는듯 하다. 셧다운제가 실질적인 관리와 규제의 영역으로 넘어오면, '청소년'이 중요한 것이 아니라 '게임'중독이 중요한 것이다. 그 산업에 대한 고도의 이해가 필요함은 두말할 나위도 없다. 하지만 아마도 여성가족부는 PC방 업주들과 게임 기업간에 과금제 양상을 두고 무슨 논란이 벌어졌었는지 조차 이해하지 못할 것이다.

그렇다면 실질적으로 관리가 가능한 부처는 교육과학기술부일 것이다. 왜냐하면 이곳이 과거 정보통신부의 유산을 대부분 계승했기 때문이다. 그러나 교과부는 뒷전이고, 실제로는 여가부와 문광부가 싸우는 형국이다. 문광부는 자신들이 게임 '등급'을 규제하고 있던 원래 부처이므로 게임'중독'도 규제할 수 있다고 믿는 듯 하다. 정말 슬프고 병신같은 형국이다.

셧다운제의 세번째 문제점은 '게임을 하고 있는 대상이 청소년인지를 어떻게 식별하는가?'이다. 이미 이 문제는 망했다는 사실을 누구나 알고 있을 것이다. 이것은 규제가 통할 수 있는 범위를 이미 넘어섰다. 지금도 해외에 서버를 갖고 있는 게임들은 가입시 주민등록번호를 요구하지 않는다. 이제는 주민등록번호 없이 뭘 어떻게 할 것인가? 역시나 말잘듣는 국내 중대형 게임기업들만 규제의 범위에 걸려들 뿐이다.

정리하자면, 셧다운제는 애초에 의도나 의지를 실현하기에는 거의 불가능한, 그러니까 망상에 가까운 이상론자들의 헛소리일 뿐이다. 이는 과거 자동차 산업의 첨단이었던 영국의 적기조례에 버금가는 병신력 넘치는 법안에 불과하다. 당시 적기조례를 입안했던 정치인들도 많은 꿈과 희망에 부풀어 있었을 것이다. '영국이 자동차 산업의 종주국인데, 우리가 한번 세계 자동차의 주행의 표준형태를 만들어 보는거야! 그것도 과속이나 인명피해 없이!' 그런 병신같은 환호와 열광속에 영국의 자동차산업은 몰락했다.

이제 한국의 게임산업 차례다. 몇년 안가서 그만 둘것이 너무 뻔한 제도인데, 정치인들은 여기에 영합해서 어떻게든 자신의 업적으로 일구어내려고 정신이 없으며, 공무원들은 자기 부처 권력한번 늘려보려고 정신이 없다.

이상의 글은 퍼온 글이다. 출처를 밝히지 않고 마음대로 퍼가도 좋다. 애초에 이 블로그 주인이 쓴 글도 아니니, 이 블로그를 출처로 밝혀서는 안 된다. 또한, 이 글의 의견은 블로그 주인의 의견과 일치하지 않을 수도 있다.

Posted by asdfzxcv
아직미분류2011. 4. 27. 17:17

사내 라이센스로 Adobe Acrobat X를 설치했다. 기존 버전 대비 로딩 속도가 엄청 빨라진 느낌이다.

Posted by asdfzxcv
아직미분류2011. 4. 24. 02:31

설치 방법은 http://noexists.tistory.com/193 참고

이 글은 정리되지 않은 글이다. (그렇다고 다른 글이 특별히 정리된 건 아니지만...)

파일로도 제출 받는 기능

submitpage.php의 form에 enctype="multipart/form-data" 넣는다.
<script type="text/javascript">
function tg(bool) {
document.getElementById('source_file').disabled = !bool;
document.getElementById('source').disabled = bool;
}                       
</script>               
<hr />
<input type="radio" name="source_sel" value="file" checked="true" onclick="tg(true)" /> Use a file <br />
<input type="hidden" name="MAX_FILE_SIZE" value="65536" />
<input type="file" id="source_file" name="source_file" /> <br />
<hr />
<input type="radio" name="source_sel" value="textarea" onclick="tg(false)" /> Use the textarea <br />
<textarea cols=80 rows=20 id="source" name="source" disabled="disabled"></textarea><br>
if ($_POST['source_sel']=='file') {
        $uploaddir = '/var/www/uploads/';
        $uploadfile = $uploaddir . $user_id . "_" . basename($_FILES['source_file']['name']);
        if (move_uploaded_file($_FILES['source_file']['tmp_name'], $uploadfile)) {
                $source = file_get_contents($uploadfile);
        //      unlink($uploadfile);
        } else {
                require_once("oj-header.php");
                echo "Upload error";
                require_once("oj-footer.php");
                exit(0);
        }
} else {
        $source=$_POST['source'];
        if(get_magic_quotes_gpc())
                $source=stripslashes($source);
}
/var/www/uploads 디렉토리도 만들어야한다. chown www-data도 해주고

소스 코드 다운로드 기능
downloadsource.php을 만든다.
showsource.php를 뜯어 고침.
하이라이트 기능 제거, htmlspecialchars 제거.
불필요한 것 최대한 제거.
헤더를 고쳐서 c 파일로 다운로드 되게 만들기.
줄바꿈 문자 수정.
소스코드 보는 링크 부분에 링크 추가.

status.php, problemstatus.php
기본적으로 자신의 결과만 보이게 함. (남의 결과를 보는 것을 막는 것은 아님)
source_browser는 다 보는 것이 기본
$user_id="";
if (isset($_GET['user_id'])){
        $user_id=trim($_GET['user_id']);                                                                              
        if (is_valid_user_name($user_id) && $user_id!=""){
                $sql=$sql."AND `user_id`='".$user_id."' ";                                                            
                if ($str2!="") $str2=$str2."&";                                                                       
                $str2=$str2."user_id=".$user_id;                                                                      
        }else $user_id="";
} else {                                                                                                              
        if(! isset($_SESSION['source_browser'])) {                                                                    
                $user_id = $_SESSION['user_id'];                                                                      
                if (is_valid_user_name($user_id) && $user_id!=""){                                                    
                        $sql=$sql."AND `user_id`='".$user_id."' ";                                                    
                        if ($str2!="") $str2=$str2."&";                                                               
                        $str2=$str2."user_id=".$user_id;                                                              
                }else $user_id="";
        }       
}

showsource.php
관리자에게는 제출 시간과 IP 정보가 보이게 바꿈. 카피 잡을 때 유용

if (isset($_SESSION['administrator'])) {                                                          
	echo "\tIP: $row->ip\n";
	echo "\tSubmission Time: $row->in_date\n";                                                            
}


Posted by asdfzxcv
아직미분류2011. 4. 24. 02:02

설치 방법은 http://noexists.tistory.com/193 참고

일부 언어만 허용하고 싶은 경우가 있다. 여기서는 C 언어만 허용하는 상황을 예로 들어 보겠다.

static $OJ_LANGMASK=126; // C 언어만 허용.

이렇게 LANGMASK 설정만 해서 모든 것이 완벽하면 좋겠지만 그렇지 않다.

submitpage.php
C 언어만 받도록 하기 위해 $langmask=126을 추가한다. 위치가 중요한데, "$lang=(~((int)$langmask))&127;"의 바로 위에 넣어야 한다. 왜냐하면 $langmask=$_GET['langmask'];을 통해 덮어 씌우는 일을 막아야 하기 때문이다. (GET이라는 것은 a.php?langmask=1처럼 url로 변수를 전달하는 것이다.) 사실, contest에서는 LANGMASK 설정이 따로 있어서 이런 식으로 된 것 같다. 그러나 사용자가 직접 url을 수정해서 langmask를 바꾸면 어쩌려고 그러나? 코드를 읽다보면 이런 식으로 url 공격에 취약(?)한 부분이 보인다.

이렇게 해도 아직 완벽하지 않다. 사용자에게 보여지는 페이지는 사용자가 조작이 가능하기 때문이다. (그리스몽키 등으로 option 태그를 바꿔버리는 방법 등이 있다.) 안전하게 하려면 submit.php에서 한 번 더 language가 허용되는 language인지 확인해야 한다.

Posted by asdfzxcv
아직미분류2011. 4. 24. 01:57

이 글은 http://noexists.tistory.com/193에서 이어진다.

admin/msg.txt
공백으로 만들자.

oj-header.php
가장 뒤의 <script ...> 두 줄을 제거하자. 이상한 것이 자꾸 뜬다.

oj-footer.php
언어를 고를 수 있는데, 한국어와 영어 등 필요한 것만 남겨두고 제거하자.
불필요한 메시지를 삭제하자.

관리자 아이디 만들기
일단 보통 회원으로 가입한다.
mysql을 실행하고 "use my_oj;"까지 잘 한 뒤에, 다음 명령을 내리자.

INSERT INTO privilege(user_id,rightstr) VALUES('my_id','administrator');

여기서 administrator는 그냥 그대로 치라는 소리다. (id는 물론 상황에 맞게 바꿈.)
최초의 관리자만 이렇게 어렵게 만들고 다음부터는 관리자 페이지를 이용할 수 있다.
참고로 남의 소스를 보려면 source_browser 권한도 있어야 한다.

문제 만들기 TIP
테스트 입력이 없어도 뭔가 아무거나 적어야 채점 프로그램이 동작한다.

잘 안 될 때
/home/judge로 이동한다. (물론 설치 시 id를 다른 걸로 했으면 그것으로 사용)
/home/judge/etc/judge.conf의 설정을 확인한다.
sudo pkill judged && judged
이제 다시 시도해보자.
이래도 안 되면 run? 디렉토리들의 퍼미션을 771로 해준다.
sudo pkill judged && judged
이제 다시 시도해보자.

유사도 적발 기능이 작동하지 않을 때
특정 64-bit 리눅스에서 sim_c가 작동하지 않는 경우가 있다. 간단하게 bash에서 sim_c 명령을 내려보자. 만약 그런 명령이 없다고 나온다면, hustoj 최신 버전을 받은 후, hustoj-read-only/core/sim만 재설치를 시도하자.

hustoj 관련 다른 글
2011/04/24 - [분류 전체보기] - hustoj에서 일부 언어만 허용 (LANGMASK)
2011/04/24 - [분류 전체보기] - hustoj 기타 수정

Posted by asdfzxcv
아직미분류2011. 4. 24. 00:54

얼마 전에 hustoj를 설치했다. 아주 최근에 설치한 것은 아니고, 얼마 전에 설치한 것이라 최신 버전과 다른 부분도 있겠지만 많이 다르지는 않을 것이다. 우분투 리눅스 기준으로 설명했지만, 패키지 설치 방법만 제외하면 다른 리눅스라도 거의 비슷할 것이다.
http://code.google.com/p/hustoj/

제 1 단계: 패키지 설치

install.sh에 패키지 설치 코드가 있지만, 사용 환경에 따라서 이게 잘 안 될수도 있다. 예를 들면, 사용 환경에 svn이 없으면 설치 스크립트의 제일 처음에 나오는 svn checkout부터 안 될 수가 있다. 패키지를 설치하려면 subversion도 설치했어야 하는 거 아닌가? 그리고 인스톨 스크립트에 apt-get하고 yum이 같이 적힌 이유도 잘 모르겠다.

$ sudo apt-get update
$ sudo apt-get install subversion
$ sudo apt-get install g++ libmysql++-dev php5 apache2 mysql-server php5-mysql

제 2 단계: mysql 계정 만들기

일단 mysql 계정을 하나 만드는 것이 좋다. 쓸데 없이 root 계정을 쓰는 것은 보안상 안 좋을 수도 있으니까. 그리고 기본적으로는 jol 데이타베이스를 쓰도록 되어 있지만, 필요에 따라 데이타베이스를 다른 이름으로 해야하는 경우도 있다.

$ mysql -uroot -p
Enter password: (암호 입력)
mysql> set names utf8;
mysql> create database my_oj;
mysql> grant usage on *.* to 'db_id' identified by 'db_password';
mysql> grant all on my_oj.* to 'db_id';

제 3 단계: judge 계정 생성

채점 데몬이 실행되는 계정을 만들어야 한다. 사실, install.sh를 보면 계정 생성 명령이 있지만, uid가 겹쳐서 문제가 되는 경우도 있을 수 있다. 그러므로 안전하게 직접 설치하는 방법을 택하자. 여기서 uid를 무엇으로 하든, 그 uid가 뭔지는 알아야 한다. 사실 1536 말고 다른 uid는 안 써봤는데, 만약 uid까지 달라지면 소스 코드를 수정해야 하므로 매우 귀찮아진다. (소스 파일에서 setuid나 setresuid 부분을 수정해야 한다.)

$ sudo useradd -m -u 1536 judge

제 4 단계: 데이타베이스 테이블 생성

먼저 db.sql을 편집기로 열고 jol을 찾아서, my_oj로 고치자. 자칫 잘못하면 가장 위의 두 줄만 수정하고 넘어가기 쉬운데, 파일 아래쪽에도 jol이 등장하니 찾아서 전부 고쳐야 한다.

  • Line 2: 주석처리.
  • Line 3: use my_oj;
  • Line 295
  • Line 298

편집이 잘 된 것 같으면, "mysql -u$ID -p < db.sql"를 실행하자. ($ID는 적절히 대체.)

제 5 단계: 본격적인 설치

먼저 judge.conf를 열고 적절히 고치자.

  • OJ_HOST_NAME은 알아서 고치자.
  • OJ_USER_NAME, OJ_PASSWORD는 mysql 계정이다.
  • OJ_DB_NAME은 제 4 단계에서 생성한 것으로 고치자.
  • OJ_SIM_ENABLE은 코드 유사도 적발 기능이 필요한 경우 1로 하면 된다.

이제 install.sh를 편집기로 열고, 고쳐야 할 것들을 찾아서 고쳐야 한다.

  • 앞선 단계에서 이미 처리한 명령은 주석처리하자.
  • WEBBASE를 적절히 수정하자. 우분투 기본 설정에서는 수정할 필요가 없다.
  • DBUSER, DBPASS를 수정하자.
  • Line 24에 "cd ../.."을 추가해서 make 이후에 원래 경로로 돌아오도록 고치자.
  • 곳곳의 chown, chgrp 명령에서 www-data는 배포판에 따라 알맞게 수정하자.
  • 혹시, 제 3 단계에서 다른 계정명을 생성했다면, 알아서 적질히 고치자.

이제 드디어 "./install.sh"를 하면 된다.

제 6 단계: php 파일 고치기

이제 "/var/www" 디렉토리로 이동하자. 그리고 "JudgeOnline" 디렉토리를 마음에 드는 이름으로 고치고, 그 안으로 이동하자. 여기서 "./include/db_info.inc.php"를 열어 보면 설정할 것들이 남아 있다. 가장 중요한 설정만 적으면 다음과 같다.

static $DB_HOST="127.0.0.1";
static $DB_NAME="my_oj";
static $DB_USER="db_id";
static $DB_PASS="db_password";
static $OJ_NAME="My OJ";
static $OJ_HOME="http://server/path";
static $OJ_ADMIN="mail@server";
static $OJ_DATA="/home/judge/data"; // 혹시 계정명을 다르게 한 경우 수정.
static $OJ_LANG="ko"; // 한국어를 기본으로 한다.
static $OJ_SIM=true; // 카피 적발 기능.
static $OJ_DICT=false; // 이상한 사전이므로 제거하자.

그리고 필요에 따라 아파치 서버를 재시작하고 접속해서 테스트해보자.

다음 글에서 계속: 
2011/04/24 - [분류 전체보기] - hustoj 설치 (2)

hustoj 관련 다른 글
2011/04/24 - [분류 전체보기] - hustoj에서 일부 언어만 허용 (LANGMASK)
2011/04/24 - [분류 전체보기] - hustoj 기타 수정

Posted by asdfzxcv
아직미분류2011. 4. 13. 04:20
\[e^{\pi i}+1=0\] 버전 1.1로 바꿨다. 버전 1.1이 되면서 CDN 기능이 제공되었기 때문에, 설치가 엄청 쉽다.
<script type="text/javascript"
src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML">
</script>
이거 한 줄 넣고 --- 가로로 길어지면 블로그에서 이상하게 보여서 여기선 세 줄이지만 --- inline math는 \(\) 사이에 적으면 되고, display math는 \[\] 사이 또는 $$$$ 사이에 적으면 된다.
Posted by asdfzxcv
아직미분류2011. 4. 7. 18:47
http://kldp.org/node/52160
http://dinomite.net/2008/subversion-diff-with-vimdiff/

1. ~/vimdiff.sh
 #!/bin/bash
shift 5
vimdiff "$@"


2.
다음 명령으로 svn diff 실행
svn diff --diff-cmd ~/vimdiff.sh file.c

또는
~/.subversion/config를 고쳐서
diff-cmd = ~/vimdiff.sh

Posted by asdfzxcv
아직미분류2010. 6. 24. 02:48
1. mplayer 이용
mplayer -dumpstream -dumpfile filename mms://location

2. vlc 이용
vlc mms://location --sout filename

mmsrip, mimms 등도 있다고 하는데 써보지 않았다.

mplayer에서는 저장이 안 되는데 vlc에서는 저장이 되는 경우가 있었다.
원인은 잘 모르겠다.

윈도우에서는 넷트랜스포트(?) 등의 프로그램도 사용할 수 있다.
하지만 필자는 그냥 mplayer, vlc를 사용한다.

http://kldp.org/node/51823
http://kldp.org/node/110864

Posted by asdfzxcv
아직미분류2010. 5. 3. 11:58
사겼다는 틀린 말이고, 사귀었다가 맞는 말입니다.
그런데 유니코드를 쓰면 이런 것이 가능합니다.

http://www.ktug.or.kr/xe/?mid=KTUG_open_board&document_srl=8532

굳이 TeX을 쓰지 않고, 메모장에서도 가능하죠.

Posted by asdfzxcv