2013년 11월 30일 토요일

웹페이지에서 .js파일 비동기 방식으로 로드하기

참고 :  http://www.phpied.com/async-javascript-callbacks/ , http://stackoverflow.com/questions/1834077/which-browsers-support-script-async-async , https://developers.google.com/analytics/devguides/collection/gajs/asyncTracking

본 문서는 Google Analytics Tracking Code 삽입과 관련한 예제를 바탕으로 작성 되었습니다.

웹페이지 호출 시 일반적으로 .js 파일은 다운로드 되고 파싱되는 절차를 거치게 되며 이 작업이 완료되기까지 대기 상태를 거쳐 페이지 로드가 완료되게 됩니다. 이 경우 .js 파일의 용량이 클 경우 페이지 로딩 시간이 길어지는 문제가 발생하게 되고 HTML5에서는 이를 보완하여 non-blocking한 동작을 지원하기 위해 Script 태그에 Async 속성이 추가 되었습니다.

HTML5의 경우 아직 Draft단계이기 때문에 추후 변동사항이 발생할 가능성이 있습니다. 의존 관계를 갖지 않는 단일 파일의 비동기 방식 로딩에 대한 예제는 다음과 같습니다.

(function() {
    var foo = document.createElement('script'); foo.type = 'text/javascript'; foo.async = true;
    foo.src = 'foo.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(foo, s);
})();

위 코드를 이용해서 의존 관계를 갖는 .js 파일의 로딩이나 코드의 수행을 위해 다음과 같이 수정해 보았습니다.

(function() {
    var foo = document.createElement('script'); foo.type = 'text/javascript'; foo.async = true;
    foo.src = 'foo.js';
    foo.onload = foo.onreadystatechange = function() {
        //subsequent executions..

        foo.onload = foo.onreadystatechange = null;
    }
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore foo, s);
})();

만약 jQuery를 사용할 수 있는 환경이라면 $.getScript(url, successCallback)을 사용 할 수 있습니다.

위 코드는 레거시 코드를 혼용해서 작성한 코드이기 때문에 IE7 모드 부터 동작하는 것을 확인 하였지만(본 블로그의 SyntaxHighlighter에 적용되어 있습니다 xD) 제가 알지 못하는 최신 브라우저에서만 지원하는 튜닝요소가 존재할 수 있습니다. 해당 기능을 정식으로 지원하는 브라우저는 다음과 같다고 합니다.
  • IE10+ (Preview2 이상)
  • Chrome 12+
  • Safari 5.1+
  • Firefox 4+

2013년 11월 27일 수요일

MSI Star-USB3 Firmware & Driver Update

펌웨어와 드라이버를 업데이트할 대상이 되는 제품의 정보는 이곳에서..

전원 관리 기능의 버그로 종종 USB3 외장 드라이브가 사라지면서 인식이 안되는 문제 때문에 골머리 썩고 있던 중.. 펌웨어 릴리즈 노트를 확인 했더니 혹시나 했더니 역시나 드라이버와 펌웨어에 버그가 있었던 모양..

공식 사이트에서는 가장 최근 드라이버와 펌웨어를 지원하지 않기 때문에 이곳에서 펌웨어와 드라이버를 구해서 업데이트 하였다.


제품 정보는 위의 이미지와 같고 설치 된 OS가 Windows 7 64bit 버전이기 때문에 드라이버는 Version 2.1.39.0을 설치 하였고 펌웨어는 uPD720200의 마지막 버전인 3.0.3.4를 설치 하였다.

설치 후 드라이버와 펌웨어 정보를 확인한 결과는 다음과 같다.

  

혹시 업데이트를 하게 될 경우 펌웨어 업데이트는 본인이 리스크를 감수하고 진행해야 함을 잊지않길 바라며..