rein’s world

프로그래머, 독서가, 게이머 그리고 블로거

SPAM 답글 막기  

출장갔다온 동안 증식 -_- 해댄 답글들을 제거하고, 이후에는 이런 일을 최대한 막기 위해, 다음과 같이 WP를 변경
(아마도 WP용 폼에 맞춰서 답글을 생성하는 봇이 있는 것 같음)

  1. Form에 숨겨진 필드 추가 (cmd5 라고 id를 붙임)
  2. Submit할 때 java script에서 md5 sum을 계산하고 ( 의 코드 사용) cmd5의 숨겨진 값에 적어넣고 form 전송
  3. Server 쪽에서 commet를 처리하는 부분에서 미리 계산된 md5 checksum과 PHP의 md5 checksum 함수를 사용해서 계산한 결과를 비교함
  4. 두 개가 같은 경우에만 comment 허용

대충 이런 식으로 답글을 처리하기 시작했으니 이제 browser (그것도 java script가 되는)를 에뮬레이션 하는 수준의 로봇만 답글을 달 수 있을 거라고 믿고 있는 중 Orz

…삽질은 이걸로 끝난게 아니었음
일단 동아리 서버의 PHP는 UTF-8으로 인코딩된 문자열을 처리하고, 웹 브라우져들은 윈도우를 사용한다고 가정할 때, 아마도 뭔가 다른 인코딩으로 처리되는 듯함 (IE/FF다 같은 hash 값이 나온 것으로 보아)

그래서 해본 것이, 일단 utf-8 -> cp949로 전환해서 테스트: 실패 (값이 다르게 나옴)
이번엔 윈도우 내부 처리 방식인 UCS2로 전환해서 테스트: 역시 실패 -_-

도대체 웹 브라우져에서는 뭘로 인코딩을 해서 쓰는걸까? -_-;
(동일한 알고리즘 구현이란 것은 확인할 수 있었던게(사실 UCS2는 테스트할 이유가 없었던게), 영문자만 사용하면 (즉 ascii만 쓰면), ascii-compatible한게 보장되는 UTF-8 에선 서버/웹브라우져 양쪽에서 동일한 hash 값이 나온다는 것 -_-)

결론이 나왔음. 일단 내가 실수한 부분이 있었고 (java script에 인코딩 관련된 부분 (한 캐릭터 크기 관련)이 있었음), 이거 잡고나니 UCS2로 내부적으로 처리되는 문자열이 javascript 쪽으로 넘어간다는 것을 알 수 있었음. 그래서 서버에서도 이걸 emulation해서 넘어온 문자열을 UCS2로 되돌린 후에 md5 hash를 계산함

이제 문제점들은,

  • 내부 문자열 처리가 2바이트가 아니면? -_- 어찌 꼬일지 모름
  • 결국엔 OS 인식해서 내부 문자열도 추론해야할 판이라는 것?
  • MS Windows 환경의 IE/FF는 둘다 잘 동작하는 것을 확인했는데, 지금 당장 쓸 수 있는 리눅스 머신이 없어서 리눅스 머신에서 글 쓰는 것은 테스트 못하는 중. 혹시 리눅스에서 안된다 싶은 사람은 MSN이나 hanirc의 #snucse나 기타 등등의 수단으로 알려주면 고맙겠음

By rein

June 27th, 2006 at 5:26 pm

Posted in Uncategorized

Tags: ,

다시 한 주 시작  

지난 주말은 노느라 정신없었지만 ( –), 덤으로 이 블로그가 있는 동아리서버 (uriel; upnl.org)도 학교 일부 정전 (토요일 아침~일요일 저녁)에 포함된 관계로 -_- 일단 꺼져있었음

주말에는 WoW offline 모임이 있었고, 어제는 대전 ETRI로 출장이라 연구실엔 대략 간만에 나온듯한 기분 (금요일 오후에 퇴근하고 화요일 오전에 처음 나왔으니)

그나저나 블로그에 스팸 답글들이 왕창 달려서 골치가 아픔. 광고효과가 있거나 말거나 왜 내 블로그에 Orz
생각만 했었던 (…) 블로그 답글 필터링 정책들을 하나씩 넣어봐야 -_- (안되면 코드 고쳐서라도 되게해야지뭐; )


By rein

June 27th, 2006 at 10:55 am

Posted in Uncategorized

Tags:

짜증나는 우체국 택배  

집에서 여름용의 이것저것 (?)과 과일을 좀 보내 준다고해서 택배를 기다리던 참이었다.

아침에 별다른 문자가 없길래 (배달 당일에는 문자가 오거나 전화가 온다), 그냥 평소처럼 연구실에 나와있던 상태.
근데 방금 전에 전화가 오더니

택배직원 : 우체국 택밴데 집에 있나요?
본인 : 없죠 -_- (아침에 문자고 뭐고 안왔는데 내가 집에서 뒹굴고 있겠냐)
택배직원 : 주인집에도 사람이 없는데, 집 근처 어쩌구저쩌구 (나도 잘 이해 안가는 설명이라 기억 못함)에 있는 슈퍼마켓 -_- 에 택배를 맡겨놓을테니 나중에 찾아가세요
본인 : 네? -_- (어이 당신 개념은 어디에?)

