본문 바로가기

전체 글

이노베이션 캠프 13주차 1. 이번 주 한일 최종 발표 고객 피드백을 통한 MVP 개선 github README 작성 2. 느낀 점 6주 동안의 최종 프로젝트가 막을 내렸다. 최종 발표가 끝난 후 엄청 기쁠지 알았지만 예상외로 기쁜 마음도 컸지만 공허한 마음도 컸던 거 같다. 아마도 프로젝트가 끝이 아니라 취직이라는 큰 관문이 남아 있어서 그런 거 같다. 다음 주부터는 이력서 준비 및 기술면접 준비를 하는 주차이다. 이제까지 한 프로젝트를 바탕으로 나를 자랑하는 이력서를 적음으로써 회사들에게 어필해야 할 것이다. 내가 원하는 회사에 들어가 이 때까지의 노력이 빛나는 주차가 되었으면 좋겠다. 향 후 계획 이력서 준비 코딩 테스트 준비 기술면접 준비 더보기
N+1 문제 해결 @Entity @Getter @NoArgsConstructor @AllArgsConstructor public class Request extends Timestamped { @GeneratedValue(strategy = GenerationType.IDENTITY) @Id @Column(name = "REQUEST_ID") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "POST_ID") private Post post; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "USER_ID") private User user; @Enumerated(value = EnumType.S.. 더보기
이노베이션 캠프 12주차 1. 이번 주 한 일 mockito를 이용한 unittest 알파테스트를 통한 MVP개선 서브도메인 연결 2. 향 후 계획 성능 개선 고객 피드백을 통한 MVP 개선 최종 발표 준비 더보기
이노베이션 캠프 11주차 1.nginx 배포전 https 설정 및 처리속도를 향상하기 위해 nginx을 사용하였다. nginx는 apache와 다르게 비동기적으로 작동하기 때문에 처리속도가 향상된다. 또, apache는 한명의 클라이언트 당 쓰레드 하나가 처리하므로 사용자가 많아지면 시스템의 자원낭비가 매우 심해진다는 단점이 있지만 nginx는 비동기 방식이므로 더적은 리소스로 요청을 처리가능하다. 2.향후 계획 배포전 단위테스트,통합테스트,인수테스트 리팩토링 및 쿼리성능향상 참고자료:https://www.lesstif.com/system-admin/dns-txt-record-let-s-encrypt-ssl-59343172.html DNS TXT Record 로 Let's Encrypt SSL 인증서 발급 받기 www.lesst.. 더보기
이노베이션 캠프 8,9,10주차 1. 서비스 설명 마지막 프로젝트인 실전 프로젝트가 시작되었다. 우리 조는 위치기반 스포츠 매칭 서비스인 match-gi를 기획했다. 카카오 맵을 활용 하여 현재 위치 근처에 있는 매칭들을 찾을 수 있어 편리함을 제공해주었다. 그리고 다른 스포츠 매칭 서비스와 달리 경기가 끝난 후 경기 결과를 기록할 수 있어 매칭을 할 때 더욱 다양한 정보를 제공해주고 매칭 하기로 약속한 사람들끼리 실시긴 채팅을 함으로써 더욱 구체적인 계획을 세울 수 있게 해 주었다. 2. 새로운 기술 실시간 채팅을 구현하기 위해 websocket과 stomp의 pub/sub기능을 활용하였다. 그리고 채팅을 하면 DB에 부하가 많이 일어나므로 채팅 내역들을 redis에 저장하였다가 채팅을 보여주는 api가 호출될 때 redis에서 db.. 더보기
이노베이션 캠프 7주차 WIL 1. 클론 코딩 주차 미니 프로젝트가 끝나고 프론트엔드분들과 협업하는 2주차인 클론코딩주차가 시작 되었다. 우리 조는 숨겨진 고수들을 찾는 사이트인 숨고사이트를 클론 코딩을 했다. 숨고사이트에 여러가지 기능이 있었지만 커뮤니티를 중심으로 클론코딩을 하기로 결정 했다. 숨고사이트를 클론코딩하면서 커서 페이지네이션,JPQL,LOMBOK builder에 대해 공부해보는 시간을 가질 수 있었고 키워드와 태그에 대해서 검색하는 기능도 구현해보면서 검색 api를 어떻게 JPQL로 구현하는지 알게 되었다. 그리고 저번주에 사용하지 않았던 좋아요와 북마크 기능등 미니프로젝트 때 사용하지 않았던 api들도 많이 사용하였다. 이번 주 금요일에 실전 프로젝트가 시작되었는데 query dsl, socket.io 등 여러 가지.. 더보기
이노베이션 캠프 6주차 WIL 미니 프로젝트 + 클론 코딩 주차 미니 프로젝트를 시작으로 프런트엔드분들과 함께 처음으로 협업을 같이 했다. 로그인을 구현할 때 주특기 주차 때 배운 jwt를 이용하여 구현하려고 했지만 실패하여 세션을 이용한 로그인으로 진행하였다. 그리고 공동으로 같이 한다는 주제에 맞게 인원이나 마감기한이 존재하여 인원이 꽉 찼거나 마감기한이 지난 포스트들을 후 순위로 하기 위해 조원 분이 알려주신 query dsl를 사용하여 우선순위에 맞게 정렬하여 페이지 네이션으로 처리하였다. 그 후 프런트분들이 만든 클라이언트를 배포하였을 때 로컬에서는 잘 넘어오던 세션이 넘어오지 않았다. 검색해본 결과 samesite문제라는 것을 알아 여러 가지 방법을 찾았지만 결국 해결하지 못해 마감 하루 전 jwt로그인으로 바꾸었다. 우여.. 더보기
이노베이션 캠프 5주차 WIL 1.CORS(Cross-Origin Resource Sharing) http헤더를 이용해서 A에서 실행 중인 웹 애플리케이션이 다른 B의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에게 알려주는 체제이다. 브라우저간의 서버간의 안전한 교차 출처 및 데이터 전송을 지원한다 리소스가 자신의 출처(도메인,프로토콜,포트)가 다를 때 교차 출처 http요청을 실행한다 다른 출처의 리소르를 가져오기 위해서는 그 출처의 리소스 공유에 대한 헤더(CORS)를 응답 시 반환해주어야 한다. 동작원리 (1) 웹이 다른 출처의 리소스를 요청할 때 HTTP 프로토콜을 사용해 요청한다. 이때 브라우저는 요청 헤더(request header)에 Origin 피들에 요청을 보내는 출처를 담아 전송한다. (2) 서버는 요.. 더보기