$ journalctl -u <unit> -f
unit은 systemctl list-units
했을 때 나오는 unit이다. 예를 들면,
$ journalctl -u besu.service -f
$ journalctl -u <unit> -f
unit은 systemctl list-units
했을 때 나오는 unit이다. 예를 들면,
$ journalctl -u besu.service -f
hardhat node를 외부에서 접근 가능하게 하고 싶은 경우 node 명령을 줄 때 --hostname 0.0.0.0
을 주면 된다.
npx hardhat node --network hardhat --hostname 0.0.0.0
npm 혹은 Solidity 등은 Semantic Versioning을 사용해서 버전을 정합니다. Semantic Version은 MAJOR.MINOR.PATCH 형식의 버전 명을 말합니다. https://semver.org/ 를 참고해 봅시다.
MAJOR의 경우, 이전과 호환되지 않는 변경이 있는 경우 올립니다.
MINOR의 경우, 이전과 호환되지만 기능 추가 등 주요 변경이 있는 경우 올립니다.
PATCH의 경우, 이전과 호환되고, 버그 수정, 내부 리팩토링 등의 변경이 있는 경우 올립니다.
현재 프로젝트에서 사용하는 버전을 지정할 때 ^, ~, – 등의 기호로 지정하는데 다음과 같은 뜻을 갖습니다.
^ (캐럿): 마이너 버전이나 패치 버전으로 호환되는 업데이트를 할 수 있습니다. 예를 들어, “^1.2.3″을 지정한 경우, 1로 시작하고 2.3보다 크거나 같은 마이너 또는 패치 버전을 말합니다. 따라서 1.2.3, 1.2.4, 1.3.0 등은 해당되지만 2.0.0은 해당되지 않습니다.
~ (틸더): 패치 버전만 호환되는 업데이트를 할 수 있습니다. 예를 들어, “~1.2.3″을 지정한 경우, 1.2로 시작하는 패치 버전이 3보다 크거나 같은 모든 버전을 말합니다. 따라서 1.2.3, 1.2.4는 해당되지만 1.3.0은 해당되지 않습니다.
= (이퀄): 지정한 정확한 버전만 말합니다. 예를 들어 “1.2.3”을 지정한 경우, 정확히 1.2.3만 해당됩니다.
npx hardhat을 매번 치기 귀찮다. 그리고 커맨드라인 자동완성 기능도 있다. hardhat-shorthand 패키지를 설치하면 된다.
$ npm install --global hardhat-shorthand
공식 도움말은 여기를 참고하자: https://hardhat.org/hardhat-runner/docs/guides/command-line-completion
https://github.com/moovweb/gvm 로 go 버전 중 원하는 버전을 설치하고 사용할 수 있다. gvm을 사용하기 위해서는 설치하고자하는 go 버전의 compile을 위해 go 가 먼저 설치되어 있어야 한다.
$ brew install go
$ bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
$ source ~/.gvm/scripts/gvm
설치 후에는 gvm install go<버전>
형식으로 설치한 후 gvm use go<버전>
으로 사용한다.
$ gvm install go1.21.5
$ gvm use go1.21.5
버전 확인을 위해 go version
으로 확인해본다.
$ go version
go version go1.21.5 darwin/amd64
$ which go
/Users/dasomoli/.gvm/gos/go1.21.5/bin/go
brew tap ethereum/solc
brew install solidity
solc-select install 0.7.6
solc-select use 0.7.6
go func(client *ethclient.Client) {
contractAddresses := []common.Address{}
for _, pair := range Pair {
contractAddresses = append(contractAddresses, common.HexToAddress(pair.PairAddress))
}
SyncEventSig := []byte("Sync(uint112,uint112)")
hash := sha3.NewLegacyKeccak256()
hash.Write(SyncEventSig)
SyncEventHashBytes := hash.Sum(nil)
signature := common.BytesToHash(SyncEventHashBytes) // 0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1
topic := []common.Hash{signature}
topics := [][]common.Hash{topic}
query := ethereum.FilterQuery{
Addresses: contractAddresses,
Topics: topics,
}
logs := make(chan types.Log)
sub := event.Resubscribe(2*time.Second, func(ctx context.Context) (event.Subscription, error) {
return client.SubscribeFilterLogs(context.Background(), query, logs)
})
defer sub.Unsubscribe()
for {
select {
case err := <-sub.Err():
log.Fatal("Error on select:", err)
case vLog := <-logs:
fmt.Println("Log block number:", vLog.BlockNumber)
// 여기서 하고 싶은 일 하기.
}
}
}(client)
2.16 부터 기본 동작이 되었다는데, 나는 불편하다. 끄자.
git config --global pager.branch false
참고: https://stackoverflow.com/questions/48341920/git-branch-command-behaves-like-less
pip freeze > requirements.txt
다음과 같은 형식으로 나타날 경우는 pip list --format=freeze > requirements.txt
pytz @ file:///private/var/folders/sy/f16zz6x50xz3113nwtb9bvq00000gp/T/abs_e0y2h1cdsw/croot/pytz_1695131602326/work
이를 이용해 패키지를 설치할 때는 다음과 같이 한다.
pip install --no-cache-dir -r requirements.txt
도커 이미지 빌드 시 사용은 https://hub.docker.com/_/python 를 참고.
## 설치
1.
2.
3.
4.
5.
## 사용 예시
## 문제 해결
## 변경 로그
## 추가 자료
## 라이선스 정보
README 체크리스트