밥컴의 블로그입니다

텐서플로우는 구글에서 만든 머신러닝 및 딥러닝 라이브러리입니다.

이론을 보면 그래프 막 그리고 난리가 나는데요. 이 부분은 다 빼고 진행할 예정입니다. 시간이 없어서요. 

일단 사용하고 무언가 만드는 것이 목표입니다.


다양한 언어를 지원하지만, 제가 python에서 작업을 할 예정이므로 파이썬으로 사용하는 것을 정리 할 예정입니다. 작업환경은 아나콘다를 사용하고 있고요. 윈도우에서 작업하므로 파이썬은 3.5이상을 사용합니다. 


운영체제 : 윈도우10

언어 : python3.5 이상

플랫폼: 아나콘다

 

저는 개인적으로 python2.7을 사용하는 사람인데요. 윈도우용 텐서플로우는 python3.5이상에서 지원하는 바람에 어쩔수 없이 다음과 같이 시작합니다.


1. 설치

아나콘다 cmd로 들어가서

# pip install tensorflow 

하면 끝입니다. 참쉽죠.


2. hello world

python 접속후 다음과 같이 쳐봅니다.

import tensorflow as tf

hell = tf.constant('Hell o, world')

ses = tf.Session()

print(ses.run(hell))


결과가 'Hell o, world'로 출력되면 완벽합니다.


참 쉽죠. 다음번엔 기본 사용법들을 알아보겠습니다.


출처

1. https://www.tensorflow.org/get_started/get_started

'컴퓨터 > 기타 유용한 팁' 카테고리의 다른 글

MongoDB 백업 및 복구  (0) 2017.03.23

서버 및 PC를 사용하면 자주 사용하는게 이동식 디스크인 USB를 자주 사용합니다.

DESKTOP 버전의 GUI가 있는 환경이라면 그냥 마우스로 클릭클릭해서 간단하게 들어갈 수 있겠지만

만약 server같이 GUI가 없는 환경이면 커맨드로 마운트를 해야 하는 경우가 생깁니다.


1. fdisk 로 USB찾기(sudo)

# fdisk -l

Disk /dev/sda: 15740.2 MB, 1574004886016 bytes

255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 4096 bytes

I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Disk identifier: 0x00000000


   Device Boot      Start         End      Blocks   Id  System

/dev/sda1               1  1953525167   976762583+  c W95 FAT32(LBR)

 

가장 중요한 값인 디바이스정보와 포맷 정보를 위의 빨간색에서 찾을 수 있습니다.

부트정보는 dmesg로도 확인 가능하지만 어처피 FAT확인때문에 위와 같이 커맨드를 날려야되니 간단하게 위의 방법으로 정보를 얻습니다.


2. 임시 디렉토리 생성

# mkdir tmp_mount 

USB에 있는 파일들을 위의 tmp_mount 디렉토리에 보이게 할 예정입니다.


3. mount하기

# mount -t vfat /dev/sda1 tmp_mount 

fdisk에서 얻어온 fat정보를 -t 옵션으로 쓰고, 디바이스 정보가 argv[1], 마운트 시킬 디렉토리가 argv[2]에 오게 작성합니다.


4. enjoy

이제 tmp_mount에서 USB에 있는 내용을 사용할수 있습니다. 오예


5. unmount

# unmount /dev/sda1 

위의 명령으로 간단하게 해제합니다.


-끝-



'컴퓨터 > 리눅스' 카테고리의 다른 글

ls 커맨드 옵션 및 시간 표시  (0) 2017.03.23
vimdiff 간단 사용법  (0) 2017.03.04

MongoDB를 사용하면서 종종 현재있는 DB의 데이터를 백업하거나, 복구해야되는 경우가 생깁니다.

아주 친절하게도 MongoDB 개발자 및 기획자분들이 이미 해당 기능을 모두 만들어 놓았습니다.

저희는 그냥 사용만 하면 되는것이죠. 어떻게 사용하는지 정리해보겠습니다.

(하지만 pymongo에는 위의 기능이 없다고 합니다. 파이썬을 이용해서 백업을 하실때는 os.system같은 함수를 이용해서 해당 기능을 사용하시면 됩니다.)


1. 현재 파일 백업하기

