본문 바로가기
반응형

Study53

[NestJS] 2. 환경변수 적용 (ConfigModule) 환경변수 적용 서버를 돌리기 위해 꼭 필요한 값들이 있다. 예를 들자면, DB Connection 정보나 서버 Port, AWS Key와 같은 값들이 있다. 이런 값들은 주로 환경변수로 분리하는데, 분리함으로서 아래와 같은 이점들을 얻을 수 있다. 보안: 외부에 노출되면 큰일나는 민감한 값들을 소스코드에 하드코딩하지 않음으로써, 소스코드가 노출되어도 외부에서 민감한 정보들을 알 수 없도록 보안을 강화할 수 있다. 유연성: 소스코드를 직접 수정하지 않고도 값들을 변경할 수 있기에, 서버를 다시 빌드하지 않고도 환경을 설정할 수 있다. 배포 관리의 용이: .env.development, .env.production과 같이 서버가 실행되는 환경에 따라 불러올 환경변수 파일을 다르게 함으로써, 여러 환경에 쉽게.. 2023. 12. 21.
[NestJS] 1. 프로젝트 개발환경 구성 NestJS 프로젝트 개발환경 구성 조현영님의 Slack 클론 코딩 강의를 따라 NestJS 공부를 시작했다. 대부분 강의 내용대로 세팅했지만, 그렇지 않은 부분도 있기에 세팅한 내용을 정리해두려 한다. Slack 클론 코딩[백엔드 with NestJS + TypeORM] 강의 - 인프런 Node.js의 스프링이라고 불리는 NestJS를 배우고, Dependency Injection의 편리함을 맛봅시다. API 개발부터, 익스프레스와의 비교, 배포, 테스팅까지 모두 배워봅시다., 내 손으로 만드는 채팅 앱, 서버 개 www.inflearn.com Node.js 설치 강의에선 Node.js 14를 사용한다. 당시엔 Node 14가 가장 최신의 LTS였는데, 현재는 최신 버전이 Node 20이라 충돌이 생길.. 2023. 12. 19.
[Javascript] 비동기를 통해 프로그램의 효율 향상시키기 (Callback, Promise, async / await) 동기와 비동기 자바스크립트에서 코드가 실행되는 방법은 동기 / 비동기 두 가지로 나뉠 수 있다. 동기 (Synchronous): 코드가 순서대로 실행된다. 작업이 시작되면 끝날떄까지 대기한 후, 다음 작업을 실행한다. 비동기 (Asynchronous): 코드가 동시에 실행된다. 실행중인 작업이 끝나지 않더라도 다음 작업을 실행된다. 동기는 실행 흐름을 파악하기 쉽지만 느리다는 특징이 있고, 비동기는 빠르고 효율적이지만 실행 흐름을 파악하기 어렵다는 특징이 있다. 이번 시간엔 비동기로 코드를 실행하는 방법들에 대해 알아보자. Callback 비동기로 대부분 콜백을 가장 먼저 접한다. 매개변수로 함수 실행 시 실행이 필요한 값들과, 또 다른 함수를 전달한다. 함수의 실행이 완료되면, 전달했던 함수가 호출되는.. 2023. 5. 13.
[Javascript] Array Method 정리 Javascript를 사용하다보면 array를 다뤄야 할 일이 많다. 일일이 알고리즘을 작성해 다룰 수도 있겠지만, 기본적으로 제공하는 함수들을 이용하면 훨씬 효율적으로, 가독성 있게 작성할 수 있다. 이번 시간에는 Javascript에 내장되어있는 array util method들에 대해 알아보자. length 함수가 아닌 속성이다. 배열의 길이를 반환한다. arr.length = 5 와 같이 length에 값을 직접 대입해 배열의 길이를 변경할 수 있다. 구문 arr.length 예시 length 읽기 /* length 읽기 */ const arr = [1, 2, 3]; console.log(arr.length); // 3 for(let i = 0; i < arr.length; i++) { conso.. 2023. 4. 3.
[Javascript] var, let, const의 특징과 var의 문제점 ES6에 들어서며 var의 문제점을 해결하기 위해 새로운 변수 선언 방법인 let, const가 등장했다. var, let, const의 특징과, var를 사용하면 안 되는 이유에 대해 알아보자. var ES6 이전의 변수 선언 방식으로, 재할당 및 재선언이 가능하다. 초기값을 주지 않으면 undefined가 들어간다. var a; // undefined a = 2; // 재할당 var a = 3; // 재선언 아래와 같이 여러 변수를 한꺼번에 선언할 수도 있다. var a = 1, b = 2, c, d = a; 또한 var 키워드를 주지 않고 변수에 값을 할당하면, 암묵적으로 전역 변수를 생성한다. a = 1; console.log(a); // 1 function test() { b = 2; } tes.. 2023. 3. 10.
[Java] String Pool 저장 조건 Java는 메모리 공간을 절약하기 위해 Heap 영역에 String Pool 영역을 만들고, 이 영역에 Constant 문자열을 저장한다. 그런데 이 String Pool 영역에 들어가는 조건이 애매하다. 예를 들어, 아래의 s2, s3, s4는 비슷해보이만 다른 결과가 나온다. String s1 = "abc1"; // String Pool에 저장됨 int i = 1; final int j = 1; String s2 = "a" + "bc" + 1; // s1 == s2: true String s3 = "a" + "bc" + i; // s1 == s3: false String s4 = "a" + "bc" + j; // s1 == s4: true 이유가 뭘까? String이 String Pool에 저장되는 .. 2023. 2. 8.
[Java] String + 연산 원리와 성능 비교 개발하던 중 갑자기 String의 + 연산이 어떻게 되는지 궁금해져 찾아봤다. String + 연산 동작원리, StringBuilder, StringBuffer와의 성능 차이에 대해 알아보자. String + 연산 동작원리 String의 +연산은 컴파일 타임에 new StringBuilder.append.toString으로 변환된다. 따라서 아래의 두 코드는 동일하다. String s1 = ""; for(int i=1; i 2023. 2. 8.
[비교] DTO Class vs Record Intro 기존에 Java 11만 쓰다가 이번 프로젝트에서 Java 17을 처음 써보는데, 클래스 생성 중 Record라는 메뉴가 생겨서 찾아보니 DTO로 쓰기 딱이라는 생각이 들었다. Record는 Java 16에서 정식 출시된 새 유형의 클래스로, 불변 객체를 생성할 때 사용한다. java.lang.Record를 상속받는다고 한다. 기존에 사용하던 Class 방식에 Record으로 변경했을 때의 장단점을 비교해보자. Record 특징 1. 보일러 플레이트 코드 제거 다양한 함수를 기본적으로 제공해주기 때문에 보일러 플레이트 코드가 많이 빠진다. 예를 들어 Class를 썼을 때 아래와 같이 선언된 코드가, public class TestClassDto { private final Long id; pri.. 2022. 11. 30.
[비교] Tree 구조 API 디자인 Intro 토이프로젝트 진행 중 트리 구조의 데이터를 서버에 저장해야 할 일이 생겼다. 저장 API를 구현하는 방식으로 아래의 2가지 방법이 떠올랐는데, 이 방법들의 장단점을 비교해보자. 트리 구조 그대로 요청 트리의 각 노드를 쪼개 배열 형태로 요청 트리 구조 그대로 요청 { "name": "test", "root": { "content": "node1", "child": [ { "content": "node1-1", "child": [ { "content": "node1-1-1", "child": [] } ] }, { "content": "node1-2", "child": [ { "content": "node1-2-1", "child": [] } ] } ] } } Tree 구조 그대로 요청하기 때문에.. 2022. 10. 29.
반응형