반응형
반응형

로그 파일 업데이트 되는 내용을 보려면 tail을 사용하면 된다.

tail -f log.txt

이렇게 하면 log.txt파일에 새로 추가된 내용이 화면에 출력된다.

ssh로 원격에 있는 서버의 로그 파일도 볼 수 있다.

ssh user@host "tail -f /locaion/to/log/file"

서버가 두대여서 터미널 창 두개 열어놓고 보고 있었는데 현진한테 물어보니 multitail을 사용하면 된다고 한다. 찾아보니 관련 글도 많다.

일단 맥에는 multitail이 없으니 brew install multitail로 설치한다.

그러고 위의 링크에 나와있는대로 해보면 화면이 분할되어서 로그파일이 나온다.

multitail -l 'ssh user@host1 "tail -f /var/log/apache2/error.log"' -l 'ssh user@host2 "tail -f /var/log/apache2/error.log"'

상하좌우 화면 분할도 자유롭고 보고있는 파일명도 아래에 표시되어서 훨씬 알아보기 쉽다.

반응형

'연구개발 > Ubuntu' 카테고리의 다른 글

jenkins (젠킨스) 설치  (0) 2017.07.06
우분투 계정 관리  (0) 2017.06.13
한글  (0) 2016.05.22
[Ubuntu] 시간 동기화 - ntpdate  (0) 2014.12.12
ubuntu mysql 삭제  (0) 2014.10.27
반응형

Jupyter를 사용하면 뭐가 좋아지나?

  • 웹브라우저에서 모든 작업이 이루어져 편리해진다.
  • 코딩과 문서화 작업을 한꺼번에 할 수 있다.
  • 매일 일기 쓰듯이 코딩 연습을 할 수 있게 자연스럽게 습관이 든다.
  • 재미있어진다.

어떻게 사용하나?

  • 온라인에서 서비스를 제공해 주는 곳에 가서 이용해도 된다.
  • 하지만 나의 데스크탑에 로컬로 설치해서 마음대로 환경을 설정해 가면서 쓰는것이 더 좋다.
  • 작업한 노트북들은 Github에 push하면서 백업 효과를 노리자.

Jupyter Notebook 설치 및 환경셋팅

  • 시스템 자체의 부하가 크지 않기 때문에 한 번 같이 올려본다.
  • 자신의 서버/컴퓨터에서 Jupyter 서비스를 온라인으로 제공하게 되면, 자신이 사용하는 PC 마다 일일이 따로따로 설치해 줘야 하는 불편함에서 벗어날 수 있다.
  • Python, Julia, Octave, Bash 커널 등을 넣어서 함께 제공하기로 한다.
  • 본 환경구축 레시피는 다음 환경에서 테스트했다.
    • 우분투 16.04 계열 리눅스 머신

Anaconda3 설치

  • Anaconda 패키지를 설치하는게 가장 손쉽다.
  • Anaconda 패키지에는, python과 과학기술용 각종 라이브러리들, 그리고 Jupyter 핵심 부분이 기본적으로 포함되어 있으며, 일반적인 python의 패키지 관리자인 pip 말고 전용 패키지 관리자인 conda도 들어있다.
  • 다운로드 사이트 : https://www.continuum.io/downloads#linux
  • 위 사이트에서 다운로드 할 버전의 주소를 복사한 다음, 아래와 같이 wget으로 NAS에 다운로드 받아도 된다.
  • 다운로드 받은 설치파일을 실행한다.
bash Anaconda3-4.2.0-Linux-x86_64.sh
  • 설치할 때 마지막에 bash 설정에 경로를 추가할지를 묻는데, 당연히 추가하도록 yes 해 준다.
  • 이제 Anaconda 패키지는 모두 ~/anaconda3 경로에 설치되어 있을 것이다. sudo 권한으로 설치한 것이 아니므로, 자신이 마음대로 삭제할 수도 있다는 점을 유의한다. 또한 앞으로 새로 추가할 패키지들 역시 sudo 권한이 불필요할 것이다.

Anaconda3 업데이트 및 셋팅

  • Anaconda의 Python 패키지들을 전부 최신버전으로 업데이트하려면 다음 명령을 쓰면 된다.
conda update conda
conda update anaconda

Jupyter를 위한 Python 환경 생성

  • 고립된 Python 환경을 생성하여면 다음과 같은 식으로 하면 된다. 본 예에서는 JUPYTER라는 이름의 Python 환경을 만들고, 그 환경을 Activate 시키는 것이다.
conda create --name JUPYTER ipython
source activate JUPYTER

Jupyter 설치

  • 기본적인 패키지는 이미 Anaconda에 들어가 있지만, 확실히 하기 위해 Jupyter 설치 명령을 준다.
conda install jupyter

Jupyter Notebook에 설치 가능한 커널

Julia 커널 설치

  • Julia 언어를 시스템에 설치하고, 이것을 Jupyter에서도 사용할 수 있도록 커널을 설치해 보자.
  • 저장소를 등록하고, 설치.
