전체 글

함께 성장하는 개발자
Node.js/Javascript

[함수형프로그래밍] 0. 함수형 프로그래밍이란 ?

어떤 것을 학습하기 이전에 학습하려는 기술이 왜 필요하며, 핵심이 뭔지, 왜 이것을 학습해야 하는지 알아야 학습 능률이 올라갑니다. Inflearn 유인동 님의 강의 함수형 프로그래밍과 JavaScript ES6+ 를 학습하기에 앞서 왜 함수형 프로그래밍 학습에 앞서 함수형 프로그래밍이 무엇인지, 왜 필요한지, 특징은 뭔지 살펴봅시다. 🐳 함수형 프로그래밍이란 ? 함수형 프로그래밍이란? 계산을 수학적 함수의 평가로 취급하고, 상태 변경과 데이터의 변형을 피하는 프로그래밍 패러다임입니다. 함수형 프로그래밍이 추구하는 것은 예측 가능성을 높이고, 부작용을 최소화하며, 코드의 가독성과 유지보수성을 향상시키는 것입니다. 위의 목적을 달성하기 위해 함수들을 조합해 데이터를 다루는 프로그래밍 패러다임을 함수형 프로..

Node.js/Javascript

[함수형프로그래밍] 1. 일급함수란 ?

이 강의는 Inflearn 유인동님의 강의 함수형 프로그래밍과 Javacsript ES6+ 를 수강하고 작성한 글입니다. 먼저 함수형 프로그래밍을 알기 위해서는 함수형 프로그래밍에서 사용하는 용어들을 알아야 할 것이다. Javascript의 함수형 프로그래밍의 기본 용어와 일급객체, 일급함수에 대하여 알아보도록 하겠습니다. 🐳 평가 평가란 코드가 계산 되어 값을 만드는 것을 의미한다. const a = 1 + 2; 라는 코드에서 a를 평가해 값을 만드는 것이다. 🐳 일급 객체 일급 객체란 Javascript에서 값으로 다룰 수 있는 것들을 일급객체라고 표현한다. 값으로 다룰 수 있다는 것은 아래의 특징을 가진다. 변수에 담을 수 있다. 함수의 인자로 사용할 수 있다. 함수의 결과로 사용될 수 있다. 이러..

테스트 코드

[NestJS] 실제 DB와 연결해 Service Layer 테스트하기 + runInBand

이 글은 인프런 강의 박우빈 님의Practical Testing: 실용적인 테스트 가이드를 수강하고 참고하여 작성한 게시글입니다. DB 접속 없이 Service Layer를 테스트하고 싶다면 이 글을 참고해 주세요. ※ 잘못된 점이 있거나 다른 의견을 가지신 분들 댓글로 내용 남겨 주세요 ! 언제나 환영입니다. 🐳 서론 지금 재직하는 회사에서는 테스트코드를 작성하지 않기 때문에 다른 NestJS를 사용하는 곳에서는 Service Layer 를 어떻게 테스트하는지 궁금했다. 그래서 NestJS 테스트코드 강의를 수강해 봤지만 시원하게 Service Layer를 테스트하는 방법을 알려주는 강의를 발견하지 못했다. 그래서 이미 테스트코드 시장이 많이 발전한 Java로 시선을 돌렸고 박우빈 님의 강의를 발견하게..

테스트 코드

[NestJS] Service Layer 를 직접 구현한 Class로 Mocking하기 [TestingModule]

실제 DB를 연결해 Service Layer 를 테스트하는 방법이 궁금하신 분들은 이 글을 참고해 주세요. 🐳문제상황 Service Layer를 테스트하기 위해서는 Repository를 Mocking 하거나 실제 Repository를 사용하거나 하는 방법을 사용해야 한다. 이 글에서는 NestJS에서 제공하는 TestingModule 기능을 활용해 Repository 레이어를 Mocking해 테스트코드를 작성하는 방법을 설명하려고 한다. 🐳 TestingModule을 사용하여 mocking하기 jest 에서 제공하는 기능들 jest.fn , jest.spyOn 등을 이용하여 mocking 한 후에 테스트코드를 작성하는 것도 가능하지만 테스트코드가 길어져 가독성이 떨어지는 것 같아. 다른 방법을 찾아보..

데이터베이스

[MySQL] 동시성 문제 해결 - 비관적 락 ( Pessimistic Lock )

🐳문제상황 시험 응시원서 시스템을 만드는 과정에서 접수번호( 시험번호 + 순차 증가하는 번호 ) 생성 로직에서 문제가 발생했다. 접수번호 생성 로직은 아래와 같다. 1. 현재 원서 중 가장 큰 접수번호를 조회한다. 2. 가장 큰 접수번호에 + 1을 하여 원서 접수 번호를 생성한다. 위의 로직에서 여러 원서를 동시에 접수할 경우 같은 접수번호를 가진 데이터 입력을 시도하게 되었고 접수번호 + 시험ID 값은 Unique 한 값이기에 에러가 발생했다. 이 문제는 여러 원서가 한 개의 원서 자원에 접근하여 발생한 동시성 문제이다. 만약 DB에 접수번호에 Unique를 설정해 주지 않았다면 같은 접수번호를 가진 원서가 발생해 큰 문제를 야기했을 것이다. 이 문제를 해결해보자 ! 🐳Database 의 Lock 기능..

후뿡이
개발자 '왜?'길 인생