공부 15

[독서록 / 클린코드] 1장 ~ 3장을 읽고

이전에 작성한 프로젝트 코드를 확인하니 직접 작성한 코드임에도 알아보기가 힘들었습니다. 그렇기에 그 유명한 클린 코드를 읽으며 유지보수 능력을 향상시키고자 합니다. 1장 - 깨끗한 코드 보이스카우트의 규칙 캠프장은 처음 왔을 때보다 더 깨끗이 해놓고 떠나라. 깨끗한 코드란? → 기대되는 기능을 수행하며 저자 외에도 보고 이해 및 수정하기 좋은 코드 한 번의 많은 양일 필요도 없다. ‌ 2장 - 의미 있는 이름 의도가 나타나도록 이름을 작성하여야 한다. 그릇된 정보를 나타내는 이름은 피해야 한다. 의미 있게 구분해야 한다. 유사한 이름을 여럿 두어 혼동이 되면 안된다. 검색이 쉬운 이름이어야 한다. 긴 범위일수록 긴 이름이여야 한다. 클래스 이름은 명사나 명사구로 함수 이름은 동사식으로 한 개념에 한 단어..

공부/독서록 2024.01.31

[디자인패턴] 의존성 주입이란?

[디자인패턴] 의존성 주입이란? 이번 게시글에서는 의존성 주입 (Dependency Injection)이란 무엇인지 예시를 통해 설명할 겁니다. 예시가 옳지 않거나 제가 틀린 부분이 있을 시 피드백 주시면 빠르게 반영하도록 하겠습니다. 의존성 주입(Dependency Injection)이란? 의존성 주입(Dependency Injection)이란 컴포넌트 간 의존성을 낮추기 위해 인스턴스 생성을 클래스 외부로 위임하는 디자인 패턴 중 하나입니다. 자바나 코틀린 등 객체 지향 프로그래밍 언어에서 클래스 간 의존성이 존재한다는 건, 한 클래스의 변화로 인해 다른 클래스에 영향을 주는 것을 의미합니다. 의존성 주입을 사용하여 프로젝트를 구성한다면 보일러 플레이트를 줄일 수 있고, 추가로 유지보수에 여러 이점이..

[BFS / 알고리즘] BFS에서 방문처리가 의미하는 것

BFS 방문 처리 BFS의 방문 처리는 방문을 한 곳을 체크하는 것이 아니라 방문할 예정인 곳을 체크하는 방식이다. BFS를 풀 때 Queue를 보통 사용하게 되는데, 방문 체크를 Queue에서 데이터를 뽑을 때 방문 체크를 하는 것이 아닌, Queue에 집어넣을 때 방문체크를 하게 된다. 방문 한 곳을 체크한 경우, 방문 하진 않았지만 방문할 예정인 곳을 다른 곳에서도 접근 가능할 때 반복해서 탐색하는 경우가 생길 수 있다. 하지만 방문할 예정일 때 이를 체크한다면 이런 경우를 없앨 수 있다. 따라서 방문 한 곳 을 체크한다는 말은 틀린 말이고 방문 할 곳 을 체크하는 것이 적절한 말이다. 예제

공부/알고리즘 2023.03.09

[알고리즘/브루트포스/JAVA] 백준 1107 - 리모컨

[알고리즘/브루트포스/JAVA] 백준 1107 - 리모컨 문제: 백준 1107 - 리모컨 문제 : https://www.acmicpc.net/problem/1107 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼 www.acmicpc.net 사용언어 : JAVA 시간제한 : 2초 메모리 제한 : 256 MB 문제 설명 초기 채널 번호 : 100 입력 맞추려는 채널 번호 : N (0 ≤ N ≤ 500,000) 망가진 숫자 번호 개수 : M (0 ≤ M ≤ 10) 입력 셋 째 줄 : 고장난 버튼들 M개(띄어쓰기로 구분) +,..

공부/알고리즘 2023.03.06

[Python] 부하테스트 라이브러리 locust

[Python] 부하테스트 라이브러리 locust 이번 게시글에서는 파이썬의 부하테스트 라이브러리인 locust에 대한 간략한 소개와 사용 방법을 소개한다. 부하테스트란? 특수한 상황에서 시스템이 정상적으로 동작하는 지를 확인하기 위해 수행하는 테스트를 의미함. 부하테스트의 목적 - 목표 부하 도달 여부 확인 - 한계 부하 측정 - 부하가 주어지는 중에 기능 정상 수행 여부 체크 테스트 절차 1. 테스트 목적 확인 2. 테스트 대상 결정 3. 테스트 환경 구축 및 수행 사용 라이브러리 : locust 공식 사이트 : https://locust.io/ Locust.io An open source load testing tool. Define user behaviour with Python code, and..

