프로젝트 11

MediaSoup, SFU

Node.js의 mediasoup로 SFU를 구현할 수 있다 - Mediasoup는 여러개의 worker로 이루어져있다 - Worker와 CPU는 일대일 매핑된다 - 1개의 router에는 1개의 room이 할당된다, 1개의 worker에 여러개의 router가 있을 수 있다 - transport는 데이터를 주고받는 경로이다 - Producer: media를 생성한다 - Consumer : media를 전달받는다 연결 생성 Producer 1. Client가 Router rtpCapability 요청 [RtpCapability : mediasoup로 연결가능한 endpoint] 2. DEVICE 생성(mediasoup-client) + local media stream 만듬 3. webRTC transp..

프로젝트 2024.02.09

Ngrok

일부 디바이스 기능은 https에서만 지원하는 경우가 있다 (i.e. WebRTC) ngrok 도메인에서 공인IP,port로 프록시한다 1. 다운로드 https://ngrok.com/download Download $ ngrok config add-authtoken ngrok.com 2. 회원가입 https://dashboard.ngrok.com/login ngrok - Online in One Line dashboard.ngrok.com 3. Token을 등록한다 https://dashboard.ngrok.com/get-started/your-authtoken ngrok 다운로드한 폴더로 들어간 후 아래 명령어 입력 ./ngrok config add-authtoken [token] 4. 프록시할 포트를..

프로젝트 2023.12.24

[윈도우 스크립트] 포트번호로 프로세스 종료하기

웹서버를 로컬에서 실행할때 한번씩 포트번호가 이미 사용되고 있다고 나온다 포트번호 8080 및 8081 종료하는 스크립트이다 .bat으로 저장한 뒤 실행한다 @echo off setlocal enabledelayedexpansion for %%p in (8080 8081) do ( set "port=%%p" set "portFound=" for /f "tokens=3,5" %%a in ('netstat -aon ^| findstr "0.0.0.0:!port!"') do ( set "address=%%a" set "pid=%%b" if "!address!"=="0.0.0.0:0" ( set "portFound=1" echo Killing process with PID: !pid! using port !po..

프로젝트 2023.10.23

[Linux][Gradle] springboot 빌드 및 실행

Gradle이란 1. 버전/의존성 관리(build.gradle) 및 토큰/비밀번호 설정(gradle.properties) 2. 빌드 자동화(gradlew) 설치 ├── gradle │ └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties 위와 같은 경로에 gradle-wrapper.jar이 있어야 build가 가능하다 gradle-wrapper.jar를 생성하려면 gradle이 설치되어야 한다 이미 gradle-wrapper.jar이 있다면 gradle을 설치안하고 바로 빌드해도 된다 1. 압축파일 다운 wget https://services.gradle.org/distributions/gradle-8.2.1-bin.zip 최신버전은 ..

프로젝트 2023.08.13

vscode python c module print 하기

0. MINGW (GCC로 C언어 컴파일) 및 VSCODE 내 C/C++ extension 설치 (파이썬은 Visual Studio를 공식적으로 쓰고 있으니 참고 바랍니다) https://stackoverflow.com/questions/76148413/why-segmentation-fault-occurs-in-my-cpython-module-code-pyobject-print/76195743#76195743 Why 'Segmentation fault' occurs in my cpython module code? (PyObject_Print) I am trying to print PyObject and 'Segmentation fault' occured. I want to use PyObject_Prin..

프로젝트 2023.04.24

C 언어 포인터

포인터 메모리의 위치를 저장하는 변수 일반 변수일 경우 &를 통해서 메모리 위치를 가져올 수 있다 int a = 10; printf("a : %d\n", a); printf("&a : %p\n", &a); -------output---------------- a : 10 &a : 0000000f5b7ff9cc 포인터 변수 : 메모리 위치를 저장하는 변수이다 변수 앞에 *을 써서 선언할 수 있다 메모리가 가리키는 값을 읽을 때는 *을 붙이고, 메모리 위치를 읽어올 때는 *을 붙이지 않는다 int a = 10; int *ptr; // 포인터 변수 선언 ptr = &a; // ptr 변수의 메모리 위치 = 변수 a 메모리 위치 *ptr = 11; // ptr 메모리 위치에 저장된 변수 값을 11로 설정 pri..

프로젝트 2023.04.03

TestEngine with ID 'junit-jupiter' failed to discover tests

Caused by: java.lang.ClassNotFoundException Junit5 테스트하려고 할 때 해당 오류가 떴습니다 구글링을 해봐도 답이안나왔었는데.. Edit configuration에서 @argfile(Java 9+) -> JAR manifest로 수정했더니 정상적으로 작동합니다 대부분의 경우는.. 1. Setting 변경 2. 파일이름을 *Test / *Tests / Test* 로 수정하기 3. useJUnitPlatform() 넣기 test { useJUnitPlatform() } 4. dependency 맞추기(또는 낮추기) https://stackoverflow.com/questions/70452633/org-junit-platform-commons-junitexception-..

프로젝트 2023.02.01

Java - Static Block / Instance Block

Static Block 클래스가 로드될 때 실행되는 Block 최초 1회만 실행 Instance Block 클래스가 생성될 때 실행되는 Block Constructor가 실행되기 직전 실행됨 클래스가 여러번 생성되었다면 여러번 실행됨 실행순서 1. static block 2. instance block 3. constructor 예제 BlockClass public class BlockClass { private static String staticString; private String nonStaticString; public BlockClass() { System.out.println("blockClass - constructor"); } { nonStaticString = "12"; staticS..

프로젝트 2023.01.21

springBoot 배포 준비 - java,war [Intellij]

1. WAR 파일 만들기 외장 톰캣을 쓰지 않는다면 간단하게 아래와 같이 설정하면 됩니다 build.gradle plugins { . . . id 'war' // 추가 } ... ... bootWar { archiveName("was.war") // 만들고자 하는 파일 이름 } ./gradlew bootWar 위 명령어를 호출하거나 왼쪽 초록색 화살표 버튼을 통해 war파일을 생성할 수 있습니다 build > libs 경로에 생성됩니다 출처 https://hye0-log.tistory.com/29 [Spring Boot]war로 배포하기 (Gradle + 내/외장 톰캣) JSP를 사용한 Spring boot프로젝트에서 gradle + 내/외장 톰캣을 이용하여 서비스 배포하는 과정을 정리하고자 한다. 이전..

프로젝트 2023.01.03