[DEV] 기록 169

The Twelve Factors App (12 팩터 앱)

개요 12 팩터 앱 방법론은 Heroku에서 제시한 모범 사례 지침이며 클라우드 네이티브 마이크로 서비스를 구축할 때 동적인 확장과 기본 사항에 관한 개발 및 설계 지침의 모음입니다. 해당 방법론은 클라우드 네이티브 앱을 구축하면서 흔히 발생할 수 있는 문제에 대해 용어를 제공할 뿐만 아니라 이러한 문제들에 대한 해결책도 제공합니다. 곧 Spring Cloud MSA가 적용된 프로젝트를 진행할 예정이기 때문에 12 팩터 앱 방법론을 간략하게 정리해 보겠습니다. 클라우드 네이티브 애플리케이션 12 팩터 앱에 대해 정리하기 전에 우선 클라우드 네이트브 앱에 대한 개념 정리가 필요합니다. 클라우드 네이티브 애플리케이션은 클라우드 컴퓨팅 아키텍처의 장점과 서비스를 활용할 수 있도록 특별히 설계된 앱입니다. 기존..

[DEV] 기록 2023.02.25

[Java] zip 파일 내 구성 확인하는 코드

개요 클라이언트에서 올린 zip 파일이 유효한지 확인하기 위해 zip 파일 내 구성을 확인해야 했습니다. 저 같은 경우에는 엑셀 파일과 함께 wav 파일로만 이루어진 zip 파일을 감싼 zip 파일을 받아야 했습니다. __MACOSX? 코드 소개에 앞서 __MACOSX 폴더의 존재에 대해 알 필요가 있습니다. 윈도우 환경에서 zip 파일을 만들 때는 사용자가 지정한 파일들로만 zip을 구성하지만 Mac의 경우 zip 파일을 만들 때 파일의 확장 정보를 기록하는 리소스 포크가 저장된 폴더인 __MACOSX 폴더를 zip 파일 내 같이 저장됩니다. 따라서, 코드에서 위 폴더를 확인하지 않도록 분기 처리를 해줘야 합니다. 코드 위 코드를 간단히 설명하자면 아래와 같습니다. 클라이언트로부터 MultipartFi..

[DEV] 기록 2023.02.14

[SpringBoot] Apache poi 버전에 따른 오류들

개요 프로젝트를 진행하면서 Apache Poi 라이브러리 버전이 맞지 않아 아래와 같은 오류가 발생했습니다. java.lang.NoSuchMethodError: org.apache.poi.ss.usermodel.Cell.getCellType() Found interface org.apache.poi.util.POILogger, but class was expected error 원인 maven 혹은 gradle 내 Apache Poi 버전이 맞지 않아 발생하는 문제였습니다. 해결 방법 두 문제 모두 아래와 같이 버전을 맞춰주면 해결됩니다. org.apache.poi poi 4.1.2 org.apache.poi poi-ooxml 3.15 결국에는 fastexcel로 바꾸긴 했지만 정보 공유 차원에서 게시물..

[DEV] 기록 2023.02.03

[Maven] java.lang.IllegalAccessError: class lombok.javac.apt.LombokProcessor (in unnamed module @0x2fbb01ba) cannot access class com.sun.tools.javac.processing.JavacProcessingEnvironment (in module jdk.compiler)

개요 SpringBoot 프로젝트를 실행하는데 아래와 같은 에러가 발생했습니다. java.lang.IllegalAccessError: class lombok.javac.apt.LombokProcessor (in unnamed module @0x2fbb01ba) cannot access class com.sun.tools.javac.processing.JavacProcessingEnvironment (in module jdk.compiler) 원인 pom.xml에 명시된 Java 버전과 lombok 버전 호환성이 맞지 않아 발생하는 문제였습니다. 해결 방법 저 같은 경우 Java 11 버전을 사용하고 있었고 lombok은 별도 version 명시 없이 사용하고 있었는데 Java 11과 호환성이 맞는 버전인..

[DEV] 기록 2023.01.27

[Maven] The cb argument must be of type function received undefined

