Category Archives: development

Yahoo YUI Compressor

출처 : http://developer.yahoo.com/yui/compressor/

요즘의 네트워크 인프라나 서버들의 고성능화를 보면 굳이 이런 작업이 필요할까 싶기도 하지만, css나 js파일 따위의 작은 텍스트파일을 매번 전송하는 것도 사용자가 기하급수적으로 늘어나는 사이트라면 조금이라도 빠른 화면 로딩을 위한 고민을 안할 수 없으리라 생각되고, 더욱더 중요한건 회사입장에서 고객사들은 언제나 자신들의 서비스가….그들의 고객들에게 더 빠른 응답속도를 보여주기를 원한다.

그런 이유로 대부분의 javascript library의 경우 full source 대비 30% 정도의 용량을 줄인 압축(minified)버전의 library를 제공하는데, YUI Compressor는 이와같이 CSS나 JS파일을 압축하는데 사용되는 오픈소스 라이브러리이다.

YUI Compressor는 GPL라이센스를 따르며, Java 1.4 이상이 설치되어 있어야 사용가능하다.

java -jar yuicompressor-x.y.z.jar myfile.js -o myfile-min.js
java -jar yuicompressor-x.y.z.jar myfile.js -o myfile-min.js –charset utf-8

위와같은 방법으로 사용한다고 함…
직관적이라 굳이 설명 그딴건 필요없을듯……
자세한건 참고URL이나 직접 설치해보고 돌려보면 알듯…….

JavaScript var 선언과 생략하는 경우의 차이점.

JavaScript 자체가 굉장히 유연한(?) 형태로 변수선언을 허용하고 있기 때문에 종종 착각하는 경우가 발생함.
JavaScript 역시 변수의 scope가 존재하는데, 아래와 var를 붙이지 않고 선언하는 경우 특정 function내부에서 선언되었지만, scope가 전역변수처럼 인식된다.

function summary() {
    resultVal = 100;
}

alert(typeof(resultVal));
summary();
alert(typeof(resultVal));
alert(resultVal);

위와같이 function내부에서 var를 붙이지 않고, resultVal이라는 변수를 바로 사용하는 경우 해당 변수가 summary() function내부의 로컬변수가 아니라, 브라우저 최상위객체(window)의 프로퍼티로 설정되며, 위의 코드를 실행하는 경우 최초에는 “undefined” 상태에서 summary()를 호출한 이후 resultVal가 전역변수(실제로는 최상위객체의 프로퍼티)로 설정되어서, 정상적으로 값을 출력한다.

위의 예제와 같이 var를 붙이지 않고, 묵시적으로 변수를 선언하여 사용하는 경우가 많은데, 이 경우 특정 function() 내부에서 선언됐다 하더라도 해당 function()안의 scope가 아니라, 전역변수처럼 사용되는 것에 주의해야 함.

고로 반드시 변수를 선언할때는 var를 붙여서 선언해야….예상치 못한 오작동을 피할 수 있다…