| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
- spring mongoTemplate
- Spring ipfs
- kotiln const
- java 백준 1509
- 백준 연결요소 자바
- java 팩토리얼 개수
- ipfs bean
- java 1238
- 백준 2252 줄세우기
- 백준 1504 java
- 안정해시
- java 1509
- 자바 백준 팩토리얼 개수
- javav 1676
- spring mongodb switch
- spring mongoTemplate switch
- kotiln functional interface
- rabbitmq 싱글톤
- kotiln const val
- 백준 특정한 최단 경로
- 익명 객체 @transactional
- Java Call By Refernce
- ipfs singletone
- java 파티
- mongodb lookup
- 자바 1676
- nodejs rabbitmq
- Claude Intelij 연결
- spring mongodb
- go
- Today
- Total
목록전체 글 (201)
공부 흔적남기기
WebCodecs VideoEncoder를 이용한 실시간 영상 인코딩웹캠 영상을 모바일 브라우저로 실시간 전송하는 프로젝트를 진행하면서 먼저 MJPEG 방식으로 간단한 스트리밍을 구현했다.구조는 다음과 같았다.웹캠 ↓MediaStream ↓Canvas ↓JPEG ↓HTTP ↓NestJS ↓MJPEG Stream ↓모바일 브라우저MJPEG 방식은 구현하기 상당히 간단했다.하지만 한 가지 문제가 있었다.프레임마다 JPEG 전체 이미지를 전송하기 때문에 데이터량이 상당히 크다.그래서 다음 단계로 H.264 기반 영상 인코딩을 직접 구현해보기로 했다.1. WebCodecs란?브라우저에는 영상과 오디오를 직접 인코딩/디코딩할 수 있는 WebCodecs API가 있다.이번에는 그중 VideoEncoder를 사용했다..
MediaDevices.getUserMedia()와 Canvas를 이용한 간단한 웹캠 스트리밍웹캠 영상을 노트북에서 모바일 브라우저로 실시간 전송하는 프로젝트를 시작했다.최종적으로는 단순한 영상 스트리밍뿐만 아니라 영상 녹화 및 최대 3일간의 저장까지 구현해보는 것이 목표다.처음부터 H.264나 WebRTC 같은 기술을 사용하기보다는, 영상 스트리밍의 기본적인 동작을 이해하기 위해 가장 단순한 MJPEG 방식부터 구현해봤다.전체 구조는 다음과 같다.웹캠 ↓getUserMedia() ↓MediaStream ↓ ↓Canvas ↓JPEG ↓HTTP POST ↓NestJS ↓MJPEG Stream ↓모바일 브라우저1. 프로젝트 구성프로젝트는 React와 NestJS를 분리해서 구성했다.mk-we..
2048(Easy) 문제는 최대 5번 이동했을 때 나올 수 있는 가장 큰 블록을 구하는 문제다.접근 자체는 단순하다.이동 횟수: 최대 5번매번 이동 방향: 상 / 하 / 좌 / 우 (4가지)⇒ 가능한 경우의 수: 4^5 = 1024⇒ DFS로 전체 탐색하면 충분히 해결 가능풀이 구조1. DFS static int N;static int answer = 0;static void DFS(int[][] board, int cnt){ if (cnt == 5) { for (int i = 0; i cnt가 5가 되면 현재 보드에서 최댓값을 구해서 answer 갱신아니라면 4방향으로 move 하고 DFS 계속 진행2. 이동 함수 (move)각 방향마다 “한 줄씩” 처리하는 방식으로 구현했다.아이디어..
1. Claude Desktop 설치Claude Desktop을 설치해서 Local에 있는 Intelij MCP와 연결하여 사용https://claude.ai/download 2. Intelij MCP 설정Settintgs에서 MCP를 검색하여 MCP Enable 버튼 클릭후에 Copy Config를 통해 클립보드에 Config를 복사 3. Claude MCP 설정파일 > 설정으로 이동 개발자 탭 > 구성 편집 > claude_desktop_config.json 열어서 {"mcpServers": 내부에 클립보드에 복사한 Config 붙여넣기}3. 마무리 및 확인Claude 서비스를 끈 후에 로컬 MCP 서버 잘 등록되었는지 확인 및 Claude에게 Intelij 연결되었는지 채팅을 이용하여 질문
선착순 쿠폰 발급이나 티켓 예매와 같이 동시에 트래픽이 많이 들어올 경우 동시성 문제가 발생하기 마련이다.이러한 문제를 해결하기 위해 주로 락을 사용하여 동시성 문제를 해결한다. 이때 한가지 조심해야할 부분이 있다. 동시성 문제가 발생하는 코드 1@Transactionalfun issue(couponId: Long, userId: Long){ val coupon = findCoupon(couponId); coupon.issue() saveCouponIssue(couponId, userId)}사용자가 쿠폰 발급 버튼을 누르면 해당하는 쿠폰을 찾아 쿠폰을 발급하는 간단한 로직이다.동시에 여러명의 유저가 쿠폰발급을 누른다면 락이 존재하지 않기 때문에 쿠폰개수에 대해 동시성 문제가 발생하여 의..
최근에 코테를 2개정도 봤는데 이런 우선순위 큐를 사용한 그리디 문제를 2개 마주했었다. 시작하는 시간과 끝나는 시간이 주어지고 내부적으로 다양한 조건이 존재하는 문제들이다.이 문제는 간단하게 시작하는시간 끝나는 시간 그리고 겹칠경우 공간을 +1 해주면 되는 비교적 할만한 문제였다. // Online Java Compiler// Use this editor to write, compile and run your Java code onlineimport java.util.*;import java.io.*;class Main { static class Lecture{ int start; int fin; Lecture(int s, int f){ ..
이 문제를 처음 봤을떄 각 지점에서 하나씩 좌우로 탐색하면서 찾아야하나? 라는 고민이 들었는데 그럼 먼가 지저분해질 것 같은 기분이 들었다. 그래서 더 좋은 방법을 고민해보았는데 n,m 이 50으로 상대적으로 숫자가 굉장히 낮기때문에모든 정사각형을 탐색하는 것이 더 좋다는 생각이 들었다. import java.util.*;import java.io.*;class Main { static class XY{ int x; int y; XY(int x, int y){ this.x =x; this.y = y; } } public static void main(Str..
가장 큰 정사각형을 구하기 위해서는 BFS를 통해서 찾을 수도 있겠지만 n,m이 최대 1000이기때문에시간내에 가장 큰 BFS를 찾는 것은 불가능할 것이다.따라서 다이나믹 프로그래밍을 사용해야한다.해당 2차원배열에서 가장큰 정사각형을 찾을때dp[y][x] x는 정사각형 오른쪽 아래에 값으로 현재 정사각형의 최대 크기를 나타낸다. dy[y-1][x-1], dy[y-1][x], dy[y][x-1] 에서 가장 작은것에 +1 한것이 dy[y][x]임을 알 수 있다. // Online Java Compiler// Use this editor to write, compile and run your Java code onlineimport java.util.*;import java.io.*;class Main { ..
각 집하장들이 있고 하나의 집하장에서 또다른 집하장까지의 최소 거리를 구하되 해당 집하장으로 가기위해서 처음 들려야하는 집하장을 구하는 문제이다.즉 집하장 1에서 집하장 5로 가기위해서는 5라는 비용이 들고 해당 위치로 가기 위해서는 집하장 2를 먼저 가야한다. 먼저 해당 거리까지의 최소 비용을 구한 후 이동할 때 map라는 공간에 어디서 출발했는지를 저장해 놓고 뒤로 돌면서 찾는 방식으로 해결하였다. // Online Java Compiler// Use this editor to write, compile and run your Java code onlineimport java.util.*;import java.io.*;class Main { static class Node{ int..
DP 개념이 2개나 들어간 쉽지 않은 문제다.. 분할의 개수의 최솟값을 구하기 위해서는 모든 구간을 다 탐색하면서 펠린드롬인지 아닌지를 확인해야한다.pal[i][j[는 i~j 구간이 펠린드롬인지 여부를 저장하는 배열이다. pal[i[j]를 구할때 DP 없이 그냥 풀면 O(n^3)이 나온다 이렇게 해도 운이 좋았는지 Pass는 되었다.모든 구간을 탐색하는 코드이다.for(int i =0; i 이를 개선하기 위해 DP를 사용하는데모든 길이가 1인 문자는 펠린드롬, 뒤와 같은 값을 가진 구간은 펠린드롬일 것이고구간 i~j가 만약 펠린드롬이라면 i-1의 문자열과 j+1의 문자열이 같다면 i-1~j+1도 펠린드롬일 것이다.이 개념을 통해 DP를 구현한다.for(int i=0; i구간의 길이가 3인것 구간의 길이가..