개요 maven package 명령어를 작성하는데 아래와 같은 에러가 lib/modules/mvn/target.js 파일에서 아래 에러가 발생했습니다. TypeError ERR_INVALID_ARG_TYPE: The cb argument must be of type function received undefined 원인 maven 버전과 java 버전 호환성이 맞지 않아 발생하는 원인인 것 같습니다. 기존 파일에서는 fs.makedir() 메서드가 콜백 메서드가 아니어서 발생하는 문제였습니다. 기존 파일 var path = require('path'); var fs = require('fs'); const config = require('./package'); const http = require("ht..

[DEV] 기록 2023.01.27

[Intellij] resource 폴더를 인식하지 못할 때 해결 방법

개요 깃에서 프로젝트를 pull 받고 실행을 하려는데 Intellij에서 resources 폴더를 인식하지 못하는 문제가 발생했습니다. 해결 방법 위와 같은 문제가 발생할 경우 아래와 같이 수동으로 해결해야 합니다. File > Project Structure > Project Settings > Modules > 프로젝트 구조 내 resources 폴더 클릭 > Mark as Resources 버튼 클릭 > Apply

[DEV] 기록 2023.01.27

[Elasticsearch] received plaintext http traffic on an https channel, closing connection

개요 local에서 elasticsearch를 실행한 뒤 localhost:9200으로 접속하니 아래와 같은 메시지와 함께 정상적으로 접근이 안 되는 것을 확인했습니다. received plaintext http traffic on an https channel, closing connection 원인 elasticsearch를 기동할 때 https를 통해서 ssl 인증서가 필요하게 되는데, 해당 인증서에 대한 선행작업이 이루어지지 않을 경우 보안 관련 이슈가 터져서 발생하는 문제였습니다. 해결 방법 로컬에서 실행할 때는 보안 관련 이슈를 고려하지 않아도 되므로 config > elasticsearch.yml 파일 내 아래의 옵션을 true에서 false로 변경한 뒤 재기동해주면 해결됩니다. xpack...

[DEV] 기록 2022.12.03

[Spring Cloud] Spring Cloud 정리

개요 최근에 MSA와 함께 Spring Cloud를 학습하고 있어 Spring Cloud 하위 프로젝트들 중 자주 쓰이는 프로젝트들 위주로 개념 정리해보겠습니다. 1. Spring Cloud란? 마이크로서비스 아키텍처를 지원하기 위한 프레임워크 공식 사이트: https://spring.io/projects/spring-cloud Spring Boot와 Spring Cloud와 연동돼서 개발이 진행되기 때문에 Spring Boot 환경에서 개발하는 것이 필수 버전 디펜더시를 가짐 ex) Spring Boot 2.4.x, 2.5.x는 Spring Cloud 2020.0.x 버전을 사용 (그 미만 버전들은 호환 불가능) 최신 버전인 2.6.x와 2.6.x는 Spring Cloud 2021.0.x 버전만 연동 ..

[DEV] 기록 2022.10.31

COS Pro 1급 Java, C++, C 합격 간단 후기

COS Pro 1급에는 총 3 영역이 있는데 아래와 같습니다. 1. 코드 이해 (빈칸 채우기) 2. 디버깅 (코드 한 줄 수정) 3. 설계 (풀 코딩) 저번 SQLD 합격 후기와 비슷하게 작성해보겠습니다. 문제 유형 총 10문제 (부분점수 인정) 처음 4문제: 코드 이해 (빈칸 채우기) 그다음 3문제: 디버깅 (코드 한 줄 수정) 마지막 3문제: 설계 (풀 코딩) 합격기준 COS Pro 1급 Java에 합격하기 위해서는 총점 1000점 중 600점 이상을 취득해야 하며, 각 영역에 대한 과락은 없습니다. 즉, 설계를 다 틀리더라도 코드 이해 및 디버깅에서 600점 이상을 취득하면 합격할 수 있습니다. 문제 난이도 문제 난이도는 프로그래머스에서 제공하는 COS Pro 1급 샘플 문제와 유사합니다. (쉽습니..

[DEV] 기록 2022.10.23

[SpringBoot 2.X.X] No beans of 'AuthenticationManager' type found.

개요 Spring Security를 적용하는데 아래와 같은 메시지와 함께 에러가 발생했습니다. Could not autowire. No beans of 'AuthenticationManager' type found. 원인 release note에 따르면 1점대 버전에서는 별도 처리 없이 SpringBoot에서 제공하는 AuthenticationManager를 주입시킬 수 있었지만 2점대 버전부터는 WebSecurityConfigurerAdapter를 상속받는 클래스에서 authenticationmanagerBean() 메서드를 오버라이드 해야 autowire가 가능했습니다. 자세한 내용은 아래 링크로 첨부합니다. https://github.com/spring-projects/spring-boot/wiki..

[DEV] 기록 2022.10.20