본문 바로가기

개발

(57)
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..
ASP.NET CORE HTTP health Check asp.net core에서 health Check는 해당 어플리케이션이 정상적으로 작동하는지 확인하는 기능입니다.위 기능으로는 크게 아래와 같이 활용 가능합니다.애플리케이션의 가용성 모니터링: Health Check는 애플리케이션이 정상적으로 작동하는지 확인하는데 사용됩니다. 이를 통해 시스템이 언제든지 사용할 수 있는지 여부를 판단할 수 있습니다.종속 서비스 상태 확인: 데이터베이스, 캐시, 외부 API 등 애플리케이션이 의존하고 있는 서비스들의 상태를 확인할 수 있습니다. 만약 종속 서비스 중 하나가 비정상 상태라면, 이를 즉시 감지하고 조치를 취할 수 있습니다.컨테이너 오케스트레이션 도구 통합: Kubernetes와 같은 컨테이너 오케스트레이션 도구에서는 애플리케이션의 상태를 확인하기 위해 Heal..
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 뷰의 컬럼의 내용은 아래와 같습..
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..
ASP.NET CORE AutoMapper 사용법 ASP.NET CORE를 사용하다 보면 객체 매핑을 하는 코드를 계속 작성해야 하는 번거로움이 있습니다. 이럴때 AutoMapper라는 확장을 설치하여서 객체 매핑의 번거로움을 줄입니다. 위의 AutoMapper.Extensions.Microsoft.DependencyInjection 패키지를 설치하면 AutoMapper의 기능들을 사용 할 수 있게됩니다. AutoMapper는 기본적으로 Profile클래스를 상속받아서 해당 상속받은 클래스에서 매핑을 할 model객체와 dto를 CreateMap 이라는 메서드를 통하여 컨테이너에 등록 할 수 있습니다. public abstract class BaseCountryDto { [Required] public string Name { get; set; } pu..
C# webview2 확장 사용하는 법 웹뷰 확장 설치(feat.웹뷰 adblock설치하기) 평소에 브라우저를 사용하다보면 확장을 설치하여 사용하는 경우가 많습니다. 이를 C# webview에도 똑같이 적용이 가능합니다. 바로 webview2 에 있는 AddBrowserExtensionAsync() 메서드를 활용하면 됩니다. 위 메서드는 비교적 최근에 추가 된듯하여 해당 메서드에 대한 정보가 많이는 없습니다. 사용방법은 webview2객체에 있는 위 메서드에다가 edge에서 사용하는 확장에 대한 경로 경로를 string 값으로 넣어주면 되는데 이때 제일 중요한게 하나 있습니다. 바로 해당 경로에 mainfest.json 파일이 있어야합니다. 저 같은 경우는 로컬환경에 아래와 같이 엣지에 설치된 확장의 경로에 해당 manifest.json 파일이 있습니다. 이렇게 경로를 찾은 다음 아래 코드를 실..
C# fatal error encountered attempting to read the resultset 오류 처리 C# 클라이언트 프로그램으로 대량의 데이터를 Insert 시키는 과정에서 'fatal error encountered attempting to read the resultset' 라는 문구를 띄우면서 에러가 발생하였다. 해당 문구를 검색해보니 my sql에 connection을 하고 어떠한 이유에서든지 connection이 끊기게 되면 해당 에러문구를 발생시키는 듯 합니다. 다른 사람들의 케이스로는 1.my sql 버젼 문제 2.max connection pool 문제 3.time out 문제 이렇게 있는듯 합니다. 저의 경우에는 db tool 에서는 해당 쿼리가 제대로 실행되는데 c#프로그램에서 돌리면 에러가 발생하므로 c#코드에서 mysql을 connection하는 문제라는 것이 유추 되었습니다. 처..
C#에서 python 스크립트 실행하기 c# 코드에서 파이썬 크롤링 스크립트나 기타 파이썬 라이브러리 스크립트를 실행이 필요할 때 ProcessStart를 사용하여 실행하는 방법입니다. 1.파이썬 스크립트 생성 스크립트를 실행하면 스크립트실행이라는 문구가 출력되는 파이썬 스크립트를 아래와 같이 작성합니다. 2.C# 코드에서 Porcess 클래스를 통한 실행로직 작성 c#에서 파이썬 스크립트를 실행하기 위한 코드를 작성 해줍니다. private string _pythonPath = "D:\\Source\\Test\\myenv\\Scripts\\python.exe"; public string ProcessStart(string scriptPath ,string arguments) { using (Process process = new Proces..
MySQL 기본 인코딩 UTF-8설정하기 mysql을 사용할때 인코딩이 utf-8로 설정이 안되어 있어서 한글이 깨지는 현상이 있을 때 매번 alter 구문이나 create 구문으로 인코딩을 직접 지정하려니 힘들어서 기본 인코딩 설정법을 알아보겠습니다. 환경은 window 로컬환경이며 my Sql versison 은 8.0.35 입니다. 버젼 확인법은 아래쿼리를 실행시켜서 나오는 vestion 값 입니다. my sql 버젼 확인 쿼리 : SHOW VARIABLES LIKE '%verstion' 1. show variables LIKE '%dir%' 쿼리를 통해서 폴더 경로 파악 위 쿼리를 통해서 폴더의 경로를 파악하고 my.ini파일을 찾는다 2.cmd를 관리자 권한으로 실행한 뒤 아래 명령어 실행 notepad C:\Program Files\..
C# Parameter is not valid 에러 비트맵 Graphics 에러 c# bitmap class를 사용하다가 Parameter is not valid 라는 에러가 발생 하였습니다. 처음에는 단순한 메모리 문제인줄 알았으나 특정 이미지만 문제가 발생하여 알아보던 중 답을 발견 하였습니다. 이미지 파일에는 2가지 색상형식이 존재합니다. 바로 위처럼 3원색인 RGB와 청록 자홍 노란색을 혼합하여 만들어내는 CMYK 입니다. 제가 개발하는 환경에서 아무런 문제없이 Bitmap객체가 생성되는 이미지는 전부 RGB였고 문제가 있던 이미지의 형식은 CMYK였습니다. 그래서 c# bitmap 클래스에서는 RGB형식의 이미지만 생성이 가능한것인지 알아보려 했지만 제대로 된 답을 찾기는 어려워서 우선은 cmyk이미지이면 PixelFormat이 8207로 떨어지는 것을 확인하여 Pixcel..