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

개요디렉토리 단위로 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..
결론 간단하게 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..

개요 파일을 스캔해서 그 안에 있는 QR코드가 파일명의 일부와 일치하는 지 체크하는 업무를 맡게 됨. 라이브러리 찾기부터 실제 구현까지 기록으로 남김 라이브러리 찾기 라이브러리는 'qrcode reader java'로 검색하면 나오는 결과 중 가장 위에 있고 많이 들어본 ZXing부터 동작실험을 하기로 함. 이게 첫번째인데 쓰는 방법도 어렵지 않고 무료니까 굳이 다른걸 조사하지 않고 이걸로 해야겠다고 생각했다. 동작실험 첫번째 조사인데 이미지에 대한 부분은 이 링크의 코드로 충분히 해결되었다. https://www.geeksforgeeks.org/how-to-generate-and-read-qr-code-with-java-using-zxing-library/ How to generate and read ..

결론 Lombok의 Builder를 static import할 때는 *를 이용해야지, 클래스명으로 직접하면 에러가 난다. 상황 maven으로 빌드시 Builder클래스를 못찾는 에러 발생 같은 레벨의 다른 프로젝트는 문제 없고, 유사한 pom.xml을 사용 중. main소스는 문제 없음. test소스에서만 문제 발생. 예상원인 maven-compiler의 설정 이상 문제가 생긴 프로젝트만 해당 플러그인에 별도의 설정이 있기 때문에 여러 테스트의 충돌 UT, IT-a, IT-b로 나뉘어진 테스트 코드가 합쳐질 때 중복이 된다던가 하는 에러의 가능성 해결하기 위해 시도한 방법 maven-compiler-plugin 설정을 통한 해결 : 실패 특별한 설정과 그 설정을 쓰는 파일을 지우고 시도 annotaion..
상황 200개의 리퀘스트를 던지는 부하테스트 중에 max DB connection pool을 200으로 설정하면 아래와 같은 에러가 발생함. ### Error querying database. Cause: org.postgresql.util.PSQLException: ERROR: could not open file "base/16384/16729": Input/output error ### The error may exist in jp/co/toppan/aiocr/bpo/app/domain/repository/EntryRepository.java (best guess) ### The error may involve jp.co.toppan.aiocr.bpo.app.domain.repository.Entry..
- Total
- Today
- Yesterday
- PostgreSQL #FOR UPDATE #SKIP LOCKED
- spring #redis #redis-cluster
- mybatis @insert값 @update값
- springintegration #파일감시 #디렉토리감시 #파일완료검사
- palindrome number
- leetcode
- Postgresql #MultiTruncate
- excel table
- yaml
- json
- add two numbers
- 로그테스트 #콘솔로그테스트 #System.out
- Two Sum
- lombok #maven build #sym
- AWS #X-Ray
- SnakeYAML
- PostgreSQL #sequnceName
- opencv로qr코드인식
- 로그파일인덱스
- logback #logstash #LoggingEventCompositeJsonEncoder #로그JSON
- excel to markdown
- multipleIntegrationFlow
- cannotResolveSymbol
- Maven LF #메이븐 개행문자
- aws #aws region #aws credential #aws region provider #aws credential provier
- spring-integration
- reverse integer
- QR코드읽기 #ReadQRCode
- Python #Powertools
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |