전체 글
-
REST API : 웹상의 자원에 접근하는 방식을 정의한 아키텍처Programming/Android 2020. 9. 13. 00:46
REST(REpresentational State Transfer)란? - 웹의 장점을 최대화 할 수 있는 아키텍처 - HTTP 프로토콜 기반으로 웹상의 자원에 접근하는 방식을 정해놓은 아키텍처/인터페이스 REST의 속성 1. 서버에 있는 모든 Resouce는 각 Resource당 클라이언트가 바로 접근할 수 있는 고유 URI가 존재한다. 2. 모든 요청은 클라이언트가 요청할 때마다 필요한 정보를 주기 때문에 서버에서는 세션 정보를 보관할 필요가 없습니다. 그렇기 때문에 서비스에 자유도가 높아지고 유연한 아키텍처 적응이 가능합니다. 3. HTTP 메소드를 사용한다. 모든 Resource는 일반적으로 HTTP 인터페이스인 GET, POST, PUT, DELETE 4개의 메소드로 접근되어야 한다. 4. 서비..
-
-
[RxJava] 4. Filtering & Combining OperatorProgramming/RxJava 2020. 9. 6. 15:03
Filtering & Combining Operator 분류 조합 연산자 Filtering Operator Combining Operator Utility 1. Filtering Operator (분류 연산자) debounce 아이템이 생성되고 일정시간 동안 다른 아이템이 생성되지 않으면 데이터를 전달하는 연산자 distinct 이전에 전달한 아이템은 전달하지 않게 하는 연산자이다. 중복 제거 distinctUntilChanged 변경이 생기기 전까지 중복된 데이터를 전달하지 않는 연산자이다. 동일한 값을 가진 객체를 필터링하고 싶을 때는 클래스 내부에 hashCode와 equals가 구현되어 있어야 한다. 변경이 생기기 전까지 중복데이터를 전달하지 않는다. filter 특정 조건에 참이 되는 데이터만 ..
-
[RxJava] 3. Creating & Transforming OperatorProgramming/RxJava 2020. 9. 6. 01:50
RxJava 연산자 1. Creating Operator : Obseverbale을 생성하는 연산자 defer 연산자 defer 연산자는 옵저버가 구독할 때까지 Observable의 생성을 지연시키다가 subscribe() 메소드를 호출할 때 Observable 아이템을 생성한다. just() 메소드와 defer() 메소드를 통해 각각 Observable을 발행하고 5초 간 Thread를 sleep시킨 뒤 구독 하면 just() 연산자로 만든 옵저버블은 객체를 생성하는 시점의 시간을 발행하고, defer() 연산자로 만든 옵저버블은 구독한 시점의 시간을 발행한다. 구독하기 직전에 Observable을 생성하여 가장 최신의 상태 또는 아이템이 포함되도록 하는 것이 목적이라면 defer 연산자를 사용할 수 ..
-
[RxJava] 2. Subject / 생산자Programming/RxJava 2020. 9. 2. 15:27
SubjectSubject는 Observable과 Observer를 모두 구현한 추상 타입으로 하나의 소스로부터 다중의 구독자에게 멀티캐스팅이 가능하다.Subject는 Observer를 구현하므로 onNext(), onError(), onComplete() 등 메소르르 수동으로 호출하여 이벤트를 구독자들에게 전달할 수 있다.Observable 이면서 Observable이다. 발행과 구독을 모두 Subject 객체를 통해 한다.* Observable과 Observer의 성격을 둘다 가지고 있는 클래스 * Observable이 가지고 있는 subscribe와 여러 operator를 사용 할 수 있음 * Observer가 가지고 있는 onNext, onError, onComplete를 사용 할 수 있음 * s..
-
[아키텍처] MVP Pattern의 이해Programming/Android 2020. 9. 1. 02:36
MVC 패턴 단점 MVC 패턴은 UI와 비즈니스 로직이 분리되지 않아 액티비티(컨트롤러)가 방대해진다. 컨트롤러는 뷰와 모델에 의존적이고 뷰는 모델에 의존적이라 결합도가 높아 유닛테스트가 거의 불가능하다. 궁극적으로 유지보수비가 증가하고 생산성이 저하되는 것이다. MVP 패턴은 UI와 비즈니스 로직을 분리시키는데 초점을 둔다. 뷰는 사용자에게 화면을 보여주고, 사용자는 뷰와 상호작용한다. 뷰는 사용자 이벤트를 프레젠터에게 전달하고, 프레젠터는 데이터(모델)를 업데이트(저장/수정/삭제)한다. 프레젠터는 변경된 모델(데이터를) 가져와서 UI를 업데이트(화면 갱신) 한다. 장점 프레젠터는 뷰와 모델의 인스턴스를 가지며 이 둘을 연결해 주는 역할을 하므로 Presenter와 View는 1:1 관게를 갖는다. 따..
-
[프로그래머스] 피보나치 수열 - Python코딩테스트 2020. 8. 22. 23:41
def solution(n): answer = 0 fibo = [] for i in range(0, n+1): if i == 0 : fibo.append(0) elif i == 1: fibo.append(1) else : fibo.append( fibo[i-2] + fibo[i-1] ) answer = fibo[len(fibo)-1] % 1234567 return answer https://programmers.co.kr/learn/courses/30/lessons/12945 코딩테스트 연습 - 피보나치 수 피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다. 예를들어 F(2) = F(0) + F(1) = 0 + ..
-
[SQL] 오랜 기간 보호한 동물(2)코딩테스트 2020. 8. 17. 14:53
https://programmers.co.kr/learn/courses/30/lessons/59411 코딩테스트 연습 - 오랜 기간 보호한 동물(2) ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디 programmers.co.kr 문제 입양을 간 동물 중, 보호 기간이 가장 길었던 동물 두 마리의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 기간이 긴 순으로 조회해야 합니다. 정답 SELECT outs.ANIMAL_ID, outs.NAME FRO..