sudo add-apt-repository ppa:staticfloat/juliareleases
sudo add-apt-repository ppa:staticfloat/julia-deps
sudo apt-get update
sudo apt-get install julia
  • 기본적인 Julia 패키지 설치
julia

실행한 후, Julia 안에서 다음 명령을 넣어서 Julia 언어에서 사용할 확률이 가장 높은 모듈들을 추가 설치한다.

Pkg.init()
Pkg.add("Jewel")
Pkg.add("Images")
Pkg.add("PyPlot")
Pkg.add("IJulia")
Pkg.update()
quit()
  • 패키지 설치 도중에 빌드 에러가 발생할 경우, 다음과 같이 의존성 있는 것들을 추가 설치해 주면 해결될 확률이 높다. (어떤 모듈의 경우에는 설치하면서 동시에 Build 작업이 진행되는 경우가 있다.)
sudo apt-get install build-essential cmake

GNU Octave 커널 설치

  • 이번에는 GNU Octave를 시스템에 설치하고, 이것을 Jupyter에서도 사용할 수 있도록 커널을 설치해 보자.
  • 저장소를 등록하고, 설치.
sudo add-apt-repository ppa:octave/stable
sudo apt-get update
sudo apt-get install octave
  • Octave 잘 실행되는지 확인
octave-cli
  • Octave GUI 실행 확인
octave
  • Octave GUI 실행 실패시 조치 (QT 설정파일 소유권을 root에서 현재 사용자로 변경) : 현행 배포한의 버그.
sudo chown -hR 계정:계정 ~/.config/octave
  • 커널 설치 (sudo 불필요)
pip install octave_kernel
python -m octave_kernel.install

Bash 커널 설치

  • 이번에는 Bash를 시스템에 설치하고, 이것을 Jupyter에서도 사용할 수 있도록 커널을 설치해 보자.
  • 커널 설치
pip install bash_kernel
python -m bash_kernel.install

C 커널 설치

  • 이번에는 C 언어를 Jupyter에서도 사용할 수 있도록 커널을 설치해 보자. C 컴파일러는 이미 시스템에 gcc로 설치되어 있으므로 컴파일러는 별도로 설치할 필요가 없다.
  • 참고 : https://github.com/brendan-rius/jupyter-c-kernel
  • C 커널 설치
pip install jupyter-c-kernel
  • 커널스펙 설정
cd ~
git clone https://github.com/brendan-rius/jupyter-c-kernel.git
mkdir ~/.local/share/jupyter/kernels/c_spec
cp ./jupyter-c-kernel/c_spec/kernel.json ~/.local/share/jupyter/kernels/c_spec/kernel.json

설치된 커널들 이상없는지 확인하기

  • 아래 명령은 치면, 위에서 설치했던 커널들의 목록을 볼 수 있다.
jupyter kernelspec list

Jupyter Notebook 작업 디렉토리 생성

  • 아무데서나 실행할 수는 없으므로, 작업할 디렉토리를 따로 만들어주는게 보안상 좋겠다. 이왕이면 Github와 연동시키기 좋도록 한다.
mkdir ~/github/My-Jupyter-Notebooks
  • Github 리모트 저장소와 연결하는 절차의 설명은 생략한다.

Jupyter Notebook을 외부망에서 접속 가능하도록 설정하기

jupyter notebook --generate-config
  • 그러면 /home/dong/.jupyter/jupyter_notebook_config.py 파일이 새로 생겨난 것을 확인.
  • 한편, 로그인을 위한 패스워드 해쉬코드를 만든다. 이와 관련된 기본적인 파이썬 함수가 있으므로, 파이썬 상태에서 이 함수를 이용해서 해쉬코드를 만든다. 우선 터미널에 python 쳐서 파이썬 REPL로 들어간 다음,
from notebook.auth import passwd
passwd()

위와 같이 명령을 때려주면 비밀번호를 치라고 나오는데 확인차 2번 쳐 주면 해쉬코드로 된 비밀번호 코드가 나온다. 해쉬코드를 긁어다 복사해 두거나 메모해 둔다. 그리고 python 콘솔을 빠져나오려면

exit()
  • 설정 프로파일을 편집기로 열어서 내용 확인. (대략 500줄을 좀 넘어가는 코드이고, 대부분 주석)
nano /home/계정/.jupyter/jupyter_notebook_config.py
  • 편집기에서 다음 내용으로 해당 부분을 수정해 준다. 이중에서 포트 번호는 원하는걸로 바꾸면 되지만, 여기서는 8888로 하자. 각 행의 맨 앞에 주석기호 #의 유무를 잘 비교해서 확인하자.
c.NotebookApp.ip = '*'
c.NotebookApp.port = 8888
c.NotebookApp.notebook_dir = u'/home/계정/github/My-Jupyter-Notebooks'
c.NotebookApp.open_browser = False
`
* 그리고, 비밀번호 해쉬코드도 다음과 같은 형식으로 넣어준다.
`
c.NotebookApp.password = u'sha1:67c9e6어쩌구저쩌구71089e11aed'
  • 완료되었으면 해당 편집기를 저장하고 종료.
  • 서버 환경에 따라 방화벽으로 막혀 있을 수 있으므로 해당 포트를 뚫어준다.
