안녕하세요. 다메카솔입니다. 🐿️

개발중에 발생한 에러를 예방하기위해 원인과 해결방법을 정리해보았습니다.

발생 배경

API에 Request를 보낼때, 서버에서 다음과 같은 에러가 발생하였습니다.

오류 메시지

Cannot construct instance of `class` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator))

원인

위 에러는  주로 Jackson 또는 다른 JSON 라이브러리를 사용하여 JSON 데이터를 해당 클래스의 객체로 변환하는 중에 발생합니다. 이러한 라이브러리들은 클래스를 직렬화하거나 역직렬화할 때 기본 생성자 (default constructor) 또는 특정 생성자를 사용하는데, 클래스에 기본 생성자가 없거나 또는 라이브러리가 사용할 수 있는 생성자가 없을 때 발생합니다.

블록을 조립한 레고 이미지

 

직렬화와 역직렬화에 대해 더 궁금하시다면 아래 글도 함께 읽기 좋습니다.

https://damecasol.tistory.com/33

 

[Java]Serializable 직렬화

가끔 인터페이스를 보다보면 Serializable 이란 인터페이스를 상속한 클래스를 볼 수 있었다. 검색해봤을땐 직렬화를 가능하게 해주는 인터페이스고, 그렇게 하여 파일이나과 인터넷으로 객체를

damecasol.tistory.com

 

해결방법

  • 기본생성자 추가

클래스에 기본 생성자를 추가합니다.. 기본 생성자란 매개변수를 가지지 않는 생성자입니다.

public class YourClass {
    public YourClass() {
        // 기본 생성자 내용
    }
}
  • 매개변수가 있는 생성자의 존재

클래스에 매개변수가 있는 생성자가 있는 경우, 해당 생성자도 정의되어 있는지 확인합니다. 만약 라이브러리가 특정 생성자를 필요로 하는데 그 생성자가 없다면 이 오류가 발생할 수 있습니다.

public class YourClass {
    public YourClass(String param1, int param2) {
        // 매개변수가 있는 생성자 내용
    }
}
  • @JsonCreator 어노테이션 사용

만약 여러 생성자가 있는 경우, Jackson 라이브러리에서 사용할 생성자를 명시하기 위해 @JsonCreator 어노테이션을 사용할 수 있습니다.

public class YourClass {
    private String param1;
    private int param2;

    @JsonCreator
    public YourClass(@JsonProperty("param1") String param1, @JsonProperty("param2") int param2) {
        this.param1 = param1;
        this.param2 = param2;
    }
}

참조

https://fasterxml.github.io/jackson-databind/javadoc/2.13/com/fasterxml/jackson/databind/ObjectMapper.html

 

ObjectMapper (jackson-databind 2.13.0 API)

Convenience method for doing two-step conversion from given value, into instance of given value type, by writing value into temporary buffer and reading from the buffer into specified target type. This method is functionally similar to first serializing gi

fasterxml.github.io

 

문의 사항이나 도움이 필요하신 분은 댓글 달아주세요!

'IT > JAVA' 카테고리의 다른 글

[Mybatis] CDATA 란?  (0) 2023.03.15
[Java]Serializable 직렬화  (0) 2022.06.12

안녕하세요. 다메카솔🐿️ 입니다.

요즘 PKM(개인지식관리)와 옵시디언, 제텔카스텐에 관심이 생겨서 읽었던 책을 소개해드립니다.

https://product.kyobobook.co.kr/detail/S000001534370

 

하우 투 제텔카스텐(How to Zettel-Kasten) | 제레미 강 - 교보문고

하우 투 제텔카스텐(How to Zettel-Kasten) |

product.kyobobook.co.kr

 

독서기간 : 2023.10

독서시간 : 5H

평점 : ★★☆☆☆

한줄평 : 제텔카스텐 입문 책, 하지만 바로 적용하기는 힘든 기본서

 

