전체 글 21

[Maven] Received fatal alert: protocol_version

Received fatal alert: protocol_version 업무중 제공받은 서버에 메이븐 빌드를 실행했더니 다음과 같은 오류가 발생하였다. org.springframework.web.client.ResourceAccessException: I/O error: Received fatal alert: protocol_version; nested exception is javax.net.ssl.SSLException: Received fatal alert: protocol_version 원인 Maven Repository에는 https가 [TLS v1.2]로 연결이 되어야한다. 빌드를 실행했던 서버는 jdk1.7이라서 프로토콜 버전 [TLS v1.0 ~ v1.1]이 기본값으로 설정되어있다. TLS ..

Maven & Gradle 2020.04.20

[git] .gitignore가 적용되지 않을 때(git 캐시 삭제하기)

.gitignore 프로젝트를 깃허브 public저장소에 커밋할 때 각종 인증 키값이나 서버정보, DB정보를 입력한 파일들은 커밋하면 안된다. public에 커밋하게되면 내 서버가 어느새 누군가의 비트코인 채굴기가 되어 다음 달 AWS로부터 어마무시한 과금 청구서가 날아올 수 있다. 중요한 정보가 담긴 파일은 .gitignore에 등록하여 커밋되지 않도록 설정한다. 그래서 .gitignore에 등록했는데 왜 커밋목록에 올라오는거지? .gitignore에 파일을 추가했는데 추가한 파일이 계속 커밋목록에 있는 경우가 있다. .gitignore에 파일을 추가하기 전에 stage에 올라간 파일들은 캐시가 남아 있어 커밋목록에 자꾸 뜨는 것이다. 캐시를 제거하기 위해서는 해당 디렉토리로 이동 후 아래와 같이 명령..

Git 2020.04.10

[PostMan] Postman이 느릴 때(CPU/메모리 사용량 증가)

Postman이 느려졌다. API 확인 및 테스트 할 때 유용하게 사용하고 있는 툴이다. 이전에는 크롬 확장프로그램으로 사용하다가, Postmand에서 네이티브 어플리케이션을 다운받아 설치해서 사용하는 방향으로 유도하고있어, Postman에서 제공하는 네이티브 버전으로 변경했는데 App이 너무 느려서 텍스트 입력하기에도 어려울 지경이었다. Windows 작업관리자에서 확인해보니 Postman의 CPU와 메모리 사용률이 너무 높았다. 해결 : Postman의 Interceptor Bridge설치 삭제와 재설치를 반복해도 해결되지 않아 postman깃허브의 이슈탭에서 해결방법을 찾았다. Do you have Interceptor connected while facing a high CPU consumptio..

개발환경 2020.04.09

[RDS] 파라미터 그룹 변경하기

ASW의 RDS에서 MySQL을 사용하는중에 특정 테이블에 트리거를 생성했는데 다음과 같은 오류가 발생했다. "You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)" 이러한 오류가 발생하는 이유는 계정에 권한이 없기때문에 log_bin_trust_function_creators variable의 설정을 변경해야한다. 물리적 서버나 EC2에 직접 mysql을 설치하여 사용하는 경우에는 ssh로 접속해 my.cnf파일을 수정하면 되지만 AWS의 RDS는 ssh접속을 미지원하는 대신 "파라미터 그룹 설정..

AWS 2020.04.07

[SonarLint] 내 코드를 자동으로 리뷰해 주는 IDE플러그인

나의 개발환경 재직중인 회사가 IT회사가 아닌 제조업 기반의 회사의 전산실이다보니, 개발스러운 문화가 완전하지 않은 환경이다. 그 중에 하나가 코드리뷰 문화가 없다는 것 인데, 나같은 주니어 개발자의 경우 코드리뷰를 하면서, 내가 엉망으로 짜놓았을 지 모르는 코드를 리뷰하고 수정하는 과정에 대한 성장할 수 있는데 재직중인 회사는 알아서 코드를 짜고, 알아서 커밋하고 동작에 이상이 없으면 문제를 삼지 않기 때문에 이 점이 항상 아쉬웠다. 열악한(?) 근무환경에서 일을 하다 보니, 타 IT회사에서 일하는 방식이 궁금해서 가끔 개발자 컨퍼런스를 참석하는데 헤이딜러에서 릴리즈 배포 전 Sonar Qube로 코드를 정적으로 검수 한 후 이상이 없으면 배포한다는 강의 내용을 듣고 Sonar를 찾아보게 되었다. So..

