chocolatey, 패키지 매니저 설치

administrator powershell terminal
1
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
  • 관리자 권한으로 파워셸 실행 후 명령 실행

참고

ssh를 사용해 git clone 하기

깃허브에서 클론 할 수 있는 방법 2가지(ssh, pat)를 정리한다

ssh로 클론

ssh key 생성

  • git bash를 실행하여 진행한다
git bash terminal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent
# 새로운 ssh 키 생성
# 생성할 때 파일명과 비밀번호를 지정해 줄 수 있다
# 비밀번호는 입력하지 않는다 (엔터키로 스킵)
# 비밀번호까지 지정해주고 싶으면 아래 링크를 참고하자
# https://docs.github.com/en/github/authenticating-to-github/connecting-to-github-with-ssh/working-with-ssh-key-passphrases
# -C 옵션 뒤에는 자신의 이메일 등 적고 싶은 문구를 적는다
# ssh-keygen -t ed25519 -C "chin_sung@naver.com"
ssh-keygen -t ed25519 -C "안녕하세요요요요요"

cd ~/.ssh
# 공개키 내용을 전부 복사한다
cat id_ed25519.pub
# output: ssh-ed25519 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx chin_sung@naver.com
  • 나는 기본값으로 생성했다
  • ~/.ssh/id_ed25519
  • ~/.ssh/id_ed25519.pub
  • .pub 파일이 이제 깃허브에 등록해야 하는 공개키이다
  • cat 명령으로 읽어서 복사해두자

ssh key 등록

참고

PAT으로 클론

terminal
1
2
# git clone https://{pat}@github.com/{username}/{repo}
git clone https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@github.com/chinsun9/my-private-repo.git
  • personal access token으로도 클론 할 수 있다. 자세히

노드에서 랜덤 키 생성하기

example.ts
1
2
3
4
5
6
// https://nodejs.org/api/crypto.html
import { randomBytes } from 'crypto';

function generateRandomKey(keyLength: number) {
return randomBytes(keyLength / 2).toString('hex');
}
  • 무작위 문자열을 생성할 때 node에서 crypto 내장 모듈을 사용해서 생성할 수 있다
  • 간단하게 키로 사용할 수 있는 문자열을 생성할 수 있는데, 막상 생성할 때가 오면 까먹는다

cli 도구

  • 찾아보니까 cli 도구도 있었다

  • npx random-generator-cli string -l 32 명령을 기억해 놨다가 편하게 생성해 볼 수 있겠다

참고

postgresql 외부 접속 가능하게 설정하기

상황

  • vercel에 배포한 앱이 db 커넥션이 안되었다
  • aws 프리티어가 끝나서 로컬 컴퓨터에서 postgresql를 돌렸다
  • 공유기 포트 포워딩, 방화벽 인바운드 규칙 설정, 커넥션 스트링도 잘 작성해줬는데 이상하게 안되었다
  • 찾아보니까 postgresql 설정도 건드려야 했다

해결

  • C:\Program Files\PostgreSQL\13\data ; 내 postgresql 설치 경로이다
  • 바로 여기에 pg_hba.conf을 수정해주어서 해결했다

pg_hba.conf:86
1
2
# IPv4 local connections:
host all all 0.0.0.0/0 scram-sha-256
  • 86라인 정도에 127.0.0.1/320.0.0.0/0으로 수정해주면 된다
  • 따로 dbms를 재부팅 안 해줘도 바로 적용되었다

참고

github action practice

깃허브 액션~!
내 프로젝트가 다른 환경에서도 잘 동작하는지 확인해보자

.github/workflows/github-actions.yml
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
name: github actions practice

on:
workflow_dispatch:
branches: [master]

jobs:
test:
runs-on: ${{matrix.os}}

strategy:
matrix:
os: [ubuntu-latest, macos-latest] # https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions
node-version: [10.x, 11.x, 12.x, 13.x, 14.x, 15.x, 16.x]

steps:
- uses: actions/checkout@v2 # 레포 클론할 때 필요

- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2 # 노드
with:
node-version: ${{ matrix.node-version }}

- name: Install Rest Dependencies
run: npm install

- name: Initiate Test
run: npm test
  • name ; 원하는 이름을 설정해준다
  • on ; 워크플로를 트리거하는 이벤트를 지정한다 (실행 조건)
    • on: push ; 이렇게 단일 값을 지정해 줄 수 있다
    • on: [push, pull_request] ; 배열 값으로 지정해 줄 수도 있다
    • 나는 workflow_dispatch를 사용했는데, 이거를 사용하면 수동으로 워크플로우를 시작해야 한다. 깃허브 액션은 사용량 제한이 있어서 일단 아끼고 본다
  • jobs.<job_id>.strategy.matrix ; 워크플로를 실행할 환경을 설정한다
  • jobs.<job_id>.setps[*].uses ; actions/checkout@v2, actions/setup-node@v2를 사용했다. actions/checkout@v2은 현재 레포를 테스트 환경으로 클론 할 때 필요한 것이고, actions/setup-node@v2는 노드 버전을 구성하는데 권장하는 방법이라고 한다
  • jobs.<job_id>.steps[*].run ; 원하는 cli를 설정할 수 있다
  • jobs.<job_id>.steps[*].name ; 각 단계에 이름을 붙여줄 수 있다. 깃허브 액션 페이지에서 로그를 식별할 때 도움을 준다

