개발

    [React] react-csv + recoil 로 csv다운로드 구현

    React-CSV-Download + React recoil 모든 코드는 github에 있습니다. react-csv를 선택한 이유 여러 라이브러리중 react-csv를 선택한 이유는 사용이 간편해보여서이다. react-csv의 마지막 업데이트는 2022년 1월이지만 지금도 문제없이 사용된다. react-csv 사용 Install npm install react-csv --save; Import import { CSVLink, CSVDownload } from "react-csv"; CSVLink : 클릭시 다운로드 CSVDownload : 마운트시 다운로드 보통 다운로드 버튼으로 구현을 하기 때문에 CSVLink만 사용할 것이다. Import 후 해당 컴포넌트를 사용하면 끝이다. Download me ;..

    [Blockchain] Klaytn WebSocket 끊김 후 재연결 (spring boot)

    Klaytn에서 WebSocket을 연결하여 스마트컨트랙트에서 발생하는 이벤트를 구독하려고 했다. 문제는 웹소켓 연결이 시간이 지나면 계속 끊겼다. 이 문제를 정의하고 해결하려고 한다. 1. 문제 1분간 별도의 request가 없으면 끊긴다. 클레이튼 데브포럼에서 클레이튼 팀에서 직접 단 댓글이다. 하지만 나는 1분간 별도의 request가 없어도 정상적으로 연결되다가 몇 시간 후에 갑자기 끊겨 버린다. 21년 6월에 작성한 글이라 오래되서 뭔가 바꼈나 하고 다시 찾아봤다. 그랬더니 위와 같이 최근에도 같은 답변이 있었다. 주기적으로 getblocknumber를 호출하는 방법보다 더 효율적인 방법을 찾고 싶었다. 그래서 WebSocketService의 connect가 끊겼을때를 감지해서 다시 connec..

    [Blockchain] 언어별 web3 차이로 트랜잭션 해시값 차이

    1. 문제 및 해결 클라이언트(flutter)에서 트랜잭션 사인 -> 백엔드(nodejs)에서 트랜잭션 해시값 send 위 과정에서 evm에 트랜잭션을 보내는 처리가 실패했다. 처음엔 flutter에서 트랜잭션을 잘못 생성했다고 생각하여 abi등 꼼꼼하게 확인했지만 이상이 없었다. 문제는 type2 트랜잭션의 문제였다. evm 트랜잭션의 타입 (1) type1 gas price를 설정하여 네트워크가 바쁠때는 높은 gas price부터 빠르게 처리한다. 트랜잭션 예시(nodejs) const tx = { to: to, value: parsedEthAmount, gasPrice: ethers.utils.parseUnits("20", "gwei"), gasLimit: ethers.utils.parseUnits..

    [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: ..