sudo ufw allow 8888

Jupyter Notebook 실행 테스트

  • 다음 명령을 주면 실행된다.
jupyter notebook
  • 자동으로 웹브라우저가 실행되지 않도록 하려면 이렇게 한다.
jupyter notebook --no-browser
  • 특정한 디렉토리를 루트로 삼아 실행되도록 하려면 이렇게 한다.
jupyter notebook --notebook-dir='디렉토리경로'
  • 이제 외부 컴퓨터의 웹브라우저로 다음 주소를 쳐서 들어가지는지 확인.

비밀번호 로그인, 설치된 커널의 활성화 여부 등을 확인한다.

  • 이상없이 잘 되면, 서버 터미널에서 Ctrl+cy를 쳐서 종료한다.

부팅할 때 자동으로 Jupyter Notebook 실행되도록 설정

  • 개인 서버에서 돌리려면 이런식으로 자동 스타트 설정을 해 주면 편리할 것이다.
  • 쉘 스크립트를 편집해서 만든다.
nano ~/Start_Jupyter.sh

한 다음 다음 내용을 써 넣고 저장 후 종료.

#!/bin/bash
/home/계정/anaconda3/bin/jupyter notebook &
  • 만든 쉘 스크립트를 실행 가능하도록 속성을 준다.
chmod +x ~/Start_Jupyter.sh
  • 다음과 같이 rc.local 파일을 열어서 편집한다.
sudo nano /etc/rc.local
  • 다음 내용을 추가한 후 저장하고 편집기 종료.
sudo -u 계정 /home/계정/Start_Jupyter.sh
  • 서버 재부팅
sudo reboot now
  • 만일 제대로 작동을 안한다면 다음 명령을 줘 본다. (참고)
sudo systemctl enable rc-local.service

Jupyter Notebook Extensions 설치

  • Anaconda를 이용해 설치된 Jupyter Notebook에는 Anaconda 자체적인 Extension이 이미 설치되어 있다. 별다른 조치 없이 슬라이드샷으로 프리젠테이션 해 주는 기능 등이 있어 편리하다. (참고)
  • 다만 여기서는 표준적인 Jupyter Notebook Extensions를 추가로 설치 시도한다.
  • 참고 : https://github.com/ipython-contrib/jupyter_contrib_nbextensions
conda install -c conda-forge jupyter_contrib_nbextensions
  • 단, 이 익스텐션은 64비트 버전만 제공되고 32비트 버전은 제공되지 않는다. 자신의 서버/컴퓨터가 32비트라면 사용할 수 없다.

Jupyter Notebook Themes 설치

  • 여러가지 방식으로 개발된 테마들이 있지만, 다음의 것이 가장 심플하고 설치 자체도 쉬운 것 같다.
  • jupyterthemes : https://github.com/dunovank/jupyter-themes
  • 설치는 다음 한 줄이면 끝난다.
pip install jupyterthemes
  • 설치 후 적용 가능한 테마를 보기 위해 jt -l을 쳐 주면 다음과 같이 4가지 테마가 나온다.
onedork
grade3
oceans16
chesterish
  • 이 중에서 grade3가 바탕이 흰 색의 테마이고, 나머지는 어두운 색이다. 시험삼아 다음 명령을 하나씩 줘 보자.
jt -t grade3 -T -N
  • 원상복귀 하려면 jt -r을 주면 된다고 하는데, 해 봐도 원상복귀가 안된다! ㅠㅠ
  • 강제로 원상복귀 시키려면, 원래의 오리지널 css 파일을 만들어서 집어넣어주면 될 것이다.
  • ~/.jupyter/custom/custom.css 파일을 만들고 편집기로 다음 내용을 집어넣으면 원래 오리지널 테마로 복원된다.
.rendered_html pre, .rendered_html code, pre, .CodeMirror, .prompt {
  font-family: 나눔고딕코딩, Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace;;
}
.rendered_html pre,
.rendered_html code {
    font-family: Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace;
	background-color: #f5f5f5;
}
.rendered_html pre {
	padding: 8.5px;
	border: 1px solid #ccc;
	border-radius: 2px;
}
.rendered_html p > code,
.rendered_html ul li code {
    border: solid 1px #e1e4e5;
    color: #E74C3C;
    padding: 0 5px;
    overflow-x: auto;
}
blockquote {
	background-color: #fcf2f2;
	border-color: #dFb5b4;
	border-left: 5px solid #dfb5b4;
	padding: 0.5em;
}

Jupyter Lab

  • 이제까지 설치해서 사용하는 환경은 바로 ‘Jupyter Notebook’이다.
  • 그런데 이 UI가 마음에 안 드는지, 한 그룹에서 새롭게 Jupyter Lab을 개발하고 있다.

