우리가 몰랐던 크롬 개발자 도구

Jae Sung Park
Jae Sung ParkFront-end Engineer at NAVER
우리가 몰랐던 크롬 개발자 도구
2014.03.19
naver_박재성
* Based on chrome 33
index
1. Workspaces
2. Local Modifications
3. Console API
4. Command Line API
5. Experiments
6. Remote Debugging
7. Flame Chart
8. Rendering
9. Finding forced synchronous layouts
10. Mobile Emulation
11. Audits
12. Layer Panel
13. Breakpoints
14. Miscellaneous
15. Plugin : JS Runtime Inspector
Workspaces
로컬서버의 리소스 파일을 매핑해 브라우저 상에서 직접 수정이 가능하도록 함
• element 패널의 DOM 변경은 반영되지 않음
• element 패널의 스타일 변경만 반영
• 외부 css/JS의 파일 내용 변경가능
• element.style과 inline style은 반영되지 않음
• element 패널의 스타일 변경은 바로 적용되며, 파일에도 변경사항 저장됨
• Sources 탭에서의 변경은 Ctrl + S (Mac : command + S)를 눌러 저장
1. Workspace 폴더를 지정 2. 브라우저에서 해당 페이지와 파일 매핑
Local Modifications
개발자 도구에서 변경된 파일에 대한 history 관리
console.assert(expression, string);
조건이 거짓인 경우 출력
console.count(string);
호출된 횟수를 문자열과 출력
console.time(string) / console.timeEnd(string)
수행된 시간을 측정
Console API
console.group(), console.groupCollapsed() / console.groupEnd()
로그를 그룹핑해 출력. 중첩된 그룹핑도 가능
console.table([ … ]);
테이블 형태로 출력
debugger
디버깅을 위한 중단점 지정
Console API
포맷 설명
%s 문자열
%d, %i 숫자
%f Floating point
%o DOM 요소
%O JavaScript 객체
%c CSS 스타일 적용
https://developers.google.com/chrome-developer-tools/docs/console-api
Console API
console.log(object [, object, … ])
포맷을 지정하거나 스타일이 적용된 출력을 할수 있다.
콘솔에서만 사용 가능한 API로, 코드상에서는 사용할 수 없음.
동일한 함수가 코드상에 존재하는 경우는 코드상의 함수가 우선됨.
$(selector)
document.querySelector - CSS 셀렉터를 사용한 선택
$$(selector)
document.querySelectorAll - CSS 셀렉터를 사용한 선택
$x(selector)
Xpath 표현식을 사용한 선택
$_
마지막 수행된 표현식의 결과값을 반환
$0 ~ $4
Elements 탭에서 선택되었던 마지막 5개 DOM 요소를 기억
copy(object)
클립보드에 내용 복사
inspect(object)
Elements 탭에 지정된 요소가 선택되도록 한다.
Command Line API
Command Line API
getEventListeners(object)
등록된 이벤트 리스너를 반환
keys()
객체에서 key 값만을 반환
Command Line API
monitorEvents(object[, events])
지정된 이벤트 발생시 콘솔에 로깅
unmonitorEvents(object[, events])
등록된 이벤트 모니터링을 해제
monitor(function[, …])
등록된 함수가 호출될 때 로깅
unmonitor(function[, …])
등록된 모니터링을 해제
chrome://flags/#enable-devtools-experiments 또는
chrome://flags > ‘개발자 도구 실험을 사용합니다.’를 통해 활성화
Experiments
크롬 개발자 도구를 활용해 모바일 기기의 크롬 브라우저의 페이지를 디버깅
• Windows에서는 해당 기기의 usb 드라이버 설치가 필요함
• http://developer.android.com/tools/extras/oem-usb.html
Remote Debugging
Screencast
연결된 모바일 기기의 화면이 데스크탑으로 스크린 캐스팅되어, 모바일 크롬의 출력 화면을 직접 보면서 디버깅
Remote Debugging
Port Forwarding
Port forwarding은 모바일 기기가 개발서버와 같은 네트워크 내에 속하지 않거나 여러 다른 상황으로 인해 모바일
기기에서 개발서버의 웹 페이지 접근이 어려운 경우 사용될 수 있으며, usb를 통해 직접 로컬 서버에 접근하는 방법.
Remote Debugging
Android 4.4 (KitKat) WebView :
https://developers.google.com/chrome/mobile/docs/webview/overview#what_version_of_chrome_is_it_based_on
안드로이드 4.4 웹뷰는 크롬 30.0.0.0을 기반으로 함
그러나…
OS 업데이트가 되지 않는 이상 브라우저 자체는 업데이트 되지 않음
Remote Debugging
Profiles > Record JavaScript CPU profile
시간에 따른 자바스크립트 프로세싱을 시각적인 차트로 표현
Name
The name of the function.
Self time
How long it took to complete the current
invocation of the function, including only
the statements in the function itself,
not including any functions that it called.
Total time
The time it took to complete the current
invocation of this function and any
functions that it called.
Aggregated self time
Aggregate time for all invocations of the
function across the recording,
not including functions called by this function.
Aggregated total time
Aggregate total time for all invocations of the function, including functions called by this function.
Flame Chart
Console Tab > Rendering >
Show Paint rectangles
페인팅이 발생되는 영역을 표현해 준다.
다음의 페이지는 배경 이미지가 fixed로 지정되어 스크롤 시 마다
Paint가 발생되는 문제가 발생
Demo : http://css3exp.com/moon/
Show FPS meter
페이지의 현재 프레임 수를 보여준다.
Android 기기에서는 GPU 메모리 사용량도 같이 노출
Enable continuous page repainting
모든 스크린 영역이 지속적으로 리페인팅이 발생하도록 해서 어떤 영역이
렌더링 비용 많이 발생하는지를 추적할 수 있도록 도와준다.
* DOM tree에서 'H' 단축키를 통해 선택된 노드를 보이지 않도록 처리할 수 있으며, 이를 통해 해당 노드가
렌더링에 미치는 성능을 확인해 볼수 있다.
Rendering
렌더링 성능을 향상시키기 위해 레이아웃의 변경은 배치 작업형태로 스케줄링하고 비동기로 계산하고
렌더링 된다.
하지만, 레이아웃 정보를 반환하는 다음의 속성들이 요청되는 경우, 브라우저는 즉시 ‘강제적인 동기 레이아
웃’(forced synchronous layouts)을 발생시켜 렌더링 성능을 감소시킬 수 있게 된다.
• element.offsetTop/offsetLeft/offsetWidth/offsetHeight
• element.scrollTop/Left/Width/Height
• element.clientTop/Left/Width/Height
• focus()
• getBoundingClientRect()
• getClientRects()
• innerText / outerText
• scrollByLines() / scrollByPages()
• scrollIntoView() / scrollIntoViewIfNeeded()
이런 현상을 "layout-thrashing" 이라고도 부른다.
Timeline 레코딩 후, 레코딩 결과 항목에서 노란색의 경고 아이콘을 통해 현상이 발생된 곳을 확인할 수 있다.
Demo : https://developers.google.com/chrome-developer-tools/docs/demos/too-much-layout/
Finding forced synchronous layouts
브라우저 UA, 스크린, pixel ratio, GPS 위치 정보 등 다양한 모바일 기기의 값을 에뮬레이팅 할 수 있다.
멀티 터치는 shift 키를 누르면 사용 가능
Mobile Emulation
페이지를 분석해 성능 향상 포인트와 최적화 방법을 알려준다.
Audits
Demo : http://www.webkit.org/blog-files/3d-transforms/poster-circle.html
Layers Panel
Experiments > Show Layers Panel
레이어의 구성을 입체적으로 확인할 수 있다.
Elements > Break on… : Element 탭에서 특정 요소에 대한 변경 발생시 중단점 설정
Breakpoints
Sources > Pause on exceptions
예외 상황 발생시 중단에 대한 설정
3가지 형태로 설정 가능 :
모든 예외상황 발생시 중단
예외처리 되지 않은 예외상황
예외상황 발생시 중단하지 않음 (기본값)
Sources > 다양한 breakpoint 설정 가능
Network > Replay XHR : XHR을 재요청
Sources > Watch Expressions : 지속적인 트래킹을 하고자 하는 변수 또는 표현식을 등록
Miscellaneous
새로 고침
개발자 도구가 열려있는 상태에서 ‘새로 고침’ 버튼을 길게 누르면
새로 고침 옵션 사용가능. (Windows와 ChromeOS만 가능)
스타일 값 변경 단위 단축 키
Shift + PgUp/PgDown : 3자리 수 증가
Shift + Arrow, PgUp/PgDown : 2자리 수 증가
Arrow : 1자리 수 증가
Alt + Arrow : 소수점
Miscellaneous
Plugin : JS Runtime Inspector
크롬 개발자 도구 익스텐션
https://chrome.google.com/webstore/detail/js-runtime-inspector/iilpjebedgohcmlffhnkhbjhabkdhfmn
실행중인 자바스크립트 객체를 이름 또는 값으로 검색할 수 있도록 함
http://www.html5rocks.com/en/tutorials/developertools/mobile/
http://www.html5rocks.com/en/tutorials/developertools/revolutions2013/
https://developers.google.com/chrome-developer-tools/
https://plus.google.com/u/0/+FrancoisBeaufort/posts/ef6ZatGpNMP
http://discover-devtools.codeschool.com/
Reference
고맙습니다.
fin.
1 of 27

