728x90

처음부터 완벽하려하고 하지 말자. 스케이트 보드 -> 킥보드 -> 자전거 -> 오토바이 -> 자동차 순으로 개발하자. 

 

 

  • thymeleaf에 미숙해서 a 태그에서 th:src에 주소와 값을 다 넣으려면 어떻게 해야하는지 모르는 상황에서 검색 방향도 애매해서 고생했다. th:src = "@{'/user/login' + ${userId}}" 이런 식으로 하면 된다.

 

  • Service 코드에서 @Transactional(reaonly = true)로 해놓은 걸 깜빡하고 save 메소드를 구현해서 system.out으로는 값이 제대로 입력된 것 처럼 나오는데 왜 db에는 insert가 되지 않는건지 한참을 헤매다가 아.. 맞다 ! 해서 고친 기억이 있다. 항상 Transactional을 잘 확인하자.

 

  • postmapping에서 form 입력에 에러가 있을 때 다시 form으로 돌아가야 하는 상황에서, pathVariable을 전달하는 방식으로 하려면 redirect를 하거나, 전달을 안하려면 view의 위치만 string으로 전달해야 하는데, "post/read/{postId}" 이런식으로 return을 해서 계속 오류가 떴다. model로 postId를 주입한 후 "post/read"를 반환하거나 redirect:/post/read/{postId}를 반환하자. redirect와 기본 반환의 차이점을 다시 깨달았다.

 

  • user나 post, comment 등 domain을 그대로 view로 전달했었는데, 모두 dto로 전환한 후 전달하는 것으로 refactoring했다.

 

  • AWS에 프로젝트를 배포한 후 분명 index page는 제대로 뜨는데 다른 페이지는 whitelabel 오류가 뜨면서 접근이 되지 않았다. 알고보니 controller에서 반환할 때 "user/login" 이런 식으로 반환해야 하는 걸 "/user/login"처럼 앞에 /를 붙이고 반환을 해서 벌어진 일이었다. 이 오류 고치려고 엉뚱한 곳에서 오류 찾으며 구글링을 몇시간을 했는데 저것 때문이었다니 허탈했지만 다음부턴 절대 실수하지 않게 된 것 같다.

 

  • AWS에 사진 파일 upload & download가 안 됨 - > 이미지용 S3 서버를 따로 구축해야 한다.

 

  • application.properties에 S3 접근 키와 비밀번호를 저장하고 gitignore에 property 파일을 무시하도록 설정했는데도 github에 그대로 올라가서 AWS로부터 키를 삭제하고 다시 발급하라는 경고 메일이 왔다. gitignore not working으로 검색해서 캐시를 삭제한 후 다시 push 해서 해결했다.

 

  • S3 서버를 구축했고 파일 upload &download는 잘 되지만, 게시글을 삭제할 때 사진 파일이 삭제되지 않는다. -> 권한 문제인 줄 알고 S3 서버 접근 권한을 이리저리 고치며 DeleteObject도 allow 했다가 말았다가 갖은 시행착오를 겪었다. 그런데 다시 여러 파일들로 해보니 삭제가 되는 파일이 있고 안 되는 파일이 있었다. 차이점은 파일명..!!! 한글이나 공백, 특수기호가 포함된 사진 파일은 저장은 잘 되지만 삭제가 되지 않았다. -> 기존의 파일명을 (uuid + 원본 파일명)으로 하던 걸 uuid 만으로 파일명을 이루도록 고쳐서 삭제가 안 되는 특수한 경우가 없도록 조정했다.

 

  •  H2 인메모리 디비를 사용하다 보니 beanstalk에 배포를 할 때마다 db가 다 사라져서 다시 새로 회원가입하고, 글을 써야 했는데 이를 고치고자 MySql로 전환하는 작업을 했다. JPA를 쓰기 때문에 sql문을 다시 고칠 필요는 없었고, 연동하는 부분을 손봐야했다. application.properties는 큰 문제가 없지만 aws에 DB설정을 하는 게 난관이었다. EC2에 mysql을 설치하다가 beanstalk는 자동으로 설정으 바뀐다고 해서 포기하고, 다시 rds를 생성하기로 했다. beanstalk에서 rds 설치하는 게 계속 오류가 나고 재배포를 하라는 오류가 떠서, 아예 rds를 따로 만들어서 beanstalk와 연결하는 방식으로 실행했다. 우선 rds를 성공적으로 띄우고, localhost에서 rds와 연결해서 데이터를 저장하는 걸 확인한 후 그대로 beanstalk에 배포해서 데이터가 유지됨을 확인했고 매우매우매ㅜ애무애ㅜ 뿌듯하다.

 

  • 1MB가 넘는 파일을 계속 저장을 못하길래 부트 앱 자체의 설정 문제인 줄 알고 수정을 계속했는데, 알고보니 nginx 자체의 문제였고, 이를 해결하기 위해 원격으로 ec2 서버에 접속해서 etc/nginx/conf.d/ 경로에서 proxy.conf라는 파일을 생성해서 client_max_body_size 50M; 를 입력한후 저장, 서버를 재시작해서 해결했다. 파일 생성은 sudo su로 root 계정으로 생성해야 저장이 된다. nginx 재시작 : service nginx restart

 

  • Class diagram의 관계를 aggregation에서 compotision으로 변경했다. aggregation은 상위 테이블과 하위 테이블이 독립적으로 존재할 수 있고 composition은 그렇지 않다. Users가 없이 Posts만 작성할 수 없고, Users랑 Posts없이 좋아요나 댓글을 작성할 수 없기 때문에 composition이 의미상 더 맞을 것 같아서 변경했다.
728x90

+ Recent posts