'분류 전체보기'에 해당하는 글 314건

얼마전 프로젝트를 할 때 엘리스틱서치를 사용하기 위해서

라이브러리 수준의 코드를 만들었었기 때문에, 나의 코드와 라이브러리의 코드를 비교해보고 싶어서 코드를 읽어보게 되었다


https://github.com/elastic/elasticsearch-dsl-py/blob/master/elasticsearch_dsl/search.py


우선 search.py 파일 Search 클래스의 filter부터 봤다


filter 메서드는 query 메서드의 wrapper처럼 동작한다


그리고 query 메서드는, 실제로는 메서드가 아니라 ProxyDescriptor라는 오브젝트이다


그리고 실제로 query문은 query.py Q 펑션에 의해 세팅된다 (ProxyDescriptor.__set__()에서 볼수있듯이)


Q는 Query


 - 추가 예정 -



WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/

SDHC?: High storage SD

etc 2018. 4. 6. 18:03

https://kb-ko.sandisk.com/app/answers/detail/a_id/4690/~/sd-%2F-sdhc-%2F-sdxc-%EC%82%AC%EC%96%91-%EB%B0%8F-%ED%98%B8%ED%99%98%EC%84%B1


4~32GB SD = SDHC



WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/

https://stackoverflow.com/a/49632135


pycharm에서 ipython 6.3.0을 지원 못해서 발생한 문제.


6.2.1로 다운그레이드 해주면 된다


pip install 'ipython<6.3'




WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/

pyreadline은 readline의 python implementation이다 (아래 링크 인용)

http://pythonhosted.org/pyreadline/introduction.html#a-python-implementation-of-gnu-readline




(readline의 기능 및 example code)

https://ko.wikipedia.org/wiki/GNU_readline




예제 코드를 컴파일 하기전에 readline 라이브러리 설치 필요


sudo apt-get install libreadline-dev


https://stackoverflow.com/questions/23085076/readline-readline-h-file-not-found




WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/

open(), read(), write()


Low-level File I/O API이다


fopen(), fread(), fwrite()


High-level File I/O API이다


무슨 차이일까?


---


fopen() 계열 API들은 buffer를 통해 I/O를 한다


I/O는 딜레이가 매우 큰 작업이므로, buffer를 활용하여 CPU 리소스 효율성을 높일 수 있기 때문이다


그러면 open()을 사용할 필요가 있을까?


---


linux에서 device file에 access할 경우, fopen()을 사용할 수 없다는 듯 하다


이럴 때에는 open()이 필요하다



'Language' 카테고리의 다른 글

[Javascript] for문 종류 (of vs in)  (0) 2018.05.01
Clean Code 독서 & 메모  (0) 2018.04.22
[Java] anonymous subclass (Thread)  (0) 2018.03.15
[Visual Studio 2017] scc display information error  (0) 2018.03.06
[Javascript] vue-cli example  (0) 2018.01.06

WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/

entity와 entity의 architecture를 delcare하고,


arch문에서 Process (clk) 문을 선언하였다

if 문으로 rising edge clock 조건을 주었고


그 안에는


b <= a

c <= b


와 같이 작성하였다


이때, a=0, b=X, c=X and rising edge가 되면


처음 생각대로라면 a=0, b=0, c=0이어야 하는데


a=0, b=0, c=X였다


아직 이해가 되지않아서, 프로세스문의 이해가 더 필요한 것 같다


어쨌든 a와 c까지 sync가 되게 하고 싶다고 하자,


이것은 process문을 별도로 작성하여도 해결되지 않는다


하지만 아래와 같이 작성하면 해결된다


process(b)

if rising edge

c <= b


하지만 이것은 time per clock을 증가시키는 요인이 된다 (latch?)


그러므로 high clock cycle을 위해서는, 1 clock이 delay되어 a 값이 c에 들어가야 한다


'etc' 카테고리의 다른 글

