전체 글

개발자로서 성장하기 위해 배운 지식, 트렌드와 경험을 글로 남기고 이를 공유합니다.
Kernel 커널은 운영체제에서 핵심적인 기능을 모아놓은 것이다. 프로세스 관리 메모리 관리 저장장치 관리 운영체제는 커널과 인터페이스를 분리한다. 시스템 콜과 드라이버는 인터페이스에 해당되고 그 뒤로는 커널의 핵심 기능이 있다. System call 응용프로그램(app)이 시스템 자원에 접근하려면 커널의 시스템 콜을 호출해야한다. 커널은 요청을 받아 app이 원하는 작업을 처리한다. 이렇게 하는 이유는 app이 직접 자원에 접근할 경우 원치 않는 결과가 발생할 수 있기 때문에 자원을 보호하는 목적으로 시스템 콜이라는 인터페이스를 제공하는 것이다. Driver 시스템 콜이 app과 커널사이의 인터페이스라면 드라이버는 하드웨어와 커널사이의 인터페이스이다. 다만 하드웨어는 커널과 직접 연결되기도 하고 디바이..
· Frontend
안녕하세요. 이번 포스팅에서는 Redux Thunk에 대해 알아보려 합니다. 일반적으로 thunk는 asynchronous한 로직에 사용한다고 알려져 있는데요. Redux state와 dispatch에 접근할 수 있기 때문에 다양하게 활용할 수 있습니다. 이 포스팅을 읽고 난 후에는 아래의 내용들을 얻어가실 수 있습니다. synchronous한 로직에 thunk를 활용하기 여러 action을 위해 thunk에서 dispatch Synchronous complex logic 복잡한 로직은 reducer에서 처리하는 것이 일반적이 케이스이기 합니다. 그렇지만 만약 state에 접근이 필요한 경우 Thunk에서 로직을 작성할 수도 있습니다. const addTodoThunk = createAsyncThunk(..
· Backend
이번 시간에는 Nest.js의 DTO(Data transfer object)로부터 MongoDB 의존성을 없앴던 방법을 공유하려 합니다. 이 포스팅을 읽고 난 후에는 다음의 내용을 얻어가실 수 있습니다. DTO로부터 특정 DB의 의존성을 제거하기 Model User, Report model들을 코드로 확인해보죠. user.entity.ts @Schema() export class User { id: string; @Prop({ select: false, }) __v?: number; @ApiProperty() @Prop() email: string; @Prop({}) password: string; @Prop({ default: true, }) isAdmin: boolean; } report.entity..
· Backend
app이 시작되면 app.module.ts로 부터 시작해서 필요한 dependency들의 인스턴스를 생성합니다. 해당 과정을 단계별로 알아보겠습니다. App이 시작되면 Injectable 데코레이터로 정의된 class들을 Reflect를 활용해 등록합니다. App.module.ts부터 시작하여 bottom-up 방식으로 dependencies의 인스턴스를 정의하고 주입합니다. 이때 Injectable로 등록한 class들을 찾을 수 있습니다. TypeScript의 타입을 class에 대한 토큰으로 사용하여 dependency를 정의할때 사용합니다. // build된 JavaScript 코드 MessagesController = __decorate([ (0, common_1.Controller)('..
mechaniccoder
개발 지식, 트렌드, 경험 공유