(나중에 또 까먹을까봐) 오랜만에 인텔리제이로 프로젝트파일을 열어봤는데 어노테이션들이 한 개도 인식이 되지 않고있었다. build.gralde을 보니 인식이 아무것도 안되고 있었다. https://kth990303.tistory.com/235 구글링 끝에 위의 블로그를 찾았고 임의적으로 build.gralde에 변화를 주어 새로고침 하게 했고 이후에 정상적으로 어노테이션들을 인식하는 것을 확인할 수 있었다.
문제 Lionz를 배포해놨는데 일정 시간이 지나면 서버가 다운되고 aws에 들어가서 인스턴스를 확인해보니 상태검사가 실패된 모습을 확인했다. 인스터스 모니터링을 해보니 터질때 마다 CPU가 100%에 가까워 졌었다. 해결방법 원래는 아래와 같은 순서로 배포를 진행했었는데 $ find ./* -name "*jar" $ java -jar [jar 파일명] & $ nohup java -jar [jar파일명] 1> [로그 파일명] 2>&1 & 사실 nohup문으로만 배포하는 방법도 많다고 한다 저 2개를 같이 run시켜서 CPU 사용률이 너무 높아져 터진 것 같다. $ find ./* -name "*jar" $ nohup java -jar [jar파일명] 1> [로그 파일명] 2>&1 & 그래서 이렇게만 진행하면 괜찮은 것 같다.
현재 권한을 위와 같이 enum타입으로 설정한 상태 tasknotice와 notice CRUD에 관리자만 접근할 수 있도록 if문으로 감싸주려고 위에처럼 했는데 빨간줄이 뜬다..! 팀원이 알려준건데 Enum타입은 위와 같이 비교해야 한다고 했다.
예상 원인 백엔드 팀원이 프로필이미지 기능을 추가하면서 테스트 하기위해 사진파일을 올려서 push를 했었다 이제 문제는 내가 pull 받을 때가 문제였는데.. 문제 발생 (충돌) git pull origin main을 치니까 위와 같이 Cannot merge binary files 라는 에러가 나왔다 시도1 그래서 그냥 새로 클론 받아서 하려고 했는데 yml파일을 우리가 .gitignore에 올려놓아서 새로 추가하기도 해야했고 제일 크다고 생각했던 문제는 .idea폴더다. 인텔리제이에서 자바 클래스 파일들을 인식을 못하고 있었고 그 이유는 gradle이 인식이 안됐기 때문인데 이게 .idea 폴더를 지우고 다시 키면 된다고 했다. 지웠다가 다시키면 알아서 .idea폴더와 안에 파일들이 다시 생성이 되
배포 + DNS aws로 배포 하고 DNS 설정하는 것 까지는 https://steady-coding.tistory.com/625 이 분을 따라했다! (보안그룹->인바운드 규칙 에서 443port도 잊지말고 추가해줘야함) >- DNS를 설정하는 이유 (출처 : 위의 분 블로그 중 발췌) DNS 설정 전에는 EC2의 퍼블릭 아이피를 이용해 스프링과 통신 중 -> 하지만 외부에 퍼블릭 아이피를 공개하는 것은 위험하고, 숫자로 된 아이피를 기억하기 어려움 -> 따라서 아이피를 우리가 보기 쉬운 문자 형태인 도메인으로 바꿈 -> 이때 아이피를 도메인으로 바꿔 주고, 도메인을 다시 아이피로 변환하는 시스템을 DNS라고 함 배포 과정 MAC은 pem 키가 존재하는 디렉토리 경로로 이동한 다음 ssh -i Lionz.pem ubuntu@13.~ sudo apt update sudo apt install openjdk-17-jdk // 배포할 소스 코드 clone $ git cl
과제공지글(tasknotice),과제(task) 들을 title(제목)이나 explanation(설명) 그 글이나 과제에 딸린 tag의 name으로도 검색이 가능한 기능을 개발한다 기능 설명: Tasknotice는 title,explanation 으로 검색 task는 explanation으로 검색 tag name으로도 검색가능 추가된 부분: Tasknotice와 Task 의 Repository,Service파일에 findByName 메서드 추가 TasknoticeTag와 TaskTag 의 Repository, Service파일에 findByTagName 메서드 추가 AllSearchApiController에서 구현 완료 >tasknotice task도 똑같이 함 >tasknotice_tag 를 넣어주는게 좋다. 저렇게 하지 않으면 에러가 계속 났음..
Tasknotice에 target이라는 필드가 있고 여기에는 파트인 FE or BE가 들어간다 이 때 해당 파트의 Tasknotice만 조회하고 싶은데 그렇게 하기위해서는 Tasknotice Repository에서 JPQL을 작성했어야 했는데 약간 잘못알고 있었던게 있다 select * t from tasknotice t where t.tasknotice_target = FE 로 해야하는 줄 알았는데 DB상에서의 column으로 조회하는게 아니라 객체속 필드이름으로 조회를 하는것 같다 따라서 아래와 같이 >select t from Tasknotice t where t.target = FE 로 해주어야 한다 (왜 "FE"처럼 따옴표가 없어도 되는지는 모르겠다  그 원래 내용들 모두를 Json으로 프론트로 보내주고 프론트단에서 다시 보내주면 그거를 set으로 저장 수정할 때 put과 patch가 있는데 PUT : 리소스의 전체를 update 할 때 사용 PATCH : 리소스의 부분을 update 할 때 사용 >뭘 쓸지 고민되면 그냥 POST로 해도됨 오히려 POST를 사용해서 수정하는게 REST스타일을 잘 따르는것임 (참고: https://repo.yona.io/doortts/blog/issue/12) Tasknotice_Tag 수정할 때 Tasknotice_Tag객체가 여러개 이미 존재할텐데 하나하나 update해준다 있던거 다 지우고 새로 만든다 request로 온 tag리스트에 갯수가 달라지면 복잡해지므로 일단 2번으로 태그