오라클 클라우드 VM 인스턴스에 ssh 접속을 합니다.

ssh access to oracle cloud vm instance

sudo -s 

위 명령어로 관리자 계정으로 전환 합니다.

change user and sudo

 

docker login을 입력 후 도커 허브 계정으로 로그인 해주세요.

type docker login to sign in to docker hub

 

 

docker 폴더를 만든 후 

create docker folder.

저는 docker-compose.yml 파일을 사용하기 때문에 해당 파일을 scp를 통해 인스턴스에게 전송합니다.

i use docker-compose thus i transfer that file using scp to my instance.

그럼 권한 문제가 발생하게되는데요.

docker 폴더는 ubuntu 유저에게는 쓰기 권한이 없기 때문입니다.

 

chmod 명령어로 docker 폴더의 쓰기권한을 모두 열림으로 전환합니다. (보안상에는 취약할 수 있습니다. ubuntu 유저에게는 쓰기 권한을 주는 것을 추천합니다.)

다시 scp를 실행하면

해당 docker-compose 파일이 정상적으로 들어와있는것을 알 수 있습니다.

docker-compose파일로 pull을 하게되면 해당 파일에 명시된 이미지들을 한번에 다 받을 수 있는데

docker-compose 명령어가 설치되어있지않다면 실행할 수 없습니다. 고로, 다운받아줍시다.

docs.docker.com/compose/install/#install-compose

 

Install Docker Compose

You can run Compose on macOS, Windows, and 64-bit Linux. Prerequisites Docker Compose relies on Docker Engine for any meaningful work, so make sure you have Docker Engine installed either...

docs.docker.com

 

우리는 리눅스이니까

sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

명령어를 실행 후

sudo chmod +x /usr/local/bin/docker-compose 

실행 시켜줍니다.

 

이쯤에서 VIM도 인스톨 해줍니다.

앞으로 항상 docker-compose, docker stack 명령어를 치긴 귀찮으니 엘리어스 등록을 해줍니다. vi ~/.bashrc

source ~/.bashrc

alias가 정상적으로 적용된 모습

이미지를 다운받고 있는 화면입니다.

docker swarm init 명령어로 스왐 모드를 활성화 시켜줍니다.

 

도커 스택을 배포하여줍니다.

만약에 docker-compose의 build 인자 하위에 context경로가 인스턴스에도 똑같이 구현되어있지않다면 에러가 발생할겁니다.

context에 ../folder가 있다면 인스턴스의 docker-compose.yml 기준으로 ../ 위치에도 folder가 위치해야합니다.

그럴 경우 build 옵션을 지워버리시거나 똑같이 폴더를 만들어주세요.

그럼 끝!

by 밑바닥에서 글로벌로~ 발전소장 에르 :) 2020. 9. 28. 22:15

logan.kr/365

 

오라클 클라우드 인스턴스의 포트열기 How to open instance's port of Oracle Cloud

logan.kr/364 앞서 오라클 인스턴스를 생성해보았는데요. Earlier, we created instace. 생성만 해놓고 내 어플리케이션을 배포못한다면 아무 의미가 없겠죠. but if we can't access to application that locate..

logan.kr

이제 우리는 인스턴스도 생성했고 인스터스에 접속하기 위한 포트도 열었습니다.

we opened instance port for accessing last time.

이제 도메인을 연결해볼까요?

now shall we connect our domain to instnace?

도메인 또는 도메인 네임(Domain name)은 넓게 보면 외우거나 식별하기 어려운 IP 주소(예:240.10.20.1)를 example.com 처럼 기억하기 쉽게 만들어주는 네트워크 호스트 이름을 의미하지만, 보통 루트 네임 서버(최상위 DNS서버 이며 IANA 에서 관리한다) 등록된 최상위 호스트 네임 및 각 최상위 호스트 네임을 관리하는 도메인 레지스트리에서 관리하는 하위 호스트 네임을 이르는 말이다.

출처: namu.wiki/w/도메인

일단 도메인을 구매해야합니다.

we need to purchase domain first..!

 

도메인 - 나무위키

URL: Uniform Resource Locator 도메인 등록대행업체. KR도메인의 경우 "등록대행자"라고 부른다. 널리 알려진 업체들이 대부분 여기에 속한다. 레지스트리(Registry)의 위탁을 받아 도메인을 등록 대행하는

namu.wiki

저는 가비아에서 도메인을 구입하여 사용합니다.

i purchased domain on gabia.com

my.gabia.com/service#/

가비아 로그인 후 서비스 관리 텝에 들어갑니다.

We are in Service manage tab on gabia website.

원하는 도메인의 관리툴을 선택해주세요.

please select 'manage tool' of the domain that you want to connect.

도메인 상세 페이지에 들어왔습니다.

we entered domain detail page

도메인 연결의 설정 버튼을 눌러주세요.

please click 'setting' button of domain connection

레코드 수정 버튼을 눌러줍니다.

레코드 수정 버튼을 눌러줍니다.

please click 'record edit' button.

우리 인스턴스의 퍼블릭 아이피를 연결합니다. 저는 KR0의 아이피를 입력했습니다.

we need to type one of our instances public ip. in my case i choose KR0's IP

그리고 저장을 눌러주세요.

then please click 'save'

 

모두 끝났습니다.

by 밑바닥에서 글로벌로~ 발전소장 에르 :) 2020. 9. 27. 08:23

 

logan.kr/364 앞서 오라클 인스턴스를 생성해보았는데요.

Earlier, we created instace.

생성만 해놓고 내 어플리케이션을 배포못한다면 아무 의미가 없겠죠.

but if we can't access to application that located in instance with specific port that we wnat.

이번엔 내 인스턴스에 접근할 수 있는 포트(port)를 뚫어줄 차례입니다.

now it's time to open instnace's port for accessing

인스턴스 디테일 화면입니다.

Instnace Detail에서 Virtual Cloud Network의 이름을 클릭합니다.

we are in Instance Details page.

please click name of Virtual Cloud Network

 

virtual cloud networks 메뉴에 진입했습니다.

Now we are in virtual cloud networks menu.

물론 다른 방법으로도 해당 메뉴에는 접근이 가능합니다.

obviosuly you can just easily type 'virtual cloud network' on serach tab to enter.

퍼블릭 서브넷 이름을 클릭해주세요.

please click 'Public Subnet' name

Security Lists의 Default_Security....를 클릭해주세요.

click 'Default_Security....'

Add Ingress Rules를 클릭해주시고

click 'Add Ingress Rules'

본인이 원하고자하는 포트를 뚫으시면 됩니다.

Now we can open the port that we want.

you need to write in DESTINATION PORT RANGE.

 

by 밑바닥에서 글로벌로~ 발전소장 에르 :) 2020. 9. 27. 06:30

오라클 메인 홈페이지 Oracle main Homepage

우측 3번째에 'Start your trial today'를 클릭해주세요.

Please click 'Start your trial today' button.

오라클 홈페이지 가입 홈페이지 Oracle cloud Page

'Start for Free'를 눌러 계정 생성을 시작합니다.

Click 'Start for Free' button to sign up if you don't have account.

oracle cloud console main

자 이제 오라클 클라우드 콘솔 메인페이지에 진입했습니다.!

we are in Oracle Cloud Conosle Main Page.

Create a VM instance

Create a VM instance 버튼을 클릭해줍니다.

please click 'Create a VM instance'

이름은 편하신대로 변경하시고 이제 이미지를 고를 차례인데요. 설정한 이름은 실제 인스턴스 내부에 영향을 끼치지 않습니다.

you can name your instance (this name won't affect any to your instnace)

저는 우분투 20.04 미니멀을 선택했습니다.

i choose Ubuntu 20.04 minimal.

ssh 접속을 위한 키 설정화면입니다.

you can setting ssh.

저는 제 퍼블릭 키를 붙여넣었습니다.

i uploaded my public ssh key file.

 

저는 2개의 인스턴스를 만들었는데요

i created two instances on purpose.

아래 2개는 삭제한 인스턴스를 의미합니다.

the state 'Terminated' means 'DELETED'

본인이 만든 인스턴스의 상태가 Provisioning이라면 조금 더 기다리시면 됩니다. 1~3분 소요됩니다.

instance state from Provisioning to Running would be taken 1~3 minutes.

인스턴스 디테일

만든 인스턴스의 디테일을 보고자하시면 인스턴스의 이름을 클릭하시면 됩니다.

click instnace name if you want to see detail.

자 정상적으로 생성이 되었으니, ssh 접속 여부를 확인해보아야겠죠?

now your instance is running thus you may want to check ssh-possible or not.

인스턴시 생성시에 넣었던 id_rsa.pub을 가진 터미널에서 ssh 접속을 시도합니다.(저는 iterm2를 좋아합니다..)

Open the terminal that has id_rsa.pub file that you uploaded when you create instance. (personally i like iterm2)

유저네임은 인스턴스 초기 유저 네임인 ubuntu를 넣어주셔야합니다.

user name is ubuntu as default.

ssh ubuntu@YOUR_IP_ADDRESS

문제 없이 샥- 들어가진다면 인스턴스 생성 성공!

if you can enter that it's success! 

by 밑바닥에서 글로벌로~ 발전소장 에르 :) 2020. 9. 27. 06:16
// Place your key bindings in this file to override the defaultsauto[]
[
{
"key": "cmd+1",
"command": "eslint.executeAutofix"
},
{
"key": "`",
"command": "editor.action.triggerSuggest",
"when": "editorTextFocus"
},
{
"key": "cmd+space",
"command": "-editor.action.triggerSuggest",
"when": "editorTextFocus"
},
{
"key": "`",
"command": "editor.action.triggerSuggest",
"when": "editorHasCompletionItemProvider && textInputFocus && !editorReadonly"
},
{
"key": "ctrl+space",
"command": "-editor.action.triggerSuggest",
"when": "editorHasCompletionItemProvider && textInputFocus && !editorReadonly"
}
]






{

"workbench.iconTheme": "material-icon-theme",
"workbench.colorTheme": "Default High Contrast",
"prettier.singleQuote": true,
"vtools.autoHideDelay": 0,
"vtools.autoHideSideBar": true,
"editor.snippetSuggestions": "none",
"vtools.autoHideBottomBar": true,
"javascript.preferences.quoteStyle": "single",
"window.zoomLevel": 0,
"explorer.confirmDelete": false,
"explorer.confirmDragAndDrop": false,
"javascript.updateImportsOnFileMove.enabled": "always",
"prettier.trailingComma": "all",
"eslint.packageManager": "yarn",
"prettier.jsxSingleQuote": true,
"git.autofetch": true,
"git.confirmSync": false,
"git.enableSmartCommit": true,
"liveshare.guestApprovalRequired": true,
"files.associations": {
"*.js": "javascriptreact"
},
"prettier.arrowParens": "always",
"prettier.jsxBracketSameLine": true,
"prettier.tabWidth": 4,
"workbench.colorCustomizations": {
"terminal.foreground": "#00FD61",
"terminalCursor.background": "#A5A2A2",
"terminalCursor.foreground": "#DB2D20",
"terminal.ansiBlack": "#090300",
"terminal.ansiBlue": "#01A0E4",
"terminal.ansiBrightBlack": "#5C5855",
"terminal.ansiBrightBlue": "#01A0E4",
"terminal.ansiBrightCyan": "#060a0c",
"terminal.ansiBrightGreen": "#01A252",
"terminal.ansiBrightMagenta": "#A16A94",
"terminal.ansiBrightRed": "#DB2D20",
"terminal.ansiBrightWhite": "#F7F7F7",
"terminal.ansiBrightYellow": "#FDED02",
"terminal.ansiCyan": "#B5E4F4",
"terminal.ansiGreen": "#01A252",
"terminal.ansiMagenta": "#A16A94",
"terminal.ansiRed": "#DB2D20",
"terminal.ansiWhite": "#A5A2A2",
"terminal.ansiYellow": "#FDED02"
}
}


by 밑바닥에서 글로벌로~ 발전소장 에르 :) 2019. 2. 19. 12:24

안녕하세요 발전소장 에르입니다. :)

이번에는 '이것이 *이다' 시리즈에서 C++ 시리즈 리뷰를 해볼려고합니다.


보통 프로그래밍을 처음 접할때

전공자는 C를 먼저, 비전공은 파이썬이나 자바로 처음 접하곤하는데요.

비전공이나 특이케이스로 객체지향 언어를 먼저 접하신분들의 고민은

근본적인 작동원리와 수동적 메모리관리에 대한 고민을 많이합니다.

게다가 자료구조나 포인터나 프로그래밍에 근본이 되는 개념에 대한

갈증을 많이들 호소하시곤합니다만,

저도 위와같은 부류 중 하나인지라 마침 좋은 기회에 접할 수 있게되었습니다.

기준 버전또한 최신 C++11버전을 반영하여 옛날 버전으로 공부해야하는 설움이 없습니다!

게다가 홀로 독학을 하시는 저같은 분들에게는 누군가의 도움이 '절실'할때가 있는데요,

그럴때는 카페에 가입해 자료든 질문이든 마음껏 할 수 있으니, 

독학시의 에러사항도 핸들링할 수 있겠네요.

또한 이 책은 학원과 대학교에서 교재로도 사용되고 있을정도이니,

믿고보는 '이것이 시리즈'라고 할 수도 있겠네요!

아마 누군가는 이 글을 읽으면서 굳이 왜 C++을 배워야하는것에 대한 의구심을 품고있을수도있습니다만,

저는 어셈블리까지는 찍고와야 그래도 어느정도 어떻게 돌아는가는지

어떤 아키텍쳐가 좋을지, 지금의 프로젝트가 레가시가 됬을때의 대처법이라던지..

하는 안목이 생긴다고 생각합니다.

다른 이견은 언제든지 환영입니다 :)


일단 저자에 대한 정보입니다.

최호성

2015 현재 삼성 SDS 멀티캠퍼스(현 크레듀 멀티캠퍼스)의 보안 분야 전임 교수이자 (주)프로토콜마스터 기술 이사로 재직 중이다. ‘개발자에게 은퇴란 없다’라는 신념으로 실무 개발과 집필, 강의에 모두 열정을 쏟고 있다. 비트 교육센터에서 C/C++ 강의를 했으며, 1992년 처음 C를 접한 후로 지금까지 C/C++를 이용한 응용 프로그램을 개발해왔다.
한국전자통신연구원과 옛 정보통신부가 주도한 온라인 게임 서버 성능 평가 시스템 등 다수의 기술 연구 용역과 국책 과제를 수행했고 SafeNET, TimeKeeper, CyberWALL 등 다수의 상용 소프트웨어를 개발했다. 윈도우 기반 보안 소프트웨어 분야에서도 다양한 개발 경험을 갖고 있다.
저서로는 『MFC 정복』 (가남사), 『윈도우 프로그래밍 기초/고급편』 (프리렉), 『Visual C++ 2008 MFC 윈도우 프로그래밍』 (프리렉), 『독하게 시작하는 C 프로그래밍』 (루비페이퍼)이 있다.

그리고 독자분들이 궁금해하실 목차입니다.

PART 01 C에서 C++로 문법 전환하기


CHAPTER 01 C와는 다른 C++
    1.1 C와 C++의 차이
    1.2 HelloWorld로 본 C++
    1.3 인스턴스와 입출력 흐름
    1.4 자료형
    1.5 메모리 동적 할당
    1.6 참조자 형식
    1.7 범위 기반 for문


CHAPTER 02 C++ 함수와 네임스페이스
    2.1 디폴트 매개변수
    2.2 함수 다중 정의
    2.3 인라인 함수
    2.4 네임스페이스
    2.5 식별자 검색 순서


PART 02 객체지향 프로그래밍


CHAPTER 03 클래스
    3.1 객체지향 프로그래밍 개요
    3.2 클래스 기본 문법
    3.3 생성자와 소멸자
    3.4 메서드
    3.5 정적 멤버


CHAPTER 04 복사 생성자와 임시 객체
    4.1 복사 생성자
    4.2 묵시적 변환
    4.3 임시 객체와 이동 시맨틱


CHAPTER 05 연산자 다중 정의
    5.1 연산자 함수란?
    5.2 산술 연산자
    5.3 대입 연산자
    5.4 배열 연산자
    5.5 관계 연산자
    5.6 단항 증감 연산자


PART 03 객체의 관계 규정과 설계


