
개요레코드를 INSERT할 때 특정 칼럼을 기존값 + 1로 해야하는 케이스가 생겼다.selectKey라는 값을 설정해서 하는 방법이 MyBatis 문서에 있고 @Options 방법도 있지만 그것보다 간단한 방법이 있어서 소개한다. 확인한 조건DB: PostgreSQL 14.11MyBatis: 3.5.13 INSERT문 UPDATE문의 RETURNING에 관해보통 UPDATE문을 실행하면 처리가 된 건수를 알려준다.그런데 끝에 RETURNING을 추가하면 처리 건수가 아닌 원하는 값을 반환해준다.(INSERT도 마찬가지)@Insert가 아닌 @Select를 이용하자INSERT동작이지만 위와 같이 결과값은 SELECT의 결과값과 같은 형식이기 때문에 @Select를 이용하면 원하는 클래스로 매핑까지 해준다...

결론ZXing으로 QR코드가 인식이 잘 안될 때 opencv라는 선택지도 있다.opencv는 라이브러리 설정이 필요하다. 개요ZXing을 이용해 이미지 파일에서 QR코드를 인식하고 있었지만, 가끔 제대로 인식이 되지 않음아마도 이미지 파일이 스캔한 결과물이라 인쇄가 잘못되었던가, 스캔할 때 의 하얀 먼지일 걸로 예상 문제가 된 이미지왼쪽 위의 검은 사각형 안에 흰 부분이 있다. 대응안기존 ZXing에 TRY_HARDER옵션이 있는데 그 옵션을 활성화: 실패위의 이미지에 대한 결과가 없음QR인식 전의 이미지 방식을 변경: 실패ZXing이용시 byte[] → BufferedImage → BufferedImageLuminanceSource → HybridBinarizer →BinaryBitmap순으로 데이터..
개요com.amazonaws 라이브러리 이용시 제대로 설정이 되어 있지 않으면 클라이언트 인스턴스 생성시 에러가 발생한다.region과 credential 설정방식에 대해 이해하고 제대로 활용하기 위해서 정리함. 전제조건해당 클라이언트는 com.amazonaws이다.AWS클라이언트는 com.amazonaws만 있는 것은 아니다.다른 클라이언트에서는 키값이 다른 경우가 있다. provider에 대해region과 credential 정보는 provider에 의해 얻는다.region provider는 클라이언트 인스턴스 생성시 동작한다credential provider는 클라이언트 동작시(예: S3의 put, get) 동작한다.provider는 chain으로 이루어져있다.chain이므로 첫번째 provider..