JupyterLab

  • 현재 알파 릴리즈되어 설치해서 작동 시켜볼 수도 있다.
  • 다만 아직 완전하게 기능구현,최적화,버그 등을 모두 잡은 상태는 아닌 것 같다.
  • 다만 아마 1~2년 정도 지나서는 Notebook에서 Lab 환경으로 이행할 것으로 보인다.
  • JupyterLab 레포지토리
  • 개인적으로 사용해 보니 확실히 Notebook 보다 더 편리하고 기능이 더 많다.
  • conda-forge 패키지 저장소에서도 제공하고 있기 때문에 설치 방법은 간단하다.
conda install -c conda-forge jupyterlab
  • 설치 후, 다음 명령으로 실행한다.
julia lab
  • 그러면 주소는 다음과 같이 나온다.
  • 기존의 Notebook 환경이 그립다면 주소를 이렇게 바꾸면 된다.
  • 아마 당분간은 이렇게 Lab과 Notebook을 공존시키다가, Lab이 충분히 성숙되면 Notebook은 별도로 떨어뜨리기로 계획되어 있다고 한다.

결론

  • 이제 Jupyter에서 Python, C, Octave, Julia, Bash 등을 마음대로 사용할 수 있게 되었으니 가지고 놀면 된다.


반응형

'Program > Python' 카테고리의 다른 글

Dataframe shift  (0) 2022.12.23
graphviz 설치 후 오류 (Anaconda)  (0) 2018.08.10
numpy axis  (0) 2018.07.13
docker 한글설정  (0) 2018.07.07
file "/usr/bin/pip" line 9, in <module>  (0) 2018.07.03
반응형


[[1 2 3]

[4 5 6]]


np.sum(a, axis=0) : [5 7 9]

np.sum(a, axis=1) : [6 15]

반응형

'Program > Python' 카테고리의 다른 글

graphviz 설치 후 오류 (Anaconda)  (0) 2018.08.10
ubuntu Jupyter  (0) 2018.07.13
docker 한글설정  (0) 2018.07.07
file "/usr/bin/pip" line 9, in <module>  (0) 2018.07.03
[OpenCV] face detection  (0) 2018.06.28
반응형
● interactive mode 로 도커 이미지 실행.
아래 명령을 사용하여 우분투 이미지를 실행하여 현재 locale 을 확인한다.
현재 도커 레포지토리를 통해 배포되는 대부분의 우분투 이미지는 locale 설정이 안되어 있을것이다.
(외국 애들은 한글이나 일본어, 중국어 따윈 관심 없을테니...)
docker run -it [IMAGE] /bin/bash
[zany@dione ~]$ docker run -it -u root ubuntu:base /bin/bash
[root@510a1395b315 ~]# locale
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=


[root@510a1395b315 ~]# locale -a
C
C.UTF-8
POSIX

[root@510a1395b315 ~]# ls /usr/share/i18n/locales/
ls: cannot access '/usr/share/i18n/locales/': No such file or directory
locale 명령을 입력해보면, POSIX 로 표기될 것이고
locale -a 명령으로 사용 가능한 locale 목록을 보면 위 결과와 같이 몇개 안나올 것이다.
/usr/share/i18n/locales 디렉토리는 존재하지도 않는다.

echo '한글' 명령으로 tty 에서 한글이 되는지 확인하지도 못한다.
echo '한글' 이라는 명령어 자체도 입력 못할테니...

● 우분투 패키지 매니저로 locales 설치
locale 이 있어야 설정을 하든 말든 할테니...
일단 우분투 패키지 매니저(apt-get)를 통해 locales 패키지를 설치하자 (아래 명령)
apt-get upgrade 는 OS 에 설치된 패키지를 업그레이드 할 것이니 필요치 않으면 빼도 무방하다.
apt-get clean && apt-get update && apt-get upgrade && apt-get install locales
[root@510a1395b315 ~]# apt-get clean && apt-get update && apt-get upgrade && apt-get install locales
Get:1 http://archive.ubuntu.com/ubuntu xenial InRelease [247 kB]
Get:2 http://security.ubuntu.com/ubuntu xenial-security InRelease [102 kB]
Get:3 http://security.ubuntu.com/ubuntu xenial-security/universe Sources [51.1 kB]
Get:4 http://archive.ubuntu.com/ubuntu xenial-updates InRelease [102 kB]

... 어쩌구 저쩌구 생략 ... 

