전체 글 142

[에러] 409 에러

409 에러가 났다. 처음보는 에러였다. 회원가입 성공 & 실패 테스트를 통과 후 로그인 성공 & 실패 테스트 코드를 작성하는 과정에서 마주한 에러다. [Test 코드] @Test @DisplayName("로그인 실패 - userName 없음") @WithMockUser void login_fail1() throws Exception { String userName = "Kim"; String password = "1qwefa32"; when(userService.login(any(), any())) .thenThrow(new AppException(ErrorCode.USERNAME_NOT_FOUND, "")); mockMvc.perform(post("/api/v1/users/login") .with(c..

에러 2023.01.18

[Network] HTTP의 GET과 POST 비교

둘 다 HTTP 프로토콜을 이용해서 서버에 무엇인가를 요청할 때 사용하는 방식이다. 사용자가 어떤 홈페이지로 이동하기 위해 URL을 브라우저 주소창에 작성하고, 엔터를 누르면 페이지로 이동한다. 사용자는 단순히 URL(Uniform Resource Locator)를 입력하였을 뿐이지만, 서버 내부에서는 클라이언트의 요청에 응답하기 위해서 처리를 해주어야 한다. 여기서 클라이언트가 서버로 요청을 보내는 방법인 HTTP Method에는 크게 2가지 방식이 있는데, 그것이 GET 방식과 POST 방식이다. HTTP Method와 각각이 사용되는 경우 종류 기능 GET 데이터 조회 POST 요청 데이터 처리(보통 데이터 등록 사용) PUT 데이터 변경 (해당 데이터가 없으면 생성) PATCH 일부 데이터만 변경..

CS/Network 2023.01.18

[에러] cannot construct instance of `...` & resolved [java.lang.nullpointerexception]

회원가입 테스트를 하다 마주한 에러이다. userName과 password를 보내는 api 호출 테스트를 했지만, 에러가 났다. 첫 번째 에러는 cannot construct instance of `내 패키지 이름` 어쩌구 였다. Resolved [org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class com.join.joinerror.domain.dto.UserJoinRequest]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct i..

에러 2023.01.17

[에러] 회원 가입 & 로그인 에러 처리에 대한 고찰

회원가입과 로그인 시 발생할 수 있는 에러에는 무엇이 있을까? 대표적으로 중복 회원 가입 회원 가입 후 로그인 불일치 등이 있을 수 있겠다. 내가 공부하려 적는 포스팅이다. 다소 충분치 않은 코드들일 수 있다. ++ 에러를 처리하는 방법은 정말 많다. 정답이 없다. (해도해도 끝이 없는 코딩의 세계...) [MemberFormDto.java] import lombok.Getter; import lombok.Setter; import org.hibernate.validator.constraints.Length; import javax.validation.constraints.Email; import javax.validation.constraints.NotBlank; import javax.validati..

에러 2023.01.17

[Network] HTTP & HTTPS

※ 스트림 (stream) : 시간이 지남에 따라 사용할 수 있게 되는 일련의 데이터 요소를 가리키는 데이터 흐름 ※ 개인키 : 비밀키라고도 하며, 개인이 소유하고 있는 키이자 반드시 자신만이 소유해야 하는 키 ※ 공개키 : 공개되어 있는 키 ※ 해시 : 다양한 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑(mapping)한 값 ※ 해싱 : 임의의 데이터를 해시로 바꿔주는 일이며, 해시 함수가 이를 담당 ※ 해시 함수 : 임의의 데이터를 입력으로 받아 일정한 길의의 데이터로 바꿔주는 함수 HTTP 프로토콜이란? HTTP(Hyper Text Transfer Protocol)이란, 데이터를 주고받기 위한 프로토콜이며 서버/클라이언트 모델을 따른다. HTTP는 상태 정보를 저장하지 않는 Statele..

CS/Network 2023.01.17

[Network] 네트워크 기기 & IP 주소

네트워크는 여러 개의 네트워크 기기를 기반으로 구축된다. 네트워크 기기의 처리 범위 네트워크 기기는 계층별로 처리 범위를 나눌 수 있다. 물리 계층을 처리할 수 있는 기기와 데이터 링크 계층을 처리할 수 있는 기기 등이 있다. 그리고 상위 계층을 처리하는 기기는 하위 계층을 처리할 수 있지만, 그 반대는 불가하다. 예를 들어, L7 스위치는 애플리케이션 계층을 처리하는 기기로 그 밑의 모든 계층의 프로토콜을 처리할 수 있다. 하지만 AP는 물리 계층 밖에 처리하지 못한다. 애플리케이션 계층 : L7 스위치 인터넷 계층 : 라우터, L3 스위치 데이터 링크 계층 : L2 스위치, 브리지 물리 계층 : NIC, 리피터, AP 애플리케이션 계층을 처리하는 기기 애플리케이션 계층을 처리하는 기기로는 L7 스위치..

CS/Network 2023.01.16

[Network] 네트워크의 기초 & TCP/IP 4계층 모델

네트워크란? 노드(node)와 링크(link)가 서로 연결되어 있거나 연결되어 있으며 리소스를 공유하는 집합을 의미 ※ 참고 노드 : 서버, 라우터, 스위치 증 네트워크 장치를 의미 링크 : 유선 또는 무선을 의미 좋은 네트워크란? 많은 처리량을 처리할 수 있으며, 지연 시간이 짧고 장애 빈도가 적으며 좋은 보안을 갖춘 네트워크 - 처리량 (throughput) : 링크 내에서 성공적으로 전달된 데이터의 양을 의미. 보통 얼만큼의 트래픽을 처리했는지를 나타낸다. '많은 트래핑을 처리한다 = 많은 처리량을 가진다' (단위 : bps(bits per second, 초당 전송 또는 수신되는 비트 수) - 트래픽 : 특정 시점에 링크 내에 '흐르는' 데이터의 양을 의미. 예를 들어, 서버에 저장된 파일을 클라이..

CS/Network 2023.01.16

[Network] TCP와 UDP

✔️ 들어가기 전 요약 [1줄 요약] TCP와 UDP는 OSI 7 계층 중 전송 계층에서 사용되는 프로토콜이다. ※ 전송 계층은 송신자와 수신자를 연결하는 통신서비스르 제공하는 계층이다. 즉, 데이터의 전달을 담당하며, 전달되는 패킷의 오류를 검사하고 재전송 요구 등의 제어를 담당한다. TCP와 UDP는 각각 가상회선 방식과 데이터그램 방식이라는 점에서 차이를 가지며, 신뢰성과 연속성 두 측면에서 상충관계에 있다. 💡 TCP와 UDP의 차이 - TCP는 연결형 서비스로 3-way handshaking 과정을 통해 연결을 설정하기 때문에 높은 신뢰성을 보장하지만, 속도가 비교적 느리다는 단점이 있다. - UDP는 비연결형 서비스로 3-way handshaking을 사용하지 않기 때문에 신뢰성이 떨어지는 단..

CS/Network 2023.01.15

[Network] TCP의 3-way-handshake와 4-way-handshake

💡 연결을 성립하고 해제하는 과정을 말한다. 3 way-handshake란? : 연결을 설정하는 과정 TCP 네트워크에서 통신하는 장치가 서로 연결이 잘 되었는지 확인하는 방법 (연결 성립) 송신자와 수신자는 총 3번에 걸쳐 데이터를 주고 받으며, 통신이 가능한 상태인지 확인한다. TCP는 정확한 전송을 보장해야 한다. 따라서 TCP/IP프로토콜을 이용해 통신하기에 앞서, 논리적인 접속을 성립하기 위해 3 way handshake 과정을 진행한다. Client → Server : TCP SYN Server → Client : TCP SYN + ACK Clinet → Server : TCP ACK ※ 참고 - SYN : Synchronize Sequence Numbers - ACK : Acknowledgm..

CS/Network 2023.01.15

[생각들] 테스트 코드 작성의 어려움

멀티캠퍼스에서 국비지원 교육을 받을 땐 테스트코드의 존재 자체를 몰랐었다. 하지만 국비 교육 수료 후 본격적인 취업준비를 하면서 알게 되었다. 정확하게는 우테코 프리코스 덕분에. (우테코 프리코스가 여러모로 많은 것을 알려주었다. 대표적으로 IntelliJ와 TestCode 작성법, git commit 단위, 객체지향 설계 등) 국비 교육을 받을 땐 View Page가 정말 중요했다. 예를 들어 DB에 회원정보가 잘 들어가는지, 만약 잘 들어갔다면 DB에 있는 정보들을 잘 불러오는지... 이런 것들이 눈에 보이게 확인해야 하기 때문이었다. view 페이지가 없다면, 내가 코드를 맞게 작성했는지 확인할 길이 없었다. 그래서 매번 Test View Page를 만들어 확인했었다. 하지만 김영한 개발자님의 를 ..

생각들 2023.01.15