본문 바로가기

TIL40

TIL #22) test code - 의존성 주입하기 Today I Learned 오늘은 과제 1차 제출일이다. 필수구현사항을 다 하지 못하고 낸게 큰 충격.. 뭔가 정말 열심히 시간을 많이 들였다면 시간내에 다 했을 수도 있을것 같은데, 이상하게 이번 과제는 너무 손 대기가 싫었다.. 그게 결국 잘 모르는거라서, 어려워서 이해하기 싫어서 그랬던 거겠지. 어려운걸 붙잡고있으니까 자신감이 떨어지는 기분이 든다.. 그래도 TIL도 결국 오늘 하루 더 알게된것에 대해 쓰는거니까! 다들 이런 기분을 공유하는것 같아 조금은 위로가 됐다. 다들 힘냅시다.. 실제로 테스트 코드를 잘 아는사람들은 많이 없어서 깊이 파게되면 취업에도 도움이 된다한다. 마음을 다잡고 가보자고 🤯 궁금한 것 & 알아낸 것 - mock fucntion 특정 메서드가 몇번 실행됐는지 아는게 뭐가.. 2024. 2. 22.
TIL #21) 기존코드 3계층 분리하기 Today I Learned 3 layered architecture 가보자고!! 1. 컨트롤러 응답과 요청을 처리. 인증미들웨어도 여기서 처리 2. 서비스 레포지토리에서 가져온 정보를 어떻게 사용자에게 보여줄지(정렬, 뭘 보여줄지 select) 조각조각 정리 3. 레포지토리 프리즈마에서 직접적으로 정보 가져옴 웨어를 통해 어떤 정보 가져올지 선택 가능 == 내가 이해한것 == 컨트롤러에서 요청받은값을 => 서비스에 보내고 서비스에서 받은값을 => 리턴으로 내보내고 서비스에서는 컨트롤러에서 받은값을 => 레포지토리로 보내고 레포지토리에서 받아온값을 가공해 => 컨트롤러에게 보내고 레포지토리는 서비스에서 받아온값을 => 프리즈마에서 가져오고 프리즈마에서 가져온 정보를 => 서비스로 보내고 ===== 레파지.. 2024. 2. 21.
TIL #20) 객체 지향 프로그램 Today I Learned 상속 상속은 객체 지향 프로그래밍에서 클래스 간의 관계를 정의하는 중요한 개념. 상속을 통해 기존 클래스의 속성과 메서드를 물려받아 새로운 클래스를 정의할수있고, 똑같은 코드를 계속 반복할 필요가 없다. 상속을 구현하려면 extends 키워드를 사용하면 가능~! class Animal { //부모클래스 name: string; constructor(name: string) { this.name = name; } makeSound() { console.log('동물 소리~'); } } class Dog extends Animal { //자식클래스 age: number; constructor(name: string) { super(name); this.age = 5; } make.. 2024. 2. 19.
TIL #19) 객체 지향 설계 5원칙(SOLID) SOLID 객체 지향 프로그래밍 및 설계의 다섯가지 핵심원칙 SOLD 원칙을 따르면 시간이 지나도 유지보수와 확장이 쉬운 시스템을 구축할 수 있다. 단일 책임의 원칙 개방 - 폐쇄 원칙 리스코프 치환 원칙 인터페이스 분리 원칙 의존성 역전 원칙 단일 책임의 원칙 Single Responsibility Principle, SRP 하나의 객체는 단 하나의 책임을 가져야 한다. 즉, 클래스나 모듈을 변경할 이유가 단 하나 뿐이어야한다는 원칙. 동작하기만 하는 소프트웨어 보다 깨끗하고 우아하게 작성된 소프트웨어!! 개방 - 폐쇄 원칙 Open - Closed Principle, OCP 소포트웨어 엔티티 또는 개체는 확장에는 열려있으나 변경에는 닫혀 있어야 한다. 기존 코드에 영향을 주지않고 소프트웨어에 새로운 .. 2024. 2. 16.
TIL #18) Transaction Today I Learned 트랜잭션이란 작업의 완전성을 보장해주기 위해 사용되는 개념이다. 특정한 작업을 전부 처리하거나, 전부 실패하게 만들어 데이터의 일관성을 보장해준다. 작업의 단위를 하나의 쿼리에 종속하는것이 아닌, 여러개의 작업(쿼리)을 묶어 하나의 작업단위로 그룹화하여 처리하는 작업을 뜻한다. 대부분의 데이터베이스가 트랜잭션의 특징을 이용하고 있으며, MySQL뿐 아니라 AWS dynamoDB, MongoDB, CockroachDB 등 다양한 데이터베이스에서도 트랜잭션의 개념을 확인 할 수있다. 1) A 고객의 계좌에서 1000원을 차감한다. 2) B 고객의 계좌에 1000원을 추가한다. 다음과 같은 기능은 반드시 트랜잭션이 필요하다. 만약 1번과정 후 2번 과정에서 오류가 발생했다면, A .. 2024. 1. 30.
TIL #17) ORM, Prisma 파먹기 Today I Learned 무작정 강의를 따라듣다보니 기본적인 개념이 궁금해져 공부해보려 한다. ORM(Object-relational maping) : DB데이터를 객체로 매핑해주는것. 모델링 된 객체와 관계를 바탕으로 SQL을 자동으로 생성해주는 도구. 기존 ORM들이 겪는 많은 문제들을 겪지 않을 수 있게 한다고 프리즈마 공식 문서에서는 말한다. Prisma의 구성: Prisma Schema, Prisma introspect, Prisma migration, Prisma client, Prisma studio 1. Prisma Schema 프리즈마 v1에서는 graphQL을 통해 모델을 정의했다면, 프리즈마 v2에 와서는 PSL(Prisma Schema Language)를 통해 모델을 정의한다. .. 2024. 1. 27.
TIL #16) CPU 구성요소 Today I Learned 스탠다드 특강에서 CPU 구성요소에 대해 배웠다. 오늘은 그 내용을 간략하게 정리해보려 한다. CPU는 메모리에 저장된 명령어를 읽고, 해석하고, 실행하는 장치이다. 내부에는 1.ALU 2.제어장치 3.레지스터 라는 구성요소가 있다. 1. ALU - 계산기 예를 들어 1과 2를 더하라는 계산을 하라하면 '1'과 '2'는 피연산자, '더하기'라는 수행할 연산이라고 할 수 있다. 레지스터를 통해 피연산자를 받아들이고, 제어장치로부터 수행할 연산을 알려주는 제어신호를 받아들인다. ALU는 레지스터와 제어장치로부터 받아들인 피연산자와 제어신호를 이용해 산술연산, 논리연산 등 다양한 연산을 수행한다. ALU가 내보내는 정보로는 특정 숫자나 문자가 될수도 있고, 메모리 주소가 될 수도 .. 2024. 1. 26.
TIL #15) SQL 외래키 제약조건 Today I Learned 외래키(Foreign Key) 제약조건은 테이블과 다른 테이블간의 관계를 맺을 때 사용하는 제약 조건이다. 연관관계는 대표적으로 3가지의 형태로 표현가능하다. 1:1 - 1명의 사용자는 1개의 사용자정보를 가질 수 있다. 1:N - 1명의 사용자는 여러개의 주문을 할 수 있다. N:M - 여러명의 학생은 여러개의 학원을 등록할 수 있다. CREATE TABLE 테이블명 FOREIGN KEY (컬럼명) REFERENCES 참조_테이블명 (참조_컬럼명) ON DELETE [연계 참조 제약 조건] ON UPDATE [연계 참조 제약 조건] ); 기본적으로 외래 키 제약조건은 create table 문을 이용해 테이블을 생성함과 동시에 정의한다. 연계 참조 무결성 제약 조건의 종류 .. 2024. 1. 24.
TIL #14) 개인프로젝트를 하며 새로 배운것(nvm, git bash, 트러블 슈팅) #1 - NVM을 이용해 원하는 버전의 node.js 다운받기 우분투를 통해 프로젝트를 git clone 하여 최종적으로는 pe2를 통해 서버를 여는 법을 배웠다. package-lock.json 파일로 node_modules를 설치해야하는데 자꾸 node 버전이 낮아 yarn 을 사용할수 없다는 오류가 발생했다. 이런저런 명령어를 입력했으나 되지 않았고.. 결국은 nvm이라는 node 버전 매니저를 이용해 해결할 수 있었다. 참고로 우분투 22.04 버전은 Node.js 18.x 버전까지 지원한다. 실제로 최신버전(20.x)를 설치하려하니 오류가 났다. curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash sour.. 2024. 1. 23.