프로그래밍/Php 20

유머 커뮤니티 크롤링/파싱 시 본문내용이 안나올때

이슈 크롤링/파싱 시 본문내용이 안나오는 경우가 있습니다. 이는 js 에서 런타임때 자동으로 가져와서 curl 이나 다른 프로그램으로 html 소스 가져오면 아무것도 없게 나옵니다. 예를들면 aagag.com/issue/?idx=730117 위와 같은 사이트에서 f12로 본문내용을 보면 아래와 같은 값을 확인할수 있습니다. 하지만 curl 또는 소스보기 하면 아래와 같이 아무값도 안나옵니다. 해결 php 래퍼로 감싼다음 casper.js 로 해결하면 됩니다. mac 에서 설치 .phantomjs 설치 brew tap homebrew/cask brew cask install phantomjs npm install phantomjs npm install casperjs composer require phpc..

프로그래밍/Php 2020.07.29

Template Method pattern (템플릿 메소드 패턴)

템플릿 메소드 패턴이란? 본 내용은 본인이 지식습득과정에서 연습하기 위한 내용입니다. 보통 클래스를 상속으로 사용하는데 있어서 제어 역전으로 사용합니다. 예를 들면 부모클래스 1개 와 자식클래스 10개 가 있다라고 가정하다면 부모클래스가 수정이 된다면 그 여파는 자식클래스 10개에 전파가 됩니다. 이러한 일을 방지하기 위해서 템플릿 메소드 패턴을 사용합니다. 아래는 이해를 돕기 위한 소스코드 입니다.

프로그래밍/Php 2020.06.01

고차원 함수 array_map 과 array_reduce 를 이용한 배열을 문자열로 변환

아래와 같은 $originArr 배열이 있을때 BB output 처럼 하고 싶을 경우가 많습니다. for문과 foreach 문으로 반복하면서 문자열 처리를 할수 있습니다만 고차원 함수인 array_map 과 array_reduce 를 이용하여 반복처리 하는 방법을 보여드립니다. $originArr [0] => Array ( [isu_cd] => A094190 [kor_cor_nm] => 이엘케이 [chg_dt] => 2020/05/22 [tr_stp_rsn] => 감사의견 거절(감사범위 제한 및 계속기업 존속능력에 대한 불확실성) ) [1] => Array ( [isu_cd] => A900040 [kor_cor_nm] => 차이나그레이트 [chg_dt] => 2020/05/22 [tr_stp_rsn] =..

프로그래밍/Php 2020.05.28

[디자인패턴] php 로 알아보는 Builder pattern

"빌더 패턴(Builder pattern)이란 복합 객체의 생성 과정과 표현 방법을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 하는 패턴이다." 라고 하는데 무슨말인지 잘 모르겠다. 쉽게 설명해볼께요. php를 이용한 크롤링(파싱) 을 거의 15년 이상 개발하는 동안 코드를 좀 더 편하게 / 좀 더 모듈로 만들면 어떨까 라는 생각이 시작점입니다. 예를 들어볼께요 파싱할때에 꼭 필요한 부분이 아래 3개 입니다. 추가적으로 로그인 해야 하는 사이트는 쿠키 / 헤더 가 포함됩니다. 그렇다면 아래와 같은 정보를 생성자에게 넘겨주려고하면 인자가 많아집니다. - url / agent / referer 보통 아래와 같이 코드를 생성합니다.

프로그래밍/Php 2020.04.24

[디자인패턴] php 로 알아보는 Builder pattern (주식 정보 가져오기, 주식 정보 API만들기- kospi, kosdaq, krx)

디자인 패턴중 Builder pattern 을 알아보도록 합시다. Builder pattern 이 무엇이지는 여기 를 참고하시면 많은 도움이 되실겁니다. 아래 소스는 제가 사용하는 실제 주식정보(kospi, kosdaq, krx) 가져오는 API 일부 소스입니다. 현재는 종합주가지수 (kospi, kosdaq, krx) 정보만 가져오지만 개별 주식 종목 크롤링 하는것도 가능합니다. 기회가 되면 개별 주식 종목 API 알려드리겠습니다. Builder.php

프로그래밍/Php 2020.04.23

php array_map / array_walk / array_filter 의 차이점

php array_map / array_walk / array_filter 의 차이점 array_map 배열의 각 요소에 대한 함수를 호출하는 foreach 루프로 생각하면 안됩니다.배열의 각 요소에 독립적으로 함수를 적용하는 것으로 생각해야합니다. array_walk 데이터 배열을 처리하는 것과 정확히 반대되는 방식입니다. 별도로 각 항목을 처리하는 대신 상태 ( &$userdata )를 사용하여 항목을 편집 할 수 있습니다 (foreach 루프와 비슷 함).항목에 $funcname 적용될 때마다 프로그램의 전역 상태가 변경 될 수 있으므로 항목을 올바르게 처리하는 한 가지 올바른 방법이 필요합니다. 아래 예제는 배열의 키와 값을 가져와서 기존배열을 변경하는 예제입니다.기본배열의 값을 변경이 가능한 이..

프로그래밍/Php 2018.10.16

php 람다 클로저 익명함수

php 람다 클로저 익명함수 람다란 무엇입니까 ? Lambda는 변수에 할당되거나 다른 함수에 인수로 전달 될 수 있는 익명의 함수입니다.Javascript 나 Ruby와 같은 다른 프로그래밍 언어에 익숙하다면 익명의 기능에 익숙 할 것입니다. 익명함수 ? 익명 함수는 단순히 이름이없는 함수입니다. 예를 들어 일반적인 정규 함수를 만들려면 다음과 같이 작성할 수 있습니다. 123function greeting () { return "Hello world"; } cs 그런 다음이 함수를 다음과 같이 간단하게 호출 할 수 있습니다. 12echo greeting(); // Returns "Hello world" cs 익명 함수는 이름이 없으므로 다음과 같이 정의합니다. 123function () { retur..

프로그래밍/Php 2018.10.15

파이썬 한국어 KoNlPy 설치 및 사용법 (한글형태소 분석기)

파이썬 한국어 KoNlPy 설치 및 사용법 (한글형태소 분석기) Centos7 konlpy install : Install dependencies 12345yum install gcc-c++yum install java-1.7.0-openjdk-develyum install python-devel pip3.6 install JPype1-py3cs : Install KoNLPy 1pip3.6 install konlpy cs 12345678vi konlpy_test.pyfrom konlpy.tag import Komorankomoran = Komoran()print(komoran.morphs(u'우왕 코모란도 오픈소스가 되었어요'))print(komoran.nouns(u'오픈소스에 관심 많은 멋진 개발자님들..

프로그래밍/Php 2018.09.10

php 정규식 정상적인 패턴인지 체크

php 정규식 정상적인 패턴인지 체크 정규식 입력후 실제 사용중에 잘못된 정규식으로 에러를 뿜어내는 경우가 많습니다.이럴때 DB 저장하기 전에 아래와 같이 정상적인 정규식인지 체크하면 좋을것 같습니다. if( ! $this->isRegularExpression($bind['rp_regexr']) ) { $error = []; $error['code'] = 'error'; $error['msg'] = '정규식 잘못되었습니다. 확인해주세요.'; echo json_encode($error); exit; }private function isRegularExpression($regExr) { return @preg_match("!".$regExr."!is", "") !== FALSE; }

프로그래밍/Php 2018.07.19