profile
사수없는 개발자의 좌충우돌 성장기. 여기 적는 글들은 신뢰성 0%이므로 믿지 마세요!
post-thumbnail

Kotlin 코루틴 대 자바 가상 스레드 [번역]

Kotlin Coroutines vs Java Virtual Threads — A good story, but just that…https://itnext.io/kotlin-coroutines-vs-java-virtual-threads-a-good-story-

약 24시간 전
·
0개의 댓글
·

Opencsv를 활용한 Spring Batch Custom tasklet

별 건 없고, 회사에서 간단히 CSV 파일을 테이블 규격에 맞춰서 DB에 적재시키는 배치서버를 만들다가, OPENCSV 라이브러리 도움을 받은 게 있어서 공유해보고자 한다. CSV 파일을 읽을 때, 골칫거리 중 하나가 칼럼에 있는 줄바꿈인데, opencsv를 활용하면,

5일 전
·
0개의 댓글
·

Kotlin ObjectMapper(Jackson) 설정

kotlin을 사용하면 data class나 lazy loading 문제들 때문에, Json 직렬화, 역직렬화를 원활하게 하기 위헤 부가적인 설정들이 필요하다. 나는 커스텀하게 쓰는 설정들이 있으니, 여기서 공유해보고자 한다.예를 들어 다음과 같은, enum class

5일 전
·
0개의 댓글
·

WebClient에 ProgressListner를 달 수는 없을까..?

상황은 요렇다. 필자는 서버(SpringBoot) httpClient로 WebClient를 사용하고 있는데, 필자의 서버에는 파일을 받아서 마스터링해서 응답해주는 기능이 있는데, 이 과정에서 외부 API를 호출하는 코드가 여러군데 존재했다. 그 중 특정 외부 API를

2023년 5월 9일
·
0개의 댓글
·

java.io.IOException: Broken pipe

SseEmitter 를 사용해 서버에서 단방향으로 프론트에게 메시지를 전송 중.. 이런 에러가 떴다..나 같은 경우, SSE Connection을 열었는데, 특정 함수가 시간을 오래 소모하고 있었고 그 동안, Server sent event를 전송하지 않으면 자동으로

2023년 5월 9일
·
0개의 댓글
·

NGINX + SpringBoot + GeoIP2 접속국가판별

사용자 IP를 직접 DB에 저장하는 건 리스크가(법적인 문제) 있다고 판단. 대신 접속국가를 판별해 DB에 저장시키는 로직을 작성하자. 우리 서버는 NGINX가 프록시 서버 역할을 하고 있다. MAXMIND GeoIP는 client Ip를 이용해서 대략적인 국가를 판별

2023년 4월 24일
·
0개의 댓글
·

springBoot multiple template resolver config

필자는 이메일 발송 할 때 템플릿 엔진으로서 타임리프를 사용하고 있다. 이메일 양식은 resource/templates 폴더 내에 위치하고 있는데, 이메일 양식이 많아짐으로서, 폴더쩨로 구분해야 될 필요가 생겼다. 필자는 SpringTemplateEngine에 넘겨줄

2023년 4월 7일
·
0개의 댓글
·
post-thumbnail

ChatGpt로 알아보는 Git File history 삭제

Temp Body

2023년 3월 23일
·
0개의 댓글
·
post-thumbnail

SharedArrayBuffer is not defined

상황은 대충 이렇다. Vue.js로 만든 앱을 AWS S3 버킷에 올리고 CloudFront를 통해서 그 버킷을 호스팅하고 있는 상황이다. 벡엔드 서버는 스프링부트를 통해서 REST API 로 통신하고 있는 형태이다. 둘 간에 프록시 서버는 NGINX로 구성되어 있다.

2023년 3월 22일
·
0개의 댓글
·
post-thumbnail

Springboot AWS MediaConvert 통합

