PDF 파일에 이미 삽입되어 배포된 워터마크를 매우 간단한 방법으로 삭제가 가능하다.
아크로뱃 프로 7을 기준으로 다음과 같은 방법으로 날려보자.
1. 툴바에서 마우스 오른쪽 버튼을 눌러 나타나는 내용 중 [고급 편집] 도구를 활성화 한다.
2. [고급 편집]의 [Touch Up 도구]에서 [Touch Up 개체도구]를 선택한다.
3. 손바닥이 화살표 모양으로 바뀐것을 볼 수 있다.
4. 해당 워터마크를 선택하면 파란 상자로 지울 대상을 지정해 준다.
5. Delete 키를 이용하여 날리면 끝.
2009년 12월 15일 화요일
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 코드에도 버그가 있음을 유념해야 한다.
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 코드에도 버그가 있음을 유념해야 한다.
피드 구독하기:
글 (Atom)