728x90

sudo apt-get install libgtk2.0-dev

위 명령어로 libgtk2.0-dev를 설치하려고 하는데,

 

unable to correct problems you have held broken packages 에러가 발생하면서 설치가 되지 않았다.

 

이런 패키시 의존성 문제도 잘 이해 안되고, 이전에 aptitude를 사용한 적이 있다보니

 

aptitude로 무작정 설치해보았다.

 

잠깐 구글링 해보니 아래 링크에서도 aptitude를 사용하라고 하더라

askubuntu.com/questions/223237/unable-to-correct-problems-you-have-held-broken-packages

 

 

 

설치도 잘 됬고, dpkg로 libgtk2.0-dev가 깔린걸 확인할 수 있었다.

 

 

 

 

잠깐 그래서 검색하다보니 아래의 링크에서 apt, dpkg, aptitude 패키지 관리 툴에 대해서 잘 정리해둬서 복사해 가져왔다.

 

golmong.tistory.com/222tpholic.com/xe/5102649

 

----------------------------- 펌 내용 -----------------------------------

이번 시간에는 패키지 관리 툴들에 대해 조금~ 배워보는 시간을 갖도록 하겠습니다 ^^

우분투는 아는 사람은 알다시피... 데비안을 그 기반으로 하고 있습니다. 고로 프로그램의 설치는 .deb파일을 통해 패키지 형태로 이루어 집니다.

이런 .deb파일이나 패키지의 관리에 사용되는 툴에 대해 이해하고 이 툴들을 보다 유용하게 사용할 수 있기를 바라며 이번 강좌를  시작합니다

 

 



우분투를 설치한 후, 시스템의 사용목적이나 필요에 따라서 .deb 파일을 추가 설치 하거나 삭제 할 수 있다.
.deb 확장자 파일은 데비안 패키지 파일로써 우분투가 데비안 기반으로 한 시스템이라 소프트웨어 설치에 .deb파일을 사용하는 것이다.

이러한 패키지 들은 패키지 툴을 이용하여 설치하게 되는데 패키지 툴에는 apt, dpkg, aptitude 가 있다. 그중 몇가지를 설명하자면...

APT 는 온라인 리포지토리에서 패키지를 다운로드받고 설치하는데 사용 된다( : 예> apt-get 패키지명) 이때 보통 로컬환경(오프라인)상에서도 사용할 수 있지만 정상적으로 사용하기 위해서는 온라인 환경에서 사용하여야 한다.

dpkg 는 Cd룸이나 다른 디스크장치에 있는 .deb 파일을 제어하는 경우에 일반적으로 사용되며, dpkg명령어는 시스템 소프트웨어에 대한 설정이나 설치 및 정보를 얻는데 사용되는 옵션을 가진다
(예:> dpkg -c 데비안패키지 – 패키지가 설치한 파일 목록보기)

 패키지 툴에 대한 부분은 나중에 보다 자세하게 살펴보도록 하겠다.

우분투를 설치한 후 터미널 창을 열어 다음을 입력해보자

$ apt-cache stats

그러면 다음과 같은 결과를 얻을 수 있을 것이다.

전체 꾸러미 이름 : 33052 (1322k)
일반 꾸러미: 25280
순수 가상 꾸러미: 703
단일 가상 꾸러미: 1688
혼합 가상 꾸러미: 237
빠짐: 5144
개별 버전 전체: 30120 (1566k)
...

위 에서 보듯이 전체 30000여 개가 넘는 소프트웨 패키지를 사용할 수 있다.(공짜!로 쓸 수 있는 프로그램이 이리 많다는게 놀랍지 아니한가?)


그럼 본론으로 들어가서 각 패키지 툴을 이용한 소프트웨어 관리에 대해 배워보는 시간을 갖자.


1.APT
실질적으로 APT는 dpkg와 함께 동작한다. 하지만, 필요한 소프트웨어의 검색, 다운로드, 설치, 업그레이드, 검사 등 대부분의 패키지 관리작업을 APT단독으로 가능하다.
그럼 일반적 사용법을살펴보자

*주의: 다음 명령압에 sudo가 붙는데 sudo의 경우 우분투에서 사용하는 명령어에 관리자 권한을 주는 명령이다. 이는 우분투의 경우 기본적으로 root로 로그인을 막아 놓앗고 또 계정을 활성화 시켜놓지 않고 sudo 명령으로 root권한을 실행할 수 있도록만 만들어 놓았다. 그러므로써, 안전성을 확보하고 필요시 쉽게 root권한에 접근할 수 있도록 하고 있다. - 덫붙여 우분투를 사용할 때 꼭 필요한 경우가 아니면 root계정을 활성화하지 않는게 보안에 좋다. 다르게 말해 설치후 추가적으로root 패스워드를 지정해주지 않는게  보안에 좋다는 것이다.

sudo apt-get update
:  /etc/apt/sources.list를 참조로 사용할 수 있는 패키지 DB를 업데이트 한다.

apt-cache search 키워드
: 패키지 데이터베이스 중 주어진 키워드를 대소문자 구분 없이 검색하여 키워드를 포함하는 패키지명과 해당 설명을 출력한다.

sudo apt-get install 패키지명
: 패키지명을 데이터베이스에서 찾아보고 해당패키지를 다운로드 받아 설치한다. 이때, 패키지의 신뢰성을 gpg키를 사용 검증한다.

sudo apt-get -d install 패키지명
: 패키지를 설치는 하지 않고 /var/cache/apt/archives/ 디랙토리에 다운로드 받는다.

apt-cache show 패키지명
: 주어진 패키지명에 해당하는 소프트웨어에 대한 정보를 본다.

sudo apt-get upgrade
: 설치 되어있는 모든 프로그램 패키지에 대한 최신 업데이트를 검사한 후, 다운로드 받아 설치한다.

sudo apt-get dist-upgrade
: 전체 시스템을 새로운 버젼으로 업그레이드 한다. 이때 패키지 삭제도 실시된다.
단, 일반적으로 사용되는 업그레이드 방법은 아님!

sudo apt-get autoclean
: 불안전하게 다운로드된 패키지나 오래된 패키지의 삭제.

sudo apt-get clean
: 디스크 공간 확보를 위해 /var/cache/apt/archives/ 에 캐쉬된 모든 패키지 삭제

sudo apt-get 옵션 remove 패키지명
: 해당 패키지와 그 설정파일을 삭제한다. ( 옵션에 --purge 를 넣으면 설정파일을 재외하고 삭제. 옵션없을시 전부 삭제)

sudo apt-get -f install
: 깨어진 패키지를 위해 정상여부를 확인

apt-config -V
: 설치된 APT툴의 버전을 출력

sudo apt-key list
: APT가 알고 있는 gpg키 목록의 출력

apt-cache stats
: 설치된 모든 패키지에 대한 상태정보를 출력

apt-cache depends
: 패키지가 설치되어 있는지 여부에 관계 없이 그 의존성을 출력한다.

apt-cache pkgnames
: 시스템에 설치되어 있는 모든 패키지 목록을 보여준다.



이상으로 APT사용법을 대충 익혀보았다. 이제 dpkg를 알아보자


2.dpkg
이 툴의 경우 APT보다는 낮은 수준에서 작업이 수행된다. APT는 우분투의 소프트웨어를 관리하기 위해 내부적으로 이 dpkg를 이용한다. 보통 APT명령 만으로 충분하지만... 시스템에 있는 특정 파일이 어떤 패키지에 포함되는지 등의 확인 작업을 수행하기위해 dpkg 명령이 필요한 것이다.

dpkg -C  .deb파일
: 주어진 .deb파일이 설치한 파일의 목록을 본다.(해당 파일이 있는 곳에서 실행하거나 파일명앞에 절대 경로를 붙여준다.)

dpkg -I  .deb파일
: 주어진 .deb파일에 대한 정보를 본다.

dpkg -P  패키지명
: 패키지에 대한 정보를 보여준다.

dpkg -S  파일명
: 파일명 또는 경로가 포함된 패키지들을 검색한다.

dpkg -l
: 설치된 패키지 목록을 보여준다.

dpkg -L  패키지명
: 이 패키지로부터 설치된 모든 파일목록을 볼수 있다.

dpkg -s  패키지명
: 주어진 패키지의 상태를 본다

sudo dpkg -i  .deb파일
: 주어진 파일을 설치한다.

sudo dpkg -r  패키지명
: 시스템에서 해당 패키지를 상제한다. (단, 삭제시 파일들은 남겨둔다.)

sudo dpkg -P  패키지명
: 해당 패키지와 해당 패키지의 설정파일을 모두 삭제한다.

sudo dpkg -x  .deb파일  디랙토리
: 파일에 포함되어있는 파일들을 지정된 디렉토리에 풀어놓는다. 단, 주의 할점은 이명령시 해당 디렉토리를 초기화 시켜버리므로 주의하여야 한다!


3. aptitude
앞에서 배운 dpkg와 APT의 경우 제대로 사용하기 위해서는 좀더 많은 지식을 요구한다. 그에 비하여 aptitude의 경우 주요 패키지 작업 과정을 자동화하여 가능한 쉽게 작업할 수 있도록 해주므로 보다 쉽게 할 수 있다. 고로 보다 많이 사용하게 될 것이... 옳지만... 아직은 인터넷 상에서 APT나 dpkg를 사용한 패키지 설치 정보가 많다는 점에서... 장래에 많이 사용하게 될 듯하다^^

sudo aptitude
: 실행시 curses인터패이스로 시작된다. Ctrl+t를 사용하면 메뉴에 접근할 수 있으며, q키로 프로그램을 종료 시킬 수 있다.

aptitude help
: 도움말 보기

aptitude search 키워드
: 해당 키워드와 일치하는 패키지를 보여준다.

sudo aptitude update
: APT리포지트로들로부터 사용 가능한 패키지를 업데이트 한다.

sudo aptitude upgrade
: 모든 패키지를 최신으로 업그레이드 한다.

aptitude show 패키지명
: 해당 패키지의 설치 여부에 관계 없이 주어진 패키지에 대한 정보를 보여준다.

sudo aptitude download 패키지명
: 해당 패키지를 설치하지는 않고 다운로드만 받는다

sudo aptitude clean
: /var/cache/apt/archives디렉토리에 다운로드되어 있는 모든 .deb파일을 삭제한다.

sudo aptitude autoclean
: /var/cache/apt/archives디렉토리에 있는 오래된 .deb파일을 전부 삭제한다.

sudo aptitude install 패키지명
: 해당 패키지를 시스템에 설치한다.