AWS의 MediaConvert API를 활용하여 오디오 파일을 hls 포멧으로 바꾸어서 서빙해오는 작업이 있었다. 기존에는 별도의 AWS 람다와 트리거를 활용하여 변환시켜 주고 있던 것을 스프링부트 서버 내로 통합하기로 결정했다. 기존에는 파일을 컨버팅하는 시작시점과

2023년 3월 13일
·
0개의 댓글
·

SpringBoot + FFmpeg 사용

파일을 변환해서 외부 api 에게 넘겨줘야 하는 일을 맡았다. 간략하게 이야기하자면, mp4 파일 중에서 오디오 소스만 추출해서 wav 파일로 만들고, 이 wav 파일을 외부 API 에게 넘겨주고 반환받은 Byte array를 다시 wav 파일로 만든 다음, 다른 mp

2023년 2월 14일
·
0개의 댓글
·
post-thumbnail

비효울적인 Blocking 코드 => WebClient 사용으로 개선

기존상황 기존에 파일을 업로드하면, 업로드 된 파일을 외부 API 에게 넘겨주고 마스터링된 결과를 받아 반환하는 API 를 만들었다. 문제는 이 과정에서 외부 API를 호출하는 부분이 여러 군데 있었고 합치면 11~12초 정도 걸린다는 점이었다. 새로 리팩터링하면서

2023년 2월 13일
·
0개의 댓글
·
post-thumbnail

AWS 인프라 구축 - Private EC2 구성

CIDR(Classless Inter-Domain Routing)는 클래스 없는 도메인 간 라우팅 기법으로 1993년 도입되기 시작한 최신의 IP주소 할당 방법입니다.

2023년 1월 20일
·
0개의 댓글
·
post-thumbnail

Thymeleaf 사용할 때, org.thymeleaf.exceptions.TemplateInputException: Error resolving template

이메일 템플릿으로 타임리프를 사용해 전송 중 Local에서는 정상적으로 날라가는데, 리눅스 환경에 배포 시 template 조각을 찾을 수 없다는 에러가 떴다...경로상의 문제인 것 같아.. / 를 제거해봤다.이제는 배포환경에서도 잘 돌아간다..

2023년 1월 18일
·
0개의 댓글
·

JS 에 대해 누구나 알고있을 법한 상식들~

1. 역사 1995년 자바스크립트는 유저와의 상호작용을 위해 10일만에 탄생한 언어다. "HTML 페이지를 동적으로 만드는 것"에 목적이 있어 가벼운 인터프리터 언어로 만들어졌다. 2009년 구글은 당시 브라우저에서 자바스크립트를 동작시키는 엔진에 한계를 느꼈고,

2023년 1월 17일
·
0개의 댓글
·
post-thumbnail

DeSerialize Kotlin Enum field

간단히 Request 요청을 받는 DTO class 가 있다고 치자.이 data class에는 Country라는 enum class가 필드로 선언되어있다. 나는 요청을 enum으로 받기 위해, @JsonValue를 활용했다.정상적으로 문자열 요청이 enum으로 잘 매핑

2023년 1월 16일
·
0개의 댓글
·
post-thumbnail

Vim 적당히 알아보기

2023년 1월 15일
·
0개의 댓글
·

AWS Aurora Replication Datasource

필자는 새로운 프로젝트를 시작함에 있어서, AWS Aurora mysql에 Replication을 적용했다. Master DB, Slave DB로 나눠 동일한 데이터를 가지고 있게 한 후, select요청은 Slave DB에서만 담당하게 하고, CUD요청은 Maste

2023년 1월 14일
·
0개의 댓글
·
post-thumbnail

Oauth2 인증 기능 구현중..

최근 구글 Oauth2 인증기능을 구현할 일이 있었는데, 한 번 정리해보고자 쓴다.OpenID Connect 인증 절차를 구현했는데.. 뭔가 찜찜한 일이 발생했다. 구글 공식문서에서 sub는 항상 가져오는 값으로, 사용자의 식별자를 의미하며 모든 구글 계정에서 고유하며

2023년 1월 14일
·
0개의 댓글
·