// 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.02.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.09.17 00:52


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

네, 저와 같으십니다.

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

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

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

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

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

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

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

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

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

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

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


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


교보문고 바로가기

한빛미디어 바로가기

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

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

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

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

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

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

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

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


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

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





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


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

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

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

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

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

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

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




by 밑바닥에서 글로벌로~ 발전소장 에르 :) 2018.03.07 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.02.15 15:03

사양이 괜찮던 데스크탑에서 우분투 가상환경로 하둡 공부를 했었는데, 

수료 후에 집에 있는건 맥북 뿐인지라... 맥북에서라도 하둡을 공부하고자하여 설치할려고 했었으나

brew로 인스톨 시 알수없는 에러 때문에 무한히 삽질하다가,,, 다른 방법을 찾아 블로그에 기록으로 남겨

나와 같은 고통받는 사람이 그나마 좀 적었으면 하는 바람이다.

필자는 하둡1을 다운받을 예정이다.

(필자는 이미 설치를 완료하였기 때문에 이점을 유의하고 진행하길 바란다.)

(하둡 환경변수 또한 이미 설정되어있다.)


http://apache.tt.co.kr/hadoop/common/stable1/

위 주소에서 하둡을 다운받을 수 있다.

hadoop-1.2.1.tar.gz 링크의 주소를 복사해서 터미널에서 진행한다.


터미널에서 wget 명령어를 통해 해당 링크의 아이템을 다운받는데 물론 마우스클릭으로 받아도 상관은 없다.


쭈루루룩... 다운이 받아지는 중이고 

결과품은 홈 디렉토리에 위치하고있을것이다.

이제 압축을 풀어보자 

tar xzvf hadoop-1.2.1.tar.gz  

압축을 풀면 

hadoop-1.2.1이라는 폴더가 생기고

이 폴더에 심볼로 hadoop을 생성해주자

ln -s hadoop-1.2.1 hadoop

(이유는 나중에 환경변수 등등 일일이 -1.2.1을 타이핑해주기 귀찮기 때문에...)

자 이제 하둡설치가 끝났다.!

그럼 이제 환경설정을 담당해야한다.

하둡에는 3가지 모드가 있다.


●독립모드(Standalone mode) 

 데몬 프로세스가 동작하지 않고, 모든것이 단독 JVM 내에서 동작. 개발하는 동안 맵리듀스 프로그램을 동작시키기에 적합한데, 테스트 및 디버깅이 용이.

●가상분산모드(Pseudo-distributed mode) 

 하둡 데몬 프로세스가 로컬컴퓨터에서 동작하므로 작은 규모의 클러스터를 시뮬레이트 할 수 있다.

●완전분산모드(Fully distributed mode)

 하둡 데몬프로세스는 다수 컴퓨터로 구성된 그룹에서 동작한다.




독립모드에서는 hdfs가 필요없고 로컬에서 바로 진행된다.

우리는 몇대의 컴퓨터가 집에 있는 것도아니고 하둡에 대해 잘알아서 테스트 디버깅용으로 필요한것이 아니기 때문에

가상분산모드로 진행한다.

(따로 모드를 선택하는 장치나 옵션은 없다.

환경설정 내용에 따라 모드가 갈린다.)

내용으로 돌아와서 conf안에는 환결설정 파일들로 가득하다.

이중에서 우리가 만져야될 파일은

hadoop-env.sh

mapped-site.xml

slaves

masters

core-site.xml

hdfs-site.xml

총 6개이다.

차근차근히 따라오길 바라며, 처음 접한다면 수기로 직접 작성해보길 바란다.

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

hadoop-env.sh에서 할일은 자바 경로를 잡아주는것과 실행시 일어날 워닝을 잡아주는 구문이나

라인11은 선택사항이다.

(자바설치 경로가 기억나지않는다면

위 명령어로 조회할 수 있다)

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

core-site.xml

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

hdfs-site.xml

8번은 복제옵션을 지칭하며 9번은 복사갯수를 정한다.

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

mapped-site.xml

잡트래커 옵션을 준다

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

마지막으로 slaves와 masters에는 localhost라고 막 적는다.

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

실행전

hadoop namenode -format 명령어로 네임노드를 포맷시켜주고 실행하여야한다.


모든 설정이 정상적으로 이루어졌다면 start-all.sh을 실행시켜보라

로그를 보았을때 어디서 무엇이 실행되는지 보이지 않는가?

모든 노드들과 트래커들이 실행된 모습.

이제 예제를 실행시켜보고 문제가 없으면 사용에 준비는 끝났다.

hdfs에 hadoop-evn.sh을 넣어놓고 wordcount 예제를 돌려보자.


LoganLeeui-MacBook-Pro:hadoop Logan$ hadoop jar hadoop-examples-1.2.1.jar wordcount conf/hadoop-env.sh output

18/02/10 03:25:11 INFO input.FileInputFormat: Total input paths to process : 1

18/02/10 03:25:11 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

18/02/10 03:25:11 WARN snappy.LoadSnappy: Snappy native library not loaded

18/02/10 03:25:11 INFO mapred.JobClient: Running job: job_201802100324_0001

18/02/10 03:25:12 INFO mapred.JobClient:  map 0% reduce 0%

18/02/10 03:25:15 INFO mapred.JobClient:  map 100% reduce 0%

18/02/10 03:32:44 INFO mapred.JobClient: Task Id : attempt_201802100324_0001_r_000000_0, Status : FAILED

Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out.

18/02/10 03:32:44 WARN mapred.JobClient: Error reading task outputConnection refused (Connection refused)

18/02/10 03:32:44 WARN mapred.JobClient: Error reading task outputConnection refused (Connection refused)

18/02/10 03:40:14 INFO mapred.JobClient: Task Id : attempt_201802100324_0001_r_000000_1, Status : FAILED

Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out.

18/02/10 03:40:14 WARN mapred.JobClient: Error reading task outputConnection refused (Connection refused)

18/02/10 03:40:14 WARN mapred.JobClient: Error reading task outputConnection refused (Connection refused)

18/02/10 03:47:45 INFO mapred.JobClient: Task Id : attempt_201802100324_0001_r_000000_2, Status : FAILED

Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out.

18/02/10 03:47:45 WARN mapred.JobClient: Error reading task outputConnection refused (Connection refused)

18/02/10 03:47:45 WARN mapred.JobClient: Error reading task outputConnection refused (Connection refused)

18/02/10 03:55:18 INFO mapred.JobClient: Job complete: job_201802100324_0001

18/02/10 03:55:18 INFO mapred.JobClient: Counters: 20

18/02/10 03:55:18 INFO mapred.JobClient:   Map-Reduce Framework

18/02/10 03:55:18 INFO mapred.JobClient:     Combine output records=178

18/02/10 03:55:18 INFO mapred.JobClient:     Spilled Records=178

18/02/10 03:55:18 INFO mapred.JobClient:     Map output materialized bytes=3151

18/02/10 03:55:18 INFO mapred.JobClient:     Map input records=62

18/02/10 03:55:18 INFO mapred.JobClient:     SPLIT_RAW_BYTES=116

18/02/10 03:55:18 INFO mapred.JobClient:     Map output records=306

18/02/10 03:55:18 INFO mapred.JobClient:     Map output bytes=3856

18/02/10 03:55:18 INFO mapred.JobClient:     Combine input records=306

18/02/10 03:55:18 INFO mapred.JobClient:     Total committed heap usage (bytes)=179306496

18/02/10 03:55:18 INFO mapred.JobClient:   File Input Format Counters 

18/02/10 03:55:18 INFO mapred.JobClient:     Bytes Read=2676

18/02/10 03:55:18 INFO mapred.JobClient:   FileSystemCounters

18/02/10 03:55:18 INFO mapred.JobClient:     HDFS_BYTES_READ=2792

