본문 바로가기

생각정리

(200)
[JAVA 알고리즘]BAEKJOON 7569번 토마토 토마토 문제 설명 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자모양 상자의 칸에 하나씩 넣은 다음, 상자들을 수직으로 쌓아 올려서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 하나의 토마토에 인접한 곳은 위, 아래, 왼쪽, 오른쪽, 앞, 뒤 여섯 방향에 있는 토마토를 의미한다. 대각선 방향에 있는 토마토들에게는 영향을 주지 못하며, 토마토가 혼자 저절로 익는 경우는 없다고 가정한다. 철수는 창고에 보관된 토마토들이 며칠이 지나면 다 익게 되는지 그 최소 일수를 ..
소프트웨어 아키텍처의 변화 디지털 산업의 성장하면서 소프트웨어의 아키텍처는 중앙 집약적인 모놀리식 아키텍처에서 마이크로서비스 아키텍처로 점차 변화하고 있는 추세이다. 그러면 각 아키텍처들이 무엇인지, 왜 변화하고 있는지 알아보자. 모놀리식 아키텍처 (Monolithic Architecture) 전통적인 소프트웨어 개발 모델로, 전체 애플리케이션을 하나의 통합된 패키지로 개발, 배포하는 방식으로 모든 시스템은 하나로 연결돼 관리된다. 서비스가 한곳에 집중돼 있어 규모가 작을 경우 관리하기 쉬울 수 있으나 다음의 문제점들을 가지고 있다. 규모가 커질수록 유지보수의 복잡도도 증가하고 한 개의 시스템에 문제가 생기면 전체 시스템 장애로 문제가 발생할 수 있다. 하나의 모듈을 수정하면 전체 애플리케이션을 다시 배포해야 하며 서버의 기동과 ..
[JAVA 알고리즘]BAEKJOON 2527번 직사각형 직사각형 문제 설명 2차원 격자공간에 두 개의 꼭짓점 좌표로 표현되는 직사각형이 있다. 직사각형은 아래와 같이 왼쪽 아래 꼭짓점 좌표 (x, y)와 오른쪽 위 꼭짓점 좌표 (p, q)로 주어진다. 이 문제에서 모든 직사각형은 두 꼭짓점의 좌표를 나타내는 4개의 정수 x y p q로 표현된다. 단 항상 x
사이드 프로젝트 : 중고 거래 플랫폼 - 웹 소켓 프론트엔드 설정 채팅방 입장 useEffect(() => { // 채팅방정보 API로 받아오기 const getRoom = async () => { const response = await getChatRoom(roomId); if (response?.status === 200) { setChatRoomState(response.data); } else { console.log("실패"); } }; getRoom(); // 채팅방 메시지 내역 API로 받아오기 const ChatHistory = async () => { const response = await getChatHistory(roomId); if (response?.status === 200) { const messages = response.data; se..
사이드 프로젝트 : 중고 거래 플랫폼 - 웹 소켓 백엔드 설정 의존성 추가 implementation 'org.springframework.boot:spring-boot-starter-websocket' WebsocketConfig 설정 WebSocketMessageBrokerConfigurer를 구현하여 사용한다. 메서드 설명 addArgumentResolvers 사용자 지정 컨트롤러 메서드 인수 유형을 지원하는 확인자를 추가합니다. addReturnValueHandlers 사용자 정의 컨트롤러 메서드 반환 값 유형을 지원하는 핸들러를 추가합니다. configureClientInboundChannel WebSocket 클라이언트에서 들어오는 메시지에 사용되는 구성을 구성합니다 . configureClientOutboundChannel WebSocket 클라이언트에..
사이드 프로젝트 : 중고 거래 플랫폼 - 채팅 https://hoho-thinking.tistory.com/199 웹 소켓이란? 웹 소켓 프로토콜 하나의 TCP 접속에 전이중 통신 채널을 제공하는 컴퓨터 통신 프로토콜. TCP 접속이란, 클라이언트 소켓 주소와 서버 소켓 주소를 연결시켜 클라이언트에 TCP 소켓을 생성시키는 hoho-thinking.tistory.com 채팅 기능을 구현하기 위해서 웹 소켓을 사용하 기로 했다. 개념적 데이터 모델링 회원들은 여러 개의 채팅방을 가진다. 채팅방은 여러 개의 메시지를 가진다. 논리적 데이터 모델링 구매자가 판매자에게 채팅방을 생성을 하는 것을 기준으로 1 대 1 채팅을 한다. 유저 - 채팅방 : 1 대 N 관계로 판매자를 대상으로 여러 개의 채팅방을 생성할 예정이다. 채팅방 - 메시지 : 1 대 N 관계..
웹 소켓이란? 웹 소켓 프로토콜 하나의 TCP 접속에 전이중 통신 채널을 제공하는 컴퓨터 통신 프로토콜. TCP 접속이란, 클라이언트 소켓 주소와 서버 소켓 주소를 연결시켜 클라이언트에 TCP 소켓을 생성시키는 과정으로 처음에 설정으로 클라이언트와 서버가 연결되고 TCP 방식으로 데이터를 주고받을 수 있게 된 상태로 이해했다. 여기서 중요한 점은 전이중 통신(Full Duplex) 채널을 제공한다는 점. 양방향 통신으로 연결된 두 장치에서 같은 채널을 동시에 사용할 수 있어 실시간으로 데이터를 보내고 받을 수 있다. 위 말은 어렵지만 결국은 웹 소켓은 클라이언트와 서버를 연결하고 실시간으로 통신이 가능하게 해주는 통신 방식. HTTP 프로토콜의 차이 클라이언트와 서버의 통신은 일반적으로 HTTP 프로토콜을 이용한다. ..
사이드 프로젝트 : 중고 거래 플랫폼 - 리엑트 로그인, 회원가입 백서버와 API통신을 이용해 서비스를 구현을 해보고자 리엑트를 이용해서 프론트 서버를 구성해 보기로 하였다. 리엑트를 예전에 한번 써보긴 했는데, 다시 사용을 하려고 하니 먼가 사용하는 방법들으 조금 변경된 부분들이 있었다. vit을 이용해 가볍게 구성할 수 있는 방법이 있다고 하는데, 먼가 실행하는데 문제가 생겨 프론트 부분은 가볍게 시작을 할 거 기 때문에 인텔리제이로 바로 프로젝트를 만들어서 사용할 수 있는 세팅으로 시작을 하였다. 훅과 이펙트가 잘 기억이 나지 않아 먼가 덕지 덕지 사용한 느낌이 있지만, 이것저것을 보면서 일단은 로그인과 회원가입 부분을 엑시오스를 이용해서 api통신을 연결하였다. 목표는 먼저 간단하게 api연결로 서로 통신이 가능한지가 먼저이고 프론트와 백이 연결이 다 잘된다면 ..