sudo aptitude remove 패키지명
: 시스템으로부터 주어진 패키지를 삭제 한다.

sudo aptitude dist-upgrade
: 모든 패키지를 가장 최신 버전으로 업그레이드 시킨다. 이때, 필요한 경우 패키지를 삭제하거나 추가 한다.






이상으로 패키지에 대해서 수박 겉할기 식으로 나마 알아 보았고, 특히 이들 패키지를 설치하거나 관리하기 위한 몇가지 방법을 알아보았다.

참고로, 위 내용 다 넘기고 요즘 우분투의 경우 '프로그램 > 추가/제거' 메뉴나 '시스템 > 관리 > 스넵틱스관리자' 에서 쉽게 패키지를 선택하고 설치하거나 삭제 할 수 있다. 아니면 .deb파일을 받아 마우스로 클릭만 해주면 자동으로 패키지 관리자가 실행되어 설치 하게 되어있다.
참으로 편리한 세상이다...

하지만, 위 내용을 알고 있어야... 보다 깊은 단계로 나아갈 수 있고 또 보다 세부적인 관리, 추가, 삭제가 가능하기에 알아 두는게 좋다고 본다.






참고: 위에 나열된 명령어들은 터미널 환경에서 사용되는 command입니다.
참고2: 빠른 작성을 위해 경어체를 생략했습니다. 이해해주시길 바랍니다 ^^;;


조금이나마 우분투 사용에 도움이 되길 바라며 다음에 뵙겠습니다.
전 국민이 우분투등의 리눅스를 자신의 OS로 쓰는 그날까지....

300x250
728x90

영상 처리 분야를 보다가 그래프나 탐색같은걸 나오니

 

다시 알고리즘 공부해보려고 한다.

 

나는 파이썬으로

 

기본적인 알고리즘, 더나아가 간단한 경로 탐색, 자료구조 같은걸 구현해보고 싶었는데

 

기존의 알고리즘 사이트 백준이나 프로그래머스 같은 곳들은

 

공무원 시험 문제같은 알고리즘 문제들 위주로 있다보니

 

시간도 오래걸리고 할필요가 없어보였다.

 

 

 

이전에 찾은 자료 대신

 

다른 자료로 알고리즘 연습을 다시 하려고

 

자료보면서 이진 탐색을 간단하게 구현했는데

 

이상하게 vscode에서 인텔리센스랑 자동완성이 안되더라..

 

code runner로는 내가 원하는데로 잘 동작하는데도

 

 

 

 

 

 

분명 인터프리터도 잘 잡히고, 업데이트도 없으니 문제없을것 같은데

 

 

 

자동 완성을 하려고 탭을 누르면, 자동 완성이나 추천어가 뜨지 않고 그냥 탭이 적용되어버렷다

 

 

 

검색하다보니

 

vscode에는 자동완성 라이브러리로 jedi를 사용하고 있었는데

* ref : jedi.readthedocs.io/en/latest/

 

 

모든 vscode 파이썬 프로젝트에 적용되는 settings.json 파일에

* 사용자 홈/appdata/roaming/code/user/settings.json에 위치

 

jediEnabled : false 처리가 되어있는게 문제였다.

 

 

 

jedienabled : true로 고쳐주고

 

수정한 settings.json이 적용되도록

 

껏다 키자

 

 

 

 

 

아까 캡처를 못했는데

 

언어 서버를 리로드 해야한다는 상자가 떳는데, 리로드 시켜주도록 하자.

 

vscode 로드가 다끝나고 보면

 

이제야 인텔리센스가 동작한다. 휴

 

 

 

 

300x250
728x90

이전부터 정보이론을 공부해야지 알기는 했지만

 

제대로 해볼 엄두가 잘 나지를 않았다.

 

답답한건 어쩔수 없지만 

 

가장 자주나오는 샤논의 정보이론 내용만이라도 조금 정리해보려고 한다.

 

 

 

 

이 내용에 대해서

 

이광근 교수님 강의가 유튜브에 올라와 있더라

 

 

www.youtube.com/watch?v=UwUR7vl4VgQ

 

 

 

 

메시지의 정보량

- 메시지 겉모습에 대한 양

- 자주 나오는 것은 정보량이 적고, 많지않은것은 정보량이 많다.

- 엔트로피 : 정보의 예측 불허한 정도

- 불필요한 내용이 들어가면 정보량이 줄어듬

 

 

 

샤논이 정의한 메시지의 정보량

- x : 메시지에 나오는 단어

- p(x) : x가 메시지에서 나올 확률

- 확률에 로그를 취하면 음수가 되므로 앞에 -를 붙임

=> 셔넌 엔트로피 : 모든 사건 정보에 대한 기대값

 

 

 

정보량의 예시

- 메시지에 "가", "나"가 절반을 차지하는 경우

=> 두 단어가 차지하는 메시지의 정보량 = 1

- 불규칙성이 줄어들수록 정보량이 줄어든다.

 

300x250
728x90

기본적인  kaggle-api 내용들은 다음 링크 참고

 

teddylee777.github.io/kaggle/Kaggle-API-%EC%82%AC%EC%9A%A9%EB%B2%95

 

 

 

 

우선 코랩에서 구글드라이브  연동

 

 

 

 

 

캐글 설치 및 kaggle api 클론

 

 

현재 디랙토리, 버전 확인

 

 

api 만들기

 

 

google 드라이브에 저장

 

 

캐글 위치

/content/mnt/"My Drive"/kaggle.json 조기에 있다.

 

kaggle competetitions list 명령을 줫더니 /root/,kaggle에 없다고 안된다.

 

kaggle.json 옮기기고 명령어 주기

- 옮겻더니 잘 된다.

 

 

outdated api version 에러 발생

 

- 원인 : 오래된 대회걸 가져오려고 해서 그렇다.

다음 링크 참고하면, late submission 버튼을 눌러서 진행해주면 된다고한다.

 

https://github.com/Kaggle/kaggle-api/issues/87

 

 

 

 

오래된 캐글 대회 다운 확인

- late submission을 해줫더니 오래된것도 다운된다.

 

 

 

 

 

 

 

 

300x250
728x90

할일

- train/test 분리

- voting, bagging, boosting, stacking 차이

- xgboost, lightbgm 이해

 

 

과제

- seaborn의 anagrams, attention, car_crashes, diamonds_dots 분석

- train/test 분리, 앙상블

- 하이퍼파라미터 변경하며 train, test loss 비교

 

실습

- kaggle 자전거 공유 수요 데이터셋, train/validation 분할, 모델로 데이터 예측 후 submission format에 맞춰 csv 저장

- kaggle 샌프란시스코 범죄 데이터셋. train/validation 분할, 모델 예측 후 위와 동일

 

 

 

 

train_test_split

- 훈련, 테스트 데이터셋 분리

 

 

metric, score

- 모델 평가에 대한 측도

scikit-learn.org/stable/modules/model_evaluation.html

- classification : accuracy, f1, aoc, roc 등 사용

- clustering :  mutual info score, v measure score 등 사용

- regression : mean sqare error, r2 등 사용

 

 

 

 

 

앙상블 개요

- 회귀, 분류, 클러스터링에 다양한 모델들이 존재

- 여러 모델들을 사용하여 더 좋은 모델을 구하는 방법

- voting, bagging, boosting, stacking 등

 

앙상블 기법들

- voting : 여러 모델 중 최적의 모델을 보팅 해서 선정

- bagging (boostraping and aggregation) : 데이터 분할하여 각각의 모델에 학습하여 수렴.(수평)

- boosting : 약분류기들을 가중치 주면서, 수직으로 배치.

 -> adaboost, xgboost, lightdm 등

- stacking : 이전 분류기의 출력을 다음 분류기의 입력으로 사용. boosting과 유사

 

 

 

 

 

 

seaborn car crash (voting, vagging, xgboost)

1. 데이터 로드

- total, speeding, acholog, ...

- speeding, alcohol같이 이해되는 변수도 있지만 의미를 알기 힘든 변수들도 존재

 

 

 

3.3. Metrics and scoring: quantifying the quality of predictions — scikit-learn 0.23.2 documentation

3.3. Metrics and scoring: quantifying the quality of predictions There are 3 different APIs for evaluating the quality of a model’s predictions: Finally, Dummy estimators are useful to get a baseline value of those metrics for random predictions. 3.3.1.

scikit-learn.org

 

 

 

2. 시각화

- 데이터 프레임 플롯

- 지역별 알코올

 

- 지역별 속도

 

 

 

 

3. 데이터 분할과 결정트리 회귀 분석

 

- 라벨 인코딩

 

 

 

 

 

 

4. voting

- 분류기들 설정 및 학습

- train, test 데이터 별 스코어

 

- train 데이터, 예측 정도 plot

 

 

- 하이퍼 파라미터 n_estimator 별 score plot

 

 

 

5. bagging  - estimaotrs 갯수별 score

 

 

 

6.xgboost regression 

- estimator 갯수별 score

- 변수 중요도 plot : f0가 가장 중요한 변수

- speeding이 x0이므로 total 회귀에 가장 중요한 변수

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

santander product recommendation

- 이 고객이 향후 어떤 상품을 사용할까?

www.kaggle.com/c/santander-product-recommendation/overview

 

 

데이터 설명

www.kaggle.com/c/santander-product-recommendation/data

 

 

 

 

 

 

300x250
728x90

이전 실습과제

1. 주가 정보 크롤링 프로그램 작성 matplotlib과 seaborn을 이용해 csv jupyter그래프 표시

2. sysstat data를 dataframe으로 바꾸어서 동일하게 분석

필드 데이터 실습

 

* sysstat 성능 상황 기록

- sar 명령어로 10분간격 확인 가능

ref : platformengineer.tistory.com/46 (sysstat 사용법)

 

 

apt --installed list | grep sysstat

apt-get install sysstat -y

vi /etc/default/sysstat

ENABLED="false" -> "true"

service sysstat restart

/var/log/sysstat에서 확인 가능

 

 

 

----

1. colab 사용

2. git repo 와 colap연동

3. ml 기본코드 이해

4. sklearn 빌트인 모델 사용 코드 작성 regression, classification

 

 

과제

1. load_boston, load_innerud, fetch_california_housing 데이터 가져와 분석, 모델 선택하여 regression 학습

2. sysstat.data 를 dataframe으로 바꿔서 동일하게 분석하기

 

 

 

 

 

colab

- gpu 무료 제공

- jupyter notebook

 

 

 

colab과 깃랩연동