개인지식관리에 관심이 생기며, 세컨드브레인(https://damecasol.tistory.com/95) 책을 읽은 뒤에 메모 관리 방법을 더 개선하기 위해 제텔카스텐 책을 읽었습니다.

 

관련 서적을 탐색하였을 때, 독일의 사화학자 니클라스 루만의 메모기법을 숀케 아레스가 연구 분석 한 뒤 소개한 제텔카스텐 책과 이번에 읽은 하우 투 제텔카스텐 책 2권이 있었습니다.  https://product.kyobobook.co.kr/detail/S000001534368

 

제텔카스텐 | 숀케 아렌스 - 교보문고

제텔카스텐 |

product.kyobobook.co.kr

책 내용을 훑어봤을 때, 조금 더 가볍고 읽기 쉽겠다고 생각된 하우 투 제텔카스텐 책을 출퇴근하면서 읽었는데, 개인적으로 책을 읽은 뒤에 큰 도움을 받았다고 느끼지는 못했습니다.

 

이유를 고민해보면, 우선 출퇴근시간이라는 TPO에 맞지 않은 책이었다는 점이었습니다.

메모 관리기법을 실제로 적용하기 위해서는, 메모 도구들을 점검하고 템플릿을 만들고 실제로 써보면서 숙달시켜야 하는데, 이론만 읽고 적용을 하지 못하니 휘발성 지식으로 사라져 결국 기존의 메모습관에서 머물러있게 되었습니다.

또 한가지는 책이 전달하는 내용의 효용성보다 유튜브에서 제텔카스텐을 소개하고 적용하도록 정리되어있는 영상들이 더 큰 도움이 된다고 느꼈습니다. 영상들은 실제 사용법도 소개해주고 중요내용을 짧게 요약하여 핵심을 쉽게 파악할 수 있었는데, 책을 읽을때는 어려웠다고 느껴졌습니다.

 

하지만 제텔카스텐을 제대로 알기 위한 내용들이 잘 정리되어 있어서 읽기위한 준비가 잘 안되어있을 뿐이지, 후에 다시 한번 읽어보고 싶은 책이었습니다.

지난 2023-10-28일, AWS Solutions Architect - Assosiate 시험에 응시하였습니다.

 

최근에는 클라우드를 사용하지 않는 시스템을 찾는 것이 힘들 정도로 많은 조직과 기업들이 클라우드 환경에서 서비스를 운영하고 있습니다. 이러한 상황에서 시스템 운영을 더 효과적으로 하기 위하여 클라우드 서비스에 대해 공부를 해야겠다는 필요성을 느꼈으며, 이왕 공부하는 김에 좀 더 체계적으로 공부하고 이를 테스트하기 위하여 시험을 준비하였습니다.

 


처음 시험을 준비할 때는 다양한 종류의 클라우드 서비스가 있는데, 어떤 것을 먼저 공부할지부터 선택하였습니다.

Amazon Web services, Google Cloud Platform, Microsoft Azure, Naver Cloud Platform 등 여러 클라우드 서비스가 있는데, 그 중에 가장 많이 사용하는 AWS를 선택하여 학습을 진행하였습니다.

 

AWS는 다양한 종류의 자격 시험이 존재합니다.

이중에 백엔드 개발자들이 보편적으로 많이 응시하는 Solutions Architect Associate level로 시험을 준비하였습니다.


시험을 준비할 때, 인터넷에 다양한 사람들의 시험 후기와 학습자료, 노하우 등을 찾아 저에게 적합한 커리큘럼을 구성하였습니다.

가장 많이 추천하는 Udemy 강의를 수강하고, 직접 실습한 뒤에, 기출 문제를 풀고 시험을 응시하였습니다.

https://www.udemy.com/course/aws-certified-solutions-architect-associate-saa-c03


시험 내용은, AWS 서비스 전반에 걸쳐 비용 및 성능에 최적화된 솔루션 설계에 중점을 두고, AWS Well-Architected Framework에 대한 이해력을 시험합니다. 

주요 과목에 대한 정보는 다음과 같습니다.

배우게 될 내용

이 자격증을 준비하고 취득하면 다음을 증명할 수 있습니다.

  • 컴퓨팅, 네트워킹, 스토리지 및 데이터베이스 AWS 서비스는 물론, AWS 배포 및 관리 서비스에 대한 지식과 기술
  • AWS에서 워크로드를 배포, 관리, 운영한 경험과 보안 제어 및 규정 준수 요구 사항 구현에 대한 지식과 기술
  • AWS Management Console 및 AWS Command Line Interface(CLI) 사용에 대한 지식 및 기술과 AWS Well-Architected Framework, AWS 네트워킹, 보안 서비스 및 AWS 글로벌 인프라에 대한 이해
  • 주어진 기술 요구 사항에 부합하는 AWS 서비스를 식별하고 AWS 기반 애플리케이션의 기술 요구 사항을 정의하는 능력

개인적으로 AWS 서비스를 공부하는 것 뿐만 아니라, 주니어 개발자의 입장에서 서비스를 구성하는 여러 필수개념들(로드밸런스, 헬스체크, CDN, DNS, VPC, 네트워크, 프록시와 캐시, 다양한 종류의 데이터베이스)을 공부할 수 있었다는 점에서, 만족도가 큰 시험이었습니다.


시험은 Personal Vue를 통하여 온라인으로 진행하였습니다.

AWS 자격증 챌린지를 통하여 다소 비싼(150 달러) 시험을 50% 할인받을 수 있는 바우쳐를 얻을 수 있으니, 시험 준비하시는 분들은 꼭 신청하여 할인 받으시길 바랍니다.

예시 주소 : AWS Professional 자격증 챌린지

https://pages.awscloud.com/APAC-ln-GC-TrainCert-Professional-Certification-Challenge-Korea-Registration-2023.html

 

클라우드 서비스 | 클라우드 컴퓨팅 솔루션| Amazon Web Services

 

aws.amazon.com

 

많은 사람들이 현장 시험을 추천하는데, 제가 계획한 시험 일정으로는 현장시험 일정이 존재하지 않아 어쩔 수 없이 온라인을 통하여 시험을 진행하였습니다.

시험을 신청하실 때, 한국인의 경우 추가 30분을 더 받을 수 있으므로 신청하시는 것을 권장드립니다.

한국어로 신청하여도 영어지문을 확인할 수 있으며, 몇몇 문제의 경우 번역이 매끄럽지 않아 영어지문으로 보는 것이 이해가 잘 되는 경우가 있습니다.

 

안내에 따라 시험을 신청하고 예약을 하고나면, 웹캠과 마이크가 가능한 컴퓨터를 통하여 시험환경을 검사한 뒤에, 온라인 시험을 진행하게 됩니다.

이때 주의하실 점은 시험에서 요구하는 시험환경이 있는데, 준비가 안되어 있으면 외국인 감독관이 환경을 정리하도록 지시를 하게됩니다.

저는 미약한 영어듣기 능력으로 인해 다소 고통받았는데(안경닦이랑 EarBuds 단어를 못알아들어서... ㅠ.ㅠ) 지시받았던 내용은 모니터 아래를 깨끗하게 정리하는 것과, 시험보는 환경에 손이 닿지않는 곳에 물건들을 치우는 것, 그리고 양 손에 스마트워치 등 장비를 차고있는지 검사하기 위해 팔을 보여주는 것 등이 있었습니다.(팔 확인은 검사 시작과 종료, 총 2번에 걸쳐서 실시하였습니다)

또 시험 진행 중에 외부에서 소리가 들리거나 대답을 하게되면 결격사유라는 조항이 있으므로 이에 유의하시길 바랍니다.


시험이 끝나면 최대 5일안에 구글 메일을 통하여 합격여부 통지를 받게 됩니다.

저는 4시간 뒤에 받았는데, 다른 후기에서 바로 메일이 날라온다고 해서 여기저기 찾아보다가 무언가 잘못됬나 싶어서 마음을 비우고 다음 시험이나 준비해야지 하고 편하게 놀고있었는데 메일을 받았습니다.

 

메일에는 자격 인증 배지를 등록할 수 있는 링크가 주어지고, 합격자들은 해당 배지를 블로그나 프로필등에 개시할 수 있는 권한을 얻게 됩니다.

https://www.credly.com/badges/e64e60b1-2ff7-4452-97e1-6bd047fdf0fe


보통 1년의 AWS 활용 경력과, 3개월~6개월정도의 준비기간을 추천합니다.

내용이 짧지 않고 디테일하게 나오는 경우도 있어서 여유를 가지고 준비하시는 것이 좋을 것 같습니다.

저도 처음 계획은 짧은 시간동안 집중하여 2주정도 강의 듣고, 기출 문제를 푼 뒤에 시험을 보는 것이었는데, 강의듣고 기출을 풀었을 때 시험 점수가 잘 나오지 않아 조금 더 여유를 갖고 준비하여 시험을 응시하였습니다.

 

AWS Solutions Architect - Assosiate 시험을 준비하시는 분들에게 모두 좋은 결과 있으시길 바랍니다 :)

