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

nvm slow start

# zsh 시작이 오래 걸리는 문제가 있다.
# zprof(bulitin) 모듈을 추가해 zsh 시작을 프로파일링 해보자.
# ~/.zshrc 첫번째 라인
zmodload zsh/zprof
# ~/.zshrc 마지막 라인
zprof

# 이제 zsh 를 시작하면 다음과 같이 처리시간이 큰 커맨드를 확인할 수 있다. 
zsh
num  calls                time                       self            name
-----------------------------------------------------------------------------------
 1)    1        1413.91  1413.91   93.77%    532.48   532.48   35.31%  nvm_auto
 2)    2         881.44   440.72   58.45%    468.15   234.08   31.05%  nvm
 3)    1         349.74   349.74   23.19%    309.31   309.31   20.51%  nvm_ensure_version_installed
 4)    1          63.34    63.34    4.20%     49.80    49.80    3.30%  nvm_die_on_prefix
 5)    5          92.76    18.55    6.15%     41.40     8.28    2.75%  pmodload
 6)    1          40.43    40.43    2.68%     40.43    40.43    2.68%  nvm_is_version_installed
 7)    1          15.33    15.33    1.02%     15.33    15.33    1.02%  compinit
 8)    1          13.19    13.19    0.87%     13.19    13.19    0.87%  nvm_grep
 9)    1           9.20     9.20    0.61%      9.00     9.00    0.60%  _zsh_highlight_load_highlighters
10)    2           7.27     3.63    0.48%      7.27     3.63    0.48%  promptinit
11)    2          11.93     5.97    0.79%      6.86     3.43    0.45%  prompt_sorin_ysoftman_setup

# nvm.sh 의 nvm_auto(), nvm(), nvm_ensure_versin_installed() 이 오래걸린다는걸 알 수 있다.
# --no-use 를 옵션을 사용해 로딩하면 nvm 명령은 사용할 수 있지만 새로운 쉘 시작시 항상 system node 가 되어
# 특정 node 버전이 필요한 경우 nvm use v{버전} 으로 변경해야 하는 수고가 있다.
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" --no-use

# 관련해서 이슈가 있고 nvm lazy 로딩등을 얘기하는데 아직 정식으로 해결되진 않았다.

nvm 사용법

# nvm(node version manager)는 노드 세부 버전별로 사용할 수있게 해준다.
# 설치
# 설치하면 .bashrc .zshrc 등에서 ~/.nvm/nvm.sh 가 추가되이 실행된다.
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash

# 설치 가능한 노드 버전 리스트
nvm ls-remote

# 설치된 노드 버전 리스트
nvm ls

# 최신 노드 설치
nvm install node

# 노드 8.11.4 버전 설치(자동으로 설치된 버전이 use 된다.)
nvm install 8.11.4

# 노드 11.0.0 버전 사용
nvm use 11.0.0


# 자세한 설명은
https://github.com/creationix/nvm

kibana urlencoding string field 이슈

# 다음과 같은 es 환경을 사용중이다.
nginx packetbeat -> es -> kibana

# nginx로 들어오는 요청을 카운트하는 visualize (그래프)를 생성할때
http.request.params

# 로 스트링 형태의 파라미터 필드값을 사용하는데,
# 여기에 한글과 같은 non-ascii 의 경우 URL encoding 된 상태다.
# 문제는 막대그래프로 보면 레이블이 %x 와 같이 URL 인코딩된 상태로 보인다는 것이다.
# 필드값을 커스터마이징 하려고
kibana -> index patterns -> 아무 string 필드 -> type format -> string

# 에서 transform 을 보면 아래 사진과 같이 URL 인코딩 요소는 없다.


# 이런 이슈를 제기한 사람이 있었지만 아쉽게도 kibana 에선 공식 지원이 없다고 한다
https://discuss.elastic.co/t/how-to-use-url-decode-on-json-input/106626

# kibana plugin 를 만들던가 아니면 kibana 소스를 수정(contribute?)해야 한다.


#####


# kibana 소스 수정해서 실행하기
# 참고
https://github.com/creationix/nvm
https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md

# 우선 ~/.nvm 디렉토리 생성후 nvm 설치해야 한다.
mkdir ~/.nvm
export NVM_DIR=~/.nvm
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash

# kibana 를 내 github 으로 fork 한다.
# fork 된 kibana 소스 다운로드
git clone https://github.com/ysoftman/kibana.git kibana
cd kibana

# 커밋시 사용할 사용자 정보 설정
git config user.email "ysoftman@gmail.com"
git config user.name "ysoftman"

# kibana 원저장소 upstream 으로 설정
git remote add upstream "https://github.com/elastic/kibana"

