전체 글 34

Hello C++ World

C++ C언어를 기본 뼈대로 하고 클래스 개념을 추가한 언어이다. 실행 모든 프로그램에는 `main()` 이라는 함수가 있어야 한다. `main()` 함수는 프로그램이 시작하는 곳을 의미하며, 대부분 프로그램에는 `main()` 함수를 제외하고도 많은 함수를 정의하여 사용한다. return 0? 프로그램이 실행되면 운영 체제는 `main()` 함수 호출을 수행한다. main의 맨 위로 이동한 뒤 순차적으로 실행한다. 마지막으로 `main()` 함수는 정수(int) 값(일반적으로 0)을 운영체제에 반환한다. 이것이 main이 int main()으로 정의된 이유다. 왜 운영체제에 값을 반환할까? 이 값을 상태 코드(status code)라고 하며, 프로그램이 성공적으로 실행되었는지를 알려준다. 규칙에 따라 ..

C++ 2024.04.08

Mac(M1) 유저를 위한 C/C++ 개발환경 세팅하기

Visual Studio C/C++ 은 Visual Studio를 많이 사용한다고 하여 설치하려했는데,,,,, Visual Studio Code (이하 VSCode) vscode 를 설치해서 C/C++ 관련 extension 을 설치하면 맥에서도 사용할 수 있다고 한다. 계속된 실패끝에 어떤 블로그를 찾았고 그 블로그를 따라하니 되었다. 순서는 아래와 같다. 1. VSCode 설치 2. extension 추가 3. setting 파일 수정 4. 실행 설정 5. C/C++ 컴파일러 설치 아래 블로그 글을 따라하면 진짜 된다...! https://songacoding.tistory.com/49

C++ 2024.04.07

keystore 경로 설정 & 배포 서버 접속 문제

1. keyStore를 못찾겠다는 오류 Caused by: java.lang.IllegalStateException: Could not load store from 'src/main/resources/keystore.p12' at org.springframework.boot.ssl.jks.JksSslStoreBundle.loadKeyStore(JksSslStoreBundle.java:123) ~[spring-boot-3.2.3.jar!/:3.2.3] at org.springframework.boot.ssl.jks.JksSslStoreBundle.createKeyStore(JksSslStoreBundle.java:89) ~[spring-boot-3.2.3.jar!/:3.2.3] ... 26 common f..

카테고리 없음 2024.03.18

Live Streaming 기술 구현을 위한 개념 정리

Live Streaming Streaming이란 멀티미디어 파일을 다운로드 하는 동시에 실행하는 방법이나 기술을 말합니다. 저장되어 있는 동영상을 스트리밍하는것이 아니라 실시간으로 데이터를 받아 스트리밍하므로 Latencty 즉 지연시간이 중요합니다. Latency 프로토콜마다 지연시간이 다양한 이유는 방송 송출부터 사용자에게 전달하기까지 복잡한 파이프라인을 거치기 때문에 원인이 복합적입니다. 큰 원인은 아래 3가지 입니다. Latency Scale Quality 이들은 trade-off 관계이므로 스트리밍 기술을 사용하는 목적을 생각해서 선택하려합니다. Protocol viewtist는 하나의 스트리밍을 동시에 많은 사람들이 볼 수 있도록 송출해주는 플랫폼입니다. 따라서 리얼타임에 가장 가깝지만 1:1..

RedisRepository 이용하여 refreshToken 관리하기

설정 라이브러리 추가 스프링 부트에서는 spring data redis 라이브러리가 필요하므로 build.gradle 에 의존성을 추가해준다. implementation 'org.springframework.boot:spring-boot-starter-data-redis' 이를 통해 Lettuce, Jedis라는 두개의 오픈소스 라이브러리를 사용할 수 있다. Lettuce는 별도 설정 필요x, Jedis 는 별도의 의존성이 필요하다. Redis를 설정하는 두가지 방식 spring data redis가 제공하는 방법은 2가지이다. - RedisTemplate - RedisRespository spring data redis에 내장되어 있는 lettuce를 사용하고, 이번에는 RedisRepository을 ..

SPRING 2024.02.07

