Vi에 Tab, Space 를 표시하는 방법 (indentLine Plugin)

vi를 편집하다 보면, python과 같은 indentation을 brace 없이 하는 경우 어느곳이 space인지, tab인지 구분이 어렵다. 그래서 vi Plugin 을 사용하면 화면에 표시가 가능하다. 아래 github에서 설치해서 사용하면 좋음!

https://github.com/Yggdroot/indentLine

Kubernetes

  • open-source
  • features
    • automatic binpacking
    • horizontal scaling
    • automated rollouts and rollbacks
    • self-healing
    • service discovery and load balancing
    • secret and configuration management
    • storage orchestration
    • batch execution

Kubernetes

features

  • 멀티플 호스트 전체에서 컨테이너를 오케스트레이션
  • 하드웨어를 더 효과적으로 활용하여 엔터프라이즈 애플리케이션을 실행하는 데 필요한 리소스를 극대화
  • 애플리케이션 배포 및 업데이트를 제어하고 자동화
  • 스토리지를 장착 및 추가해 스테이트풀(stateful) 애플리케이션을 실행
  • 컨테이너화된 애플리케이션과 해당 리소스를 즉시 확장
  • 선언적으로(Declaratively) 서비스를 관리함으로써, 배포한 애플리케이션이 항상 배포 목적대로 실행
  • 자동 배치, 자동 재시작, 자동 복제, 자동 확장을 사용해 애플리케이션 상태 확인과 셀프 복구를 수행

kubernetes 필요한 이유

  • 실제 프로덕션 애플리케이션은 멀티플 컨테이너에 걸쳐 있으며 이러한 컨테이너는 멀티플 서버 호스트에 배포
  • Kubernetes는 이러한 워크로드를 위해 규모에 맞는 컨테이너를 배포하는 데 필요한 오케스트레이션 및 관리 기능을 제공
  • Kubernetes 오케스트레이션을 사용하면 멀티플 컨테이너를 포괄하고, 클러스터 전체에서 컨테이너를 스케줄링하고, 컨테이너를 확장하고, 시간 경과에 따라 컨테이너의 상태를 관리할 수 있는 애플리케이션 서비스를 구축할 수 있습니다.
  • Kubernetes는 종합적인 컨테이너 인프라를 제공할 수 있도록 네트워킹, 스토리지, 보안, 텔레메트리, 기타 서비스와 통합

kubernetes architecture kubernetes architecture

Tmux에서 동시에 여러 Pane에 동일한 값을 입력하는 방법

동일한 서버에 동일한 작업을 반복해서 진행해야 할 때가 있다.
이럴때 사용하면 좋은게 tmux에 있는 synchronize의 기능이다.
각각의 pane을 키고 sync를 on/off 하면서 작업을 하면 반복잡업을 피할 수 있다.

:setw synchronize-panes :setw synchronize-panes off

  • 참고
    • https://sanctum.geek.nz/arabesque/sync-tmux-panes/

Kubernetes

  • open-source
  • features
    • automatic binpacking
    • horizontal scaling
    • automated rollouts and rollbacks
    • self-healing
    • service discovery and load balancing
    • secret and configuration management
    • storage orchestration
    • batch execution

Kubernetes

features

  • 멀티플 호스트 전체에서 컨테이너를 오케스트레이션
  • 하드웨어를 더 효과적으로 활용하여 엔터프라이즈 애플리케이션을 실행하는 데 필요한 리소스를 극대화
  • 애플리케이션 배포 및 업데이트를 제어하고 자동화
  • 스토리지를 장착 및 추가해 스테이트풀(stateful) 애플리케이션을 실행
  • 컨테이너화된 애플리케이션과 해당 리소스를 즉시 확장
  • 선언적으로(Declaratively) 서비스를 관리함으로써, 배포한 애플리케이션이 항상 배포 목적대로 실행
  • 자동 배치, 자동 재시작, 자동 복제, 자동 확장을 사용해 애플리케이션 상태 확인과 셀프 복구를 수행

kubernetes 필요한 이유

  • 실제 프로덕션 애플리케이션은 멀티플 컨테이너에 걸쳐 있으며 이러한 컨테이너는 멀티플 서버 호스트에 배포
  • Kubernetes는 이러한 워크로드를 위해 규모에 맞는 컨테이너를 배포하는 데 필요한 오케스트레이션 및 관리 기능을 제공
  • Kubernetes 오케스트레이션을 사용하면 멀티플 컨테이너를 포괄하고, 클러스터 전체에서 컨테이너를 스케줄링하고, 컨테이너를 확장하고, 시간 경과에 따라 컨테이너의 상태를 관리할 수 있는 애플리케이션 서비스를 구축할 수 있습니다.
  • Kubernetes는 종합적인 컨테이너 인프라를 제공할 수 있도록 네트워킹, 스토리지, 보안, 텔레메트리, 기타 서비스와 통합