Recommended

Konva position 이해 by
Konva position 이해Konva position 이해
Konva position 이해Kihoon Kim
792 views70 slides
AEM - A Collection of developer friendly tools by
AEM - A Collection of developer friendly toolsAEM - A Collection of developer friendly tools
AEM - A Collection of developer friendly toolsAshokkumar T A
1.7K views37 slides
Introduction to React JS by
Introduction to React JSIntroduction to React JS
Introduction to React JSBethmi Gunasekara
421 views31 slides
[수정본] 우아한 객체지향 by
[수정본] 우아한 객체지향[수정본] 우아한 객체지향
[수정본] 우아한 객체지향Young-Ho Cho
20K views173 slides
Create your React 18 / TS bundle using esbuild by
Create your React 18 / TS bundle using esbuildCreate your React 18 / TS bundle using esbuild
Create your React 18 / TS bundle using esbuildFabio Biondi
7.9K views7 slides
[Atlassian in 부산]분야 별 Atlassian 솔루션 적용 사례_KIC by
[Atlassian in 부산]분야 별 Atlassian 솔루션 적용 사례_KIC[Atlassian in 부산]분야 별 Atlassian 솔루션 적용 사례_KIC
[Atlassian in 부산]분야 별 Atlassian 솔루션 적용 사례_KICAtlassian 대한민국
458 views38 slides