CHAPTER 06 상속 기본
    6.1 상속이란?
    6.2 메서드 재정의
    6.3 상속에서의 생성자와 소멸자


CHAPTER 07 상속 심화
    7.1 가상 함수
    7.2 가상 함수 테이블
    7.3 순수 가상 클래스
    7.4 상속과 형변환
    7.5 상속과 연산자 다중 정의
    7.6 다중 상속


CHAPTER 08 수평적 관계와 집합 관계
    8.1 friend
    8.2 집합 관계


PART 04 템플릿과 예외 처리 그리고 이후에 알아야 할 것


CHAPTER 09 템플릿
    9.1 클래스 템플릿
    9.2 템플릿 특수화
    9.3 클래스 템플릿과 상속
    9.4 스마트 포인터


CHAPTER 10 예외 처리
    10.1 try, throw, catch문
    10.2 스택 풀기
    10.3 메모리 예외 처리


CHAPTER 11 객체지향 주소록
    11.1 C 주소록 예제
    11.2 첫 번째: 기초 수준 객체화
    11.3 두 번째: 컨테이너 구현
    11.4 세 번째: 반복자 구현
    11.5 번외편


CHAPTER 12 못 다한 이야기와 앞으로 해야 할 것
    12.1 STL 맛보기
    12.2 람다식과 함수 객체
    12.3 앞으로 배워야 할 것






by 밑바닥에서 글로벌로~ 발전소장 에르 :) 2018. 9. 17. 00:52


실무자로써, 업무 외의 기술에 대해 많은 공부를 희망하지만 여건이 안되시는분들

네, 저와 같으십니다.

그렇다고 미루기만하면 해결되는것은 아무것도없고 그래서 말나온김에 "쇠뿔도 단김에 빼라"고 책을 지르고는

퇴근 후 집에서 1~2시간 책을 잡고 공부를 하는데 세상에나, 심효섭씨 번역에 무릎을 '탁'치며

재밌게 따라가는중입니다.

미래의 독자분들이 가장 많이들어보셨을 ' 블록체인, 이더리움, 비트코인 '에 대해 명확히 개념을 잡아주며

왜 블록체인을 금융권에서 반기는가? 왜 가치가 있는가? 우리가 현재 사용하고있는 공인 인증서가 얼마나 무능한가!

블록체인이 어떻게 공인인증서를 대체할수있으며 신뢰성 있는가!에 대해 잘 설명해주고있다.

다 이 책의 저자인 '다고모리 데루히로'와 번역하신 심효섭씨의 결과물이지싶다.

여건만 된다면 해당 분야 공부를 더 심도깊이하며 이직도 생각해보고싶을정도 매력있는 기술이다.

마치, RPG게임에서 새로운 아이템이 나왔는데 그 아이템이 현존 최강이라 모두가 가지고싶어하는...느낌마저든다(심지어 공공재다!)

이 책을 살까..말까..하는 독자들에게 감히 추천한다.

'당신은 언제까지 그곳에 얽매어있을것인가, 현실에 안주하여 미래의 나 따위 지금의 나로 만족한다고 무기력하게 자기합리화만 하는 중인가,
자신에게 질문을 던져보고 잘 생각해보길바란다.'


필자의 말이 의심스럽고 잘 와닿지않는다면 아래의 링크를 방문해보는것을 추천한다.


교보문고 바로가기

한빛미디어 바로가기

나무위키 (블록체인) 바로가기

by 밑바닥에서 글로벌로~ 발전소장 에르 :) 2018. 7. 11. 10:20
독자는 개발할때 주로 mysql을 쓴다.
하지만 제일 먼저 접했던 DB는 오라클이었다.
영향력이 큰만큼 ( 이번에 구글과의 소송에서만 보더라도..)
내가 싫든 좋든 알고는 있어야되는 녀석이기 떄문에 언젠가 다시 한번 공부하리라는 마음 가짐은 가지고있었으나,
적정한 떄가 없었다.

마침 좋은 기회로 오라클책을 손에 넣으면서 :)
다시금 공부하고자하는 의지를 불태웠고
그 결과를 포스팅해보고자한다.

개인적으로 이것이 시리즈에서 오라클 표지가 가장 이쁘긴한것같다 ㅋㅋㅋㅋㅋㅋ

목차를 보더라도 굉장히 세심하게 잘 적어놓은 것을 알 수가있다.

    한빛미디어의 노고가 보이는 부분이다.

=============================================================================

개인적인 의견를 적어보자면


DBMS의 기초부터 PHP연동과 ORACLE의 고급 부분까지 처음부터 끝까지 숟가락으로 벌려 들어간다.! 라는 느낌으로 먹여주는 느낌이다.
다만 독자가 입을 열고 씹을 줄 아는 능력이 있어야 가능하겠지만.
본인의 경우에는 Oracle보다는 Mysql을 더 선호하는 편이지만.
한쪽에만 치우칠수없기에 선택한 책이지만.
역시 믿고 보는 한빛미디어답게. 
본인 맘에 쏙 들었음과 인터넷에서는 쉽게 접할 수 없는 적을 수 없는 고급 정보들까지.
이력서에 " 저 오라클 좀 만집니다" 라고 당당히 적을 수 있을 것 같다. :)

=================================================
책의 리뷰나 자세한 목차가 궁금하다면 아래 링크로 들어가보라.





by 밑바닥에서 글로벌로~ 발전소장 에르 :) 2018. 4. 12. 12:41