kubernetes architecture

kubernetes architecture

Tmux에서 동시에 여러 Pane에 동일한 값을 입력하는 방법

동일한 서버에 동일한 작업을 반복해서 진행해야 할 때가 있다.
이럴때 사용하면 좋은게 tmux에 있는 synchronize의 기능이다.
각각의 pane을 키고 sync를 on/off 하면서 작업을 하면 반복잡업을 피할 수 있다.

:setw synchronize-panes :setw synchronize-panes off

  • 참고
    • https://sanctum.geek.nz/arabesque/sync-tmux-panes/

Vi(Vim)에서 Syntax Highlighting 변경하기 다양한 color scheme을 적용해보자.

Vim의 color scheme에 대해서 알아보고, 설치 및 적용 방법에 대해서 설명한다.

  • color scheme 확인 및 설치
    • 이미 설치되어 있는 기본 color scheme 확인
    • Plugin을 통해 설치가 가능한 color scheme 설치
  • 적용하기
    • 다양하게 제공되는 color scheme에 대해 알아보고, color scheme을 적용하는 방법에 대해서 설명한다.
    • 다양한 color schme이 적용된 화면을 확인 가능하다.
    • http://vimcolors.com/

다양하게 제공되는 Color Scheme

  • VIM에서 기본으로 제공하는 Color Scheme
    • $ ls /usr/share/vim/vim[]/colors

README.txt darkblue.vim delek.vim elflord.vim koehler.vim murphy.vim peachpuff.vim shine.vim torte.vim blue.vim default.vim desert.vim evening.vim morning.vim pablo.vim ron.vim slate.vim zellner.vim

Plugin을 이용해서 Color scheme을 설치하기

  • Vim Editor를 사용하기 위해서는 Plugin을 설치 할 수 있는 Tool을 한개 정하는게 좋다.
  • http://www.vim.org/ 을 보통 보면 vim-plug, Vundle, Pathogen, 또는 vim의 설치 경로에 바로 다운로드 등으로 제공을 한다.
  • 여기에서는 Vundle을 이용해서 설치하는 방법을 설명하려고 한다.
    • https://github.com/VundleVim/Vundle.vim
  • vimrc를 아래와 같이 수정
    • :PluginInstall을 통해서 jellybeans.vim의 plugin을 설치하면 적용 완료

```shell set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin()

Plugin 'VundleVim/Vundle.vim' Plugin 'nanotech/jellybeans.vim'

call vundle#end()

colo jellybeans "또는 colorscheme jellybeans ```

Color Scheme 적용하기

  • :col darkblue
  • :colorscheme darkblue

들어가며

tmux 설치부터 환경 설정, 단축키, 설치하면서 에러 모든 내용이 담겨져 있다. 기능을 한번에 전부 다 사용할 수 없겠지만, 꾸준히 보면서 하나씩 추가하면서 사용하면 정말 나중에 업무 효율이 올라갈 것이다.

일단 설치를 해야하는 이유는

1.내가 작업하는 터미널이 종료되어도 그대로 세션(session)이 유지되기 때문 2.서버에서 작업할때, timeout이 되면? 좌절, 그대로 세션 유지 3.여러개의 window, pane을 사용하기 때문에 그냥 일단 써보셔요

https://tmux.github.io/ tmux is a terminal multiplexer What is a terminal multiplexer?

It lets you switch easily between several programs in one terminal, detach them (they keep running in the background) and reattach them to a different terminal. And do a lot more. See the manual.

tmux vs screen

  • 명확한 클라이언트/서버 모델 (각 윈도우는 유연한 클라이언트로 다른 세션에 자유롭게 attach/detach)
  • 문서가 잘 되어있고 일관된 명령어(설정파일인 .tmux.conf에서도 동일한 명령어를 사용).
  • 스크립트를 구현
  • 다중 붙혀넣기 버퍼
  • Vi와 Emacs 키바인딩을 지원
  • 상태바에 대한 지원

tmux 구성

  • session : tmux 실행 단위. 여러개의 window로 구성.
  • window : 터미널 화면. 세션 내에서 탭처럼 사용할 수 있음.
  • pane : 하나의 window 내에서 화면 분할.
  • status bar : 화면 아래 표시되는 상태 막대.

최신 버전의 tmux를 설치

If you use Debian/Ubuntu, you can just run apt-get install tmux, and voila.

Since the title was about centos 7, then do the following step to install tmux.

(1). tmux has a library dependency on libevent which, of course, isn’t installed by default. $ wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz $ tar xzvf libevent-2.0.21-stable.tar.gz $ cd libevent-2.0.21-stable $ ./configure && make $ sudo make install (2). To get and build the latest from version control: https://github.com/tmux/tmux/tree/2.3

$ git clone https://github.com/tmux/tmux.git
$ cd tmux
$ sh autogen.sh
$ ./configure && make

cd deploy git clone https://github.com/tmux/tmux.git cd tmux sh autogen.sh ./configure && make echo export TMUX_HOME=/home/jslee/tmux >> ~/.bashrc echo export PATH=$PATH:${TMUX_HOME} >> ~/.bashrc

Tips:

(1). During the second step, if you encounter with "libevent not found” error" You should install the libevent development package, by running the following command. $ yum install libevent-devel

(2). If you run with "curses not found" error To compile the code you need the devel packages, run the following comamnd $ yum install ncurses-devel $ yum install glibc-static

https://gist.github.com/Root-shady/d48d5282651634f464af

protocol version mismatch (client 8, server 7)

  • 현재 실행중인 tmux를 종료하자
    • $ pkill tmux
    • https://unix.stackexchange.com/questions/122238/protocol-version-mismatch-client-8-server-6-when-trying-to-upgrade

tmux 명령어

  • tmux show-buffers
  • tmux save-buffer foo.txt https://awhan.wordpress.com/2010/06/20/copy-paste-in-tmux/

[참고] * https://github.com/tmux-plugins/tpm * https://github.com/coeuvre/dotfiles/blob/master/tmux.conf * https://gist.github.com/Root-shady/d48d5282651634f464af

tmux.conf

  • https://github.com/tmux-plugins/tmux-yank (각 os에 맞는 clipboard를 설치)

export TMUX_HOME=/home/jslee/tmux >> ~/.bashrc export PATH=$PATH:${TMUX_HOME} ~/.bashrc source ~/.bashrc * tmux plugin 설치 * git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

  • tmux.conf는 아래와 같다

단축키

  • prefix Ctrl + b
  • gnu screen에서는 ctrl + a (변경이 가능)

  • Session

    • 생성
    • $ tmux new -s
    • 이름 수정
    • ctrl + b, $
    • 종료
    • $ (tmux에서) exit
    • 중단(detached)
    • ctrl + b, d
    • 세션 목록 보기 (list-session)
    • $ tmux ls
    • 세션 다시 시작
    • $ tmux attach -t

session은 클라이언트/서버 모델을 가지고 있기 때문에 세션은 터미널이 종료되어도 남아있음. 만약 해당 터미널을 예기치 못하게 종료가 되면, 그냥 다른 터미널을 키고 tums ls를 한 뒤에 session을 attach detach

  • Window
    • 생성
    • ctrl + b, c
    • 이름 수정
    • ctrl + b, ,
    • 종료
    • ctrl + b, &
    • ctrl + d
    • 이동
    • ctrl + b, 0-9 : window number
    • n : next window
    • p : prev windo w
    • l : last window
    • w : window selector
    • f : find by name
  • Pane

    • 나누기
    • ctrl + b, % : 횡 분할
    • " : 종 분할
    • 이동
    • ctrl + b, q 그리고 화면에 나오는 숫자키
    • ctrl + b, o : 순서대로 이동
    • ctrl + b, arrow : 방향키
    • 삭제
    • ctrl + b, x
    • ctrl + d
    • 사이즈 조절
      • (ctrl + b, :)
      • resize-pane -L 10 (-R, -D, -U)
  • [참고]

    • http://blog.hawkhost.com/2010/06/28/tmux-the-terminal-multiplexer/
    • http://blog.hawkhost.com/2010/07/02/tmux-%E2%80%93-the-terminal-multiplexer-part-2/
    • https://tmux.github.io/
    • http://man.openbsd.org/OpenBSD-current/man1/tmux.1

들어가며

tmux에서 다른 창으로 복사해서 붙여넣기를 하고 싶을 경우가 많이 생긴다. 하는 방법은 아래와 같다. 

최초 ~/.tmux.conf에 아래와 같이 붙여넣자

setw -g mode-keys vi                                                            

bind -t vi-copy 'v' begin-selection

bind -t vi-copy 'y' copy-selection

bind C-c run "tmux save-buffer - | xclip -i -sel clipboard"

bind C-v run "tmux set-buffer \"$(xclip -o -sel clipboard)\"; tmux paste-buffer"


복사하는 방법

Ctrl + B + [ 을 통해 블록을 지정하자, 지정이 완료가 된다면 space를 누르면 된다. 


붙여넣기 하는 방버비

Ctrl + B + ] 을 통해 버퍼에 있는 값을 붙여넣으면 끝.

