프로젝트
-
[Kotlin] AWS S3에 업로드하기프로젝트/미디어 스트리밍 서버 프로젝트 2022. 12. 19. 00:01
목표 - API를 통해 S3 bucket에 업로드를 수행한다(또는 localstack 테스트) locakstack이란? 오픈소스로 만들어진 프레임워크입니다. 가장 큰 특징으로 클라우드 환경을 로컬에서 직접 구현해서 테스트할 수 있습니다. AWS 관련의 Application들을 Docker 컨테이너로 만들어서 Cloud환경과 동일한 환경을 구축할 수 있습니다. 사전 세팅 - 현재 S3 bucket이 public access 가능한 상황입니다.(참고 : https://zzang9ha.tistory.com/358) - Spring initializr(Gradle Project, Kotlin, Spring Boot 2.7.4, Jar, Java 11) + dependencies(spring web) - Post..
-
AWS Foundation 기반 온디맨드 비디오 솔루션 구현 - 이론편프로젝트/미디어 스트리밍 서버 프로젝트 2022. 12. 12. 00:01
개요 스트리밍 서비스 구축을 위해 [그림]1과 같은 서비스를 배포할 수 있는 방법을 알아보겠습니다. AWS 공식문서를 기반으로 작성되었습니다. https://docs.aws.amazon.com/solutions/latest/video-on-demand-on-aws-foundations/video-on-demand-on-aws-foundations.pdf 비디오 콘텐츠 수집과 처리에 관련하여 조금 더 복잡한 workflows가 존재합니다. (Video on Demand on AWS) 각각의 역할 - AWSElementalMedia는 소스 형식의 미디어 파일을 스마트폰, 태블릿, PC 및 기타 장치와 같은 장치에서 재생되는 버전으로 코드 변환합니다. - 객체 스토리지용 AmazonSimpleStorageSe..
-
build.gradle to build.gradle.kts (Groovy를 Kotlin으로 마이그레이션)프로젝트/자프링 -> 코프링 마이그레이션 2022. 12. 11. 00:01
개요 모든 파일을 자바에서 코틀린으로 변경하였습니다. 이제 남은 것은 build.gradle의 groovy 기반의 빌드 스크립트를 kotlin으로 바꾸고자 합니다. Groovy DSL -> Kotlin DSL DSL은 특정 분야에 최적화된 프로그래밍 언어를 말합니다 예를 들면 SQL이 있습니다. Gradle공식문서에서 친절하기 Groovy를 Kotlin으로 마이그레이션 하는 문서를 제공합니다 https://docs.gradle.org/current/userguide/migrating_from_groovy_to_kotlin_dsl.html Migrating build logic from Groovy to Kotlin Declaring dependencies in existing configurations ..
-
OTT는 어떻게 콘텐츠를 보호할까?프로젝트/미디어 스트리밍 서버 프로젝트 2022. 12. 8. 00:01
개요 유료 콘텐츠 사업자의 입장에서 가장 우려되는 부분은, 서비스하는 콘텐츠가 불법으로 유출되어 유로 가입자의 수가 줄거나 성장이 둔화하는 것입니다. 이러한 콘텐츠 불법 유출을 막기 위해 여러 OTT 서비스들은 DRM과 워터마킹이라는 기술을 이용해 콘텐츠를 보호합니다. DRM이란? Digital Rights Management의 약자로 디지털 권한 관리는 저작권자가 그들이 배포한 디지털 자료의 사용을 제어하고 의도한 용도로만 사용하도록 제한하는 데 사용되는 모든 기술을 지칭하는 용어입니다. 주로 디지털 콘텐츠를 인증된 사용자가 인증된 기간 동안만 사용 가능하도록 강제하여, 정당한 비용을 지불하지 않은 불법적인 사용을 방지합니다. DRM의 핵심 기본적으로 원본 콘텐츠는 DRM 패키징이라는 과정을 거쳐 암호..
-
@SpringBootApplication 자바[Java] -> 코틀린[Kotlin]으로 변경프로젝트/자프링 -> 코프링 마이그레이션 2022. 12. 6. 00:01
기존 Java의 @SpringBootApplication @SpringBootApplication public class AnthillApplication { public static void main(String[] args) { SpringApplication.run(AnthillApplication.class, args); } } Kotlin의 @SpringBootApplication @SpringBootApplication class AnthillApplication fun main(args: Array) { SpringApplication.run(AnthillApplication::class.java, *args) } https://www.baeldung.com/kotlin/spring-boot..
-
[kotlin][Mockito][Junit5] any() must not be null 에러 해결프로젝트/자프링 -> 코프링 마이그레이션 2022. 12. 5. 00:01
개요 기존의 Mockito를 활용하여 given절에 메서드의 인자로 any()를 활용했습니다. any() must not be null java.lang.NullPointerException: any() must not be null any() 함수에서 null을 리턴하므로 에러가 발생합니다. kotlin class는 final이기 때문에 mocking이 불가능하다고 합니다. 이때 any를 사용하면 발생하는 예외 -> 특정 타입으로 구체화해서 해결하였습니다. 예시) 인자가 String이기 때문에 String 특정 타입으로 구체화 ArgumentMatchers.anyString() 문제 발생 하지만 직접 만든 클래스의 경우에는 특정 타입으로 구체화하는게 불가능했습니다. 이때 별도의 라이브러리 추가없이 an..
-
Kotlin 각종 어노테이션 사용법(@Index, @Embeddable, @Size)프로젝트/자프링 -> 코프링 마이그레이션 2022. 12. 1. 00:01
@Embeddable을 data class에 붙여주자 다음과 같은 경고가 발생하였습니다. For property-based access both setter and getter should be present 이대로 실행은 되나 경고가 불편하기 때문에 해결하고자 합니다. JPA가 FIELD, 프로퍼티(getter, setter) 액세스 두 가지 방법을 사용합니다. 프로퍼티 접근은 최근에는 권장되지 않으며 getter가 존재하여 JPA가 정확히 판단하기 어려워서 나오는 경고 메시지입니다. @Column으로 필드 접근 방식을 사용하고 있다는 것을 명시하면 해결됩니다. @Embeddable data class Address( @Column val zipCode : String, val streetNameAdd..
-
Kotlin과 Lombok 컴파일 에러 해결프로젝트/자프링 -> 코프링 마이그레이션 2022. 11. 30. 00:01
Java 코드를 코틀린으로 변경하던 중 컴파일 에러가 발생했습니다. fun toBoardResponseDTO(): BoardResponseDTO { return BoardResponseDTO.builder() .id(id) .title(title) .content(content) .writer(writer) .hits(hits) .build() } 위의 코드를 호출할때 발생하였는데 에러 로그는 다음과 같습니다. Unresolved reference: builder BoardResponseDTO는 Lombok을 사용하여 @Builder를 사용합니다. 원인 문제의 원인을 이해하려면 Java 코드와 Kotlin 코드가 섞여 있는 프로젝트의 빌드 과정을 알아야 합니다. 1. Kotlin 컴파일러가 Kotlin을..