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

vue local devserver proxy

# 예시
# 현재 로컬 서버 http://localhost:8080
# 요청 서버 http://my.ysoftman.com:443

# 로컬에서 vue 개발시, 도메인이 다른 호스트 요청시 발생하는
# cors(Cross-origin resource sharing) 에러 해결을 위해
# vue.config.js (webpack) proxy 를 설정한다.
 
module.exports = {
  // 로컬 개발시(이 파일 수정시 npm run serve 로 다시 시작해야함)
  devServer: {
    https: true,
    // /api 로 시작하는 경로 요청을 target 으로 요청
    proxy: {
      '^/api': {
        target: 'https://my.ysoftman.com:443',
        changeOrigin: true,
      },
    disableHostCheck: true,
  },
};

# 위와 같이 프록시 설정하면, cors 이슈도 없고, 쿠키등의 헤더도 잘 전달된다.

# 주의사항
# xmlhttprequest, axios 등으로 요청 호스트명을 빼서 로컬 호스트로 요청해야 한다.
# 그래야 위 (로컬서버에 대한) 프록시 처리가 된다.


#####


# 만약 호스트명이 필요한 실제 서비스 환경과 로컬 develop 개발 환경 구분이 필요한 경우
# host 변수을 두고 다음과 같이 process.env.NODE_ENV 에 따라 '' 로 설정해 처리하자.

let host = "http://my.ysoftman.com:443"
if (process.env.NODE_ENV != null && process.env.NODE_ENV == 'development')
{
  return '';
}


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

package.json 버전 의존성

node.js 의 패키지 설정 파일 package.json 에서 버전을 명시할때의 규칙

기본적으로 연산자가 없으면 version 버전이 정확히 일치하는 것을 사용
1.2.x  는 1.2.0 1.2.1 ... 1.2.9999
"" (empty string) 또는  * 는  >=0.0.0
>version 버전 초과
>=version 버전 이상(버전 포함)
<version 버전 미만
<=version 버전 이하(버전 포함)
version1 - version2 는 >=version1 <=version2 와 같다.
version1 || version2 버전1 또는 버전2
^version 명시된 버전부터 0이 아닌 숫자로 명시된 단위에서의 최대 버전까지의 범위
(예시)
^1.2.3 는 >=1.2.3 <2.0.0
^0.2.3 는 >=0.2.3 <0.3.0
^0.0.3 는 >=0.0.3 <0.0.4
~vesrion 명시된 버전부터 마이너 버전이 명시되면 패치버전 최대까지, 그렇지 않으면 마이너버전 최대까지 범위
(예시)
~1.2.3 는 >=1.2.3 <1.3.0
~1.2 는 >=1.2.0 <1.3.0
~1 는 >=1.0.0 <2.0.0
~0.2.3 는 >=0.2.3 <0.3.0

[참고]
1.2.3.99 버전에서 각 단위
1 : major version
2 : minor version
3 : patch version
99 : build version
https://docs.npmjs.com/misc/semver