Selecting previously unselected package locales.
(Reading database ... 13279 files and directories currently installed.)
Preparing to unpack .../locales_2.23-0ubuntu9_all.deb ...
Unpacking locales (2.23-0ubuntu9) ...
Setting up locales (2.23-0ubuntu9) ...
debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 76.)
debconf: falling back to frontend: Readline
Generating locales (this might take a while)...
Generation complete.
정상적으로 처리되었으면, /usr/share/i18n/locales/ 디렉토리에 locale 파일들이 생겼을 것이다.
ls 명령으로 /usr/share/i18n/locales/ 디렉토리의 내용을 보자.
ls /usr/share/i18n/locales/
[root@510a1395b315 ~]# ls /usr/share/i18n/locales/
C            bs_BA           en_ZM       ga_IE@euro          li_BE         ps_AF             tk_TM
POSIX        byn_ER          en_ZW       gd_GB               li_NL         pt_BR             tl_PH
aa_DJ        ca_AD           eo          gez_ER              lij_IT        pt_PT             tn_ZA
aa_ER        ca_ES           eo_US       gez_ER@abegede      ln_CD         pt_PT@euro        tr_CY
aa_ER@saaho  ca_ES@euro      es_AR       gez_ET              lo_LA         quz_PE            tr_TR
aa_ET        ca_ES@valencia  es_BO       gez_ET@abegede      lt_LT         raj_IN            translit_circle
af_ZA        ca_FR           es_CL       gl_ES               lv_LV         ro_RO             translit_cjk_compat
ak_GH        ca_IT           es_CO       gl_ES@euro          lzh_TW        ru_RU             translit_cjk_variants
am_ET        ce_RU           es_CR       gu_IN               mag_IN        ru_UA             translit_combining
an_ES        ckb_IQ          es_CU       gv_GB               mai_IN        rw_RW             translit_compat
anp_IN       cmn_TW          es_DO       ha_NG               mg_MG         sa_IN             translit_font
ar_AE        crh_UA          es_EC       hak_TW              mhr_RU        sat_IN            translit_fraction
ar_BH        cs_CZ           es_ES       he_IL               mi_NZ         sc_IT             translit_hangul
ar_DZ        csb_PL          es_ES@euro  hi_IN               mk_MK         sd_IN             translit_narrow
... 생략 ...
apt-get install locales 명령시 자동으로 locale-gen 명령이 수행되지만,
/usr/share/i18n/locales 디렉토리가 아직 보이지 않으면 locale-gen 명령을 별도로 수행해보자.
locales 패키지를 설치하여도 사용 가능한 locale 을 확인해보면 아직 원하는 것이 나오지 않는다.
locale -a
[root@510a1395b315 ~]# locale -a
C
C.UTF-8
POSIX

● locale 생성 / 등록
localedef 명령을 이용하여 필요한 locale 을 컴파일해준다.
-i 옵션은 inputfile 을 의미하며
-f 옵션은 문자셋을 의미한다.
localedef 명령 후, locale -a 명령으로 사용 가능한 locale 을 확인해보면 새로 추가한 2개의 항목이 보일 것이다.
localedef -i ko_KR -f UTF-8 ko_KR.UTF-8
localedef -i en_US -f UTF-8 en_US.UTF-8
locale -a
[root@510a1395b315 ~]# localedef -i ko_KR -f UTF-8 ko_KR.UTF-8
[root@510a1395b315 ~]# localedef -i en_US -f UTF-8 en_US.UTF-8
[root@510a1395b315 ~]# locale -a
C
C.UTF-8
POSIX
en_US.utf8
ko_KR.utf8

● locale 관련 패키지 재설정 (optional)
dpkg-reconfigure 명령으로 locale 설정을 다시 해준다.
아래 명령어를 실행하면 2가지를 묻는다.
1. 어떤 locale 을 사용할 것이냐?
2. 시스템 환경을 위한 기본 locale 을 뭘로 할꺼냐?
dpkg-reconfigure locales
[root@510a1395b315 ~]# dpkg-reconfigure locales
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LANG = "ko_KR.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 76.)
debconf: falling back to frontend: Readline
Configuring locales
-------------------

Locales are a framework to switch between multiple languages and allow users to use their language, country, characters,
collation order, etc.

Please choose which locales to generate. UTF-8 locales should be chosen by default, particularly for new installations.
Other character sets may be useful for backwards compatibility with older systems and software.

  1. All locales                      162. es_CL ISO-8859-1               323. mni_IN UTF-8
  2. aa_DJ ISO-8859-1                 163. es_CL.UTF-8 UTF-8              324. mr_IN UTF-8
  3. aa_DJ.UTF-8 UTF-8                164. es_CO ISO-8859-1               325. ms_MY ISO-8859-1
  4. aa_ER UTF-8                      165. es_CO.UTF-8 UTF-8              326. ms_MY.UTF-8 UTF-8
  5. aa_ER@saaho UTF-8                166. es_CR ISO-8859-1               327. mt_MT ISO-8859-3
  6. aa_ET UTF-8                      167. es_CR.UTF-8 UTF-8              328. mt_MT.UTF-8 UTF-8
  7. af_ZA ISO-8859-1                 168. es_CU UTF-8                    329. my_MM UTF-8
  8. af_ZA.UTF-8 UTF-8                169. es_DO ISO-8859-1               330. nan_TW UTF-8
  9. ak_GH UTF-8                      170. es_DO.UTF-8 UTF-8              331. nan_TW@latin UTF-8
  10. am_ET UTF-8                     171. es_EC ISO-8859-1               332. nb_NO ISO-8859-1
  ... 생략 ...

(Enter the items you want to select, separated by spaces.)

Locales to be generated: 290

  ... 생략 ...

This will select the default language for the entire system. If this system is a multi-user system where not all users are
able to speak the default language, they will experience difficulties.

  1. None  2. C.UTF-8  3. ko_KR.UTF-8
