1. 어려웠던 부분 : 오늘은 내가 맡은 기본 CRUD작업을 마무리하고 S3 업로드 후 수정하는 작업을 맡아서 진행했다. 오늘 점심부터 몸 컨디션이 급격하게 좋지 않아 자리에 앉아있는 것 자체가 너무 힘들었다. 팀원들에게 양해를 구하고 한시간 정도 쉬고 약먹고 다시 맡은 부분을 진행했다. 몸이 안좋으니 S3를 이용해 사진을 여러장 수정하는 코드를 짜는게 더 어렵게 느껴졌다. 결국 나중엔 팀원들의 도움으로 같이 화면공유를 하면서 코드를 완성 할 수 있었다.

 

2. 느낀 점 : 확실히 팀원들이랑 같이하면 막힌 문제도 답이 보이는 것 같다. 내가 놓치고 있던 부분을 다른 팀원들이 봐줄 수 있어서 좋은 것 같다.

 

3. 새로 알게 된 내용 : 지난 프로젝트땐 S3로 이미지를 한장만 업로드하는 작업을 했는데, 이번엔 여러장 등록하는 작업으로 확장했다. 개별 수정까지는 구현 못했지만, List<>를 이용해 다중 이미지 업로드하는 법을 배웠다. 업로드 부분을 다른 팀워분이 작업해 주셨는데, 덕분에 어떻게 구현해야 하는지 배울 수 있었다. 

 

4. 셀프칭찬 (오늘 잘한 일) : 몸 컨디션이 안좋았지만, 그래도 맡은 부분을 마무리한 나 칭찬한다.

 

5. 내일 할 일 : 지난주 미니 프로젝트 정리하기. (복습)


[오늘 공부한 부분] 

  • JAVA chap13 컬렉션
  • 클론 프로젝트 기본 CRUD 구현 완료, S3 부분 공부

[30] JAVA 컬렉션 프레임워크

 

[30] JAVA 컬렉션 프레임워크

컬렉션 프레임워크(Collection Framework) :자료구조를 사용해서 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 인터페이스와 구현 클래스를 java.util 패키지에서 제공하는 것 컬렉션 : 객체의 저

leejincha.tistory.com

[31] JAVA LIFO와 FIFO 컬렉션

 

[31] JAVA LIFO와 FIFO 컬렉션

후입선출(LIFO : Last In First Out) : 나중에 넣은 객체가 먼저 빠져나가는 자료구조 선입선출(FIFO : First In First Out) : 먼저 넣은 객체가 먼저 빠져나가는 자료구조 컬렉션 프레임워크에는 LIFO(리포) 자

leejincha.tistory.com

[01] WebSecurityConfig

 

[01] WebSecurityConfig

※ Config 파일 : 스프링 시큐리티 인증/ 인가를 다루는 파일 import 부분 @EnableGlobalMethodSecurity Use EnableMethodSecurity instead. Enables Spring Security global method security similar to the xml support. More advanced configuration

leejincha.tistory.com

[02] Airbnb Clone Coding (Main CRUD)

 

[02] Airbnb Clone Coding (Main CRUD)

전체 코드 중 주요 기능으로 잡은 에어비엔비 Room CRUD 부분을 정리해보려 한다. + 추가기능 ( 페이징 처리, 검색어 입력, S3, 게시글 좋아요, 비회원처리 ) Dto, Entity 등은 제외하고 Controlle / Repository

leejincha.tistory.com

 

 

 

 

1. 어려웠던 부분 : 클론코딩주차가 시작되었다. 현재 프론트엔드분들의 수가 부족해서 일주일 만에 두 명이 감당할 수 있는 스코프를 잡아야 했다. 기획회의를 통해 카톡과 슬랙과 같은 웹소켓을 이용한 채팅으로 갈 것인지 아니면 오늘의 집이나 에어비엔비, 마켓컬리와 같은 이커머스 서비스로 갈 것인지 고민을 하는데 시간이 좀 걸렸다. 프론트엔드분들의 UI 작업 수고를 덜어드리기 위해선 채팅서비스가 좋지만, 그걸 선택하기엔 백엔드에서 시도할 부분이 너무 없어서 결국 에어비엔비로 클론코딩을 진행하기로 했다.

 

