![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/PUfl6/btsI7kOhmJW/G81TMJ1qYTL57qXXwalw51/img.png)
1. 문제 상황라즈베리파이와 Spring 서버는 Mqtt로 통신한다.이때 AWS IoT 라이브러리 또한 사용한다.근데 왜인지... Connection이 3~4초 단위로 끊긴다... 2. 문제 해결 (1) AWSIotMqttClient 설정 문제? 나와 같은 문제를 겪는 사람을 스택오버플로우에서 찾았다.차이점은 저 사람은 10분 단위로 끊기고 나는 3초 단위로 끊긴다는 거... 답변에 있는 방법으로 setKeepAliveInterval 속성 등을 수정해보고, setConnectionTimeout 등도 수정해 보았지만 오류는 여전하다... (2) Client ID 문제?다른 사이트에 올라온 코드를 보다가 Client ID를 동적으로 생성하는 부분을 보았다.나는 위 사진처럼 Client ID를 고정된 값으..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bjwKg5/btsI4vIfXJn/jgxvmagylfqCUSiEjOIqTk/img.png)
해당 프로젝트는 화상채팅 기능을 포함한다.화상채팅은 주로 WebRTC를 사용해서 구현한다. 그럼 WebRTC에 대해 알아보자. 아주 간단한 그림으로 표현해보았다.기존 방식과 WebRTC의 가장 큰 차이점은 아래와 같다. 기존 방식서버를 거쳐 메세지를 주고 받음 WebRTC클라이언트와 클라이언트가 직접 통신함(P2P) 여기서 WebRTC는 시그널링 서버를 필요로 한다.시그널링 서버는 클라이언트 간의 P2P 통신을 위해 초기 연결 설정을 도와주는 서버이다. 시그널링 서버는 클라이언트들이 서로 연결되기 위해 필요한 네트워크 정보(IP 주소, 포트 등)과 미디어 정보(코덱 등)를 교환하는 역할을 하며 해당 정보는 SDP라는 형식을 통해 주고받는다. 여기서 핵심은 시그널링 서버는 클라이언트 간의 연결 설정에..
1. Session 인증 → JWT 인증 올해 초에 개발한 프로젝트에서는 Interceptor를 사용하여 로그인과 인증 과정을 (코드는 '더보기' 참고) 구현하였다. 사실 머쓱할 정도로... 단순하고 허접한 구현이라 구현을 했다고 보기도 어렵다. session에 id 속성이 있다면 모두 접근 허용을 해줬다. 해당 세션 정보를 별도의 DB에 저장을 하고 관리를 하는 방법으로 개선할 수 있을 거 같다. 너무 구현자체에 급급했다. 더보기package semohan.owner.global.auth;import jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServletResponse;import jakarta.servlet.ht..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bHo8kc/btsIuu4pZpm/BRKAMlfeW5De7rfJ9QP0D0/img.gif)
문제어린 왕자는 소혹성 B-664에서 자신이 사랑하는 한 송이 장미를 위해 살아간다. 어느 날 장미가 위험에 빠지게 된 것을 알게 된 어린 왕자는, 장미를 구하기 위해 은하수를 따라 긴 여행을 하기 시작했다. 하지만 어린 왕자의 우주선은 그렇게 좋지 않아서 행성계 간의 이동을 최대한 피해서 여행해야 한다. 아래의 그림은 어린 왕자가 펼쳐본 은하수 지도의 일부이다.빨간 실선은 어린 왕자가 출발점에서 도착점까지 도달하는데 있어서 필요한 행성계 진입/이탈 횟수를 최소화하는 경로이며, 원은 행성계의 경계를 의미한다. 이러한 경로는 여러 개 존재할 수 있지만 적어도 3번의 행성계 진입/이탈이 필요하다는 것을 알 수 있다.위와 같은 은하수 지도, 출발점, 도착점이 주어졌을 때 어린 왕자에게 필요한 최소의 행성계 진..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bMvjfg/btsIotrveuS/KkJJuLYuUiZgVJT7PT3A30/img.png)
문제해빈이는 패션에 매우 민감해서 한번 입었던 옷들의 조합을 절대 다시 입지 않는다. 예를 들어 오늘 해빈이가 안경, 코트, 상의, 신발을 입었다면, 다음날은 바지를 추가로 입거나 안경대신 렌즈를 착용하거나 해야한다. 해빈이가 가진 의상들이 주어졌을때 과연 해빈이는 알몸이 아닌 상태로 며칠동안 밖에 돌아다닐 수 있을까?입력첫째 줄에 테스트 케이스가 주어진다. 테스트 케이스는 최대 100이다.각 테스트 케이스의 첫째 줄에는 해빈이가 가진 의상의 수 n(0 ≤ n ≤ 30)이 주어진다.다음 n개에는 해빈이가 가진 의상의 이름과 의상의 종류가 공백으로 구분되어 주어진다. 같은 종류의 의상은 하나만 입을 수 있다.모든 문자열은 1이상 20이하의 알파벳 소문자로 이루어져있으며 같은 이름을 가진 의상은 존재하지 않..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/VorSm/btsIiVW4ZS4/t0lVGGFXKc51T2KCFkJepK/img.png)
이전까지의 프로젝트에서는 pull request를 보내고 코드 리뷰를 한 뒤 merge하는 사이클로 프로젝트를 진행하였다. 이에 조금더 발전된 방향으로 협업을 해보고자 이슈를 발행하고 해당 이슈에 대한 pr을 날리는 방식으로 협업을 해보고자 한다! 근데 사실 협업이라기에는 서버 개발을 혼자하지만...^^ 그래도!! 연습 차원에서 혼자 북치고 장구치고!! 아래 내용은 내가 팀 노션에 만들어놓은 협업 가이드이다. 심플하지만 그래도 적어두면 불필요한 헤맴을 방지할 수 있을거 같아 팀을 위해 정리해두었다. 아래 플로우 중 처음 사용해보는 이슈 발행 기능에 대한 커스텀 레이블, 템플릿 지정 등을 해보고자 한다.Labels 자 이제 이슈를 발행하자! 하고 봤는데 옆에 Labels라는게 있다. 사용해본적은 없지만 ..
그동안 자잘한 프로젝트를 여럿 경험하였다.매 프로젝트에서 회의록, 업무 일지 등을 팀 노션에 꼼꼼히 기록하고자 하였다. 하지만 막상 자소서를 작성하려고 하면 내가 어떤 문제 해결을 어떻게 하였는지 구체적으로 기억이 나지 않는다.분명 그때 좋은 아이디어로 상황을 잘 해결했었는데라는 뭉툭한 기억뿐.현재 마주한 취업 상황 뿐만 아니라 많은 상황에서 기록은 중요하다.내가 어떤걸 고민했었는지, 어떤 걸 배웠었는지, 어떤 것을 하며 즐거워했는지, 어떤 걸 잘하는지, 어떻게 해결했는지 등.내가 나를 알아야 성장할 수 있다. 그래서 이번 프로젝트에서는 꾸준히 프로젝트에 관한 글을 개인 블로그에 작성해보고자 한다!! 글을 작성하며 더 깊이 있는 학습을 하고,또 같은 문제 상황을 겪는 사람들에게 지식을 나누고 싶다는 작은..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/1O2Yh/btsIiWmB50b/awdYwVektG1TcvkYMPdqK1/img.png)
문제어떤 나라에 N개의 도시가 있다. 이 도시들은 일직선 도로 위에 있다. 편의상 일직선을 수평 방향으로 두자. 제일 왼쪽의 도시에서 제일 오른쪽의 도시로 자동차를 이용하여 이동하려고 한다. 인접한 두 도시 사이의 도로들은 서로 길이가 다를 수 있다. 도로 길이의 단위는 km를 사용한다.처음 출발할 때 자동차에는 기름이 없어서 주유소에서 기름을 넣고 출발하여야 한다. 기름통의 크기는 무제한이어서 얼마든지 많은 기름을 넣을 수 있다. 도로를 이용하여 이동할 때 1km마다 1리터의 기름을 사용한다. 각 도시에는 단 하나의 주유소가 있으며, 도시 마다 주유소의 리터당 가격은 다를 수 있다. 가격의 단위는 원을 사용한다.예를 들어, 이 나라에 다음 그림처럼 4개의 도시가 있다고 하자. 원 안에 있는 숫자는 그 ..
RPC는 Remote Procedure Call의 약자로,자신과 다른 주소 공간에 있는 프로세스의 함수를 네트워크를 통해 호출할 수 있게해주는 시스템이다. MSA(Micro Service Architecture) 구조의 서비스를 만들 때 효율적인 개발을 돕는다. 프로세스 간 통신의 발전기존 RPC: 구현이 복잡하고 상호운용이 어려움SOAP: XML 기반의 데이터 교환용 통신 기술로 메세지 포맷이 복잡하여 오버헤드가 있다.REST: 텍스트 기반 형식으로 통신하여 편리하지만 많은 네트워크 통신은 오버헤드를 가져온다. 또한 type-safe하지 않다....gRPC 등장! gRPC구글에서 개발한 통신 프레임워크이다. 분산 애플리케이션을 보다 쉽게 만들 수 있으며 Interface Define Language를..
(얄팍한 지식으로 적은 글입니다...) Spark는 빅데이터 처리를 위한 분산 시스템이다. 빠른 속도로 데이터를 처리할 수 있고, 다양한 언어로 사용 가능하다. RDD를 통해 간편하게 구현이 가능하다! K-means는 데이터 마이닝 알고리즘 중 하나이다. 데이터를 K개의 그룹으로 적절하게 나누는 것을 목표로 한다. 구현 방법1. 좌표 파일을 읽어와 RDD 생성2. Random하게 (K개의) center ID를 key로, (1, 좌표값)을 value로 PairRDD(mapToPair)를 생성3. (input point의 개수, x좌표의 합, y좌표의 합)을 value로 변환 (reduceByKey)4. center_id에 대한 새로운 center 계산 (mapValues)5. 2~4번 반복
- Total
- Today
- Yesterday
- 스프링 강의
- 스프링부트
- 백준 1004
- 동덕여대 컴퓨터학과
- 알고리즘
- 동덕여대
- 컴공
- 인프런 김영한 강의
- 아이엘츠
- 백준
- 코틀린
- 프로그래밍
- 스프링부터
- 백준9375번
- 자바 9375
- 코딩
- 안드로이드
- 스파크
- 자바
- 13305 자바
- 웹
- 컴퓨터학과
- 컴과
- RDD
- 자바 1004번
- 백준 2108
- 생활코딩
- BFS
- 그리디 알고리즘
- 개발
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |