레이블이 Tools인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Tools인 게시물을 표시합니다. 모든 게시물 표시

typos

# 소스에서 (영문)오타를 찾아보자.(git-cliff 에서도 사용)
# 설치
brew install typos-cli

# typos.toml 에 오타 대상 제외 설정하기

# 오타 보기
typos

# 대상 단어 보기
typos --words

# 대상 식별자 보기(snake_case,CamelCase등으로 구분)
typos --identifiers

mac cpu temperature

# mac cpu/gpu 온도 파악하기
sudo powermetrics | grep -i temperature

linux ip iptables 사용하기

# linux 에서 자주 사용되는 ip 명령 예제들
# 참고로 다음과 같이 각 명령에 대한 도움말을 볼 수 있다.
ip addr help 
ip link help 

# 네트워크 장치�ipv4, ipv6 주소 정보
ip addr

# ip 주소할당, dev(device)로 eth0 를 사용
ip addr add 10.10.10.2/24 dev eth0

# ip 주소 삭제
ip addr add 10.10.10.10/24 dev eth0
ip addr delete 10.10.10.10/24 dev eth0

# 장치별 링크 정보 
ip link

# 라우터 정보
ip route

# 연결된 이웃 장치 정보
ip neighbor


##### 네트워크 네임스페이스 구분해서 통신하기 #####


# veth(virtual Ethernet devices) 타입으로
# lemon_eth0 apple_eth0 를 생성하고 연결한다.
ip link add lemon_eth0 type veth peer name apple_eth0

# namespace 확인
ip netns

# LEMON namespace(네트워크가 호스트 네트워크와 격리됨) 생성
# /var/run/netns/LEMON 파일이 생성된다.
ip netns add LEMON
ip netns add APPLE

# lemon_eth0 의 네임스페이스를 LEMON 으로 설정
ip link set lemon_eth0 netns LEMON
ip link set apple_eth0 netns APPLE

# LEMON 네임스페이스에 접속해서 lemon_eth0 장치 시작하기 
ip netns exec LEMON ip link set lemon_eth0 up
ip netns exec APPLE ip link set apple_eth0 up

# LEMON 네임스페이스에 접속해서 lemon_eth0 장치에 ip 설정하기
ip netns exec LEMON ip addr add 10.10.10.2/24 dev lemon_eth0
ip netns exec APPLE ip addr add 10.10.10.3/24 dev apple_eth0

# APPLE apple_eth0 의 패킷을 모니터링 하고
ip netns exec APPLE tcpdump -l -i apple_eth0
# LEMON(lemon_eth0) --> APPLE(apple_eth0) 로 핑을 보내 확인 할 수 있다.
ip netns exec LEMON ping 10.10.10.3

# 참고로 매번 네임스페이스 exec 를 명시하지 않고,
# nsenter 명령으로 네임스페이스 들어가 있을 수 있다.
# 들어간 네임스페이스에 exit 를 하면 빠져나온다.
nsenter --net=/var/run/netns/LEMON
ping 10.10.10.3

# 통신시 ARP 로 매번 브로드캐스팅은 비효율적이라 캐싱하게 된다.
# LEMON 네임스페이스 상에서 이웃을 조회하면 10.10.10.3(apple_eth0)가 캐싱되있다.
ip neighbor

# 현재 네임스페이스를 빠져나온다.(호스트(루트) 네임스페이스로 이동)
exit

# 이제 LEMON, APPLE 네임스페이스 삭제하면 LEMON, BLUE 네임스페이스 안의 이더넷도 모두 삭제된다.
ip netns del LEMON
ip netns del APPLE


##### iptables(netfilter) 설정하기 #####


# iptables 은 커널의 netfilter(프레임워크)에 rules를 설정하고 실제로는 netfilter 로 방화벽 기능이 동작한다.
# netfilter 는 다음 5개의 chain 을 hook 하고 룰에 따라 패킷을 필터링한다.
# PREROUTING: 외부로부터 들어오는 패킷
# INPUT: PREROUTING -> 로컬에서 받아야 하는 패킷
# FORWARD: PREROUTING -> FORWARD -> POSTROUTING 으로 로컬을 거치지 않고 외부로 부터 들어온 패킷을 다른 외부로 가야하는 패킷
# OUTPUT: 로컬 -> POSTROUTING 으로 로컬에서 외부로 가는 패킷
# POSTROUTING: FORWARD 또는 로컬에서 외부로 나가야하는 패킷

# 각 chain 에 맞는 다음과 같은 성격의 룰 테이블이 있다.
# filter:  패킷 필터링에 사용하는 테이블, INTPUT,FORWARD,OUTPUT 에서 사용
# nat: 출발지, 목적지 변경시 사용하는 테이블, PREROUTING,POSTROUTING 에서 사용
# mangle: 패킷 변조시 사용하는 테이블�, 5개 chain 모두에서 사용
# raw: 주로 netfilter 에서 추적하지 않도록 NOTRACK 설정하는데 사용하는 테이블, PREROUTING,OUTPUT 에서 사용
# security: SELinux 보안 사용시 사용하는 테이블, INPUT,FORWARD,OUTPUT 에서 사용

# filter 테이블 -S(list-rules) 룰 리스트 보기
iptables -t filter -S 
# -t 명시하지 않으면 filter 가 기본값이다.
iptables -S

# FOWARD chain에 설정된 rule들 보기 -v(가 없으면 in,out 이더넷 장치가 보인다) 
iptables -L FORWARD -v
iptables -L INPUT -v

# 10.10.10.3 으로 부터 들어오는(INPUT chain) -j(--jump) DROP(패킷 차단) 룰 추가(-A, --append)
iptables -A INPUT -s 10.10.10.3/32 -j DROP

# 10.10.10.3 으로 부터 들어오는(INPUT chain) -j(--jump) ACCEPT(패킷 허용) 룰 추가(-A, --append)
iptables -A INPUT -s 10.10.10.3/32 -j ACCEPT

# 룰 삭제(-D, --delete)
iptables -D INPUT -s 10.10.10.3/32 -j ACCEPT

# -A 같은 내용의 룰이 계속 추가 되 때문에
# -D 같은 내용이라도 마지막 룰만 삭제되어 모두 삭제하려면 N번 실행해야 한다.

# 외부(인터넷) 통신을 위해서는
# POSTROUTING 에 nat 추가
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -j MASQUERADE
# 패킷을 내 사설IP 에서 받을 수 있도록 -d(--destination) 허용
iptables -t filter -A FORWARD -d 10.10.10.3/24 -j ACCEPT

# nat 설정 상태 확인
iptables -t nat -S

rust cli tools

alacritty(https://github.com/alacritty/alacritty) kitty, iterm2 대체
bandwhich(https://github.com/imsnif/bandwhich) iftop 대체
cfont (https://github.com/dominikwilkowski/cfonts) toilet,figlet 대체
coreutils(https://github.com/uutils/coreutils) gnu binary 대체
gitui(https://github.com/extrawurst/gitui) tig,lazygit 대체
grex(https://github.com/pemistahl/grex) 정규표현식
hexyl(https://github.com/sharkdp/hexyl) hexdump 대체
onefech(https://github.com/o2sh/onefetch) git 저장소 neofetch
termscp(https://github.com/veeso/termscp) scp,ftp 대체
termusic(https://github.com/tramhao/termusic) terminal music player
ytop(https://github.com/cjbassi/ytop) top,htop 대체
zenith(https://github.com/bvaisvil/zenith) top,htop 대체
zoxide(https://github.com/ajeetdsouza/zoxide) cd command 대체


gpg 암복호화 사용하기

# gpg 는 GnuPG(Privacy Guard)의 OpenPGP 부분을 구현한 암복호화 프로그램이다.
# OpenPGP(Pretty Good Privacy) 스펙(https://www.ietf.org/rfc/rfc4880.txt)

# 처음에는 키를 생성을 해야 한다.
# 여러번 실행해서 여러개의 키를 생성할 수도 있다.
gpg --gen-key

... 생략 ...


Real name: ysoftman
Email address: ysoftman@123.com

... 생략 ...

We need to generate a lot of random bytes

... 생략 ...

Passphrase(암호) 입력 화면이 나온다.

# 만약 진행 안되고 타임아웃되면 rm -rf ~/.gnupg 를 삭제하고 다시 시도해야 한다.
# 성공했으면 ~/.gnupg 에 관련 파일이 생성된다.
# public 키 확인
gpg --list-keys

# secrect 키 확인
gpg --list-secret-keys

# 테스트 파일 생성
cat > msg.txt << zzz
this is test message.
이건테스트메시지입니다.
zzz

# 암호화하면 암호화된 msg.txt.gpg 파일이 생성된다.
# -e --encrypt
# -r --recipient 키 생성할때 입력한 사용자 이름 ysoftman
gpg -e -r ysoftman msg.txt

# 복호화
# 최초 복호화시 ysoftman 키 생성시 입력 한 암호 입력해야 한다.
# -o --output
# -d --decrypt
gpg -o out.txt -d msg.txt.gpg

webp 대신 png 파일 사용하기

google+ (서비스 종료 예정) 로 업로드된 파일을 다운받으려고 하니 webp 파일이다.
구글의 이미지 압축 포맷인 webp 은 기본적으로 mac 에서 열리지 않는다
다음은 걷기 기록 화면 webp 이미지 파일 URL 이다.
링크를 열면 브라우저에서 이미지가 보이지만 다운로드는 webp 파일로 된다.
https://lh3.googleusercontent.com/-rDMjtil_-5c/VlW6l3-LN7I/AAAAAAAABq8/ORBpdOX7C4o/w1325-h1238-n-rw/15.%2B11.%2B25.%2B-%2B1

[URL변경]
위 URL 에서 -rw 부분만 제거하면 png 파일을 다운받을 수 있다.
https://lh3.googleusercontent.com/-rDMjtil_-5c/VlW6l3-LN7I/AAAAAAAABq8/ORBpdOX7C4o/w1325-h1238-n/15.%2B11.%2B25.%2B-%2B1

[앱사용]
파일을 mac 에 열어 convert 할 수 있다.
https://github.com/webponize/webponize
하지만 에러가 나고 잘 열리지 않는다.ㅠ

[웹사용]
대신 온라인에서 webp -> png 변경해주는 사이트가 있다.

duti 로 맥 기본 프로그램 설정

# 맥에서 파일을 실행(open)에 사용되는 기본 프로그램은 변경은 보통 다음과 같이 변경할 수 있다.
파일 -> 팝업메뉴 -> 다음으로 열기 -> 기타 -> 항상 다음으로 열기 체크 후 프로그램 선택)

# duti 를 이용하면 위 작업을 터미널에서 쉽게 할 수 있다.
# duti 맥에서 기본 프로그램 설정하기를 CLI 환경에서 쉽게 해주는 툴이다.
# 참고 https://github.com/moretension/duti

# 맥에서 설치
brew install duti

# .md 파일은 vscode 프로그램으로 열기
duti -s com.microsoft.VSCode .md all

# .md 디폴트 프로그램 설정 보기
duti -x .md

windows 10 사진 뷰어 흐릿하게 보이는 문제

윈도우10 의 기본 사진 뷰어 앱으로 사진을 보면 흐릿하게(blurry) 보인다.
(참고로 기존 "windows 사진 뷰어" 으로는 잘 보인다.)

관련 이슈가 있었고 사진 앱을 업데이트해야 한다.
https://answers.microsoft.com/en-us/windows/forum/apps_windows_10-photos/photos-app-often-displays-sharp-images-as-somewhat/29b79fea-889b-48e4-8368-1a2d2922dd0c?page=1

앱은 최신으로 이미 업데이트되어 있는 상태였다.
그리고 화면캡쳐된 사진들만 blurry 보이는것 같다.

설정 -> 앱 -> 앱 및 기능 -> 사진 앱 검색 -> 고급옵션 -> 초기화
를 해도 blurry 는 해결되지 않았다.
사진 앱은 제거도 안된다.ㅠ

그냥 문제 없는 "windows 사진 뷰어" 를 기본 앱으로 설정하는 것이 좋다.
설정 -> 앱 -> 기본앱 -> 사진뷰어 -> "windows 사진 뷰어"

윈도우 screen gif 캡쳐

맥에선 GIPHY Capture 앱으로 움직이는 gif 를 만들었는데,
윈도우에서는 ScreenToGif 라는 오픈 소스 프로그램이 있더라.

https://github.com/NickeManarin/ScreenToGif

에서 msi 파일을 다운받아 설치하자.


녹화버튼을 누르면 다음과 같은 창으로 변경되어 원하는 위치를 gif 로 캡쳐할 수 있다.

녹화 및 정지 후에는 프레임별로 편집할 수도 있다.

Linux hexadecimal 만들기

인코딩을 변경하게 되면 영어 외의 언어는 터미널에서 깨져 보인다.
예) utf8로 설정된 터미널에서 euc-kr 글자를 보는 경우 또는 반대의 경우

이럴때 hexadecimal(16진법, hex)로 변경하면 깨져 보이지 않고,
인코딩 관련 테스트 코드를 만들때에도 == 등으로 비교하기도 용이하다.

linux 에서 hex 로 변경하는 툴로 hexdump, xxd 를 많이 쓴다.
/usr/bin/hexdump
/usr/local/bin/xxd

# 파일 내용 hex 로 보기
hexdump ysoftman.txt

# stdout 내용 hex 로 보기
# 참고로 끝에 LF(0a) 이 추가된다.
echo "가나다라마바사아자차카타파하-abcdefg" | hexdump

# Canonical형식(오른쪽에 문자내용 추가로 출력)으로 hex 로 보기
echo "가나다라마바사아자차카타파하-abcdefg" | hexdump -C

# n 바이트만 hex 로 보기
echo "가나다라마바사아자차카타파하-abcdefg" | hexdump -n 3

# 2바이트씩 구분해서 hex 로 보기
echo "가나다라마바사아자차카타파하-abcdefg" | hexdump -x

# 주소 표시 없이 -e '포맷' 설정하여 헥사값 보기
# 100/1 : 100바이트 마다, 1바이트 기준(구분)으로, 출력 포맷을 적용
# "%02x " : 출력포맷, 2자리(0채움)hex를 공백 구분하여 출력
echo "가나다라마바사아자차카타파하-abcdefg" | hexdump -e '100/1 "%02x "'

libcaca 터미널에 텍스트 그래픽 출력하기

libcaca 는 텍스트로 터미널에 그래픽을 표현하는 라이브러리다.
http://caca.zoy.org/wiki/libcaca

# 맥기준 설치
brew install libcaca

# 설치하면 요런것들을 실행할 수 있다.
/usr/local/bin/caca-config
/usr/local/bin/cacaclock
/usr/local/bin/cacademo
/usr/local/bin/cacafire
/usr/local/bin/cacaplay
/usr/local/bin/cacaserver
/usr/local/bin/cacaview

# cacademo, cacafire 를 실행하면 텍스트 그래픽으로 표현한 다양한 다음과 같은 데모들을 볼 수 있다.


# cacaclodk 은 .tlf 폰트 파일이 필요하다.
# figlet 을 설치하면 .tlf 폰트도 같이 설치되니 이걸 사용하면 된다.
brew install figlet
cacaclock -f "/usr/local/share/figlet/mono12.tlf"

# 참고
# iterm2 의 최근 nightly 버전을 설치하면 GPU 가속을 사용해야 부드럽게 보인다.
# iterm2 GPU 기능 활성화
preferences -> advanced -> user metal GPU-based renderer -> yes
preferences -> advanced -> show FPS meter -> yes

chrome cache data 보기

# 다음 url 로 크롬에서 캐시되고 있는 데이터를 볼 수 있다.
chrome://cache/

# 캐시 URL 링크를 클릭하면 다음과 같은 hex 덤프를 볼 수 있다.

# 위 hex dump 내용을 txt 파일로 만들고 다음 명령으로 html 으로 복구 할 수 있다.
# xxd -r : hdexdump revert
xxd -r chrome-cache.txt  >  chrome-cache.html

jq command

# 커맨드 라인으로 json data 를 grep 할때 jq 를 사용하면 편하다.

# 맥에서 설치
brew install jq

# centos 에서 설치
yum install jq

# jq 를 이용한 json data grep
# 다음 test.json 있을때
cat > test.json << zzz
{
  "name": "bundling",
  "version": "1.0.0",
  "description": "테스트",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "webpack --watch",
    "build": "webpack -p"
  },
  "keywords": ["lemon", "orange", "apple"],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "babel-core": "^6.26.0",
    "babel-loader": "^7.1.2",
    "webpack": "^3.10.0"
  },
  "aaa-bbb": "hypen-test",
  "aaa.bbb": "ccc",
  "aaa": { "bbb.ccc" : "ddd"},
  "arrayobj" : [
    {"name":"lemon", "price":200, "desc":"lemon_desc" },
    {"name":"apple", "price":300, "desc":"apple_desc" },
    {"name":"orange", "price":100, "desc":"orange_desc" }
  ]
}
zzz

# json 보기
jq . test.json

# json 여부 판단하기
# object, array 면 json
# number, string 등이면 json 이 아닌것으로 판단
jq type test.json

# script object 가져오기
jq .scripts test.json

# cat 과 파이프를 사용해도 된다.
# script object 가져오기
cat test.json | jq .scripts

# 키 이름만 가져오기
jq 'keys' test.json

# dependencies 아래 키 이름만 가져오기
jq '.dependencies|keys' test.json

# script.start 키 값 가져오기
jq .scripts.start test.json

# -r(--raw-output)을 사용하면 "aaa" -> aaa 로 "제거
jq -r .scripts.start test.json

# script 의 start 와 build 필드 값 가져오기
jq '.scripts | "\(.start) \(.build)"'  test.json

# keywords arrary 가져오기
jq .keywords test.json

# keywords 두번째 값 가져오기
jq ".keywords[1]" test.json

# keywords 0,1 원소 가져오기
jq ".keywords[:2]" test.json

# keywords 마지막 원소 가져오기
jq ".keywords[-1]" test.json

# keywords 값 순회하기
jq ".keywords[]" test.json

# keywords 원소 개수
jq ".keywords | length"  test.json

# keywords 와 arrayobj의 name 가져오기
jq '.keywords, .arrayobj[].name' test.json

# keywords 는 AA 필드명의 값으로 하는 오브젝트 와 arrayobj의 name은 BB 필드명의 값으로 해서 가져오기
jq '{"AA":.keywords}, {"BB":.arrayobj[].name}' test.json 

# AA 와 BB 를 하나의 오브젝트로 가져오기
jq '{"AA":.keywords, "BB":.arrayobj[].desc}' test.json

# 쉘 변수는 '$변수' 로 사용
var1="ysoftman"; jq '{"AA":.keywords, "BB":.arrayobj[].desc, "CC":"'${var1}'"}' test.json

# name 필드로 정렬(알파벳 오른 차순)
jq '.arrayobj | sort_by(.name)' test.json

# price 필드로 정렬(숫자 오름 차순)
jq '.arrayobj | sort_by(.price)' test.json

# sort_by 의 입력은 [](배열)이어야 한다.
# 입력 json 이 [] 아니라면 -s(--slurp)로 array 변경해서 처리한다.
jq '.arrayobj[]' test.json | jq -s 'sort_by(.price)'  

# 필드명에 . - 등이 있는 경우 ""안에 넣어야 한다.
# 참고로 https://jsonapi.org/format/#document-member-names 을 보면 . 은 필드명을 쓰지 말라고 한다.
jq '."aaa-bbb"' test.json
jq '."aaa.bbb"' test.json
jq '.aaa["bbb.ccc"]' test.json

# 오브젝트(mylist) 리스트 중 특정 필드(name)만 가져오기
jq ".mylist[]".name

# array 요소 중 name 필드값이 특정값인 경우만 가져오기
jq '.arrayobj[] | select(.name == "orange")' test.json

# array 요소 중 name 필드값이 "l" 이 포함된 경우만 가져오기
jq '.arrayobj[] | select(.name | contains ("l"))' test.json

# array 요소 중 name 필드값이 "l" 이 포함 안된 경우만 가져오기
jq '.arrayobj[] | select(.name | contains ("l") | not)' test.json

# addobj 추가하기
jq '. + {"addobj": {"field1": "added_field1", "field2": "added_field2"}}' test.json > test2.json

# author 와 main 필드 값 변경하기
jq '.author="ysoftman" | .main="main.js"' test.json > test2.json

# test2.json 에서 addobj.field2 삭제하기
jq 'del(.addobj.field1)' test2.json

# object list 만들기
echo '[]' | jq '.+[{"a":"aaa","a1":111},{"b":"bbb","b1":222}]'

#####

# mjson 으로 json pretty(indent,들여쓰기) 하기
# mjson 설치
sudo pip install mjson

# 들여쓰기 형태로 보기
echo '{"a":1,"b":2}' | mjson

#####

# jq-1.6 에서 다음과 같이 .[]로 사용하면 문법에러가 발생한다.
cat out.json | jq -r '.status.nodes.[]'
jq: error: syntax error, unexpected '[', expecting FORMAT or QQSTRING_START (Unix shell quoting issues?) at <top-level>, line 1:
.aaa.[]
jq: 1 compile error

# jq-1.6 에서는 다음과 같이 . 없이 사용해야 에러가 발생하지 않는다.
cat out.json | jq -r '.status.node[]'

# 참고로 jq-1.7.1 로 다운받아 실행하면 아래 2가지 방식 모두 된다.
wget https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-linux64
cat out.json | ./jq-linux64 -r '.status.nodes[]'
cat out.json | ./jq-linux64 -r '.status.nodes.[]'

#####

# interactive json viewer
# jq 쿼리문을 테스트할때 유용하다.

ip addr 사용

# 리눅스에선 예전에는 ip 확인을 위해서 /sbin/ifconfig 를 사용했다.
# ifconfig 가 없다면 net-tools 패키지를 설치하면 된다.
yum install net-tools

# 이제는 /sbin/ip 를 사용한다.
# ip 가 없다면 다음과 iproute 패키지를 설치하면 된다.
yum install iproute

# ifconfig 명령은
ip addr

# route 명령은
ip route

# arp 명령은
ip neigh

# netstat 명령은
ss

# 참고 https://en.wikipedia.org/wiki/Iproute2

glances monitoring

glances 는 unix 계열에서 기본적으로 사용하는 모니터링 프로그램인 top 과 비슷하다.
윈도우, 안드로이드 폰에서도 작동된다.

# 맥에서 다음과 같이 pip 로 설치시
pip install glances

# 다음과 같이 디렉토리를 생성하지 못해 에러가 발생한다.
"error: could not create '/System/Library/Frameworks/Python.framework/Versions/2.7/share': Operation not permitte"

# 이때는 --user 옵션을 주어 현재 사용자 로컬 위치에 설치하자.
# /Users/ysoftman/Library/Python/2.7/lib/python/site-packages/glances
# /Users/ysoftman/Library/Python/2.7/bin
# 환경 추가
# export PATH=$PATH:~/Library/Python/2.7/bin:
pip install --user glances

# 최근엔 brew 로도 설치할 수 있다.
brew install glances

# 실행
glances

# 웹서버 모드로 실행(bottle 이 설치되어 있어야 한다.)
sudo pip install bottle
glances -w

http://0.0.0.0:61208 로 웹 모니터링 페이지를 볼수 있다.

htop vtop bpytop 사용

# nix 계열에서 프로세스 모니터링을 위해 기본적으로 사용된 top 프로그램들

# C 로 만든 htop
# http://hisham.hm/htop/index.php
# https://github.com/hishamhm/htop
# 설치
# centos
yum install htop

# ubuntu
apt-get install htop

# mac
brew install htop

# h : help
# t : tree view
# p : program path
# q : quit
# P : sort by CPU
# M : sort by MEM
# T : sort by TIME
# space : tag process



# javascript 로 만든 vtop
https://parall.ax/vtop
https://github.com/MrRio/vtop
# 설치 (실행 후 업데이트 버전이 있으면 자동 업데이트)
sudo npm install -g vtop
# 실행시 옵션으로 테마를 적용할 수 있다. ex) vtop --theme monokai


# bpytop
https://github.com/aristocratos/bpytop
# python 으로 만들어졌고 cpu 온도까지 표시되는 가장 최신 스타일의 top 프로그램이다.
# 설치
pip3 install bpytop --upgrade
brew install hacker1024/hacker1024/coretemp
brew install osx-cpu-temp

# osx-cpu-temp 는 cpu 통 온도 하나만 표시하는데,
# 코어별 온도가 표시되는 coretemp 설치하면 사용하지 않아 설치할 필요 없다.
# 그런데 맥북에서 coretemp 실행하면 0 번째 코어를 찾지 못하는 문제가 있다.
# imac 에선 코어별 SMC 센서 코드가 TCOC, TC1C .. 로 0부터 시작하지만
# macbook 에선 TC1C, TC2C,.. 로 1부터 시작하는 차이가 있다.
# 그리고 CPU 전체 온도를 imac 에선 CPU DIE 로 TC0D 로 사용하지만
# macbook 에선 CPU Proximity 로 TC0P 로 사용한다.
# SMC 코드 참고 https://logi.wiki/index.php/SMC_Sensor_Codes
# 이 때문에 맥북에선 cpu core 별 온도가 표시되지 않는다.
# 해당 coretemp 코드 수정해서 PR 날린 상태다.
# 아래처럼 기존 패키지는 삭제하고 repo 로 빌드하고 복사해 사용하면 온도가 표시된다.
brew uninstall osx-cpu-temp coretemp 
git clone https://github.com/ysoftman/coretemp && cd ./coretemp && make && ./coretemp && cp -v ./coretemp /usr/local/bin

# macbookpro(mbp) coretemp 수정 PR 생성했는데 머지됐다.
# 그냥 coretemp 사용하면 된다.ㅎ

# M : 메뉴설정에서 테마 변경등을 변경할 수 있다.


# tmux 로 4개의 top 을 띄워본 화면
# 0 기본 top
# 1 htop
# 2 vtop
# 3 bpytop


# btm
# 설치
brew install bottom
# rust 로 만들었고, usage 를 그래프로 보고 싶을때 bpytop, vtop 보다 빠르게 로딩돼 좋다.

# ytop
# 설치
brew install ytop
# rust 로 만들었고, btm 처럼 빠르다.

# btop
# 설치
brew install btop
# c++ 로 만들었고 bpytop과 UI가 비슷하다.

맥 스크린 캡쳐 gif 만들기

맥용 screen gif 생성 프로그램 GIPHY Capture, 앱스토에서 다운받아 설치해보자.


사용방법은 프로그램을 실행하고 캡쳐할 영역을 지정하고 녹화 버튼을 누르면 된다.
스크린 gif 캡쳐 테스트


chrome extension - Edit This Cookie

# Edit This Cookie
# 현재 웹에 관련된 쿠키 값 파악 및 수정할 수 있다.
크롬 -> 웹 스토어 -> "edit this cookie" 설정

# 사용방법
구글 검색 후 edit this cooke 실행

# 사용예시


chrome extension - vimium

# vimium
# 현재 웹 페이지에서 특정 부분에 포커스를 해주는 툴
크롬 -> 웹스토어 -> "vimium" 으로 검색해서 설치

# 사용방법
웹 페이지에서 f 키를 누르면 각 부분에 태그명이 표시되고 이를 입력하면 해당 부분에 포커스가 된다.
태그 입력시 대소문자 구분을 하지 않아도 된다.
현재 입력창에 포커스 되어 있거나 특정 웹에서는 동작하지 않는다.

# 사용 예시


# 기타 자세한 명령은 ? 하면 다음과 같이 help 를 볼 수 있다.


웹 액세스 로그 시각화 툴 LogStalgia

apache, nginx 와 같은 웹 서버의 accesslog 를 visualization(시각화)해주는 툴이다.
윈도우, 리눅스, 맥 모두에서 동작한다. (콘솔환경은 안됨)
다운로드 http://logstalgia.io/

# 로그파일 기준으로 플레이(실행)
logstalgia access.log

# 실시간으로 시각화 하기
tail -f /var/log/apache2/access.log | logstalgia --sync