개발환경 2020.03.23

[Web, Tomcat Server] ..in a frame because it set x-frame-options to sameorigin

iframe으로 youtube동영상을 호출하여 재생하는 작업을 하다가 동영상이 재생되지 않아 크롬 개발자 도구로 확인해 봤다니 다음과 같은 메세지를 출력하고 있었다. "....in a frame because it set x-frame-options to sameorigin" X-Frame-Option header X-Frame-Option header는 FrameSet이나 iframe등에 의한 클릭재킹에 대한 보호를 제공하고 2009susdp IE8에 추가되었고 얼마 후 다른 브라우져들에도 채택되었다. 이 헤더의 값은 DENY, SAMEORIGIN, ALLOW-FROM 중 하나를 가지며 각각 외부 사이트에 대한 프레임 금지, 같은 사이트만 허용, 특정 사이트만 허용의 의미를 가진다. - X-Frame-..

Server 2018.03.24

[Tomcat] java.rmi.server.ExportException : Port already in use : 9841, nested exception is:java.net BindException: Address already in use

간혹 서버 배포 중 기존에 사용중인 9841포트가 정상적으로 종료되지 않고 재시작 할 경우 아래와 같은 메세지가 발생된다. java.rmi.server.ExportException : Port already in use : 9841, nested exceptionis:java.net BindException: Address already in use 이런 경우가 발생했을 때 해당 포트를 찾아 강제종료 시킨 후 다시 재시작 하면 된다. 1) lsof -i 명령어를 사용하여 pid값을 찾는다.lsof -i :포트번호ex) lsof -i :9841 2) 정상적으로 종료되지 않은 프로세스를 kill 명령어로 강제종료kill -9 pidex) kill -9 1385 3) 서비스 재시작

Server 2018.03.16

[Java] 휴대폰 번호 마스킹 처리

요새 보안이슈 때문에 회사 시스템을 모두 수정하고 있다.개인정보란 개인정보는 모두 마스킹을 하고 있다. DB에 암호화 되어 있는 휴대폰 정보를 평문으로 복호화 한 후 뷰페이지에 뿌리기 전에 휴대폰 번호를 마스킹 처리 해야 한다. 프로젝트의 Util.java에 넣어서 사용하면 좋을듯 하다. 12345678910111213141516171819202122232425262728293031323334353637/** * 휴대폰 번호 마스킹(010****1234 / 011***1234) * @param phoneNumber * @return */public static String maskPhoneNumber(String phoneNumber){ String maskedPhoneNum = phoneNumber; ..

Java 2018.02.22

[Java]java.lang.UnsupportedClassVersionError... Unsupported major.minor version 52.0

java.lang.UnsupportedClassVersionError ... Unsupported major.minor version 52.0 자바 프로젝트를 컴파일 할 때 위와 같은 오류가 발생할 때가 있다. 원인은 jdk.8.0버전에서 컴파일 하고 하위 버전에서 실행 할 때 위와 같은 오류가 발생한다. ■ 에러 version별 jdk버전J2SE 8 = Version 52J2SE 7 = Version 51J2SE 6.0 = Version 50J2SE 5.0 = Version 49JDK 1.4 = Version 48JDK 1.3 = Version 47JDK 1.2 = Version 46 JDK 1.1 = Version 45 해결방법 : 1. 프로젝트의 자바 버전을 확인 프로젝트 우클릭 - Properti..

Java 2018.02.09

[Java]이름 마스킹 처리

최근 개인정보 보호의 중요성이 높아지면서 개발 할 때도 보안적으로 신경써야 할 부분이 많다. 서비스에 등록된 고객 또는 내부직원 리스트를 나열 할 때도 개인정보는 식별되기 어렵도록 마스킹 처리를 하게 되는데 이번 포스팅에서는 Java단에서 마스킹 하는법에 대해 알아보도록 하자 DB에서 이름을 select할 때 쿼리문에서 마스킹 하는 방법이 있지만 개인정보는 DB에 저장할 때 AES등의 암호화 알고리즘을 사용하여 암호화 후 저장하기 때문에 암호화된 데이터를 가져온 후 Java단에서 복호화 한 후 마스킹 처리를 하고 있다. 123456789101112131415161718192021222324252627282930313233/** * 이름 마스킹 처리(성을 제외한 이름 마스킹 처리) * @author 201..

Java 2018.02.08