[OOP] 다형성
·
프로그래밍 언어/Java
다형성이란? 다형성이란 하나의 타입에 여러 객체를 대입할 수 있는 성질을 말합니다. 다형성의 장점 다형성을 활용하면 기능을 확장하거나, 객체를 변경해야 할 때 타입 변경 없이 객체 주입만으로 수정이 일어나게 할 수 있습니다. 또한 상속을 사용한다면 중복되는 코드까지 제거할 수 있으므로 더 객체 지향 설계에 가까워질 수 있습니다. 다형성을 왜 사용하는가? Polymorphism allows us to perform a single action in different ways. (ref. https://www.w3schools.com/java/java_polymorphism.asp) 다형성은 하나의 행동을 여러 방식으로 수행할 수 있게 해줍니다. 다형성을 구현하는 방법 다형성을 구현하는 방법에는 대표적으로 ..
CORS
·
CORS 란? CORS 는 Cross Origin Resource Sharing의 약자입니다. Cross : 교차, Origin : 출처, Resource : 자원, Sharing : 공유 말 그대로 서로 다른 출처끼리 자원을 공유하겠다는 뜻입니다. (출처: MDN 공식 문서) 좌측의 웹 페이지는 domain-a.com 에 접속하면 볼 수 있는 웹 페이지입니다. domain-a.com 에 접속하면 웹 페이지를 렌더링하기 위해서 총 5개의 API 요청이 발생하고 있습니다. 이 중 셋은 Same Origin 이고 둘은 Cross Origin 입니다. 상단의 파란색 네모 박스 안에 있는 API 는 Same Origin 입니다. domain-a.com 에서 웹 서버 domain-a.com 으로 요청을 보냈기 때..
[리팩토링] 폴더 구조의 변경
·
포트폴리오/JJINCAFE IN SEOUL
들어가며 처음 개인 프로젝트를 진행했을 당시 Express 프레임워크는 자유도가 너무 높아 디렉토리 구조에 대한 엄격한 룰이 존재하지 않아 어떻게 구조를 정해야 할 지 정말 막막했습니다. 당시 프로젝트 디렉토리 구조는 같은 이름을 가지는 파일들(*.router.js, *.controller.js) 끼리 하나의 디렉토리 안에 저장하는 형태였습니다. 예시) 라우터들은 routers 디렉토리 하위에 저장, 컨트롤러는 controllers 디렉토리 하위에 저장 한편, 개인 프로젝트 이후 회사 실무 프로젝트에서 NestJS 프레임워크를 사용하며 Nest 의 디렉토리 구조는 유지 보수 및 확장성 측면에서 괜찮은 구조라는 생각이 들었습니다. 참고) NestJS 는 비슷한 기능을 하는 컨트롤러, 서비스 등을 묶어 각 ..
[리팩토링] 회원가입 API 트랜잭션 처리 및 관심사 분리
·
포트폴리오/JJINCAFE IN SEOUL
들어가며 5월에 종료했던 개인 프로젝트 코드를 다시 열어 보았는데 내가 왜 이렇게 코드를 작성했었지? 라는 생각이 제일 먼저 들었습니다. 대표적으로 기존에 작성했던 회원가입 API 코드를 다시 보니 다음의 두 가지 문제점을 발견했습니다. 회원 정보 저장 쿼리에 대해 트랜잭션 처리가 되어 있지 않았습니다. 이는 회원가입이 실패하더라도 회원 정보가 저장되는 사이드 이펙트를 발생시킬 수 있습니다. 컨트롤러에 요청, 응답을 처리하는 로직과 데이터베이스에 데이터를 저장하는 로직이 혼재되어 있어 가독성과 유지 보수성이 떨어집니다. 문제점을 발견했으니 가만히 있을 수 없어 코드 리팩토링을 진행했고 리팩토링 과정을 기록으로 남기고자 합니다. 기존에 작성했던 회원가입 API 코드 class AuthController {..
[Docker 적용] MySQL 서비스 컨테이너에 .sql 파일 Import 후 데이터베이스에 적용하기
·
포트폴리오/JJINCAFE IN SEOUL
들어가며 이후의 나에게 혹은 같은 상황을 겪는 다른 사람에게 도움이 되고자 MySQL 서비스 컨테이너에 DB 데이터 백업 파일을 Import 후 데이터베이스에 적용한 과정을 기록으로 남깁니다. Import 하려는 파일 정보 및 위치 현재 배포 서버의 루트 디렉토리 내 3_backend_ron_cafe_curation_db_data 디렉토리에 백업해 둔 DB 데이터가 기록된 .sql 파일이 있습니다. pwd 명령 실행 시 현재 디렉토리의 위치를 보여줍니다. ls 명령 실행 시 현재 디렉토리 내부에 존재하는 모든 파일 목록을 보여줍니다. 호스트에서 MySQL 서비스 컨테이너로 파일 Import 3_backend_ron_cafe_curation_db_data 디렉토리의 하위 파일들을 MySQL 서비스 컨테이너..
netstat 명령어 사용법
·
리눅스
들어가며 평소 서버를 켜고 나서 현재 수신하고 있는 상태인지 확인할 때 netstat 명령어를 자주 사용하곤 합니다. 매번 netstat -lntp 명령만 사용하다 보니 이 외 다른 옵션으로는 어떻게 조회하는지 알지 못해 이번 포스팅을 통해 다른 옵션들에 대해 알아보고자 합니다. netstat netstat 은 네트워크 연결 상태, 라우팅 테이블, 인터페이스 상태 등을 보여주는 명령어입니다. 사용법 및 옵션 netstat 사용법은 다음과 같습니다. # netstat [옵션] netstat 옵션은 다음과 같습니다. 옵션 설명 -a 모든 네트워크 상태 출력[-all] -c 현재 실행 명령을 매 초마다 실행[-continuous] -e 확장된 정보 출력[-extend] -g 멀티캐스트에 대한 그룹별 정보 출력..