일단 닥치고 내일 다시 배달하라고 해놓긴했는데, 이건 뭐 어쩌자는거야 -_-
좀 짜증이나서 우체국 민원 신청 번호로 전화를 거니, `인터넷으로 다시 써주세요’

…전화 번호는 왜 올려놓은거냐

후우 우체국 좋아졌다는 소리 말짱 거짓말이었다는걸 오늘 제대로 체험했음


By rein

June 20th, 2006 at 11:45 am

select tag의 OnChange event 처리 삽질  

HTML select tag에는 선택된 대상이 변화될 때 발생하는 OnChange라는 이벤트가 있다.
요즘 하고있는 뻘짓 (…) 에서 이 이벤트를 받아서, 페이지 내의 이미지를 바꾸는 스크립트를 만들었는데, IE에서는 키보드 커서키로 대상을 바꿀 때도 OnChange event가 발생되고 전달되는데, Firefox에서는 포커스가 없어질 때만 event가 생기는 것이다 -_-;

그래서 구글링 + 스펙 검색으로 얻어낸 결과: http://www.w3.org/TR/html4/interact/scripts.html#adef-onchange

onchange = script [CT]
The onchange event occurs when a control loses the input focus and its value has been modified since gaining focus. This attribute applies to the following elements: INPUT, SELECT, and TEXTAREA.
…그런 것이다 표준에서는 `focus를 잃을 때’ 발생하게 되어있는 것이다. 문제의 원인은 알았다 치고 이걸 어찌 해결해야 할려나 Orz

… 말 그대로 꼼수로 처리했음. 강제로 focus를 다른 텍스트 입력창으로 옮겼다가 다시 가져온 후, 10ms(?) 후에 원래 불려야하는 함수를 호출하는 것으로;


By rein

June 10th, 2006 at 9:49 pm

WoW: 쌍둥이황제 kill!  

내가 속해있는 공격대에서 4주째 도전 중이던 보스가 있다.

블리자드의 악랄한(?) 보스 디자인의 한 끝을 보는 느낌의 녀석들임. 말 그대로 쌍둥이 -_- 처럼 생긴 인간형…처럼만 생긴 놈이 나온다

  • 거대한 대검을 들고 다니는 베크날라쉬 (Emperor Vek’nilash), 맨 손으로 마법만 사용해대는 베클로어 (Emperor Vek’lor) 두 명과 동시에 싸워야한다.
  • 둘은 주기적으로 30~40초마다 서로의 위치를 바꾼다 (서로 위치를 바꾸는 순간이동 사용)
  • 라쉬는 물리공격만 사용하고, 물리 데미지만 입는다 (마법면역), 반대로 로어는 마법 공격만 사용하고 마법 데미지만 입는다.
  • 둘 사이의 거리가 일정 이하가 되면 서로의 체력을 회복시킨다 -_-

대충 저런 놈들인데, 라쉬는 일정시간동안 탱커의 회피율, 방어율, 무기막기율을 대폭 감소시키는 스킬을 사용해서 탱킹을 매우 힘들게 만들고, 로어는 광역 블리자드 공격과 주기적으로 폭발하는 벌레를 생성한다. 덤으로 기본 공격인 어둠의 화살의 데미지는 단일 마법 중엔 아마 저보다 쎈것도 드문 물건이다 -_-; (이벤트성 즉사 공격류만 빼면)

조금 높이가 작은 이등변 삼각형의 양 끝 쯤에 저 두마리를 데려다 놓고, 밀리 데미지 파티 (전사/도적/사냥꾼)은 양쪽을 왕복하고, 캐스터가 로어가 자기 쪽에 있을 때 암흑 저항을 대폭 올린 흑마법사 한 명이 어둠의 화살을 데미지를 입는 동안 마법 공격을 하는 방식으로 진행해서 어제 드디어 저 두놈을 무릎 꿇리는데 성공했다.

사실 패턴은 어찌보면 단순해 보이는데, 단순 패턴을 유지하지 못하게 랜덤하게 사용되는 블리자드와, 탱커가 탱킹하는데 엄청난 지장을 가져오는 혼돈의 일격 (회피율 등등이 감소; 덤으로 데미지도 물리 계열 스킬 중 최상위권)
단순해 보이지만 변화에 잘 대응해야하고, 한 자리에서 대처할 수 없기 때문에 쉴새 없이 이동하게 만드는 구조, 그리고 전투 개시 후 15분이 넘으면 광폭화되서 전멸하게되는 시간 제한까지 -_-;; 블리자드의 악의적인 (…) 디자인이 돋보이는 보스였다고 생각한다.

스샷은 물리 공격 보스인 라쉬 쪽에서 찍은 것. 저 때 최후의 공격을 하고 있었음 (약 13분 경과시점)
twin_emp.PNG


By rein

June 1st, 2006 at 1:36 pm

Posted in Uncategorized

Tags: