2019년 9월 28일 토요일

JupyterNotebook 설치 과정 정리 (Ubuntu 18.04 기준)

1) 왜 쥬피터 노트북인가?
쥬피터 노트북은 ipython을 웹브라우저 기반으로 작동되는 ide의 일종으로써(당장 과거에 쥬피터 노트북을 기동 시켜줄때의 명령어가 ipython notebook 이었다) 이것 자체는 파이썬의 코드 및 문서를 작성해 주는 지원툴에 불과하다고 할지 모른다.
 확실히 ipython의 경우 기존의 파이썬 커맨드 터미널을 대체하는 유용한 툴이나 터미널 기반의 어떻게 보면 2019년 개발 환경이라고 하기에는 그렇게 어울리는 환경은 아니고(그러나 유용하지 않다는 뜻은 결코 아니다) 그렇다고 원격으로 무었인가를 할때 일일이 터미널을 열어 한다는게 그렇게 용이한게 아니라는 점이다.(당장 vim이라는게 강력하기는 하지만 그렇게 유저 친화적 도구가 아니다.)
 그런 점에서 쥬피터 노트북은 웹 기반으로 사용 가능한 IDE이며(쉽게 이야기해서 브라우져 상에서 작동하는 IDE라는 이야기다) 위에서 이야기한 유저친화적인 문제는 이것 만으로도 해결된다.
 그러나 우리가 쥬피터를 사용해야 하는 가장 큰 이유는 역시나 문서작성일겁니다.
 기존의 코딩의 경우 코드와 결과물 그리고 코드가 각자 노는 문서만이 가능했고 도구 또한 각자였습니다. 반면에 쥬피터의 경우 '문서 + 코드 + 결과물' 이 하나의 문서 안에 모아둘수 있는 복합적인 도구이고 이를 통해 작성된 자료는 전과는 비교할수 없는 훌륭한 결과물이라고 할수 있습니다.


2)Anaconda 가상환경 jupyter notebook에 추가

참조사이트 : https://medium.com/@kwoncharles/jupyter-notebook-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EA%B0%80%EC%83%81%ED%99%98%EA%B2%BD-kernel-%EC%B6%94%EA%B0%80-%EC%A0%9C%EA%B1%B0-mac-67ee72088784

일단 가상환경을 활성화 해 준뒤

python -m ipykernel install --user --name=(원하는 이름)

을 실행 시켜주면 원하는 커널이 추가되어 있다. 이렇게 하면 각 가상환경마다 노트북을 설치하고 실행할 필요 없이 그냥 노트북 환경에 원하는 이름으로 추가됩니다.

2019년 9월 22일 일요일

공유 노트로써의 블로그의 유용성

이제는 시대에 뒤쳐진 것이라고 취급 받을 수도 있기는 하지만, 블로그는 여전히 자신의 행동을 알리는 기록으로써 사용되고 있습니다.
 그런데 생각해 보면 블로그는 공개적으로 자신의 지식을 기록해 둘수 있는 노트로 사용 가능한 매체입니다.

 나의 이 블로그 페이지에도 몇몇 개의 기록을 남겨둔 기록을 보면 알겠지만 나는 리눅스 서버에서 종종 사용했던 세팅법 몇가지를 블로그에 기록해 두고서 그것을 다시 사용해야 할 필요가 있을 경우 그 기록을 찾아서 사용하고 있습니다.

 이렇게 기록해 둘 경우 자기 기록을 다시 찾아야 할 경우 구글등에서 (자기ID)+(검색주제)를 사용해 자신의 기록을 재조회 해 볼수 있어 여러가지로 유용하다는 장점이 발생하니 외부에 공개해도 좋은 기록의 경우 이런식으로 사용해 보는 것도 좋은 기록이라고 봅니다.

2019년 8월 25일 일요일

[DEV] Git 서버 구축

1) SVN vs GIT 누가 좋을까?
엄마가 좋을까 아빠가 좋을까 수준의 이야기이기는 하지만, 현장에서 경험한 것을 바탕으로 이야기 하자면

'사용자가 저장 하는 파일 종류'

에 따라서 SVN이 더 좋을 수도 있고 반대로 GIT가 더 좋을 수도 있습니다.

현재 추세는 확실하게 GIT가 대세입니다.
당장 오픈소스의 최대 공개처인 github가 이름 그대로 git로 운영되고 있고 소프트웨어 엔지니어가 아닌 나 조차 소스 대상으로는 svn을 써본게 언제일지 모를 정도로 사실상 소스 관리 툴은 확실하게 짓으로 넘어가고 있습니다.

