프론트엔드 7

SOP(Same-Origin-Policy), CORS(Cross-Origin-Resource-Sharing)

자주 마주치는 CORS 오류 프론트엔드 프로젝트를 할 때 자주 마주치는 오류 중 하나로 CORS가 있다. 토이 프로젝트를 할 때 API를 가져가 쓸 때도 빈번하게 발생했고, 현업에서 백엔드/프론트엔드 서버를 다르게 구축하고 개발할 때도 마찬가지이다. 토이 프로젝트를 할 때는 한 줄 코드를 넣어 프록시를 우회하도록 하며 API를 쓰거나(a), webpack 설정 파일에 개발 시에 사용할 수 있게 proxy 설정(b)을 해주곤 했다. 좀 더 큰 규모의 프로젝트를 진행하면서는 백엔드 개발자에게 CORS 해결을 위해 협조를 요청해서 해결했다. (사전 지식이 부족했을 때 프론트엔드 단에서 실수인가 싶어서 온갖 자료를 찾아보면서 방법을 강구해봤지만 AWS 서버 설정 페이지에서 단 한 번의 클릭으로 해결할 수 있는 ..

👩‍💻/Web 2021.05.10

[JavaScript] 함수 생성자와 클래스의 차이

함수 생성자(Constructor Functions)란? 함수 생성자는 여러 프로그래밍 언어에서는 '클래스'와 동의어다. 어떤 경우 사람들은 참조 타입(Reference Types), 클래스(Classes), 데이터 타입, 아니면 간단하게 생성자라고 부른다. 클래스에 아직 익숙하지 않다면, 어떤 속성(properties)과 행동(functions)을 정의하도록 해주고, 그 속성과 행동을 통해 여러 객체가 생성될 수 있도록 해주는 생성자라고 이해하면 된다. 클래스는 객체로서 집을 짓기 위한 청사진이라는 비유를 많이 한다. 여러 집이 단 하나의 청사진으로부터 시작하는 것처럼, 여러 객체도 단 하나의 클래스로부터 생성될 수 있다. function Person(name, position) { this.name ..

[JavaScript] 콜스택, 콜백큐, 이벤트 루프의 동작 원리를 통한 비동기 함수의 실행 과정

자바스크립트에서 당연히 의심 없이 사용하던 비동기 함수 실행 과정을 들여다볼 기회가 생겼다. 싱글 스레드 언어인 자바스크립트는 한 줄 한 줄 순서대로 동기적으로 실행되어야 하며, 두 가지 이상의 태스크를 병렬적으로 수행할 수 없어야 하는데, setTimeout이나 웹 API, ES6의 promise 같은 비동기 콜백은 어떻게 실행되고 있는 것일까? 우선 자바스크립트의 두 가지 이상의 statements가 병렬적으로 실행되지 못하는 것은 맞다. 실행은 항상 동기적이다. 자바스크립트 엔진 V8은 프로그램 내 모든 변수의 메모리 할당이 일어나는 Memory Heap과 스택 프레임이 쌓이는 콜 스택으로 이루어져 있고 이 콜 스택(호출 스택)이 하나이므로 싱글 스레드이다. 하지만, 자바스크립트가 실행되는 브라우저..

Daily life as a front-end junior develop and a thought about working with a colleague in a different time zone.

3월 중순부터 일을 시작했고 7월 초면 계약이 끝난다. 주니어 프론트엔드 개발자로 Full-time으로 일하고 있는데, 재택 근무는 아직 없었다. 현업은 재택이 많은 직군이어서 사무실이 떠들썩하지는 않은데, 출퇴근 시간이 약 1시간 30분 정도 걸려서 도합 3시간을 길바닥에 버리는 것을 생각하면 재택이 너무 하고 싶다... 주중에는 프론트엔드 개발 지식을 좀 더 익히고 싶어서 다른 프론트엔드 job을 준비 중인 개발자 분과 스터디를 하고, 토요일에는 Nativeness를 지향하는 영어를 배우고 싶어서 이것도 두 달째 한 시간 반씩 수업을 듣고 있다. 대체로 일주일에 세 번은 삼십분 이상 운동하려고 노력하고 있다. 어린이날에는 모처럼 휴일이어서 집안일도 하고, 화분갈이도 해주고 기타 등등 잡무를 처리했다...

💎/Log 2021.05.06

[JavaScript] 엄격 모드 (use strict)

엄격 모드는 ES5에 도입된 문법이다. 자바스크립트 최상단에 use strict 문구를 넣어 실행한다. 또는 함수 내에서도 작성 가능하다. 엄격 모드를 실행하기 전에는 관용적으로 느슨하게 허용되는 '오류를 유발할 가능성 있는 문법' 때문에 디버깅이 어려운 요인이 되곤 했다. strict mode를 실행해주면 미리 해당 에러를 출력해서 바로잡을 수 있도록 도와준다. 업데이트 될 새로운 명세의 자바스크립트에 대응하기도 편하고, 최적화 이슈에도 도움이 되어서 use strict를 사용이 권고된다. 리액트, 뷰 같은 프레임워크를 사용할 때는 자동으로 엄격 모드를 사용할 수 있게 해줘서 크게 신경쓰지 않았지만, 바닐라 자바스크립트 프로젝트를 할 때는 추가해주는 습관이 좋겠다. 보통 npx로 CRA을 하고 나면 아..

[CSS] position의 이해. static/relative/absolute/fixed 그리고 sticky.

CSS 속성 중 fixed와 sticky 활용을 잘 못하는 것 같아서, 다시 한 번 점검용으로 또 면접 준비용으로 기록을 남겨보려고 한다. 우선 CSS의 position property에는 static, relative, absolute, fixed, sticky 다섯 종류가 있다. CSS의 각 속성은 top, right, left, bottom의 속성에 값을 넣어 최종적으로 문서 내 요소가 의도대로 배치될 수 있도록 도와준다. 단, static의 경우에는 해당 속성들은 물론, z-index 같은 속성의 도움을 받을 수 없다. 문서의 원래 흐름에 자연스럽게 위치되기 때문이다. relative 해당 속성을 가지는 요소는 원래의 문서 흐름을 배제하지 않지만, 자기 자신을 기준 삼아 top, bottom, r..

👩‍💻/CSS3 2021.04.24

DOCTYPE, HTML, XHTML, 그리고 HTML5

DOCTYPE 유규한 역사를 가진 HTML은 시간이 지나며 그때 그때 필요한 기능을 표준으로 하는 버전들을 계속 업데이트해왔다. 당연히 여러 버전이 존재할 수밖에 없고, 이들은 각각의 이름도 가지고 있다. 가까운 순으로 HTML5, XHTML 1.1, HTML 4 등을 들어볼 수 있는데, 버전 별로 지원하는 태그나 속성이 조금씩 다르다. 물론 deprecated된 기능도 있다. 그러다보니 웹 문서가 어떤 HTML 버전을 사용하는지 브라우저에게 알려줄 DTD(Document Type Declaration)이라 하는 문서 형식 지시자를 와 같이 HTML 문서 최상단에 작성하게 된다. 그러면 브라우저는 이를 읽고 선언된 버전에 맞는 문서를 렌더링해서 보여줄 수 있게 되는 것이다. deprecated 되는 몇 ..

👩‍💻/HTML5 2021.04.24