WebSocket HTTP Connection 문제 해결하기
·
Project
문제 상황개발 환경에서는 아무런 문제 없이 잘 되던 채팅이운영 서버에서는 안 되는 문제가 발생했다.서버의 로그를 확인해보니 아래의 오류가 발생했다.원인 가정과 문제해결1. 요청에 Upgrade 헤더 미포함우선 에러 메시지를 보고 가장 먼저 클라이언트의 요청에서Upgrade헤더가 미포함되었는지 확인했다.하지만 실제로 확인해보니 stomp.js를 사용하고 있어 자동으로 포함되어 있다는 것을 알 수 있었다.  2. ELB 설정 문제로 웹소켓 헤더 유실ELB(Elastic Load Balancer)에서 지연 시간 설정을 짧게 설정할 경우 요청이 유실될 수 있다. 하지만 확인해보니 운영 서버는 ELB를 사용하고 있지 않았다.따라서 이것도 문제의 원인이 아니었다. 3. EC2 Nginx 설정 문제로 웹소켓 헤더 유..
[BOJ][Java] 1197번 최소 스패닝 트리
·
PS
문제 링크 : https://www.acmicpc.net/problem/1197 이 문제는 최소 신장 트리(Minimum Spanning Tree, MST) 알고리즘 구현 문제이다.MST 알고리즘은 모든 노드들을 연결했을 때 가장 적은 비용의 간선 집합을 찾는 알고리즘이다.간단한 MST에 대한 설명은 아래와 같다.  위와 같은 그래프가 있다고 가정한다.정점 사이에는 가중치가 있는 간선이 있다.MST 알고리즘은 해당 그래프의 모든 정점들을 잇는 가장 최소비용의 간선 집합을 찾는 알고리즘이다.여기서 중요한 것은 그래프를 사이클이 생기면 안 된다는 것이다.사이클이 존재하면 가중치의 합이 최소가 될 수 없기 때문이다.또한 정점의 개수가 V라고 하면 정점을 최소 신장 트리를 구성하는 간선의 개수는 무조건 V-1개..
[BOJ][Java] 1389번 케빈 베이컨의 6단계 법칙
·
PS
문제 링크 : https://www.acmicpc.net/problem/1389 이 문제는 전형적인 플로이드 워셜 알고리즘을 이용하여 해결할 수 있는 문제이다. 예제 입력을 그래프로 표현하면 위와 같다. 여기서 단방향이 아니라는 것에 주의해서거리 배열을 초기화한다. 거리배열을 초기화하면 인접 정점끼리의 관계를 표현할 수 있다.여기서 무한대는 문제의 조건을 보고 직접 적당히 큰 값을 넣거나,아니면 Interger.MAX_VALUE와 같이 int 범위에서 가장 큰 값을 넣어주면 된다.다만 이럴 경우에는 연산의 과정에서 int의 범위를 넘어 오버플로우가 발생할 수 있기 때문에long 타입으로 캐스팅한 후에 연산을 해줘야 한다. 거리배열을 초기화한 후에는 플로이드 워셜 알고리즘으로 각 정점사이의 최단거리를 구해..
Nginx 알아보기
·
Infra
Nginx란?Nginx는 웹 서버로 트래픽이 많은 WAS(Web Application Server)를 도와주는 비동기 이벤트 기반구조의 웹 서버 프로그램이다.주요 특징으로는 - 가볍고 빠름- 로드 밸런싱 제공- 리버스 프록시 지원- SSL/TLS 적용 가능 등이 있다. Web Server 와 WAS(Web Server Application)의 차이웹 서버는 클라이언트(브라우저)의 요청을 받아 정적인 파일(HTML, CSS, JS, 이미지 등)을 제공한다.WAS는 웹 서버가 처리하지 못하는 동적인 웹 애플리케이션을 실행하는 서버이다. 즉, 사용자의 요청을 받아 비즈니스 로직을 수행하고 DB와 연동하여 결과를 반환한다.Nginx 등장 배경1995년 최초의 웹서버인 유닉스 기반의 NCSA HTTPd가 있었다...