일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 안드로이드
- activity
- Coroutine
- ViewModel
- AppBarLayout
- Navigation
- CustomView
- onMeasure
- sqlite
- CoordinatorLayout
- 코틀린
- hilt
- DataBinding
- room
- kotlin
- LiveData
- HTTP
- onLayout
- 알고리즘
- CollapsingToolbarLayout
- View
- Behavior
- recyclerview
- 백준
- Android
- lifecycle
- 알림
- Algorithm
- notification
- BOJ
- Today
- Total
목록Programming (프로그래밍) (212)
개발일지
alter user 'root'@'localhost' identified with mysql_native_password '123123'; 123123 대신 사용하고 싶은 비밀번호를 입력하면 된다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/djSU4W/btq3GEFXlsP/YBhQeHUckaEkkjkhgCPpDk/img.png)
기존에 설치했던 Database의 버전을 수정하거나 다른 Database로 변경할 때 유용한 방법이다. 사실 MySQL Installer로 설치해도 되지만 수동으로 설치하면 속도가 빠르고 수정이 편리하다. 1. 파일 다운로드 dev.mysql.com/downloads/mysql/ MySQL :: Download MySQL Community Server Select Operating System: Select Operating System… Microsoft Windows Ubuntu Linux Debian Linux SUSE Linux Enterprise Server Red Hat Enterprise Linux / Oracle Linux Fedora Linux - Generic Oracle Solaris..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/MH3IE/btq21N6ErKU/kqWIYxRaGKlduYbjXuI9hK/img.png)
양방향 데이터 바인딩 EditText에서 android:text="@{string}" 이런식으로 바인딩 하는 것을 단방향 바인딩이라고 한다. (Data를 EditText에 일방적으로 바인딩하는 개념) 양방향 데이터 바인딩은 EditText, RadioButton, DataPicker등 데이터가 변하는 View가 역으로 Data로 바인딩하는 것이다. * 기본으로 지원하는 Two-Way-Databinding LifeCycleOwner 설정하기 binding.lifecycleOwner = lifecycleOwner ViewModel 만들기 원래 양방향 데이터 바인딩은 ObservableField를 통해 타입을 정해서 가능했지만 LiveData도 지원하기 시작했다. 이번 예제에서는 LiveData를 통해 양방향..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/F4o1h/btq27Vapn7l/cjEDXzG86BeB6ZKj7fdklk/img.png)
www.acmicpc.net/problem/3830 3830번: 교수님은 기다리지 않는다 교수님의 질문 (? a b)이 입력으로 들어올 때 마다, 지금까지 측정한 결과를 바탕으로 a와 b의 무게 차이를 계산할 수 있다면, b가 a보다 얼마나 무거운지를 출력한다. 무게의 차이의 절댓값이 1,000, www.acmicpc.net 접근 처음에 Disjoint-Set과 LCA를 고민했다. Disjoint-Set을 고민한 이유는 간선을 추가할(샘플을 측정) 때 Disjoint-Set의 Union연산을 통해 하나의 Set으로 만들고, Find연산으로 쉽게 UNKNOWN인지 알 수 있기 때문이다. LCA를 고민한 이유는 무게차이를 구할 때 공통 조상 노드를 찾아서 거리를 구하면 logN만에 쉽게 거리를 찾을 수 있기..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/lrWSb/btq2ybz8tHV/VqlkeiZs4wkrsBFQ6aJtg1/img.png)
개념 CCW 알고리즘을 이용하여 두 선분이 교차하는지 판별할 수 있다. 작동원리 위 예시를 보면 CCW(A, B, C)와 CCW(A, B, D)가 반대방향(곱이 음수)이면 두 선분은 교차한다고 볼 수 있다. 하지만 위 예시와 같은 반례가 존재한다. (직선이 아닌 선분이기 때문에 CCW의 방향이 반대여도 교차하지 않을 경우가 있다.) 그렇기 때문에 CCW(A, B, C)와 CCW(A, B, D)의 방향, CCW(C, D, A)와 CCW(C, D, B)의 방향 두 번을 검사하여 교차하는지 확인할 수 있다. 하지만 두 선분이 같은 직선에 있을 경우 CCW가 0이 나온다. 위와 같은 반례는 CCW(A, B, C) * CCW(A, B, D) == 0 && CCW(C, D, A) * CCW(C, D, B) == 0..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bQoXiv/btq1WJCYOmb/UjlO3yuYXQmBWeKOzMv1C0/img.png)
Material Design Material Design에서 제공하는 요소들을 Navigation을 통해 쉽게 구현할 수 있습니다. Toolbar ... android:label을 통해 Toolbar의 Title을 설정할 수 있다. binding.toolbar.setupWithNavController(findNavController()) Toolbar의 setupWithNavController를 사용해서 지정할 수 있다. val appBarConfiguration = AppBarConfiguration(setOf(R.id.main, R.id.profile)) binding.toolbar.setupWithNavController(findNavController(), appBarConfiguration) 경..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/d9B0O4/btq1WhzZxMm/Bu9E1n4UdVMPfYrurybkVk/img.png)
Safe Args Navigation에서 데이터를 전달하는 Bundle 방식은 key-value 구조로 key값에 string을 입력하는 과정이나 value를 캐스팅하는 과정에서 개발자가 실수할 가능성이 있지만 Safe Args는 유형 안전성을 보장하므로 데이터를 탐색하고 전달할 때는 Safe Args를 사용하는 것이 좋습니다. Dependency build.gradle (Project) buildscript { repositories { google() } dependencies { def nav_version = "2.3.4" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } } build.gradle (..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bGGP4r/btq1WKaNhhb/LT0t4POMqKeOdsZtev3VKk/img.png)
Action Navigation에서 UI 대상간의 이동을 Action이라 하며 Action은 NavGraph에서 정의하고 NavController.navigate()를 사용해서 이동한다. => Activity간의 이동을 startActivity()로 이동하는 것과 같음 NavGraph에서 UI 대상을 정의할 때 넘겨 받을 Argument를 정의하고 Action을 정의할 때 Animation과 Pop Behavior 등을 정의한다. NavController 접근방법 Activity.findNavController(viewId: Int) Fragment.findNavController() View.findNavController() Animation Navigation의 장점으로 Action간의 Animat..