IE를 웹 표준과 호환되는 브라우저로 만들어주는 IE7 JavaScript 라이브러리와 JavaScript 압축 도구인 packer로 널리 알려진 Dean Edwards씨의 사이트 도메인이, 부주의에 의한 도메인 연장 실패로, 다른 사람의 손아귀로 넘어가 버렸다는 소식.

현재 사이트의 내용은 거의 그대로 옮겨져서 보여주고 있지만, 당분간 상황의 추이를 지켜봐야 겠군. 어쩌다 이런… 😕

갱신(2009.4.3): 이제서야 새로운 도메인으로 완전 이주했네요.
http://deanedwards.me.uk/

아래 한 줄의 코드 실행으로 Firefox 3(FF3), Firefox 2(FF2), Firefox(FF), Internet Explorer(IE), Safari(Saf) 그리고 Chrome(Chr)의 결과 값을 얻을 수 있다:

B=(function x(){})[-5]=='x'?'FF3':(function x(){})[-6]=='x'?'FF2':/a/[-1]=='a'?'FF':'\v'=='v'?'IE':/a/.__proto__=='//'?'Saf':/s/.test(/a/.toString)?'Chr':/^function \(/.test([].sort)?'Op':'Unknown';

퍼 나른 곳 = The Spanner – Detecting browsers javascript hacks

물론, 각 브라우저의 차기 버전이 배포되면 결과 값은 틀려질 수가 있으므로 사용에 주의를 요하지만, 종종 단순한 작업을 위한 긴급 처방으로 요긴할 때가 있다.

jQuery 1.3 버전 발표로 언제나 반가운 새로운 기능들과 성능 향상의 소식을 알려왔다.

발표 내용을 요약해 보면,

  • 속도 빠르기로 소문난 CSS selector engine인 Sizzle의 채용으로 DOM querying과 관련된 전반적인 속도 향상. (이전 버전보다 거의 49% 속도 개선이 있었다고 함.)
  • Event delegation을 위한 “live events” 기능을 지원. 이미 적용된 live event를 없애려면 die method를 써야 함.
  • jQuery의 event 시스템W3C standards에 맞게 다시 손보면서, event handling이 훨씬 손쉬워졌으며 모든 브라우저들에서 부드럽게 돌아가도록 했다.
  • HTML Injection 코드를 다시 작성해서, HTML injecting 작업이 더 빨라짐. (전반적으로 6배 정도의 속도 향상이 있었음.)
  • offset method가 재작성되면서, 3배 더 빨라졌음.
  • 더 이상 Browser/userAgent Sniffing 질을 그만두고, 대신 Feature Detection 기술을 사용하면서 앞으로 더 긴 미래를 대비하게 됨. 당분간 jQuery.browser 속성은 plugins 호환성을 위해 계속 남겨둔다고 한다.

더불어서, 새로운 모습의 jQuery 1.3 API browser도 소개되었는데, API 탐색이 훨씬 세련되고 간편해졌다. 여기에, AIR를 이용한 offline browser도 같이 제공.

jQuery API Browser

언제나 느끼지만, jQuery와 같은 JavaScript 라이브러리가 없었다면, 황량한 무법천지에 떨구어진 맨살을 드러낸 웹 개발자들의 어깨에 얼마나 더 무거운 짐이 억세게 짓눌러졌을까를 상상해보며, 다시한번 jQuery 탄생 3주년을 축하하고 Software Freedom Conservancy의 일원으로서 앞으로도 든든하게 오랫동안 개발자 곁에 함께하기를 바란다.

웹 페이지에 jQuery를 추가할 때, 이왕이면 Google 서버에서 빠르게 전송해주는 놈을 애용하자.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" type="text/javascript"></script>

아래 코드를 이해하려면 JavaScript 만의 특성이 가미된 scope과 closures 이해하고 있어야 한다.

function add (x) {
  return function (y) {
    return x + y;
  };
}
var add5 = add(5);
var no8 = add5(3);
alert(no8); // Returns 8 

JavaScript를 좀 더 깊게 이해하고 좋은 코드를 짜기 위해서는 꼭 알고 있어야 할 부분이지만, 처음 접하는 사람들에겐 난해하기 마련인데, 마침 Robert씨가 알기 쉽게 풀어서 설명해 놓은 글을 올려놓았다.

더불어서, 위 소개 글에서도 잘 설명되어 있는 JavaScript Module Pattern을 약간 변형시킨 것으로, 스크립트 사용 용법이 좀 더 일관되고 패턴 속의 어떤 함수와 변수가 공개적으로 접근 가능한지를 훨씬 명확하게 보여주는 Revealing Module Pattern도 참고할 만하다. 이 패턴은 원한다면 실제 private 함수를 좀 더 명확한 이름을 지정해 놓고 공개해서 되돌려줄 수도 있는 장점이 있다.

얼마전 Google이 새로운 웹 브라우저 Chrome을 발표하면서, 많은 이들의 관심을 모았었는데, 그 중 Google Chrome 브라우저에 내장된 JavaScript 엔진인 V8의 월등한 성능에 많은 찬사가 이어졌었다.

이에 대한 반격인가? 방금 전 Safari의 WebKit 팀에서도 신형 JavaScript 엔진인 SquirrelFish의 개량형인 SquirrelFish Extreme을 소개하였다.

예전 SquirrelFish 엔진보다 무려 두 배 이상의 성능 향상이 있었다고 하는데, 당장 WebKit Nightly 버전을 받아서 SunSpider JavaScript 성능 테스트를 돌려본 결과 현 Safari 3.1버전보다 거의 세 배 이상의 성능을 보여주고 있다. 이 수치는 최신 V8 엔진보다 SquirrelFish Extreme이 36% 빠른 결과라고.

WebKit Nightlies의 신형 JavaScript 엔진인 SquirrelFish Extreme의 성능을 나타내는 도표로, WebKit 3.1보다 세 배 이상, 이전 SquirrelFish 엔진보다는 두 배 이상의 성능을 보여주고 있다.

이 쯤 되면, TraceMonkey의 분발도 지켜봐야겠군. 😀