posted by 귀염둥이채원 2019. 2. 26. 11:46

로그함수는 지수함수의 역함수이며, 대수함수라고도 하고, log라는 기호를 사용한다.

로그는 실수 영역으로 확장된 지수에서 등장하는 새로운 무리수 개념이다.


# 로그의 뜻

로그는 지수를 표현하기 위해서 만들어졌다. 

예를 들어, 2를 몇제곱해야 8이 될까? 3제곱해야 8이 된다. (23=8) 그리고 2는 4제곱해야 16이 된다. (24=16)

그렇다면 2를 10으로 만드는 지수는 몇일까? 3보다는 크고 4보다는 작은 수이다.

그 수를 표현할 수 없어서 로그로 log210이라고 표현하기로 했다.

즉,  log210은 2에 붙여서 10을 만드는 지수가 되는 것이다.

x = logab 를 정의하자면, a를 b로 만드는 지수는 x라는 것이다.

%5Ccombi%20%5E%7B%20x%20%7D%7B%20a%20%7D%3Db%5Cquad%20%5Cquad%20%5Cquad%20%5CLeftrightarrow%20%5Cquad%20%5Cquad%20%5Cquad%20x%3Dlog_%7B%20a%20%7D%5Ccombi%20%7B%20b%20%7D%20


# 로그의 조건

로그 바로 옆에 오는 아랫첨자의 작은 수는 '밑'이라고 표현하고, 옆에오는 큰 숫자는 '진수'라고 표현한다. 

여기의 수는 모두 조건이 있다. 로그는 지수의 표현이므로 지수의 조건이 따라오는 것이다.

 

logab

i) 밑조건 : 밑은 1이 아닌 양수(a≠1, a>0)

ii) 진수조건 : 양수(b>0)


※ 밑에 1이 오게 되면 성립하지 않게 된다. 예를 들어, log15는 1에 붙여서 5를 만드는 수인데, 그런 수는 존재하지 않는다. 

따라서, 밑과 진수조건은 수학적으로 의미가 있는 최소한의 조건이다.


# 상용로그 의미

일반적으로 숫자는 10진법을 사용한다. 로그의 밑은 진법과 관련이 있기 때문에, 밑이 10인 로그를 제일 많이 사용한다.

일반적인 숫자에서 10진법이라는 것을 생략하는 것처럼 상용로그의 밑이 10일 경우 밑을 생략해도 된다.

log_%7B%2010%20%7D%5Ccombi%20%7B%20x%20%7D%5Cquad%20%3D%5Cquad%20logx%20


# 상용로그 값

i) 진수가 10의 거듭제곱

진수가 10의 거듭제곱 일 때, 상용로그의 값은 정수가 되며 로그의 성질을 이용하여 간단하게 구할 수 있다.

하지만 좀 더 신속하게 계산하기 위해서는 0의 개수만큼 정수가 나온다는 것만 기억하다.

(단, 1보다 크면 양수, 1보다 작으면 음수)


      ···

log1000 = 3​

log100 = 2

log10 = 1

log1 = 0

log0.1 = -1

log0.01 = -2

log0.001 = -3​

       ···

​⇒ 진수의 자리수가 로그값의 정수부분에 영향을 준다.

⇒ 로그값의 정수부분은 진수의 자리수를 결정한다.​

ii) 진수가 10의 거듭제곱이 아닐 때

진수가 10의 거듭제곱이 아닐 때, 상용로그의 값은 무리수가 나오게 된다.

그러나 진수의 자리수만 보고 상용로그의 값은 예측할 수 있어야 한다. (자리수에 1을 뺀 값이 나온다.)


ex)

log1000 = 3​

log999 = 2.xx

log500 = 2.xx

log101 = 2.xx​

log100 = 2

log20 = 1.xx​

log10 = 1

log6 = 0.xx​

log1 = 0

log0.55 = -0.xx ​

log0.1 = -1

log0.0684 = -1.xx​

log0.01 = -2

log0.003 = -2.xx​

log0.001 = -3​

 

역시나

​⇒ 진수의 자리수가 로그값의 정수부분에 영향을 준다.