2. 느낀 점 : 확실히 지난주에 머리가 깨져보니 이번주는 지난주보다 훨씬 수월하게 진행이 되는 느낌이다. 지난주의 실수를 반복하지 않기 위해 백엔드에서 먼저 API 명세 기본을 작성하고 다시 한번 프론트엔드 분들과 같이 API 명세를 수정하는 과정을 진행했다. 백엔드팀에선 서로 각자 맡은 부분을 테스트하기 편하게 로그인/회원가입 그리고 시큐리티 부분, 예외처리와 같이 전역적으로 사용되는 부분은 기본 세팅작업을 같이 진행했다. 역시 실수하고 깨져보는 경험이 중요한 것 같다.

 

3. 새로 알게 된 내용 : 클론코딩을 위해 다양한 사이트들을 구경하면서 예전에는 보이지 않던 세세한 부분들이 보이기 시작했다. 예를 들면, 에어비엔비 같은 경우 로그인/회원가입 모달창이 따로 분리되지 않고 로그인 또는 회원가입으로 하나로 진행된다. 그리고 지도를 클릭했을 때 내 주변 숙소 정보가 뜨는데 도대체 어떻게 구현하는 걸까.... 예전엔 생각 없이 편하게 이용하던 서비스들이 알고 보니 복잡하고 견고한 설계로 만들어져 있다. 과연 나도 이런 아키텍처를 고안할 수 있는 날이 올까?

 

4. 셀프칭찬 (오늘 잘한 일) : 오늘 각자 맡을 부분을 나누는데, 사실 마음 같아선 새로운 기능에 도전하고 싶지만 다들 마음이 그러하고 누군가는 지금까지 해왔던 기본 CRUD 작업을 맡아야 했다. 내가 기본 CRUD를 맡게 되었는데, 최대한 빨리 작업을 마치고 새로운 기능을 시도해 보려 한다. 배우려고 하는 나의 자세 칭찬해  ~_~ 

 

5. 내일 할 일 : 내가 맡은 부분 끝내기 + S3 공부하고 맡은 부분 (S3적용 후 글수정) 마무리


[오늘 공부한 부분] 

  • 스타트업 올웨이즈 세션
  • 클론프로젝트 기획 (ERD, API명세 작성, 기능 나누기)

 

 

 

 

 

1. 어려웠던 부분 : 오늘도 9시 반 발표 이전에 어제 끝내지 못한 부분을 프론트엔드와 마지막으로 맞춰보는 하루 였다. 오늘은 매니저님들이 안계셔서 우리끼리 오류를 해결해야 했는데, 자바스크립트는 잘 몰라서 백엔드3명도 프론트엔드에 붙어서 계속해서 에러를 구글링 해가면서 해쳐나갔다. 그래도 팀원 한분이 경력자 분이라 우리끼리 어찌 저찌 해결을 해나갔던 것 같다. 

 

2. 느낀 점 : 이번 프로젝트, 동영상도 찍어서 제출해야 했는데 프론트엔드에 팀원분들이 하차하시는 바람에 사실 기대도 안하고 있었다. 그런데 매니저님들의 도움으로 완벽하진 않지만 그래도 프론트엔드와 협업하는 경험도 해보고, html도 만들어 주셔서 동영상도 제출할 수 있었다. 정말 힘든 한 주 였지만, 코딩을 넘어서 같은 팀원들과 매니저님들 덕분에 태도에 대해 많이 배우고 더 많은게 남는 한 주가 아니었을까 생각된다.

 

3. 새로 알게 된 내용 : 회고 발표를 통해 서비스 packaging을 어떻게 하는게 더 좋을지 생각해 보게 되었고, return 타입 또한 SuccessCode, ErrorCode가 꼭 분리되어야 하는지, 어떻게 통일하면 좋을지 생각해 보게 되었다. 또한 서비스단에서 if- else를 사용한다면 else 부분에 throws 로 던지는 예외처리를 해야하는게 맞는지, 이 부분을 try-catch로 바꾸면 어떨지 등의 피드백을 받았다. 윗 세 부분을 공부해봐야 겠다.

 

