클레이튼(Klaytn)은 국내 블록체인 기업인 Ground X가 개발한 공개형 블록체인 플랫폼이다. 이더리움 기반의 블록체인으로 solidity와 같은 이더리움 언어로 스마트 컨트랙트 개발이 가능하며 개발자들이 쉽게 BApp(블록체인 어플리케이션)을 개발할 수 있도록 다양한 도구와 서비스를 제공한다. 그럼 이제 클레이튼을 본격적으로 사용할 수 있도록 클레이튼 지갑을 생성해보겠다. 클레이튼은 국내 IT 기업 카카오의 자회사인 그라운드 X가 개발했다. 따라서 카카오 플랫폼을 활용하여 다양한 클레이튼 지갑 서비스를 제공한다. 그 중 PC에서 클레이튼 지갑을 만드는 방법을 소개하고, 테스트넷의 코인도 받아보도록 한다. 클레이튼 Wallet 페이지에서 클레이튼 지갑 생성 Klaytn Wallet baobab.wa..
OpenZepplin은 오픈소스 블록체인 프레임워크 및 라이브러리로, 이더리움 및 다른 블록체인 플랫폼에서 스마트 컨트랙트를 구축하는데 사용되고 있다. OpenZepplin은 강력한 보안 기능과 높은 수준의 코드 재사용성을 제공하는 것으로 유명하다. (OpenZepplin의 오픈소스들은 보안측면에서 검증받은 코드들이기에, DApp 개발에 신뢰하고 사용할 수 있다.) OpenZepplin은 다양한 프로그래밍 언어로 기본적인 컨트랙트들을 제공하는데, 그 중 우리는 솔리디티 기반의 Ownable 컨트랙트에 대해서 알아볼 것이다. Ownable 컨트랙트(소유 가능한 컨트랙트)란? Ownable 컨트랙트는 컨트랙트의 소유자를 지정하고 그 소유자만이 특정 기능을 수행할 수 있도록 하는 기능을 제공한다. 즉, Own..
서버에서 Get Parameter를 받을때 쿼리로 받게 된다. 예로들면 아래처럼 @PathVariable을 사용하는 경우.. @GetMapping(value = "/test/{path}") public String testGetMethod(@PathVariable(name = "path") String path) { return response.ok(path); } 하지만 이 방법으로는 파라미터를 받을때 URL에 특수문자가 포함되어 있을 경우 특수문자 뒤는 잘리게 된다. 사용불가능한 특수문자는 +와 & 이다. +와 &는 Get 요청에서 지정된 예약 문자이기 때문에 사용할 수 없다. @GetMapping(value = "/test/{path}") public String testGetMethod(@Requ..
한줄 주석 : Command + / 여러줄(블럭) 주석 : Command + Option + / 코드 라인 복사 : Command + D 생성자, Getter, Setter, hashCode, equals, toString 자동완성 : Command + N 라인 삭제 : Command + Backspace 자동 완성 : Control + Space 문법 단위로 코드 이동 : Command + Shift + 화살표(상,하) 한줄 단위로 코드 이동 : Option + Shift + 화살표(상,하) 쓰지 않는 import 삭제 : Control + Option + O import 하기 : Option + Enter 메서드 및 클래스로 이동 : Command + 메서드 및 클래스 클릭 실행 : Control +..
간단한 API 테스트 중 에러 발생. 에러 메세지는 아래와 같다. ERROR [DirectJDKLog.java - log] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'javax.validation.constraints.NotEmpty' validating type 'java.lang.Long'. Check configuration ..
테스트 도중 런타임 에러가 발생했다. IllegalArgumentException 에러니까 잘못 된 인자가 넘어갔다는 거다. 아래는 에러 메세지다. 읽어보면 해당 Class에서 선언된 JSON의 필드 중에 중복된 값이 있다고 한다. 친절하게 중복 선언된 필드 이름과 클래스 경로까지 알려준다. Class net.com.demo.domain.Entity declares multiple JSON fields named 'regdate'; conflict is caused by fields net.com.demo.domain.Entity #regdate and net.com.demo.domain.CommonEntity#regdate 본인의 경우는 상속된 부모 CommonEntity라는 클래스에 regdate가 ..
Timestamp 자료형 데이터를 LocalDateTime으로 받아 출력하면 날짜가 원하는 format으로 나타나지 않고 아래와 같이 응답받는 문제를 발견했다. {"regdate": { "date": { "year": 2023, "month": 1, "day": 9 }, "time": { "hour": 14, "minute": 41, "second": 39, "nano": 0 } } } 날짜 데이터를 timestamp 형식으로 변형하기 위해 직렬화/역직렬화가 쉬운 Gson을 사용하기로 했다. 우선 Gson 모듈을 추가해준다. implementation group: 'com.google.code.gson', name: 'gson', version: '2.10.1' implementation group: '..
스프링 부트 Run을 하면 콘솔에 Spring 이라는 문구와 버전이 나타난다. 본인은 각 프로젝트 이름으로 배너를 만들어서 사용하고 있다. 1. banner.txt 파일 생성 우선 src/main/resource 경로 아래에 banner.txt라는 파일을 생성한다. 2. 배너 생성 사이트 접속 https://patorjk.com/software/taag Text to ASCII Art Generator (TAAG) patorjk.com 3. 폰트, 글씨 크기, 적용할 텍스트를 입력하고 아래에 생성된 배너 글씨를 복사해서 banner.txt에 붙여 넣는다. Font : 배너에 적용할 글씨체 Character Width : 글씨체 너비 Character Height : 글씨체 높이 입력란 : 원하는 메세지 ..
IntelliJ 프로젝트 rename 오류 발생, can't rename root module 경고 창이 떴을 경우 프로젝트 name 변경 방법 1. 상단 메뉴의 File > Project Structure > Project Settings > Project > Name 란에 변경할 이름 입력 2. setting.gradle에서 rootProject.name을 변경할 이름으로 수정 후 적용 3. IntelliJ 종료 후 프로젝트 디렉토리로 이동하여 이름 변경 > IntelliJ 재실행
zsh을 사용할 때 유용한 옵션을 하나 소개한다. 잘못된 명령어나 경로를 입력하면 실행이 안 되는것은 당연하다. 하지만 왜 실행이 안 되는지 잘 모를 수 있다. 이때 zsh는 기본 옵션으로 맞춤법 수정 기능인 CORRECT를 제공한다. 이 기능은 잘 못 입력한 명령어를 올바르게 수정하도록 도와준다. 1. 잘 못된 명령어를 입력해보자. 터미널에서 틀리게 입력했더니 그냥 해당 명령어를 찾을 수 없다고 뜬다. 이 부분을 왜 실행이 안 되는지 좀 더 상세히 알고싶다. 2. zshrc 파일을 열자. vi ~/.zshrc 아래의 코드를 추가한 뒤 :wq로 저장하고 나오자. setopt CORRECT setopt CORRECT_ALL 수정한 zshrc 파일을 적용하자. source ~/.zshrc 3. 다시 잘못된 ..