일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Shell
- PostgreSQL
- Git
- UiARD
- gitlab-ci
- Oracle
- UiPATH #UiRPA #RPA
- UIPATH
- runner
- gitlab-runner
- MaxGauge
- sonar-qube
- docker
- Xen
- container-registry
- RPA
- gitlab
- Today
- Total
올챙이시절 기록소
JavaScript Obfuscator 코드압축 & 난독화 - 자동화 관련 잡설 본문
왜 자바스크립트를 압축할까?
웹개발을 하는데 있어 성능에서 중요한 요소중 하나는 용량을 줄이는 것이다.
전송해야할 파일의 용량이 줄어들면 사용자입장에서는 더 빠르게 로딩할 수 있고
서버측에서는 트래픽이 줄어들기 때문에 많은 이점을 가질 수 있다.
압축이 된 파일을 보면 한 줄로 쫙 이어지면서 변수 치환도 일어 났음을 볼 수 있다
여튼, 이러한 이유로 사내는 JavaScript Obfuscator란 툴을 사용을 한다
상용툴인데 그다지 비싸지는 않다
여튼, 이 부분을 자동화해야하는데 문제는
동작하지 않는다
방법이 없는 듯하여 다른 툴들을 알아보았다
1번 후보 야후 : YUI Compressor
2번 후보 구글 : Closure Compiler
3번 후보 Crunchme
( * Closure Compiler는 압축과 동시에 정적분석이 수행되었다 )
그리고 압축률 실험을 했다
오리지날은 BaseGrid.js ( 148KB / 100% )
--------------------------------------------
JavaScript Obfuscator ( 37.3KB / 25% )
YUI Compressor ( 64KB / 43% )
Closure Compiler ( 60KB / 41% )
Crunchme ( 70KB / 47% )
--------------------------------------
아니 당신은 대체
상용은 상용인가 보다
압축률이 넘사벽이라 다른 툴로 함부로 변경하지 못했다
다시 원점이다
" 왜 Command_line_help 메뉴가 안켜질까 "
GUI만 아직 안만들어진게 아닐까 생각했다
빙고!
기쁜 마음에 여기있는 옵션뿐만 아니라 키보드의 모든 자판을 다 입력 해보았다
이후 부터는 술술 풀렸다
이 동작과 똑같이 파일이 출력되는 옵션 조합을 찾고
$ jso -s -c $APP_DIR;
프로시저로 만들어 놓았다 ( 컴포넌트의 패키징 과정 중 하나이기에 )
JAVASCRIPT_COMPRESS()
{
JAVASCRIPT_MAXGAUGE_DIR="$WEBOUT_DIR"
#common 내부의 locale 폴더를 제외한 모든 JS
#config 내부의 style 폴더를 제외한 모든 JS
#EventDescription 압축 X
#Exem 모든 소스. 각각 폴더 모든 JS
#Extjs 압축 X
#Images 압축 X
#Lib 폴더 안의 IMXWS.js
#PA style 폴더를 제외 한 모든 JS
#Popup 폴더 안의 app.js
#Report_download ? 해당 없음.
#RTM style 폴더를 제외 한 모든 JS
# Cannot use array, cause too low bash version.
DIR="$JAVASCRIPT_MAXGAUGE_DIR"
DIR="$DIR $JAVASCRIPT_MAXGAUGE_DIR/common"
DIR="$DIR $JAVASCRIPT_MAXGAUGE_DIR/config"
DIR="$DIR $JAVASCRIPT_MAXGAUGE_DIR/config/view"
DIR="$DIR $JAVASCRIPT_MAXGAUGE_DIR/Exem "
DIR="$DIR $JAVASCRIPT_MAXGAUGE_DIR/Exem/chart"
DIR="$DIR $JAVASCRIPT_MAXGAUGE_DIR/Exem/config"
DIR="$DIR $JAVASCRIPT_MAXGAUGE_DIR/PA"
DIR="$DIR $JAVASCRIPT_MAXGAUGE_DIR/PA/container"
DIR="$DIR $JAVASCRIPT_MAXGAUGE_DIR/PA/view"
DIR="$DIR $JAVASCRIPT_MAXGAUGE_DIR/popup"
DIR="$DIR $JAVASCRIPT_MAXGAUGE_DIR/RTM"
DIR="$DIR $JAVASCRIPT_MAXGAUGE_DIR/RTM/Frame"
DIR="$DIR $JAVASCRIPT_MAXGAUGE_DIR/RTM/tools"
DIR="$DIR $JAVASCRIPT_MAXGAUGE_DIR/RTM/view"
#ls $JAVASCRIPT_MAXGAUGE_DIR/lib/IMXWS.js
for DIR_PRE in ${DIR}
do
cd $DIR_PRE;
for APP in `ls | grep \.js | grep -v extjs`;
do
APP_DIR=$DIR_PRE/${APP}
echo $APP_DIR
jso -s -c $APP_DIR;
unset APP_DIR;
done
done
jso -s -c $JAVASCRIPT_MAXGAUGE_DIR/lib/IMXWS.js
}
PS. Cpu Core를 하나만 사용하는 툴이라 그게 참 아쉽다, 빌드서버에서 상습 정체 구간이다