- 기존 .ssh파일 모든 사용자 r권한 주기

   chmod a+r ~/.ssh/*

- .ssh 아래 파일들 가져오기

 

* filzilla 사용

-  사이트 관리자에 sftp로 추가. 구글 클라우드 인스턴스 ppk, pem 사용하여 연결

blog.naver.com/PostView.nhn?blogId=appnada&logNo=221194916635&parentCategoryNo=&categoryNo=14&viewDate=&isShowPopularPosts=true&from=search

 

 

* scp의 경우

scp -i 키 계정@구글클라우드플랫폼주소:/home/디렉토리/파일 /home/옮길디렉토리

 

 

 

 

구글 드라이브 마운트 시키기

 

from google.colab import drive

import os, sys

drive.mount("/content/mnt")

nb_path="/content/notebooks"

os.symlink("/contnent/mnt/My Drive/Colab Notebooks", nb_path)

sys.path.insert(0, nb_path)

 

 

 

 

 

!cd /content/notebooks/

!git config --global user.name "name"

!git config --global user.email "email"

 

** 나는 /content/notebooks이 안되서 심볼릭 링크가 아니라 그냥 원본 폴더로 cd했다. 아래도 동일

!cd /content/mnt/My\ Drive/Colab\ Notebooks

-> 보니까 심볼릭 링크를 만들때 /contnent/mnt/My drive/ ...로 오타를 내서 잘못됫더라 고쳤더니 기존 코드대로 동작

 

!mkdir ~/.ssh

!cp /content/mnt/"My Drive"/id_rsa ~/.ssh

!cp /content/mnt/"My Drive"/id_rsa.pub ~/.ssh

!cp /content/mnt/"My Drive"/authorized_keys ~/.ssh

!cp /content/mnt/"My Drive"/known_hosts ~/.ssh

!ls ~/.ssh

 

 

!git clone 클론할 저장소 /content/notebooks/폴더명

 

 

# -C는 저장소 명시

!git -C /content/notebooks/****** add .

!git -C /content/notebooks/****** pull

!git -C /content/notebooks/****** status

!git -C /content/notebooks/******* commit -m "message"

!git -C /content/notebooks/****** push

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

------------------

server refused 문제

- 중간에 하다가 퍼블릭키 문제로 서버 거부가 발생

- 클라이언트 ppk와 서버의 pub가 매칭이 안됨 + 서버의 공개키가 없어져있었음.

 

- 아래 링크 참고하여 해결

 1. 푸티 키젠으로 새 pub, ppk 생성

 2. 서버 ssh에 새 pub 등록

 3. 웹으로 서버 접속하여 authorized_key에 새 pub 복붙

 4. sshd restart

 

opentutorials.org/module/432/3742

serverfault.com/questions/955843/putty-server-refused-our-key-google-cloud-platform-compute-engine-instance

 

---------------

 

 

 

 

 

 

1. load_boston, load_innerud, fetch_california_housing 데이터 가져와 분석, 모델 선택하여 regression 학습

 

 

 

california housing regression

1. 라이브러리 임포트

 

2. 데이터 준비하기

 

3. 데이터 확인

 

 

 

 

 

4. 회귀 모델 생성 학습, 예측, 시각화까지

 단순 선형 회귀 모델

 

 라쏘라르 모델

 

 

 

 

 

 

 

 

 

유방암 데이터셋 SVM으로 분류하기 

1. 라이브러리 임포트

 

2. 데이터 준비

 

 

 

 

 

3. SVM 학습, 분류, 시각화

 

 

 

 

 

 

 

 

 

 

 

300x250
728x90

목표

- 머신/딥러닝 기본 이론

- 데이터 취득, 분석

- matplotlib, seaborn 시각화 까지

* 숫자가 아닌 필드를 숫자로 바꾸어주자!!

 

 

 

 

빠트린거

- 볼륨 설정을 하는데 자꾸 permission denied 발생

 

 

 

 

도커 이미지 내의 

 

jovyan 폴더를 권한 777주는게 아니라

 

치프트키 님의 글을 보니 호스트 볼륨 폴더에 권한을 주어야되더라

 

chiftkey.tistory.com/3

 

 

일단 이 문재는 해결했고..

 

 

 

 

 

 

구글 클라우드 플랫폼에서 방화벽 포트도 열어주고

 

도커 런시 포트도 연결 시켜주었으나 페이지에 접속하지 못하고 있다

 

 

* 방화벽도 설정하고, jupyter 외부접속도 허용도하고

포트 포워딩도 다 했는데 왜안되나 했는더니

 

방화벽 규칙 대상을 

 

네트워크의 모든 인스턴스 적용을 안해놔서 그렇더라 

 

80 포트는 잘되는데 내가 만든 8888포트 허용 규칙이 왜안되나 했다

 

 

 

 

 

 

 

 

 docker run -p 8888:8888 --memory=2g -v ~/gitlab/ssac-pytorch-1st/exercise:/ds --name hello /jaimeps/rl-gym

 

 

 

sklearn dataset

- 아래 링크서 많이 제공

scikit-learn.org/stable/datasets/index.html

 

 

 

sklearn dataset 호출시

- load : simple data

- fetch : real world data

 

 

 

 

 

 

df.info()

- 데이터 별 개수와 타입

df.describe()

- 기술 통계량

 

 

df.plot()

- 데이터 프레임은 plot도 가능 

 

 

sns.pairplot(df)

- 변수간 모든 상관관계 plot

- 변수 자기 자신은 그냥 히스토그램 플롯

- target에 대해 hue 지정시

 

 

 

 

와인 데이터 연습

 

1. 데이터 로드

2. 데이터 정보 보기

3. 데이터 프레임 만들기

 

 

* 그룹별 크기 출력

 

4. 시각화

4.1 sns.pairplot(df)

 

 

 

 

 

 

 

300x250
728x90

 

 

지난번 수업을 들을때

 

구글 클라우드 플랫폼에서 가상 머신을 만들고

 

가상 머신에서 도커를 설치해서 이것저것을 했었는데

 

나는 계정 문제 때문에 가상머신 만드는 부분을 제대로 하지를 못했었다.

 

 

 

 

이제 와서 급하게 가상 머신을 만들고 ssh 키 등록해서 접속하는 방법을 

 

대충 검색해서 해봤다.

 

 

가상머신 만드는 방법은

 

마스터 서님의 글을 보고 참고해서 진행할 수 있었다.

 

brunch.co.kr/@topasvga/168

 

3년전의 글이긴 하지만 대부분 지금도 비슷하니 문제는 없었고 

 

 

 

 

 

조금 주의해야 하는 부분은

 

ssh키를 설정해 주어야 하는데

 

 

 

지난번 수업때 보니 

 

puttygen으로 개인키와 공개키를 만들어서 하더라

 

그런데 하는 방법은 생각 안나고 잠깐 찾아봣는데

 

kiseon님이 잘 정리해놓으신 글이 있었다.

 

medium.com/@kiseon_twt/gcp-putty-setup-%ED%95%98%EA%B8%B0-25c489e06059

 

이 글 참고해서 공개키 등록하고 가상머신 생성 후

 

푸티로 들어왔다.

 

 

 

 

안그래도 터미널을 잘 안쓰는데 iterm을 쓰다가

 

putty가 너무 밋밋하더라

 

한번 테마를 추가해보려고 조금 찾아봤다.

 

 

 

putty 테마 적용 방법에 대해서 

 

조길상 님이 잘 정리해놓으신 글이 있더라

 

m.blog.naver.com/jogilsang/221853657930

 

하면서 주의해야하는 점은

 

테마 적용전 만들어둔 세팅에는 적용이 안된다고 한다.

 

테마를 적용후 다시 인스턴스 세팅을 만들어서 저장해주자.

 

 

 

큰 차이가 있는지는 모르겠는데 아까보다는 나아보인다

 

 

 

도커를 설치해야되니

 

이전에 썻던 글을 보면서 하고

 

throwexception.tistory.com/986

* 정확히는 도커 공식 홈페이지를 보면서 ..

 

 

도커를 설치하는 중간에 순간 400mb나 된다고 해서 잠깐 놀랏다.

 

핫스팟으로 인터넷 사용 중이라 데이터 고갈되는게 아닌가 했는데

 

지금 구글 인스턴스에 접속해서 쓰고있는걸 잊고 있었다.

 

 

 

 

이미지 가져오고, 들어갓다가 나오기도 하고, 삭제하고

 

오랜만에 하면서 잘 생각은 안나지만

 

이전에 대충이나마 정리해둬서 다행이다 

 

 

 

 

---------

 

맥북이 있다보니 그래도 putty보다는 iterm으로 접속해서 사용하고 싶은데

 

지난번에 ppk를 어떻게 다룰지를 몰라서

 

제대로 찾지 못하고 한참 해맷었다.

 

blog.naver.com/windi97/220976620976

 

이 글을 참고해서 진행을 하는데

 

무슨 이유에서인지 putty부터 접속이 안되더라

 

일단 윈도우에서 ppk 만들었으니 여기서 pem을 만들고 내일 맥에서 써보려고 한다.

 

참고 : aws.amazon.com/ko/premiumsupport/knowledge-center/convert-pem-file-into-ppk/

 

 

 

 

 

 

300x250
728x90

실습 과제물...

 

1. fluentd와 몽고db로 로그 취합하는 시스템 구축

2. jupyter/datascience-notebook or jaimeps/rl-gym 등 데이터 사이언스 관련 컨테이너를 public cloud에서 구동하고 jupyter에서 접속한다.

3. pytorch를 설치한 이미지로 컨테이너를 구동한다.

 

 

 

 

www.docker.com/resources/what-container

 

도커란 무엇인가

 

 

컨테이너

- 의존성과 패키지코드가 함께 있는 추상화

- 각 머신처럼 동작 가능. os 커널은 공유

 

 

 

 

 

클라우드 컴퓨팅

- aws, 에저, 구글 클라우드 엔진

 => 구글 클라우드 엔진이 후함

 

console.cloud.google.com/

 

 

도커 설치하기 

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

 

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

 

 $ sudo apt-get update
 $ sudo apt-get install docker-ce

 

 

ref: docs.docker.com/engine/install/ubuntu/

 

Install Docker Engine on Ubuntu

 

docs.docker.com

 

 

 

도커에는

 

이미지와 컨테이너가 있다..

 

 

컨테이너 들어오기

 

docker run -i -t ubuntu:14.04

* -i : interactive

* -t : terminal

 

기존 환경에서 우분투 14.04 컨테이너로 들어왔다.

 

 

exit 명령의 경우 컨테이너 자체가 종료된다.

 

 

컨테이너

 

어플리케이션 실행하고 싶은데 실행하기 위한 공간

 

 

 

ctrl pq를 하면 다시 컨테이너 밖으로 나온다..

(exit와 달리 컨테이너 종료 x)

 

 

다시 캡처해서 보면

 

아까 컨테이너가 살아있다.

 

 

 

docker ps -a

exit 시킨 컨테이너도 나온다.

 

 

docker rm {id, name} 컨테이너 삭제하기.

 

 

삭제하려했더니 동작중이라 한다 

 

 

 

docker stop id/name

 

stop부터 해주고 다시 삭제

 

 

stoic_williamson 컨테이너 삭제 ok

 

 

 

 

centos 이미지 가져오기

 

docker pull centos:7

 

 

 

docker image ls

- 가지고 있는 이미지 목록 보기

-> 우분투 버전 14.04와 센토스 7이 추가되어있다.

 

 

docker run -it centos:latest

 

센토스 컨테이너에 들어왔다가

 

다시 컨트롤 pq로 나오자.

 

docker ps해보면 centos:latest가 돌아가고있다.

 

 

docker container prune

쓰지 않는 컨테이너 지우기

 

 

docker attach 아이디/이름 : 다시 컨테이너 들어가기

 

 

 

이미지 생성하기

docker create -it --name (이름) (기본 이미지;centos:latest)

 

 

 

다시 시작하기

docker start 이미지/id

 

 

 

 

 

 

웹서버 돌리기

 

컨테이너 80포트와 호스트 80포트 바인딩 시켜서 돌리기

 

 

 

컨테이너는 휘발성

 

이미지를 만들자.

 

놓침 ㅠㅠ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

도커 이미지

- 레지스트리에서 관리

 public, private, docker hub 같은대

 

 

 

 

 

wordpress 돌리기'

 

먼저 워드프레스용 db 부터 준비

 

mysql 돌리기, 환경변수도 다음과같이 수행

 

 

docker run -d --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=wordpress mysql:5.7 

 

 

 

'

https://hub.docker.com/_/mysql

 

 

wordpress db가 잘돌아가고있다..

 

 

 

 

'

 

 

 

이런식으로 컨테이너에 들어갈수도 있다.

 

docker exec -it wordpressdb /bin/bash

 

 

 

 

wordpress 컨테이너 돌리기

 

 

docker run -d -e WORDPRESS_DB_PASSWORD=password --name wordpress --link wordpressdb:mysql -p 80:80 wordpress 

 

 

 

 

wordpress와 wordpressdb가 잘 동작중..

 

 

 

 

 

 

 

워드프래스 페이지도 잘나온다.

 

 

 

둘다 종료하려면

 

docker rm -f wordpress wordpressdb

 

 

 

종료했다가 다시 실행하면 다날라간다..

 

 

컨테이너 -> 읽고 쓰기 가능

이미지 -> 안변함

 

이미지 추가, 삭제, 변경? => 사실 컨테이너에서 삭제, 추가, 변경됨. 컨테이너는 날라간다

 

컨테이너의 볼륨을 사용하도록 지정??

 

 

 

호스트의 볼륨을 공유 

-v 호스트 경로:컨테이너 경로

=> 호스트의 /home/wordpress_db에서 쓰면 컨테이너의 /var/lib/mysql이 반영

 

 docker run -d --name wordpressdb_hostvolume -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=wordpress -v /home/wordpress_db:/var/lib/mysql mysql:5.7

 

 

- 호스트 경로에 컨테이너의 파일이 공유

 

워드프래스도 돌리자

 

docker run -d -e WORDPRESS_DB_PASSWORD=password --name wordpress_hostname --link wordpressdb_hostvolume:mysql -p 80:80 wordpress

 

 

 

 

설정도 다하고 껏다 키면

 

원래 컨테이너 내용들은 다 사라져야 정상이지만

 

호스트 볼륨에 db를 저장해놔서 껏다 켜도 사라지지 않는다.

 

 

 

 

 

로그 처리보기

 

 docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=1234 mysql:5.7

는 잘실행되지만

 

 docker run -d --name no_password_mysql mysql:5.7

 

비밀번호를 주지않는 경우 ps가 존재하지 않는다.

 

 

docker logs 이름을 주면 로그가 나온다.

 

 

docker logs no_password_mysql을 하면

 

mysql_root_password를 안준게 문제라고 나온다.

 

 

 

 

 

컨테이너 정보보기

 

docker inspect 이름

 

 

 

도커 이미지 숙지하기

 

 

컨테이너는 날라가지만 이미지는 만들수있다.

 

 docker run -it --name commit_test ubuntu:14.04

 

컨테이너에서 파일하나 만들어주고 나오자

 

 

컨테이너는 동작중

 

 

 

 

이미지 만들기

 

docker commit -a "이름" -m "메시지" 컨테이너명 저장소:태그

 

 

 

 

 

 

 

 

과제하기

 

 

2. jupyter/datascience-notebook or jaimeps/rl-gym 등 데이터 사이언스 관련 컨테이너를 public cloud에서 구동하고 jupyter에서 접속한다.

 

 

도커허브에서 풀 커맨드 카피

 

 

 

이미지 다운받고

 

docker pull jupyter/datascience-notebook

 

 

 

 

 

주피터 이미지를 돌리고, 쉘로 들어가서 외부 접속을 허용시켜주자

주피터 설정 파일에 들어가서

 

 

#c.notebookapp.allow_origin="" 는 주석을 지우고 별표

c.notebookapp.allow_origin="*"

 

 

 

 

내가만든 이미지를 확인해보니 ip 주소가 172.17.0.2 이므로

 

8888포트로 들어갈수있도록 방화벽도 오픈하자.

 

 

토큰 안나오개 하려다 망해서 그냥 패스

 

---------------------------------------

 

 

 

 

 

 

 

 

 

 docker run -d -p 8888:8888 -v /home/jupyter:/home/jovyan/work --name juyter jaimeps/rl-gym

 

로그서 토큰보고 들어가자

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3. pytorch를 설치한 이미지로 컨테이너를 구동한다.

 

 정리하기 귀찬다.

 

 

jupyter/datasicn블라블라 컨테이너에들어가서

 

 

 

pip로 torch 설치

 

pip install torch

 

 

 

 

토치 설치된 컨테이너를 이미지로 만들어주자 docker commit

 

* docker commit -a "작성자" -m "메시지" 이미지만들패키지 [저장소명:태그]

docker commit -a "jdo" -m "add torch" jupyter jdo/jupyter:first

 

 

기존의 컨테이너는 지워주고

 

docker rm -f jupyter

 

 

 

 

새로 만든 이미지를 실행하자

 

docker run -d --name jupyter -p 8888:8888 -v /home/jupyter:/home/jovyan jdo/jupyter:first

 

 

주피터 컨테이너에 동작하면, 이 컨테이너의 배쉬 셸로 들어가자

 

docker exec -it jupyter /bin/bash

 

 

python 명령어로 python 인터프리터 실행

 

 

import torch

 

print(torch.__version__)

 

설치된 토치의 버전 확인까지 하면 끝 !

 

 

 

 

 

 

 

 

300x250
728x90

* 라즈베리파이3, stretch

 

라즈베리파이를 설치할때마다

 

잘 모르는 경우 별도로 모니터를 준비해서 사용하곤 합니다.

 

그나마 한글로는 ssh 접속에 대한 자료들은 있지만

 

 

 

 

 

sd카드에 파이 이미지를 굽고 나서

 

화면도 없고, 인터넷도 연결못하는 상태에서 어떻게 하는지에 대해서

 

우리나라에는 자료가 잘 없는것같습니다.

 

 

 

다음 자료들을 참고하여 작성하였습니다.

 

 

화면 없이 ssh 사용가능하게 하기

ref : https://howchoo.com/g/ote0ywmzywj/how-to-enable-ssh-on-raspbian-without-a-screen

 

이더넷 케이블없이 와이파이 접속되도록 설정하기

ref : https://howchoo.com/g/ndy1zte2yjn/how-to-set-up-wifi-on-your-raspberry-pi-without-ethernet

 

boot(드라이브)의 ssh와 wpa_supplicant.conf 파일이 계속 삭제됩니다

ref : https://raspberrypi.stackexchange.com/questions/85441/ssh-and-wpa-supplicant-conf-files-not-getting-deleted-on-boot

 

 

 

 

 

 

일단 저는 라즈비안 strech로 이미지를 우선 구웠습니다.

 

 

 

 

 

ssh 허용하기

- boot 드라이브(sd카드)에 이름이 ssh인 빈 파일을 만들어 주면 됩니다.

 

 

 

화면 없이 wifi 접속 시키기

1. 연결할 엑세스 포인트(공유기나 핫스팟)에 대한 정보를 wpa_supplicant.conf 파일을 만들어 적어주고

 

 

country=US
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="placeholder"
    psk="placeholder"
    scan_ssid=1
    key_mgmt=WPA-PSK
}

 

2. boot 드라이브(sd카드)에 넣으면 끝

 

 

 

* ssh 파일과 wpa_supplicant.conf를 만들었는데 연결은 안되고 이 파일들이 사라지는 경우

1. wpa_supplicant.conf 파일에서 액새스 포인트 정보를 잘못 입력한 경우

2. scan_ssid=1을 추가하여 한번 와이파이 스캔을 해주면 될것 같습니다.

 

 https://raspberrypi.stackexchange.com/questions/85441/ssh-and-wpa-supplicant-conf-files-not-getting-deleted-on-boot

 

 

 

 

 

 

이제 와이파이가 핫스팟(혹은 공유기)에 연결되었으면

 

ssh로 접속하면 됩니다.

 

디폴트 기본 아이디 및 비번 :  pi/raspberry

 

 

 

공유기는 공유기 설정 화면에서 접속한 장치들을 볼수 있지만

 

핫스팟은 어느 아이피로 접속한지 알수 없으니

 

지난번에 zumi에서 했던것 처럼 nmap으로 wifi 대역을 스캔해줍시다.

 

ref : throwexception.tistory.com/871

 

 

라즈베리파이가 할당받은 아이피 주소도 확인했으니 바로 ssh 접속

 

 

 

 

 

잘 접속 되었으니 이제 화면도 써야되겠죠.

 

vnc 설정도 enable해줍시다.

 

ref : throwexception.tistory.com/872

 

 

 

접속한 화면

 

이미 라즈베리파이4가 나온지 조금 됬지만

 

파이 제로만 사용하다가 파이3을 쓰니 날라간다

 

300x250

+ Recent posts