프로그래밍(Web)/업무관련

    Git의 다양한 브랜치 병합 방법들

    학습 배경 이직한 회사에서 rebase and merge라는 방식의 merge 방법을 채택하고 있었는데 나에겐 rebase and merge라는 개념이 생소하여 학습하게 되었다. Merge 일반적으로 많이 사용되는 병합이며, 커밋 이력을 모두 남길 때 사용한다. 서로 다른 브랜치에서 작업을 했거나, 작업 내용을 합쳐야 하는 경우 merge를 해주면 됨 브랜치 상태 확인 Checkout한 브랜치를 기준으로 —merged, —no-merged 옵션을 사용하여 merge가 된 브랜치인지 아닌지 필터링할 수 있다. git branch --merged git branch --no-merged Merge 하기 ‘현재' 브랜치에서 [브랜치 명]의 변경사항을 병합 예를 들어 master브랜치와 test 브랜치가 있다고..

    OpenVPN Options error: --up script fails with './update-resolv-conf': 지정된 파일을 찾을 수 없습니다. (errno=2) 해결방법

    script-security 2 up ./update-resolv-conf down ./update-resolv-conf import하려는 파일코드에서 위 코드를 삭제해주면 정상적으로 사용자 암호를 입력하라는 창이 뜨며 해결됩니다

    VisualVM 실행 시 Cannot find java 1.8 or higher 에러 뜰 때

    위와 같은 에러 창이 뜨는 경우 다운받은 VisualVM 폴더에 들어 간 뒤 etc 폴더에 들어감. 그 다음 visualvm.conf파일을 연 뒤, 밑으로 내리다 보면 visualvm_jdkhome 부분이 있을텐데 주석 제거하고 자신의 JDK경로를 입력하면 실행된다.

    Eclipse Memory Analyzer를 사용하여 메모리 누수 파악하기.

    Java 프로세스를 다루는 Linux서버를 운영하다 보면 종종 OutOfMemory(OOM)에러를 만날 때가 있어요. 보통 OOM에러가 발생하면 시스템 자원이 소멸되어 "bash fork retry no child process" 에러로 이어지더군요. 그래서 아래와 같은 쉘 스크립트 코드를 추가하여 Java 프로세스를 실행시키더라도 "bash fork retry no child process" 에러가 발생 했을 시점엔 사용 가능한 시스템 자원이 충분하지 않아서 JVM(Java Virtual Machine)에서 덤프 파일을 생성하는 데 실패했어요. 그래서 제가 찾은 방법은 OutOfMemory(OOM)에러가 발생하기 전 힙 덤프 파일을 생성하여 메모리 누수가 되는 부분을 찾아 예방하는 방법외엔 없더라구요...

    [바미] Java - BigDecimal 반올림 메소드 주의사항.

    버전이 업데이트 되면서 'ROUND_'로 시작하는 메소드 명들은 BigDecimal.ROUND_UP 올림 BigDecimal.ROUND_DOWN 버림 BigDecimal.ROUND_HALF_UP 반올림(5이상) BigDecimal.ROUND_HALF_DOWN 반내림(5이하) RoundingMode으로 사용하는 부분은 아래로 대체되었다. RoundingMode.UP RoundingMode.DOWN RoundingMode.HALF_UP RoundingMode.HALF_DOWN http://cris.joongbu.ac.kr/course/java/api/java/math/RoundingMode.html

    [바미] linux서버 용량 관리하기.

    안녕하세요. 회사 내에서 서비스를 운영하기 위해 많은 서버들이 사용되고 있는데요. 그 중에 37GB정도의 용량을 가진 Java 서버의 메모리가 80%넘게 찼다는 봇 알림을 받게 되었어요. 제일 처음 했던 것은 가장 많은 용량을 차지하는 디렉토리를 알아보기 위해 각 디렉토리마다 들어가 아래와 같은 'df' 명령어를 사용하였어요. du -ah | sort -n -r | head -n 10 위의 코드를 사용하면 해당 디렉토리 안에 용량을 가장 많이 차지하는 것 Top10을 뽑아줘서 굉장히 유용했어요. 그 결과 가장 많이 나온 디렉토리는 jar파일들을 저장하고 있는 디렉토리와 log를 쌓고 있는 디렉토리였어요. 로그 파일 정리하기 먼저는 로그를 쌓고 있는 디렉토리에 가서 오래된 log파일들을 정리했고, 그 결과..

    [바미] ON DUPLICATE KEY UPDATE문을 주의해서 사용하자.

    코드에서 SQL데이터를 가공하고, SQL INSERT 실행하여 DB에 저장하는부분에서 A~F 까지의 칼럼중에 D,E를 제외한 값들만 들어가지는 문제를 경험하게 되었습니다. 문제는 몇 번을 INSERT하더라도 A~F 칼럼만 INSERT가 되지 않더군요. INSERT INTO a (`a`,`b`,`c`,`d`,`e`,`f`) VALUES ('1INCH_USD','1675296000','0.53045','0.5753','0.52574','0.53045'), ('AAVE_USD','1675296000','88.793','93.326','87.961','88.7') ON DUPLICATE KEY UPDATE update_time = current_timestamp(3); 이런식의 코드였는데 처음에 했던 부분은 '..

    [바미] Java Milliseconds to Seconds 에피소드.

    안녕하세요. 요번에 MiliSeconds to Seconds 처리하다 생긴 실수를 오답노트 삼아 글을 적어보려 합니다. 데이터의 time중에 Milliseconds형태로 들어오는 값이 있었습니다. 들어온 데이터를 들어온 데이터의 time값과 현재 시간을 비교하여 현재보다 과거인 경우 pass시키고, 현재보다 미래인 경우 처리합니다. 이게 무슨 말이냐면 현재 시간은 지금은 12시 24분 13초라고 가정했을 때 초 단위를 00초로 변경한 값을 말합니다. 즉 현재가 12시 24분 24초 일 때, 12시 24분 00초(현재시간)인 타임스탬프 값과 보다 미래인 값인 12시 24분 01초, 12시 24분 10초로 비교하는 것이죠. 00초로로 변경한 현재 시간 값은 seconds단위로 떨어지는 timestamp였고,..

    [바미] Java 스케줄러 삽질기.

    안녕하세요. 간만에 또 찾아왔습니다. 한 동안 스케줄러 때문에 삽질 아닌 삽질을 해서 스케줄러와 관련된 부분들을 나누고자 글을 올립니다. 제가 경험한 스케줄러의 형태는 2종류였습니다. 만약 매일 지정된 시간의 10분에 한 번 실행되는 스케줄러라 가정했을 때 서버 시작으로부터 10분에 실행되는 스케줄러. 지정된 시간의 10분에 실행되는 스케줄러. 였습니다. 저의 경우 매일 지정된 시간에 해야 했기 때문에 당연히 후자의 스케줄러를 추가적으로 만들어야 했습니다. 그 후엔 기존 코드에 작성되어 있는 형태대로 하루에 돌도록 만들었습니다. 그런데 매일 하루에 돌도록 설계되어 있는 스케줄러가 매일 지정된 시간에 돌지 않는 것이 였습니다. 몇 칠을 삽질하며 알게 된 것이 현재 설계되어 있는 스케줄러의 형태는 후자쪽이 ..