일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 스마트컨트렉트 예약어 함수이름 중복
- 컨트렉트 동일한 함수이름 호출
- 스마트컨트렉트 함수이름 중복 호출
- nest.js설명
- 스마트 컨트렉트 함수이름 중복
- SBT표준
- 러스트 기초 학습
- ethers websocket
- 스마트컨트렉트테스트
- vue기초
- multicall
- 깃허브명령어
- 러스트 기초
- chainlink 설명
- git rebase
- Vue
- nestjs 튜토리얼
- 머신러닝기초
- ethers
- ambiguous function description
- rust 기초
- ethers v6
- Vue.js
- 프록시배포구조
- ethers type
- 컨트렉트 배포 자동화
- 스마트컨트렉트프록시
- 체인의정석
- 러스트기초
- ethers typescript
- Today
- Total
목록분류 전체보기 (488)
체인의정석
블록체인에서 숫자 데이터의 경우 자리수가 크기 때문에 문자로 처리되는 경향이 있다. 따라서 해당 문자를 숫자로 다시 바꿔주기 위하여 Bignumber 또는 BigInt를 사용해주어야 한다. https://stackoverflow.com/questions/65205604/when-should-i-use-the-bignumber-library When should I use the bignumber library? I am trying to understand when to use the bignumber library. Question 1). As we know, JavaScript has an upper limitation on the Number type which is 2^53, but it also..
개발을 할때 그동안은 로그를 console.log 로 찍어왔다. 이렇게 찍은 console.log 는 그동안 깃에 올리기전에 삭제를 하고 올렸다. 하지만 logger를 사용하면 에러가 날 경우와 로그만 남길 경우 등 분류하여 원하는 상황별로 로그를 뽑아낼 수 있다고 한다. 따라서 에러가 나는 경우 상황별로 로거를 남겨두는 작업을 하면 더 좋다. 적용 방법은 다음과 같았다. 1. 로거 install 2. 로거 세팅 파일 생성 3. 상황별로 맞는 로거 보여주기 회사 내부적으로 쓰는 모듈을 적용한것이지만 상용화된 모듈도 있을것 같다.
근 몇일간 api를 리팩토링 하면서 추가 요청이 있어 동기/비동기 처리를 해주어야 하는 상황이 나오게 되었다. 자바스크립트에서는 블록체인 데이터를 주고 받는 과정에서 많은 시간 고생을 하여 익숙해졌다고 생각했으나, 타입스크립트에서 새로 사용하니 막히는 내용이 많아 정리를 하려고 한다. 우선 응답 객체값에 대한 정의가 이루어져야 하는데 이 부분을 빼먹어서 작동이 안되는 경향이 있었다. 이부분은 다음과 같이 결과 값을 지정해주는 클래스에 Promise를 명시해주는 것을 빼먹어서 작동이 안되었던 것이였다. 아래와 같이 Promise를 해주어야 비동기 처리가 가능해지게 된다. makingResponseItemsArr = async ( transactions, ): Promise => { const promise..
type ORM 공식 페이지에서 날짜를 beteween으로 검색하는 부분이 없어서 찾아보았다. https://github.com/typeorm/typeorm/issues/1221 WHERE, Date, and BETWEEN · Issue #1221 · typeorm/typeorm It appears that there is a bug with how QueryBuilder is handling dates. I only tested with SQLite, but it is possible that this is happening with other implementations. const start = new Date(date)... github.com 위의 검색 결과에서 해답을 찾을 수 있었다. .whe..
1. 스프린트에 이미 완료된 과제 관리 일감에 대한 링크를 달아두기 깃허브/ 노션과 같은 정리된 링크 달아두기 이런 식으로 결과물을 각각 단계마다 남겨야 제대로 된 정리 가능. 나중에 정리하느냐 마느냐는 큰 차이 2. 러닝커브 고려 처음 배우는것에 대한 러닝커브를 고려하여 일감을 잘 짜야 함. 3. 리팩토링 & 배포 고려 단순한 개발은 시간이 오래 안걸리지만 코드리뷰를 통한 리팩토링은 3~4차례이상 진행 가능. 계획이 변경될때마다 리팩토링 진행 배포 또한 젠킨스 등을 활용하여 하게 되면 처음에는 러닝커브가 크므로, 시간여유를 두고 진행
calss validator가 여태까지 제대로 작동하고 있지 않음을 체크하였다. 그 이유는 @로 프로퍼티를 설정하고 나서 그 이후에 따로 객체를 만들어서 처리하는 부분을 안 써두었기 때문이다. 따라서 다음과 같은 로직을 추가하였다. export class AddressesController { constructor(private readonly addressesService: AddressesService) {} @Get('contracts/:ethAddress') async findOne( @Param('ethAddress') ethAddress: string, ): Promise { const getContractRequest = new GetContractRequest(ethAddress); con..
이번주 회사의 Tech Talk 내용이 좋았어서 블로그 글로도 정리하고자 한다. sql injection은 sql 문을 이용해 서버에 공격문을 주입하는 기법. 예시 1 ) 로그인 같은 쿼리문에 일부러 패스워드에 password= 1234'; DROP table Users 위와 같이 sql 명령어를 타이핑하게 되면 테이블을 드랍하게 되며, 위험해 진다. 일반적으로 Always ture 공격 User Id = 105 Or 1=1 Query Stacking 공격 => 위의 예시처럼 drop table과 같은 행위 진행 Line comment 공격 등이 있다. => 뒤에 코멘트로 만드는 문구 삽입 방어 방법은 1. 입력 값 검증 정규 표현식 등으로 입력값을 애초에 넣고 sql 명령문이 입력값에 포함되어 있는지 ..
다음과 같이 queryBuilder를 사용하면 find() 를 사용할 때보다 더 자유로운 검색이 가능하다. 먼저 getRepository 에는 테이블 이름이 들어가게 되는데 이 테이블은 entites 폴더 안의 dto에 정의를 해둔다. 해당 dto는 데이터베이스와 완전히 똑같은 구조로 정의를 해준다. 이때 계속해서 에러가 나는 부분이 바로 이 entity에 없는 값이라고 에러가 도출되는 부분이였다. 계속해서 해메다가 공식문서를 다시 찾아보게 되었고. https://typeorm.io/#/select-query-builder/ TypeORM - Amazing ORM for TypeScript and JavaScript (ES7, ES6, ES5). Supports MySQL, PostgreSQL, Mari..