Kotlin
-
[Ktor] tailcard로 URL 파라미터 수집하기Ktor 2023. 1. 25. 22:53
오브젝트 스토리지 api를 개발하면서 슬래시가 포함된 URL 경로를 하나의 파라미터로 수집해야 하는 상황이 생겼다. 버킷 내 폴더(실제로 폴더는 아니지만 path형식으로 구분하므로 이 글에서만 폴더라고 지칭)가 있는 경우, path형식의 오브젝트 키를 파라미터로 수집해서 넘겨야하는데, 보통 URL 파라미터는 슬래시로 구분되어 path parameter를 사용해도 해당 엔드포인트에 매칭이 되지 않았다. 예를들어 오브젝트 키가 one/two/three인 경우, get("/{objectKey}") { val objectKey = call.parameters["objectKey"] } 그냥 path parameter를 쓸 경우 매칭되는 URL을 찾지 못해 예외가 발생한다. Ktor에서는 이런 상황을 해결하기 위..
-
[AWS S3] S3 호환 타 클라우드 플랫폼의 presigned URL 생성하기DEVELOP 2023. 1. 23. 22:47
AWS가 아닌 타 클라우드 플랫폼에서 S3 호환 API를 이용할 때, presigned url을 생성하는 방법에 대한 자료가 많이 없어서 처음에 엄청나게 헤맸다. 나 다음의 어느 누군가는 헤매지 않길 바라면서... 해결과정을 블로그에 기록해둔다. Presigned URL이란? presigned url이란 미리 서명된 url로, 해당 url로 접속 시 일정기간동안 인증정보가 없어도 오브젝트 스토리지에 접근할 수 있게 해준다. 이 개념이 필요한 이유는 보안 때문인데, 클라이언트에 시크릿 키처럼 공개되면 안되는 정보들이 노출되는 위험을 방지하기 위해 사용한다. 클라이언트가 서버에 presigned url을 받기위한 요청을 날리고, url을 받으면 그 때 그 url로 직접 파일 업로드/다운로드를 하는 개념이다...
-
[Kotlin] Coroutine과 Multi-ThreadKotlin 2022. 10. 25. 00:44
코틀린 언어에서는 Coroutine이란 개념이 있습니다. 코틀린의 강점으로 많이 언급되는 개념으로, 멀티 스레드와 비슷하지만 다르다고만 알고있어서, 좀 더 자세한 이해가 필요하다고 생각되어 학습한 내용을 블로그에 정리해 둡니다. Process와 Thread, 그리고 Multi-Thread Coroutine을 이해하기에 앞서, 먼저 프로세스와 스레드에 대한 개념부터 정리합니다. Thread는 단어 자체의 의미로는 '실'이라는 뜻입니다. 프로그래밍에서는 실행흐름을 뜻합니다. Process는 메모리에 올라와 실행되고 있는 프로그램의 인스턴스입니다. 독립적인 개체로, 각각의 프로세스는 독립된 Heap 메모리 영역을 할당받습니다. 프로세스는 최소 1개의 스레드(이를 '메인스레드'라고 칭합니다.)를 가지게 됩니다...