More Related Content

What's hot

김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019 by
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019min woog kim
3.2K views78 slides
게임 분산 서버 구조 by
게임 분산 서버 구조게임 분산 서버 구조
게임 분산 서버 구조Hyunjik Bae
37.7K views35 slides
AWS Fargate on EKS 실전 사용하기 by
AWS Fargate on EKS 실전 사용하기AWS Fargate on EKS 실전 사용하기
AWS Fargate on EKS 실전 사용하기AWSKRUG - AWS한국사용자모임
4K views37 slides
Chrome DevTools by
Chrome DevToolsChrome DevTools
Chrome DevToolsroadster43
905 views18 slides
클라우드 환경에서 알아야할 성능 이야기 by
클라우드 환경에서 알아야할 성능 이야기클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기YoungSu Son
1.6K views91 slides
Introduction to NodeJS by
Introduction to NodeJSIntroduction to NodeJS
Introduction to NodeJSCere Labs Pvt. Ltd
842 views16 slides

What's hot(20)

김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019 by min woog kim
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
min woog kim3.2K views
게임 분산 서버 구조 by Hyunjik Bae
게임 분산 서버 구조게임 분산 서버 구조
게임 분산 서버 구조
Hyunjik Bae37.7K views
Chrome DevTools by roadster43
Chrome DevToolsChrome DevTools
Chrome DevTools
roadster43905 views
클라우드 환경에서 알아야할 성능 이야기 by YoungSu Son
클라우드 환경에서 알아야할 성능 이야기클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기
YoungSu Son1.6K views
React 애플리케이션 아키텍처 - 아무도 알려주지 않아서 혼자서 삽질했다. by 병대 손
React 애플리케이션 아키텍처 - 아무도 알려주지 않아서 혼자서 삽질했다.React 애플리케이션 아키텍처 - 아무도 알려주지 않아서 혼자서 삽질했다.
React 애플리케이션 아키텍처 - 아무도 알려주지 않아서 혼자서 삽질했다.
병대 손13.4K views
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ... by Amazon Web Services Korea
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
Heap Dump Analysis - AEM: Real World Issues by Kanika Gera
Heap Dump Analysis - AEM: Real World IssuesHeap Dump Analysis - AEM: Real World Issues
Heap Dump Analysis - AEM: Real World Issues
Kanika Gera926 views
Aem dispatcher – tips & tricks by Ashokkumar T A
Aem dispatcher – tips & tricksAem dispatcher – tips & tricks
Aem dispatcher – tips & tricks
Ashokkumar T A5.4K views
AWS 비용, 어떻게 사용하고 계신가요? - 비용 최적화를 위한 AWS의 다양한 툴 알아보기 – 허경원, AWS 클라우드 파이낸셜 매니저:... by Amazon Web Services Korea
AWS 비용, 어떻게 사용하고 계신가요? - 비용 최적화를 위한 AWS의 다양한 툴 알아보기 – 허경원, AWS 클라우드 파이낸셜 매니저:...AWS 비용, 어떻게 사용하고 계신가요? - 비용 최적화를 위한 AWS의 다양한 툴 알아보기 – 허경원, AWS 클라우드 파이낸셜 매니저:...
AWS 비용, 어떻게 사용하고 계신가요? - 비용 최적화를 위한 AWS의 다양한 툴 알아보기 – 허경원, AWS 클라우드 파이낸셜 매니저:...
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬) by Amazon Web Services Korea
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019 by devCAT Studio, NEXON
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
새해 일어난 일 by Eunhyang Kim
새해 일어난 일새해 일어난 일
새해 일어난 일
Eunhyang Kim13K views
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기 by Chris Ohk
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
Chris Ohk6.8K views
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기 by NAVER Engineering
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
NAVER Engineering870 views
Front-End Frameworks: a quick overview by Diacode
Front-End Frameworks: a quick overviewFront-End Frameworks: a quick overview
Front-End Frameworks: a quick overview
Diacode15.1K views
Consul: Microservice Enabling Microservices and Reactive Programming by Rick Hightower
Consul: Microservice Enabling Microservices and Reactive ProgrammingConsul: Microservice Enabling Microservices and Reactive Programming
Consul: Microservice Enabling Microservices and Reactive Programming
Rick Hightower35K views