(진수가 1보다 크면 상용로그값은 양수, 0과 1사이면 음수를 가진다.)



###################################################################



라는 지수함수가 있을 때, 그 역의 관계를 로그함수를 사용하여 로 나타낸다

 

: a를 몇(y)제곱해야 x가 되는가?


다음과 같은 지수 식을 보게 되면, 

같은 의미를 가지는 로그식으로 변환을 해 줄 수도 있을 것입니다.


a%5E%7B%20x%20%7D%3DN%5Cquad%20%5Cquad%20%5Cquad%20%5CLeftrightarrow%20%5Cquad%20%5Cquad%20%5Cquad%20x%3Dlog_%7B%20a%20%7DN%5Cquad%20%5Cquad%20%5Cquad%20(%EB%8B%A8%2C%5Cquad%20a%3E0%2C%5Cquad%20a%5Cneq%201%2C%5Cquad%20N%3E0)%20

-> x는 a를 밑으로 하는 N의 로그

-> a를 거듭제곱하여 N이 되게 하는 지수 x => 로그 a의 N


가장 흔한 밑의 값으로는 2, 10과 이 있다.

밑이 2인 로그 -> 이진로그(binary log) -> lb x로 표현

밑이 10인 로그 -> 상용로그(common log) -> lg x로 표현

밑이 e인 로그 -> 자연로그(natural log) -> ln x로 표현


밑이 없는 는 상용로그일 수도 있고 자연로그일 수도 있으니까 문맥에 따라 구별해야 한다.



# 참고 사이트

https://terms.naver.com/entry.nhn?docId=3536995&cid=58577&categoryId=58577

https://blog.naver.com/jihyoseok/221155205577

https://junhyuk7272.blog.me/220566139299

https://junhyuk7272.blog.me/220567977846

posted by 귀염둥이채원 2019. 2. 8. 18:19

마지막 커밋을 수정하는 것이 가장 자주 발생한다.

* 커밋 메시지를 수정하는 경우

* 파일 목록을 수정하는 경우


$ git commit --amend


이 명령은 자동으로 텍스트 편집기를 실행시켜서 마지막 커밋 메시지를 열어준다. 

여기에 메시지를 수정하고 편집기를 닫으면 편집기는 수정한 메시지로 마지막 커밋을 수정한다.


커밋하고 나서 새로 만들었거나 다시 수정한 파일을 마지막 커밋에 포함할 수 있다. 

기본적으로 방법은 같다. 

파일을 수정하고 git add 명령으로 Staging Area에 넣거나 git rm 명령으로 파일 삭제한다.

그리고 git commit --amend 명령으로 커밋하면 된다. 


이 명령어는 기존의 커밋을 수정하는 것이 아니고 새로운 커밋을 만들어냅니다.

만약 이미 해당 커밋이 push가 되어 있는 상황이라면 다른 사람들의 히스토리를 꼬이게 만들 수 있으므로 되도록 지양해야 합니다.

'Tool > git' 카테고리의 다른 글

파일 및 디렉토리 삭제: git rm --cached  (0) 2019.03.11
git submodule이란?  (0) 2019.02.08
git commit --amend 오류  (0) 2019.01.24
posted by 귀염둥이채원 2019. 2. 8. 17:26

프로젝트를 수행하다 보면 다른 프로젝트를 사용해야 하는 경우가 종종 있다.

보통 사용할 프로젝트들은 독립적으로 개발된 라이브러리들이다.


Git의 서브모듈은 이런 문제를 다루는 도구다. 

Git 저장소 안에 다른 Git 저장소를 디렉토리로 분리해 넣는 것이 서브모듈이다.

다른 독립된 Git 저장소를 Clone 해서 내 Git 저장소 안에 포함할 수 있으며 각 저장소의 커밋은 독립적으로 관리한다.


# submodule 추가하기

$ git submodule add https://github.com/chaconinc/DbConnector

Cloning into 'DbConnector'...

remote: Counting objects: 11, done.

remote: Compressing objects: 100% (10/10), done.

remote: Total 11 (delta 0), reused 11 (delta 0)

