🪩/기타 26

nestjs 프로젝트 프론트 ejs 도입

이번 프로젝트를 진행하며 ejs를 처음 써보게 되었다 nestjs의 컨트롤러 코드를 html 코드와 연결해준다는 느낌이다 이렇게 html로 작성된 파일의 확장자를 .ejs로 변경한 후, ejs 문법에 맞추어 연결할 코드를 수정한다. 컨트롤러에는 @Render를 추가하고 연결할 파일명을 기입한다. main.ts 파일도 작성해준다. public에는 css 파일이, views에는 ejs 파일이 있다.

🪩/기타 2024.04.15

최종프로젝트 오류

북마크 조회가 되지 않고 있음(서버 오류) -> 콘솔 에러메시지 보니까 NaN 문제라고 함 userId가 number로 받아와지지 않고 있는 것 같음 찾아보니 @Param('userId') 데코레이터로 매개변수를 추출하면 일반적으로 문자열로 나온다고 함 const userId = Number(user.id); const myBookmarkList = await this.collectionService.getBookmarkColList(userId); 이렇게 수정했는데 여전히 오류 -> 팀원분이 알아내심 @Get('bookmark') 이 코드가 @Get('/:collectionId') 이런 : 들어간 코드 아래에 있어서 그게 적용된거였음 결론: controller 파일을 한 번 더 분리했습니다

🪩/기타 2024.04.05

[DB] RDBMS, SQL, NoSQL

DBMS 데이터베이스 관리 시스템 데이터베이스를 조작하는 소프트웨어 데이터베이스를 구축하고 효율적으로 데이터 검색 및 저장 기능 제공 RDBMS 관계형 데이터베이스(관리 시스템) 키와 밸류의 관계를 테이블화 시킨 데이터베이스 SQL 관계형 데이터베이스를 관리하기 위해 설계된 프로그래밍 언어 MySQL sql을 사용하는 오픈소스의 관계형 데이터베이스 관리 시스템 NoSQL 기존의 관계형 데이터베이스보다 더 융통성 있는 데이터 모델, 데이터의 저장 및 검색에 특화 스키마가 필요없고 데이터 분산이 용이 단순 검색 및 추가 작업에 최적화된 기법 사용 -> 응답 속도나 처리 효율이 뛰어남!

🪩/기타 2024.03.29

도커(Docker), 메시지큐(Message Queue)

최종 프로젝트를 준비하며 팀원들과 기술 스택에 대해 이틀동안 이야기를 나누고 있다. 낯선 기술이 많아서 먼저 기술을 알아가는 시간을 가지기로 했다. 각자 배우지 않았던 기술을 한두개씩 담당해서 30분동안 공부해온 뒤 서로에게 알려주는 방식으로 진행해봤다. 나의 담당 기술은 도커와 메시지큐였고, 이때 정리한 내용을 올리려고 하는데 30분동안 정말 감만 잡은!! 감도 100% 잡은게 아니고 어떤 상황에 어떤 기술과 연계가 되는지 정도만 아주 대략적으로!! 담긴 내용이기 때문에 정보성 글보다는 그냥 개인 기록정도로 보는 것이 맞을 것 같다. 도커 컨테이너 기반의 오픈소스 가상화 플랫폼 여기서 컨테이너는 항구에서 볼수있는 그 컨테이너를 떠올리면 이해가 쉬울 것 같음 프로그램, 실행환경을 컨테이너로 추상화 동일한..

🪩/기타 2024.03.26

[NestJS] 컨트롤러, 핸들러, 서비스