그럼에도 불구하고, Cad파일을 관리 할때는 지트보다는 서브가 더 좋다고 할수 있는게 지트로 CAD파일과 같은 바이너리 파일을 관리해 줄 경우 서버의 용량이 가히 폭주라고 할수 밖에 없을 정도로 늘어납니다.

그 외에도 서브 쪽의 버전 개념 쪽이 더 단순하다는 점 때문에 단순히 버전 관리를 해야 한다고 할때 서브는 아직도 쓸만한 도구입니다.

2) 설치 기반
OS : UBUNTU(Linux mint)

참조 사이트 :
1) https://indienote.tistory.com/80
2) https://webdir.tistory.com/220
3) https://indienote.tistory.com/80

언제나 그렇듯

apt install git
git version

로 설치해 주고
(git-core를 설치하라고 하는데 아무레도 git로 대체 되듯 함)

sudo adduser git
su git

(git 관리 계정 만들고 로그인)

그뒤 ssh의 key-chain을 만들어 냄

ssh-keygen -t rsa                  #ssh 키 만들어 내기
chmod 700 ~/.ssh
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys          #ssh 키 등록
chmod 600 ~/.ssh/authorized_keys

이후 이렇게 생성된 키를 돌려 쓰면 됨.

저장소는 최초 생성시

mkdir ~/git
cd ~/git
git init --bare --shared          #저장소 생성 및 초기화

그뒤 원격에서 클론을 생성하면 됨

git clone ssh://서버_id@서버주소:ssh포트/home/사용자_id/git

svn과는 달리 따로 데몬을 구동시킬 필요도 없음.

2019년 6월 17일 월요일

subsonic 설치 과정 정리 (OS무관 기준)

1) 개요
이것도 DB몇번이나 날려 먹어 매번 새팅해주는게 영 불편해서 이참에 언제나 볼수 있는 이 장소에 설치 및 백업등을 정래해 본다.

일단 리눅스의 경우 AUR이나 deb설치 방식으로 설치 가능한데 여기서 문제가 발생하는 것이 바로 db문제이다. 통상적으로 subsonic이 설치된 폴더 아래에 보면 이 db폴더가 존재하는데 여기에 subsonic을 사용하면서 생성된 플레이리스트나 별표한 음악, 그리고 스캔한 파일 등등이 기록 정리된 데이터베이스가 생성된 폴더이다.

 근데 버전 별 문제인지 아니면 다른 어떤 문제가 있어서 인지 이 db폴더를 옮긴다 할 지라도 기존의 폴더 내용을 읽어 들여 새로운 OS의 subsonic에서 이를 읽어 들이는 것이 되지 않는다라는 점이 치명적인 문제로 작용했다.

얼추 보면 음악 파일도 아닌 플레이리스트 정도야 다시 만들면 되지 않냐고 생각할지 모르지만, 문제는 그 목록이란게 1000개가 넘어가는 목록일 경우 그걸 다시 생성하는 일이결코 쉬운 일이 아니다. 그래서 DB를 반드시 전달하는 방식으로 설치해야만 전에 사용하던 구조를 그대로 계승하는 것이 가능하다.

2)설치
일단 참고 사이트 :
https://wiki.archlinux.org/index.php/Subsonic
https://www.linuxbabe.com/ubuntu/install-subsonic-media-server-ubuntu-18-04-https

일단 위의 사이트는 코드 변경 사항만 참조 하고 설치 부분은 넘어가도 되는게 지금 설치할 패키지는 standard alone 패키지이니 어디까지나 참조만 하기 바란다.

http://www.subsonic.org/pages/download.jsp

위의 링크에서 standard alone을 wget 명령어로 다운로드 한 후 ( subsonic-6.1.5-standalone.tar.gz 이름이 대부분임)

이를  원하는 폴더에 풀어준뒤

tar -xvzf ./subsonic-6.1.5-standalone.tar.gz

파일을 설치 폴더에 옮겨 준다.

