개발

    [Blockchain] web3j 에서 nonce값 동시성 해결

    트랜잭션을 보낼때 논스값이 같은 경우가 생겨서 이를 해결하려고 한다. 기존 코드 EthGetTransactionCount ethGetTransactionCount = web3jHttpRpc.ethGetTransactionCount( PUBLIC_KEY, DefaultBlockParameterName.PENDING ).send(); BigInteger nonce = ethGetTransactionCount.getTransactionCount(); 블록체인과 통신하는 과정이 비동기 처리로 되다보니 논스값을 받아 트랜잭션을 보내는 부분을 for문으로 처리했다가 nonce값이 같은 트랜잭션을 보내는 경우가 생겼다. 동시성 해결 코드 (1) nonce를 받아오는 부분만 동기처리 private static BigI..

    [Spring Boot] Spring Boot WebClient

    Spring Boot WebClient 모든 소스는 github에 있습니다. WebClient vs RestTemplate 스프링에서 http 요청을 위해 WebClient 와 RestTemplate이 있다. 인터넷에 RestTemplate이 Deprecated 된다는 말이 있지만 이는 사실이 아니다. It would be more helpful, and also accurate, to explain that the RestTemplate is in maintenance mode rather than mention a potential deprecation in the future. Deprecated 관련 이슈 java doc 을 확인해보면 유지모드로 들어간다고 한다. RestTemplate 동작 원리..

    [Spring Boot] Spring Security - OAuth2 (Google login)

    Spring Security - Oauth 2.0 모든 소스는 깃허브에 있습니다. https://github.com/TeTedo/blog-code/tree/main/spring-security-oauth Google login 1. 구글 클라우드 플랫폼 주소으로 이동해서 프로젝트 만들기 2. 완성된 프로젝트 생성 후 API 및 서비스 클릭 3. OAuth 클라이언트 ID 만들기 4. OAuth는 리다이렉션 URI를 설정하여 로그인 성공시 보여줄 화면을 지정할 수 있다. 5. application-oatuh.yml 파일 생성 spring: security: oauth2: client: registration: google: client-id: ${GOOGLE_CLIENT_ID} client-secret: ..

    [BlockChain] EIP 55란?

    EIP55란 이더리움 지갑주소의 일부를 대문자화하여 구버전과 호환되는 이더리움 주소 체크섬을 제공한다. 일반 이더리움 주소 0x001d3f1ef827552ae1114027bd3ecf1f086ba0f9 EIP-55 적용한 주소 0x001d3F1ef827552Ae1114027BD3ECF1f086bA0F9 일반 이더리움 주소와 비교해보면 대소문자 차이만 있는것으로 확인할 수 있다. EIP 적용 방법 일반 이더리움 주소에서 0x를 제외한 값을 keccak256 함수로 해시값을 얻는다. 만약 해시값이 16진수로 8보다 크다면 그 자리를 대문자로 바꿔준다. Addr : 001d3f1ef827552ae1114027bd3ecf1f086ba0f9 Hash : 23a69c1653e4ebbb619b0b2cb8a9bad498..

    [Spring Boot] Spring-REST-Docs로 자동으로 API 문서화

    Spring REST Docs 모든 코드는 Github에 있습니다. REST Docs란? 이름 그대로 REST 문서이다. REST API를 문서화하여 input, output, 파라미터 세부정보 등을 팀원과 공유할 수 있다. REST Docs는 테스트 코드를 통과하여야 문서로 작성되기 때문에 검증된 문서를 작성할 수 있다. REST Docs를 선택한 이유? Spring에서 문서화를 할때 Swagger와 Rest Docs를 많이 사용한다. 개인적으로 Swagger UI가 더 보기 좋다. 그리고 Swagger는 curl을 통해 API를 바로 테스트 해볼 수 있지만 REST Docs는 단순히 문서만 제공한다. 여기까지 보고 나는 Swagger로 해야겠다는 생각을 하고 어떻게 코드를 작성하나 찾아봤다. 근데 S..

    [정리] 타입에 대한 생각

    타입 추론이란 명시적인 타입 표기가 없을때 타입을 자동으로 결정하고 코드를 해석하는 것이다. 대표적으로 자바스크립트가 있다. 타입을 자동으로 결정하기 때문에 타입에 대하여 많이 신경쓰지 않아도 코드를 작성할 수 있다. 처음 프로그래밍을 입문하기에는 타입이 없는것이 굉장히 편하다. 나 또한 자바스크립트로 개발을 처음 시작하였고 타입을 신경 안쓰는 것이 매우 좋았다. let a = "111"; console.log(typeof a); // string a = a * 1; console.log(typeof a); // number console.log(a); // 111 string으로 만들었던 변수 a를 1을 곱해서 number로 바꾸어 활용하기도 했다. 이때까진 타입을 쓰는 언어를 한번도 다루지 않았기 때..