컨트롤러란? 들어오는 요청 처리, 클라이언트에 응답 반환 @Controller 데코레이터로 클래스를 정의 인자는 컨트롤러에 의해서 처리되는 경로로 받음 (ex: @Controller('/board') 핸들러란? @Get, @Post, @Delete 등 데코레이터로 장식된, 컨트롤러 내의 단순한 메서드 서비스란? 컨트롤러에서 데이터 유효성 검사를 하거나, DB에 아이템을 생성하는 등의 작업 처리 데이터베이스 관련 로직: DB에서 데이터 가져오기, 게시판 생성 시 DB 안에 생성한 게시판 정보 넣어주기 등 @Injectable 데코레이터로 감싸지고, 서비스 인스턴스는 모듈 전체에서 자유롭게 사용이 가능 서비스를 컨트롤러에서 사용하려면 constructor (private boardsService: Board..

🪩/기타 2024.03.14

[Nest.js] Select 'Retry as Sudo' to retry as superuser. 에러

Failed to save 'app.service.ts': Insufficient permissions. Select 'Retry as Sudo' to retry as superuser. Nest.js 실습 과정에서 vscode를 이용해 app.service.ts 파일의 함수를 조금 수정했는데, 저장을 시도하니 저런 오류 메시지가 떴다. cli 설치 과정에서 이런저런 오류 때문에 sudo 명령어를 이용하여 프로젝트를 생성했었는데 그것이 문제가 된게 아닐지 의심중.. 아무튼 해결 방법 echo $USER // 유저 이름 출력 echo $HOME // 홈 디렉토리 출력 먼저 해당 명령어들로 유저 이름과 홈 디렉토리를 알아낸다. sudo chown -R [유저 네임] [홈 디렉토리] 그런 다음 해당 명령어를 ..

🪩/기타 2024.03.07

디자인 패턴(Design pattern) : 전략 패턴

디자인 패턴이란? 프로그램 개발에서 자주 나타나는 과제를 해결하기 위한 방법 중 하나로, 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 이름을 붙여, 이후에 재이용하기 좋은 형태로 특정의 규약을 묶어서 정리한 것 (출처: 위키백과) 말이 어렵게 정리되어 있지만, 간단하게 특정한 패턴을 가진 문제 해결 방식을 정의한 것이라고 이해했다. 디자인 패턴 중에서도 전략 패턴을 학습해봤다. 전략 패턴이란? 객체가 할수있는(나올수있는?) 행위들을 전략으로 정의하고, 행위의 수정이 필요해지면 전략만 수정함으로 행위의 수정까지 가능하도록 만들어주는 패턴 나의 언어로 정리한다고 한건데도 말이 어렵다. 먼저 달라지는 부분과 달라지지 않는 부분을 분리하는 캡슐화 작업이 필요하다. 그런 다음 인터페이스를 사용..

🪩/기타 2024.02.26

메모리, 제어장치, CPU

메모리 CPU -> 메모리 : 접근 속도 느림 CPU -> 레지스터 : 접근 속도 메모리에 비해 빠름 메모리: 책장에 책을 꽂아둠 레지스터: 책상에 책을 올려둠 그래서 ALU가 계산 후 내보내는 정보는 일시적으로 레지스터에 먼저 저장 제어장치 ALU는 단순 계산기인 반면 제어장치는 CPU의 구성 요소 중 가장 정교하게 설계된 부품 제어 신호를 내보내고 명령어를 해석 clock 클럭 신호 컴퓨터의 부품이 움직이는 시간 단위 컴퓨터의 작업 주기 제어장치는 외부로 전달되는 제어신호 / 내부로 ‘’ 둘로 나뉨 CPU 제어장치 ALU 레지스터 레지스터 프로그램을 실행하면 메모리에 올라감 임시 저장 장치 다음에 읽을 것을 프로그램 카운터에 지금 읽는 것을 명령어 레지스터에 저장 명령어 싸이클 CPU가 하나의 명령어..

🪩/기타 2024.02.23

객체 지향 설계 5원칙 (SOLID)

SOLID란 객체 지향 프로그래밍 설계에 필요한 다섯 가지 원칙의 앞글자를 따서 만든 것이다. 단일 책임의 원칙 (Single Responsibility Principle, SRP) 하나의 클래스는 하나의 책임만 가져야 한다. (= 한가지 일만 해야한다) 클래스나 모듈을 변경할 이유는 하나뿐이어야 한다. 개방-폐쇄 원칙 (Open-Closed Principle, OCP) (개체의 행위)확장에는 열려있고, (개체자체)변경에는 닫혀있어야 한다. 클래스의 기존 코드에 영향을 주지 않고 소프트웨어에 새로운 기능이나 구성요소 추가가 가능해야함 인터페이스나 상속을 사용하면 부모클래스의 수정을 이용하지 않고 사용 가능 리스코프 치환 원칙 (Liskov substitution principle, LSP) 서브(자식)타..

🪩/기타 2024.02.22