프로그래밍 193

item2 빌더패턴 (생성자 인자가 많을때 고려)

생성자에 인자가 많을때에는 빌더 패턴을 이용한다. NutritionFacts 클래스는 불변이며 모든 매개변수의 기본값들을 한곳에 모아있다. 빌더의 세터 메서드들은 빌더 자신을 반환하기때문에 연쇄적으로 호출 할수 있다. 빌더패턴의 장점은 클라이언트에서 코드는 쓰기 쉽고 읽기 쉽다. 빌터패턴은 파이썬의 명명된 선택적 매개변수를 흉내낸것임. package item2; public class Test { public static void main(String[] arg) { NutritionFacts coca = new NutritionFacts.Builder(230,8) .carbohydrate(100) .sodium(35) .carbohydrate(27) .fat(888) .build(); System.ou..

[디자인패턴] 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

[스프링 부트] 게시판 만들기 1 - IntelliJ + SpringBoot + Gradle 프로젝트 생성

많은 프로젝트를 php 사용하다 이번에 java spring boot 를 사용해보려 합니다. 가장 기본적인 게시판 만들기중 첫번째 환경구성 하는부분을 알아보도록 하겠습니다. 개발환경 - Mac OS X - IntelliJ IDEA Ultimate - SpringBoot 2.2.6 - Java8 - Gradle Spring Boot 프로젝트 생성 아래와 같이 체크해줍니다. 나중에 build.gradle 에서 JPA 와 Mysql Driver 설치하니 지금은 아래와 같이만 하면 됩니다. Spring Boot DevTools Lombok Spring Web Thymeleaf Use auto-import 를 체크해줍니다. 기본 프로젝트 생성이 완료되었습니다. Project 구조는 아래와 같습니다. 실제 Java..

ES6+ SYNC, ASYNC (block, non-block)

ES6+ SYNC, ASYNC (block, non-block) SYNC :서브루틴이 즉시 값을 반환함BLOCK : 즉시 플로우제어권을 반환하지 않음대부분 이렇게 프로그램을 작성함 코드 작성할때 습관을 아래처럼(블럭가드)for(let i=i; j=arr.length,limit=20000; limit-- > 0 && i { let sum = 0; for(let i=1; i { requestAnimationFrame(_=>{ setTimeout(function() { console.log("1초후"); },1*1000); let sum = 0; for(let i=1; i

프로그래밍/Js 2018.11.21

ES6+ blocking 과 non-blicking (time slice)

ES6+ blocking 과 non-blicking 자바스크립트 스레드에는 MAIN UI ThreadBACKGROUND ThreadWEB WORKER Thread 구성되어 있습니다. 1234567 const looper = (n,f) => { for(let i=0; i { let limit=0, i=0; const runner = _ => { while(i {} _ 인자하나인 변수 / 인자이름이 _ / 인자가 오긴 하는데 내부적으로 사용안할거임 https://www.youtube.com/watch?v=BeFekctVoq0 2. Time slicing Auto 123456789101112131415161718192021const looper = (n,f,ms=1000, i=0) => { let old = ..

프로그래밍/Js 2018.11.21

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