Redis 사용방법 (feat. RedisTemplate)

설정 라이브러리 추가 스프링 부트에서는 spring data redis 라이브러리가 필요하므로 build.gradle 에 의존성을 추가해준다. implementation 'org.springframework.boot:spring-boot-starter-data-redis' 이를 통해 Lettuce, Jedis라는 두개의 오픈소스 라이브러리를 사용할 수 있다. Lettuce는 별도 설정 필요x, Jedis 는 별도의 의존성이 필요하다. Redis를 설정하는 두가지 방식 spring data redis가 제공하는 방법은 2가지이다. - RedisTemplate - RedisRespository spring data redis에 내장되어 있는 lettuce를 사용하고, RedisTemplate을 설정해보자. ..

SPRING 2024.02.06

Process, Thread & Thread-safe

Process 일단 프로세스부터 정리해보자. 실행중인 프로그램을 프로세스라고 한다. 프로세스는 독립된 개체로, 운영체제로부터 별도의 메모리 영역을 할당받으며, 서로에게 접근이 불가능하다. 그렇다면, 여러개의 프로세스를 처리하기 위해서는 어떻게 해야할까? IPC 라는 커뮤니케이션 기법 (공유메모리를 활용해서 프로세스끼리 서로 상태를 주고받는거라 생각하면된다.) Thread 프로세스 안에서 실행되는 작업 단위를 스레드라고 한다. 하나의 프로세스는 여러개의 스레드가 포함된다. 스레드 또한 프로세스처럼 병렬로 처리가 가능하다. 프로세스와 스레드의 차이점 프로세스는 서로의 데이터에 접근할 수 없지만 스레드는 프로세스 내부에 존재하기 때문에 프로세스 데이터 영역에 접근이 가능하다. 또한 스레드들끼리는 IPC없이도 ..

CS/운영체제 2024.02.06

[Redis] Redis 알아보기

Redis를 안다고 생각했지만 프로젝트에서 토큰 관리를 할때 뭐가 뭔지 모르겠더라.. 사실 제대로 모르는듯.. 그래서 정리해보려고 한다. Redis Remote Dictionary Server 의 약자이다. dictionary (key-value)구조로 데이터를 저장하고 관리하는 서버를 의미한다. 레디스의 특징은 다음과 같다. 속도 레디스는 모든 데이터를 메모리에 저장하기 때문에 데이터 조회가 매우 빠르다. 즉 인메모리 구조이다. 인메모리란 컴퓨터 주기억 장치 RAM 에 데이터를 올리는 방법이다. 컴퓨터 내부에서 처리가 되므로 하드 디스크를 거치지 않아도돼서 속도가빠르다. 하지만 용량은 작아서 데이터 유실이 발생할 가능성이 있다. 또한 휘발성이기 때문에 중요한 데이터를 담는 용도로는 부적절하다. 물론 레..

DB 2024.02.05

[Swagger] RequestHeader 설정하기

환경 - spring boot : 2.6.3 - springfox 도입 배경 개인 프로젝트를 만들던중, swagger에서 회원정보를 얻는 api 를 실행했다. request header 에 토큰 값을 넣었는데 자꾸 에러가 났다. @GetMapping @PreAuthorize("hasRole('MEMBER')") public ResponseEntity getProfileInfo( @RequestHeader("Authorization") String token){ return ResponseEntity.ok("welcome!"); } Required request header 'Authorization' for method parameter type String is not present postman에서는..

SPRING 2024.01.29

[Feign Client] 정리 및 사용법

Feign Client 메일 발송 서비스인 mailgun를 스프링환경에서 간편하게 호출하기 위해서는 feign client라는 라이브러리가 필요하다. spring-cloud-starter-openfeign 으로 라이브러리를 추가해주면 된다. JPA처럼 인터페이스만 만들어주면 스프링이 자동으로 구현체를 만들어준다. mailgun 사용법은 여기를 보면된다. https://documentation.mailgun.com/en/latest/quickstart-sending.html How to start sending email — Mailgun API documentation Add a domain you own and verify it by setting up the DNS records we provide ..

SPRING 2024.01.25