mongoDB에서는 백업하는 것을 dump를 한다라고 표현합니다. 다음 사전에 따르면 [컴퓨터 내부 기억 장치 데이터외부 기억 장치 복사하다. 라는 뜻을 가지고 있다고 합니다. 즉 현재 DB에 있는 데이터를 외부 기억 장치로 복사하는 것이죠.

명령어는 다음과 같습니다.

$mongodump [옵션]

참 쉽죠? 개발도 이렇게 쉬웠으면 참 좋겠습니다.  위와 같은 명령어는 가장 기본으로 사용하는 명령어지만, 여기에 옵션을 제대로 줘야 좀 더 원하는 방식으로 작동 합니다.


1.1 mongodump 옵션

- 제가 mongodump개발자가 아니기에, 그냥 제가 사용한 옵션만 정리하겠습니다.

- 저는 호스트 127.0.0.1에 포트 27017을 사용하고요. db이름은 databa입니다. 그아래 collection을 모두 백업하는 예제를 보겠습니다.

- 호스트는 --host 127.0.0.1 의 포맷입니다.

- 포트는 --port 27017 으로 쓰면 됩니다. 

- db이름은 -d databa 로 쓰고요

- 백업하는 디렉토리는 /etc/backup 으로 하고요.

- 백업하는 이름은 myback 으로 하겠습니다.

- 위의 내용을 모두 정리하면 아래와 같습니다.


$ mongodump --host 127.0.0.1 --port 27017 -d databa -o /etc/backup/myback


- 어때요 참 쉽죠?

- 호스트 아이피 뒤에 슬래시를 붙이며 db이름을 붙이면 작동 안합니다. 꼭 -d 옵션으로 db를 꺼내서 명시해주세요.

mongodump --host 127.0.0.1/databa --port 27017  -o /etc/backup/myback 이러면 안된다는겁니다.

- 원격에 있는 DB를 기준으로 로컬도 충분히 가능하기에 하나만 쓰기로 했습니다.ㅎㅎ

- 이렇게 명령어를 사용해서 만든 결과를 보면 bson으로 저장되어있는 데이터들을 볼 수 있습니다. 


2. 백업한 파일 불러오기

위와 같이 현재 백업한 DB정보들을 불러오는 방법입니다. 다양한 부르는 방법이 있지만, mongodb에서는 restore라고 합니다. 네. 복원하다라는 뜻이죠.

동일한 방법으로 mongo다음 내용을 쓰면 됩니다.


$ mongorestore [옵션]


2.1 옵션

- 모두 dump와 동일합니다.

- 바로 예시로 가보면 호스트 127.0.0.1에 포트 27017을 사용 db이름은 databa에 /etc/backup/myback 에 있는 데이터를 불러오겠습니다.


$ mongorestore --host 127.0.0.1 --port 27017 -d databa  /etc/backup/myback/databa


- 어때요? 참 쉽죠?

- dump와 다른점은 -o옵션이 없다와 불러올 때 db까지 적는 것입니다. 

- 뒤에 myback으로 저장을 했지만 db이름까지 적어야 제대로 복원이 되는 것을 확인할 수 있습니다.


간단하죠? 즐거운 코딩하세요~

이번에 일을 하다가, 폴더에 대한 자세한 정보를 가져와야되는 경우가 생겼습니다.

더 정확히는 python을 사용해서 리눅스 커맨드를 치고, 나온 결과를 파싱하는 일이 생겼는데요. 어렵지는 않습니다. 파이썬에 써놓은 글을 읽으시면 쉽게 따라하실수 있어요.

문제는 ls 커맨드에 대한 결과가 제 마음에 들지 않은 것이었습니다.


$ls -lart

합계 8

drwxr-xr-x 2 root root    0  1월  1  1970 ..

-rw-r--r-- 1 bob bob  220  3월 16 21:21 .bash_logout


ls를 쳐서 디렉토리에 있는 리스트를 볼때 위와 같이 자주 사용합니다.

하지만 이 커맨드는 시간에 대한 정보가 부족했습니다. 즉 월만 나오고 더 자세한 정보가 안나왔습니다. 저는 년도까지 필요했는데 말이죠..

시간에 대한 자세한 정보를 얻고 싶을 때는 옵션으로 --time-style=STYLE 을 사용하면 됩니다. 바로 예시를 보면


$ ls -alrt --time-style=long-iso

합계 8

drwxr-xr-x 2 root root    0 1970-01-01  ..

-rw-r--r-- 1 bob bob  220 2017-03-16 21:21 .bash_logout


이렇게 자세한 파일 시간정보를 가져오는 커맨드 옵션을 사용할 수 있습니다.

여기서 의문인것은 STYLE에 대한 의문점이 생길텐데요. 간단하게,  full-iso, long-iso, iso, locale 등의 스타일이 있습니다. 

이 4가지면 충분히 많은 데이터를 얻을 수 있을것이라고 생각해요. 하나하나 쳐보시면 바로 이해하실 수 있을정도로 간단합니다.


$ ls --help를 치면 자세한 설명이 나오는데요 아래 추가해놨습니다. 필요하시면 참고하세요.

      --time-style=STYLE     with -l, show times using style STYLE:

                             full-iso, long-iso, iso, locale, +FORMAT.

                             FORMAT is interpreted like 'date'; if FORMAT is

                             FORMAT1<newline>FORMAT2, FORMAT1 applies to

                             non-recent files and FORMAT2 to recent files;

                             if STYLE is prefixed with 'posix-', STYLE

                             takes effect only outside the POSIX locale



'컴퓨터 > 리눅스' 카테고리의 다른 글

리눅스에서 USB mount하기  (0) 2017.12.03
vimdiff 간단 사용법  (0) 2017.03.04

왜 IPv5는 없을까?

찾아봐야지

파이썬에서 리눅스 커맨드를 실행하기 위해서는 보통 os.system을 사용합니다. 하지만 이것은 실행만 하는 용도지 실행에 대한 결과를 저장하는 용도로는 조금 부적합 하더라고요.


그래서 리눅스 커맨드 결과를 파이썬 변수로 저장하는 방법에 대해서 알아보겠습니다.


간단한 예시를 보면, 우리가 특정 프로세스(여기서는 aaaa) 가 작동하고 있는지 찾기 위해서 다음과 같은 명령어를 사용합니다.


$ ps aux | grep aaaa


뭐 다른 방법도 많이 있는 것으로 알고 있지만 일단 이걸 제가 가장 많이 사용하기 때문에 이 예시를 들었습니다.


이에 따른 결과 값으로 


root     48973  0.0  0.0  17164  2472 pts/28   S+   11:19   0:00 grep --color=auto aaaa


위와같은 결과를 파이썬에서 변수로 담는 방법으로   subprocess를 사용하면 간단하게 할 수 있습니다.


1. ps aux 변수로 담기




grep 이전에 ps aux를 변수로 담는 방법으로는 다음과 같은 코드를 사용하면 됩니다. 위와같이 결과를 데이터에 저장한 뒤에 파이프를 닫아야지 결과가 제대로 나와요. 반대로 하면 에러 뱉습니다.

2. ps aux | grep aaaa 변수로 담기

본 글의 메인인 ps aux|grep aaaa변수로 담는 방법입니다.


  

A. ps aux | grep aaaa | head -1 변수로 담기


그 이상의 | 를 사용하려면 다음과 같이 사용하면 됩니다.


주석은 과감히 생략 위의 예제들을 보면 간단하게 이해 할수 있을거에요



참 쉽죠?

더 많은것도 같은 방법으로 하면 됩니다.



vimdiff

회사에서 인도친구들이 많이 사용하고 있길래 신기해서 공부해서 사용했습니다. 


많이 유용한데 잘 안외워져서 글을 올리면 외워지겠지 싶어 글을 써봅니다.


vimdiff는 보통 두개의 파일을 비교하면서 내용을 복사 할 때 사용합니다. 


1. file open

키는법은 간단합니다.  file1과 file2의 컨텐츠를 비교하기 위해 아래와 같은 커맨드를 사용합니다.


$vimdiff file1 file2


2. 분할 창 이동 방법

위의 명령어를 실행하면 두 개의 분할 된 창이 나오는데,


Ctrl + w + w를 사용해서 옆칸으로 커서를 이동시킬수 있고, Ctrl + w + 화살표 를 이용해서 커서를 옮기는 방법도 있습니다. 


위의 키를 같이 누를 필요는 없고 Ctrl과 w 하나만 동시에 누르고 그 뒤에 있는 키는 다음에 눌러도 됩니다.


위의 키를 보면 아시겠지만, vi 에디터에서 vsplit과 split을 사용할 때 이동하는 키와 동일합니다.



3. 차이점 탐색 방법

차이가 있는 부분을 찾아서 이동하기 위해 다음과 같은 키를 눌러야 합니다. 


우선 현재 위치에서 아래 방향으로 탐색할 때는 ] + c  를 사용하고


