[matplotlib] 한글 폰트 설정

apt-get install -y fonts-nanum
fc-cache -fv
rm ~/.cache/matplotlib -rf

혹은 Windows에서는

from matplotlib import font_manager, rc
font_path = 'C:/Windows/Fonts/NGULIM.TTF'
font = font_manager.FontProperties(fname=font_path).get_name()
rc('font', family=font)

[jq] 쉘에서의 JSON 처리: jq 사용법

맥에서 설치는 다음과 같다. 우분투는 아마도 apt-get install 을 사용할 것이다.

$ brew install jq

사용법은 값을 얻고 싶은 필드 키를 주면 된다. 뒤에 입력 파일 이름을 주지 않으면 stdin을 입력으로 받는다.

jq “.key” [intput filename]

따라서 curl 이나 echo, cat 등으로 출력을 파이프로 넘겨서 stdin 입력으로 jq에 넘겨서 원하는 데이터를 얻으면 된다. 예를 들어 다음과 같은 데이터를 curl을 통해 얻었다고 하자.

$ curl -X POST "https://login.dasomoli.org/login/2fa" -H "accept: application/json;charset=UTF-8" -H "X-AUTH-MOBILE: true" -H "Content-Type: application/json;charset=UTF-8" -d "{ \"otpCode\": \"123456\", \"password\": \"PASSWORD\", \"userId\": \"dasomoli\"}"
{
  "resultCode": "success",
  "resultMessage": "Successful",
  "data": {
    "accessToken": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJqdXN0aW55IiwiaW5mbyI6eyJ1c2VySWQiOiJqdXN0aW55IiwibmFtZSI6Ikp1c3RpbiIsImFjY291bnQiOiIweEY2NTUwZTk4ZTVDZUFiRjVkRmQ4NTcxYzY3MGI1Zjg0M0U4OTMzNzAiLCJzeW1ib2wiOiJLU1RBX0RFViIsImVtYWlsIjoianVzdGluLnlhbmdAY3J5cHRlZC5jby5rciIsImxvZ2luVGltZSI6MH0sInJvbGVzIjoiUk9MRV9VU0VSIiwiaWF0IjoxNjk3NDQxMTY3LCJleHAiOjE2OTc0NDQ3Njd9.XVT7RIKybB0hgYzcJvZx9voGlolza83RrxuCsK0i-vo",
    "refreshToken": "eyJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE2OTc0NDExNjcsImV4cCI6MTY5ODA0NTk2N30.auHUC75qf-Xz--e8JAKvtosaYnUB_Hx5-RKTUZyC-ZM"
  }
}

여기서 data 안에 있는 accessToken 값을 얻고 싶다면, 다음과 같이 하면 된다.

$ curl -X POST "https://login.dasomoli.org/login/2fa" -H "accept: application/json;charset=UTF-8" -H "X-AUTH-MOBILE: true" -H "Content-Type: application/json;charset=UTF-8" -d "{ \"otpCode\": \"123456\", \"password\": \"PASSWORD\", \"userId\": \"dasomoli\"}" | jq ".data.accessToken"

쉘 스크립트 내에서 위의 값을 ACCESS_TOKEN 이라는 변수에 넣었을 때, 앞 뒤로 붙는 ” 문자를 없애고 싶다면 다음과 같이 한다.

ACCESS_TOKEN="${ACCESS_TOKEN//\"/}"

[hardhat] hardhat network에서 다른 계정인 척 쓰기

const hwwallet = "0xda50da50da50da50da50da50da50da50da50da50";

//  impersonating HW wallet
await network.provider.request({
  method: "hardhat_impersonateAccount",
  params: [hwwallet],
});

const _master = await ethers.getSigner(hwwallet);
_master.getFeeData = async () => {
  return {
    gasPrice: ethers.BigNumber.from(0),
    lastBaseFeePerGas: ethers.BigNumber.from(0),
    maxFeePerGas: ethers.utils.parseUnits("800", "gwei"),
    maxPriorityFeePerGas: ethers.utils.parseUnits("800", "gwei"),
  };
};
master = _master;

console.log('master: ', await master.getAddress());

[git] @{ } 표기법

Git에서는 @{} 표기법을 사용하여 다양한 브랜치 및 커밋 참조를 지정할 수 있습니다. 여기서 몇 가지 일반적으로 사용되는 표기법을 설명하겠습니다:

  1. @{u} 또는 @{upstream}: 현재 브랜치의 upstream 브랜치를 가리킵니다. 예를 들어, main 브랜치의 upstream 브랜치가 origin/main인 경우, main@{u} 또는 main@{upstream}origin/main을 가리킵니다.
  2. @{1} 또는 @{2} 등의 숫자: 브랜치의 이전 위치를 가리킵니다. 예를 들어, main@{1}main 브랜치의 바로 이전 커밋을 가리킵니다.
  3. @{yesterday} 또는 @{1.week.ago}와 같이 시간 범위를 지정할 수도 있습니다. 이를 통해 특정 시점의 커밋을 가리킬 수 있습니다.
  4. @{commit-hash}: 직접 커밋 해시(해당 커밋의 고유 식별자)를 지정하여 특정 커밋을 가리킬 수 있습니다.
  5. @{branch-name}: 특정 브랜치의 위치를 가리킬 수 있습니다.

이러한 표기법을 사용하면 Git에서 다양한 상황에서 브랜치, 커밋 및 이력을 참조할 수 있으며, 특정 시점이나 이전 위치에 대한 정보를 쉽게 얻을 수 있습니다.

WSL Import/Export

Export

wsl.exe --export <DistributionName> <FileName>

WSL 관련 모든 프로그램 닫은 후,

wsl --export Ubuntu-20.04 Ubuntu20.04_dasomoli.wsl

Import

wsl.exe --import <DistributionName> <InstallLocation> <FileName>

Install할 경로 폴더 (C:\Users\dasomoli\AppData\Local\Packages\Ubuntu-20.04-dasomoli)를 만든 후,

wsl --import Ubuntu-20.04-dasomoli C:\Users\dasomoli\AppData\Local\Packages\Ubuntu-20.04-dasomoli Ubuntu20.04-dasomoli.wsl

[git] 추가된 파일이지만 변경은 무시하고 싶은 경우

git에서 repository에 파일은 추가해서 두고 싶지만 해당 파일이 빌드 중 변경되는 등의 이유로 변경은 무시하고 싶은 경우가 있다. 이런 경우 .gitignore에 추가해도 repository에 추가된 파일이므로 변경을 계속 추적하게 된다. 이 변경을 무시하고 싶다면 다음 명령을 주면 된다.

git update-index --assume-unchanged <file>

위 명령을 주면 해당 파일은 변경되어도 git status를 해도 나오지 않고 무시된다. 그러므로 주의해야 한다. 해당 파일을 다시 추적하고 싶다면 다음 명령을 입력한다.

git update-index --no-assume-unchanged <file>