Unpacking objects: 100% (11/11), done.

Checking connectivity... done.


# submodule을 포함한 프로젝트 Clone

$ git clone --recurse-submodules https://github.com/chaconinc/MainProject

Cloning into 'MainProject'...

remote: Counting objects: 14, done.

remote: Compressing objects: 100% (13/13), done.

remote: Total 14 (delta 1), reused 13 (delta 0)

Unpacking objects: 100% (14/14), done.

Checking connectivity... done.

Submodule 'DbConnector' (https://github.com/chaconinc/DbConnector) registered for path 'DbConnector'

Cloning into 'DbConnector'...

remote: Counting objects: 11, done.

remote: Compressing objects: 100% (10/10), done.

remote: Total 11 (delta 0), reused 11 (delta 0)

Unpacking objects: 100% (11/11), done.

Checking connectivity... done.

Submodule path 'DbConnector': checked out 'c3f01dc8862123d317dd46284b05b6892c7b29bc'


# submodule 삭제하기

우선 서브디렉토리를 그냥 지우고 바로 서브모듈을 추가한다면 오류가 나타난다.

$ rm -Rf CryptoLibrary/

$ git submodule add https://github.com/chaconinc/CryptoLibrary

'CryptoLibrary' already exists in the index

위와 같은 오류를 해결하려면 우선 CryptoLibrary 디렉토리를 관리대상에서 삭제하고 나서 서브모듈을 추가한다.


$ git rm -r CryptoLibrary

$ git submodule add https://github.com/chaconinc/CryptoLibrary

Cloning into 'CryptoLibrary'...

remote: Counting objects: 11, done.

remote: Compressing objects: 100% (10/10), done.

remote: Total 11 (delta 0), reused 11 (delta 0)

Unpacking objects: 100% (11/11), done.

Checking connectivity... done.


# 참고 사이트

https://git-scm.com/book/ko/v2/Git-%EB%8F%84%EA%B5%AC-%EC%84%9C%EB%B8%8C%EB%AA%A8%EB%93%88

https://blog.powerumc.kr/449

https://confluence.curvc.com/pages/viewpage.action?pageId=35586154

https://ohgyun.com/711

http://blog.naver.com/PostView.nhn?blogId=tommybee&logNo=220840604103&parentCategoryNo=&categoryNo=90&viewDate=&isShowPopularPosts=true&from=search


'Tool > git' 카테고리의 다른 글

파일 및 디렉토리 삭제: git rm --cached  (0) 2019.03.11
Git commit --amend로 마지막 커밋 수정하기  (0) 2019.02.08
git commit --amend 오류  (0) 2019.01.24
posted by 귀염둥이채원 2019. 2. 8. 16:19

SSH는 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 

다른 시스템으로 파일을 복사할 수 있도록 해 주는 프로토콜입니다.


ssh 터널링이란 A와 B사이에 가상의 네트워크를 생성하고 A가 B의 내부망을 이용할 수 있게 하는 것이다.


SSH 터널링은 Local 과 Remote 형식이 존재한다.

Local은 클라이언트측에서 지정한 포트를 감시하다가 서버로 전달하고, 서버의 지정된 호스트에 데이터를 전달하는 것이고

Remote는 서버측에서 지정한 포트를 감시하다가 클라이언트로 전달하고, 클라이언트의 지정한 호스트로 데이터를 전달하는 것이다. 


# Local Tunneling: 윈도우 cmd 창에서 실행

접속은 SSH 포트인 22번만 열려있고 웹서버 관련 포트는 리눅스 서버의 로컬 방화벽으로 막혀 있는 상황이라고 가정하자.

ex1) ssh -N -L {Local Port}:{Remote IP}:{Remote Port} [SSH 서버]

ex2) ssh -N -L {Local Port}:{Remote IP}:{Remote Port} {ssh user}@{Remote IP} -p 22 


# Local Tunneling: 웹브라우져 실행해서 웹서버 접속

http://localhost:{Local Port}


# ssh 옵션 설명

-p [number]  : number 포트번호로 접속한다.

