fas

ALL

· DEV/How to
기능 편애 어떤 모듈에 있는 함수가 다른 모듈에 있는 데이터나 함수를 더 많이 참조하는 경우에 발생한다. (결합도 높음) 예) 다른 객체의 getter를 여러개 사용하는 메소드 관련 리팩토링 기술 "[[Divergent Change#2. 함수 옮기기 (Move Function)|함수 옮기기]]"를 사용해서 함수를 적절한 위치로 옮긴다. 함수 일부분만 다른 곳의 데이터와 함수를 많이 참조한다면 "[[Duplicated Code#1. 함수 추출하기|함수 추출하기]]"로 함수를 나눈 다음에 함수를 옮길 수 있다. 만약에 여러 모듈을 참조하고 있다면? 그 중에서 가장 많은 데이터를 참조하는 곳으로 옮기거나, 함수를 여러개로 쪼개서 각 모듈로 분산 데이터와 해당 데이터를 참조하는 행동을 같은 곳에 두도록 하자 예..
· DEV/How to
산탄총 수술 어떤 한 변경 사항이 생겼을 때 여러 모듈을(여러 함수 또는 여러 클래스를) 수정해야 하는 상황 "[[Divergent Change|뒤엉킨 변경]]"과 유사하지만 반대의 성향 예) 새로운 결제 방식을 도입할면 여러 클래스의 코드를 수정해야 한다. 변경 사항이 여러곳에 흩어진다면 찾아서 고치기도 어렵고 중요한 변경 사항을 놓칠 수 있는 가능성도 생긴다. 관련 리팩토링 기술 "[[Divergent Change#2. 함수 옮기기 (Move Function)|함수 옮기기]]" 또는 "[[#1. 필드 옮기기 (Move Field)|필드 옮기기]]"를 사용해서 필요한 변경 내역을 하나의 클래스로 모을 수 있다. 비슷한 데이터를 사용하는 여러 함수가 있다면 "[[Long Paramater List#3. ..
· DEV/How to
뒤엉킨 변경 소프트웨어는 변경에 유연하게 대처할 수 있어야 한다. 어떤 한 모듈이(함수 또는 클래스가) 여러가지 이유로 다양하게 변경되어야 하는 상황. 예) 새로운 결제 방식을 도입하거나, DB를 변경할 때 동일한 클래스에 여러 메소드를 수정해야 하는 경우. 서로 다른 문제는 서로 다른 모듈에서 해결해야 한다. 모듈의 책임이 분리되어 있을수록 해당 문맥을 더 잘 이해할 수 있으며 다른 문제는 신경쓰지 않아도 된다. 관련 리팩토링 기술 "[[#1. 단계 쪼개기 (Split Phase)|단계 쪼개기]]"를 사용해 서로 다은 문맥의 코드를 분리할 수 있다. "[[#2. 함수 옮기기 (Move Function)|함수 옮기기]]"를 사용해 적절한 모듈로 함수를 옮길 수 있다. 여러가지 일이 하나의 함수에 모여 있..
⌨️ JPA N+1? N+1 문제는 비단 JPA뿐만 아니라 ORM을 사용하는 애플리케이션에서 발생하는 성능 문제 중 하나이다. 이 문제는 일반적으로 관계형 데이터베이스와 객체 간의 매핑에서 발생하며, 추가적인 쿼리가 발생하여 성능을 저하시키는 현상이다. 주로 일대다 또는 다대다 관계에서 발생한다. 예를 들어, 부모 엔티티를 조회할 때 자식 엔티티를 함께 조회하지 않고 각 부모 엔티티마다 추가적인 쿼리를 실행하여 자식 엔티티를 조회하는 경우 발생한다. *다대일에서는 발생하지 않는지? 유명한 강의 그리고 서적에서는 위와 같은 이유로 연관관계의 매핑을 다대일로 하고 N쪽에 연관관계의 주인을 설정하는 것을 권장하고 있다. 또한 다대일 관계는 많은 경우에 객체 간의 관계를 효율적으로 표현하고 관리할 수 있으며, ..
[level 3] 가장 먼 노드 - 49189 1. 문제 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 성능 요약 메모리: 103 MB, 시간: 46.98 ms 구분 코딩테스트 연습 > 그래프 채점결과 정확성: 100.0 합계: 100.0 / 100.0 제출 일자 2024년 03월 13일 17:20:00 문제 설명 n개의 노드가 있는 그래프가 있습니다. 각 노드는 1부터 n까지 번호가 적혀있습니다. 1번 노드에서 가장 멀리 떨어진 노드의 갯수를 구하려고 합니다. 가장 멀리 떨어진 노드란 최단경로로 이동했을 때 간선의 개수가 가장 많은 노드들을 ..
1.1. 네트워크 1.1.1. IP주소 네트워크에 연결된 각 컴퓨터를 구분하는 유일한 주소 [!NOTE] IP 주소 버전 IPv4(Internet Protocol Version 4) IPv6(Internet Protocol Version 6) 1.1.2. 도메인 네임 Domain name : 사용자가 IP를 기억하지 않고 쉽게 기억할 수 있도록 문자열로 변환한 것 1.1.3. DNS DNS(Domain Name System) : 도메인과 IP주소의 매핑 정보를 가지고 있는 시스템 [!Note] 동작방식 사용자가 웹 브라우저의 주소 표시줄에 도메인을 입력 입력받은 도메인에 해당하는 IP 주소를 DNS 서버에 문의 DNS 서버는 도메인에 해당하는 IP 주소를 반환 웹 브라우저는 IP 주소를 받아 해당 IP ..
· PROJECT/KOSA
⌨️ Docker 도커에 대해 공부하고 이전에 팀원이 배포한 환경에서 몇 가지를 고려하여 변경하여 적용하였다. 그러면서 있었던 문제들에 대해 기록해두고자 한다. 1. Docker-compose 우선 첫 번째는 Docker-compose 파일이다. 1.1. Docker Life Cycle 관리 우리 서비스는 그래도 Spring Cloud Gateway와 Feign Client를 사용한 MSA 아키텍처로 설계했다. 우선 기술적 난도와 활용도에 대해서는 차치하고 위 방식에서 Docker-compose로 실행을 하려니 이런 문제점이 발생했다. Eureka 서버가 가장 먼저 켜져야한다. Config와 Gateway는 크게 개의치 않으나 Eureka 다음에 켜지는 것이 좋다. MySQL과 Redis 서버는 API와..
· INFRA/Docker
1. Docker 1.1. Docker란 무엇인가? 데이터 또는 프로그램을 격리시키는 기능을 제공하는 소프트웨어 주로 서버에서 사용된다. 클라이언트에서도 사용할 수는 있지만 현재는 서버에서 사용이 주 용도이다. Docker는 여러 가지 프로그램이 함께 동작되는 환경에서 각각의 프로그램을 격리하는 기능을 제공한다. 컨테이너와 도커 엔진 격리된 프로그램을 담고 있는 하나의 단위를 컨테이너라 한다. 그리고 이것을 다루는 소프트웨어가 도커이다. 도커를 사용하려면 도커 소프트웨어의 본체인 엔진을 설치해야 한다. 컨테이너를 만들려면 이미지가 필요하다. 컨테이너에 독립된 프로그램이나 데이터를 넣어주는데 이를 이미지라 하고 컨테이너를 만들려면 이미지가 필요하다. 도커는 리눅스 컴퓨터에서 사용된다. 윈도우나 macOS에..
2023.12.06 - [PROJECT/KOSA] - [PROJECT] TIARY [PROJECT] TIARY 프로젝트 개요 프로젝트 개발 기간 : 12.04~12.29 프로젝트 인원 : 5인 개발 배경 : 텍스트 형 유튜브 같은 플랫폼 구축을 해보고 싶었습니다. 브런치스토리, 네이버의 유료 간행물등 정식으로 등록 romanc3.tistory.com 위 프로젝트에 대한 기능 추가 및 개선 작업을 진행하려합니다. 크게는 3가지 정도만 한 달여의 기간 동안 진행합니다. 1. 미숙한 부분에 대해 리팩토링 및 추가 공부 1.1. 기능 구현을 우선하느라 떨어진 코드 퀄리티 개선 1.2. 배포와 자동화에 대한 이해 1.2.1 로컬환경에서의 Docker 수동 배포 1.2.2 로컬환경에서의 Docker 자동 배포 1...
ckaanf
'분류 전체보기' 카테고리의 글 목록 (3 Page)