[Android] 저장공간 부족 해결방법  (0) 2018.04.08
SDHC?: High storage SD  (0) 2018.04.06
[elasticsearch5] Text vs String (and Keyword)  (0) 2018.04.04
세종대 블랙보드 로그인 해보즈아  (1) 2018.04.01
ModelSim Simulation  (0) 2018.04.01

WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/

[Web] rudux: reduce + flux

Web 2018. 4. 5. 13:49



WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/

String은 Text, Keyword 두가지를 모두 포함하는 타입이다


6버전에서는 String Type이 없어진 것으로 알고있다


참고로 Text는 Analyzing이 되고, Keyword는 되지않는다 (키워드니까)


---


text 필드를 implicitly 생성하면, 아래와 같이 생성된다


          "content" : {
            "type" : "text",
            "fields" : {
              "keyword" : {
                "type" : "keyword",
                "ignore_above" : 256
              }
            }
          },

하위 필드에 ignore_above=256이라는 옵션을 가진 keyword 필드가 생기게 된다


'etc' 카테고리의 다른 글

SDHC?: High storage SD  (0) 2018.04.06
[HDL] VHDL rising edge, D-FlipFlop  (0) 2018.04.05
세종대 블랙보드 로그인 해보즈아  (1) 2018.04.01
ModelSim Simulation  (0) 2018.04.01
[Elasticsearch] version Downgrade  (0) 2018.03.27

WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/

pip freeze, requirements.txt 파일의 내용처럼 특정범위 버전의 패키지를 다운받고 싶을 때


https://stackoverflow.com/a/33812968


pip install 'pkg-name>=minimum,<maximum'


ex) pip install 'elasticsearch-dsl>=5<6'

(5버전 중에서 최신버전)


single quote(')를 꼭 사용해야한다


'Web' 카테고리의 다른 글

[Web] 네이버 캘린더 오픈API, CalDAV  (0) 2018.04.08
[Web] rudux: reduce + flux  (0) 2018.04.05
[Web] React 좋은 포스팅들 링크모음  (0) 2018.04.04
[Web] Javascript Object vs Map  (0) 2018.04.04
[Web] react - props, defaultProps, 상속  (1) 2018.04.04

WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/

react에서 데이터를 저장하는 방법들과 그것들을 배워나가는 과정들을 보여준다

https://medium.freecodecamp.org/where-do-i-belong-a-guide-to-saving-react-component-data-in-state-store-static-and-this-c49b335e2a00


새롭고 유용한 ES6 syntax들을 소개해준다

https://gomugom.github.io/es6-for-react/


'Web' 카테고리의 다른 글

[Web] rudux: reduce + flux  (0) 2018.04.05
[python] pip install 패키지 버젼 범위설정  (0) 2018.04.04
[Web] Javascript Object vs Map  (0) 2018.04.04
[Web] react - props, defaultProps, 상속  (1) 2018.04.04
[Web] Javascript undefined vs null  (0) 2018.04.03

WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Map


일단 Map은 size 멤버를 가지고있다



WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/

https://velopert.com/921


react에서 mutable value는 state에, immutable value는 props에 저장한다고 한다


props는 component를 tag로 사용할 때, attribute를 통해서 세팅되기도 하지만

Component 클래스에 defaultProps라는 attribute(멤버 변수 비슷)를 통해서 세팅할 수도 있다


class App extend React.Component {

    ....

}

App.defaultProps = { ... }


아래와 같이 할수도 있다


class App extend React.Component {

    static defaultProps = { ... }

}


두 코드의 동작방식은 같다. 즉, static keyword를 사용하면 상속되지 않는다


static keyword를 사용하지 않으면 ignore되므로, 주의하자 (error code에서 알려줌)



WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/

undefined는 아예 정의가 되지 않은 것이고


null은 명시적으로(explicitly) null이라고 정의된 것이다



WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/

[Web] React Custom Tag

Web 2018. 4. 3. 23:08

Component class를 extend해서 custom tag를 만들수도 있지만


단순히 function(class의 method 조차도)도 custom tag로 사용할 수 있다


Component의 render()를 정의하듯, function이 JSX를 return하면 된다


Test = () => (<p>test</p>);


// in render(), you can use

<Test />


다른 주제의 문서이지만, 아래 문서를 보다가 알게되었다


https://reactjs.org/docs/conditional-rendering.html



WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/

Javascript는 Java String.equal()이 따로 있는 것처럼, ==와 ===가 별도로 있다

==는 느슨한 비교

===는 엄격한 비교


단, Object == Object는 Object === Object와 동일하다 (React에서 Object == Object를 사용할 경우 warning이 뜨는듯함)


그래서 python에서는 {} == {}는 True이지만

javascript에서는 {} == {}는 False이다 ({} === {}이기 때문예)




WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/

<p>str</p>

<h1...6>str</h1...6>


<div>str</div>

<span>str</span>


<table>

<thead> # table head

    <tr><th>str</th></tr> # TableRow, TableHead

</thead>

<tbody> # table body

    <tr><td>str</td></tr> # TableRow, TableData

</tbody>

<tfoot>

    <tr><td>str</td></tr> # TableRow, TableData

</tfoot>

</table>


<br />

<img />


<form>

<select>

<option...>

</option...>

</select>


<input type="text, radio, secret, ..." />

<button>str</button>


</form>


<button>str</button>


<a>str</a>


<img />


attribute 리스트


onClick=func


a href=url


img src=img-path, alt=alternative-str


style="width:100%;height:100%"



WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/

<문제상황>


conponentDidMount() 메서드에 아래와 같은 코드를 작성하였다


this.html_code = <h5>test</h5>;


그리고 아래와 같은 에러가 발생하였다


'React' must be in scope when using JSX


직역하면, JSX를 사용할 때는 React가 scope 안에 있어야한다

아래와 같은 라인 최상단에 추가하였다 그리고 문제가 해결되었다


import React from 'react';




WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/

setState({ ... }) 또는 setState((state) => { ...; return state; })와 같이 사용할 수 있다


<문제상황>


Component의 state에 Object를 저장하였다

그리고 그 Object(obj라고 가정하자)의 attribute 하나(data라고 가정하자)를 바꾸려고 한다


this.state.obj.data = ...


이렇게 다이렉트로 데이터를 바꾸고 나면, re-render가 이루어지지 않는다

(setState 함수를 사용했을 때와 달리)

그리고 아래에 코드를 한줄 추가했다


this.setState({}); // re-render


하지만 이러한 코드는 가독성이 떨어진다고 느껴서, re-render 기능만 하는 함수를 찾아보다가 아래 글을 찾게 되었다




<solution>

https://medium.com/@baphemot/understanding-reactjs-setstate-a4640451865b


setState에 (state) => { /* ... */ return state; }

와 같은 콜백 파라미터를 사용할수 있다고 위 포스트에 설명되어있다


즉, setState 함수 안에서 obj.data 하나만을 수정할 수 있게 되었다




특정 문제상황에서 편리함이 느껴져 포스팅을 시작했으나, 잘못된 방법이었다


https://velopert.com/3486


프로젝트 규모가 커지게 되면, 위와같은 방식은 불필요한 CPU 리소스를 낭비하게 된다


그러므로 간단한 대안인 shouldComponentUpdate를 사용할 수 있다


shouldComponentUpdate(nextProps, nextState) { ... }

(위 링크의 포스트에는 prev로 오타가 났는데, nextProps, nextState가 맞다)


하지만 state를 직접 수정하고 warning과 함께해야하는 불편함이 있다


자세한 내용은 다른 블로그를 참고하자


----


필자가 react를 사용하는 이유는 생산성이다

그리고 위 내용은 성능에 대한 내용인데, 

생산성에 더 중점을 둔다면 성능은 속도가 체감될 때 최적화하는 것으로 미뤄두는 것이 좋다


성능에 너무 연연하지 말자



WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/

tag[@조건태그]





WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/

windows scrapy 실행 중 발생


아래 패키지를 설치하면 된다


pip install pywin32


(win32api가 아니라 pywin32 설치하면 됨)



'Language > python' 카테고리의 다른 글

[python] pycharm interpreter console error  (0) 2018.04.06
[python] pyreadline 패키지  (0) 2018.04.06
[python] Poweshell virtualenv activate error 해결방법  (0) 2018.04.03
[python] pip install whl file  (0) 2018.04.03
[python] SQLAlchemy  (0) 2018.04.03

WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/

cmd가 아닌 powershell이라면 activate.bat이 아니라 activate.ps1를 실행해야 한다

근데 에러가 발생한다


<Scripts\activate.ps1 실행결과>


.\activate.ps1 : 이 시스템에서 스크립트를 실행할 수 없으므로 C:\Users\20170218\Desktop\temp\naver_stock\venv\Scripts\ac

tivate.ps1 파일을 로드할 수 없습니다. 자세한 내용은 about_Execution_Policies(https://go.microsoft.com/fwlink/?LinkID=13

5170)를 참조하십시오.

위치 줄:1 문자:1

+ .\activate.ps1

+ ~~~~~~~~~~~~~~

    + CategoryInfo          : 보안 오류: (:) [], PSSecurityException

    + FullyQualifiedErrorId : UnauthorizedAccess




솔루션은 아래와 같다


https://stackoverflow.com/a/18713789


Poweshell 관리자 모드로 실행 후, 아래 커맨드를 실행한다


Set-ExecutionPolicy Unrestricted


아래 커맨드로 설정값을 확인해볼 수 있다


Get-ExecutionPolicy


다시 activate.ps1을 실행하면 virtualenv가 잘 실행됨을 확인할 수 있다


문제는 해결되지만, powershell 보안정책을 꺼둔 것이므로, 그건 알아두도록 하자


----


에러가 UnauthorizedAccess니까, authorize를 하면 되지 않을까 라는 생각도 들지만, 다음에 알아보자


'Language > python' 카테고리의 다른 글

[python] pyreadline 패키지  (0) 2018.04.06
[python] ImportError: No module named 'win32api'  (1) 2018.04.03
[python] pip install whl file  (0) 2018.04.03
[python] SQLAlchemy  (0) 2018.04.03
[python] yield, generator, coroutine  (0) 2018.03.30

WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/

pip install <whl file path>



WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/

Python ORM(Object Relational Mapper) library



WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/

router 종류 라이브러리는 사용법이 복잡하여 진입장벽이 높다


이것은 react, vue 모두 동일하게 느껴졌다


router는 마지막에 추가하기로 하자



WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/

세종대 블랙보드를 들어가보자

예전엔 lms라는 사이트를 사용했었는데, 블랙보드를 통해서 서비스한다

학사정보시스템 아디 비번을 치고 로그인을한다

는 사실 개꿀잼 몰카였던것임 곧바로 로그인이 아니라, 첫번째사진 포털로그인 누르면

위에 사진처럼 포탈로그인 뜬다는것 저기에 로그인을 하면된.다



로그인하고나면 세종대 블랙보드 메인화면이 뜬다

듣는 과목없어서 텅텅 빈 것임

머리가 텅텅 빈게 아니라

마춤뻡은 多틀릴거입니다

이상 세종머 블랙보드였음 :)


'etc' 카테고리의 다른 글

[HDL] VHDL rising edge, D-FlipFlop  (0) 2018.04.05
[elasticsearch5] Text vs String (and Keyword)  (0) 2018.04.04
ModelSim Simulation  (0) 2018.04.01
[Elasticsearch] version Downgrade  (0) 2018.03.27
롱주컨트리 1828283637  (0) 2018.03.27

WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/

1. 함수의 기능을 이해한다 (함수의 이름을 보고)

2. 함수의 파라미터들의 역할을 이해한다 (함수기능 이해 후에)

3. 블록 단위로 기능을 이해한다



WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/

ModelSim Simulation

etc 2018. 4. 1. 00:17

<Install>

Student Edition 다운로드 및 설치

설치완료 시 열리는 License 페이지에서 꼭 입력폼 다 채우고 메일로 student_license 파일 받기

모델심 root 디렉토리에 라이센스 파일 넣기

모델심 실행

프로젝트 생성

소스파일 add

컴파일


<Simulate>

상단 메뉴 - Simulate - Start Simulation

팝업 창에서, 상단 Design 탭 - work - 시뮬레이션할 test bench 선택 - OK


왼쪽 sim window - (시그널을 확인할) 모듈 선택

가운데 Objects window - in/out 시그널 선택 - 우클릭 - Add to - Wave - Selected Signals

Wave window가 생겼다


상단 메뉴 - Simulate - Run - Run 100 (100 ns)

Wave window에서 signal waves를 확인할 수 있다


wave window - 우클릭 - Zoom Full

zoom full이 되어 보기 편해졌다


Run 100을 다시 실행하면 이어서 실행된다


http://staff.cs.upt.ro/~opritoiu/modelsim/mswv/index.html



'etc' 카테고리의 다른 글

[elasticsearch5] Text vs String (and Keyword)  (0) 2018.04.04
세종대 블랙보드 로그인 해보즈아  (1) 2018.04.01
[Elasticsearch] version Downgrade  (0) 2018.03.27
롱주컨트리 1828283637  (0) 2018.03.27
[Camera] Mirrorless Camera 특징  (0) 2018.03.25

WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/

<Javascript Library/Framework의 필요성>

코드 생산성이 떨어진다.

-> 관리 및 재사용이 어렵기 때문

-> 모듈 분리 불가능 등등의 문제 때문


필자는 jQuery, Vue, React 순으로 사용해보았고 React를 가장 선호한다

React, Vue 중 선택을 고민하고 있다면 아래를 읽어보자


React vs Vue (부제: React가 Vue보다 좋은 점)

공통점

 - ES5, ES6, NPM, babel이 무엇인지 알아야한다 (개념 정도)

 - JSX를 지원하며, 필자는 JSX가 효과적이라고 생각한다

차이점

 - Vue는 vue-loader가 별도로 존재하기 때문에, 추가적으로 공부해야 한다

 - React는 코드가 직관적이며(이해하기 쉬우며) 범용적인 지식을 통해 충분히 활용할 수 있다.

   즉, 추상화가 적절하여 지나치게 의존하게 만들지 않는다 (React가 F/W라기보다는 Library인 이유)

 - React는 attribute 이름을 잘못 줬을경우, 에러로그가 잘 알려준다 (어떻게 수정해야 하는지 등)

 - Vue의 장점으로, Vue에 능숙하다면 훨씬더 간결한 코드를 작성할수 있다

   하지만, 필자의 경우 다른 언어의 지식을 React에 활용할수 있었지만 Vue는 별도로 공부가 필요했다

 - vue는 webpack 등 다양한 dependency가 존재하여, 배울 것이 많게 느껴졌다


'Web' 카테고리의 다른 글

[Web] xpath - 특정 attribute를 가진 태그  (0) 2018.04.03
[Web] react-router, vue-router  (0) 2018.04.02
[Web] nginx multi web server config  (0) 2018.03.30
[web] xpath syntax  (0) 2018.03.29
[Web] javascript function alias (getElementById)  (0) 2018.03.29

WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/

아래 방법은 완벽한 해결책이 아니다


---


문제상황은 아래와 같다


웹서버를 운영하다가, 새로운 버전을 개발하였다

이것을 legacy web과 new web이라고 할 때, 


legacy web 리소스들을 옮기지 않고, new라는 directory를 생성하여

new directory를 root로서 serving하고싶다

이러한 설정은?


<port로의 분리는 간단>

이 둘을 서로다른 port로 분리한다면 config에서 server block을 하나 더 작성하면 된다

하지만, 우리의 요구사항을 수용하려면 location으로 분리해야한다


중요한 것은, root가 아니라 alias를 사용해야 한다는 것이다


location / {

    alias /var/www/html/new;

}


location /legacy {

    alias /var/www/html;

}


location /static {

}


 - alias를 이용하면 /var/www/html이 아닌 다른 디렉토리를 통해서도 serving이 가능하다

 - /static/*의 경우, 원래의 것을 그대로 사용하기 위해 location /static block만 작성하였다 (명시하지않으면 /new/static/*으로 연결됨)


---


이슈: 상대경로를 통한 서브 디렉토리 사용 시, 즉

/legacy location에서 dist/build.js라는 상대경로를 통하여 요청 시,

/legacy/dist/build.js로 요청이 들어오는데

이는 location /legacy/dist에 해당하는 듯 하다


location block에 정규표현식을 사용하는 것이 가장 간단한 해결방법인듯 하다


'Web' 카테고리의 다른 글

[Web] react-router, vue-router  (0) 2018.04.02
[Web] React vs Vue (Javascript Library/Framework)  (0) 2018.03.31
[web] xpath syntax  (0) 2018.03.29
[Web] javascript function alias (getElementById)  (0) 2018.03.29
[Web] react form onChange  (0) 2018.03.29

WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/

아래 내용에는 필자가 잘못 이해하여 틀린 내용이 있을수도 있다.


https://mingrammer.com/translation-iterators-vs-generators/


yield가 뭐지?


python에서 yield문을 포함하는 함수는, 리턴값이 generator이다

generator는 iterator의 한 종류이다 (위 링크의 글 인용)


그리고 generator를 리턴하는 함수를 coroutine이라고 한다

코루틴이란, 함수의 일부만을 수행하고 suspend되는 함수이다

suspend되는 위치는 yield문까지이다


yield문을 통해 함수를 coroutine으로 만들 수 있다

coroutine을 왜 만들지?




coroutine의 장점?


함수를 coroutine으로 만들면, yield문의 위치에서의 동작을 함수 외부에 맡길 수 있다

callback 파라미터를 넘기는 것과의 차이는, 함수가 suspend된다는 점이다

(결국 suspend되기 때문에 임의 동작이 가능한 것이지만)


coroutine은, 함수를 일부분씩 실행할 수 있다는 장점이 있다



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
def func():
    for i in range(10):
        print('func', i)
        yield i # yield and return i
 
def main():
    result = []
 
    for i in func():
        result.append(i)
 
    for i in result:
        print('result', i)
 
    
 
if __name__ == '__main__':
    main()
 
'''
# output
func 0
func 1
func 2
func 3
func 4
func 5
func 6
func 7
func 8
func 9
result 0
result 1
result 2
result 3
result 4
result 5
result 6
result 7
result 8
result 9
'''
 
cs


event = (yield) 문과 같이 함수 외부로부터 값을 받을수도 있다

이건 알아만 두자


'Language > python' 카테고리의 다른 글

[python] pip install whl file  (0) 2018.04.03
[python] SQLAlchemy  (0) 2018.04.03
[python] elasticsearch-py max_tries  (0) 2018.03.30
[python] 유용한 scrapy command  (0) 2018.03.29
[python] scrapy concurrent_requests  (0) 2018.03.27

WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/

사용중인 블로그 스킨이 방명록을 지원하지 않습니다.

초대장을 받고싶으신 분들은 댓글 또는 블로그 설명의 메일로.