2018-10-19

I went to english academy for the first time this week. because, I worked overtime.


umm,,,,, there were only two people in the class this time. so, total 3 peple.

One of the topic is "Do you have any friends you have not seen for a long?".

So I think, i have not seen my friend for one years.

because, my friend went to dormitory academy. some times He said, "I want go to medical college". but he hasen't gotten a good score in CSAT. zzzzzzz

so, he will take a exam on next month.


이거 쓰는 것도 힘드네

그리고 다른 이야기도 많이 했다. 클럽 가봤냐랑 인상깊은 여행에 관해서랑 vacation 이 며칠 동안이었냐 등 여러 얘기도 하고 뭐 문제도 풀었는데 Have + P P 이런거랑 언제 Are, do 쓰는지 그런거 배웠는데 3년만에 공부하려고 하니까 디질거같다



문법 틀렸으면 알려주세요

블로그 이미지

hojak99

2017.08.01 취직~~~

최대공약수를 구하는 유클리드 호제법 증명하기.

유클리드 호제법으로 최대 공약수를 쉽게 구할 수 있다.

예를 들어, (16, 12) 란 값이 있을 때 이 두 수의 최대공약수를 구하려면

(A, B)
(B. (A%B))
..
..
..
(R, 0)

이 된다. 그러면 여기서의 R 이 최대공약수가 된다. 이해를 못 하시겠다구요? 그러면 숫자를 사용해봅시담

(16, 12)
(12, 4)
(4, 0)

즉 (16, 12) 의 최대공약수는 4가 됩니다. 정말 쉽죠?

그래서 직접 코드 유클리드 호제법을 사용하면 O(log N) 이 나올 것이다.


이제 유클리드 호제법을 한 번 증명해보자. 증명은 고등학교 이후로 처음하는 것 같다.

자연수 A, B 가 있다.

A % B = q
A / B = r

라고 하자.

G(A, B) 가 있을 때 G 함수는 최대 공약수를 구해주는 함수라고 할 때 G(A, B) = G(B, q) 이다.

위에 있는 식을 정리하면 (A = r x B + q) 일 것이다.

최대 공약수를 구하기 위해 
A = mp
B = np

라고 해보자.

위의 (A = r x B + q) 에 대입을 해주면
(mp = r x np + q) 일 것이다.

!!! 여기서 m 과 n 은 서로소이다. p 를 공약수라고 생각하자 !!!

지금 G(A, B) = G(B, q) 를 증명하는 것이기 때문에, 다시 식을 q 를 기준으로 정리를 하면
q = (mp - r x np) 일 것이다.

p 로 묶어주면 다음과 같다.

q = (m - r x n)p 


이제 해당 식을 보면 알 수 있 듯이 

q 에는 b 와 r의 공약수이다. 그렇다면 이 q 가 최대 공약수임을 보일려면, n 과 (m- rn) 가 서로소여야 된다.

서로소임을 보이기 위해 귀류법을 사용하도록 하겠다.


만약 n 과 (m-rn) 이 서로소가 아닐 때! 이 둘은 서로 어떤 공약수를 가지고 있을 것이다.
즉, 
n = vh,
(m-rn) = sh 
라고 했을 때 (h는 1이 아님)

vh = sh - r x vh  이다.
m = sh + r x vh, 이고 묶으면 m = (s + rv)h 이다

그런데 위에서 (!!! 여기서 m 과 n 은 서로소이다 !!!) 라고 써놨다. 근데? m 이 h 를 가지고 있다. 그리고 n 도 h 를 가지고 있다.
이 2두가지 사실은 위에 서로소임을 말한 것에 반대된다.

즉, m 과 n-q 는 서로소이기 때문에 G(B, r) = G(A, B) 가 된다.

증명은 끝났다. 하지만 이걸 증명하기 위해 % 도 증명을 해야하고 정수론 이런 것도 나오는데 패스한다.

블로그 이미지

hojak99

2017.08.01 취직~~~




진짜 이거 다 듣고 블로그 정리 및 깃허브 올려야됨


4만 4천원 날라감. 진짜 안 들으면 빡빡이

블로그 이미지

hojak99

2017.08.01 취직~~~

주키퍼를 설치해봅시다.

 

큰 목차는 다음과 같습니다.

  1. 주키퍼 설치
  2. 주키퍼 설정
  3. 주키퍼 start
  4. 셋팅 됐는지 확인

 

