전체 글

https://github.com/Layton0-0
Spring/Trouble Shooting

Cannot set error status - response is already committed 오류

진짜 구성을 완벽하게 했다고 생각했는데 갑자기 사라지지 않는 에러가 생겼다. Cannot set error status - response is already committed 이 에러다. 아직도 공부할 것들이 한참 많은 것 같다. 본론부터 말하자면 저 에러는 Entity에서 나오는 문제이다. Spring Data JPA를 사용했을 때 등장한 문제이다. 순환 참조라는 원인인데 예를 들어 Review 엔티티가 있고 Photo 엔티티가 있다고 치자. Review의 PK를 Photo가 FK로 가지고 있는 상태이다. 무엇이 문제인지 알겠는가? Response를 하게 되면 JSON 형태로 매핑하기 위해 모든 엔티티를 불러오는데 이 때 Photo는 Review를 참조하고 Review는 Photo를 참조한다. 그렇게..

Computer Science/Network

HTTP(HyperText Transfer Protocol) 기본

HTTP의 역사 HTTP/0.9 1991년: GET 메서드만 지원, HTTP 헤더 X HTTP/1.0 1996년: 메서드, 헤더 추가 - 한 연결 당 하나의 요청을 처리하도록 설계 - RTT 증가: 패킷 왕복 시간 증가(3-way handshake를 매번 열어줘야 했기 때문) - 해결 방법 1: 이미지 스플리팅 -> 많은 이미지가 합쳐 있는 하나의 이미지를 다운로드 받고 이를 기반으로 background-image의 position을 이용하여 이미지를 표기하는 방법 - 해결 방법 2: 코드 압축 -> 기존 작성되어 있는 코드에서 style.min.css 처럼 공백이나 ;를 전부 없앤 코드(용량 저하) - 해결 방법 3: 이미지 Base64 인코딩 -> 이미지 파일을 64진법으로 이루어진 문자열로 인코딩하..

Computer Science/Network

www.naver.com이 나타나는 과정

1. https://www.naver.com:443 -> 요청이 된다 -> HTTP 요청 메시지를 생성한다. 2. 클라이언트에서 HTTP 메시지를 전송한다. -> 웹 브라우저가 HTTP 메시지를 생성하고 -> SOCKET 라이브러리를 통해 전달(TCP/IP 연결) -> TCP/IP 패킷 생성(HTTP 메시지 포함) -> LAN 드라이버와 장비를 통해 서버로 전송 3. 서버가 요청(request)패킷을 받고 응답(response) 메시지를 전송한다. 4. 응답 패킷이 도착하면 웹 브라우저가 HTML을 렌더링 한다.

Computer Science/Network

URI(Uniform Resource Identifier)

URI란? Uniform: 리소스를 식별하는 통일된 방식 Resource: 자원, URI로 식별할 수 있는 모든 것(제한 없음. html이나 사진 등 모든 것) Identifier: 다른 항목과 구분하는데 필요한 정보 URL: Uniform Resource Locator - Locator: 리소스가 있는 위치를 특정. 홍길동이 사는 아파트에 가면 홍길동이 있다. URN: Uniform Resource Name - Name: 리소스에 이름을 부여. 홍길동. 위치는 변할 수 있지만, 이름은 변하지 않는다. URN 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화되어 있지 않다. (== 잘 쓰지 않는다) 상용: URI == URL URI의 문법 scheme scheme://[userinfo@]host[:p..

Computer Science/Network

인터넷 네트워크(IP, TCP/UDP, PORT, DNS)

IP(Internet Protocol) - IP Address: 각 컴퓨터가 가지고 있는 고유한 주소 - 지정한 IP주소에 데이터를 전달하는 역할 - 패킷이라는 통신 단위로 데이터를 전달하는 역할 - 패킷(Packet): 전송 데이터를 출발지 IP, 목적지 IP, 기타...로 감싼 데이터의 형식화된 블록, 컴퓨터 네트워크에서 데이터를 주고받을 때 정해놓은 규칙. 데이터 조각. IP 프로토콜의 한계 비연결성 - 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 비신뢰성 - 중간에 패킷이 사라질 수도 있다 - 패킷이 순서대로 도착하지 않을 수도 있다 프로그램 구분 - 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상일 경우도 있다 TCP(Transmission Control Protoc..

Spring/Trouble Shooting

[NoSuchBeanDefinitionException] expected at least 1 bean which qualifies as autowire candidate

역시 실전은 쉽지 않다. 또 초면인 에러문구를 만났다. 직독직해하면 그런 BeanDefinition은 없어. 라는 말이다. Autowired를 연결해 줄 짝꿍을 못 찾은 것이다. 당연히 이유는 무엇일까. 짝꿍한테 이름표를 안줬다. 오랜만에 프로젝트를 만들다보니 이론에서 배운 인터페이스와 구현체의 분리에만 집중하고 있었다. @Repository를 붙여주는 것을 까먹은 것이다... 레포지토리에게 오토와이어할 친구와 연결될 수 있게 이름표를 붙여주면 해결된다.

Spring/Trouble Shooting

[SQL] ; expected "identifier" 오류

Spring Data Jpa로 엔티티를 이용한 테이블을 만드는 과정 중 마주친 오류이다. 다른 엔티티(Review, Place)는 멀쩡한데 왜 User테이블만 말썽인지 이해가 안갔다. 찾아보니 User라는 이름의 예약어가 SQL에 있나보다. @Table(name="user_table") 이렇게 설정해주니 문제가 해결됐다.

Computer Science/Design Pattern

이터레이터 패턴(Iterator Pattern)

이터레이터 패턴이란? - 데이터의 형식에 상관 없이 동일한 방법으로 데이터를 하나씩 조회해볼 수 있는 패턴 - 배열을 하나씩 꺼내보는 방법과 Map을 하나씩 꺼내보는 방식은 다름. - 집합체 클래스를 배열처럼 순차적으로 조회해볼 수 있다. @Getter @Setter public class Student { private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } } - 학생 클래스 public interface Aggregate { Iterator createIterator(); } - Iterator 역할을 만들어내는 인터페이스를 결정 public class..

레이튼
개발 공부 스케치북