전체 글
-
[RxJava] 1. Observer Pattern에 대한 이해Programming/RxJava 2020. 8. 16. 19:46
Observer Pattern (관찰자 패턴) 옵서버 패턴(observer pattern)은 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다. 주로 분산 이벤트 핸들링 시스템을 구현하는 데 사용된다. Instance observer/subscriber Observable Observable(옵저버블)은 이벤트를 만들어내는(emit) 주체 이벤트 스트림을 통해 만든 이벤트를 내보낸다. (0 개부터 여러 개의 이벤트를 내보내는 것이 가능) Observer Observer(옵저버)는 Observable에서 만들어진 이벤트에 반응(react)하며, 이벤트를 받았을 때 수행할 ..
-
[RxJava] 넷플릭스가 만든 라이브러리, RxJavaProgramming/RxJava 2020. 8. 16. 14:18
Reactive Extentions(ReactiveX) ReactiveX는 이벤트 기반 비동기 프로그래밍을 위한 라이브러리이다. 콜백 방식과 달리, 발생하는 이벤트를 이벤트 스트림에 전달하고, 이벤트 스트림을 관찰하다가 원하는 이벤트를 감지하면 이에 따른 동작을 수행하는 방식 RxJava란 무엇인가? RxJava는 넷플릭스에서 만든 Reactive Programming 라이브러리다. ReactiveX 라이브러리의 JVM 구현체. ReactiveX 라이브러리에서 제공하는 기능들을 안드로이드를 포함한 모든 자바 기반 플랫폼에서 사용할 수 있도록 한 것이다. RxJava는 함수형 프로그래밍이다. Java는 함수형 언어가 아니므로 RxJava 라이브러리는 순수 함수로 작성된 리액티브 연산자를 제공한다. 리액티브..
-
[Android] ViewHolderProgramming/Android 2020. 8. 14. 17:43
ViewHolder란 View를 보관하는 객체이다. ListView와 RecyclerView는 inflate를 최소화하기 위해 View를 재활용 한다. 이 때, 각 뷰의 내용을 업데이트 하기 위해 findViewById를 매번 호출 해야한다. 이로 인해 성능저하가 일어남에 따라 ItemView의 각 요소를 바로 엑세스 할 수 있도록, 저장해두고 사용하기 위한 객체이다. 성능 향상을 위한 방법론이다. 각 아이템이 보여질 때마다 inflate되는 것을 최소화하여 성능을 높이기 위해 ViewHolder에 View를 저장하여 사용한다. ※ inflate? : xml 기술된 View의 정의를 실제 VIew 객체로 만드는 것(메모리에 올리는 것)을 말함. ListView에서 ViewHolder getView()에서..
-
안드로이드 빌드 도구, GradleProgramming/Android 2020. 8. 12. 21:04
Gradle이란 빌드도구이다. 안드로이드 스튜디오(IDE)와 Gradle(빌드도구)는 독립적이다. => Sync(동기화)작업을 수행해야한다. 안드로이드 스튜디오는 IDE와 빌드도구가 분리되어 있어 프로젝트를 보다 깔끔하게 관리가 가능하다. build.gradle 파일 모듈의 빌드 방법을 정의한 빌드스크립트 파일이다. Gadle은 Android 앱이나 라이브러리를 컴파일, 빌드 및 패키징하기 위한 유연한 방법을 제공한다. apply plugin: 'com.android.application' 안드로이드 플러그인 사용을 gradle에 적용하는 것. android [...} 안드로이드와 관련된 빌드 설정을 세팅하는 블럭 compileSdkVersion, buildToolsVersion compileSdkVer..
-
[프로그래머스 SQL] String ,Date - 중성화 여부 파악하기코딩테스트 2020. 8. 10. 19:20
https://programmers.co.kr/learn/courses/30/lessons/59409 -- 코드를 입력하세요 #1. CASE문 사용 SELECT ANIMAL_ID, NAME, CASE WHEN (SEX_UPON_INTAKE LIKE '%Neutered%' OR SEX_UPON_INTAKE LIKE '%Spayed%') THEN 'O' ELSE 'X' END AS '중성화' FROM ANIMAL_INS ORDER BY ANIMAL_ID ASC #2 IF문 사용 SELECT ANIMAL_ID, NAME, IF(SEX_UPON_INTAKE LIKE '%NEUTERED%' OR SEX_UPON_INTAKE LIKE '%SPAYED%','O','X') AS '중성화' FROM ANIMAL_INS ..
-
[SQL] 차집합, LEFT JOIN코딩테스트 2020. 8. 8. 18:59
https://programmers.co.kr/learn/courses/30/lessons/59042 문제 ANIMAL_OUT 테이블에서 ANIMAL_IN테이블에 없는 ANIMAL_ID를 추출하기. 해석 SELECT outs.ANIMAL_ID, outs.NAME FROM ANIMAL_OUTS as outs LEFT JOIN ANIMAL_INS as ins ON outs.ANIMAL_ID = ins.ANIMAL_ID WHERE ins.ANIMAL_ID IS NULL ANIMAL_OUTS테이블의 ANIMAL_ID와 NAME 컬럼의 데이터 들 중 ANIMAL_INS테이블의 ANIMAL_ID가 같은 데이터만 추출해라. 단, ANIMAL_ID가 NULL일 경우 에만 = ANIAML_OUTS 에만 있는 데이터들만 ..
-
[프로그래머스 스택/큐] 다리를 지나는 트럭코딩테스트 2020. 8. 8. 17:15
https://programmers.co.kr/learn/courses/30/lessons/42583 [ 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이�� programmers.co.kr ](https://programmers.co.kr/learn/courses/30/lessons/42583) 문제 정답 코드 def solution(bridge_length, weight, truck_weights): answer = 0 temp = [0] * bridge_length result = [] while temp: answer ..
-
[프로그래머스 스택/큐] 주식가격코딩테스트 2020. 8. 7. 19:55
문제 https://programmers.co.kr/learn/courses/30/lessons/42584 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. price return [1, 2, 3, 2, 3] [4, 3, 1, 1, 0] 3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다. 아이디어 case 0: 1,2,3,2 -> 4초 동안 안 떨어짐 case 1: 2,3,2 -> 3초 동안 안 떨어지고, 4초째에 떨어짐. case 2: 3,2 -> 1초 동안 안 떨어지고, 1초후 떨어짐 case 3: 2,3 -> 1초 동안 안 떨어짐..