전체 글 66

자바스크립트 코딩 컨벤션

이 글은 아래의 영상 내용을 기반으로 작성되었습니다. www.youtube.com/watch?v=RMN_bkZ1KM0 정말 잘 짜여진 코드는 마치 사람의 산문처럼 읽힌다고 어느 유명 개발자가 말했습니다. 이러한 코드를 만들 수 있는 몇가지 컨벤션을 살펴봅시다. Magic Number & String 절대 그냥 숫자나 문자열을 사용하지 마십시오. 코드를 작성하는 시점의 당신은 그 숫자나 문자열이 뭘 뜻하는 것인지 잘 알겠지만, 미래의 당신, 혹은 다른 개발자는 그 숫자나 문자열이 무엇을 의미하는 것인지 알기 어려울 수 있습니다. 써야한다면 반드시 상수에 담아 사용하십시오. 이때 상수 이름은 대문자와 _(underscore) 로만 이루어지는게 일반적입니다. const SECONS_IN_A_DAY = 8640..

페인트와 합성과정에서의 최적화

(이 글은 아래의 영상 시리즈 속 내용을 바탕으로 제작되었습니다.) www.youtube.com/watch?v=yJo9lZAEqb0&list=PLAwxTw4SYaPl09X4Rljhy7dZinRCzbHz6 페인트 성능 추적 방법 *페인트 성능을 추적하기 위해, performance 탭 뿐만 아니라 개발자 도구의 'Show pain rectangle' 기능을 활용할 수도 있습니다. 이를 사용하면 단순히 paint 가 일어나고 있다는 것 뿐만 아니라 일어나지 않아야할 영역에서 일어나고 있는 것은 아닌지도 체크해볼 수 있습니다. *페인트 프로파일링은 퍼포먼스 탭에서 Enable Advanced Paint Instrumentation 을 체크하면 수행할 수 있습니다. 체크가 된 상태라면 녹색 페인트 flame 을..

스타일과 레이아웃 과정 최적화

(이 글은 아래의 영상 시리즈 속 내용을 바탕으로 제작되었습니다.) www.youtube.com/watch?v=yJo9lZAEqb0&list=PLAwxTw4SYaPl09X4Rljhy7dZinRCzbHz6 스타일 과정에서의 처리 시간 증가 곡선 자바스크립트나 css 를 통해서 애니메이션 등을 발생시킬 때, 단순히 하나의 요소가 아니라 여러개의 요소의 스타일이 바뀌도록 만들 수 있을 것입니다. 그렇다면 이렇게 스타일 과정에서 변경사항을 반영해야 할 요소들이 많아지면 과연 스타일 과정의 전체 처리시간에 얼마나 큰 영향을 끼치게 될까요? 정답은 '선형적으로 처리시간을 증가시킨다' 입니다. 어떤 스타일 변경을 수행했느냐에 따라 어느 정도는 달라질 수 있습니다. 어쨌든 더 많은 요소의 스타일이 변경되도록 만드는 것..

자바스크립트를 활용한 인터랙션 성능 최적화

(이 글은 아래의 영상 시리즈 속 내용을 바탕으로 제작되었습니다.) www.youtube.com/watch?v=yJo9lZAEqb0&list=PLAwxTw4SYaPl09X4Rljhy7dZinRCzbHz6 자바스크립트는 아주 근본적인 문제를 가지고 있습니다. 그것은 바로 우리가 쓰는 자바스크립트와, 실제 브라우저가 수행하는 코드가 100% 일치하지 않는다는 것입니다. 자바스크립트는 브라우저의 엔진을 통해 컴파일됩니다. 이때 이 컴파일러를 JIT(Just In Time)이라 통칭합니다. 그러므로 자바스크립트는 근본적으로 저수준 레벨에서의 최적화는 불가능합니다. 따라서 어떤 제어문이 더 좋은 성능을 내는지 등은 고려하지 않아도 됩니다. 하지만, 꼭 저수준 레벨에서 최적화를 하지 않더라도 다른 방법으로 엄청난 ..

웹 성능 최적화의 척도(RAIL)

(이 글은 아래의 영상 시리즈 속 내용을 바탕으로 제작되었습니다.) www.youtube.com/watch?v=yJo9lZAEqb0&list=PLAwxTw4SYaPl09X4Rljhy7dZinRCzbHz6 RAIL 이란? 웹 성능 최적화의 척도로 60fps 를 유지하는 것이 잘 소개되고는 하지만, 엄밀히 말해서 '매순간' 60fps 를 유지해야 하는 것은 아닙니다. 사실 그것은 불가능에 가깝습니다. 정확히 어느 순간을 최적화 해야 하는지를 판단하기 위한 척도로, 'RAIL' 이라는 개념이 대두됩니다. R (Response) Respond 는 이용자의 인터랙션에 얼마나 빨리 반응할 수 있느냐와 관련된 부분입니다. 즉, 이용자가 버튼을 클릭하거나 사이드바 토글을 수행할 때 이용자가 직접적으로 화면상에 그에 따..