4. 셀프칭찬 (오늘 잘한 일) : 잘 버텼다 !  회고 발표 끝나고 너무 지쳐서 바로 자고 싶었지만, 자정에 취업스터디 팀원들과 이력서 작성하는 법에 대해 공부하고, 채용사이트도 훑어보는 시간까지 마친 후에 하루를 마무리 했다. 자신감이 많이 떨어져 있었는데, 같은 팀원분이 몇몇 사람들과 우리반에서 나중에 잘 될 것 같은사람 3명을 뽑아봤는데, 그 중에 내가 있었다는 얘기를 해주셔서 정말 큰 위안이 되었다. 그 말이 현실이 되도록, 진짜 잘 버티고 열심히 해야겠다.

 

5. 내일 할 일 : 클로프로젝트 시작, 기획 및 초기 작업(작업분배, ERD, API명세 작업 하기)


[오늘 공부한 부분] 

  • 프론트엔드분 도와서 에러처리하기
  • 다른 조들의 발표를 통해 공통적으로 API명세에 대한 소통이 얼마나 중요한지 알 수 있었다.
  • 혼공자 chap 12-2 스레드 부분 공부 

[28] JAVA 멀티스레드

 

[28] JAVA 멀티스레드

[기본 개념] 프로세스(process) : 애플리케이션을 실행하면 운영체제로부터 실행에 필요한 메모리를 할당받아 애플리케이션을 실행하는 것 스레드(thread) : 프로세스 내부에서 코드의 실행 흐름을

leejincha.tistory.com

[29] JAVA 스레드 제어

 

[29] JAVA 스레드 제어

스레드를 생성하고 시작하면 스레드는 다양한 상태를 가지게 된다. 스레드의 상태는 자동으로 변경될 수도 있고, 코드에 의해서 변경될 수도 있다. 스레드 객체를 생성하고 start() 메소드를 호출

leejincha.tistory.com

 

한 명 가둬놓고 찔러버리는 중

 

 

 

1. 어려웠던 부분 : 오늘 처음으로 프론트엔드와 백엔드 코드를 합쳐보는 작업을 진행했다. 모든 팀이 겪는 CORS오류가 우리에게도 발생했지만, 사실 항해99 세션에서 제공한 코드를 config파일에 붙여주니 바로 해결이 되어서 그 부분은 좀 수월하게 넘어갔다. 그러나 진정한 문제는, API 명세서대로 작업을 진행하지 않아 키와 밸류값을 전체적으로 수정해야하는 작업을 해야했다. 다음엔 프론트엔드 분들과 더 이부분을 유의해야겠다고 생각했다. 또, 백엔드 쪽에서도 만약 API 수정이 있다면 바로바로 업데이트를 전달해야겠다고 생각했다.

 

* 아래는 CORS를 위한 config 파일 내 코드

 

2. 느낀 점 : 백엔드끼리의 소통도 중요하지만 프론트엔드와도 꾸준히 소통해야하는 것이 얼마나 중요한지 느낀 하루였다. 

 

3. 새로 알게 된 내용 : 지금까지는 Json 형식으로만 데이터를 주고받았기 때문에 형식을 정해줘야 하는지 몰랐는데, S3 기능을 추가하게 되면서 formdata 형식이 추가되었다. 이 부분을 API명세서에도 명시해 줬어야 했다. 계속해서 매니저님들한테 받는 피드백이지만, 진짜 Restful 한 API 작성은 무엇인지 계속해서 공부하고 반영해야 겠다.

 

4. 셀프칭찬 (오늘 잘한 일) : 프론트엔드 매니저님들의 도움을 받아 하루종일 프론트엔드와 맞춰보면서 에러가 터지는 족족 수정하는 작업을 했다. 아직 많이 부족하지만, 같은 백엔드 팀원들 덕분에 옆에서 많이 배웠던 하루였다. 부족하지만 그래도 팀원들에게  도움이 되려고 노력하고 있는 나, 멘탈을 잘 부여잡고 있는 나를 칭찬.

 