세컨드브레인 표지


https://product.kyobobook.co.kr/detail/S000201140661

 

세컨드 브레인 | 티아고 포르테 - 교보문고

세컨드 브레인 |

product.kyobobook.co.kr


독서기간 : 2023.10.10 ~ 2023.10.15
독서시간 : 10 Hour
평점 : ★★★★★ 
한줄평 : 디지털 시대에 꼭 필요한 개인지식관리 지침서

얼마 전에 유튜브에서 제텔카스텐이라는 지식관리 시스템을 접하였습니다.
메모를 원자 단위로 나누고, 연결하여 새로운 아이디어를 얻는 방법으로 정보를 잘 관리하는 방법을 이야기하는 내용이었는데, 관심이 생겨서 정보를 찾아보다보니 옵시디언과 세컨드브레인이라는 키워드에 도착하였습니다.

평소에 일기를 쓰거나 일정을 관리하고, 공부한 내용을 정리하고 노트를 디지털로 변환하고 클라우드에 연동하는 것에 관심이 많았는데, 옵시디언과 세컨드브레인이 개인지식관리에 관한 깊이있는 이야기가 많아 흥미있었던 주제와 연결되어 정말 재밌고 시간가는 줄 모르고 책을 읽었습니다.

전통적인 폴더구조와 십진분류법으로 정리된 자료들이 시간이 지나면서 점점 더 복잡해서 자료를 찾기 힘들어지고 그에따라 one note에서 컨플루언스, 노션, 굿노트까지 계속해서 더 나은 방법을 찾아 정보 대이사를 하는 것이 반복되어 점점 피로해지고 있었는데 세컨드브레인이 제시하는 메모를 바라보는 관점의 전환, 그리고 `실행`을  관점으로 자료를 정리하는 PARA 시스템을 도입하면서 이 문제들을 해결할 수 있었습니다.