공부/기타 2022.12.30

[Java] ConcurrentModificationException - 탐색 중인 리스트 변경

[Java] ConcurrentModificationException - 탐색 중인 리스트 변경 발생 오류 ConcurrentModificationException 예외 발생 문제 원인 자바에서 탐색 중인 리스트가 변경될 경우 발생하는 오류이다. 탐색 중인 리스트에 요소를 추가하여 발생한 오류이다. iterator에 remove를 사용하여 탐색 중인 리스트 내의 요소를 삭제할 수 있다. 하지만 일반적인 iterator는 추가를 지원하지 않는다. while (!pQ.isEmpty()) { ... //탐색 중인 리스트 for (Iterator iterator = edges[now].iterator(); iterator.hasNext();) { int[] list = iterator.next(); int ke..

[알고리즘/DP/JAVA] 백준 2193 - 이친수

[알고리즘/DP/JAVA] 백준 2193 - 이친수 문제 : 백준 2193 - 이친수 문제 : https://www.acmicpc.net/problem/2193 2193번: 이친수 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않 www.acmicpc.net 사용언어 : JAVA 시간제한 : 2초 메모리 제한 : 128 MB 문제 설명 이진수 숫자 중 아래 성질을 만족하는 수들을 이친수라고 한다. 이친수 조건 이친수는 0으로 시작하지 않는다. 이친수에서는 1이 두 번 연속으로 나타나지 않는다. 즉, 11을 부분 문자열로 갖지 않는다. 숫자 n이 주..

공부/알고리즘 2022.07.24

[디자인패턴/Java] 원형 패턴( Prototype Pattern)

[디자인패턴] 원형 패턴( Prototype Pattern) 의도 : 원형이 되는(Prototype) 인스턴스를 사용하여 생성할 객체 종류를 명시하고 견본을 복사해 새 객체를 생성한다. 본문 원형 패턴은 제품의 생성, 복합 표현 방법에 독립적인 제품을 만들고자 할 때 사용한다. 활용성 제품의 생성, 복합, 포현 방법에 독립적인 제품을 만들고자 할 때 사용한다. 인스턴스화할 클래스를 런타임에 지정하는 경우 제품 클래스 계통과 병렬적으로 만드는 팩토리 클래스를 피하고 싶은 경우 클래스의 인스턴스들이 서로 다른 상태 조합 중 어느 하나인 경우 UML Prototype : 자신을 복제하는 데 필요한 인터페이스를 정의한다. ConcretePrototype : 자신을 복제하는 연산을 구현한다. Client : 원형..

[개발방식] TDD (Test Driven Development)

[개발방식] TDD (Test Driven Development) TDD란 테스트가 개발을 이끌어 가는 개발방식을 의미한다. 테스트를 먼저 만들고 테스트를 통과하기 위한 코드를 작성한다. 이를 통해 결정과 피드백 사이에 간극을 조절할 수 있다. 필요이유 에자일과 같은 빠른 프로덕트 개선이 있는 경우 구조가 달라질 가능성이 있음 빠른 커뮤니케이션 핑퐁, 피드백과 협력이 필요할 시 이를 해결하기 위한 방안이 될 수 있음 사용 적절한 상황 요구사항이 빈번히 변경되는 경우 테크니컬 스펙, 비즈니스 로직이 빈번하게 변경되는 경우 코드 인수인계가 필요한 경우 단점 개발시간 증가 TDD의 어려움 일반적 개발방식과 반대인 순서 (개발 -> 테스트) => (테스트 -> 개발) '프레임워크, 툴을 사용해야한다'는 인식으로..

공부/기타 2022.04.08

[디자인패턴] 팩토리 매서드 (Factory Method Pattern)

팩토리 매서드 패턴 (Factory Method Pattern) 의도 : 객체 생성을 위한 인터페이스를 정의하지만, 어떤 클래스의 인스턴스를 생성할지에 대한 결정은 서브클래스가 내리도록 한다. 팩토리 메서드는 객체를 생성하고 반환하는 메서드이다. 하위 클래스에서 이를 오버라이딩하여 사용한다. 활용 어떤 클래스가 자신이 생성해야 하는 객체의 클래스를 예측 할 수 없을 경우 생성할 객체를 기술하는 책임을 자신의 서브클래스가 지정했으면 할 경우 객체 생성의 책임을 몇 개의 보조 서브클래스 가운데 하나에게 위임하고 어떤 서브클래가 가운데 하나에게 위임하고, 어떤 서브클래스가 위임자인지에 대한 정보를 국소화시키고 싶을 경우 구조 Product : 팩토리 매서드가 생성하는 객체의 인터페이스 정의 ConcretePr..

반응형