Similar to 우리가 몰랐던 크롬 개발자 도구

[121]네이버 효과툰 구현 이야기 by
[121]네이버 효과툰 구현 이야기[121]네이버 효과툰 구현 이야기
[121]네이버 효과툰 구현 이야기NAVER D2
25.9K views92 slides
캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012 by
캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012
캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012Daum DNA
8.9K views105 slides
크롬 개발자 도구 소개 및 사용법 by
크롬 개발자 도구 소개 및 사용법크롬 개발자 도구 소개 및 사용법
크롬 개발자 도구 소개 및 사용법Gihyo Joshua Jang
17.1K views16 slides
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기 by
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기Chang W. Doh
2.7K views75 slides
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기 by
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기Miyu Park
9.6K views33 slides
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유 by
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유Sang Seok Lim
13.4K views36 slides

Similar to 우리가 몰랐던 크롬 개발자 도구(20)

[121]네이버 효과툰 구현 이야기 by NAVER D2
[121]네이버 효과툰 구현 이야기[121]네이버 효과툰 구현 이야기
[121]네이버 효과툰 구현 이야기
NAVER D225.9K views
캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012 by Daum DNA
캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012
캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012
Daum DNA8.9K views
크롬 개발자 도구 소개 및 사용법 by Gihyo Joshua Jang
크롬 개발자 도구 소개 및 사용법크롬 개발자 도구 소개 및 사용법
크롬 개발자 도구 소개 및 사용법
Gihyo Joshua Jang17.1K views
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기 by Chang W. Doh
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
Chang W. Doh2.7K views
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기 by Miyu Park
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
Miyu Park9.6K views
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유 by Sang Seok Lim
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
Sang Seok Lim13.4K views
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기 by Chang W. Doh
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
Chang W. Doh3.9K views
이제 온라인이다! 브라우저 안으로 들어온 Visual studio! by SangHoon Han
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
SangHoon Han2.1K views
Android와 Flutter 앱 개발의 큰 차이점 5가지 by Bansook Nam
Android와 Flutter 앱 개발의 큰 차이점 5가지Android와 Flutter 앱 개발의 큰 차이점 5가지
Android와 Flutter 앱 개발의 큰 차이점 5가지
Bansook Nam9.1K views
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope... by JinKwon Lee
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
JinKwon Lee1.4K views
도구를 활용한 더 나은 웹 개발: Yeoman by Jae Sung Park
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman
Jae Sung Park5.9K views
TOAST Meetup2015 - 구름 Cloud IDE (류성태) by TOAST_NHNent
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST_NHNent 2.2K views
[H3 2012] Bridge over troubled water : make plug-in for Appspresso by KTH, 케이티하이텔
[H3 2012] Bridge over troubled water : make plug-in for Appspresso[H3 2012] Bridge over troubled water : make plug-in for Appspresso
[H3 2012] Bridge over troubled water : make plug-in for Appspresso
[IGC 2016] 엔씨소프트 김종원 - 모바일 테스트 자동화 시스템 by 강 민우
[IGC 2016] 엔씨소프트 김종원 - 모바일 테스트 자동화 시스템[IGC 2016] 엔씨소프트 김종원 - 모바일 테스트 자동화 시스템
[IGC 2016] 엔씨소프트 김종원 - 모바일 테스트 자동화 시스템
강 민우3.9K views
모바일 게임 테스트 자동화 Igc 2016 by Jongwon Kim
모바일 게임 테스트 자동화 Igc 2016모바일 게임 테스트 자동화 Igc 2016
모바일 게임 테스트 자동화 Igc 2016
Jongwon Kim3K views
[D2 오픈세미나]3.web view hybridapp by NAVER D2
[D2 오픈세미나]3.web view hybridapp[D2 오픈세미나]3.web view hybridapp
[D2 오픈세미나]3.web view hybridapp
NAVER D220.9K views
[IGC 2017] 엔지메이킹 이대희 - 이제는 웹에서 게임을 만들 수 있는 환경 'Construct3를 바탕으로' by 강 민우
[IGC 2017] 엔지메이킹 이대희 - 이제는 웹에서 게임을 만들 수 있는 환경 'Construct3를 바탕으로'[IGC 2017] 엔지메이킹 이대희 - 이제는 웹에서 게임을 만들 수 있는 환경 'Construct3를 바탕으로'
[IGC 2017] 엔지메이킹 이대희 - 이제는 웹에서 게임을 만들 수 있는 환경 'Construct3를 바탕으로'
강 민우745 views
크로스(멀티)브라우저 테스트수행가이드 by SangIn Choung
크로스(멀티)브라우저 테스트수행가이드크로스(멀티)브라우저 테스트수행가이드
크로스(멀티)브라우저 테스트수행가이드
SangIn Choung7.5K views
GDG DevFest Busan 16" Android Nougat Developer's Note by Seok-yong Kim
GDG DevFest Busan 16" Android Nougat Developer's NoteGDG DevFest Busan 16" Android Nougat Developer's Note
GDG DevFest Busan 16" Android Nougat Developer's Note
Seok-yong Kim238 views
Progressive Web Apps by jungkees
Progressive Web AppsProgressive Web Apps
Progressive Web Apps
jungkees3.8K views