강화학습은 지도학습과 비지도학습과는 달리 에이전트에게 주어진 환경에 대해 행위를 취하고 보상을 얻으면서 학습을 하기 때문에 조금은 다른 시각으로 바라 볼 필요가 있다. 

한빛미디어의 <강화학습 첫걸음>의 1장은 주요 알고리즘 및 구현으로 되어있고, 2장은 심화 주제로 나뉘어져 있다. 각 주요 알고리즘들의 개념들을 소개하고 이에 따른 알고리즘을 소개하고 있다. 다른 딥러닝 책들은 개념만 소개하거나, 코드의 일부만 주고 소개를 하는 책들이 있는데 이런 책들과는 달리 통으로 된 코드를 주요 개념에 따라서 나누고, 나누어진 코드 마다 세부적인 설명을 하였고, 또한 글로 풀어내기 어려운 개념은 복잡하지 않은 간단 명료한 그림과 함께 설명하고 있어서 강화학습을 처음 적용하는 필자에게 많은 도움이 되었다. 

강화학습의 개념과 주요 알고리즘을 수록한 이 책의 구현은 주피터 노트북 환경의 파이썬 코드로 구성 되어있고, 텐서플로 기반으로 예제가 수록되어 있다.

강화학습 첫걸음 책은 핸드북으로 들고다니기에 좋은 사이즈여서 강화학습 개념을 간단하게 잡고 싶을 때 훑어보기에 좋은 책이다. 코드를 실제 문제에 적용하는 것이 아니라 학문적으로 먼저 접근하고 싶은 사람들이 더 깊은 내용을 공부하고자 한다면 각 페이지 하단에 참고문헌들이 잘 정리되어있기 때문에 이를 참고하여 더 깊은 내용을 학습 할 수 있다. 

제일 좋았던 점은, 각 내용에 대한 참고할 만한 좋은 사이트 및 최근 발표된 주요 논문들의 링크를 포함하고 있다는 것이다. 이는 간단하게 살펴보고자 하는 독자들도 고려하고, 세세하고 깊은 내용이 필요한 독자들까지 고려하였다. 

이 책에서는 텐서플로우 기반의 파이썬 코드로 수록이 되어 있으나 텐서플로우 기본 함수에 대한 자세한 설명은 수록되어있지 않다. 그렇기 때문에 이 책에서는 대상 독자를 신경망과 경사하강법 등 머신러닝 기술에 어느 정도 익숙한 독자를 대상으로 한정하였다. 

그렇기 때문에 딥러닝에 어느정도 익숙한 사람들에게 이 책을 추천한다.




by 밑바닥에서 글로벌로~ 발전소장 에르 :) 2018. 3. 7. 22:59

지난 시간동안 우리는 하둡을 설치와 예제 실현을 통해 정상적으로 인스톨됨을 확인한 바가 있다.

2018/02/10 - [프로그래밍발전소 ♫/Hadoop발전소♫] - OSX에 Hadoop 설치하기 (ver 1)

2018/02/11 - [분류 전체보기] - OSX에 Hadoop 설치하기 (ver 2)

이번에는 하둡용 어플을 만들어보기전에 우리가 지지고볶고 해야될 데이터가 필요하기 때문에

데이터를 다운받아보도록합시다. 

stat-computing.org에서 Download the Data를 클릭하시고~

그럼 1987~2008까지의 데이터들을 다운받아야겠죠? 허나 수기로 일일이 다운받는다면..

무슨 프로그래밍하는 사람의로써의 의미가 있겠습니까..

저번에 써먹었던 wget 명령어를 활용해 쉘을 만들어봅시다.


  1 #!/bin/sh

  2 

  3 for((i=1987; i<=2009;i++))

  4 do

  5 wget http://stat-computing.org/dataexpo/2009/${i}.csv.bz2

  6 done

~                                                                               

~                                                                               

~                                                                               

~                                                                               

위에같이 for문으로 1987~2009까지 지정해주고 wget메소드를 활용하고 중간에 파라미터를 집어넣어서 저 쉘을 실행시키면 

설정해준 기간까지의 데이터를 다운받게끔 진행합시다.  실행하기전에 chmod 777로 실행권한을 줘야합니다.                                                                              

==================================================================================================


~                                        

LoganLeeui-MacBook-Pro:hadoop Logan$ ./download.sh 

--2018-02-11 14:54:05--  http://stat-computing.org/dataexpo/2009/1987.csv.bz2

Resolving stat-computing.org... 54.231.168.223

Connecting to stat-computing.org|54.231.168.223|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 12652442 (12M) [application/x-bzip2]


Saving to: '1987.csv.bz2'


1987.csv.bz2           100%[============================>]  12.07M  18.1MB/s    in 0.7s    


2018-02-11 14:54:07 (18.1 MB/s) - '1987.csv.bz2' saved [12652442/12652442]


--2018-02-11 14:54:07--  http://stat-computing.org/dataexpo/2009/1988.csv.bz2

Resolving stat-computing.org... 54.231.168.223

Connecting to stat-computing.org|54.231.168.223|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 49499025 (47M) [application/x-bzip2]

Saving to: '1988.csv.bz2'


1988.csv.bz2           100%[============================>]  47.21M   305KB/s    in 69s     


2018-02-11 14:55:16 (701 KB/s) - '1988.csv.bz2' saved [49499025/49499025]


--2018-02-11 14:55:16--  http://stat-computing.org/dataexpo/2009/1989.csv.bz2

Resolving stat-computing.org... 52.218.200.91

Connecting to stat-computing.org|52.218.200.91|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 49202298 (47M) [application/x-bzip2]

Saving to: '1989.csv.bz2'


