Methods 설명methods는 이벤트가 발생하거나 데이터를 바인딩할 때 유용하게 사용합니다.예를들어 위의 버튼을 누르고 Result에 값이 10이 증가하고 5가 마이너스 되는 특정 이벤트를 발생시키고 싶을 때(이벤트 바인딩, 데이터 바인딩)을 하고 싶을 때 사용할 수 있습니다. html과 vue 코드는 다음과 같습니다.Events in Action Add 10 Subtract 5 Result: {{ counter }}v-on:click는 뷰에서 제공하는 속성입니다. 이를 통해 버튼 id를 찾아서 속성을 가져오고 value를 찾아서 값을 삽입하는 자바스크립트의 번거로움을 줄여주죠. 메서드는 add(10), reduce(5) 각각 정의되어 있습니다.data(){ return {..
DataIntegrityViolationException란?DataIntegrityViolationException은 데이터 무결성 제약 조건을 위반했을 때 발생하는 에러다.나는 JPA에서 Board 엔티티와 Comment 엔티티를 다음과 같이 매핑했다. import jakarta.persistence.*;import lombok.Getter;import lombok.NoArgsConstructor;import lombok.Setter;import java.util.ArrayList;import java.util.List;@Entity@Getter@Setter@NoArgsConstructorpublic class Board { @Id @GeneratedValue(strategy = Generatio..
문제발생스프링부트와 JPA로 게시판을 구현하고 있었는데 Repositroty에서 예외가 발생했다. 보통 Repository에서 예외가 발생하면 Controller까지 Exception이 전달되어 내가 원하는 상태 메시지를 ResponseEntity로 반환해야한다. @PostMapping("/edit/{boardId}") public ResponseEntity boardEditUpdate(@PathVariable("boardId") Long boardId, @RequestBody BoarRequestDTO bDTO, Ht..
git merge main깃 브랜치 병합 명령어만약에 main이라는 메인 저장소가 있고 jwt 라는 브랜치가 있다고 가정하자.jwt에 수정된 내용을 main에 merge 하고 싶다. 먼저 현재 브랜치 위치를 확인한다.git branch 그리고 브랜치로 이동한다git checkout jwt 브랜치에서 변경사항을 병합한다.git merge main 만약에 충돌 파일이 있다면 수정한다.이후 커밋한다.git add .git commit -m "" 병합 결과를 확인한다.git log --oneline
TCP/IP 란?IP는 인터넷상에서 데이터를 전달하는데 사용되는 프로토콜입니다. 하지만 IP는 기본적인 기능만 제공하기 때문에 TCP 또는 UDP같은 프로토콜을 함께 사용해야합니다. IP는 데이터를 조각내고, 주소를 지정하고, 목적지로 보내는 역할을 수행할 수 있지만 데이터가 유실되거나 순서가 뒤죽박죽으로 섞여서 신뢰성을 보장하기 어렵습니다. TCP는 IP의 단점을 보완하기 때문에 같이 사용하게 되는데요. TCP는 데이터의 순서를 보장하고 체크섬을 활용해 오류까지 검증해줍니다.3-way handshakeTCP는 연결지향성이기 때문에 클라이언트와 서버와의 연결이 확인된 후 데이터를 전송합니다. 이때 연결을 확인하는 방법이 바로 3way handshake입니다.1. syn 패킷전송클라이언트가 서버에게 syn..
서문Spring MVC를 넘어서 리액트와 스프링 풀스택 개발을 시도해보고 싶어졌습니다. 이를 위해서 Restful API를 설계해야하는데 혼자서 MVC 개발하던 패턴과는 아예 다른 방법으로 응답을 제공하더라구요.. 바로 ResponseEntity를 사용해서 stateCode, body 등을 반환했는데 이를 공부하면서 블로그에 정리하려고 합니다. 잘 몰라서 공부하며 정리한 것이라 만약에 틀린 부분이 있다면 댓글 부탁드립니다.. ㅜㅜResponseEntity는 무엇이고, 왜 사용하는걸까?Spring에서는 @ResponseBody로 DTO를 반환하면 알아서 Json으로 변환해 주기도 하고, 혼자 스프링 MVC로 개발할 때는 협업이 아닌 개인 개발이기 때문에 상태코드를 세밀하게 반환하지 않았어요. 적당한 예..
Rest-Assured가 무엇인가?RestAssured는 REST API를 테스트하기 위한 Java DSL(Domain-specific language)이에요.get, post, put, delete, patch 등 여러 요청과 응답을 검증하는데 사용해요. OpenAI Thread 생성 예제open ai api에서 gpt를 사용하려면 각 대화창 즉 스레드가 필요해요.참고 - https://platform.openai.com/docs/assistants/overviewopen ai의 api key가 발급되었다는 가정하에 예제를 풀어볼게요. 1. 의존성 설정스프링부트 3.2.x version 기준testImplementation 'io.rest-assured:rest-assured:5.4.0' 2. 테스..
CSRF 공격이란?CSRF 공격이란 사용자가 로그인하면 세션ID가 쿠키로 저장되는데, 서버는 세션 ID로 사용자를 인증하고 구분하여 요청을 수행한다. 쿠키는 브라우저에 저장되기 때문에 공격자가 임의의 폼을 생성한 링크를 사용자에게 클릭하도록 유도하면 브라우저는 쿠키에 저장된 세션ID와 공격자의 폼을 함께 서버로 전송한다. 이 때 폼은 공격자가 원하는 행동으로 설계해둔다. (은행송금, 개인정보탈취 등)더불어 사용자가 진짜로 요청한 것인지 임의로 공격자가 설계한 공격인 것인지 구분하기도 어렵다.공격자는 이메일, 악성 웹사이트, 광고 배너 등을 통해 사용자가 악성 링크를 클릭하게 유도할 수 있다. CSRF 공격을 방어하는 방법1. CSRF 토큰을 사용한다.스프링 MVC, 장고 MTV 같은 프레임워크를 사용하면..