1. 문제 @DataJpaTest로 Repository를 테스트 할때, @CreatedDate, @LastModifedDate가 null로 저장된다. BaseTimeEntity @Getter @MappedSuperclass @EntityListeners(AuditingEntityListener.class) public class BaseTimeEntity implements Serializable { @CreatedDate @DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss") private LocalDateTime createdDate; @LastModifiedDate @DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss") priv..
1. 문제 @SpringBootTest에서 RestController에 선언되어 있는 @Cache 때문에, 정상적으로 테스트가 되지 않는다. 테스트 전에 redis-server에서 직접 flushall을 호출해 모든 cache를 evict 해도 상황별로 테스트가 통과하거나 실패한다. 2. 원인 개발/테스트/운영환경 별로 cache server를 분리하지 않았기 때문에, 테스트 전에 cache를 flush all 해도 그 사이에 실제 사용자가 API에 접근하게되면 cache 데이터가 꼬이게되나?.. 3. 해결 Test > sources > applicaiton.yml 에서 cache를 disable 한다. application.yml spring.cache.type : none 위와 같이 설정하면, 더이상..
1. 문제 Jenkins에서 gradle wrapper를 사용해 build를 진행할때 어느샌가부터 build가 fail이 난다. 2. 원인 원인은 아직 잘 모르겠다.. 😅 뭔가 내부에서 꼬인 것 같다. 3. 해결 jenkins의 cache/daemon 관련 데이터를 삭제한다. • /var/lib/jenkins/.gradlew/daemon • /var/lib/jenkins/.gradlew/wrapper/dists • /var/lib/jenkins/.gradlew/caches 또한, jenkins에서 gradlew wrapper를 사용할때는 damon을 turn-off 한다. https://docs.gradle.org/current/userguide/gradle_daemon.html#sec:stopping_..
1. 문제 linux에서 /dev/null에 stdout/stderr를 write 할때 permission denied 에러가 발생한다. 2. 원인 권한 설정이 문제인데, 아직 Linux Shell 학습이 되지 않아.. 이해가 되지 않는다. 조만간 학습하도록 하자. 😂 3. 해결 아래의 명령어를 순서대로 입력한다. rm -rf /dev/null mknod -m 0666 /dev/null c 1 3 추천서적 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 COUPANG www.coupang.com 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
Vi Command Line Basic :wq (save & quit) :q (quit) :q! (quit without save) :w (save) i (insert) a (insert next) A (insert line next) x (delete character) number +h (n\*left) number +j (n\*down) number +k (n\*up) number +l (n\*right) dd (delete the line) u (undo) Ctrl+R (redo) gg (go top) G (go bottom) { (go upper block) } (go down block) . (do perivous command line) yy (copy) p (paste) V (visual ..
1. 문제 jenkins에서 build를 수행할때 아래와 같은 에러가 발생할 수 있다. 2. 원인 jenkins server의 memory가 부족해서이다. 내 linux server의 메모리는 아래의 명령어로 확인할 수 있다. command free -h 3. 해결 swap memory를 지정하면 된다. 아래의 명령어를 순서대로 실행한다. sudo fallocate -l 1G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile 출처 : https://gdtbgl93.tistory.com/117 추천서적 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 COUPANG www.coupang.com 파트너스 활동을 통해 일..
1. 문제 window에서 jenkins-server/exit을 호출했으나, jenkins server가 종료되지 않는다. 2. 원인 shutdown 하려면 login을 해야하는데.. 아이디와 비밀번호를 잊어버렸다. 3. 해결 jenkins.exe가 있는 directory로 이동해 아래와 같은 명령어를 입력한다. 이때 cmd는 관리자 권한으로 열어야한다. command line jenkins.exe stop 추천서적 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 COUPANG www.coupang.com 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
1. 문제 docker를 다운받은뒤 image를 사용하려고 할때 아래와 같은 에러가 발생할 경우가 있다. 2. 원인 server에서 docker가 실행되고 있지 않아서이다. 3. 해결 도커를 실행시키면 된다 run docker sudo service docker start 매번 server에서 docker를 실행시키기 귀찮으니 서비스로 만들어준다. make docker as service sudo service docker enable 추천서적 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 COUPANG www.coupang.com 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
1. 문제 jenkins에서 shell script를 실행할때 아래와 같이 permission denied가 발생할 수 있다. script에 sudo를 붙이면 sudo: no tty present and no askpass program specified 에러가 발생한다. 2. 원인 jenkins를 sudo 권한의 user로 등록하지 않아서이다. 3. 해결 sudo 파일 편집창을 연다. sudo su - visudo 다음으로 아래와 같은 구문을 추가하고 저장한다. jenkins ALL=(ALL) NOPASSWD: ALL 추가하는 위치는 다음과 같다. 이후 shell script에는 sudo를 붙이면 된다. 저장후 jenkins job을 실행하면 아래와 같이 통과하는 것을 확인할 수 있다. 추천서적 스프링..
1. 문제 Jenkins의 configure system 화면에서 workspace/build root directory 셋팅해주는 부분을 찾을 수 없다. 2. 원인 jenkins 버전이 바뀌면서 더이상 gui에서 변경할 수 없게 되었나..? 아직 잘 모르겠다. 3. 해결 home directory의 config.xml에서 직접 확인 및 변경할 수 있다. 추천서적 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 COUPANG www.coupang.com 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
1. 문제 Jenkins에서 Github repository를 등록할때 아래와 같은 에러가 발생할 수 있다. 2. 원인 Jenkins가 설치된 server에 git이 설치되어있지 않아서이다. 3. 해결 아래와 같이 jenkins server에 git을 설치하면 된다. git install sudo yum install git 이제 다시 jenkins에 repository를 등록하면 아래와 같이 에러가 사라졌다. 추천서적 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 COUPANG www.coupang.com 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
1. 문제 AWS Linux에서 Java를 download 하기위해 wget으로 jdk를 다운받으면, 아래와 같은 Authentication fail이 발생할 수 있다. wget 명령어 sudo wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http://www.oracle.com/; oraclelicense=accept-securebackup-cookie" "https://download.oracle.com/otn/java/jdk/11.0.6+8/90eb79fb590d45c8971362673c5ab495/jdk-11.0.6_linux-x64_bin.tar.gz" 2. 원인 아직 잘모르겠다. wget 명령어에 --user --pass..
1. 문제 JUnit test에서 MockMvc를 사용해 POST API를 호출할 때 JSON content를 API에서 제대로 Parsing 하지 못해 HttpMessageNotReadableException이 발생할 수 있다. Test @Test public void testPost() throws Exception{ //language=JSON String json = "{\n" + " \"title\" : \"Greetings\",\n" + " \"value\" : \"Hello World\"\n" + "}\n"; mockMvc.perform( post("/hello/post") .contentType(MediaType.APPLICATION_JSON) .content(json)) .andExpec..
1. 문제 JUnit test에서 MockMvc를 사용할 때 Configure가 MockMvc를 제대로 찾지 못해 NullPointerException이 발생할 수 있다. 2. 원인 아래와 같이 MockMvc를 @Before에서 setup 하고 있는데 왜 에러가 발생하는지는 잘 모르겠다. 변경전 @RunWith(SpringRunner.class) @SpringBootTest class HelloResourceTest { private MockMvc mockMvc; @InjectMocks private HelloResource helloResource; @Before public void setUp() throws Exception { mockMvc = MockMvcBuilders.standaloneSet..
1. 문제 JUnit의 MockMvc를 사용해 RestController를 test 할 때 아래와 같은 에러가 발생할 수 있다. 2. 원인 build dependency에 'spring-boot-starter-web'을 포함시키지 않아서 에러가 발생했다. 3. 해결 아래와 같이 build.gradle에 dependency를 추가하면 해결된다. 추천서적 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 COUPANG www.coupang.com 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
1. 문제 intellj에서 'Alt+Enter' 눌렀을때 'create method' shortcut이 안보이는 경우가 있다. 2. 원인 뭔가 설정이 제대로 안잡혀 있는것 같은데.. 잘모르겠다. 😂 원인은 위에서 checkISBN 을 생성할때 input 값에 이상한 값을 넣어서.. Intellj가 int인지 String인지 구분을 못해서다. 제대로된 int 값인 '140449116'으로 바꾸면 간단히 'Alt+Enter'를 통해 method를 생성할 수 있다. 3. 해결 아래와 같이 class 생성하는 것 부터 'Alt+Enter'로 생성하면, method를 shortcut으로 생성할 수 있다. shortcut 클래스 생성 클래스 ..
1. 문제 spring boot에서 test code를 작성할 때 'import org.junit cannot be resolved'와 같이 junit이 제대로 import가 안될 때가 있다. 2. 원인 junit library가 project의 class path에 등록되지 않아서이다. 3. 해결 아래와 같이 junit 관련 library를 추가해주면된다. File -> Project Structure Modules -> Dependencies -> + -> Library 필요한 junit library를 선택후 Add 한다. 추가한 Library를 선택하고 'Apply' 후에 'Ok'를 클릭한다. 추천서적 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 CO..
1. 문제 spring boot2에서 아래와 같이 bean name이 중복으로 선언되었다는 에러가 발생할 수 있다. 2. 원인 spring boot2 내부의 어딘가에서 선언된 bean과 이름이 겹치는 건가..? (아직 잘모르겠다) 3. 해결 application.yml에 아래와 같은 내용을 추가하면 된다. 추천서적 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 COUPANG www.coupang.com 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
1. 문제 redis 서버에서 특정 command를 실행할때 아래와 같은 에러가 발생할 수 있다. 2. 원인 redis 서버에 password가 설정되어 있어서 그렇다. password는 redis.conf 파일을 편집해 설정할 수 있다. 3. 해결 위의 requirepass에 설정되어있는 password를 redis-cli에 아래와 같이 제출하면 된다. 추천서적 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 COUPANG www.coupang.com 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
1. 문제 spring-boot에서 원격 redis 서버에 접속이 아래와 같이 거절될 수 있다. 2. 원인 기본적으로 redis는 로컬에서만 접속하도록 막아두었기 때문이다. 이유는 redis는 보안적으로 취약한 구조이기 때문이다. 3. 해결 이를 해결하기 위해선 redis server의 redis.conf 파일을 수정해야한다. redis.conf 파일을 편집기를 통해 연다. sudo nano /etc/redis/redis.conf bind 명령어를 찾는다. 기본 설정인 127.0.0.1을 주석처리하고 모든 IP 대역을 허용하는 0.0.0.0 로 변경한다. 프로덕션 환경에서는 위처럼 모든 대역의 IP를 허용하면 절대 안된다. 실제 redis에 접근할 서버의 IP 대역만 허용하도록 하자. 위의 redis.c..