현재 위치에서 위 방향으로 탐색할 때는 [ + c 를 사용합니다.



4. 복사 방법

차이가 있는 부분을 복사하는 키입니다.


현재 위치에서 반대쪽 창의 내용을 복사하기 위해서 d + o 를 사용합니다.


현재 위치의 내용을 반대쪽 창에 복사하기 위해서 d + p 를 사용합니다.



A. appendix

크게 상관은 없지만, 가끔 사용할 때가 있는 키로는  생략된 부분을 보여주는 키입니다.


vimdiff는 동일한 내용은 대부분 생략하고 다른 내용만 하이라이트 되는 방식인데요. 


여기서 생략된 내용을 보여주는 키는 z + o 혹은 z + space_bar 로 볼 수 있습니다.


반대로 다시 가리는 키는 z + c 를 사용해서 가릴 수 있습니다.



스크린샷을 넣으면 더 좋겠지만. 일단 vim를 본 사람이면 모두 이해할 수 있을거라 믿고 사진은 생략했습니다. 아마 나중에 캡쳐해서 올릴거 같아요.


그럼 즐거운 코딩하세요~




'컴퓨터 > 리눅스' 카테고리의 다른 글

리눅스에서 USB mount하기  (0) 2017.12.03
ls 커맨드 옵션 및 시간 표시  (0) 2017.03.23