More from Jae Sung Park

[SOSCON 2018] 오픈소스 개발: Behind the scenes by
[SOSCON 2018] 오픈소스 개발: Behind the scenes[SOSCON 2018] 오픈소스 개발: Behind the scenes
[SOSCON 2018] 오픈소스 개발: Behind the scenesJae Sung Park
463 views63 slides
[DEVIEW 2018] JavaScript 배틀그라운드로부터 살아남기 by
[DEVIEW 2018] JavaScript 배틀그라운드로부터 살아남기[DEVIEW 2018] JavaScript 배틀그라운드로부터 살아남기
[DEVIEW 2018] JavaScript 배틀그라운드로부터 살아남기Jae Sung Park
523 views68 slides
[SOSCON 2017] 네이버의 FE 오픈소스: jindo에서 billboard.js까지 by
[SOSCON 2017] 네이버의 FE 오픈소스: jindo에서 billboard.js까지[SOSCON 2017] 네이버의 FE 오픈소스: jindo에서 billboard.js까지
[SOSCON 2017] 네이버의 FE 오픈소스: jindo에서 billboard.js까지Jae Sung Park
1.7K views59 slides
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기 by
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기Jae Sung Park
3.3K views77 slides
Front end dev 2016 & beyond by
Front end dev 2016 & beyondFront end dev 2016 & beyond
Front end dev 2016 & beyondJae Sung Park
8.1K views57 slides
[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs by
[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs
[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjsJae Sung Park
2.1K views70 slides

More from Jae Sung Park(20)

[SOSCON 2018] 오픈소스 개발: Behind the scenes by Jae Sung Park
[SOSCON 2018] 오픈소스 개발: Behind the scenes[SOSCON 2018] 오픈소스 개발: Behind the scenes
[SOSCON 2018] 오픈소스 개발: Behind the scenes
Jae Sung Park463 views
[DEVIEW 2018] JavaScript 배틀그라운드로부터 살아남기 by Jae Sung Park
[DEVIEW 2018] JavaScript 배틀그라운드로부터 살아남기[DEVIEW 2018] JavaScript 배틀그라운드로부터 살아남기
[DEVIEW 2018] JavaScript 배틀그라운드로부터 살아남기
Jae Sung Park523 views
[SOSCON 2017] 네이버의 FE 오픈소스: jindo에서 billboard.js까지 by Jae Sung Park
[SOSCON 2017] 네이버의 FE 오픈소스: jindo에서 billboard.js까지[SOSCON 2017] 네이버의 FE 오픈소스: jindo에서 billboard.js까지
[SOSCON 2017] 네이버의 FE 오픈소스: jindo에서 billboard.js까지
Jae Sung Park1.7K views
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기 by Jae Sung Park
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기
Jae Sung Park3.3K views
Front end dev 2016 & beyond by Jae Sung Park
Front end dev 2016 & beyondFront end dev 2016 & beyond
Front end dev 2016 & beyond
Jae Sung Park8.1K views
[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs by Jae Sung Park
[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs
[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs
Jae Sung Park2.1K views
가볍게 살펴보는 AngularJS by Jae Sung Park
가볍게 살펴보는 AngularJS가볍게 살펴보는 AngularJS
가볍게 살펴보는 AngularJS
Jae Sung Park5.2K views
Web Components & Polymer by Jae Sung Park
Web Components & PolymerWeb Components & Polymer
Web Components & Polymer
Jae Sung Park1.6K views
혁신적인 웹컴포넌트 라이브러리 - Polymer by Jae Sung Park
혁신적인 웹컴포넌트 라이브러리 - Polymer혁신적인 웹컴포넌트 라이브러리 - Polymer
혁신적인 웹컴포넌트 라이브러리 - Polymer
Jae Sung Park28.2K views
스마트 TV 앱 개발 맛보기 by Jae Sung Park
스마트 TV 앱 개발 맛보기스마트 TV 앱 개발 맛보기
스마트 TV 앱 개발 맛보기
Jae Sung Park7.7K views
Developing game audio with the Web Audio API by Jae Sung Park
Developing game audio with the Web Audio APIDeveloping game audio with the Web Audio API
Developing game audio with the Web Audio API
Jae Sung Park1.6K views

Recently uploaded

컴포넌트 설계 by
컴포넌트 설계컴포넌트 설계
컴포넌트 설계Wonjun Hwang
8 views21 slides
AD의 TAD와 협업.pptx by
AD의 TAD와 협업.pptxAD의 TAD와 협업.pptx
AD의 TAD와 협업.pptxVisual Tech Dev
50 views24 slides
해커가 되고 싶은 자는 나에게... 정보보안 입문과 길 찾기 by
해커가 되고 싶은 자는 나에게... 정보보안 입문과 길 찾기해커가 되고 싶은 자는 나에게... 정보보안 입문과 길 찾기
해커가 되고 싶은 자는 나에게... 정보보안 입문과 길 찾기Jinkyoung Kim
46 views139 slides
Exploring Deep Learning Acceleration Technology Embedded in LLMs by
Exploring Deep Learning Acceleration Technology Embedded in LLMsExploring Deep Learning Acceleration Technology Embedded in LLMs
Exploring Deep Learning Acceleration Technology Embedded in LLMsTae Young Lee
26 views53 slides
성능 테스트 by
성능 테스트성능 테스트
성능 테스트Wonjun Hwang
8 views13 slides
CES 처음 가는 분을 위한 가이드 by
CES 처음 가는 분을 위한 가이드CES 처음 가는 분을 위한 가이드
CES 처음 가는 분을 위한 가이드Minsuk Lee
650 views31 slides

Recently uploaded(7)

해커가 되고 싶은 자는 나에게... 정보보안 입문과 길 찾기 by Jinkyoung Kim
해커가 되고 싶은 자는 나에게... 정보보안 입문과 길 찾기해커가 되고 싶은 자는 나에게... 정보보안 입문과 길 찾기
해커가 되고 싶은 자는 나에게... 정보보안 입문과 길 찾기
Jinkyoung Kim46 views
Exploring Deep Learning Acceleration Technology Embedded in LLMs by Tae Young Lee
Exploring Deep Learning Acceleration Technology Embedded in LLMsExploring Deep Learning Acceleration Technology Embedded in LLMs
Exploring Deep Learning Acceleration Technology Embedded in LLMs
Tae Young Lee26 views
CES 처음 가는 분을 위한 가이드 by Minsuk Lee
CES 처음 가는 분을 위한 가이드CES 처음 가는 분을 위한 가이드
CES 처음 가는 분을 위한 가이드
Minsuk Lee650 views
클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략 by Open Source Consulting
클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략
클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략

우리가 몰랐던 크롬 개발자 도구

  • 1. 우리가 몰랐던 크롬 개발자 도구 2014.03.19 naver_박재성 * Based on chrome 33
  • 2. index 1. Workspaces 2. Local Modifications 3. Console API 4. Command Line API 5. Experiments 6. Remote Debugging 7. Flame Chart 8. Rendering 9. Finding forced synchronous layouts 10. Mobile Emulation 11. Audits 12. Layer Panel 13. Breakpoints 14. Miscellaneous 15. Plugin : JS Runtime Inspector
  • 3. Workspaces 로컬서버의 리소스 파일을 매핑해 브라우저 상에서 직접 수정이 가능하도록 함 • element 패널의 DOM 변경은 반영되지 않음 • element 패널의 스타일 변경만 반영 • 외부 css/JS의 파일 내용 변경가능 • element.style과 inline style은 반영되지 않음 • element 패널의 스타일 변경은 바로 적용되며, 파일에도 변경사항 저장됨 • Sources 탭에서의 변경은 Ctrl + S (Mac : command + S)를 눌러 저장 1. Workspace 폴더를 지정 2. 브라우저에서 해당 페이지와 파일 매핑
  • 4. Local Modifications 개발자 도구에서 변경된 파일에 대한 history 관리
  • 5. console.assert(expression, string); 조건이 거짓인 경우 출력 console.count(string); 호출된 횟수를 문자열과 출력 console.time(string) / console.timeEnd(string) 수행된 시간을 측정 Console API
  • 6. console.group(), console.groupCollapsed() / console.groupEnd() 로그를 그룹핑해 출력. 중첩된 그룹핑도 가능 console.table([ … ]); 테이블 형태로 출력 debugger 디버깅을 위한 중단점 지정 Console API
  • 7. 포맷 설명 %s 문자열 %d, %i 숫자 %f Floating point %o DOM 요소 %O JavaScript 객체 %c CSS 스타일 적용 https://developers.google.com/chrome-developer-tools/docs/console-api Console API console.log(object [, object, … ]) 포맷을 지정하거나 스타일이 적용된 출력을 할수 있다.
  • 8. 콘솔에서만 사용 가능한 API로, 코드상에서는 사용할 수 없음. 동일한 함수가 코드상에 존재하는 경우는 코드상의 함수가 우선됨. $(selector) document.querySelector - CSS 셀렉터를 사용한 선택 $$(selector) document.querySelectorAll - CSS 셀렉터를 사용한 선택 $x(selector) Xpath 표현식을 사용한 선택 $_ 마지막 수행된 표현식의 결과값을 반환 $0 ~ $4 Elements 탭에서 선택되었던 마지막 5개 DOM 요소를 기억 copy(object) 클립보드에 내용 복사 inspect(object) Elements 탭에 지정된 요소가 선택되도록 한다. Command Line API
  • 9. Command Line API getEventListeners(object) 등록된 이벤트 리스너를 반환 keys() 객체에서 key 값만을 반환
  • 10. Command Line API monitorEvents(object[, events]) 지정된 이벤트 발생시 콘솔에 로깅 unmonitorEvents(object[, events]) 등록된 이벤트 모니터링을 해제 monitor(function[, …]) 등록된 함수가 호출될 때 로깅 unmonitor(function[, …]) 등록된 모니터링을 해제
  • 11. chrome://flags/#enable-devtools-experiments 또는 chrome://flags > ‘개발자 도구 실험을 사용합니다.’를 통해 활성화 Experiments
  • 12. 크롬 개발자 도구를 활용해 모바일 기기의 크롬 브라우저의 페이지를 디버깅 • Windows에서는 해당 기기의 usb 드라이버 설치가 필요함 • http://developer.android.com/tools/extras/oem-usb.html Remote Debugging
  • 13. Screencast 연결된 모바일 기기의 화면이 데스크탑으로 스크린 캐스팅되어, 모바일 크롬의 출력 화면을 직접 보면서 디버깅 Remote Debugging
  • 14. Port Forwarding Port forwarding은 모바일 기기가 개발서버와 같은 네트워크 내에 속하지 않거나 여러 다른 상황으로 인해 모바일 기기에서 개발서버의 웹 페이지 접근이 어려운 경우 사용될 수 있으며, usb를 통해 직접 로컬 서버에 접근하는 방법. Remote Debugging
  • 15. Android 4.4 (KitKat) WebView : https://developers.google.com/chrome/mobile/docs/webview/overview#what_version_of_chrome_is_it_based_on 안드로이드 4.4 웹뷰는 크롬 30.0.0.0을 기반으로 함 그러나… OS 업데이트가 되지 않는 이상 브라우저 자체는 업데이트 되지 않음 Remote Debugging
  • 16. Profiles > Record JavaScript CPU profile 시간에 따른 자바스크립트 프로세싱을 시각적인 차트로 표현 Name The name of the function. Self time How long it took to complete the current invocation of the function, including only the statements in the function itself, not including any functions that it called. Total time The time it took to complete the current invocation of this function and any functions that it called. Aggregated self time Aggregate time for all invocations of the function across the recording, not including functions called by this function. Aggregated total time Aggregate total time for all invocations of the function, including functions called by this function. Flame Chart
  • 17. Console Tab > Rendering > Show Paint rectangles 페인팅이 발생되는 영역을 표현해 준다. 다음의 페이지는 배경 이미지가 fixed로 지정되어 스크롤 시 마다 Paint가 발생되는 문제가 발생 Demo : http://css3exp.com/moon/ Show FPS meter 페이지의 현재 프레임 수를 보여준다. Android 기기에서는 GPU 메모리 사용량도 같이 노출 Enable continuous page repainting 모든 스크린 영역이 지속적으로 리페인팅이 발생하도록 해서 어떤 영역이 렌더링 비용 많이 발생하는지를 추적할 수 있도록 도와준다. * DOM tree에서 'H' 단축키를 통해 선택된 노드를 보이지 않도록 처리할 수 있으며, 이를 통해 해당 노드가 렌더링에 미치는 성능을 확인해 볼수 있다. Rendering
  • 18. 렌더링 성능을 향상시키기 위해 레이아웃의 변경은 배치 작업형태로 스케줄링하고 비동기로 계산하고 렌더링 된다. 하지만, 레이아웃 정보를 반환하는 다음의 속성들이 요청되는 경우, 브라우저는 즉시 ‘강제적인 동기 레이아 웃’(forced synchronous layouts)을 발생시켜 렌더링 성능을 감소시킬 수 있게 된다. • element.offsetTop/offsetLeft/offsetWidth/offsetHeight • element.scrollTop/Left/Width/Height • element.clientTop/Left/Width/Height • focus() • getBoundingClientRect() • getClientRects() • innerText / outerText • scrollByLines() / scrollByPages() • scrollIntoView() / scrollIntoViewIfNeeded() 이런 현상을 "layout-thrashing" 이라고도 부른다. Timeline 레코딩 후, 레코딩 결과 항목에서 노란색의 경고 아이콘을 통해 현상이 발생된 곳을 확인할 수 있다. Demo : https://developers.google.com/chrome-developer-tools/docs/demos/too-much-layout/ Finding forced synchronous layouts
  • 19. 브라우저 UA, 스크린, pixel ratio, GPS 위치 정보 등 다양한 모바일 기기의 값을 에뮬레이팅 할 수 있다. 멀티 터치는 shift 키를 누르면 사용 가능 Mobile Emulation
  • 20. 페이지를 분석해 성능 향상 포인트와 최적화 방법을 알려준다. Audits
  • 21. Demo : http://www.webkit.org/blog-files/3d-transforms/poster-circle.html Layers Panel Experiments > Show Layers Panel 레이어의 구성을 입체적으로 확인할 수 있다.
  • 22. Elements > Break on… : Element 탭에서 특정 요소에 대한 변경 발생시 중단점 설정 Breakpoints Sources > Pause on exceptions 예외 상황 발생시 중단에 대한 설정 3가지 형태로 설정 가능 : 모든 예외상황 발생시 중단 예외처리 되지 않은 예외상황 예외상황 발생시 중단하지 않음 (기본값) Sources > 다양한 breakpoint 설정 가능
  • 23. Network > Replay XHR : XHR을 재요청 Sources > Watch Expressions : 지속적인 트래킹을 하고자 하는 변수 또는 표현식을 등록 Miscellaneous
  • 24. 새로 고침 개발자 도구가 열려있는 상태에서 ‘새로 고침’ 버튼을 길게 누르면 새로 고침 옵션 사용가능. (Windows와 ChromeOS만 가능) 스타일 값 변경 단위 단축 키 Shift + PgUp/PgDown : 3자리 수 증가 Shift + Arrow, PgUp/PgDown : 2자리 수 증가 Arrow : 1자리 수 증가 Alt + Arrow : 소수점 Miscellaneous
  • 25. Plugin : JS Runtime Inspector 크롬 개발자 도구 익스텐션 https://chrome.google.com/webstore/detail/js-runtime-inspector/iilpjebedgohcmlffhnkhbjhabkdhfmn 실행중인 자바스크립트 객체를 이름 또는 값으로 검색할 수 있도록 함