5. 내일 할 일 : 미니프로젝트 마무리 (트러블 슈팅 정리, 회고 발표준비), 오늘 끝내지 못한 부분 프론트엔드랑 맞춰보기


[오늘 공부한 부분] 

  • CORS를 경험하고 해결
  • 프론트엔드와 어떻게 소통하면서 오류를 해결해야 하는지 배움 !
  • [31] CORS
 

[31] CORS

CORS는 무엇인가요? 브라우저에서는 보안적인 이유로 cross-origin HTTP 요청들을 제한합니다. 그래서 cross-origin 요청을 하려면 서버의 동의가 필요합니다. 만약 서버가 동의한다면 브라우저에서는 요

leejincha.tistory.com

 

2022.12.20

 

1. 어려웠던 부분 : 오늘 같은 팀에서 유일하게 프론트엔드를 다룰 줄 아셔서 혼자 캐리하고 계시던 팀원분이 하차하셨다. 팀 발제되고나서 다른 팀원분들이 우리팀 폭파될거라고 했던 지난 금요일. 그 얘기 들었을 때 너무 화가 났는데 진짜 현실이 되어버렸다. 하차하시는 분과 몇시간 얘기를 나눴다. 미리 이렇게 얘기를 나누고 들어드렸더라면 하차를 막을 수 있었으려나 하는 후회가 몰려왔다. 그분의 이야기를 들어보니 부담감도 있으시고 일단 항해99 운영에 대한 불만이 이미 많으신 상태에 이런 저러한 이유로 이미 더이상 그분의 의사를 막을 수 없는 상황이었다. 항해99 우리반 41명으로 시작했는데 이제 남은 인원은 24명이다. 여기서 프로젝트 4번을 할 수 있다고 했는데, 이미 두 번을 날려버렸다. 쉽지가 않다 정말. 오늘은 에러 천국인 S3 보다 상황이 너무 어려운 하루 ㅜ _ ㅜ

 

2. 느낀 점 : 프론트엔드와 백엔드의 협업이 진짜 어렵고 중요하다. 많은 조들이 프론트쪽에서 API 명세서에 대한 개념을 배우지 않으셔서 키값을 명세서와 다르게 설정하시고 구현하시는 바람에 고생하시는 걸 봤다. 이 부분을 기획할 때 좀 더 설명을 드렸으면 좋았을  것 같다는 생각을 했다.

 

3. 새로 알게 된 내용 : 오늘 추가된 기능인 S3를 이용해 CRD (작성, 조회, 삭제) 구현을 마치고, 새로 추가된 기능에 관련된 코드리뷰를 진행했다. S3를 이용해 조회기능을 구현할 때는, ResponseDto 에 키값을 담아서 반환을 해주면 된다. 

 

4. 셀프칭찬 (오늘 잘한 일) : 혼자 남으신 프론트엔드 00님을 돕고싶어서, 리액트는 잘 모르지만 에러가 나올때마다 구글링을 하면서 어떻게라도 도와드리려고 했다. 잘하고 못하고를 떠나 열심히 해주시는 분인데 처음에 00님을 의심한 나를 반성하게 됐다. 당연히 코딩이 처음인 사람은 못하는게 당연하고 느린게 당연한데, 00님 뿐만 아니라 나에게도 너무 높은 잣대를 세웠던게 아닌가하는 생각을 하면서, 오늘은 이제라도 반성하는 나를 칭찬해야지 ~_~

 

5. 내일 할 일 : AWS 서버베포 해보기, 밀린 자바 공부 (스레드/콜렉션), 코드리뷰


[오늘 공부한 부분] 

 

[02] S3로 이미지 업로드 / 조회 / 삭제 구현하기

사전 세팅 먼저 AWS에서 S3 버킷을 만들고 IAM에서 사용자를 만들어 access key와 secret ket를 발급받는 작업이 필요하다. 참고 링크 : https://jojoldu.tistory.com/300 SpringBoot & AWS S3 연동하기 안녕하세요? 이번

leejincha.tistory.com

 

+ Recent posts