Default locale for the system environment: 3
ko_KR.UTF-8 이 290 번 이어서 290 으로 입력 하였으나,
OS 버전에 따라 다를 수 있으니 목록에서 적절한 번호를 골라 입력한다.

● .bashrc 에 LANG 환경값 추가
LANG 환경값을 .bashrc 에 등록해준다.
export LANG=ko_KR.UTF-8

● 도커 커밋 후... 재실행.. 확인.
현재 도커를 커밋하고 종료 후 재실행하여 locale 이 정상적으로 적용되었는지 확인하자.
도커를 커밋하지 않으면 변경 내용이 이미지에 기록되지 않으니 꼭 커밋하고 재실행해서 확인하자.
docker commit -p [CONTAINER] [REPOSITORY[:TAG]]
[zany@dione ~]$ docker commit -p 510a1395b315 ubuntu:base
sha256:65afd6c09559b1001316c067b075e3a73c5aa02132752a9e184b0dedf2be2097
[root@a0610820dc88 ~]# locale
LANG=ko_KR.UTF-8
LANGUAGE=
LC_CTYPE="ko_KR.UTF-8"
LC_NUMERIC="ko_KR.UTF-8"
LC_TIME="ko_KR.UTF-8"
LC_COLLATE="ko_KR.UTF-8"
LC_MONETARY="ko_KR.UTF-8"
LC_MESSAGES="ko_KR.UTF-8"
LC_PAPER="ko_KR.UTF-8"
LC_NAME="ko_KR.UTF-8"
LC_ADDRESS="ko_KR.UTF-8"
LC_TELEPHONE="ko_KR.UTF-8"
LC_MEASUREMENT="ko_KR.UTF-8"
LC_IDENTIFICATION="ko_KR.UTF-8"
LC_ALL=
[root@a0610820dc88 ~]# echo '한글'
한글
[root@a0610820dc88 ~]#


반응형

'Program > Python' 카테고리의 다른 글

ubuntu Jupyter  (0) 2018.07.13
numpy axis  (0) 2018.07.13
file "/usr/bin/pip" line 9, in <module>  (0) 2018.07.03
[OpenCV] face detection  (0) 2018.06.28
[OpenCV] 영상 얼굴 인식 (face detection)  (0) 2018.06.28
반응형


도커 명령어 익히기 ( + 우분투 설치 )


도커 명령어

옵션설명
-ddetached mode (백그라운드 모드)
-pHost와 컨테이너의 Port를 연결 (fowarding)
-vHost와 컨테이너의 Directory 연결 (마운트)
-e컨테이너 내에서 사용할 환경변수 설정
-it-i와 -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션
--rm프로세스 종료시 컨테이너 자동 제거
--link컨테이너 연결[컨테이너명:별칭]
--name컨테이너 이름 설정



도커 실행중인지 확인 docker version

C:\Users\bactoria>docker version
Client:
 Version:       18.03.0-ce
 API version:   1.37
 Go version:    go1.9.4
 Git commit:    0520e24
 Built: Wed Mar 21 23:06:28 2018
 OS/Arch:       windows/amd64
 Experimental:  false
 Orchestrator:  swarm

Server:
 Engine:
  Version:      18.03.0-ce
  API version:  1.37 (minimum version 1.12)
  Go version:   go1.9.4
  Git commit:   0520e24
  Built:        Wed Mar 21 23:14:32 2018
  OS/Arch:      linux/amd64
  Experimental: false

C:\Users\bactoria>



우분투 이미지 다운로드 docker pull ubuntu:16.04

C:\Users\bactoria>docker pull ubuntu:16.04
16.04: Pulling from library/ubuntu
22dc81ace0ea: Pull complete
1a8b3c87dba3: Pull complete
91390a1c435a: Pull complete
07844b14977e: Pull complete
b78396653dae: Pull complete
Digest: sha256:e348fbbea0e0a0e73ab0370de151e7800684445c509d46195aef73e090a49bd6
Status: Downloaded newer image for ubuntu:16.04

C:\Users\bactoria>



이미지 확인하기 docker images

C:\Users\bactoria>docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              16.04               f975c5035748        2 weeks ago         112MB

C:\Users\bactoria>



우분투 컨테이너 실행하기 docker run -it --name myUbuntu ubuntu:16.04 /bin/bash

C:\Users\bactoria>docker run -it --name myUbuntu ubuntu:16.04 /bin/bash
root@27db33196683:/#



리눅스 접속 확인하기 ls

root@27db33196683:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@27db33196683:/#



우분투 컨테이너 종료하기 exit

root@27db33196683:/# exit
exit

C:\Users\bactoria>



실행중인 컨테이너 확인하기 docker ps

C:\Users\bactoria>docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

C:\Users\bactoria>



모든 컨테이너 확인하기 docker ps -a

C:\Users\bactoria>docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
be76370e89aa        ubuntu:16.04        "/bin/bash"         45 seconds ago      Exited (0) 15 seconds ago                       myUbuntu

C:\Users\bactoria>



