[Java Mail] Could not convert socket to TLS; 문제 해결

문제 서버에서 javax email을 활용해 구글 이메일을 전송 할 때 아래와 같은 에러가 발생 했습니다. org.springframework.mail.MailSendException: Mail server connection failed; nested exception is javax.mail.MessagingException: Could not convert socket to TLS; nested exception is: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate). Failed messages: javax.mail.MessagingE..

Development/Daily Error 2022.10.12
BorgBackup 을 이용한 파일 백업

BorgBackup BorgBackup(이하 Borg)은 중복을 제거해주는 오픈소스 백업 프로그램 입니다 Borg의 기본 목표는 효율적이고 안전한 데이터 백업의 제공인데요, 데이터 중복 제거 기술을 활용해 Borg가 오직 변경된 데이터만 저장하도록 하고 있기 때문에 데일리 백업에 아주 적합하다고 합니다. 주요 특징 중복제거로 인한 효율적인 저장 공간 사용 각각의 파일을 다양한 청크로 쪼개고, 이전에 추가된 적이 없는 청크만이 리포지터리에 추가됩니다. 청크는 id hash 값이 같으면 중복으로 간주되는데, id hash를 에는 (hmac-)sha256 와 같은 암호학적으로 강력한 hash 나 MAC 기능이 사용된다고 합니다. 빠른 백업속도 데이터 암호화 데이터 압축: 모든 데이터는 아래의 다양한 압축 옵션..

Development/DevOps 2022.10.04
[Kotlin] Spring Rest Docs 적용하기 build.gradle.kts

Intro 안녕하세요. 이번에 토이 프로젝트로 진행 중인 코틀린 프로젝트에 Spring REST Docs 를 도입을 해 보았습니다. 회사에서는 모든 프로젝트가 메이븐으로 되어 있고, gradle 도 학습용으로만 사용해 보았기 때문에 다루는 방법을 아직은 잘 알지 못하는 상황인데 그와중에 코틀린 DSL 까지 사용하려니 레퍼런스도 충분하지 않아 굉장히 힘들었습니다. 기본적으로 Spring REST Docs 공식 레퍼런스의 안내를 따르고 막히는 부분들에서는 Kotlin DSL 을 사용한 다른 프로젝트들을 찾아 비교해보며 간신히 API 페이지를 띄우는데 성공 했는데, 그 과정을 공유해보겠습니다. 저처럼 Kotlin 프로젝트에서 Spring Rest Docs 도입에 어려움을 겪는 분들에게 도움이 되었으면 합니다...

Programming/Kotlin 2022.10.01
[Zsh] Oh My Zsh 자동완성 플러그인 추가 및 단축키 변경하기

Intro Shell Unix Shell은 MacOS나 리눅스 같은 유닉스 계열의 OS에서 Command Line user Interface 를 제공해주는 Command Line Interpreter 입니다. 운영체제에서 쉘 스크립트를 사용하여 시스템의 실행을 제어 하기 위해 사용하는데요. 보통은 내장 Terminal 이나 iTerm 같은 터미널 에뮬레이터를 사용하지만, 보통 서버에서는 Secure Shell (SSH) 을 통해 이루어지기도 합니다. Shell은 대표적으로 Bourne Shell(sh), Bourne Again Shell(bash), C Shell(csh), Z Shell(zsh) 등이 있는데요, 그중 zsh는 sh 를 기반으로 Bash, ksh, tcsh 등의 기능을 포함하여 여러가지 ..

IT ⁄ Computer/Mac 2022.09.29
[Kotlin] 코틀린에서 Mockito 사용시 final class 문제 해결

Intro 코틀린으로 코드를 작성하다보면 간혹가다가, 자바에서는 별 문제 없던게 의도대로 동작하지 않을 때가 있습니다. 이번에는 테스트 코드를 작성하다가 스터빙을 하려고 하는데 문제가 있었는데요, 아래와같이 테스트를 하려고 했습니다. // When val memberContext = Mockito.mock(MemberContext::class.java) Mockito.`when`(memberContext.member).thenReturn(member) quizService.edit(memberContext, quiz.id!!, quizEditDto) // Then val findById = quizService.findById(quiz.id!!) assertThat(findById.description)..

Programming/Kotlin 2022.09.25