전체 글

신 기술이 항상 나오는 이 시대에 기초의 중요성은 더욱 중요해졌습니다. 항상 이에 적응하기 위해 기초를 쌓으려 배움을 기록하는 장소입니다.
제목 : NestJS 의 Interceptor프로그래머스 풀스택 부트캠프에서 팀 프로젝트를 진행했을 때,Express 와 NestJS 의 선택지가 존재했는데,나는 Spring CRUD 정도는 경험 해 본 지라,NestJS 에서의 데코레이터를 통한 메타 프로그래밍 방식을 익히고,파일과 코드 컨벤션을 통한 팀 프로젝트 협업을 배우고자 하였다.특히, Express 의 경우 디렉토리 구조, 클라이언트와 컨트롤러 사이의 로직이 너무나 자유로워팀 프로젝트에서 큰 혼란을 줄 수도 있다는 판단이 들었기 때문에 NestJS 를 선택했다.아예 NestJS 를 처음 사용해 보기 때문에, 공식문서와 팀원분의 코드를 읽으며 빠르게 구현하는 법을 학습했다.하지만, 모든 프레임워크가 그렇듯, 구현을 우선시하다가 이해를 넘겨버리게 ..
제목 : 웹 어셈블리와 Node.jsNode.js 에서 싱글스레드 기반으로 운용되는 Node.js 환경을 멀티스레딩 환경으로 만들어,CPU 집약 비즈니스를 나눌 수 있는 방식을 탐색 했다.이후, 더 최적화 할 수 있는 방식을 연구하며Web Assembly 라는 것을 알게 되었다. 이 글은 밑의 블로그 포스팅과 이어진다.https://codecreature.tistory.com/201갑자기 왜 어셈블리?Node.js 는 현재 웹 서버와 웹 어플리케이션 서버에서 주요하게 사용되고 있다.하지만, 아무리 CPU 집약 비즈니스 코드를 나누어 스레드로 새로 생성하더라도,새로운 스레드 또한 JavaScript 코드를 해석하기 위해 Node.js 엔진을 사용한다.물론, V8 엔진도 훌륭하지만, 기계어가 가깝게 이미 파..
제목 : Node.js 엔진에서 스레드 추가하기 (Worker)세상에는 정말 빠른 실행 시간과 계산을 보장하는 언어들이 많다.벌써 떠오르기를, C, C++JavaPythonRustSwiftGoKotlin등등..Node.js 기반의 엔진보다 CPU 실행 성능이 뛰어나며, Memory 절약도 뛰어난 언어일 것이다. (Python 은 약간 더 뛰어날듯?)JavaScript 는 위의 언어들 중 몇 개들 보다 더 일찍 만들어 졌지만, 웹 페이지에서의 Dynamic 한 인터랙션을 위해 만들어졌다.기존의 HTML 문서는 DOM (Document Object Model) 로 파싱되어,JavaScript 를 통해 엘리먼트들의 위치나 속성을 동적으로 변경할 수 있게 되었다.웹을 위한 언어에서 머무르던 JavaScript ..
제목 : package.json 과 package-lock.json이 두 파일을 접하게 된 시기는 2~3년 전, 처음으로 React 라이브러리를 설치하는 과정에서,package.json 과 package-lock.json 이 생겨나는 것을 보았을 때 였다.항상 처음 라이브러리나 어떠한 프레임워크를 사용 할 때, 해당 라이브러리나 프레임워크에 집중하듯저 위의 2 파일은 내 관심사의 밖이었었다.심지어는 JavaScript 를 제대로 익히지 않고 먼저 React 에 집중하게 되었으니, 당연한 결과이기도 했다.그러나, Node.js 엔진을 이용한 라이브러리와 프레임워크를 이용하며 체계적인 폴더 구조를 익히고,그 내부의 철학 또한 익히는 과정에서 package.json 과 package-lock.json 이이러한..
·잡다 지식
제목 : SQLite 데이터베이스는 무엇일까?고도화를 위해 NestJS 강의를 들으며 SQLIte 데이터베이스 엔진을 접하게 되었으며, 매우 유명한 RDBMS (Relational Database Management System) 인MySQL, Oracle 과는 다르다는 것을 알게 되었다.NestJS 프로젝트에서 TypeORM 라이브러리를 사용하여 간단하게 데이터베이스 연결 예제를 수행하게 되었는데,이 때 SQLite 를 처음 사용하게 되었다. 내가 든 생각은, Github Actions VM 머신에서 E2E 테스팅을 이용하여 RDBMS 를 모방할 수 있겠다는 생각이었다!현재 나의 NestJS 예제 디렉토리는 이러하다.➜ mycv git:(master) ✗ tree -L 1.├── README.md├─..
제목 : 자바스크립트에서 진짜 private 구현하기현대의 자바스크립트 문법(es6 이상) 에서는 "class" 문법이 지원된다.그러나, 자바스크립트를 배우는 지난 과정 속, 데코레이터(Decorator) 를 배우면서,실질적으로 JavaScript 의 Class 또한, function 의 일환이라는 것을 발견했다.이를 발견하게 된 것은, 기존의 TypeScript Class 코드를 JavaScript ES5 버전으로 변경하면서 발견했다.Example : typescript// 클래스 컴파일 결과 확인용class FunctionClass { title : string; static staticalMember : number = 100; constructor() { this.ti..
·잡다 지식
보통 하나의 프로젝트를 생성할 때, 어플리케이션 전용으로 열거나, 문서 작성 전용으로 오픈한다. 하지만, 나는 유데미 강의 사이트를 들으며 얻는 지식과, 그 과정에서 짤막하게 생성하는 NestJS 프로젝트들을 하나의 폴더 "udemy" 에 생성했다. 나는 es6 구문으로 작성되는 자바스크립트에도 집중했지만, 타입스크립트의 구문이 es5 로 컴파일 되는 과정에서 클래스, 프로토타입 간의 chain 이 보인다는 것이 신기했다. 물론 이후에는 Map, Arrow 함수, Promise, async, await 을 이해하기 위해 target 은 es6 로 설정 해 두고 컴파일 했다. ➜ udemy tree -L 2.├── docs-to-learn # JS, TS 테스팅 및 문서 작성 장소.│   ├── 1-de..
제목 : Nest CLI 프로젝트 생성 후 tsconfig 옵션 의미들NPM 전역 도구로 NestJS 프로젝트 생성 CLI 도구를 설치하고 나면,nest 프로젝트를 진행하기 위한 준비를 깔끔하게 만들어 준다.그런데, Udemy 강의를 듣던 중, Nest CLI 로 자동 생성되는 옵션들에 대해 의구심을 가졌다.Nest CLI 를 사용하지 않고, 직접 프로젝트를 생성 했을 때tsconfig.json :{ "compilerOptions": { "module": "commonjs", "target": "es2017", "experimentalDecorators": true, "emitDecoratorMetadata": true }}위의 설정 파일에서 ..
Typescript 의 데코레이터를 이해해 보자타입스크립트로 작성하는 프레임워크, NestJS 와 같은 프레임워크는 Typescript 를 거의 중점적으로 사용한다.이 과정에서, Typescript 에서 제공하는 Decorator(데코레이터) 를 사용하게 된다.모든 프레임워크의 공식 문서가 그렇듯, 프레임워크의 유입과 점유율을 위해,깊게 들어가지 않고 마치 핸드북처럼 간편하게 알려주는 것이 트렌드인 것 같다.나는 공식 문서를 통해 공부하는 스타일이다.NestJS 는 애너테이션을 통해 DI, IoC, AOP 의 틀을 만들었다.DI - Dependency Injection : 의존성 주입IoC - Inversion Of Control : 제어 역전AOP - Aspect Oriented Programming ..
·잡다 지식
Udemy 에서 강의를 듣는데, 이미 들은 강의에서는 비디오와 오디오가 잘 송출되는데,새로 듣는 강의에서는 비디오가 나오지 않고, 오디오만 나오는 현상이 일어났다. 도대체 왜 이러한 에러가 일어나는 건지, 개발자 적인 시각에서 보기로 마음먹었다. 그리고 개발자 도구를 통해서 에러를 확인하니, pixel.... 하는 에러가 나왔다.  아! pixel.pointmedia... 하는 곳에서 DNS (도메인 이름 - naver.com 같은거) 서버에서 정보를 가져오지 못하고, 또 이로 인해 Javascript 실행 파일을 불러오지 못해 검은 화면이 나오는 것 이구나! 라고 생각했다. 그런데, 결과적으로 저 빨간 에러는 영상이 잘 나오던, 나오지 않던, 동일하게 나온다...   그래서, 도대체 문제가 무엇인지 알..
코딩크리처
코딩크리처