인기 글

Javascript - Uncaught SyntaxError: Invalid or unexpected token 원인과 해결방법
·
나의 에러 일지
개요 평가 시스템을 만들고 있었다. 요구사항 중 특정 기간에만 url에 접근 가능하도록 설정할 수 있는 요구사항이 있었다. (수강 신청 기간을 떠올리면 된다.) 평가 기간을 지정하면 해당 기간 내에만 url에 접근 가능하고, 기간 외에 접근 시 평가 기간이 아니라는 alert창과 함께 로그인 화면으로 리다이렉트되도록 했다. Service public String checkOfficerEvaluationPeriod() { OfficerEvaluationPeriod officerEvaluationPeriod = this.getOfficerEvaluationPeriod(); LocalDate startDate = officerEvaluationPeriod.getStartDate().toLocalDate(); ..
Spring - 이메일 인증 구현해보기 (랜덤 인증번호 보내기)
·
Spring
배경새로 시작하게 된 프로젝트에서 회원가입 중 이메일 인증을 하도록 했다.Spring에서 제공하는 API를 사용하면 생각보다 쉽게 구현할 수 있다. 나는 Google SMTP 서버를 이용해서 이메일 인증을 진행하도록 했다. 개발 환경Java 11Spring 2.xGradleMySQL, RedisIntelliJ 흐름사용자는 회원가입 화면에서 가입하려는 이메일을 입력 후 이메일 인증 버튼 클릭클라이언트 서버에게 사용자의 이메일로 인증 번호 전송 요청서버는 랜덤 인증 번호 생성. 인증 번호를 Redis에 저장 후 사용자의 이메일로 인증 번호 전송사용자는 인증 번호 확인 후 인증 번호 입력 후 확인 버튼 클릭클라이언트는 서버에게 인증 번호 검증 요청서버는 전달받은 인증 번호가 Redis에 저장된 인증 번호와 동..
Java - ArrayIndexOutOfBoundsException 원인과 해결법
·
나의 에러 일지
원인정해진 배열의 크기보다 크거나 음수 index에 대한 요청이 있으면 ArrayIndexOutOfBoundsException이 발생한다.배열의 index는 1부터 시작하는 것이 아닌 0부터 시작한다. 배열의 크기를 n이라고 한다면 index는 1부터 n까지가 아닌 0부터 n-1까지인 것이다. 보통 이 부분에서 해당 예외가 많이 발생하는 것 같다.ArrayIndexOutOfBoundsException은 자바 컴파일러에서 검사하지 않고 실행을 시켜야 알 수 있다.int[] arr = new int[5] // arr의 범위는 arr[0] ~ arr[4]로 총 5개의 인덱스를 생성arr[5] = 5; // arr[5]는 존재하지 않기 때문에 예외 발생!// 결과Exception in thread "main" ..
SSH - ssh no matching key exchange method found 에러 원인과 해결 방법
·
나의 에러 일지
ssh chanbin@192.168.0.100 Unable to negotiate with 192.168.0.100 port 22: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 원인 ssh6 까지는 제공해주던 key exchange method가 ssh7부터는 보안의 이유로 별도 옵션을 추가해주어야 한다. 해결 방법1 ssh에 접속할 때 key exchange method 옵션을 담아 접속한다. ssh -oKexAlgorithms=diffie-hellman-group-exchange-sha1 cha..
IntelliJ Error - finished with non-zero exit value 1 해결 방법
·
나의 에러 일지
Execution failed for task ':Application.main()'. > Process 'command 'JDK경로/bin/java.exe'' finished with non-zero exit value 1 이번에 소개할 에러는 finishi with non-zero exit value 1 이 녀석이다. Intellij, Gradle 환경에서 Spring 코드를 실행한 후 해당 에러를 만났다. 해결 방법 [File > Settings > Build, Excution, Deployment > Build Tools > Gradle] 이 경로로 이동 [Build and run using]과 [Run tests using]을 IntelliJ IDEA로 변경 [Gradle JVM] 버전을 현재 ..
QA - Test Case를 통한 QA 테스트
·
etc
개요이번에 회사에서 진행하던 프로젝트가 마지막 단계에 왔다. 이제 배포를 하기 전에 QA를 진행해야 했다. 하지만 우리 조직에는 체계화 및 구조적으로 QA를 진행하는 문화가 없었다. 당연히 QA 조직도 없다. 그래서 직접 QA 테스트를 진행하기로 했다. 본 글에 내가 QA테스트를 작성했던 내용을 남겨둔다. 부족한 부분이나 잘못된 내용이 있다면 언제든 댓글을 남겨주세요! QA 테스트(Quality Assurance)라고 하면 제조업 분야에서 기계 성능을 테스트하는 QA를 생각할 수 있다. IT에서의 QA는 서비스 기획 단계부터 참여하여 개발, 테스트 그리고 출시까지의 모든 과정에서 잠재적인 품질 리스크를 프로젝트 참여자들과 공유하고 해당 서비스가 사용자의 요구사항에 충족하는지에 대한 관리하는 활동이라고 볼..
Github - Pull request template 작성과 설정
·
Git
💡Pull request template은 왜 필요할까? PR의 내용이 중요한 이유는 Pull Request를 통해 코드 리뷰를 받기 때문입니다. 코드 리뷰를 통해 팀원 간의 코드 스타일을 맞출 수 있고, 혼자서는 발견하기 어려운 위험 요소도 발견할 수 있습니다. PR 내용만으로도 변경 사항과 이유를 충분히 이해할 수 있어야 합니다. PR Template을 만들어 Repository에 추가하면 PR을 할 때 PR body에 template의 내용을 자동으로 볼 수 있습니다. PR의 내용을 표준화해서 일관성 있는 좋은 품질의 Pull Request를 유지할 수 있습니다. pull_request_template.md 파일 생성 프로젝트의 Repository에서 파일을 생성합니다. 템플릿은 다음 위치 중 한 ..
MariaDB - 행 번호 출력하기 ROW_NUMBER() OVER PARTITION BY
·
SQL
오라클에서는 RNUM()을 통해 쉽게 순번에 맞는 행 번호를 출력할 수 있었다. 이번에 JSP로 프로젝트를 진행하면서 MariaDB를 사요하게 되었고 MariaDB에서도 행 번호를 출력할 수 있는 방법에 대해 정리해본다. MariaDB에서는 ROW_NUMBER() OVER() 함수를 사용하면 된다. OVER 안에는 PARTITION BY와 OREDER BY를 사용할 수 있다. PARTITION BY : 결과 집합을 분할하는 데 사용하는 열을 지정한다. PARTITION BY를 지정하지 않으면 모든 행이 단일 그룹으로 취급된다. ORDER BY : 지정된 파티션 내에서 각 행의 고유 ROW_NUMBER가 할당되는 순서를 결정한다. 예제 SELECT ROW_NUMBER() OVER(ORDER BY name ..
Oracle - 다중 Like (Like In)
·
SQL
기존 서비스에서 검색 기능에 대한 요구사항이 있었다.요구사항은 다음과 같다.복수 검색 가능검색 키워드를 포함하는 결과값 모두 조회ex) kim, lee, park 검색 -> 결과값: kimchanbin, leechanbin, parkchanbin, kimleepark 만약 검색어와 일치하는 결과값만 가져오면 됐다면 IN 연산자를 사용했으면 됐을텐데, 검색어를 포함하는 모든 결과값을 가져와야 했기 때문에 LIKE문을 사용해야 했다. IN 연산자SELECT NAMEFROM USERS WHERE NAME IN ('kim', 'leechan', 'parkchanbin');결과값: parkchanbin  LIKE 연산자SELECT NAMEFROM USERSWHERE NAME LIKE 'kim%'결과값: kimch..
Java - OutOfMemoryError:GC overhead limit exceeded 원인과 해결 방법 (Eclipse MAT)
·
나의 에러 일지
배경실행중이던 서버가 갑자기 다운이 되었다. 로그를 확인해보니 java.lang.OutOfMemoryError: GC overhead limit exceeded 에러가 발생했다. 서버를 재기동해서 그냥 넘어가기는 했지만 다시 발생할 수 있는 문제이기 때문에 원인과 해결 방법을 정리해본다. 개발 환경Java 1.8Spring 5.3Oracle 11gMacOS 원인GC는 더 이상 참조되지 않는 객체를 제거해주는 작업을 해주기 때문에 메모리 사용을 최적화하는데 도움을 준다. 하지만 GC가 너무 오랫동안 수행되면 실제 작업보다 많은 CPU를 사용하게 되어서 프로그램 실행이 느려지거나 중단될 수 있다.OOM은 JVM이 GC를 수행하는데 너무 많은 시간을 소비해서 애플리케이션을 실행할 수 없게 되는 상황에 발생하는..
Cold Bean
개발하는 콩