[Chaincode] 체인코드 개발자용 Hyperledger fabric 테스트 네트워크

하이퍼레저 프로젝트 개발시 체인코드 개발자는 테스트용 네트워크가 필요

네트워크가 빨리 구성되면 좋지만 마냥 기다릴 수 없고 개발이 병행으로 진행되는 경우가 많아

네트워크 구성 전 까지 사용할 기본 네트워크를 만들었음

[MySQL] 이벤트 스케줄 사용시 주의사항

이벤트 스케줄을 사용할때 시간을 지정해서 사용

예를들면 하루 한번 0시에 어떤 작업을 실행

그런데 이 실행 시각이 언제를 기준으로 하는지 확인 하기 위해서 MySQL의 시간을 먼저 확인

1
SELECT NOW();

한국의 시간과 9시간이 차이가 나는것을 확인할 수 있었음

그리고 내가 설정할 이벤트 스케줄의 시간을 MySQL 시간을 기준으로 1분뒤에 실행하도록 설정하고 확인한 결과는

이벤트 스케줄은 MySQL의 시간을 기준으로 실행된다.

관리를 편하게 하기 위해 MySQL의 시간을 한국 시간으로 변경

1
set time_zone='Asia/Seoul';

그리고 실제 해당 시각에 정상 실행되는 것을 확인 할 수 있었음

[MySQL] 두 컬럼의 값 바꾸기

DB의 두 컬럼의 값이 바뀌어 들어가는 실수가 발생했을때 아래와 같이 두 컬럼의 값을 바꿀 수 있음

1
2
3
4
5
6
UPDATE
[TABLE_NAME]
SET
A = (@temp:=A),
A = B,
B = @temp

이때 주의해야 할 점이 A = (@temp:=A)에서 콜론이 들어간다는것

만약 콜론을 빼고 UPDATE를 실행한다면 B 컬럼에 NULL이 들어가니 신중히 실행해야함

가장 좋은 방법은 테스트용 DB에서 실행한 결과를 확인하고 운영 DB에 적용하는것이 좋다

[MySQL] access denied for user

토이 프로젝트를 만드는 중에 프로시져를 사용해야 할 일이 생김

프로시져에 대해서 공부하고 테스트 서버에서 프로시져 생성 명령어를 실행하는데 아래와 같은 에러 발생

1
Access denied for user 'root'@'%' to database 'information_schema'

거의 반나절을 구글링과 스택오버플로우를 찾아봤는데도 해답을 찾을 수 없었음

대부분 권한 문제 때문이라고 하는데 이미 필요한 권한은 다 가지고있었음

그리고 며칠 지나 다시 문제를 풀어보려고 열었는데 에러 문구에 database 'information_schema' 부분이 자꾸 거슬렸음

그래서 이 부분에 초점을 두고 database를 내가 원하는 데이터베이스로 설정 후 프로시져를 생성하니 성공

1
2
3
use my_database

// procedure 생성

너무 허무하다.. 😪

[Docker] no matching manifest for linux/arm64/v8 in the manifest list entries

M1 맥북 에어를 구입하고 Docker를 이용해 이미지를 받을때 아래와 같은 문제가 발생

1
2
3
% docker pull hyperledger/fabric-javaenv:2.4
2.4: Pulling from hyperledger/fabric-javaenv
no matching manifest for linux/arm64/v8 in the manifest list entries

M1 환경에서 발생하는 문제로 보임

--platform linux/x86_64 인자를 주어 실행하면 정상적으로 받아오는것을 확인

1
% docker pull --platform linux/x86_64 hyperledger/fabric-javaenv:2.4

[Golang] go modules 사용

govendor (deprecated)

Golang을 처음 접하고 체인코드를 개발할때부터 시간에 쫓겨 의존성 라이브러리 관리를 govendor를 통해 했었음

Go modules

이제는 1.11부터 Go modules가 도입되면서 govendor 개발자도 1.14부터는 Go modules를 사용하도록 권장하고있음

사실상 govendor는 deprecated 되어 앞으로는 사용하지 않을 것임