개요디렉토리 단위로 S3에 업로드를 할 때 TransferManager를 사용한다.간혹 디렉토리의 업로드시 누락되는 파일이 존재하였다.쓰기 작업중인 파일이 문제일 것이라고 생각하고 쓰기 작업중일 때 어떻게 에러가 발생하는지 재현하였다. 주의점(미리 결론)디렉토리 작업시에는 디렉토리의 작업이 완료된 것을 확인한다.재현작업에서 10개의 파일이 업로드 되기를 기대하였지만, 7개의 파일만 업로드를 시도하였다.쓰기 작업중인 파일은 업로드에 실패한다.정확히 어떤 이유로 실패인지는 검증하지 않았다.타임아웃을 꼭 넣어라.작업 완료인지는 MultipleFileUpload.Progress.PercentTransferred의 값으로 판단하게 되는데 이 값만 있다면 무한 루프에 빠질 가능성이 있다.각 파일에 대한 progre..
개요특정 폴더에 파일(디렉토리)이 복사되면 그 파일을 핸들링 하는 처리가 필요하다.특정 폴더는 네트워크상에 있는 공용 폴더이다.파일의 감시는 Spring Integration을 이용하면 간단하게 해당 생성 파일의 java.io.File인스턴스를 얻을 수 있다. 문제점파일을 핸들링할 때 파일(특히 디렉토리)이 완료되지 않은 상태일 가능성이 있다는 것을 알게 되었다. Spring integration코드 예제빈 설정@Configurationpublic class BeanConfig { @Bean public IntegrationFlow integrationFlow(){ return IntegrationFlow.from(Files.inboundAdapter(new File("c:/inb..
개요 디렉토리에 파일이 생성되는 경우에 감시하는 라이브러리로써 spring-integration을 사용하고 있다. 설정 방법은 간단한데 IntegrationFlow를 반환하는 빈을 설정하면 된다. 복수개의 디렉토리를 감시하는 경우 아래와 같이 복수개로 설정하면 된다. @Bean public IntegrationFlow integrationFlow1() { return IntegrationFlow .from(Files.inboundAdapter(new File("c:/inbound1")) , e -> e.poller(Pollers.fixedDelay(1000).maxMessagesPerPoll(10))) .handle(message -> System.out.println(message.getPayload(..
결론 간단하게 information_schame.columns를 찾아보자. 개요 Sequence를 재설정하는 경우 SETVAL을 통해 가능하나 테이블명, Sequence 를 쓰는 컬럼명, Sequence 명이 필요 DB전체의 테이블명, Sequence 를 쓰는 컬럼명, Sequence 명을 취득하는 SQL문을 작성해보기로 함. PostgreSQL의 스키마 구조에 대해 우리가 만드는 테이블은 보통 'public'스키마에 담기고, 내부에서 처리를 위한 테이블은 'information_schema', 'pg_catalog'등에 담긴다. 내부 처리용 스키마에는 테이블도 있고 뷰도 있는데, 뷰는 사용자가 원하는 정보를 쉽게 얻기 위해 만들어놓은 것이다. 예) pg_stat_activity: 현재 활성화된 DB상태..
결론 TRUNCATE 명령 실행시 여러번 실행보다는 한번에 여러 테이블을 지정해는 것이 더 빠르다. 개요 테스트 코드 작성 중에 테스트 케이스 하나당 20초 이상 걸리는 것을 발견하였다. 케이스 실행 전에 테스트 데이터 재설정 TRUNCATE TABLE에서 평균 18.4초 걸리기 때문이였다. 테스트 데이터는 12개의 테이블로 이루어져 있는데 FK설정이 많아서 전체적으로 TRUNCATE에 CASCADE 옵션을 적용했다. 의외로 데이터를 INSERT하는 작업은 1.3초 정도였다. 테이블 비우는 작업을 개선하는 내용을 다뤄본다. 현재 상황 테스트 데이터 설정을 위해서는 DBUnit을 이용하였다. 처음에는 CLEAN_INSERT오퍼레이션을 이용하였는데 이것은 TRUNCATE가 아닌 DELETE로 내용을 지우기 ..

개요 보통 로그는 그냥 남기기만 하고 테스트는 많이 하지 않는다. 하지만 로그의 레벨이나 내용에 따라 뭔가를 처리해야하면 로그도 테스트해야한다. 파일로 출력하는 로그는 파일 읽어들여서 테스트하면되지만, 콘솔에 출력하는 로그라면 어떻게 그 내용을 가져올 지 감이 안 올 수도 있겠다. 검색하면서 찾아낸 방법과 실제로 사용했던 방법에 대해 소개한다. 로그Appender를 지정하는 방법 평소에 많은 도움을 받고 있는 Baeldung에서 소개하는 방법이다. 로그를 콘솔이 아닌 메모리 어펜더로 남기는 방법이다. 이 내용은 보기만 하고 실제로는 실험도 해보지 않았다. 이유는 파일 어펜더랑 뭐가 다르지? 파일 어펜더가 로그도 남겨놓기 편하고 더 좋은데?였다. 링크: https://www.baeldung.com/juni..

개요 Maven플러그인으로 YAML스키마 파일을 Java코드를 생성하는 부분이 있다. Maven플러그인은 실행환경에 따라서 윈도우는 CRLF로 맥에서는 LF로 개행되는 자바코드를 만든다. 프로젝트에 참여하는 인원은 윈도우도 쓰고 맥도 쓰고있다. GIT을 쓰는데 개행문자는 LF로 통일하였다. 하지만 Java코드를 생성할 때는 윈도우에서는 CRLF로 만들어져 버리고 자동생성 코드라 그런지 아무 생각없이 커밋하는 경우가 많다. CRLF로 만들어진 코드를 LF로 바꾸고, 이번에 변경된 파일이 아니면 커밋을 안하면 되는 일이지만, 잘 지켜지지 않고 귀찮다. 가장 좋은 방법은 코드를 생성할 때 무조건 LF로 만들어지는 것. 결론부터 말하고 어떻게 해결방법을 찾았는지 다시 설명하겠다. 결론 Maven프로젝트의 .mv..
- Total
- Today
- Yesterday
- Postgresql #MultiTruncate
- aws #aws region #aws credential #aws region provider #aws credential provier
- Maven LF #메이븐 개행문자
- 로그파일인덱스
- palindrome number
- Python #Powertools
- multipleIntegrationFlow
- 로그테스트 #콘솔로그테스트 #System.out
- PostgreSQL #FOR UPDATE #SKIP LOCKED
- springintegration #파일감시 #디렉토리감시 #파일완료검사
- PostgreSQL #sequnceName
- mybatis @insert값 @update값
- yaml
- lombok #maven build #sym
- QR코드읽기 #ReadQRCode
- reverse integer
- leetcode
- Two Sum
- excel table
- spring-integration
- spring #redis #redis-cluster
- AWS #X-Ray
- add two numbers
- opencv로qr코드인식
- excel to markdown
- json
- cannotResolveSymbol
- SnakeYAML
- logback #logstash #LoggingEventCompositeJsonEncoder #로그JSON
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |