본문 바로가기

프로그래밍팁

(18)
java executor completablefuture thread pool close was컨테이너를 1주에 한 번은 재기동을 하는 일이 생겼다. 10일 이후부터 instance가 1개의 컨테이너에 줄을 서서 쌓이는 현상이 생긴 것이다. 이 해결을 위해 살펴보던 도중 jennifer에서 Current ThreadPool 항목이 있었는데 그게 한 컨테이너당 30,000개가 넘었다. 이 문제의 해결 방법은 ThreadPool사용하는 곳을 사용 후 반환하도록 하는 것이었다. 찾아보니 Executor를 사용하지 말고 ExecutorService를 사용해 executor.shutdown() 을 사용해서 사용 후 남아있는 빈 컨테이너가 남지 않도록 종료하는 것이었다. 맨 끝에 executor.shitdown(); 만 추가하고 10일정도 지났다. jennifer에서 Current ThreadPool ..
[application.yml, applicationService.sh 설정] 개발환경과 운영환경, 컨터네이너별 설정 들어봤을 법한 이야기일 수도 아닐 수도 있다. spring boot에서 사용할 수 있다. 필자는 apachecamel설정이 된 spring boot에서 설정했다. dbconnection은 application.yml로 설정하고 개발환경과 운영환경 구분은 applictionService.sh에 설정하면 된다. 서버마다 배포를 하는 방법은 여러가지이다. 그런데 설정 하나 때문에 jar파일을 재빌드 하는 수고는 덜어야 한다. application.yml에는 개발환경, 운영환경에 쓸 수 있는 dbconnection 정보가 있다. 각각 파일은 이렇다. 개발환경 = application-dev.yml 운영환경 = application-prd.yml 이렇게 yml파일을 만들고 dbconnection정보를 각 파일에 ..
powershell 하위경로의 파일 리스트 가져오기 windows의 기본 폴더 경로라면 cmd명령으로 가져올 수 있다. 예전에 썼던 글에서 그 내용을 언급했는데 사람들이 사용한다니 더행이었다. 이번에도 일하다 찾게 된 방법이다. NAS 폴더의 경로에서 하위 경로 및 파일명을 가져오는 방법이다. 방법은 간단하다. 다른 옵션을 더 추가해도 될 것 같지만 간단한 방법으로 리스트 뽑은 후 엑셀로 정리하였다. 순서는 크게 두 단계이다. 1. powershell 실행하기 - nas폴더 위치에서 파일이 있는 위치에서 shift + 우클릭을 하면 powrshell 실행할 수 있는 메뉴가 보인다. 그 메뉴를 선택하여 실행한다. 2. powershell에 명령어를 넣고 리스트를 추출한다. - 아래 명령어를 넣으면 list.txt에 경로가 저장된다. list.txt가 만들어..
apache camel 은 무엇인가? apache camel은 들어본 사람도 있고 아닌 사람도 있다. openapi로 뭘 할 수 있을까? db커넥션을 편리하게 할 수 있다. java에 하드코딩하던 것들을 제거하여 개발환경, 검증 환경, 운영환경을 다르게 사용할 수 있다. 이 기능 사용하지 않을 수 없다. pom.xml에 설정하고 사용하는 것이 간단하다. 지금 하고 있는 프로젝트를 살펴보면 이런 비슷한 기술들이 있다. 공부 따로 하는 것도 좋지만 내 프로젝트를 뜯어보는 것도 하나의 공부가 될 수 있다. apache kafka를 보면서 apache camel도 알게 되었다. 분석하는 것은 재미있는 일이다.
[sqlite] eclipse에서 svn E155004에러가 발생했을 때 이것만 주의하자. eclipse svn은 살릴 수 없었다. svn에서 업데이트하다가 락이 걸리고 말았다. 여기저기 찾아보니 sqlite를 사용하라는 것이었다. 열심히 찾아서 wc_lock과 work_queue를 delete로 날렸는데 기 이후에도 되지 않는 현상이 있었다. 중요한 건 백업을 꼭 해두길 바란다. 음.. 다시 통째로 받아야지 어쩌겠는가! 어떻게든 해 보려 이리저리 하였는데 SELECT * FROM WORK_QUEUE를 하였는데 database disk image is malformed라고 나오며 조회도 안된다. 손상된 것이다. 기억해야 할 건 항상 백업해 두어야 한다. 이것만이 할 수 있는 기초이다. 기초를 잊은 것이다. 어떤 작업을 하던간에 백업은 필수이다. 다시 한번 상기시키는 기회가 되었다. 특히 db작..
unix 명령어로EIPs 설정하여 개발환경과 운영환경 구분하기 unix환경에서 서비스를 구동시킬 때 사용환 경마다 설정을 해 주어야 한다. 예를 들어 DB설정 같은 것이다. DB설정은 application.yml로 할 수 있는데 환경마다 다른 파일로 실행될 수 있도록 설정할 수 있다. application-dev.yml과 application-prd.yml로 나눌 수 있다. 이렇게 파일을 나누고 환경에 따라 실행되도록 설정하면 된다. 내 프로젝트를 기준으로 한다면 local 환경에서는 application.yml로 실행하면 되는데, unix에 서비스를 구동시킬 때 어떻게 환경이 다름을 확인할 수 있을까? 그건 shell script로 가능하다. 서비스를 구동시킬 때 라이브러리나 경로 같은 것을 설정하는데, 개발은 dev로 하고 운영은 prd로 설정할 수 있다. bl..
[apache camel] 어떻게 구성되어 있을까? apache camel은 시스템을 통합할 수 있는 오픈소스 통합 프레임워크라고 한다. EIPs(Enterprise Integration Patterns)라고 하는데 db커넥션이나 기타 다른 요소들을 편리하게 관리하기 위한 방안이다. 이걸 알게 된 건 내 프로젝트를 파서 내 것으로 만드는 과정이다. DBconnection을 하는데 하드코딩되어 있는 게 있고 없는 게 있어서 하드코딩되어 있는 커넥션을 빼고 편리하게 사용하고 싶어서 찾아보게 되었다. 나도 알아가는 과정이지만 신기해서 공유한다. DB를 connection하기 위해서는 설정을 해 줘야 하는데 설정도 한번 해 주면 메서드를 가져다 쓰면 된다. application.yml에는 db계정 정보를 넣고 pom.xml에는 dependency를 설정하고 사용..
nexacro clipboard에 데이터 복사 및 초기화 방법 nexacro에서 javascript를 사용해서 clipboard로 데이터를 세팅하려다가 찾아낸 방법이다. nexacro에서 제공하는 기능으로 보이고 활용도 쉽다. 깊이 분석할 필요도 없고 그냥 쓰면 되는 아주 간단한 방법이다. system.setClipboard("CF_TEXT", "클립보드에 저장할 데이터"); 이렇게 쓰면 ctrl + v로 바로 쓸 수 있다. 아니면 windows의 clipboard기능을 써도 된다. windows clipboard기능은 windows key + v를 누르면 된다. 그러면 사용할지 여부를 물어보는 데 사용하자. 실제 저 코드를 nexacro에서 사용해 보자. value데이터를 담아보겠다. 1. value데이터를 가져올 코드 작성. var str = this.div.f..
[배운것 공유] CDC kafka 연계 방법 CDC kafka라는 것은 왜 생기게 되었을까? 데이터를 모으고 공유하기 위한 방법 중 하나이다. sync를 맞춘다가 맞을지도 모른다. 이 개념을 일하면서 알게 되었다. 내가 맡은 일 중 일부가 이 업무로 이루어진다. 가까운 것부터 하나씩 분석하는 것이다. CDC는 간단히 DB의 데이터의 변경이 생기면 그 데이터를 복제한다. CDC에서 복제한 데이터를 kafka에 전송한다. kafka에서는 수신받은 데이터를 db에 저장을 허게 된다. 이때 서로의 테이블명과 칼럼명이 다른 걸 매핑시키는 과정을 거친다. 데이터의 누락을 줄이기 위해 수신된 데이터는 복제과정을 거친다. 복제된 데이터는 파일 형태로 저장이 된다. 간단한 내용만 적었지만 내용이 방대하므로 하나씩 배우며 공유하려 한다. 문서상에는 CDC와 kafk..
COLUMN 추가, 삭제 방법 오늘 칼럼을 추가했다가 PRIMARY KEY도 등록하고 INDEX도 걸었는데 안타깝게도 삭제해야 하는 상황이 생겼다. 이런 경우도 있으니 참고하길 바란다. 칼럼 삭제도 순서가 있다. PRIMARY KEY와 인덱스를 제거하고 칼럼을 삭제해야 했다. 그 과정은 복잡하지 않지만 기록해 둔다고 나쁠 건 없다고 생각한다. 우선 PRIMARY KEY를 삭제해야 하는데, 그건 이전 글을 참고하길 바란다. 이전 글은 바로 아래 남겨 두겠다. 1. PRIMARY KEY 삭제 primary key 추가, 삭제 방법 primary key는 고유한 키 인데 변경이나 추가할 경우가 생기기도 한다. 처음에는 두개였는데 하나를 더 추가 한다면 이전에 있던 primary key를 삭제하고 다시 입력해야한다. 삭제와 입력은 간단한 절..