크롬 개발자 도구의 Performance 탭 다루기 - 기본편

이 글은 아래 링크의 글을 바탕으로 작성되었습니다. 당연하지만, 이 글이 웹 프론트엔드 성능 분석의 모든 것을 담고 있는 것은 아닙니다. 하지만 가장 기본이 되는 방법론을 다루고 있습니다. 시작해요, 런타임 성능 분석 | Chrome DevTools | Google Developers 시작해요, 런타임 성능 분석 | Chrome DevTools | Google Developers Chrome 개발자 도구에서 런타임 성능을 평가하는 방법 developers.google.com Network 패널 or Performance 패널 네트워크 패널은 자원들이 제대로 다운로드 되었는지의 여부, 캐시여부, 그리고 다운로드된 자원들의 다운로드에 걸린 시간, 세부 정보들을 보고 싶을 때 유용하게 사용할 수 있는 패널입니..

크롬 개발자 도구로 CSS 다루기

이 글은 아래 링크의 내용을 기반으로 작성되었습니다. 흔히 경험적으로 알수 있을 만한 내용은 다루지 않았습니다. Get Started With Viewing And Changing CSS | Chrome DevTools Get Started With Viewing And Changing CSS | Chrome DevTools Learn how to use Chrome DevTools to view and change a page's CSS. developers.google.com 임시로 적용해볼 css class 생성 Element 패널 안의 Styles 탭에서 .cls 를 클릭하면 됩니다. 특정 요소에 임시로 적용해볼 pseudo 상태를 적용 요소를 선택한 후, Element 패널 안의 Styles 탭..

DNS(Domain Name System) 이해하기

이 글은 아래의 영상을 바탕으로 작성되었습니다. https://www.youtube.com/watch?v=zrqivQVj3JM&list=PLuHgQVnccGMCI75J-rC8yZSVGZq3gYsFp 우리는 흔히 DNS(Domain Name System) 을 IP 를 대신해서 입력할 수 있는 주소 정도로만 알고 있는 경우가 많습니다. 하지만, 실제로 웹앱을 배포하고 그것에 커스텀 도메인을 연결해야 할 때, 이 지식만으로는 많은 어려움에 부닥쳐야 할 것입니다. 제가 그랬으니까요... 저처럼 부족한 지식을 가지고 도메인을 만지작 거리다 곤란을 겪으신 분들을 위해 DNS 에 대해 제가 이해한 내용을 이 글을 통해 알려드리도록 하겠습니다. IP 주소와 hosts 인터넷에 연결된 모든 컴퓨터 각각을 host 라고 ..

백엔드/기타 2020.11.11

웹 프론트엔드 성능 최적화(2) - 리렌더링 과정의 이해

(리)레이아웃과 리페인트 그리고 리컴포짓 (참조 : https://developers.google.com/web/fundamentals/performance/rendering/?hl=ko) 일단 브라우저가 HTML을 한번 다 읽고 나서 파싱까지 모두 끝냈다면 DOM 과 CSSOM 트리를 처음부터 다시 만드는 작업은 일어나지 않습니다. 하지만 자바스크립트나 CSS(transition, animation 등)에 의해 DOM 트리나 CSSOM 트리가 변경되면 렌더 트리는 처음부터 끝까지 다시 만들어지고, 그 후의 모든 과정이 다시 수행됩니다. 스타일 과정을 포함한 모든 과정을 다 수행하는 것을 레이아웃, 혹은 리플로우라고 부릅니다. 그렇다면 이러한 리플로우 과정은 '어느 DOM 요소의 기하학적 속성을 변경하느..

HTML로 이메일 템플릿 제작하기

제가 활동하고 있는 문예 단체에서 문예지를 구독하는 독자들이 작품을 이메일에서 받은 즉시 볼 수 있도록 이메일 HTML 템플릿을 만들어 달라는 부탁을 받았습니다. 처음엔 단순한 퍼블리싱 작업인 줄 알았지만 생각 이상으로 장애가 많아서 혹시 저처럼 퍼블리싱을 통해 이메일 템플릿을 제작하고 싶은 개발자, 디자이너가 있다면 참고하실 수 있도록 글을 작성해보기로 했습니다. 염두에 두어야 하는 제한사항들 사실 조심성이 많은 사람이라면 이메일로 어느 정도의 컨텐츠를 보낼 수 있는지 궁금해하고 인터넷을 뒤져볼 것입니다. 그러나 정보들이 산발적으로 흩어져 있어서 이곳에서 어떤 것을 이메일 컨텍스트 내에서 구현할 수 없는지, 어떤 제한 사항이 있는지를 정리해보겠습니다. 자바스크립트 탑재 불가 일반적인 html 에는 태그..