전체 글

개발 1도 모르는 욱이의 개발일기
· 개발노트
HTTP는 상태를 저장하지 않는 프로토콜이기 때문에 클라이언트가 누구인지 매번 확인해야하는 특성이 있습니다.쿠키와 세션은 이를 보완하기 위해 사용되는데, 이 두가지의 특징이 뭔지 정확히 짚고 넘어가야 다음번에 봤을 때  헷갈리지 않으니 정리해보고 갑자기 나온 캐시라는 단어까지 이해해봅시다.  1. 쿠키(Cookie)정의 : 웹 서버에서 클라이언트의 웹 브라우저에 저장되는 작은 데이터 조각으로, 주로 이름-값 쌍의 형태를 가지며, 클라이언트와 서버 간의 상호 작용을 추적하고 사용자 상태를 유지하는 데 사용됨.특징 :클라이언트 측에 저장됨.사용자 상태 정보 유지하기 위해 사용됨.클라이언트가 서버에 요청을 보낼 때, 해당 서버와 관련된 쿠키는 자동으로 요청에 포함되어 전송됨.쿠키는 만료 날짜를 가질 수 있으며..
· 개발노트
이전 내배캠 과정중에 진행했던 프로젝트나 개인과제때는 테스트코드를 작성하지 않고 제출했었는데 이번에는 최종 프로젝트여서 모두가 필수로 작성해서 완료하자 라는 회의내용이 있어서 테스트코드를 작성하는 법을 새로 배웠습니다. 테스트코드는 말 그대로 우리가 구현한 기능들이 정상적으로 작동하는지 실험하기 위해 작성하는 코드입니다. 형식은 [given / when / then] 이 3가지 구성으로 이루어져 있고, 테스트에 필요한 가상의 객체나 함수인 Mock 을 생성해 준 뒤 //given 에서 그 값을 생성해줍니다. //when 에서 테스트할 메서드를 실제로 동작시키는 메서드를 구현하고 //then 에서 예상한 결과값이 실제 값이랑 맞게 출력됐는지 확인해주는 메서드를 입력하는 과정을 통해 테스트코드를 작성합니다...
· 개발노트
주말에 네이버 소셜로그인을 완성했습니다. 카카오때와 마찬가지로 네이버에서 제공하는 네이버 디벨로퍼스를 들어간 뒤 내 애플리케이션을 생성해주고, 만들고 있는 프로젝트에 앱 키 를 입력해서 연동시켜줍니다. 그 후 JS와 html파일을 만들어서 기본 화면을 만들어주고 버튼에 url을 연결해주는 작업을 하면 됩니다. 카카오때와 다른점이 있다면, 카카오와 네이버에서 각각 요구하는 값이 다르기 때문에 각 사이트에 맞는 값을 입력해주는 작업이 필요합니다. 그리고 또 다른점이 있다면, 카카오는 개인이 애플리케이션을 개설할 수 있는데 네이버는 관리자의 승인이 나와야 소셜로그인 연동이 가능하다는 점입니다. 시간이 된다면 구글과 깃허브도 해보고싶다는 생각이 들었지만 지금 최종프로젝트 기간 중에는 그 시간은 없을 것 같기때문..
· 개발노트
팀 프로젝트에서 맡은 파트의 기능구현을 아직 완성하지 못해서 여러 사람의 도움을 받아 꾸역꾸역 완성했습니다. 원래 오늘 계획이 카카오, 네이버 소셜로그인 구현이었는데 너무 쉽게 생각하고 계획을 짰던 것 같습니다 ㅠㅠ 우선 카카오 소셜 로그인을 하기 위해서는 카카오 디벨로퍼스 라는 사이트에 들어가서 내 애플리케이션을 생성해주고, 만들고 있는 프로젝트에 앱 키 를 입력해서 연동시켜줍니다. 그 후 JS와 html파일을 만들어서 기본 화면을 만들어주고 버튼에 url을 연결해주는 작업을 하면 됩니다. (내부적으로 로직을 구현해서 카카오 서버에 등록된 회원정보를 보내주고 받아오는 API를 설정해서 정보를 받아오면 소셜로그인이 구현된다) 자세한 코드는 다른 코드를 참고했기 때문에 코드리뷰를 하면서 이해하는 시간을 좀..
최종 프로젝트인 만큼 기능구현이 된 코드들은 테스트코드를 작성해 보는게 좋을 것 같다는 팀원들의 의견이 있어서 공부를 해봤습니다. 이름 그대로 테스트코드는 우리가 작성한 코드들이 기능구현이 잘 됐는지 확인하기 위해 임의의 값을 넣어보고, 실제 출력값이랑 일치하는지 확인하는 작업이라고 할 수 있습니다. 사용 예시를 간단히 살펴보면, 아래와 같습니다. @Test @DisplayName("프로필 조회 테스트") void getProfileTest() { // given - 필요한 변수 생성 // when - 테스트할 메서드를 실제 동작 // then - 결과 제대로 나왔는지 확인 } 먼저 @Test 어노테이션을 달아주고, @DisplayName() 어노테이션으로 이 코드가 어떤 테스트를 진행하는 코드인지 명시..
· 개발노트
팀 프로젝트를 진행하면서 계속 사용하고있는 Builder와 Mapper에 대해 정리해보려고 합니다. [Builder] @Builder는 빌더 패턴을 자동으로 생성해주는 기능을 제공합니다. 우선 빌더 패턴이란? -> 객체를 생성할 때 매개변수가 많고 복잡한 경우 객체를 더 쉽게 생성하기 위한 디자인 패턴입니다. @Builder 어노테이션을 사용하면 해당 어노테이션이 붙은 클래스의 빌더를 자동으로 생성해줍니다. 이를 통해 코드를 더 간결하게 작성할 수 있으며, 가독성을 높이고 객체 생성 시 발생할 수 있는 실수를 줄일 수 있습니다. @Builder 어노테이션을 사용할 때 형식은 아래와 같습니다. 아래 코드를 예시로 확인해보죠! import lombok.Builder; import lombok.Getter; ..
· 개발노트
프로필 조회 API 테스트코드를 작성하는데 도저히 모르겠어서 일단은 빼두고 깃허브에 이슈등록 한 뒤 PR을 올려서 팀원들의 comment로 코드를 수정 한 뒤 develop 브랜치에 merge를 한 것이 오늘 한 작업입니다. 오전에 팀원들이 미리 PR올려둔 내용을 풀 받아서 제가 작업하던 브랜치에 리베이스 했는데 작성했던 내용들이 사라져서 당황하다가 커밋을 하지 않은 내용도 다시 찾을 수 있는 방법을 찾아서 그 과정을 설명해 볼까 합니다. **인텔리제이 기준으로 작성했습니다** 1. 매우 당황스럽겠지만 진정하고 왼쪽 보기 탭에 프로젝트(윈도우 기준 Alt+1)를 클릭 한다. 2. 프로젝트 패키지가 쭉 나올텐데 제일 상단의 프로젝트 이름이 적힌 파일을 우클릭한다. 3. 아래로 조금 내려보면 로컬 기록이 나..
· 개발노트
코드 컨벤션을 했음에도 불구하고 팀원과 협의한 코드를 사용하는게 익숙하지 않았던 저는 결국 이전에 알고있던 코드 방식을 사용해 프로필 조회 기능을 구현했고 다른 팀원분이 만들어두신 코드와 방식이 달라서 그 방식대로 수정하는 과정때문에 아직도 제가 아는것이 정말 적다는 것을 느낀 월요일이었습니다. 인터페이스로 분리하기(-Impl)도 새롭게 배웠고 사용하는 경우까지 배웠습니다. 먼저 인터페이스 분리하기를 사용하는 경우는 외부에서 요청을 할 경우 인터페이스로 분리하는게 맞고, 내부에서만 요청할 경우는 인터페이스를 사용하는 것이 [굳이..?] 라는 생각이 들 수 있다는 느낌으로 이해했습니다. 이번 저희 팀 프로젝트 코드 컨벤션중 하나가 서비스들을 -Impl로 분리해서 사용하기 였는데, 다른 팀의 담당튜터님과 면..
홍*욱
욱이네 개발일기