2010년 3월 23일 화요일

IE Error : KB927917

IE는 다른 브라우저들과는 달리, 자신이 속한 DOM 트리의 부모 엘리먼트를 조작하지 못하게 되어있다. 즉, 다음과 같은 코드는 에러를 만든다.

<div id="something">
  <script type="text/javascript">
    document.getElementById("something").appendChild(anything);
  </script>
</div>
자식엘리먼트에 속한 script블록이 자신의 부모엘리먼트에 대한 조작을 하려하고 있는 상태이다. 이 경우 다른 브라우저에서는 아무런 문제없이 정상작동하지만, IE에서는 KB927917 에러를 발생시킨다. 대표적인 조작 메쏘드는 appendChild, removeChild, innerHTML 등.

이 문제를 해결하기 위해서는 해당 스크립트를 조작대상 엘리먼트(이 경우에는 "something")의 바깥으로 빼면 된다. (애초에 모든 스크립트를 head 섹션안에 두고, body안에는 script 태그를 없애고, onload를 이용해서 Late Binding을 시켜주면 아예 발생하지 않는다만, 이렇게 리팩토링하라고 하면 모두 좌절할 듯. 게다가 텍큐는 내가 안짰다규... T_T)

MSDN을 보면 IE8에서는 이 버그가 해결되었다고 하는데(아주 자랑스럽게, 해결책을 "Upgrade to IE8"이라고 내놓고 있다.), 여전히 발생하는 걸 보면 안고쳐진게 틀림없는 듯.

아무튼 어제 쓴 포스팅에 대한 AS 차원의 글.



URL Shortener - 재수정 -

Permalink 처럼 Shortenlink라는 이름으로 Shorted URL이 블로그툴이나 기타 CMS에서 기본 제공되면 좋겠다. 굳이 goo.gl 같은 Shortener를 따로 쓰지 않게. (귀찮음)
예를 들어 텍스트큐브라면 "http://tc.it/XXXX" 같은 Shorted URL을 충분히 자체제공할 수 있지 않나?


--- 수정 ---

그래서 만들었음.

아래의 코드를  <body>바로 아래에 넣고,


<script type="text/javascript" defer="defer">
//<![CDATA[
var urlPool = new Array();
function  shortenURL(entry_id) {
  urlPool.push(entry_id);
}

function doShortenURL() {
  var len = urlPool.length;
  for (var i = 0; i < len; i++) {
    var entry_id = urlPool[i];
    window.googl_callback=function(response){
      if(response.error_message){
        alert('Error:' + response.error_message);
      }else{
       var short_url = response.short_url;
       var rep = document.getElementById('shorten_url_' + entry_id);
       rep.innerHTML = short_url;
       rep.href = short_url;
      }
    };
    var u='http://ebadac.textcube.com/' + entry_id; // <- 요부분 각자 블로그에 맞게.
    var s=document.createElement('script');
    s.src='http://ggl-shortener.appspot.com/?url=' + encodeURIComponent(u) + '&jsonp=googl_callback';
    void(document.body.appendChild(s));
  };
}
//]]>
</script>

그 다음, </body>의 바로 위에, 아래 코드를 붙여 넣고...

<script type="text/javascript">
//<![CDATA[
doShortenURL();
//]]>
</script>






다음 코드를 각 엔트리의 적절한 구역에 끼워넣으면 됨
<span class="shorten_url"> |
<script type="text/javascript">
//<![CDATA[
shortenURL([##_article_rep_id_##]); //<- 이거 블로그 도구마다 다를테니 알아서.. 텍스트큐브는 이렇다오.

//]]>
</script>
이 글의 단축URL[<a id="shorten_url_[##_article_rep_id_##]" href="#"> </a>]
</span>
내 경우에는 제목 밑에 대충 붙였음.

그러면 아래처럼 붙음.

아마도 tistory나 wordpress나 대충 비슷하게 될 거라고 생각함.(그런데 아마 wordpress에는 플러그인이 있는 것으로 알고 있음)

버그 있다면 알아서 잡으세요. 오랜만에 코드잡으니까 귀찮다능...


--- 재수정 했음 ---
IE8의 악명높은 KB927917 버그(?) 때문에 다시 수정했음. IE 안쓴지 너무 오래되어 이런 문제가 있는지 생각도 못했다능.


2010년 3월 22일 월요일

한겨레-광고 유감

한겨레에 들어가 신문기사를 읽다보면,
기사 가운데를 떡하니 차지하고 있는 호버광고들이 있다.

기사 옆도 아니고 기사를 가리는 광고라... 이건 방송에서 뉴스 중에 PIP로 화면 1/4쯤 CF 내보내는 것과 비슷할까?

커서키나 페이지 다운 등을 누르면 잠시 사라지지만, 사라졌다 싶어 기사 읽는 도중에 또다시 덮는다. 젠장.


경영은 중요하지만, 이건 정말 아니다 싶다. 정말로 신문사가 수익을 낼 수 있는 방법이 이런 것 뿐인가?

2010년 3월 13일 토요일

iPad 질렀음

인증샷....


California에서는 Recycle fee를 $8을 받는다는 사실을 처음 알았음. 이런 젠장.
국내에 들어올 때에는 이 가격에 10% 부가세포함.

배송대행은 몰테일 이용.
개봉기는 4월 첫째주에....

ps. apple의 1세대 제품은 마루타인지라 어떤 건지 맛만 보고 팔아버릴까 해서 걍 최소사양으로 샀음.

2010년 3월 12일 금요일

오지라퍼


우리 빌딩 화장실에 걸려 있는 공익(?) 광고.
이 광고를 보고 항의전화가 걸려왔다.
왼쪽그림은 그렇다 치고, 오른쪽 그림을 문제삼는데, 외국인들이 보고 한국 사람들은 모두 소변기에 큰 일을 보는 걸로 알면 어떻게 하냐고, 나라 망신이니까 당장 내리라고...

오지라퍼들이 많다는 쪽이 더 나라망신 아닐까. 유머는 유머일 뿐.

2010년 3월 3일 수요일

간만에 만난 쓸만한 책 - 리팩토링 HTML

리팩토링 HTML - 10점
엘리어트 러스티 해럴드 지음, 김인교 옮김/에이콘출판
Two thumbs up!
웹개발자들이 웹을 모른다. 어제 오늘 일도 아니었지만.

이 책은 제목대로 기존 웹사이트의 HTML을 리팩토링하는 법을 알려준다. 하지만 정확히 말하자면, 개발자들의 잘못된 버릇, 오해, 틀린 개념을 리팩토링한다. 그것도 한 번에 한 단계씩, 콕콕 찝어서.

사실 리팩토링이 아니라, 올바른 클라이언트사이드 개발법에 대한 교과서라 할 수 있다. 이전에 나왔던 다른 웹표준관련 도서에 비해 개발자들의 취향에 가장 잘 맞을테다. 왜냐하면 고민할 필요없이 여기에 나오는 규칙대로 "코딩"하기만 하면 되므로. (기존 국내에 소개된 책들은 이 책에 비하자면 충분히 비실용적이자 형이상학적이라고 하겠다. 지금 와서 하는 소리지만.)

우리 회사 개발자들에게 하나씩 사주고 싶네. 물론 내 돈으로는 말고.