18/02/10 03:55:18 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=60256

18/02/10 03:55:18 INFO mapred.JobClient:   Job Counters 

18/02/10 03:55:18 INFO mapred.JobClient:     Launched map tasks=1

18/02/10 03:55:18 INFO mapred.JobClient:     Launched reduce tasks=4

18/02/10 03:55:18 INFO mapred.JobClient:     SLOTS_MILLIS_REDUCES=7072

18/02/10 03:55:18 INFO mapred.JobClient:     Total time spent by all reduces waiting after reserving slots (ms)=0

18/02/10 03:55:18 INFO mapred.JobClient:     SLOTS_MILLIS_MAPS=3591

18/02/10 03:55:18 INFO mapred.JobClient:     Total time spent by all maps waiting after reserving slots (ms)=0

18/02/10 03:55:18 INFO mapred.JobClient:     Failed reduce tasks=1

18/02/10 03:55:18 INFO mapred.JobClient:     Data-local map tasks=1

mapper가 일을 끝내고 reducer한테 전해줄 때 통신에러가 있는 듯 하다...

(원래 안그랬는데 글 쓰다가 다시 생겼다...)

해결편 보러가기

by 밑바닥에서 글로벌로~ 발전소장 에르 :) 2018.02.10 17:29

필자는 마스터가 될 리눅스는 GUI로 다운받고 클러스터가 될 아이들은 server용으로 다운받았다.

실행했다. 그 이유는 결국은 사양문제이고 클러스터 처리과정은 물론 터미널로도 가능하니, 

마스터에서 자원을 슬레이브들이 공유하여, 하둡을 작동케하려고한다.

별거없다 계속 예예예예예만하면된다.

모르면 그냥 디폴트 값으로 가자.

이름을 잘 지어줘야한다.

괜히 잘못지어줬다가 재설치를 했다. 

잘못준이름을 바꿀려면 머리가 깨진다.

총 설치과정을 보여주는 리스트이며 개별로 선택이 가능하다.

물론 위에서 아래로 진행된다.


GRUB Boot Loader를 쓰겠냐는 말인데 

필자는 쓰겠다고했다.

예예예



물론 한국도 선택가능하다만, 필자는 영어가 더 좋다.

패스

키보드 설정인데 no로 했다.

잘 지어주어야한다.

계정설정

비밀번호가 약하다고 쓸꺼야? 라고하지만 물론 학습용이라면 상관없다.

홈 디렉토리 암호화할레? 아니!!

타임존 설정.

디폴트로!

 여기서 LVM이란?

 Logical Volume Manager를 의미한다.

더 자세한 설명을 원한다면 아래를 방문하기를 추천한다.

http://kit2013.tistory.com/199



프록시안쓸꺼니까 놉!

디폴트로 해주자.

그리고 또 vmware tool 깔아야한다.

ssh를 통해 하둡을 연동할것이기 때문에 체크해줬다

스페이스바로 체크가능.

여기까지만 한다면

마스터1개 슬레이브2개 총 3개의 vm을 맥북에 설치했다.

필자는 vmware Fusion을 이용했다.

다음엔 자바 설치와 하둡 설치 등등 핵심내용을 다뤄보고자한다.


by 밑바닥에서 글로벌로~ 발전소장 에르 :) 2017.11.28 13:33

레퍼러스 문서가 조금 구버전이라 놀라긴했다만,

뭐 문제는 없으니까 시작해보도록하자.


1. Download Java 1.7 JDK and install it

하둡 구동에 필요한 자바(개인적으로 현재까지는 자바8을 추천)

$ brew tap homebrew/versions
$ brew install protobuf250
$ brew link --force --overwrite protobuf250
$ protoc --version
libprotoc 2.5.0

brew 로 손쉽게 다운받는게 이 얼마나 고마운 일인가.

3. Install cmake via Homebrew

$ brew install cmake

4. Install Hadoop 2.7.2 via Homebrew

$ brew install hadoop

심지어 하둡도 브루로 다운받을 수 있다니 세상에나...

$ wget http://apache.tt.co.kr/hadoop/common/hadoop-2.7.2/hadoop-2.7.2-src.tar.gz 
$ tar xvf hadoop-2.7.2-src.tar.gz
$ cd hadoop-2.7.2-src
$ mvn package -Pdist,native -DskipTests -Dtar
$ mv hadoop-dist/target/hadoop-2.7.2/lib /usr/local/Cellar/hadoop/2.7.2/

하.. 패키징 부분에서 1번 에러가 떳다..


6. Open hadoop-env.sh and add below variables

# /usr/local/Cellar/hadoop/2.7.2/libexec/etc/hadoop/hadoop-env.sh

export HADOOP_HOME="/usr/local/Cellar/hadoop/2.7.2"
export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=$HADOOP_HOME/lib/native"

7. Edit core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

8. Edit hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

10. Set passphraseless ssh

$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
$ ssh localhost

11. Format filesystem

$ hdfs namenode -format

12. Execute NameNode daemon, DataNode daemon

$ /usr/local/Cellar/hadoop/2.7.2/sbin/start-dfs.sh

13. Stop NameNode daemon, DataNode daemon

$ /usr/local/Cellar/hadoop/2.7.2/sbin/stop-dfs.sh


by 밑바닥에서 글로벌로~ 발전소장 에르 :) 2017.11.21 00:18

Spider는 웹 사이트를 통해 링크를 따라 이동하고 페이지에서 정보를 추출하는 방법을 정의하는 클래스입니다.

default spirder는 아래와 같습니다.

class scrape.spiders.Spider 에 위치하며 각각의 부분과 설명들을 밑에 첨부합니다.

name 

 spider의 이름 

allowed_domains

 spider가 크롤링할 도메인들의 목록 

start_urls 

URL의 목록이고 어디서부터 크롤링할건지, 나중 크롤링을 위한 뿌리가 된다. 

custom_settings 

spider가 동작할때 project wide configuration으로 오버라이드된다.

crawler 

이 속성은 스파이더 인스턴스가 바인딩 된 크롤러 객체에 연결되는 속성입니다. 

setting

spider의 동작을 위한 세팅들 

logger 

Python logger가 log 메세지를 보내기위해 사용됩니다. 

from_crawler

(crawler,*args,**kwargs)

spider를 만들 메소드이며 파라미터별 

- crawler => 어떤 spider객체가 바인딩 될 것인지. 

- args(list) => method _init_()에 전달된 인자들입니다.

 start_requests()

어떤 특정 URL도 명시되지않았고 스크래핑을 위해 스파이더가 열렸을 경우 scrapy는 start_requests()method를 호출합니다. 

 make_requests_from_url(url)

url을 requests로 콘버트할때 사용됨


parse(response)

response를 처리하고 처리된 데이타를 리턴하고 다음 url을 따라갑니다. 

log(message[,level,component])

 spider logger를 통해 log msg를 보내는 메소드 

closed(reason) 

 spider가 종료될 떄 호출됩니다. 


Spider Arguments

스파이더 인수는 시작 URL을 지정하는 데 사용되며 다음과 같이 -a 옵션과 함께 크롤링 명령을 사용하여 전달됩니다.

scrape crawl first_scrapy -a group = accessories

위 코드는 스파이더가 어떻게 인자를 받는지 보여줍니다.

Generic Spider

Generic Spider를 사용하여 spider를 sub class로 분류할 수 있습니다.

그리고 그들의 목적은 특정 규칙에 기반한 웹사이트의 모든 링크를 타는게 목적입니다.

다음 스파이더에서 사용되는 예제의 경우 다음 필드가있는 프로젝트가 있다고 가정 해 봅시다.




by 밑바닥에서 글로벌로~ 발전소장 에르 :) 2017.10.17 14:59
| 1 2 3 4 ··· 6 |