본문 바로가기
반응형

Programming21

Circular Dependency(순환 의존성)과 해결법 Circular Dependency 이슈Circular Dependency(순환 의존성)란 두 개 이상의 모듈, 클래스, 또는 컴포넌트가 서로를 참조하여 의존 관계가 순환하는 상태를 말한다. (ex. 모듈 A가 모듈 B를 참조하고, 모듈 B가 다시 모듈 A를 참조하는 경우)주로 DI(의존성 주입) 구현을 위해 생성자를 주입하다가 설계 오류로 발생할 수 있다.    이러한 순환 의존성은 다음과 같은 문제를 야기할 수 있으므로 소프트웨어 아키텍처 설계에 있어 주의가 필요하다. 코드 유지보수 어려움: 의존 관계가 복잡해지면, 변경 사항이 다른 모듈에 미치는 영향을 추적하기 힘들다. A 클래스를 변경하는 경우 참조하는 클래스를 모두 변경한 뒤 다시 돌아와 A클래스에 다시 영향을 미칠 수 있다.테스트 어려움: 단.. 2024. 11. 12.
DI(의존성 주입)이란? / reflection(리플렉션) 개념 Dependency Inject (DI/의존성 주입)의존성 주입이란 객체 간의 의존성을 관리하는 디자인 패턴으로, 객체의 생성과 사용의 관심을 분리하는 것이 주된 목적이다.객체가 필요로 하는 의존성을 외부에서 주입하여 생성하게 되며코드의 재사용성이 향상 되고, 테스트 용이성은 높이며, 코드의 유지 관리가 용이해진다. 코드 재사용성 향상: 컴포넌트 간의 결합도가 낮아지면, 각 컴포넌트를 독립적으로 재사용 할 수 있다.테스트 용이성: 테스트 시에 실제 객체 대신 모의 객체를 주입할 수 있어, 테스트를 보다 쉽게 수행 할 수 있다.코드 유지 관리 용이성: 의존성이 명확하게 분리되어 있으면, 코드를 이해하고 수정하기 쉬워진다. 예를 들어 객체 A가 객체 B에 의존하고 있을 때, 객체 B를 A의 생성자 또는 메서.. 2024. 11. 12.
mac os 에서 telnet 설치하기 telnet은 원격 접속에 사용되는 명령어로, 다시 말해 인터넷을 통하여 원격지의 호스트 컴퓨터에 접속할 때에 지원되는 인터넷 표준 프로토콜이다.  telnet vs sshtelnet: 데이터를 암호화하지 않으므로 특정 Host Ip의 특정 Port로 접근 가능한지 여부를 파악하기 위해 사용ssh: 데이터를 암호화 하여 통신하므로 보안이 필요한 원격 접속에 주로 사용  Telnet 설치 1. homebrew 설치 (이미 설치되어 있다면 스킵)/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"https://brew.sh/ko/ HomebrewThe Missing Package Manage.. 2024. 8. 27.
[Git] 원격 저장소 URL 주소 변경 git 원격 저장소 url 주소 변경 방법 $ git remote set-url origin  사용법: git remote set-url [--push]   []  또는: git remote set-url --add    또는: git remote set-url --delete      --[no-]push           푸시 URL을 지정합니다    --[no-]add            URL을 추가합니다    --[no-]delete         URL을 삭제합니다 예시) 변경 여부는 아래와 같이 확인 가능하다$ git remote -v  예시)변경 전 (10.82.66.144:1980) 변경 후 (10.82.66.144:1980)   만약 url 변경 후 username 을 입력하라고 뜨는 .. 2024. 7. 9.
[git] github에 docs html 문서 올리기/page로 공유 1. git 폴더에 docs 폴더 생성 2. docs 문서 안에 올리고자 하는 파일 복사/붙여넣기 (여기서는 kDoc 문서를 업로드할 예정이므로 build/dokka/html 폴더 내부의 전체 문서) 3. 폴더 git push 4. push 내역 확인 5. 레포지토리의 Setting - Pages 선택 6. Branch의 /None/root 를 master(푸쉬한 브랜치)/docs로 변경 후 save 7. 저장 완료 8. 한 번에 page가 보이지 않는 경우 리프레시 하면 링크가 생성된 것을 확인 할 수 있다 예시 페이지) https://nyangzzi.github.io/scrolling-animation-compose/ core nyangzzi.github.io 2024. 3. 6.
git/github 커밋 내역 포함해서 레포지토리 옮기기 기존 레포지토리 위치 변경이 필요하여 새 레포지토리로 옮기려고 하는데 커밋 내역을 포함해서 이동하고 싶을 경우 다음과 같이 할 수 있다 #다운 받을 로컬 파일 지정 안해주는 경우 git clone --mirror [기존 레포지토리 깃 주소] cd [기존 레포지토리 명].git git remote set-url --push origin [신규 레포지토리 깃주소] git push --mirror #다운 받을 로컬 폴더 지정하는 경우 git clone --mirror [기존 레포지토리 깃 주소] [다운 받을 로컬 폴더 경로] cd [다운 받을 로컬 폴더 경로] git remote set-url --push origin [신규 레포지토리 깃 주소] git push --mirror 기존 레포지토리 깃 주소 htt.. 2024. 2. 17.
[Architecture] MVC, MVP, MVVM Pattern 아키텍처 패턴 (Architecture Pattern) 아키텍처 패턴은 공통적으로 자주 발생하는 문제를 재사용 가능하도록 패턴화한 것이다. 4대 아키텍처 현대에는 4개의 주요 아키텍처를 사용한다. MVC (Model-View-Controller) MVP (Model-View-Presenter) MVVM (Model-View-ViewModel) MVI (Model-View-Intent) MVC 패턴 MVC 패턴은 모델(Model), 뷰(View), 컨트롤러(Controller)로 이루어진 디자인패턴이다. 뷰(view) 사용자 인터페이스 - UI 구성 모델(Model) 애플리케이션의 데이터 - data 저장 - 비즈니스 로직의 집합 (data 처리) 컨트롤러(Controller) view-model 사이의 .. 2024. 1. 13.
[HTTP] GET과 POST 차이 GET과 POST 모두 클라이언트에서 서버에 요청을 전송하는 HTTP 메소드이다. 그 중에서도 GET은 데이터를 읽기 위해, POST는 데이터를 생성하기 위해 사용된다. GET 방식 GET은 요청을 전송할 때 필요한 데이터를 Body에 담지 않고 쿼리스트링을 통해 전송한다. * 쿼리 스트링(QueryString) url의 끝에 ?와 함께 이름과 값으로 쌍을 이루는 요청 파라미터 요청 파라미터가 여러개면 &로 연결한다. www.example-url.com/resources?name1=value1&name2=value2 base url www.example-url.com 특정 페이지 /resources 쿼리 시작 ? 요청 파라미터명 name1 = 파라미터 value1 연결 & 요청 파라미터명 name2 = .. 2024. 1. 13.
.gitignore 작동 안될 때 해결방법 .gitignore 파일에 추적 금지할 파일을 설정했는데 적용되지 않을 때가 있다. git 캐시를 삭제한 뒤 커밋해주면 문제가 해결된다. git rm -r --cached . git add . git commit -m "fixed untracked files" git push 주의) 깃 캐시를 지울 경우 현재까지 수정한 내역이 모두 삭제되거나 푸쉬될 수 있으므로, 저장이 필요한 수정 내역을 먼저 commit 한 뒤 불필요한 내용은 rollback하고 실행한다. 참고 .gitignore is ignored by Git My .gitignore file seems to be being ignored by Git - could the .gitignore file be corrupt? Which file for.. 2024. 1. 13.
반응형