*중요... 마지막 아래를 꼭 입력해야합니다.

$ tmux source-file ~/.tmux.conf

Git


Git은 Linus Torvalds라는 Linux operation system을 구현한 분이 처음에 코드 관리를 위해 만든 툴입니다. 누구나 사용할 수 있는  오픈소스 소프트웨어 입니다. 


Git 설치하기

programming 버전관리와 코드의 변화과정을 히스토리화 해서 볼수 있습니다.



https://desktop.github.com/

https://git-scm.com/downloads

을 통해 다운로드가 가능합니다. 

Git 설정하기

$ git --version 
$ git config --global user.name ""
$ git config --global user.email ""


Repositories

Repository는 프로젝트의 폴더라고 생각하시면 됩니다. 이 폴더에는 내가 변경한 파일 정보, 코드 정보가 저장되어 있습니다. 


저장소 만들기


저장소를 만드는 방법은 나의 프로젝트 ROOT_PATH에서  git init을 하면 됩니다. 아래 예제는 banana 라는 프로젝트를 ROOT_PATH로 하는 git repository를 생성한 내용입니다. git status를 하시면 내가 생성한 repository의 변화를 확인하실 수 있습니다. 지금은 아직 초기의 프로젝트이기 때문에 아무런 내용이 없습니다. commit에 대한 내용은 뒤에서 설명하겠습니다.


$ mkdir banana
$ cd banana
$ git  init
# Initialized empty Git repository in /home/ubuntu/workspace/banana/.git/
$ git status



새로운 파일을 만들기

Repository에 새로운 파일을 추가해보겠습니다. 평소에 좋아하시는 Editor를 통해 파일을 생성해 보세요. 

$ echo "banana" > readme.txt

add, commit - Repository에 파일 추가 하기


파일을 commit을 하기 전에 위에서 언급한 git status를 해보도록 하겠습니다.

$ git status


내가 추가한 readme.txt가 빨간색 글씨로 보이는걸 확인할 수 있습니다. commit한 내용이 없기 때문에 아무런 내용이 표시되지 않습니다. 여기서 폴더 내의 모든 파일을 추가하기 위해서는 add 뒤에 파라미터로 파일 이름 대신 .을 넘기면 됩니다.


$ git add readme.txt


내가 추가를 하게 되면 new file : readme.txt를 확인하실 수 있습니다. 

$ git commit -m "<message>"




readme.txt.파일을 변경을 해보고 저장해보겠습니다. 

이렇게 저장을 한 뒤에 


<pre><code class="bash">

$ git status

</code></pre>

modified: readme.txt라는 내용을 확인할 수 있습니다. 현재 readme.txt가 수정이 됬다 라는 말입니다. 어떤 내용이 수정되었는지 확인을 하고 싶으면


<pre><code class="bash">

$ git diff

</code></pre>

를 하시면 변화된 내용을 확인하실 수 있습니다. -BBanana가 제거되고, +change banana가 추가 되었다는 내용을 확인할 수 있습니다. 


만약 이 상태에서

<pre><code class="bash">

$ git commit -m "<your commit message>"

</code></pre>

commit을 다시 하게 되면, 변경상태가 add하고, commit을 하라고 합니다. 

<pre><code class="bash">

$ git add . 

$ git commit -m "<your commit message>"

$ git status

</code></pre>


하시면 변경된 내용이 commit 되었음을 확인 할 수 있습니다.



이클립스에서 html파일을 이클립스에 설정된 브라우저로 열면 시스템 기본 웹 브라우저로 선택이 되어있다. 
하지만 기본 브라우저는 지원이 기능이 많기 때문에 기본 브라우저를 chrome으로 변경해보자. 

일단 html파일을 브라우저로 열기 위해서는 파일 우클리 Open With > Web Browser를 선택하면 된다.




이클립스 메뉴에서 Window > Preferences를 들어가면 General에 Web Browser를 설정할 수 있는 화면을 볼 수 있다.

찾기 어렵다면 type filter text에 web이라고 검색을 하면 된다. 기본 설정으로는 Use internal web browser로 되어 있을 것이다. 

하지만 아래와 같이 변경하기 위해서 New..를 클릭해서 Chrome을 추가한다.



Location은 Chrome의 exe파일 위치로 하면된다. 기본이라면 

C:\Program Files\Google\Chrome\Application\chrome.exe 

변경했다면 chrome 아이콘을 누르고 오른쪽 마우스를 눌러서 확인해본다. (대상(T):를 복사해서 붙여넣자)


아래와 같이 입력을 한 뒤에 확인을 누르면 설정 끝.




  1. 후루룹 2016.03.18 17:16

    매번 크롬 켜서 옮겼는데 감사합니다.

+ Recent posts