Websocket 이란? 양방향으로 실시간 데이터 를 교환할수 있는 프로토콜 이다. 이를 통해 실시간 정보 업데이트, 실시간 채팅 등을 구현할수 있고 좀 더 나아가 화상채팅도 구현할수 있다. 또한 HTTP 프로트콜에서 WS 프로트콜에 변환해서 연결을 한다. Polling 클라이언트가 n초 간격으로 request를 서버로 계속 날려서 response를 전달받는 방식이다. 단, 이렇게 request 를 날리게 되면 서버에 부담이 된다. 그렇다고 n초를 길게 잡으면 실시간 데이터 통신이 아니니 이상하다. 이를 해결하기 위해 WebSocket이 나온것 같다. Polling의 종류는 대표적으로 Short Polling, Long Polling 있다. Websocket 구현 간단하게 구현을 해보았다. 간단하게 설명..
공식 문서 : https://www.thymeleaf.org/doc/tutorials/3.1/usingthymeleaf.html#introducing-thymeleaf thymeleaf 란? 타임리프란? 뷰 플랫폼 이라고 말하기도 합니다. 뷰 템플릿은 컨트롤러가 전달하는 데이터를 이용하여 HTML 파일을 Client 에게 전달하기도 합니다. 해당 구조는 아래에 그림으로 표현하였습니다. gradle thymeleaf implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' thymeleaf 태그 태그 설명 th:text 요소의 텍스트 내용을 지정합니다. th:if 조건문을 지정하고, 조건이 참일 때 해당 요소를 표시합니다. th:eac..
Rest Repositories 이란? Spring 에서 지원해주는것으로 JPA 저장소로 json 방식으로 제공해주는것이다. 이것을 통해 QueryDSL 같이 사용할 수 있다. gradle import implementation 'org.springframework.boot:spring-boot-starter-data-rest' implementation 'org.springframework.data:spring-data-rest-hal-explorer' 여기서 잠깐 'org.springframework.data:spring-data-rest-hal-explorer' 이라는것은 좀더 편리하게 웹으로 볼수 있도록 한것이므로 배포시에는 제거해주도록 한다. application.yaml spring: data..
농사할때 즉 밭을 갈고 거기에 씨앗을 심을때 발생하는 이벤트. 씨앗을 심든, 당근을 심든, 여러 작물을 심을때 발생하는 이벤트를 만들어보자. 가볍게 씨앗을 심을때 Player 에게 메세지를 보낼것이다. public class Form_Event implements Listener { Message_Service message = new Message_Service(); @EventHandler public void form(PlayerInteractEvent event){ Player player = event.getPlayer(); Action action = event.getAction(); Block block = event.getClickedBlock(); if (action == Action.R..
마인크래프트 플러그인 셋팅 마인크래프트 플러그인의 프로젝트를 생성하면 java 파일안에 main 클래스에 onEnable() 과 onDisable() 이 존재한다. 이때, onEnable() 는 버킷으로 서버 켜질때 실행되는 것이고 onDisable() 반대로 꺼질때 실행되는 매서드이다. Event 쓰고 싶을때 onEnable() 에 getServer().getPluginManager().registerEvents(new PlayerJoin_Event(), this); 이런식으로 원하는 클래스 객체를 쓰고 this ( 현재 클래스 ) 를 쓰면 된다. Command 쓰고 싶을때 onEnable() 에 getCommand("돈").setExecutor(new Money_Command()); 이런식으로 원하는..
record 란? 데이터 클래스이며 순수하게 데이터를 보유하기 위한 특수한 종류의 클래스이다. VO 에 적합한 클래스이다. record 구성 public record UserDTO( Long id, String name ) { } 생성자가 id, name 받아야 하는 클래스이다. 주의 JDK14 부터 가능하다.
DTO, Entity, Response ? DTO와 Entity 와 Response 파일에 대해 알아볼려고 한다. 그에대해 연관관계를 통해 Client 에게 Response 로 데이터를 줄때 어떠한 방식을 사용해야 하는가에 대해 게시글을 작성 할려고 한다. DTO 란? 계층간 데이터 교환을 위해 사용하는 객체이다. 즉, Attribute 에 담을 DTO 라는 객체이다. Entity 란? JPA 에서 쓰는 Entity 즉 DB 의 데이터 교환을 위해 사용하는 객체이다. 즉, DB 에서 데이터를 가져오고 관리하는 객체이다. Response 데이터베이스에서 데이터를 가져와서 Client 에게 준다고 하면, 데이터베이스에서는 Entity 를 이용해서 가져와서 DTO 로 변환시켜 Clinet 에게 줘야 한다. 이..
웹 크롤링이란? Web상에 존재하는 Contents를 수집하는 작업이다. 즉 지금 현재 웹페이지에서 F12 를 누르게 되면 개발자 도구가 뜬다. 이 HTML 중에서 내용들을 가져올수 있는것이 웹 크롤링이다. 하는 방법 제일먼저 설치 하나를 해야한다. bs4 를 설치하자 pip install bs4 설치가 완료 되면 아래에 만든 코드를 보자. import requests from bs4 import BeautifulSoup URL = "https://www.genie.co.kr/chart/top200?ditc=M&rtm=N&ymd=20230101" headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (K..
MongoDB 란? Mysql 와 다른 NoSQL 로 구현된 데이터베이스 이다. Mysql 와 다르게 테이블 형식이 아닌 JSON 방식의 형태로 데이터가 저장되고 조회된다. 자세한건 아래의 사진으로 남깁니다. 이 사진은 웹 크롤링이라는 기술을 이용해서 데이터를 가져온것이다 자세한 웹 크롤링은 게시글을 따로 만들어 설명하겠다. Flask 에서 MongoDB 사용방법 Spring 에서는 객체로 가져오는 JPA 가 있다면 Flask 에서는 JSON 방식으로 그대로 가져와서 쓴다. ( 몽고DB 자체가 JSON 방식이므로 ) 아래에 상세히 정리하겠다. from pymongo import MongoClient client = MongoClient('DB 주소') db = client.testdb DB 주소는 몽고D..