참고

컴공이라면 알아야 할 특수문자 읽는 법

특수문자 영어 한글 (일상에서 읽는 법) 링크
` backtick 백틱 🧾
~ tilde 틸드, 물결표 🧾
! exclamation mark 느낌표 🧾
@ at sign 골뱅이 🧾
# number sign 🧾
$ dollar sign 달러 🧾
% percent sign 퍼센트, 나머지연산 🧾
^ caret 캐릿, 제곱 🧾
& ampersand 앰퍼샌드, 앤드 🧾
* asterisk 애스터리스크, 별표, 곱하기 🧾
() parenthesis 소괄호 🧾
- hyphen minus 하이픈, 빼기 🧾
_ underscore 언더스코어, 언더바, 밑줄 🧾
= equals sign 이퀄, 는, 등호 🧾
+ plus sign 플러스, 더하기 🧾
[] brackets 브라켓, 대괄호 🧾
{} braces 중괄호 🧾
\ backslash 백슬래시, 역슬래시, 원화 🧾
; semicolon 세미콜론 🧾
: colon 콜론 🧾
apostrophe 아포스트로피, 싱글 쿼테이션, 작은 따옴표 🧾
quotation 쿼테이션, 큰 따옴표 🧾
, comma 콤마 🧾
. dot, period, full stop 마침표 🧾
<> angle brackets 대소구분 🧾
/ slash 슬래시, 나누기 🧾
? question mark 물음표 🧾
  • 특수문자로 된 연산자에 대해 구글링 할 때, 키워드를 알아야한다
  • 위키피디아에 https://en.wikipedia.org/wiki/{특수문자} 를 입력해주면 바로 찾을 수 있었다

참고

wsl interop

  • rm -rf같은 리눅스 명령어를 윈도우에서 작성하고 싶다
  • 명령어를 똑같이 쓸 수 있는 방법이 있다
  • 파워셸 코어가 필요하다

전제조건

  • WSL 활성화

설치

terminal
1
Install-Module WslInterop
  • 파워셸 코어를 실행하고, Install-Module WslInterop으로 설치한다

사용하기

terminal
1
Import-WslCommand

새 터미널을 킬 때마다 다시 설정해줘야 한다?

  • Import-WslCommand 명령으로 wsl로 실행할 명령을 지정할 수 있다
  • 그런데 새로운 터미널을 켤 때마다 매번 명령을 쳐줄 수 없다
  • 파워셸 프로필을 설정해서 자동으로 임포트 명령이 실행되도록 한다
1
2
3
4
5
6
7
# 프로필 생성
if (!(Test-Path -Path $PROFILE)) {
New-Item -ItemType File -Path $PROFILE -Force
}

# profile파일 열고 wsl interop 설정
notepad $PROFILE
1
Import-WslCommand "apt", "awk", "emacs", "grep", "head", "less", "ls", "man", "sed", "seq", "ssh", "sudo", "tail", "vim", "rm", "touch"
  • 인터럽트 할 명령어를 위와 같이 나열한다
  • 이제 파워셸에서 나열한 셸 명령어를 사용할 수 있다

참고

github dot key

  • 레포를 로컬에 클론하지 않고도 코드를 탐색해 볼 수 있다
  • 아무 저장소에서 . (dot) key 를 눌러서 열어볼 수 있다
  • 처음 켜지는데 시간이 조금 걸린다

참고

docker context use

error
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
이 대화 상자 대신 JIT(Just-in-time) 디버깅을 호출하는
방법에 대한 자세한 내용은 이 메시지의 뒷부분을 참조하십시오.

************** 예외 텍스트 **************
System.Threading.Tasks.TaskCanceledException: Cancellation token triggered before we finished reading from the stream.
위치: HttpOverStream.ByLineReader.<ReadLineAsync>d__0.MoveNext()
// 생략...
************** JIT 디버깅 **************
JIT(Just In Time) 디버깅을 사용하려면 이 응용 프로그램 또는 컴퓨터의
config 파일(machine.config)의 jitDebugging 값을
system.windows.forms 섹션에 설정해야 합니다.
또한 응용 프로그램은 디버깅할 수 있도록 컴파일되어야
합니다.

예:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

JIT 디버깅을 사용하면 처리되지 않은 모든 예외는
이 대화 상자에서 처리되지 않고 컴퓨터에 등록된 JIT
디버거에 보내집니다.
  • 다음날 와보니 위 에러가 뜨면서 도커 실행이 안되었다
  • 생각해보니까 어제 컨텍스트 유스한 명령이 생각나서, 이 명령을 실행하기 이전으로 돌아가면 될 듯했다
terminal
1
2
3
4
5
6
7
8
# 명령어 살피기
docker context

# 컨텍스트 목록 보기
docker context list

# 기본값으로 바꾸기
docker context use default
  • 위 명령을 실행하고 다시 도커를 실행하니 잘 동작했다!

참고