Sunday, November 26, 2017

버킷리스트

생각나는대로 버킷리스트를 작성하려고 한다.

1. 첫째아들과 둘째아들과 실내클라이밍 배우기
2. 첫째아들과 둘째아들과 여의도, 춘천 캠핑
3. 러시아 횡단열차타서 유럽으로 가기
4. 미국 라스베가스 한번더 놀러가기
5. 와이프랑 에펠타워 가기
6. 부모님 모시고 펜션 놀러가서 고기 구워먹기
7. 암벽등반 도전해보기.
ㅎㅎㅎ

Tuesday, October 31, 2017

Effective Java 규칙13 클래스와 멤버의 접근 권한은 최소화 하라

1. API를 만들때 감출수 있는 내용은 모두 감추는게 좋다
2. information hiding 정보 은닉, encapsulation 캡슐화라고 용어로 알려져있다. ( 소프트 설계의 기본 원칙중의 하나라고 한다. )
3. 정보은닉이 중요한 이유
  - 의존성을 낮춰서 병렬 개발 가능
  - 의존성을 낮추서 개발 속도 증가
  - 유지보수도 낮출수 있다.
4. 핵심은 각 클래스와 멤버는 가능한 접근 불가능하도록 만들어라
5. 접근 범위는
  1) public
  2) private
  3) protected
  4) default ( package-private) 라고도 한다
6. 변경가능한 public 필드를 가진 클래스는 다중 스레드에 안전하지 않다.
7. 배열은 public static final 배열필드를 두거나, 배열 필드를 반환하는 접근자를 정의하면 안된다. 배열의 내용을 언제든지 변경이 가능하기때문..

Tuesday, October 17, 2017

how to delete remote git branch

1.  have to check list of origin branch
  git remote show origin

2. delete branch
  git push origin --delete feature/TEST-860


3. delete local branch
 - git branch -l
 - git branch -D feature/xxx
    -d, --delete          delete fully merged branch
    -D                    delete branch (even if not merged)

Sunday, July 9, 2017

RabbitMq Clustering


rabbitMQ 클러스터링 구성 & HA 정책 설정

쿠키 복사
클러스터링을 구성할 서버는 같은 쿠기값을 가져야 한다.
구성할 서버 중 하나의 cookie를 다른 서버의 같은 경로로 모두 복사한다.
/home1/{user}/.erlang.cookie
  
정확한 위치는
$HOME/.erlang.cookie

vhost 추가
virtual-host '/store' 로 MQ를 운영한다.
rabbitmqctl add_vhost /store
rabbitmqctl set_permissions -p /store mom ".*" ".*" ".*"
HA 정책 추가
rabbitmqctl set_policy -p /store ha-all "" '{"ha-mode":"all"}'


Clustering 초기 구성


https://www.rabbitmq.com/clustering.html 여기에 나온 방식을 이용해서 클러스터링을 구축한다.

async001, async002 두 서버에 rabbitMQ가 설치되어 있다는 가정하에 구성 절차를 설명한다.
rabbitMQ는 RabbitMq 설치가이드 에서 명시한 guide에 맞게 설치를 했다고 가정한다.
1. Node 초기화 및 서비스 중지
1번서버를 start한다
async001$ rabbitmq-server -detached

2번 서버를 start한다
2-1 앱을 멈춘후
2-2 1번 서버로 클러스터 조인을 시도한다
2-3 클러스터 상태 확인
async002$ rabbitmq-server -detached
async002$ rabbitmqctl stop_app
async002$ rabbitmqctl join_cluster rabbit@async001
async002$ rabbitmqctl cluster_status
[user@async002~]$ rabbitmqctl cluster_status
Cluster status of node 'rabbit@async002'
[{nodes,[{disc,['rabbit@async001','rabbit@async002']}]},
{alarms,[{'rabbit@async001',[]}]}]

2. Clustering 구성 확인
rabbitmqctl cluster_status

Monday, July 3, 2017

RabbitMQ 설치 가이드


RabbitMQ 의존 라이브러리 설치

1. erlang 설치 (version . Erlang R16B03-1)
sudo wget -O /etc/yum.repos.d/epel-erlang.repo http://repos.fedorapeople.org/repos/peter/erlang/epel-erlang.repo
sudo yum install erlang
  

RabbitMQ 설치

1. rabbitmq-server 설치
sudo wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.10/rabbitmq-server-3.6.10-1.el7.noarch.rpm
sudo rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc
sudo yum install rabbitmq-server-3.6.10-1.el7.noarch.rpm
별도로 설정하지 않을 경우 /usr/sbin 아래의 rabbimq 관련 스크립트들이 실행되는데, rabbiqmq 계정으로 시작되어 관리에 어려움이 있다.
{user} 계정으로 운영하기 쉽도록 이 스크립트들은 비활성화 시킨다.
sudo mv /usr/sbin/rabbitmqctl /usr/sbin/rabbitmqctl_dont_use
sudo mv /usr/sbin/rabbitmq-plugins /usr/sbin/rabbitmq-plugins_dont_use
sudo mv /usr/sbin/rabbitmq-server /usr/sbin/rabbitmq-server_dont_use
rabbitmq bin 디렉토리를 path에 추가하여 편하게 운영할 수 있도록 한다.
.bashrc
PATH=$PATH:/usr/lib/rabbitmq/bin
2. rabbitmq 설정
설정파일은 abc의 conf 폴더를 사용하도록 한다.
sudo rmdir /etc/rabbitmq/
sudo ln -s /home1/{user}/conf/rabbitmq /etc/rabbitmq
NODENAME 을 지정해주지 않으면 이상하게도 클러스터 환경이 구성이 안된다.
/home1/abc/conf/rabbitmq/rabbitmq-env.conf
NODENAME=rabbit@{hostname}
/etc/hosts에 '.'이 들어가지 않는 hostname 설정을 추가하고 이 값을 사용한다.

Linux centos 7 버전으로 설치를 했는데 port 가 tcp6 로 잡혀서 직접 포트를 설정해줘야함
포트 번호는 22133으로 지정 → 기본 포트가 5672
/home1/abc/conf/rabbitmq/rabbitmq.config
[
  {rabbit, [
    {tcp_listeners, [{"0.0.0.0"22133}]}
  ]}
].
3. management plugin 활성화
rabbitmq-plugins enable rabbitmq_management
로그 파일 경로 변경
4. rabbitmq 서버 시작
  • 서버 시작 ( -detached 는 백그라운드로 실행하겠다는 의미 이다 ) 일반적으로 rabbitmq-server on 으로 실행
    rabbitmq-server -detached
  • 상태 확인
    rabbitmqctl status
  • 계정 추가
    guest/guest 계정이 기본적으로 생성은 되어있지만, 기본적으로 localhost에서만 이 계정으로 접근 가능하다.
    보안을 고려하여 이 정책을 변경없이 그대로 사용하고, 새로운 계정을 추가하여 사용한다.
    rabbitmqctl add_user mom mom
    rabbitmqctl set_user_tags mom administrator
    rabbitmqctl set_permissions -p / mom ".*" ".*" ".*"
  • virtual-host 추가
    /store라는 virtual host를 추가한후 mom 계정에 /store 권한을 추가한다.
    sudo rabbitmqctl add_vhost /store
    sudo rabbitmqctl set_permissions -p /store mom ".*" ".*" ".*"


  • 관리 페이지 확인
    http://x.x.x.x:15672