Gareth Heyes씨가 "링크로 실행되는 자바스크립트의 모든 변형을 만드는" 자바스크립트 프로토콜 퍼저(Fuzzer)를 작성하셨습니다.

데모를 보시면 퍼징(fuzzing)에 가능한 모든 옵션을 보실 수 있습니다. 여러 브라우저에서 테스트하다가 jav&#57343ascript: 가 작동한다는 재밌는 결과를 얻었습니다. 이 말은 아래 코드가 실행된다는 의미입니다.
[code:xml]
<a href="jav&#56325ascript:al&#56325ert(1)">test</a>


from JavaScript Protocol Fuzzer
Posted by 행복한고니 트랙백 0 : 댓글 0
Hendger Wang씨는 최근 IE6의 메모리 문제에 대한 해결책을 찾기 위해 수많은 중국어 블로그를 탐색했습니다. 그의 눈길을 끌었던 것 중 하나는 try ... fianlly를 사용하여 메모리 누수를 멈추기 위해 객체를 null로 바꾼 매우 재치있는 방법이었습니다. 아래가 메모리 누수가 일어나는 코드입니다.
[code:js]
function createButton() {
      var obj = document.createElement("button");
      obj.innerHTML = "click me";
      obj.onclick = function() {
        //handle onclick
      }
      obj.onmouseover = function() {
        //handle onmouseover
      }
      return obj;//return a object which has memory leak problem in IE6
}

var dButton = document.getElementsById("d1").appendChild(createButton());
//skipped....

하지만 다음과 같은 코드를 사용하면 방지할 수 있습니다.
[code:js]
function createButton() {
      var obj = document.createElement("button");
      obj.innerHTML = "click me";
      obj.onclick = function() {
        //handle onclick
      }
      obj.onmouseover = function() {
        //handle onmouseover
      }
      //this helps to fix the memory leak issue
      try {
        return obj;
 
      } finally {
        obj = null;
      }
    }
    var dButton = document.getElementsById("d1").appendChild(createButton());
}

더 많은 데모, 개념을 증명하는 예제와 "finally"에 대한 설명은 Hedger씨의 블로그에 그가 작성한 글에 있습니다.
Finally, the alternative fix for IE6's memory leak is available

from Is "finally" the anwer to all IE6 memory leak issues?
Posted by 행복한고니 트랙백 0 : 댓글 0
사용자 삽입 이미지
Nitobi 에서 크로스 브라우저 디버깅 스크립트인 NitobiBug를 릴리스했습니다:
이것은 브라우저 기반의 JavaScript  객체 로거이자 인스펙터입니다 - Firebug와 유사하죠. NitobiBug는 일관성과 rich Ajax 응용프로그램 개발을 위한 강력한 도구를 제공하기 위해 다른 브라우저에서도 동작합니다(IE6+, Safari, Opera, Firefox).
이렇게 사용할 수 있습니다:
[code:js]
// inspect an object
var myObject = {a:234523, something:'else', mylist:[32423,4556,'sdfs']}; nitobi.Debug.log(myObject);
 
// inspect a DOM element
var myDomObject = document.getElementById('someID'); nitobi.Debug.log(myDomObject);
 
// output text
nitobi.Debug.log("This is a test");
창의 위치를 기억하며, DOM 디버그 창의 "show me" 링크를 클릭하면 강조된 엘리먼트를 (가능하다면) 보시게 될 것입니다.


from NitobiBug: Cross browser debugging
Posted by 행복한고니 트랙백 0 : 댓글 0

Cuzillion Test

Cuzillion 테스트


Steve Souders 씨가 Cuzillion이라는 이름의 멋진 작은 도구를 릴리스했습니다. 이 도구는 브라우저에서 성능 최적화를 위한 각기 다른 테스트를 해주고, 여러 사람과 결과를 공유할 수도 있다고 합니다.

위 그림과 같이, 페이지에 포함할 수 있는 다양한 리소스들을 간단하게 추가해서, 브라우저가 어떤 식으로 이러한 리소스를 처리하는지 살펴보고 이를 통해 페이지의 성능을 최적화 할 수 있는 툴입니다(최적화는 물론 알아서 하셔야합니다).

from Cuzillion: Performance best practices tool on Ajaxian
Posted by 행복한고니 트랙백 0 : 댓글 0


Justin Meyer 씨와 JavaScriptMVC 팀에서 새로운 Test 플러그인을 만들었습니다.

Test는 Write와 Drag같은 조합 이벤트는 물론 모든 주요 DOM 이벤트와 Ajax를 시뮬레이션하고, assertion을 사용할 수 있도록 합니다. 또한 분할된 콘솔창에서 기능과 단위 테스트를 실행합니다. 또 다른 멋진 기능은 Controller 플러그인과 같이 사용한다면, TodoClick과 같은 각 컨트롤러 액션의 이벤트를 시뮬레이션해주는 헬퍼 메소드가 자동으로 생성된다는 것입니다.

예제 테스트 함수입니다:

[code:JScript]
test_drag: function(){
    // click the second todo
    this.TodoClick(2);
    // call done_dragging after Drag is complete
    this.Drag($('draggable'),{from: 'pointA', to: 'pointB', callback: this.next_callback()})
},
done_dragging : function(){
    // did the drag complete successfully
    this.assert_equal(1, $('pointB').next().childNodes.length);
}

데모를 확인해보세요.

from JavaScriptMVC Test Plugin on Ajaxian
Posted by 행복한고니 트랙백 0 : 댓글 0

from DOH, let me test my code! on Ajaxian

Dustin Machi 씨가 JavaScript 테스트 프레임웍인 DOH, the Dojo Objective Harness 에 대해 썼습니다.

Dojo 응용프로그램과 사용가능하지만 Dojo가 없어도 가능합니다.

테스트를 하려면 몇가지 패턴을 따라주어야 하는데, Dustin 씨가 여러분이 따라 할 수 있도록 문서를 작성했습니다.

HTML에 이 페이지를 전환하는 코드를 넣으면 끝납니다:

[code:xml]
<meta http-equiv="REFRESH" content="0;
    url=../../../util/doh/runner.html?testModule=company.tests.foo
          &registerModulePath=company,../../company">

이런 식으로 테스트를 등록할 수 있습니다:
[code:js]
doh.register("project.tests.TestGroupA",
       [
               {
                       name: "My Function Test [_myfunc()]",
                       timeout: 4000,
                       runTest: function(){
                              var result = _myFunc("a", "b");
                              doh.assertEqual("Foo", result);
                            }
                 }
   ]
);
Posted by 행복한고니 트랙백 0 : 댓글 0