2009년 12월 15일 화요일

PDF 파일에 삽입된 워터마크 삭제

PDF 파일에 이미 삽입되어 배포된 워터마크를 매우 간단한 방법으로 삭제가 가능하다.
아크로뱃 프로 7을 기준으로 다음과 같은 방법으로 날려보자.

1. 툴바에서 마우스 오른쪽 버튼을 눌러 나타나는 내용 중 [고급 편집] 도구를 활성화 한다.
2. [고급 편집]의 [Touch Up 도구]에서 [Touch Up 개체도구]를 선택한다.
3. 손바닥이 화살표 모양으로 바뀐것을 볼 수 있다.
4. 해당 워터마크를 선택하면 파란 상자로 지울 대상을 지정해 준다.
5. Delete 키를 이용하여 날리면 끝.

2009년 12월 1일 화요일

Tinyos-1.x SurgeTelos Bug

tinyos-1.x/apps/SurgeTelos는 tos/lib/MultiHopLQI 라우팅 프로토콜을 사용한다.
tinyos-1.x/tos/lib/MultiHopLQI 에는 치명적인 버그가 하나 존재한다.
tinyos-1.x/tos/lib/MultiHopLQI/MultiHopLQI.nc 파일을 살펴보면 데이터 전송 시 initializeFields에서는 다음과 같이 처리한다.

251 command result_t RouteSelect.initializeFields(TOS_MsgPtr Msg, uint8_t id) {
252 TOS_MHopMsg *pMHMsg = (TOS_MHopMsg *)&Msg->data[0];
253
254 pMHMsg->sourceaddr = pMHMsg->originaddr = TOS_LOCAL_ADDRESS;
255 pMHMsg->originseqno = gCurrentSeqNo;
256 pMHMsg->hopcount = gbCurrentHopCount;
257
258 return SUCCESS;
259 }

여기서 255라인의 gCurrentSeqNo++ 해야 제대로 동작하게 된다.
만약 이 부분의 처리를 해 주지 않고 데이터를 30초당 1개 보다 빠르게 전송하면 데이터 패킷들이 selectRoute안에서 잘못 처리되는(duplicate suppression) 현상이 발생하게 된다.

tinyos-2.x/tos/lib/net/lqi/LqiRoutingEngineP.nc를 보게되면 이곳의 initializeField 함수는 위와 같이 제대로 고쳐져 있음을 확인할 수 있다.

이처럼 tinyos 코드에도 버그가 있음을 유념해야 한다.