# upstream 최신 내용 가져오기
git fetch upstream

# master 내용 urldecode-transform 로 반영해서 충돌있으면 수정
git merge upstream/master

# 8.11.4 버전의 노드 사용(kibana 버전에 따라 달라질 수 있다)
nvm install 8.11.4 && nvm use 8.11.4
# kibana 8 의 경우
nvm install 10.15.2 && nvm use 10.15.2
# 10.15.2 를 디폴트로 설정(매번 nvm use 를 하지 않으려면)
nvm alias default 10.15.2

# nvm 버전 확인
nvm list

# kbn(kibana) bootstrap(kibana 실행에 필요한 의존성 패키지들 설치)
# kibana 업데이트로 소스 변경이 발생할때마다 설치해줘야 한다.
yarn kbn bootstrap

# 만약 ubuntu 에서 다음 에러 발생한다면
ERROR: [Errno 2] No such file or directory: 'kbn'

# yarn 최신 버전 설치한다.
# 참고 https://yarnpkg.com/en/docs/install#debian-stable
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update && sudo apt-get install yarn

# es(elasticsearch) 스냅샷(nightly 버전 다운받아 실행 한다.)
yarn es snapshot

# es 스냅샷은 최신버전만 제공하기 때문에 kibana 가 최신 업데이트 되지 않으면
# 예전 버전의 스냅샷 찾기 때문에 다음 에러가 발생한다.
Error: Unable to download elasticsearch snapshot: Not Found

# 만약 오랜 버전의 es 를 사용하려면 .tar 파일을 다운받아 archive 로 실행한다.
# 이 방법은 es 와 kibana 호환을 위해서 되도록이면 snapshot 을 사용하자.
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.0-linux-x86_64.tar.gz
yarn es archive ./elasticsearch-7.3.0-linux-x86_64.tar.gz

# (es가 실행중이기 때문에 별도의 쉘에서) kibana 실행
yarn install && yarn start

# kibana 접속
# url path 는 매번 시작시 랜덤하게 정해진다.
http://localhost:5603/kur

# kibana 디폴트 로그인
id : elastic
pw : changeme

# kibana 빌드
yarn build

# urldecode-transform 브랜치에서 수정 작업하기
git checkout -t origin/urldecode-transform


#####

# string 필드의 transform -> URL decode 추가 커밋 참고
https://github.com/elastic/kibana/pull/25694/commits/9b715d68d862bd095263188c3314416441ff0ef0

# 이제 kibana 웹페이지를 refresh 한다.
# kibana -> index patterns -> 수정할 스트링 필드 -> type format -> string 에 다음 그림처럼 url decode 항목이 적용된다.


# mocha 로 수정부분만 테스트
yarn test:mocha "src/**/field_formats/types/__tests__/**/string.js"

# pr 하면 kibana jenkins 에서 jest 를 수행하기 때문에
# jest snap 수정후
src/legacy/ui/public/field_editor/components/field_format_editor/editors/string/__snapshots__/string.test.js.snap

# jest 테스트가 필요하다.
yarn test:jest

# 최초 upstream 푸시
git push -u upstream

# github PR 요청
# kibana 7.5 버전에 포함될 예정이다~ㅋ
https://github.com/elastic/kibana/pull/25694

# 수정 커밋이 있을 경우
# ysoftman/kibana 의 urldecode-transform 브랜치로 push 하면 된다.

# 참고로 수정내용 배포는 yarn 빌드를 해야 하지만 yarn 빌드에 문제가 있는 경우
# 간단하게(사실 번들링 소스는 포맷팅도 안되고 파일 사이즈가 크다)
# kibana release .tar.gz 소스를 다운받아 압축을 해제 후
# kibana.bundle.js 에서 위 수정사항을 추가한다.
# 그리고 다음처럼 압축한다.
tar czf kibana-5.4.1-linux-x86_64-modified.tar.gz

윈도우10 ubuntu 터미널 npm 에러

# 윈도우10의 ubuntu 터미널 npm 을 실행하려고 하면 다음의 에러가 발생한다.
: not foundram Files/nodejs/npm: 3: /mnt/c/Program Files/nodejs/npm:

# 윈도우10의 npm 을 실행하면서 발생한 에러로 윈도우10에서 nodejs 를 삭제하면 된다.
# 윈도우10 ubuntu 에서는 이제 npm은 /usr/bin/npm 을 사용하게 된다.
# 참고로 npm 설치 방법
# ubuntu
sudo apt-get install nodejs
sudo apt-get install npm

# centos
sudo yum install nodejs

# nvm 설치 스크립트를 이용한 수동 설치
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
. ${HOME}/.nvm/nvm.sh
nvm install node
nvm use node
npm install -g npm