stable 버전은 3.4.13 인 것 같습니다. 해당 릴리즈 노트를 확인해보면 수정된 사항이 굉장히 많습니다. https://zookeeper.apache.org/doc/r3.4.13/releasenotes.html

 

3.4.13 버전의 주키퍼 다운로드 링크는 다음과 같습니다. 

http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz

 

그리고 이제 서버에 접속하도록 하겠습니다.

저는 "AAA", "BBB", "CCC" 에서 작업을 하였습니다. dev 에선 서버 1개만 만들었고, stg 와 prd 에서는 각각 3개 씩 만들었습니다. 주키퍼 서버는 보통 홀수의 개수로 만들어야 한다고 합니다. 이 이유는 한 블로그에서 이렇게 말했습니다.

 데이터가 불일치가 일어나면 데이터 보정이 필요한데 이때 과반수의 룰을 적용하기 때문에 서버를 홀수로 구성하는 것이 데이터 정합성 측면에서 유리하다.

출처: http://over153cm.tistory.com/entry/what-is-ZooKeeper [빅데이터는 넘커]


네. 그렇다고 하네요.

-------------------------------------------



이제 주키퍼를 설치해봅시다.

  1. "wget http://apache.mirror.cdnetworks.com/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
  2. tar -xvf zookeeper - 3.4.13 

이제 zookeeper-3.4.13 이란 폴더가 생겼습니다.

 

zookeeper-3.4.13 폴더에 들어가면 주로 봐야할 폴더는 "conf", "bin" 폴더와 같습니다.

conf 폴더에서 먼저 zookeeper 셋팅을 해봅시다.

conf/zookeeper-sample.cfg 란 파일이 있을텐데 복사를 해줍시다. (cp zookeeper-sample.cfg zoo.cfg) 

 

이제 zoo.cfg 를 보면 dataDir 경로를 설정하는 부분이 나오는데, 저는 그냥 default 값으로 했습니다. default 경로는 /tmp/zookeeper 일 것 입니다. 

그리고 하단에 연결해야 할 다른 서버들 목록을 작성합니다.

 

현재 작업 중인 서버 url 은 "sv-stg-zk2a.idincu.net" 입니다.

[zoo.cfg]

...

...

...

#server.[seq]=[ip or host]:[다른 서버 연결 port]:[리더 선출 port]

server.1=0.0.0.0:2888:3888

server.2=BBB:2888:3888

server.3=CCC:2888:3888

 

여기서 server.1 을 보면 0.0.0.0:2888:3888 로 해줬는데 기존 주키퍼 서버에서는 해당 부분이 "AAA:2888:3888" 이었습니다. 구글링해도 저렇게 나왔었는데, 저렇게 공개 ip 를 적어주면 나중에 서버를 켰을 때 오류가 발생합니다. 스택오버플로우에서는 0.0.0.0 으로 해줌으러 써 해결을 할 수 있다고 나옵니다. 공개 ip 로 설정을 해주면 port 를 인식하지 못한답니다. (참고 url : https://stackoverflow.com/questions/30940981/zookeeper-error-cannot-open-channel-to-x-at-election-address). 각 서버마다 자신의 공개 ip 대신 로컬 ip 로 변경해줍시다.

 

그리고 server.1, server.2, ... 같이 있는데 이는 구별할 수 있는 시퀀스 넘버 입니다.

 

이제 dataDir 경로로 설정 돼 있는 폴더로 가봅시다.

  1. /tmp/zookeeper (없으면 만들으세요)

 

그리고 "myid" 파일을 만들어서 해당 시퀀스 넘버를 적으세요. 각 서버마다 만들어줘야 합니다. AAA 면 1, BBB 는 2, CCC 는 3

 

각 서버마다 위의 나와있는 일을 해야합니다.

 

 

이제 완료됐습니다. 그리고 이제 서버를 켜야 합니다. 각 서버마다 zookeeper-3.4.13/bin 에 들어가서 "./zkServer.sh start" 를 해줌으로 써 서버를 켜줍시다. stop 으로 끌 수 있어요

이제 한 번 테스트를 해봐야겠죠? 저는 어떤 서버가 leader 서버인지 알고 싶네요

"./zkServer.sh status" 로 하면 leader 인지 follower 인지 다 나옵니다.

 

만약 오류가 발생하면 어떡해야 하나요? 그건 bin 폴더에 zookeeper.out 파일이 있을 거에요. 확인해봅시다.

블로그 이미지

hojak99

2017.08.01 취직~~~