1989.csv.bz2           100%[============================>]  46.92M   712KB/s    in 32s     


2018-02-11 14:55:49 (1.45 MB/s) - '1989.csv.bz2' saved [49202298/49202298]


--2018-02-11 14:55:49--  http://stat-computing.org/dataexpo/2009/1990.csv.bz2

Resolving stat-computing.org... 52.218.208.107

Connecting to stat-computing.org|52.218.208.107|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 52041322 (50M) [application/x-bzip2]

Saving to: '1990.csv.bz2'


1990.csv.bz2           100%[============================>]  49.63M  1.79MB/s    in 21s     


2018-02-11 14:56:11 (2.36 MB/s) - '1990.csv.bz2' saved [52041322/52041322]


--2018-02-11 14:56:11--  http://stat-computing.org/dataexpo/2009/1991.csv.bz2

Resolving stat-computing.org... 54.231.168.215

Connecting to stat-computing.org|54.231.168.215|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 49877448 (48M) [application/x-bzip2]

Saving to: '1991.csv.bz2'


1991.csv.bz2           100%[============================>]  47.57M   555KB/s    in 71s     


2018-02-11 14:57:23 (686 KB/s) - '1991.csv.bz2' saved [49877448/49877448]


--2018-02-11 14:57:23--  http://stat-computing.org/dataexpo/2009/1992.csv.bz2

Resolving stat-computing.org... 52.218.201.35

Connecting to stat-computing.org|52.218.201.35|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 50040946 (48M) [application/x-bzip2]

Saving to: '1992.csv.bz2'


1992.csv.bz2           100%[============================>]  47.72M  1.67MB/s    in 23s     


2018-02-11 14:57:46 (2.08 MB/s) - '1992.csv.bz2' saved [50040946/50040946]


--2018-02-11 14:57:46--  http://stat-computing.org/dataexpo/2009/1993.csv.bz2

Resolving stat-computing.org... 54.231.168.167

Connecting to stat-computing.org|54.231.168.167|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 50111774 (48M) [application/x-bzip2]

Saving to: '1993.csv.bz2'


1993.csv.bz2           100%[============================>]  47.79M   716KB/s    in 68s     


2018-02-11 14:58:55 (722 KB/s) - '1993.csv.bz2' saved [50111774/50111774]


--2018-02-11 14:58:55--  http://stat-computing.org/dataexpo/2009/1994.csv.bz2

Resolving stat-computing.org... 52.218.193.179

Connecting to stat-computing.org|52.218.193.179|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 51123887 (49M) [application/x-bzip2]

Saving to: '1994.csv.bz2'


1994.csv.bz2           100%[============================>]  48.75M   761KB/s    in 27s     


2018-02-11 14:59:22 (1.80 MB/s) - '1994.csv.bz2' saved [51123887/51123887]


--2018-02-11 14:59:23--  http://stat-computing.org/dataexpo/2009/1995.csv.bz2

Resolving stat-computing.org... 54.231.184.167

Connecting to stat-computing.org|54.231.184.167|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 74881752 (71M) [application/x-bzip2]

Saving to: '1995.csv.bz2'


1995.csv.bz2           100%[============================>]  71.41M   938KB/s    in 87s     


2018-02-11 15:00:51 (839 KB/s) - '1995.csv.bz2' saved [74881752/74881752]


--2018-02-11 15:00:51--  http://stat-computing.org/dataexpo/2009/1996.csv.bz2

Resolving stat-computing.org... 52.218.200.99

Connecting to stat-computing.org|52.218.200.99|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 75887707 (72M) [application/x-bzip2]

Saving to: '1996.csv.bz2'


1996.csv.bz2           100%[============================>]  72.37M  2.15MB/s    in 56s     


2018-02-11 15:01:48 (1.28 MB/s) - '1996.csv.bz2' saved [75887707/75887707]


--2018-02-11 15:01:48--  http://stat-computing.org/dataexpo/2009/1997.csv.bz2

Resolving stat-computing.org... 52.218.192.235

Connecting to stat-computing.org|52.218.192.235|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 76705687 (73M) [application/x-bzip2]

Saving to: '1997.csv.bz2'


1997.csv.bz2           100%[============================>]  73.15M   976KB/s    in 39s     


2018-02-11 15:02:27 (1.87 MB/s) - '1997.csv.bz2' saved [76705687/76705687]


--2018-02-11 15:02:27--  http://stat-computing.org/dataexpo/2009/1998.csv.bz2

Resolving stat-computing.org... 52.218.128.15

Connecting to stat-computing.org|52.218.128.15|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 76683506 (73M) [application/x-bzip2]

Saving to: '1998.csv.bz2'


1998.csv.bz2           100%[============================>]  73.13M   249KB/s    in 2m 8s   


2018-02-11 15:04:36 (585 KB/s) - '1998.csv.bz2' saved [76683506/76683506]


--2018-02-11 15:04:36--  http://stat-computing.org/dataexpo/2009/1999.csv.bz2

Resolving stat-computing.org... 52.218.193.219

Connecting to stat-computing.org|52.218.193.219|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 79449438 (76M) [application/x-bzip2]

Saving to: '1999.csv.bz2'


1999.csv.bz2           100%[============================>]  75.77M  1.59MB/s    in 53s     


2018-02-11 15:05:30 (1.43 MB/s) - '1999.csv.bz2' saved [79449438/79449438]


--2018-02-11 15:05:30--  http://stat-computing.org/dataexpo/2009/2000.csv.bz2

Resolving stat-computing.org... 52.218.192.211

Connecting to stat-computing.org|52.218.192.211|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 82537924 (79M) [application/x-bzip2]

Saving to: '2000.csv.bz2'


2000.csv.bz2           100%[============================>]  78.71M  2.95MB/s    in 62s     


2018-02-11 15:06:32 (1.28 MB/s) - '2000.csv.bz2' saved [82537924/82537924]


--2018-02-11 15:06:32--  http://stat-computing.org/dataexpo/2009/2001.csv.bz2

Resolving stat-computing.org... 52.218.144.59

Connecting to stat-computing.org|52.218.144.59|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 83478700 (80M) [application/x-bzip2]

Saving to: '2001.csv.bz2'


2001.csv.bz2           100%[============================>]  79.61M   539KB/s    in 5m 14s  


2018-02-11 15:11:47 (259 KB/s) - '2001.csv.bz2' saved [83478700/83478700]


--2018-02-11 15:11:47--  http://stat-computing.org/dataexpo/2009/2002.csv.bz2

Resolving stat-computing.org... 54.231.168.163

Connecting to stat-computing.org|54.231.168.163|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 75907218 (72M) [application/x-bzip2]

Saving to: '2002.csv.bz2'


2002.csv.bz2           100%[============================>]  72.39M   778KB/s    in 2m 12s  


2018-02-11 15:14:00 (560 KB/s) - '2002.csv.bz2' saved [75907218/75907218]


--2018-02-11 15:14:00--  http://stat-computing.org/dataexpo/2009/2003.csv.bz2

Resolving stat-computing.org... 52.218.192.59

Connecting to stat-computing.org|52.218.192.59|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 95326801 (91M) [application/x-bzip2]

Saving to: '2003.csv.bz2'


2003.csv.bz2            66%[==================>          ]  60.82M  1.14MB/s    eta 14s

// 보시는것과 같이 다운로드가 진행되고있음을 알 수 있습니다. 압축형식은 bz2 형식이네요/.




==================================================================================================


이제 압축을 풀어봅시다.

 bzip2 -d *.bz2

LoganLeeui-MacBook-Pro:original Logan$ ls

1987.csv 1990.csv 1993.csv 1996.csv 1999.csv 2002.csv 2005.csv 2008.csv

1988.csv 1991.csv 1994.csv 1997.csv 2000.csv 2003.csv 2006.csv

1989.csv 1992.csv 1995.csv 1998.csv 2001.csv 2004.csv 2007.csv

일단 명령어를 실행하면 시간이 걸립니다.
터미널 텝을 열어 확인해본다면, 풀리고 있는 중이라는 걸 아실수있습니다.

==================================================================================================

 head -n 10 1987.csv 

Year,Month,DayofMonth,DayOfWeek,DepTime,CRSDepTime,ArrTime,CRSArrTime,UniqueCarrier,FlightNum,TailNum,ActualElapsedTime,CRSElapsedTime,AirTime,ArrDelay,DepDelay,Origin,Dest,Distance,TaxiIn,TaxiOut,Cancelled,CancellationCode,Diverted,CarrierDelay,WeatherDelay,NASDelay,SecurityDelay,LateAircraftDelay

1987,10,14,3,741,730,912,849,PS,1451,NA,91,79,NA,23,11,SAN,SFO,447,NA,NA,0,NA,0,NA,NA,NA,NA,NA

1987,10,15,4,729,730,903,849,PS,1451,NA,94,79,NA,14,-1,SAN,SFO,447,NA,NA,0,NA,0,NA,NA,NA,NA,NA

1987,10,17,6,741,730,918,849,PS,1451,NA,97,79,NA,29,11,SAN,SFO,447,NA,NA,0,NA,0,NA,NA,NA,NA,NA

1987,10,18,7,729,730,847,849,PS,1451,NA,78,79,NA,-2,-1,SAN,SFO,447,NA,NA,0,NA,0,NA,NA,NA,NA,NA

1987,10,19,1,749,730,922,849,PS,1451,NA,93,79,NA,33,19,SAN,SFO,447,NA,NA,0,NA,0,NA,NA,NA,NA,NA

1987,10,21,3,728,730,848,849,PS,1451,NA,80,79,NA,-1,-2,SAN,SFO,447,NA,NA,0,NA,0,NA,NA,NA,NA,NA

1987,10,22,4,728,730,852,849,PS,1451,NA,84,79,NA,3,-2,SAN,SFO,447,NA,NA,0,NA,0,NA,NA,NA,NA,NA

1987,10,23,5,731,730,902,849,PS,1451,NA,91,79,NA,13,1,SAN,SFO,447,NA,NA,0,NA,0,NA,NA,NA,NA,NA

1987,10,24,6,744,730,908,849,PS,1451,NA,84,79,NA,19,14,SAN,SFO,447,NA,NA,0,NA,0,NA,NA,NA,NA,NA

파일을 살펴보면 1줄에 각각의 데이터가 무엇을 의미하고있는지를 가지고 있습니다.
허나, 데이터 처리과정 중에 에러를 야기할 수 있는 사항이기 때문에 지우도록합시다.

==================================================================================================

1987~2008의 파일들을 만져야하니 커맨드 한줄로도 가능하긴합니다. 
sed -e '1d' *.csv > *_modified.csv  처럼...(하지만 이렇게 진행한다면, 제대로 진행되지않습니다. 궁금하신분들은 직접한번!)
허나 추후에 재사용을 위해 쉘을 만들어줍니다.

1 #!/bin/sh

  2 

  3 for((i=1987; i<=2008; i++))

  4 do

  5     sed -e '1d' ${i}.csv > ${i}_modi.csv

  6 done

실행후에 디렉토리를 살펴봅시다.

==================================================================================================

 ls

1987.csv      1991.csv      1995.csv      1999.csv      2003.csv      2007.csv

1987_modi.csv 1991_modi.csv 1995_modi.csv 1999_modi.csv 2003_modi.csv 2007_modi.csv

1988.csv      1992.csv      1996.csv      2000.csv      2004.csv      2008.csv

1988_modi.csv 1992_modi.csv 1996_modi.csv 2000_modi.csv 2004_modi.csv 2008_modi.csv

1989.csv      1993.csv      1997.csv      2001.csv      2005.csv      sed.sh

1989_modi.csv 1993_modi.csv 1997_modi.csv 2001_modi.csv 2005_modi.csv

1990.csv      1994.csv      1998.csv      2002.csv      2006.csv

1990_modi.csv 1994_modi.csv 1998_modi.csv 2002_modi.csv 2006_modi.csv


짜잔,
==================================================================================================

이제 원본유지를 위해 나누어줍시다.

ls

1987_modi.csv 1991_modi.csv 1995_modi.csv 1999_modi.csv 2003_modi.csv 2007_modi.csv

1988_modi.csv 1992_modi.csv 1996_modi.csv 2000_modi.csv 2004_modi.csv 2008_modi.csv

1989_modi.csv 1993_modi.csv 1997_modi.csv 2001_modi.csv 2005_modi.csv

1990_modi.csv 1994_modi.csv 1998_modi.csv 2002_modi.csv 2006_modi.csv

==================================================================================================

hadoop fs -mkdir input


hdfs에 데이터를 집어넣을 폴더를 만들어줍니다.

==================================================================================================


fs -put ~/dataexpo/original/*.csv input

LoganLeeui-MacBook-Pro:~ Logan$ hadoop fs -ls

Found 4 items

drwxr-xr-x   - Logan supergroup          0 2018-02-10 19:52 /user/Logan/conf

drwxr-xr-x   - Logan supergroup          0 2018-02-14 03:07 /user/Logan/input

drwxr-xr-x   - Logan supergroup          0 2018-02-10 19:52 /user/Logan/output_

drwxr-xr-x   - Logan supergroup          0 2018-02-11 09:38 /user/Logan/output_2

명령어로 hdfs에 업로드해봅시다. 

==================================================================================================

hadoop fs -lsr

drwxr-xr-x   - Logan supergroup          0 2018-02-15 15:01 /user/Logan/input

-rw-r--r--   1 Logan supergroup  127162642 2018-02-15 15:00 /user/Logan/input/1987_modi.csv

-rw-r--r--   1 Logan supergroup  501039172 2018-02-15 15:00 /user/Logan/input/1988_modi.csv

-rw-r--r--   1 Logan supergroup  486518521 2018-02-15 15:00 /user/Logan/input/1989_modi.csv

-rw-r--r--   1 Logan supergroup  509194387 2018-02-15 15:00 /user/Logan/input/1990_modi.csv

-rw-r--r--   1 Logan supergroup  491209793 2018-02-15 15:00 /user/Logan/input/1991_modi.csv

-rw-r--r--   1 Logan supergroup  492313431 2018-02-15 15:00 /user/Logan/input/1992_modi.csv

-rw-r--r--   1 Logan supergroup  490753352 2018-02-15 15:00 /user/Logan/input/1993_modi.csv

-rw-r--r--   1 Logan supergroup  501558365 2018-02-15 15:00 /user/Logan/input/1994_modi.csv

-rw-r--r--   1 Logan supergroup  530751268 2018-02-15 15:00 /user/Logan/input/1995_modi.csv

-rw-r--r--   1 Logan supergroup  533922063 2018-02-15 15:00 /user/Logan/input/1996_modi.csv

-rw-r--r--   1 Logan supergroup  540347561 2018-02-15 15:00 /user/Logan/input/1997_modi.csv

-rw-r--r--   1 Logan supergroup  538432575 2018-02-15 15:00 /user/Logan/input/1998_modi.csv

-rw-r--r--   1 Logan supergroup  552925722 2018-02-15 15:00 /user/Logan/input/1999_modi.csv

-rw-r--r--   1 Logan supergroup  570151313 2018-02-15 15:00 /user/Logan/input/2000_modi.csv

-rw-r--r--   1 Logan supergroup  600411162 2018-02-15 15:00 /user/Logan/input/2001_modi.csv

-rw-r--r--   1 Logan supergroup  530506713 2018-02-15 15:01 /user/Logan/input/2002_modi.csv

-rw-r--r--   1 Logan supergroup  626744942 2018-02-15 15:01 /user/Logan/input/2003_modi.csv

-rw-r--r--   1 Logan supergroup  669878813 2018-02-15 15:01 /user/Logan/input/2004_modi.csv

-rw-r--r--   1 Logan supergroup  671026965 2018-02-15 15:01 /user/Logan/input/2005_modi.csv

-rw-r--r--   1 Logan supergroup  672067796 2018-02-15 15:01 /user/Logan/input/2006_modi.csv

-rw-r--r--   1 Logan supergroup  702877893 2018-02-15 15:01 /user/Logan/input/2007_modi.csv

-rw-r--r--   1 Logan supergroup  689413044 2018-02-15 15:01 /user/Logan/input/2008_modi.csv



-lsr로 확인해보고 이상이 없으면 클리어!

by 밑바닥에서 글로벌로~ 발전소장 에르 :) 2018. 2. 15. 15:03
| 1 2 3 4 ··· 6 |