mv -r ./* /var/subsonic         #/var/subsonic이 일단 제작 회사에서 권장하는 기본위치

그 뒤 작동시키고자 하는 계정으로 이 폴더 이하의 권한을 변경한다.

chown -r /var/subsonic (원하는 계정)        #대게는 음악 파일을 보관하는 home폴더의 권한을 가진 계정을 쓰면 됨.

그 뒤

sudo /var/subsonic/subsonic.sh

로 실행 시킨 뒤

브라우져로 접속해 subsonic의 계정 화면이 뜨면 성공적으로 작동하는 것임.

3) 자동시작 설정

sudo vim /etc/systemd/system/subsonic.service

아래 코드 입력

[UNIT]
Descrption=Subsonic
After=network.target

[Service]
User=(사용계정)
ExecStart=/var/subsonic/subsonic.sh
ExecStop=/bin/kill -15 $MAINPID
Type=forking

[Install]
WantedBy=multi-user.target

4)백업방법
이렇게 스탠다드얼론으로 설치된 패키지의 경우 설치 폴더 자체가 db를 포함된 상태임.
그러니 /var/subsonic 폴더 자체를 백업해 새 OS로 옮겨 주는 것 만으로도 db복원이 가능해짐.

2019년 4월 5일 금요일

시카고와 ISS

몇년전 여름 휴가때 미국에 사시는 친척분의 집에 신세를 진 적이 있는데, 그때 꽤 잊을 수 없는 일을 경험한 적이 있어서 이렇게 기록해 두려고 한다.

아시는 분은 아시는 이야기겠지만, 시카고는 거대한 호수(이걸 민물 바다라고 불러야 할지 호수라고 불러야 할지 모를 수준이다.) 바로 옆에 위치한 도시고 과거에는 여기로 들어가는 길을 (어느분이 그 좋아하는)운하로 만들었다가 지금은 유람선을 띄워서 관광 자원으로 활용하고 있다. 과거에는 이걸로 물자를 수송하고 했다고 하는데 지금은 이미 그런걸 할 시점이 아니니 그냥 관광 자원으로만 활용하고 있었는데 범선 현태의 배를 타고 호수를 다녀오는 코스가 있었다.(혹시라도 방문하거들랑 꼭 한번 타보기를 바란다. 안내하는 아가씨가 미인이니)

어째든 할아버지와 그때 배를 타고 밤 호수를 가고 있는데 ISS, 그러니까 국제 우주 정거장이 우리의 머리 위를 지나가고 있었다. 처음에는 이게 국제 우주 정거장인지 몰랐는데 옆에 계신 어느 미국인분(추정?)이 ISS라고 이야기 해주어서 그게 국제 우주 정거장인 것을 알았다.

뭐랄까, 국제 우주 정거장은 계속해서 지구를 돌고 있으니(지금 앱으로 보니 무려 27,612 km/h의 속도다!) 머리 위를 지나친다 해도 이상할 것은 없기는 하지만 딱 미국에 가서 마침 호수 위에서 밤하늘을 쳐다보고 있었는데 우주정거장이 지나간 것이다.

시카고의 야경, 그걸 빛추는 호수 그리고 그런 밤 하늘을 가르는 인공위성이라는 조합은 꽤나 이색적이면서도 특이한 조합이 아니었나 싶고 지금도 내가 시카고에서 겪었던 일 중에서 가장 기억에 남는 일이 아닌가 한다.

2019년 2월 5일 화요일

youtube-dl 사용법 정리(스크립코드 추가)

때때로 깜빡 깜빡하는 내용이라 여기 정리해 둔다

설치:
apt 든 pacman 이든 늘 설치하던 대로 설치하면 되나 문제는 최신 버전이 아닌 경우 다운이 않되는 경우가 종종 있다. 그러니 설치된 youtube-dl이 있으면 삭제해 준 뒤 아래의 명령어를 내리면 최신판을 설치해 준다.

sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl


사용:
간단하다. 그냥

youtube-dl (원하는 URL)

을 하면 알아서 현 디렉토리에 다운해 준다.(영상 기준)

이걸 오디오 포멧만 추출하려면

youtube-dl -x (원하는 URL)

으로 하면 원하는 오디오 포멧인데 최고 음질(원본)로 자동 지정하므로 범용성이 떨어지는 경우가 종종 있다.

그러니 다음과 같이 오디오 포멧을 지정하는 것도 가능하다

youtube-dl -x --audio-format (원하는 오디오 포멧(ex:mp3)) (원하는 URL)

이렇게 하면 자동으로 인코딩까지 해준다.

그리고 마지막으로

플레이리스트를 다운 받는데 이상하게도 말썽 부리는 경우 뛰어넘는 방법은

--playlist-start (리스트 숫자)

위 옵션을 붙여 주면 해당 숫자부터 시작한다.

여기에 하나 더 추가 하자면, 스크립 코드로 옵션을 정리하는 것이 가능하다.(계속 mp3옵션 쳐줄 필요가 없다는 뜻)(출처 : https://gist.github.com/nutbutterfly/ec0511efc4895741d955 )

vim 이든 gedit든 적당한 코드 편집기로 아래와 같이 스크립 코드를 작성해 보자.

#!/bin/bash

URL=$1

guide()
{
          echo "유튜브 URL이 요구됨"
}

download_and_convert()
{
          youtube-dl -f bestaudio $URL --extract-audio --audio-format mp3
}

#check
if [ $# = 0 ]
then 
          guide
else
          download_and_convert
fi


주의해 줄 점은 코드 입력 때(특히 if문) 의 띄어 쓰기에 주의할 것
bash 코드가 띄어 쓰기를 해주지 않으면 인식을 못한다는 점이다.

이렇게 해준 다음에 ~/.bashrc 맨 끝에 PATH를 추가해 주는 것도 잊지 말도록 하자

PATH=$PATH:(추가해주려는 path 폴더)

2019년 1월 19일 토요일

텐서플로우(Tensorflow) GPU설치 (이보다 더 쉬울 수는 없다!)

딥러닝의 가장 주목받는 라이브러리 중 하나인 텐서플로우는 GPU를 이용한 가속이 가능하며 GPU가속을 사용할 경우 CPU연산에 비해 탁월하게 빠른 속도의 구현이 가능해 진다.

 그러나..., 이 작업이 OS와 상관없이 그렇게 녹록하지 않은 작업이었던 것이

 텐서플로우 + CUDA TOOLKIT + CuDNN

이렇게 3개의 라이브러리의 버전 조합이 반드시 맞아야만 제대로 텐서플로우는 작동되고 이중 하나라도 조합이 맞지 않으면 당장 import tensorflow 명령어에서 파이썬 중계기가 뻗어 배째라는 광경을 볼수 있을 것이다.

그러나 오늘 발견한 방법은 드라이버만 설치해 주면 나머지는 버전을 지정하거나 아예 자동으로 맞추어 주는 것이 가능한 방법이니 반드시 테스트 해보길 바란다.

원본 자료 : https://medium.com/datadriveninvestor/install-tensorflow-gpu-to-use-nvidia-gpu-on-ubuntu-18-04-do-ai-71b0ce64ebc5


1) 우선은 리눅스(우분투 18.04 혹은 18.10)를 설치한다.(혹은 설치한 리얼컴퓨터가 필요하다. CUDA를 사용해야 하니 당연히 nvidia 그래픽 카드가 설치된 컴퓨터야 한다)

2-1) 리눅스의 경우 다음과 같이 명령한다.
sudo apt update
sudo ubuntu-drivers autoinstall
sudo reboot
(맨 마지막 줄을 실행하면 재 부팅한다)

재부팅 후
nvidia-smi 라고 실행해 그래픽 카드의 드라이버가 잘 설치되었는지 등등을 확인한다.

2-2) 윈도우의 경우 그냥 nvidia 윈도우 드라이버를 설치한다.


2) 아나콘다 가장 최신판을 다운로드한다.(OS에 맞게)

2-1)리눅스판의 경우 CUI기반으로 설치하는데

sh ./Anaconda+xxxx.sh

와 같은 형태로 실행 시키면 터미널에서 작동한다. 이때 한가지 주의할 점은 sudo 권한이 아니어야한다는 점이어야 한다는 점이다.

2-2) 설치되면 다시 한 번 터미널을 껏다 켜주고서

2-3) 이제 제일 중요한 대망의 텐서플로우 설치

conda create -n tensorflow_gpu(이건 원하는 대로 작명) python=3.6 tensorflow-gpu==1.12 cudatoolkit==9.0 cudnn=7.1.2 h5py ipython (등등등 원하는 대로 설치)

추가사항 : 아래의 링크에서 자기 그래픽카드(정확하게는 드라이버 버전)가 지원 가능한 cudatoolkit의 버전을 확인해 보자. 최근의 텐서플로우나 케라스 버전은 CUDA 10버전을 기준으로 작동하는데 이게 자기 GPU에서 꼭 작동한다는 법은 없다.

GPU의 연산 버전(compute version)
https://developer.nvidia.com/cuda-gpus

아래의 링크에서는 툴킷 버전 확인
https://docs.nvidia.com/deploy/cuda-compatibility/index.html#binary-compatibility__table-toolkit-driver

2-4) 환경을 활성화 해준 뒤
conda activate tensorflow_gpu

ipython 이든 뭐든 원하는대로 사용하면 설치 끝.

3-1) 윈도우 환경의 경우 ANACONDA NAVIGATOR로 똑같이 해주면 된다.

정리하면 OS와 드라이버만 OS차원에서 설치해 주고 나머지는 아나콘다에서 설치해 주면 된다는 뜻이다.