'팁'에 해당되는 글 3건

  1. 2008.10.05 LSB에 가장 가까운 비트 by movsd
  2. 2007.02.04 플래쉬 플러그인 관리 by movsd
  3. 2007.02.01 특정 사이트로의 모든 넷웍 접근 막기 by movsd
  • 2의 보수를 사용하는 기계에서, 정수 i의 맨 아래쪽 1 비트(1로 세트된 비트 중 LSB에 제일 가까운 비트)를 0으로 만들려면 C 수식으로 i & (i-1)를 쓴다. 부호없는 정수로 생각하면, 1을 빼는 연산이 항상 맨 아래 비트를 0으로 만들고, 그보다 더 LSB쪽에 있는 비트는 1로 만든다는 것을 쉽게 알 수 있다.

    이 방법을 사용한 예는 Ken Thompson이 Unix에 썼다고 하는 전설이 있는 비트 수 세기 루프이다.

    /* i에 비트 수를 세고자 하는 값이 들어있다. */
    bitcount = 0;
    while (i != 0) {
        bitcount++;
        i &= i - 1;
    }
    이 코드는 2의 보수를 사용하는 모든 기계에서 작동한다.
  • 반대로, 2의 보수를 사용하는 기계에서 정수 i의 맨 아래쪽 1 비트만 남기고 다 지우려면, C 수식으로 i & -i를 쓴다. 이것도 2의 보수방식으로 부호를 바꾸는 연산이 NOT연산후에 1을 증가시킨다는 것을 기억하면 이 코드를 이해할 수 있다.

    이 방법을 응용하면, 어떤 정수가 2의 누승인지 쉽게 알아낼 수 있다. 이진법에서 2의 누승은 단 하나의 비트만 1이고 나머지 비트는 모두 0이다. 그러므로, 이렇게 하면 빨리 알아낼 수 있다:

    if ((i & -i) == i) { /* 2의 누승 */ }
    이 역시 머신워드 크기에 관계없이 2의 보수를 사용하는 모든 기계에서 작동한다.
  • 맨 아래쪽 1 비트가 몇번째 비트인지 알아내는 것은 루프를 돌아도 알아낼 수 있지만, 인텔계열 386이상의 CPU에서는 bsf명령을 쓰면 한번에 알 수 있다. BSD계통의 Unix에는 같은 목적으로 ffs()라는 함수가 제공된다.

Posted by movsd
,

인터넷 익스플로러 7에서는 플러그인을 쉽게 관리할 수가 있는데, 그러한 기능이 이전 버전에는 부족하다. 특히, 여러가지 이유로 인터넷 익스플로러 6을 써야만 하는 우리나라의 현실에서는 어쩔 수 없이 이런 꽁수를 써야한다.

플래쉬 자체는 좋다거나 나쁘다거나 할 거리가 없는 하나의 매체기술일 뿐이다. 하지만, 그것이 광고 전달 기술로 사용되면서 넷웍트래픽 양이 엄청나게 늘어나서 불만스럽다. 한편, 플래쉬는 근본적으로 사용자의 컴퓨터의 자원을 이용하는 방법이다. 보기 싫은 그들의 광고를 나의 의사와는 관계없이 억지로 보기위해 나의 컴퓨터의 자원을 사용한다는 것은 별로 기분 좋은 일은 아니다.

이를 해결하는 방법으로 가능한 방법들은, 하나, 인터넷 익스플로러 6를 버리고 파이어폭스나 인터넷 익스플로러 7같이 관리하기 편한 브라우저를 설치하는 방법, 둘, 이전 글에 설명한 방법을 이용해서 아예 플래쉬 광고 서버로 가는 넷웍 연결을 차단하는 방법, 그리고, 지금 얘기할 레지스트리를 조작하는 방법이 있다.

플래쉬 플러그인을 관리하는 레지스트리는 상당히 깊숙히 숨어있다. 이를 REGEDIT 4형식으로 쓰면 다음과 같다.(1)

REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{D27CDB6E-AE6D-11CF-96B8-444553540000}]
"Compatibility Flags"=dword:00000400

플래쉬를 다시 사용하려면 이 키를 다시 지우면 된다.

REGEDIT4

[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{D27CDB6E-AE6D-11CF-96B8-444553540000}]

물론 인터넷 익스플로러를 다시 시작해야 효과를 볼 수 있다.

장점: 플러그인 안 쓸때의 장점과 동일, 즉, 내 컴퓨터의 안정성이 좋아지고, 이유없이 속도가 느려지는 일이 없다.

단점: 플래쉬 플러그인이 없으면 메뉴조차 볼 수 없는 사이트가 우리나라에는 너무 많다. 파이어폭스 쓰는 만큼 고통스럽지는 않지만, 플래쉬를 안쓰면 상당한 인내력을 요구한다. (우리나라 사이트는 아니지만) YouTube는 플래쉬가 없으면 소용없다.

----

(1) 아무리 해봐도 티스토리/태터둘즈에서는 이 내용이 너무 길어서 제대로 보이지 않는다. 이를 우회하는 방편으로, 같은 내용을 다음의 링크에 .REG 파일들에 저장했다.

Posted by movsd
,

어떤 사이트들은 정말 근처에 가고 싶지 않다. 문제는 그런 사이트들은 더 많은 사람이 접근해야 돈을 버는 곳이라서, 수단과 방법을 가리지 않고 사람들의 접속을 유도한다.

대표적인 예가, 아무때나 검색어와는 전혀 상관없이 튀어나오는 살색 사이트들. 혹은, 엄청나게 큰 플래쉬광고를 밀어넣는 사이트들.

윈도우즈 2000이후의 모든 윈도우즈 컴퓨터에는 이를 해결할 아주 간단한 방법이 있다. 바로, %systemroot%\system32\drivers\etc\hosts (통상 c:\windows\system32\drivers\etc\hosts) 를 편집하는 것이다.

이 파일의 형식은 다음과 같다.

숫자주소 이름주소

여기서 숫자주소를 "127.0.0.1"로 적어주고 이름주소에 막고 싶은 사이트 이름을 적어주면 된다. 예컨대,

127.0.0.1 pagead2.googlesyndication.com

라고 적어주면 어떤 회사의 광고서버로 오고가는 모든 트래픽을 막을 수가 있게된다. 한줄에 하나씩 원하지 않는 사이트들을 적어주면 이후로는 그 사이트들로는 접근하지 않는다. 주석은 #로 시작한다. 예컨대,

# 광고서버 차단
127.0.0.1 pagead2.googlesyndication.com

유용한 경우: 살색 사이트 막기. 광고 서버 막기. 나 몰래 뒤에서 특정 서버 접근하는 프로그램 막기.

----

편집 1: 주석에 대한 설명 추가. 또한, 원래의 /etc/hosts목적과는 다른 결과를 위해 사용하는 방법이니 hack이 맞는 분류로 보인다.

편집 2: 광고를 막으려는 목적으로 이 방법을 사용할 때에는, 가짜 웹서버를 이용하면 지저분한 연결실패 메세지를 보지 않고 광고가 있던 자리를 공백으로 만들어 준다.

Posted by movsd
,