종료된 우분투 컨테이너 실행하기 docker start myUbuntu

C:\Users\bactoria>docker start myUbuntu
myUbuntu

C:\Users\bactoria>



우분투 컨테이너 접속하기 docker attach myUbuntu + Enter X2

C:\Users\bactoria>docker attach myUbuntu
root@be76370e89aa:/#
root@be76370e89aa:/#



우분투 컨테이너 빠져나가기 Ctrl+p + Ctrl+q
(컨테이너 종료하지 않음)

root@be76370e89aa:/#
root@be76370e89aa:/# read escape sequence

C:\Users\bactoria>



실행중인 모든 컨테이너 확인하기 docker ps

C:\Users\bactoria>docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
be76370e89aa        ubuntu:16.04        "/bin/bash"         5 minutes ago       Up 3 minutes                            myUbuntu

C:\Users\bactoria>



우분투 컨테이너 종료하기 docker stop myUbuntu

C:\Users\bactoria>docker stop myUbuntu
myUbuntu

C:\Users\bactoria>



이미지 제거하기 docker rmi ubuntu:16.04
(삭제안됨)

C:\Users\bactoria>docker rmi ubuntu:16.04
Error response from daemon: conflict: unable to remove repository reference "ubuntu:16.04" (must force) - container be76370e89aa is using its referenced image f975c5035748

C:\Users\bactoria>



컨테이너 제거하기 docker rm myUbuntu
(이미지 제거하려면 컨테이너 먼저 제거해야 함)

C:\Users\bactoria>docker rm myUbuntu
myUbuntu

C:\Users\bactoria>



컨테이너 제거 확인 docker ps -a
(삭제되어서 없어졌을거임)

C:\Users\bactoria>docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

C:\Users\bactoria>



이미지 보기 docker images

C:\Users\bactoria>docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              16.04               f975c5035748        2 weeks ago         112MB

C:\Users\bactoria>



이미지 삭제하기 docker rmi ubuntu:16.04

C:\Users\bactoria>docker rmi ubuntu:16.04
Untagged: ubuntu:16.04
Untagged: ubuntu@sha256:e348fbbea0e0a0e73ab0370de151e7800684445c509d46195aef73e090a49bd6
Deleted: sha256:f975c50357489439eb9145dbfa16bb7cd06c02c31aa4df45c77de4d2baa4e232
Deleted: sha256:0bd983fc698ee9453dd7d21f8572ea1016ec9255346ceabb0f9e173b4348644f
Deleted: sha256:08fe90e1a1644431accc00cc80f519f4628dbf06a653c76800b116d3333d2b6d
Deleted: sha256:5dc5eef2b94edd185b4d39586e7beb385a54b6bac05d165c9d47494492448235
Deleted: sha256:14a40a140881d18382e13b37588b3aa70097bb4f3fb44085bc95663bdc68fe20
Deleted: sha256:a94e0d5a7c404d0e6fa15d8cd4010e69663bd8813b5117fbad71365a73656df9

C:\Users\bactoria>



무에서 유를 창조하고

다시 무로 돌아갔다.

안보고 우분투 컨테이너 생성까지 가즈아~



Issues

  • 컨테이너 attach 안될때
    컨테이너 restart 하고나서 다시 attach 붙이자.
    ( attach 명령 후 엔터 한번 더눌러 줘야함. )


  • 도커이미지 갑자기 날라갈때
    이건 hyper에 vm이랑 관련된거같은데.. 자세히 몰겠음. 한번씩 맛탱이가 가던데


  • docker version에서 Server가 안뜰 때
    hyper-V 관리자를 열어 가상머신이 실행중인지 확인


반응형

'연구개발 > Etc..' 카테고리의 다른 글

mac port kill  (0) 2024.01.31
운영체제 개론  (0) 2017.05.29
지표 관련 용어  (0) 2016.08.22
unity key  (0) 2016.05.07
RAID 1+0 과 0+1의 차이점  (0) 2011.07.11
반응형

vi /usr/bin/pip


from pip import main
if __name__ == '__main__':
    sys.exit(main())

요렇게 변경


from pip import __main__ 
if __name__ == '__main__':
    sys.exit(__main__._main())


반응형

'Program > Python' 카테고리의 다른 글

numpy axis  (0) 2018.07.13
docker 한글설정  (0) 2018.07.07
[OpenCV] face detection  (0) 2018.06.28
[OpenCV] 영상 얼굴 인식 (face detection)  (0) 2018.06.28
numpy 배열 쪼개기  (0) 2018.01.05
반응형

import numpy as np

import cv2


face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')


img = cv2.imread('redvelvet.png')

gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)


faces = face_cascade.detectMultiScale(gray, 1.3, 5)


for (x,y,w,h) in faces:

    cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)

    roi_gray = gray[y:y+h, x:x+w]

    roi_color = img[y:y+h, x:x+w]

    eyes = eye_cascade.detectMultiScale(roi_gray)

    for(ex,ey,ew,eh) in eyes:

        cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)


cv2.imshow('img',img)

cv2.waitKey(0)