-N : 원격 쉘을 실행시키지 않고 접속만 유지한다.

-L [로컬포트번호:호스트:호스트포트번호] : 로컬 포트번호로 listen 소켓을 열고 들어오는 패킷을 원격지에서 호스트:호스트포트번호로 전송한다.


참고로 mobaxterm을 이용하면 Local, Remote 터널링을 그림으로 보여줘서 쉽게 이해할수 있다.


# 참고 사이트

https://blog.lael.be/post/845

http://linux.systemv.pe.kr/ssh-%ED%8F%AC%ED%8A%B8-%ED%8F%AC%EC%9B%8C%EB%94%A9/

https://mrrootable.tistory.com/31

https://itsaessak.tistory.com/171

https://dololak.tistory.com/29

https://umbum.tistory.com/18

posted by 귀염둥이채원 2019. 2. 8. 14:40

# 윈도우 hosts 파일이란?

- 호스트 이름에 대응하고 IP 주소를 저장하는 파일

- DNS에서 주소 정보를 제공받지 않고도 서버의 위치를 찾게 해주는 파일


# 호스트 파일 장점

- 인터넷 속도 향상

- 리소스 사용을 줄임

- 보안 문제 예방적 대처


# 호스트 파일 저장 위치

c:\Windows\System32\drivers\etc


# 호스트 파일 수정

메모장 실행시 '관리자 권한'으로 실행해야 수정 및 저장이 가능하다.


# 참고 사이트

https://ko.wikipedia.org/wiki/Hosts

posted by 귀염둥이채원 2019. 2. 1. 15:54

ansible role은 ansible task의 공유와 재사용을 가능하게 해준다.

작업 수행에 필요한 모든 지원 가능한 파일, 변수, 템플릿, 핸들러가 Playbook 작업이 포함됩니다.

role은 재사용 및 공유 할 수있는 완전한 자동화 단위입니다.


role은 워크플로우를 자동화하는데 필요한 모든 파일, 변수, 핸들러, Jinja 템플릿 및 작업을 포함하는 디렉토리 구조입니다.

README.md

defaults/

    main.yml

files/

handlers/

    main.yml

meta/

    main.yml

tasks/

    main.yml

templates/

tests/

    inventory

    test.yml

vars/

    main.yml 



ansible-galaxy 명령어를 이용해서 test-role-1이라는 role template을 생성하는 방법입니다.

[ansible@1ff25a8ed818 test_role]$ ansible-galaxy init test-role-1

- test-role-1 was created successfully

[ansible@1ff25a8ed818 test_role]$ tree

.

└── test-role-1

    ├── defaults

    │   └── main.yml

    ├── files

    ├── handlers

    │   └── main.yml

    ├── meta

    │   └── main.yml

    ├── README.md

    ├── tasks

    │   └── main.yml

    ├── templates

    ├── tests

    │   ├── inventory

    │   └── test.yml

    └── vars

        └── main.yml 


아래 명령으로 ansible-playbook 테스트가 가능하다.

[ansible@1ff25a8ed818 test_role]$ ansible-playbook -i test-role-1/tests/inventory test-role-1/tests/test.yml


# 참고 사이트

https://galaxy.ansible.com/docs/finding/content_types.html#ansible-roles

https://galaxy.ansible.com/docs/contributing/creating_role.html

https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html?highlight=roles&extIdCarryOver=true&sc_cid=701f2000001OH7YAAW

'Tool > ansible' 카테고리의 다른 글

ansible에서 문자열 split 방법  (0) 2019.03.18
ansible handler란?  (0) 2019.02.01
serial keyword를 이용한 rolling update  (0) 2019.01.29
ansible-vault를 이용한 암호화  (0) 2019.01.29
ansible source build  (0) 2019.01.29
posted by 귀염둥이채원 2019. 2. 1. 15:53

# Handlers: Running Operations On Change

- task의 맨 뒤에 notify action 설정(handler의 이름으로 호출)

- 여러 번 조건을 만족해도 단 한번만 실행됨

- handler는 특별한 task의 list이며 이름으로 참조됨

- 대개 service restart 등에 쓰임


