본문 바로가기

분류 전체보기

(106)
[자바스크립트] 비동기 함수 비동기 프로그래밍 자바스크립트는 싱글스레드이기 때문에 한 번에 하나의 작업만 수행할 수 있다. 하나의 작업이 끝날 때 까지 기다려야하는 문제를 해결하기 위해 비동기를 사용한다. 비동기는 특정 코드의 처리가 끝나기 전에 다음 코드를 실행할 수 있다. 비동기 방식 자바스크립트에는 콜백함수, Promise, async await 의 3가지 비동기 방식이 존재한다. Callback 함수 함수의 매개변수에 다른 콜백 함수가 중첩되어 사용된다면 코드가 복잡해지고 유지보수가 힘들어진다. 이 경우 들여쓰기 수준이 깊어지는 현상인 '콜백 지옥'을 마주하게 된다. Promise를 사용하여 '콜백 지옥'을 벗어날 수 있다. Promise Promise는 latency, delay 때문에 현재 당장 얻을 수 없지만 가까운 미..
[MySQL] 항목별 합계 구하기 GROUP BY를 사용하면 된다. ex ) 상품 아이디 별 수량의 합계를 구하고 싶을 때 : SELECT sum(d.quantity) as total FROM t_order_detail d JOIN t_product p ON d.product_id = p.id GROUP BY d.product_id
[MySQL] 한 주(일주일)의 데이터 가져오기 일요일 부터 토요일까지 데이터 가져오기 SELECT * FROM t_order WHERE YEARWEEK(order_time) = YEARWEEK(now()) ------------------------------------------------------------------- 월요일 부터 일요일까지 데이터 가져오기 SELECT * FROM t_order WHERE date(order_time) BETWEEN subdate(curdate(),date_format(curdate(),'%w')-1) AND subdate(curdate(),date_format(curdate(),'%w')-7);
BOJ 13460 구슬탈출2 (JAVA) https://www.acmicpc.net/problem/13460 13460번: 구슬 탈출 2 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net 문제 스타트링크에서 판매하는 어린이용 장난감 중에서 가장 인기가 많은 제품은 구슬 탈출이다. 구슬 탈출은 직사각형 보드에 빨간 구슬과 파란 구슬을 하나씩 넣은 다음, 빨간 구슬을 구멍을 통해 빼내는 게임이다. 보드의 세로 크기는 N, 가로 크기는 M이고, 편의상 1×1크기의 칸으로 나누어져 있다. 가장 바깥 행과 열은 모두 막혀져 있고, 보드에는 ..
가속도 센서 이용하여 화면 갱신하기 센서 사용을 위한 클래스 및 인터페이스 4가지 Sensor : SensorManager를 통해 활용하고자 하는 유형의 센서 클래스 생성 가능 SensorEvent : 센서를 통해 발생하는 이벤트의 정보를 담고있는 객체 SensorManager : 센서를 관리하고 이용할 수 있도록 하는 클래스, 센서 이벤트 리스너 등록, 센서의 값을 얻어올 수 있음 SensorEventListener : 센서 값이 변경되었을 때 SensorManager에서 이벤트 형태로 값을 전달받을 수 있도록 한다. SensorManager의 registerListener 메소드로 리스너를 등록, 센서 데이터 업데이트가 필요하지 않으면 unregisterListener로 리스너를 해제한다 가속도 센서 가속도계 센서는 3차원 공간에서의 ..
Android Component (5) Content Provider : 어떤 앱이 다른 앱으로 데이터를 제공하고자 할 경우 사용 요청은 ContentResolver 클래스에 의해 처리된다. 다양한 방법으로 데이터를 저장할 수 있다. 하나의 안드로이드 디바이스에는 다수의 ContentProvider가 존재할 수 있다. 특정 ContentProvider가 어떤 앱과 통신하는지 알아야하며 모든 데이터의 동기화를 유지해야한다. ContentResolver ContentResolver에서 아래 메서드들 중 하나를 호출하면 ContentResolver가 ContentProviders에게 해당 기능을 수행하라고 알려준다. query() : 데이터 읽기 insert() : 데이터에 행 추가 updeate() : 데이터 갱신 delete() : 데이터로부터..
Android Component (4) Fragment간 통신 서로 다른 Fragment들은 직접적으로 정보를 주고받을 수 없다. 반드시 Host Activity를 거쳐서 이루어져야한다. ViewModel 혹은 인터페이스를 활용하여 통신이 이루어진다. interface를 선언하고 해당 interface의 구현을 통한 간접 호출 : interface를 선헌하고, Activity에서 구현한다. fragment에서는 interface를 호출한다. bundle을 이용한 통신 : Activity가 중간 전달자 역할을 수행한다. activity의 method를 호출하면서 parameter로 전달한다. activity에서는 받은 값을 하위 fragment로 전달한다. 전달 받는 fragment에서는 arguments에서 읽는다. fragmentResult..
Android Component (3) bindService : startService()와는 달리 하나 이상의 클라이언트 컴포넌트 간의 통신을 구현 가능. 서비스를 실행시켜놓고 필요할 때마다 서비스의 메소드에 접근하여 통신할 수 있는 구조. bindService 생명주기 서비스가 bindService로 시작되면 onCreate()->onBind() 함수가 호출되면서 Running 상태가 된다. bindService()로 실행된 서비스는 unbindService()로 종료 종료하면서 onUnBind()->onDestroy() 함수가 호출된다. onCreate()->onBind()->onUnbind()->onDestoy() startService 생명주기 onCreate()->onStartCommand()->onDestroy() Binder를 ..