[Node.js] 비동기 개념에 익숙해지기

개요 C++를 공부하면 포인터에서 숨이 턱 막히듯이, 자바스크립트를 공부하다 보면 넘어야 할 산이 비동기라는 개념입니다. 이 비동기라는 개념이 좀 잡혀있어야, express 라는 웹서버 모듈에서 핸들러를 어떻게 다루어야 할지 감이 오고, Promise 를 어떻게 사용해야 할 지도 조금 감이 생기지 않을까 싶습니다. 이 글은 이벤트 루프 등에 대해서 자세히 다루지 않습니다. 비동기, 논블로킹 IO 등 개념에 […]

Promise 작업 시간 초과하면 실패로 간주하기 (feat. setTimeout, Promise.race)

개요 요즘 자바스크립트에서는 Promise 가 많이 쓰입니다. 이른바 비동기 작업이라고도 하죠. 여러가지 시간이 좀 걸리는 작업들을 다룰 때 편하기 때문인데요, 그런데 너무 오래 걸리는 작업을 취소하고 싶지 않나요? 예를 들어 게시글의 댓글을 불러오기 위해 api 서버에 요청을 날렸는데, 2~3초가 지나도 묵묵부답이라면, 이건 api 서버가 잘못되었다고 보고, 작업을 취소하고, 유저에게 “서버로부터 응답이 없습니다. 잠시 후 다시 […]

Node.js Stream 개념을 익혀보자

목표 Stream 에 대한 개념 이해 간단하게 Readable 클래스 확장구현하기 사전지식 Node.js (본 글에 있는 코든 코드는 Node.js 에서 실행합니다. ) 자바스크립트 ES6 문법 클래스 확장/상속 이 글에서 다루지 않는 것 Stream 의 다양한 이벤트 Readable, Writable 생성자에 넘기는 옵션 pipe 함수의 정확한 동작 방식 Writable, Duplex, Transform 직접 만들기 개요 스트림이라는 말을 처음 들어봤을 […]

VScode + yarn 2 + Monorepo + TypeScript 프로젝트 세팅

목표 yarn 2 를 사용하여 더 효율적으로 패키지 관리하기 모노리포(Monorepo)에 발을 살짝 담구기 타입스크립트 기반으로 프로젝트 구성하기 (이건 사실 이 글에선 중요하지 않음) 사전 준비 타입스크립트를 하고 싶은 마음 vscode 를 에디터로 쓰고자 하는 마음 yarn 명령어 사전지식, yarn 을 선호하는 마음 아직 완벽하지는 않습니다. 특히 타입스크립트가 제대로 동작하는지에 대한 검증이 많이 필요합니다.. 일단 가장 […]

[신입일기] 첫 단추 잘못 끼워진 일 하는 법

개요 이제 회사에 들어간지 한 3개월 정도 되었습니다. 완전 신입이라고 할 수 있겠지요? 필자가 다니는 회사는 분위기가 자유로워요. 회사의 분위기가 자유로운 걸 싫어하는 사람도 있을 거예요. 필자는 성향상 좀 더 자유롭게 풀어놓는 걸 좋아하긴 해서 그건 만족합니다. 그렇다고 방임되고 싶다는 건 아닙니다 하하. 그런데 말입니다, 분위기를 떠나서, 일의 기본적인 형태가 갖춰진 상태로 와야 하는데, 그렇지 […]

[Javascript] 비동기, Promise, async, await 확실하게 이해하기

? 2022년 11월 2일 부로 글을 새롭게 리뉴얼했습니다! 많은 관심 바랍니다. 개요 본 글은 자바스크립트에서 Promise 에 대한 개념을 잡기 위해 작성한 글입니다. 자바스크립트의 기본 문법을 먼저 알아야 이 글을 조금 더 수월하게 보실 수 있습니다. 필자는 Node.js 기반에서 실행시키고 있습니다. 이 글에서는 어떻게 자바스크립트 실행 환경을 만드는지에 대해서는 다루지 않습니다. 최대한 차근차근 설명하려고 했기 […]

[리뷰] 모순 – 양귀자 장편소설

소설을 굉~장히 오랜만에 읽었다. 그것도 국내 소설을. 최근 들어 읽는 문학이라곤 인터넷 커뮤니티에서 돌아다니는 각종 썰 밖에 없었는데, 이번에 제대로 책으로 된 문학을 읽게 되었다. 책을 읽게 된 경위는 우선 백만년 만에 새로운 독서 모임을 가지게 되었는데, 거기서 첫 번째로 읽어오라는 책이 이 <모순> 이라는 책이다. 강력한 흡인력 <모순>은 1998년에 쓰여진 소설이다. 양귀자 라는 이름은 […]

[Rust] 배열 셔플해보기

개요 Rust 에서 vec! 으로 만든 배열의 값들을 셔플하는 간단한 예제를 만들어보아요. rust 가 너무 헷갈려서 이 쉬워보이는 연습도 힘겹게 했네요. 미리 알고 있으면 좋은 것들 let vs let mut : 변수를 선언할 때에는 기본적으로 불변형(immutable) 입니다. mut 키워드를 뒤에 붙이면 변형을 할 수 있습니다. 슬라이스: 그냥 배열같은 것의 일부분의 레퍼런스 같은 것이라고 이해하고 있습니다. […]

[Typescript] 인터페이스의 키 목록을 string 배열과 일치하도록 강제하기

개요 이런 걸 만들고 싶다고 가정합시다. 어떤 액션의 타입을 string 으로 받아온다고 합시다. 액션의 종류에 대해서 순회할 일도 있으므로 (값으로써 직접 가지고 있어야 하므로) 다음과 같이 배열로 만든다고 가정합시다. (‘go’ | ‘sleep’ | ‘dance’ 이런 식으로 직접 타입을 선언해봤자 이 타입을 기반으로 새 배열을 우리가 만들수는 없으므로.. 일단 배열을 직접 만들어야 합니다.) 그리고 각각의 액션을 […]

[C] 다형성(Polymorphism) 구현하기

개요 객체지향 패러다임에서 다형성을 정의하는 법도 여러가지겠지요. 위키백과에서는 프로그램 언어의 각 요소들이 다양한 자료형(type)에 속하는 것이 허가되는 성질을 가리킨다고 되어있습니다. 모두 아시다시피, C에서는 객체지향의 패러다임을 언어 차원에서 설계를 해놓지 않았으므로 그러한 개념을 구현하기가 굉장히 까다롭습니다. 이론적인 부분을 크게 다루지는 않을 것이므로, 간단하게 정의하는 것으로 시작하겠습니다. 이 글에서 다형성을 구현한다는 의미는, 소스코드 상에서 동일한 함수 호출이 […]

Scroll to top