반응형

전체 글 63

디자인 패턴 완벽정리 - 생성 패턴 | 구조 패턴 | 행위 패턴 | 알아보기 예제 코드포함

디자인 패턴은 개발을 진행하면서 많이 사용할 수 밖에없는 소프트웨어 아키텍쳐 설계도와 같습니다.특정상황에는 이런 패턴을 사용하자 이런 느낌으로 기억해두었다가 해당 상황이 나오면 사용하는데 그러기 위해선 디자인 패턴의 구분과 종류 또 어떤 상황에서 사용을 해야하는지 명확하게 알아야 합니다.디자인 패턴의 종류 표 분류패턴목적생성Singleton인스턴스 1개만 생성. 객체 생성을 특정 클래스에 위임Factory Method객체 생성을 서브 클래스에 위임Abstract Factory관련 객체 집합 생성Builder복잡한 객체 생성 단계 분리Prototype객체 복제를 통한 생성구조Adapter호환되지 않는 인터페이스 연결Bridge추상화와 구현 분리Composite부분-전체 계층 표현Decorator동적으..

cs 10:05:17

구글 서치콘솔 리디렉션 오류 해결 법 티스토리 블로그 구글 검색 안될 때 조치 + 실제 url 테스트 이상 없음 색인 요청

요즘 다시 블로그를 나름 열심히 작성중입니다. 오랜만에 작성하다보니 까먹은 세팅들이 많아서 해메고 있는 중에 작성을 한글이 몇일이 지나도 구글 검색에 나오지 않는 경우를 발견했습니다.그래서 바로 검색해서 원인을 찾아보니 색인이 생성이 안되어서 그러는 경우가 많다해서 이것저것 뒤져보던 중 색인요청을 하면 된다라는 글을 봐서아래와같이 1차적인 조치를 했습니다.1. 구글 서치콘솔 접속 후 URL 검사 클릭우선 서치콘솔에 먼저 접속을 해서 url 검사에 들어갑니다. 2. 상단의 url 검사에 등록하기url 검사를 누르면 상단에 위처럼 이전에 입력했던 링크가 아래에 뜨고 새롭게 등록할 링크를 입력해줍니다. 3. 색인요청 버튼 클릭그리고 색인 생성 요청을 눌러줍니다. 이렇게되면 아래와 같이 정상적으로 떠야합니다.U..

기타 2025.10.31

테스트 커버리지 종류완벽 정리 - 구문 커버리지, 분기 커버리지 , 조건/분기 커버리지, 경로커버리지, 다중조건 커버리지

