본문 바로가기

Development/JavaScript

(4)
Development/JavaScript 잘못된 이해가 만든 문제와 명확한 의사소통의 중요성 들어가며최근 한 6년차 개발자로부터 꽤 당황스러운 이야기를 들은 적이 있다. 단순히 의견 차이라고 보기에는 기본 개념 자체가 뒤섞여 있는 상태였고, 그 상태로 여러 주장을 이어가고 있었다.Node.js는 서버이고, React도 Node.js이기 때문에 Socket 서버를 열 수 있다.브라우저에서 동작하는 JavaScript도 Node.js이므로 Node.js에서 사용하는 모듈(예: Redis, MongoDB 등)을 그대로 사용할 수 있다.React로 개발한 웹 애플리케이션은 S3로 배포하면 안 되고, 반드시 별도의 서버 애플리케이션을 통해 배포해야 한다.React도 S3에 직접 로깅을 해야 한다.이 이야기들을 듣고 말문이 막혀버렸다. 누군가는 '회사에서 뭘 굳이 반박까지 해가며 일을 키우냐'라고 할 수 ..
Development/JavaScript Javascript의 병렬 처리에 관한 견해(동기, 비동기, blocking, non-blocking) 개념 정리 개요 Javascript를 공부해본 사람이라면 단일 쓰레드, 콜백, 비동기, 병렬처리에 대한 내용을 접해본 경험이 있을 것이다. 위의 용어 자체가 추상적이기도 하고, 쉽게 와닿지 않기 때문에 단번에 이해하기에는 꽤 어려운 개념일수도 있는데, 사실 위에서 언급 내용은 모두 연관성이 있기 때문에 Javascript의 동작 방식을 이해하고 나면 전체적인 그림이 그려질 것이라 생각한다. 이번 글은 100% 정확한 사실에 기반한 내용을 정리한 것이 아니라는 점을 참고하기 바란다. 병렬처리에 대한 주관적인 생각 구글링을 하다보면, 'Javascript는 병렬적으로 수행된다'라는 내용을 가끔 확인할 수 있다. 이 내용을 처음 보았을 때에는 '그런가보다'하며 넘어갔었는데, 단일 쓰레드, 콜..
Development/JavaScript JavaScript 위치 및 async/defer 속성에 따른 HTML 렌더링 효율성 위치에 따른 렌더링 시간 웹 브라우저의 역할은 서버로부터 웹 페이지를 이루고 있는 여러 파일을 전달(다운로드) 받은 후 HTML 문서를 위에서부터 한 줄씩 읽으며(parsing) 화면에 보여주는 것이라고 할 수 있다. HTML 파일에는 CSS, JavaScript와 같은 여러 파일이 링크된 상태로 포함되어 있는데, 이러한 파일들은 해당 파일을 링크하는 코드가 읽힌 후 다운로드 된다. 먼저, 웹 브라우저는 이 경우에는 웹 브라우저가 HTML 파싱을 모두 마친 후 JavaScript 파일을 다운로드하기 때문에 앞의 상황에 비해 훨씬 빠르게 웹 페이지를 화면에 나타낼 수 있다. 그러나, 해당 웹 사이트의 주된 컨텐츠가 JavaScript를 통해 생성되는 등 JavaScript에 의존적인 경우 정상적인 웹 페이..
Development/JavaScript 자바스크립트(JavaScript)의 역사와 배경 들어가며사마천의 술왕사 지래자(지난 일을 기술하여 다가올 일을 안다)에서 유래된 말이 있다.역사는 현재를 비추는 거울이고 미래의 길을 제시하는 나침반이다기술도 마찬가지다. 지금 우리가 사용하는 기술이 왜 이런 형태를 가지게 되었는지 이해하려면, 그 기술이 어떤 배경에서 탄생했고 어떤 과정을 거쳐 발전해왔는지를 아는 것이 중요하다. JavaScript 역시 단순히 웹에서 쓰는 언어라고 보기에는 그 역사와 맥락이 꽤 흥미롭다. 특히 JavaScript는 처음부터 거창한 설계 아래 만들어진 언어가 아니라, 급하게 만들어졌고, 경쟁 속에서 살아남았으며, 표준화 과정을 통해 지금의 모습이 된 언어이다. 이 글에서는 JavaScript가 어떻게 탄생했고, 어떤 사건들을 거쳐 지금의 위치까지 오게 되었는지를 흐름 중..