기록하고 자료를 정리하는 것에 흥미가 있으신 분이라면 강력 추천드립니다.

Vue.js로 개발을 하기위해 환경세팅을 할 때, npm과 yarn을 사용할 일이 있었습니다.

둘 다 node.js 개발환경에 필요한 패키지를 관리하는 패키지매니저라는 것을 알고 있었는데, 어떤 차이점이 있는지, 그리고 두가지를 혼용하여 사용해도 왜 크게 문제가 없는지 궁금하여 각각의 특징과 차이점을 찾아보았습니다.

 

Yarn과 npm

Yarn과 npm은 둘 다 JavaScript 개발에서 종종 사용되는 패키지 매니저로, 프로젝트의 종속성을 관리하고 설치하는 데 사용됩니다. 이들은 개발자가 애플리케이션에 필요한 외부 라이브러리와 패키지를 쉽게 관리할 수 있게 해줍니다.

npm (Node Package Manager)

npm은 Node.js의 기본 패키지 매니저입니다. Node.js는 JavaScript 실행 환경이며, npm은 Node.js를 다운로드하고 설치할 때 자동으로 함께 설치됩니다. npm은 npm 레지스트리라는 저장소를 통해 수많은 패키지 생태계를 제공합니다. 이는 패키지를 설치, 게시, 관리하는 데 사용되는 명령 줄 도구입니다.


주요 기능:

  • 대규모 패키지 생태계: npm은 사용 가능한 수백만 개의 패키지를 보유하고 있어 프로젝트에서 쉽게 사용할 수 있습니다.
  • 버전 관리: npm은 패키지 버전을 지정하고 semantic versioning에 따라 종속성을 관리할 수 있습니다.
  • 스크립팅: npm에는 다양한 개발 작업을 정의하고 실행할 수 있는 내장된 태스크 러너가 포함되어 있습니다.
  • 협업: npm은 자체 패키지를 공유하고 게시할 수 있도록 해주어 다른 사람들이 해당 패키지를 사용할 수 있습니다.

Yarn

Yarn은 JavaScript 애플리케이션용으로 개발된 또 다른 인기 있는 패키지 매니저입니다. Facebook에서 npm의 한계와 성능 문제를 해결하기 위해 개발되었습니다. Yarn은 npm으로 설계된 패키지와 호환될 수 있도록 되어 있습니다.