테스팅을 할때도 테스트의 범위를 지정해야하는데 이때 어디서부터 어디까지 또 어떻게 테스트를 할것인지에 대한 구분을 지은 종류가 있습니다.오늘은 해당 종류를 예시와 같이 알아보겠습니다.테스트 커버리지의 종류1.구문 커버리지 (Statement Coverage)설명:프로그램의 모든 실행 가능한 문장(라인)이 최소 한 번 이상 실행되었는지를 측정하는 가장 기본적인 커버리지 기준입니다.목표:코드의 모든 문장이 실제로 실행되었는지를 확인합니다.즉 간략하게 말해서 프로그램의 모든 라인을 전부 실행하는것이 해당 커버리지라고 할수 있습니다.모든라인 실행코드 예시export function add(a: number, b: number) { // 구문(Statement) 커버리지: 이 한 줄이 실행되면 카운트 ..

cs 2025.10.30

페이지 교체 알고리즘 알아보기 FIFO OPT LRU LFU NUR 예제

페이지 교체 알고리즘은 메모리에서 페이지 폴트가 발생할때 메모리가 전부 차있을경우 어떤 페이지를 제거하고 새로운 페이지를 집어넣을지 결정하는 알고리즘입니다.FIFO (First-In-Fisrt-Out)FIFO 알고리즘은 메모리에 가장 먼저 들어온 페이지를 먼저 교체하는 알고리즘입니다.큐(QUEUE)의 자료구조를 사용하며 구현이 간단하고 이해하기 쉽습니다.다만 자주 사용하는 페이지도 오래되었다는 이유로 교체되어 성능이 떨어질 수 있습니다.프레임 수: 3페이지 참조열: 7, 0, 1, 2, 0, 3, 0, 4, 2, 3순서참조 페이지프레임 상태 (최신이 오른쪽)페이지 폴트 발생 여부177✅207, 0✅317, 0, 1✅420, 1, 2✅ (7 교체)500, 1, 2 631, 2, 3✅ (0 교체)702, 3..

cs 2025.10.29

MY SQL 성능 최적화(1)- EXPLAIN TYPE 분석하기 EXPLAIN TYPE종류 알아보기

MY SQL의 쿼리 성능을 최적화 하려면 매우 많은 부분을 생각해야합니다. 단순히 인덱싱만 한다고 해서 해결되는게 아닐경우도 있는데요. 그런 최적화를 위해서 기본적으로 SELECT 문의 성능을 확인하는 EXPLAIN을 사용해야합니다.우선은 EXPAIN의 기초는 나중에하고 일단 EXPLAIN을 하게되면 나오는 스키마 중에 성능, 속도를 가장 밀접하게 알려주는 TYPE의 종류에 대해 알아보겠습니다.물론 TPYE 뿐만아니라 다른 컬럼과 무조건 종합적으로 분석해야 합니다.다른 컬럼들에 대한 설명은 추후에하고 우선은 TYPE 먼저 분석하겠습니다.우선 TYPE은 MYSQL데이터 베이스가 해당 테이블의 레코드에 어떤 방식으로 접근 하였는가? 이것을 나타내는 컬럼입니다. 즉 해당 데이터를 어떠한 방식으로 검색했는지 조..

DB/mysql 2025.10.28

Docker 컨테이너 종료 시 Nest.js가 바로 꺼지는 이유 enableShutdownHooks / SIGTERM

도커 컨테이너 안에 nest.js 어플리케이션이 동작하고 있을때 컨테이너를 멈추게되면 nest.js의 안의 프로세스는 모든 작업이 끝마쳐지지 않고 종료되는 경우가 발생합니다.오늘은 이와 관련한 설정에 대해 알아보겠습니다.우선, Dokcer 컨테이너 종료시에 기본적으로 10s 의 프로세스가 멈출 대기시간이 주어집니다. 이 시간안에 프로세스가 끝나거나 하면 문제가 되지않겠지만 마냥 그렇게 일이 수월하게 풀리진 않습니다.stop_grace_period 해당시간보다 더 많은 시간이 필요할경우에는 도커 컴포즈의 stop_grace_period 설정을 기호에 맞게 지정해주면 됩니다.stop_grace_period: 30s해당 설정의 경우에는 공식적으로 최대시간이 딱히 정해져 있지않아서 프로젝트의 설정, 환경에 맞게..

TypeScript/Nest.js 2025.10.27

MY SQL RECORD LOCK PROCESS KILL 레코드 행락 킬하기

최근 작업하다가 MYSQL에서 INNODB RECORD LOCK이 생기는 현상이 있어서 이를 해결 했던 방법을 적으려 합니다한행의 INDEX를 기준으로 LOCK을 걸어서 해당 행에 SELECT , UPDATE, DELETE 를 하지 못하도록 막아놓은 처리가 RECORD LOCK입니다.이때 LOCK 이 걸리게되면 해당 트랜잭션이 처리가 될때까지 다른 세션에서는 해당 레코드에 어떠한 쿼리를 실행해도 대기 상태에 걸리게 되는데요 이를 강제적으로 처리하는게 해당 LOCK을 건 트랜잭션을 찾아서 KILL 해버리는 방법입니다MY SQL 8.0버젼 부터는 performance_schema.data_locks 에 lock에 관한 정보가 조회되어 나옵니다.  SELECT * FROM performance_schem..

DB/mysql 2024.07.17

ASP.NET CORE HTTP health Check

asp.net core에서 health Check는 해당 어플리케이션이 정상적으로 작동하는지 확인하는 기능입니다.위 기능으로는 크게 아래와 같이 활용 가능합니다.애플리케이션의 가용성 모니터링: Health Check는 애플리케이션이 정상적으로 작동하는지 확인하는데 사용됩니다. 이를 통해 시스템이 언제든지 사용할 수 있는지 여부를 판단할 수 있습니다.종속 서비스 상태 확인: 데이터베이스, 캐시, 외부 API 등 애플리케이션이 의존하고 있는 서비스들의 상태를 확인할 수 있습니다. 만약 종속 서비스 중 하나가 비정상 상태라면, 이를 즉시 감지하고 조치를 취할 수 있습니다.컨테이너 오케스트레이션 도구 통합: Kubernetes와 같은 컨테이너 오케스트레이션 도구에서는 애플리케이션의 상태를 확인하기 위해 Heal..

c#/ASP.NET CORE 2024.05.20

MY SQL 데이터베이스에서 특정 컬럼명 포함된 테이블 찾는 방법

MY SQL에서 특정 컬럼명을 포함한 모든 테이블을 조회 하고 싶을 때가 있는데 그럴땐 아래와 같은 쿼리를 작성하면 됩니다. SELECT TABLE_SCHEMA , TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = 'username' AND TABLE_SCHEMA = 'your_database_name'; 위처럼 INFORMATION_SCHEMA.COLUMNS 뷰는 데이터 베이스의 테이블의 컬럼정보를 제공하며 test라는 컬럼을 column_name에 조건으로 걸어주게된다면 아래와 같이 test라는 컬럼명을 포함한 테이블 명칭이 조회되어 나오게 됩니다. 뿐만아니라 INFORMATION_SCHEMA.COLUMNS 뷰의 컬럼의 내용은 아래와 같습..

DB/mysql 2024.04.14

ASP.NET CORE 전역 에러 처리 Global Error Exception

asp.net core에서는 미들웨어를 통해서 에러를 전역에서 관리할 수 있습니다. 그냥 일반적인 try catch문을 사용해도 무방하지만 이러한 방법을 쓰면 에러를 중앙에서 관리하기 때문에 더 에러 처리에 대한 프로세스 관리를 쉽게 할 수 있습니다. 구성 방법은 아래와 같습니다. public class NotFoundException : ApplicationException { public NotFoundException(string name, object key) : base($"{name}({key}) was not found") { } } 위처럼 오류가 날만한 부분에 생성할 Exception 클래스를 하나 생성하고 ApplicationException 클래스를 상속받습니다. public class..

c#/ASP.NET CORE 2024.03.09
반응형