일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- viewmodel
- 안드로이드스튜디오
- 안드로이드
- Gradle
- 코루틴
- 디자인패턴
- kotlin강좌
- Coroutine
- 병럴프로그래밍
- 알게되는
- 코틀린
- 책
- 테스트
- 자바
- theming
- 글또
- 회고
- Compose
- 병렬프로그래밍
- g 단위테스트
- android
- ReactiveProgramming
- k8s
- 커스텀상태
- Rxjava
- mockito
- 스레드
- Kotlin
- 안드로이드강좌
- 알고리즘
- Today
- Total
목록전체 글 (154)
선생님, 개발을 잘하고 싶어요.
우선 참조 링크 https://developer.android.com/topic/libraries/architecture/navigation/navigation-implementing#java Navigation Principles- 앱은 고정된 시작 지점을 가진다.- 네비게이션의 상태들은 스택처럼 관리된다.- 업 버튼으론 절대 앱을 나가지 않는다.- 백 버튼으론 절대 앱을 나가지 않는다.- 여러 방향으로 깊게 연결해서 도착한 곳이 같은 목적지라면, 똑같은 네비게이션 스택을 가진다. Navigation Architecture Component 를 사용한 네비게이션 구현 프로젝트 환경 설정 (이게 제일 중요) 0. Refactor > Migrate to AnroidX 로 리펙토링 하기(중요중요! 안됬다 싶..
항상 블루투스를 스캐닝 하는 어플리케이션을 만들 일이 생겼다. 필요한 사항으론 1. 블루투스를 "항상" 스캐닝 한다. 2. 특정 블루투스가 감지되는지 안되는지 여부를 판단해 lost / found를 설정한다. 이를 위해 프로그램 개발 방향은 0. 블루투스 권한 및 위치 권한 확보 1. "항상" 스캐닝 할 수 있도록 service 를 구성한다. 2. service 가 꺼지지 않도록 한다. 3. lost / found 상태를 타이머를 통해 설정한다. 0.메니페스트에 권한 설정을 해주고 123cs onCreate 시에 블루투스 확인과 위치권한 확인을 동적으로 수행해주자. 1234567891011121314151617181920212223242526final BluetoothManager bluetoothMan..
1. 잠금화면 구현 1.1 빈 액티비티의 잠금화면 띄우기 1.2 커스텀 잠금화면 액티비티 상에 잠금 해제 로직 추가 1.3 APP의 데이터를 화면에 띄워주고 정답 맞출 경우 1.2 적용 1.4 오답일 경우 화면 표시 개발 1.5 커스텀 잠금화면 액티비티에 자기가 원하는 이미지 띄우기 개발 1.6 잠금화면 풀때 드래그로 yes / no로 이동되는 기능 2. APP 실행시 화면(메인 앱 화면) 개발 2.1 메인 화면 개발 (OX퀴즈, 틀린부분찾기, 설정 기능 접근) 2.2 OX 퀴즈(오답노트) 화면 개발 2.3 틀린부분 찾기 개발3. 설정 페이지 개발 3.1 설정 메인 페이지 개발 (퀴즈 설정, 스킨 설정, 글꼴 설정 기능 접근) 3.2 잠금화면에 Display할 퀴즈 설정 개발 3.3 잠금화면 액티비티의 ..
잠금화면을 구현했는데 통화가 오는 경우에도 커스텀 잠금화면이 화면 위를 덮어서 통화가 불편했다. (잠금화면에 문제를 틀리면 일정시간 강제 잠금이라 생각보다 매우 화나더라.) 따라서 통화중인지 아닌지 여부를 판단하여 통화가 온 상태라면 잠금화면을 띄우지 않도록 구현하였다. 1. 전화상태를 체크하기 위해서 READ_PHONE_STATE 권한 필요 - 2. 전화상태를 읽는 리스너 등록1234567891011private var mIsPhoneIdle = trueprivate val phoneListener = object : PhoneStateListener() { override fun onCallStateChanged(state: Int, incomingNumber: String) { when (state..
내장된 라이브러리가 존재 선형 자료 구조 # 정적 배열 (array) - 인덱스를 통해 자료에 접근 # 동적 배열 (std::vector) - 정적 배열과 같으나, 배열의 크기를 런타임에 바꿀 수 있다. 정렬 - algorithm 내의 sort, partial_sort, stable_sort 를 사용 => 정렬을 하기위해 비교 함수를 명시해야 한다. => 비교 함수 사용법 알아둘 필요가 있다. 검색 - 정렬후 이진탐색 (lower_bound, upper_bound, binary_search) # 연결 리스트 (std::list) - 임의의 위치에 새로운 문자를 삽입 할 때 효율적 (그 외에는 배열을 사용하도록 하자) # 스택 (std::stack) - 후입선출 (LIFO) - push, pop # 큐 (..
참고자료 : https://developer.android.com/guide/components/services?hl=ko Service : 백그라운드에서 작업을 수행할 수 있는 어플리케이션 구성요소 (cf. 어플리케이션 구성요소 : Activity, Service, Broadcast Receiver, Content Provider) 시작됨 - startService() 를 호출하여 시작 - onStartCommand() 를 사용하여 구성 요소가 서비스를 시작할 수 있게 허용 바인드됨 - 애플리케이션 구성 요소가 bindService() 를 호출하여 해당 서비스에 바인드되어 구성 요소가 서비스와 상호작용 가능 - onBind() 를 사용하여 바인딩을 허용 onStartCommand() - 다른 구성 요소..
문제 링크 처음에는 수열의 부분합의 최소를 구하는 문제의 변형인거 같아서 다양한 최적화 방법을 생각해 봤는데 분산을 구할때 시간 복잡도를 낮추는 방법을 생각해내지 못해서 N이 최대 500이라는 점을 착안, 그냥 택스트를 그대로 코드로 옮겨 적기로 했다. #include #include #include #include #define MIN(a,b) ((a)>(b)? (b):(a)) int N, K; int a[500]; int main() { scanf("%d %d", &N, &K); for (int i = 0; i < N; ++i) { scanf("%d", &a[i]); } double result = 987654321; for (int i = 0; i < N - K + 1; ++i) { for (int..
토큰 - ERC20 토근 - 공통 규약을 따르는 스마트 컨트랙트 (다른 모든 토큰 컨트랙트가 사용하는 표준 함수 집합) - 누가 얼마나 많은 토큰을 가지고 있는지 기록 / 사용자들이 그들의 토큰을 다른 주소로 전송할 수 있게 해줌 - ERC721 토큰 - 토큰이 유일하고 분할 불가능 토큰의 규약에 맞춰서 함수들 구현하면 된다. SafeMath - using SafeMath for uint256 ... - add, sub, mul, div library 키워드 - contract 와 비슷하지만 - using 키워드를 사용할 수 있게 한다. - 라이브러리의 메소드들을 다른 데이터 타입에 적용 가능 주석 - // - /**/ - 솔리디티 커뮤니티 표준 natspec /// @title 기본적인 산수를 위한 컨..