handler는 변경이 있을 때 작업을 수행하는 것이다.

'notify' action은 play의 각 task들이 끝날때 시작된다.

여러 작업으로 알림을 받더라도 한번만 트리거된다.


예를 들어, apche의 여러 설정 파일들이 변경된 경우 apache를 재시작해야합니다.

apache는 불필요한 재시작을 피해기 위한 한번만 재시작합니다.


다음은 /etc/foo.conf 파일이 변경된 경우,

memchched, apache를 재기동하는 예제입니다.

- name: template configuration file

  template:

    src: template.j2

    dest: /etc/foo.conf

  notify:

     - restart memcached

     - restart apache 



notify task 섹션에 나열된 항목을 핸들러라고합니다.

# example handlers section 

handlers:

    - name: restart memcached

      service:

        name: memcached

        state: restarted

    - name: restart apache

      service:

        name: apache

        state: restarted 


# 참고 사이트

https://docs.ansible.com/ansible/latest/user_guide/playbooks_intro.html

https://moonstrike.github.io/ansible/2016/09/22/Ansible-Playbooks.html

'Tool > ansible' 카테고리의 다른 글

ansible에서 문자열 split 방법  (0) 2019.03.18
ansible role template 생성하기  (0) 2019.02.01
serial keyword를 이용한 rolling update  (0) 2019.01.29
ansible-vault를 이용한 암호화  (0) 2019.01.29
ansible source build  (0) 2019.01.29
posted by 귀염둥이채원 2019. 1. 31. 17:17


vim에서 여러행에 탭을 추가 및 제거가 필요한 경우가 있다.


# 여러 행에 탭 추가하기

- [N] >>

- v로 블럭을 잡고 '>'


# 여러 행에 탭 제거하기

- [N] <<

- v로 블럭을 잡고 '<'


# 참고

[N]: 현재 행 이하로 적용할 행의 범위를 숫자로 설정

>>: 행의 앞에 탭을 추가

<<: 행의 앞에 탭을 제거


# 탭사이즈 조정

- 기본 탭사이즈는 8칸이다

- 탭 사이즈 관련된 vim 변수는 ts, tw, sts가 존재함


- ts(tap stop) : 문서에 있는 '\t'문자를 몇 칸으로 보여줄지 결정하는 변수

- sw(shift width) : >> 또는 << 키로 탭 사이즈를 조절할때나 인덴트에서 자동 줄맞추기를 할때 사용되는 화면 표시 크기

- sts(soft tab stop) : Tap 키를 눌렀을 때 표시되는 간격을 지정해 주는 변수


# 명령라인 모드에서 탭사이즈 조정

:set ts=8

:set sw=4

:set sts=4


# 자동 들여쓰기

: 라인을 바꿀 때, 커서의 시작 위치를 설정 할 수 있다.


○ cindent

: C, C++, JAVA 스타일의 자동 들여쓰기 활성화. 

  블럭의 처음 시작 및 라인을 바꿀 때 자동 들여쓰기를 해준다.


○ smartindent

: cindent 와 비슷 하지만 #if, #ifdef, #define 등과 #으로 시작하는 전처리기 명령어에 대해서는 자동 들여쓰기를 무시하고

  다음 라인의 첫번째 열로 이동한다.


# VI 설정 파일에 적용

vim 에디터 실행시마다 적용되게 하려면 ~/.vimrc 파일에 적용

set ts=8

set sw=4

set sts=4

set smartindent

set cindent


# 참고 사이트

https://mintnlatte.tistory.com/189?category=431795

'Tool > vim' 카테고리의 다른 글

vi, vim에서 붙여넣기 할때 indent 깨지는 현상 해결  (0) 2019.01.29
vi, vim ^M 제거하는 방법  (0) 2019.01.29
posted by 귀염둥이채원 2019. 1. 29. 18:19

Ansible은 기본적으로 play를 병렬로 실행한다.

Rolling Update를 수행하려면 serial 키워드를 사용하면 된다.


serial 키워드는 한 번에 얼마나 많은 서버에 명령을 수행할지 알려줍니다.

