본문 바로가기

전체 글

(39)
[IntelliJ] IntelliJ 에서 Invalidate Cashe 했을 때 발생한 빌드문제 해결 IntelliJ 에서 가끔 Project 나 빌드가 꼬이는 문제로 Cashe 를 비워줘야 하는 경우가 발생합니다. 그런 경우 File -> Invalidate Cashes / Restart 로 재시작하면 됩니다. 하지만, 재시작 후 Gradle 을 빌드하면 다음과 같은 오류가 발생하는 경우가 존재합니다. *************************** APPLICATION FAILED TO START *************************** Description: Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. Reason: Failed ..
[Spring boot] TestRestTemplate 401(authentication) 오류 발생해결 TestRestTemplate 를 사용하여 서버와 클라이언트의 인증값을 받아서 사용하는 프로젝트를 진행 중 인증되지 않은 사용자에 대한 API 접근에 대해서 unAuthentication 을 정상적으로 발생시키는지에 대한 테스트코드를 작성하여 실행하는데 문제가 발생하였습니다. org.springframework.web.client.ResourceAccessException: I/O error on PUT request for "http://경로": cannot retry due to server authentication, in streaming mode; nested exception is java.net.HttpRetryException: cannot retry due to server authent..
[Junit] JunitSoftAssertion 으로 중복 검증 문제 해결하기 JUnitSoftAssertions 라이브러리 TDD 에 대한 강의를 들었을 때, 테스트 코드를 검증 시 한 메서드에 한 가지의 검증을 해야한다는 규칙이 존재하였습니다. 한가지의 규칙만 존재해야하는 이유는, 만약 한 테스트 메서드 내에 3가지의 검증이 존재한다면 첫 번째의 검증이 실패한 경우 두번째와 세번째 테스트에 대해서 검증을 진행할 수 없기 때문입니다. 만약 간단한 프로젝트나 테스트를 구성하고 있는 경우에는 크게 문제가 되지 않을 수 있지만, 테스트 코드의 양이 방대하다면 이러한 문제는 크게 야기될 수 있습니다. 그렇기 떄문에 이러한 검증 문제로 인하여 한 테스트 메서드 내에는 하나의 검증만 진행해야 한다는 규칙이 존재합니다. 하지만, 같은 테스트 코드이지만 검증해야되는 부분만 다르기 때문에 중복된..
[Javascript] 새로고침 시 알림팝업 띄우고, 뒤로가기 버튼 클릭 시 띄우지 않기 Javascript 사용자에게 입력을 받는 화면을 개발하던 중, 새로고침을 하게되면 작성 중인 데이터가 날라가 이용하는데 불편함을 겪는 이슈가 있었습니다. 이러한 문제를 해결하기 위해서는 새로고침에 대한 확인을 받는 것이 좋다고 생각했습니다. 브라우저 내에서 제공하는 메서드인 window.onbeforeunload 를 이용하여 쉽게 구현할 수 있습니다. 특정 문자열을 리턴하지 않으면 알림 팝업이 발생하지 않습니다. 기존에는 팝업내의 메시를 return 값에 넘겨줌으로써 수정할 수 있었지만 특정 취약점으로 인해 변경이 불가능해졌습니다. refresh 는 사실상 무의미한 데이터입니다. ""로 넘기셔도 문제없이 팝업이 발생합니다. MDN - Custom messages in onbeforeunload dial..
[Javascript] CrytptoJS 암호화 시 TypeError: Converting circular structure to JSON 나는 문제 해결 cryptoJS 는 Object 형태를 저장할 수 없고, String 형태만 가능하기 때문에 JSON 의 경우 JSON.stringify 를 사용하여 String 형태로 직렬화 후 사용가능합니다. cryptoJS 라이브러리를 사용하여 객체를 String 으로 직렬화하여 암호화 후 역직렬화하여 데이터에 저장 시 다음과 같은 오류가 발생합니다. 이와 같은 에러는 주로 직렬화나 역직렬화 시 내부에 타입이 맞지 않는 문제로 순환 참조 시 발생합니다. CryptoJS - npm 해결방안 CryptoJS.AES.encode(JSON.stringify(data), key) 로 데이터를 암호화 진행하면 console.log 에는 문제없이 출력되지만 저장 시 오류가 발생하는데, 마지막에 .toString() 을 추가해주..
[Javascript] sessionStorage 에 객체 저장하고 꺼내기 문제점 sessionStorage 는 기본적으로 key, value 형태의 문자열 값을 저장할 수 있도록 한다. 따라서 객체의 형태를 저장할 경우 String 형태로 "[Object, Object]" 가 저장되기 때문에 getItem 하여 사용할 수 없게된다. Web storage API - MDN 해결방안 따라서,객채형태를 value 로 저장하기 위해서는 String 으로 변환을 하거나, 별도의 prototype 을 정의해줘야한다. 객체형태를 String 으로 변환하여 사용하는 방법 // keyName 이라는 이름의 key 에 objectData 이름의 객체 데이터를 세션에 저장 sessionStorage.setItem(keyName, JSON.stringify(objectData)); // keyNa..
[Java] POJO 와 Beans 의 차이점 POJO Classes POJO(Plain Old Java Object) 는 자바 객채의 표준(ordinay)이며, Java Language Specification 에 의한 어떤 특정한 엄격한(restriction) 경계가 존재하지 않습니다. POJO 는 가독성과 재사용성을 중요시하게 사용됩니다. POJO 는 restriction 이 적은 만큼 쓰기도 쉽고 읽기도 쉽기때문에 많이 사용되어 왔습니다. POJO 의 3가지 규칙이 존재합니다. Exend prespcified classes Implement prespecified interfaes Contain prespecified annotations public class Animal { String dog; public String cat; priva..
[IntelliJ] Intellij Test Code 실행 시 Gradle 로 실행되는 문제 문제점 IntelliJ 에서 Junit 을 실행시키면 기존에는 Junit 으로 실행되던 것이 어느 순간부터 Gradle이 기본으로 실행되면서 한글 깨짐과 같은 문제가 발생합니다. 해결 방안 Intellij 내의 Gradle TollBar 를 찾아 클릭하여 빨간 네모박스의 Preferences 클릭합니다. ( Command + , 를 입력하여 Preferences 에 들어가 Gradle Build, Execution, Deployment 내의 Gradle 항목으로 들어가도 됩니다.) Run tests Using 에 Gradle(default) 라고 설정되어 있는 부분을 IntelliJ IDEA 로 변경합니다.