주요 기능:

  • 성능: Yarn은 패키지 설치 및 종속성 해결 등에서 보다 빠르고 안정적입니다. 특히 대규모 프로젝트에서 성능상 이점이 있습니다.
  • 결정론적 설치: Yarn은 락파일(yarn.lock)을 사용하여 동일한 종속성 버전이 다른 기기에서도 일관되게 설치되도록 보장합니다.
  • 오프라인 모드: Yarn은 내장된 오프라인 캐싱을 가지고 있어 인터넷에 연결되지 않은 상태에서도 패키지를 설치할 수 있습니다.
  • 병렬 다운로드: Yarn은 패키지를 병렬로 가져오기 때문에 설치 과정을 크게 가속화할 수 있습니다.

Yarn과 npm의 차이점

  • 패키지 설치: Yarn은 결정론적 알고리즘과 락파일을 사용하여 일관된 설치를 보장하는 반면, npm은 package-lock.json 파일을 사용합니다. 이로 인해 설치된 종속성에 약간의 차이가 생길 수 있습니다.
  • 성능: 일반적으로 Yarn이 패키지 설치 및 종속성 해결과 같은 작업에서 더 빠르고 효율적입니다. 특히 대규모 프로젝트에서 그 이점이 큽니다.
  • 캐싱: Yarn은 내장된 캐싱 기능을 가지고 있어 인터넷 연결이 없는 상황에서도 패키지를 설치할 수 있으며, 다음 설치 과정을 가속화합니다. npm은 npm 버전 5부터 캐싱을 지원하지만 Yarn의 캐싱 기능만큼 고급화되지 않았습니다.
  • 사용자 인터페이스: Yarn은 npm에 비해 더 간결하고 사용자 친화적인 명령 줄 인터페이스를 제공합니다.

 

요약하면, Yarn과 npm은 JavaScript 프로젝트에서 종속성을 관리하는 데 사용되는 패키지 매니저입니다. Yarn은 npm의 성능 및 신뢰성 문제를 개선하기 위해 만들어졌지만, 두 패키지 매니저 모두 JavaScript 생태계에서 널리 사용됩니다. 선택은 주로 개인의 선호도와 프로젝트 요구 사항에 따라 달라집니다.

'IT > VS' 카테고리의 다른 글

[Java] StringBuilder VS BufferedWriter  (0) 2023.04.02
[Shell] $*과 $@의 차이  (0) 2022.07.30
[ VS]arguments VS parameter  (0) 2021.09.23

여러가지 버전의 윈도우

증상

* What went wrong:
Execution failed for task ':sonar'.
> org/sonar/batch/bootstrapper/EnvironmentInformation has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0

젠킨스 파이프라인을 이용해 SonarQube 정적분석을 실행하려고 할 때, 위와같은 에러 메세지가 발생하였습니다.

원인

위 에러는 Java 실행환경이 클래스파일 버전을 52.0까지 지원하지만, 컴파일된 버전의 클래스 버전이 55버전이라 발생한 문제입니다. 

해결책

가장 간단한 해결책은 Java Runtime을 더 최신 버전으로 업데이트하는 것입니다. 이렇게 하면 최신 버전의 클래스 파일도 인식할 수 있게 됩니다. Oracle 또는 OpenJDK 웹 사이트에서 Java Development Kit (JDK)의 최신 버전을 다운로드하여 설치할 수 있습니다.

 

참고자료

Java 버전 업데이트: https://www.oracle.com/java/technologies/javase-jdk13-downloads.html

 

Download the Latest Java LTS Free

Subscribe to Java SE and get the most comprehensive Java support available, with 24/7 global access to the experts.

www.oracle.com

클래스 파일 버전 다운그레이드: https://docs.oracle.com/javase/8/docs/technotes/tools/windows/javac.html#BABGBJCI

Gradle 설정: https://docs.gradle.org/current/userguide/java_plugin.html#sec:java_plugin_and_java_version

 

The Java Plugin

If a dependent project has changed in an ABI-compatible way (only its private API has changed), then Java compilation tasks will be up-to-date. This means that if project A depends on project B and a class in B is changed in an ABI-compatible way (typicall

docs.gradle.org

 

+ Recent posts