serial 키워드를 지정하지 않으면 구성 파일에 지정된 기본 fork 한도까지 병렬 처리합니다.


serial keyword를 이용한 rolling update

 - name: test play

  hosts: webservers

  serial: 1

  gather_facts: False

  tasks:

  - name: task one

    comand: hostname

  - name: task two

    command: hostname


# 참고 사이트

https://docs.ansible.com/ansible/latest/user_guide/playbooks_delegation.html

https://stackoverflow.com/questions/27315469/ansible-how-to-sequentially-execute-playbook-for-each-host



'Tool > ansible' 카테고리의 다른 글

ansible role template 생성하기  (0) 2019.02.01
ansible handler란?  (0) 2019.02.01
ansible-vault를 이용한 암호화  (0) 2019.01.29
ansible source build  (0) 2019.01.29
fail module 사용법 정리  (0) 2019.01.29
posted by 귀염둥이채원 2019. 1. 29. 18:18

Ansible Vault는 패스워드, 키와 같은 보안에 민감한 파일들을 암복호화해주는 기능이다.
Ansbile에서 사용하는 모든 구조화된 데이터 파일을 암호화 할수 있다.
참고로 ansible을 설치하면 ansible-vault도 설치가 된다.

# ansible-vault 

 Usage: ansible-vault [create|decrypt|edit|encrypt|encrypt_string|rekey|view] [options] [vaultfile.yml]

encryption/decryption utility for Ansible data files

Options:
--ask-vault-pass ask for vault password
-h, --help show this help message and exit
--new-vault-id=NEW_VAULT_ID
the new vault identity to use for rekey
--new-vault-password-file=NEW_VAULT_PASSWORD_FILES
new vault password file for rekey
--vault-id=VAULT_IDS the vault identity to use
--vault-password-file=VAULT_PASSWORD_FILES
vault password file
-v, --verbose verbose mode (-vvv for more, -vvvv to enable
connection debugging)
--version show program's version number and exit

See 'ansible-vault <command> --help' for more information on a specific




# 암호화된 파일을 생성하기
$ ansible-vault create foo.yml

# 암호화된 파일 수정하기
$ ansible-vault edit foo.yml

# 암호화된 파일의 패스워드 변경하기
$ ansible-vault rekey foo.yml

# 암호화되지 않은 파일을 암호화
$ ansible-vault encrypt foo.yml

# 암호화된 파일의 복호화
$ ansible-vault decrypt foo.yml

# 암호화된 파일의 내용 보기
$ ansible-vault view foo.yml


# ansible-vault를 사용해보기
1. hosts 파일을 암호화
[test@1ff25a8ed818 dse]$ ls
common_vars files group_vars hosts play.yml README.md roles


[test@1ff25a8ed818 dse]$ ansible-vault encrypt hosts

New Vault password: test
Confirm New Vault password: test
Encryption successful


2. 암호화된 hosts 파일 내용 확인
[test@1ff25a8ed818 dse]$ ansible-vault encrypt hosts
New Vault password: test
Confirm New Vault password: test
Encryption successful
[test@1ff25a8ed818 dse]$ ansible-vault view hosts


3. playbook 실행하기
ansible-playbook 실행시 --ask-vault-pass 옵션을 넣어주면 된다.
[test@1ff25a8ed818 dse]$ ansible-playbook --ask-vault-pass -i hosts play.yml -t install
Vault password:

파일에 vault password를 저장해서 사용이 가능하다.
[test@1ff25a8ed818 dse]$ cat vault_pass.txt
test
[test@1ff25a8ed818 dse]$ ansible-playbook -i hosts play.yml -t install --vault-password-file=vault_pass.txt


# 참고 사이트
https://docs.ansible.com/ansible/2.5/user_guide/vault.html

'Tool > ansible' 카테고리의 다른 글

ansible role template 생성하기  (0) 2019.02.01
ansible handler란?  (0) 2019.02.01
serial keyword를 이용한 rolling update  (0) 2019.01.29
ansible source build  (0) 2019.01.29
fail module 사용법 정리  (0) 2019.01.29