본문 바로가기
반응형

전체 글95

자바스크립트(Javascript) 디자인패턴 - 퍼사드 패턴 (facade pattern) 퍼사드 패턴은 객체에 대한 인터페이스를 제공한다. 메서드를 짧게 유지하고 하나의 메서드가 너무 많은 일을 하지 않도록 해야 하는 것이 설계 상 좋은 습관. 하지만, 이렇게 하면 메서드 수가 폭발적으로 증가할 수 있다. 두 개 이상의 메서드가 함께 호출되는 경우가 많으면, 하나로 묶어주는 새로운 메서드로 만드는 것이 좋다. 만약 stopPropagation(); preventDefault();두 개의 메서드가 있을 때, 다른 목적이지만 함께 호출되어야 한다. 이럴 때 함께 호출하는 퍼사드 메서드를 생성하는 것이 좋다. var myevent = { ... stop: function(e) { e.preventDefault(); e.stopPropagation(); } } 이는 설계 변경과 리팩터링 수고를 덜어.. 2020. 6. 3.
자바스크립트(Javascript) 디자인패턴 - 전략 패턴 (strategy pattern) 디자인패턴 중 하나인 전략 패턴은 런타임에 직접 수행할 알고리즘(기능)들을 선택할 수 있게 해주는 패턴이다. 자세한 예시와 설명은 예전에 디자인패턴 공부할 때 쓴 글이 있으니 참고 바란다. 디자인패턴 - 스트레티지 패턴 이번엔 자바스크립트로 전략 패턴을 구현하는 방법에 대해서 알아본다. 자바스크립트 디자인패턴 책을 공부하면서 간략히 정리한 글이다. 데이터 유효성 검사를 하는 기능을 가지고 전략 패턴을 자바스크립트로 구현해 보겠다. 일단 검사기(validator)를 만들기 위해 필요한 개념적인 것들 부터 알아보자. 검증할 데이터 유효성 검사 설정 (configuration) 검사기에 대한 세부 알고리즘 하나의 추상적인 검사기에 설정에 따라 수행되는 디테일한 검사기를 런타임에 변경할 수 있다. 전략 패턴에 .. 2020. 6. 2.
자바스크립트(Javascript) 디자인패턴 - 데코레이터 패턴(decorator pattern)( 데코레이터 패턴(Decorator Pattern)은 런타임에 필요한 기능을 객체에 동적으로 추가할 수 있는 디자인패턴 중 하나이다. 기대되는 행위를 사용자화하거나 설정할 수 있다. 평범한 객체로 시작하다가 동적으로 사용 가능한 데코레이터들 후보 중에서 원하는 것을 골라 객체에 기능을 추가해 나갈 수 있다. 바로 예시를 들어보자. 예시 물건을 파는 기능을 구현한다고 해보자. Sale 객체를 정의했는데 이는 판매건을 의미한다. 판매할 때 당연히 가격이 존재하며 이는 여러 국가에서 판매한다고 가정했을때, 지역마다 정책이 달라질 것이다. 이럴 때 계산하는 방식을 다르게하는 기능을 동적으로 추가할 수 있다. 이를 장식한다고 표현한다. var sale = new Sale(100); sale = sale.decora.. 2020. 6. 2.
자바스크립트(Javascript) - 반복자(Iterator) 패턴 반복자(Iterator) 패턴은 디자인패턴들 중 하나로 컬렉션와 관계없이 각 요소에 접근할 수 있는 패턴을 말한다. Iterator 패턴은 한번씩은 본 적이 있을 것이다. Java에서 File을 읽어드리면 iterator 형태로 나오는데 next() 와 같은 함수로 각 요소에 접근하여 내부적으로 처리한다. 이는 컬렉션 구조라면 적용이 가능하다. 자바스크립트에서는 어떻게 구현할 수 있는지 간략하게 알아보자. 객체는 일종의 집합적인 데이터를 가진다. 개별 요소에 쉽게 접근할 방법이 필요하다. 객체는 next() 메서드를 제공하고 next()를 연이어 호출하면서 다음 요소에 접근할 수 있다. next()는 해당 요소를 반환한다. var e; while (e = agg.next()) { // e로 작업 ... .. 2020. 5. 29.
자바스크립트(Javascript) 디자인패턴 - 싱글톤패턴(Singleton Pattern) 디자인패턴중 하나인 싱글톤패턴은 객체지향 프로그래밍에서도 자주 사용되는 패턴중 하나이다. 예전에 자바스크립트를 공부했었는데 리마인드하고자 다시 정리를 해봤다. 자바스크립트로는 싱글턴 패턴을 어떻게 구현할 수 있을까. 코드와 함꼐 살펴보자. 싱글톤 패턴? 특정 클래스의 인스턴스를 런타임동안 오직 하나만 유지하는 것을 의미한다. 자바스크립트는 클래스가 없고 _오직 객체_만 존재. 즉 새로 객체를 만들면 다른 객체와도 같지않아 이미 싱글톤이다. var a = { k: 1 }; var b = { k: 1 }; a == b // false a === b // false 값이 같아도 다른 객체 취급.객체 리터럴을 이용해 객체 생성할 때마다 싱글톤 만드는 것이다. 스태틱 프로퍼티에 인스턴스 저장 function Si.. 2020. 5. 29.
자바스크립트(Javascript) 함수의 기본 패턴들 (콜백, 메모이제이션, 커리) 자바스크립트 공부한 것들 정리한다. 이번에는 함수의 기본적인 패턴에 대해서 알아본다. 콜백패턴, 즉시실행 함수, 메모이제이션 패턴, 설정 객체 패턴, 커리에 대하여 간략하게 보자. 콜백패턴 function writeCode(callback) { ... callback(); }콜백의 유효범위에서 콜백이 객체의 메서드인 경우가 많다. 콜백 메서드가 자신이 속해있는 객체를 참조하기 위해 this를 사용하면 예기치 않는 동작이 있을 수 있다. 콜백함수와 콜백이 있는 객체를 전달하고, call 메서드로 바인딩 한다. 즉시 실행 함수 함수가 선언되자마자 실행되도록 하는 문법. (function () { alert('watch out!'); }());구성 함수 표현식으로 선언 즉시 실행되도록 () 를 .. 2020. 5. 29.
자바스크립트(Javascript) 클래스, 생성자, 프로토타입에 대하여 자바스크립트를 공부하면서 정리해보았다. 클래스 관련해서 클래스, 생성자, 프로토타입에 대해 하나씩 살펴보겠다. 클래스(Class) 자바스크립트는 실제 클래스 기능을 지원하지 않는다. 대신 모조 클래스 를 정의. 모조 클래스 = 프로토타입 객체 or 생성자 함수를 사용하여 구현 가능 1. 생성자 생성자 함수 function Rect(w, h) { this.w = this.w; this.h = this.h; this.area = function() { return this.w * this.h; } } 2. 프로토타입 & 상속 2.1. 프로토타입 객체 모든 함수에 있는 프로퍼티. 함수가 정의될 때 자동으로 생성되고 초기화된다. 초기값은 프로퍼티가 하나 있는 객체로 지정. constructor 만든 클래스는 프.. 2020. 5. 29.
[Scala/Spark] XML 파싱 에러 (SAXParseException) 해결하고 HTML 파싱해보기 Scala로 HTML형태의 XML 파일을 파싱하는 작업을 하고 있었다. 정확히는 Spark를 활용하여 XML Raw data를 파싱하여 값을 추출하는 작업이다. XML의 attribute값 또는 value를 추출하여 DataFrame으로 변환해야되므로 반드시 파싱을 해야만 했다. 일반적인 XML 형태라면 Databricks의 spark-xml 모듈을 사용하여 손쉽게 DataFrame으로 변환하면 되지만 다루는 데이터는 일반적이지 않은 XML이다. 문제를 일으키는 XML파일은 JATS (Journal Article Tag Suite) 형식이다. JATS는 논문이나 저널의 메타데이터를 공통된 포맷을 제공한다. 이 형식은 어느정도 정형화된 포맷을 유지하지만 일부 HTML Entity가 섞여있기 때문에 평범하게.. 2020. 5. 28.
안드로이드 앱에 애드몹(Admob) 광고 적용 방법 안드로이드 앱을 만든적은 여러번 있었으나 정작 광고를 넣어본적은 없었다. 조만간 개발할 앱에 적용하면 좋겠다는 생각에 정리해보겠다. 기본적으로 안드로이드 앱 광고는 Google AdMob 을 이용한다. 가입이 선행되어야 하고 자세한 절차는 admob 공식 document 를 참고하면 된다. 어떤 방식을 광고를 넣을 수 있는지 알아보자. 1. 필요조건 Use Android Studio 3.2 or later minSdkVersion 14 or later compileSdkVersion 28 or later Recommended : Create a Google AdMob account and register an app. 2. Mobile Ads SDK 설정 Gradle 설정을 통해 AdMob SDK Dep.. 2020. 5. 27.
[Linux/shell] find 명령어 정리 Linux 기반의 시스템에서 사용할 수 있는 커맨드 중 하나로 특정 Directory에서 원하는 파일을 찾을 수 있는 기능이다. 파일 단위로 뭔가를 다루기 위해서는 반드시 알아야 하는 커맨드 중 하나이다. 다양한 옵션을 제공하기 때문에 잘 활용하면 원하는 파일들의 목록을 가져올 뿐만 아니라 찾은 파일들로 추가로 작업 할 수도 있다. 기본적인 사용법부터 알아가보자. 커맨드의 사용법을 알기 위해서는 find --help나 man find 를 통해 사용법을 알 수 있다. $ man find NAME find - search for files in a directory hierarchy SYNOPSIS find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expre.. 2020. 5. 26.