cv2.destroyAllWindows()




https://blog.naver.com/limitsinx/221137914300

반응형

'Program > Python' 카테고리의 다른 글

docker 한글설정  (0) 2018.07.07
file "/usr/bin/pip" line 9, in <module>  (0) 2018.07.03
[OpenCV] 영상 얼굴 인식 (face detection)  (0) 2018.06.28
numpy 배열 쪼개기  (0) 2018.01.05
2. python3 py파일 exe 실행파일 만들기  (0) 2017.12.31
반응형


import cv2

cap = cv2.VideoCapture('testvideo.divx')

face_pattern = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

while True:

          ret, frame = cap.read()

          gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

          faceList = face_pattern.detectMultiScale(gray, 1.5)

          for (x, y, w, h) in faceList:

                  cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 3)

          cv2.imshow('image', frame)

          if cv2.waitKey(1) & 0xFF == ord('q'):

                 break

cap.release()

cv2.destroyAllWindows()



반응형

'Program > Python' 카테고리의 다른 글

file "/usr/bin/pip" line 9, in <module>  (0) 2018.07.03
[OpenCV] face detection  (0) 2018.06.28
numpy 배열 쪼개기  (0) 2018.01.05
2. python3 py파일 exe 실행파일 만들기  (0) 2017.12.31
1. python3 py파일 exe 실행파일 만들기  (0) 2017.12.31
반응형

http://symplog.tistory.com/266

반응형

'연구개발 > DBA' 카테고리의 다른 글

oracle mssql linked server  (0) 2018.04.17
select 처리순서  (0) 2017.08.02
Microsoft Windows DistributedCOM 오류 로그  (0) 2016.03.23
mssql 권한설정  (0) 2016.03.16
tempdb 분리  (0) 2016.03.15
반응형

https://blogs.msdn.microsoft.com/dbrowne/2013/10/02/creating-a-linked-server-for-oracle-in-64bit-sql-server/



This post is a walkthrough of creating a Linked Server to Oracle from 64bit SQL Server.  There's lots of information on doing this on the web, but much of it is out-of-date.

First, install the correct Oracle drivers.  You want the latest version of the Oracle Data Access Components (ODAC), and you want the XCopy deployment.  They are available here:

64-bit Oracle Data Access Components (ODAC) Downloads

http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html

One you download and unzip this into a folder run the following command from that folder:

C:\Users\dbrowne\Downloads\ODAC121010Xcopy_x64>.\install.bat oledb c:\oracle\odac64 odac64 true

Then you need to add two folders to your system path: c:\oracle\odac64 and c:\oracle\odac64\bin


Then you must reboot for the system path change to be visible by services like SQL Server.

After reboot you're ready to create and test the linked server.

First configure the Oracle OleDB provider to run inside the SQL Server process, and configure it to accept parameters.

exec master.dbo.sp_MSset_oledb_prop 'ORAOLEDB.Oracle', N'AllowInProcess', 1 
exec master.dbo.sp_MSset_oledb_prop 'ORAOLEDB.Oracle', N'DynamicParameters', 1 

Then create the linked server definition.  Instead of a TNSNames alias, use an EZConnect identifier.  Here I'm specifying an IP address and a SID to connecto to an Oracle Express instance running on a VM:

 

exec sp_addlinkedserver N'MyOracle', 'Oracle', 'ORAOLEDB.Oracle', N'//172.16.8.119/xe', N'FetchSize=2000', ''

 

exec master.dbo.sp_serveroption @server=N'MyOracle', @optname=N'rpc out', @optvalue=N'true'
exec sp_addlinkedsrvlogin @rmtsrvname='MyOracle', @useself=N'FALSE', @rmtuser=N'system', @rmtpassword='xxxxxx'     

Now you're ready to test.  We configured the linked server for 'rpc out' so we can send a simple passthrough query to test connectivity:

exec ('select 1 a from dual') at MyOracle

That's it.





exec master.dbo.sp_MSset_oledb_prop 'ORAOLEDB.Oracle', N'AllowInProcess', 1 



exec master.dbo.sp_MSset_oledb_prop 'ORAOLEDB.Oracle', N'DynamicParameters', 1 




exec sp_addlinkedserver N'MyOracle', 'Oracle', 'ORAOLEDB.Oracle', N'//192.168.10.80:1521/myora', N'FetchSize=5000', ''



exec master.dbo.sp_serveroption @server=N'MyOracle', @optname=N'rpc out', @optvalue=N'true'




exec sp_addlinkedsrvlogin @rmtsrvname='MyOracle', @useself=N'FALSE', @rmtuser=N'system', @rmtpassword='head1ton' 



exec ('select 1 a from dual') at MyOracle

반응형

'연구개발 > DBA' 카테고리의 다른 글

Mysql Mssql linked server  (0) 2018.04.17
select 처리순서  (0) 2017.08.02
Microsoft Windows DistributedCOM 오류 로그  (0) 2016.03.23
mssql 권한설정  (0) 2016.03.16
tempdb 분리  (0) 2016.03.15

+ Recent posts

반응형