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

Wednesday, June 14, 2017

RabbitMq BasicQos

BasicQos 이 만약에 1이 설정되어있다면
해당 Consumer 가  ack를 날리지 않는 상황이면 Queue는 해당 consumer에게 더이상 메세지를 전송하지 않는다.

Wednesday, May 31, 2017

The clean coder를 읽고 난 소감

책을 읽고 난 다음 머가 남았는가 회상해본다.

1. 하루에 8시간은 회사업무를 하고 2시간은 나를 위해서 사용한다.
2. 매일 쉬운문제를 풀어서 손과 머리 두뇌,, 연습해라,
3. 일정잡을때 약속을 할때 말을 조심해야한다.

머 이정도 된것 같다.

TDD 도 중요하게 생각하는것 같고.

약간 자기 개발서 같은 느낌이다. ㅡ.ㅡ;

그닥 나에게 도움된 책은 아닌듯.

are Simmilar

https://codefights.com/arcade/intro/level-4/xYXfzQmnhBvEKJwXP

my solution is  below

what i focus on is when difference is 0 or 2


public static boolean areSimilar(int[] a, int[] b) {

  int difference= 0; 
  int [] p = new int[2];
  int pos = 0;
  
  for (int i = 0; i < a.length; i++) {  
   
   if(a[i] != b[i]){
    if(difference==2){
     return false;
    }    
    p[pos++] = i;
    difference++;
   }
  }
  
  return difference ==0 || (difference ==2 && (a[p[0]] == b[p[1]] && a[p[1]] == b[p[0]]));
 }

Wednesday, May 17, 2017

codefights smooth sailing ( CommonCharacterCount)

https://codefights.com/arcade/intro/level-3/JKKuHJknZNj4YGL32

public static int commonCharacterCount(String s1, String s2) {
  int sum = 0;
  
  char[] as= s1.toCharArray();
  char[] bs= s2.toCharArray();
  
  int[] ias = new int[126];
  int[] ibs = new int[126];
  
  for (int i = 0; i < as.length; i++) {
   ias[(int)as[i]]++;
  }
  
  for (int i = 0; i < bs.length; i++) {
   ibs[(int)bs[i]]++;
  }
  
  for (int i = 0; i < ibs.length; i++) {
   sum += Math.min(ias[i], ibs[i]);
  }
  return sum;
 }


Given two strings, find the number of common characters between them.
Example
For s1 = "aabcc" and s2 = "adcaa", the output should be
commonCharacterCount(s1, s2) = 3.
Strings have 3 common characters - 2 "a"s and 1 "c".
Input/Output
  • [time limit] 3000ms (java)
  • [input] string s1
    A string consisting of lowercase latin letters a-z.
    Guaranteed constraints:
    1 ≤ s1.length ≤ 15.
  • [input] string s2
    A string consisting of lowercase latin letters a-z.
    Guaranteed constraints:
    1 ≤ s2.length ≤ 15.
  • [output] integer

Monday, May 15, 2017

codefights matrixElementsSum easy

https://codefights.com/arcade/intro/level-2/xskq4ZxLyqQMCLshr/description

my answer is 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int matrixElementsSum(int[][] matrix) {
int sum=0;
 
    for(int i=0; i<matrix[0].length; i++){
        sub:
        for(int y=0; y<matrix.length;y++)    {
            if(matrix[y][i] == 0){
                    break sub;
            }else{
                sum+= matrix[y][i];
            }
        }
    }
    
    return sum;
}
 
cs

After becoming famous, CodeBots decided to move to a new building and live together. The building is represented by a rectangular matrix of rooms, each cell containing an integer - the price of the room. Some rooms are free (their cost is 0), but that's probably because they are haunted, so all the bots are afraid of them. That is why any room that is free or is located anywhere below a free room in the same column is not considered suitable for the bots.
Help the bots calculate the total price of all the rooms that are suitable for them.
Example
For
matrix = [[0, 1, 1, 2], 
          [0, 5, 0, 0], 
          [2, 0, 3, 3]]
the output should be
matrixElementsSum(matrix) = 9.
Here's the rooms matrix with unsuitable rooms marked with 'x':
[[x, 1, 1, 2], 
 [x, 5, x, x], 
 [x, x, x, x]]
Thus, the answer is 1 + 5 + 1 + 2 = 9.