일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 안드로이드
- Coroutine
- 알고리즘
- 자바
- 디자인패턴
- 커스텀상태
- 안드로이드강좌
- 회고
- 글또
- Compose
- 스레드
- 테스트
- ReactiveProgramming
- Gradle
- Kotlin
- 안드로이드스튜디오
- kotlin강좌
- android
- g 단위테스트
- 병렬프로그래밍
- 코루틴
- k8s
- 코틀린
- viewmodel
- Rxjava
- 알게되는
- mockito
- theming
- 병럴프로그래밍
- 책
- Today
- Total
목록전체 글 (154)
선생님, 개발을 잘하고 싶어요.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/kCExq/btq1OM64ECf/KBNKdxKjqLed98UJ295Ea1/img.png)
수명 주기 패러다임 Activity가 새로운 상태에 들어가면 시스템에서 호출하는 콜백 시스템 콜백 내부에서 일어나는 일, 무엇을 구현해야 하는 지 onCreate - 생성됨 상태 내부에서 일어나는 일 시스템이 Activity를 생성할 때 실행 생성됨 상태 → 시작됨 상태 해야 할 일 데이터 바인딩 뷰 바인딩 Activity와 ViewModel 연결 클래스 범위 변수 인스턴스화 이전 Activity 저장 상태가 포함된 savedInstanceState 세팅 onStart - 시작됨 상태 내부에서 일어나는 일 Activity가 사용자에게 보임 앱은 Activity를 foreground로 보내 상호작용 준비 시작됨 상태 → 재개됨 상태 매우 빠르게 완료 해야 할 일 앱이 UI를 관리하는 코드 초기화 onRes..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cdVFhr/btq1KceQBW3/Kiegt2MuhFj8plhyFJX5QK/img.png)
사이드 프로젝트가 배포를 앞두고 있습니다. (몇 달째 이 말을 하는지 모르겠지만...) 그래서 이제 배포를 하기 위해서 apk를 신나게 뽑고 있었습니다만 네, 앞으로 Google Play에 apk 배포 말고, App Bundle로 배포하라고 하네요. 한마디로 배포 관점에서 apk 배포는 dprecated 되었습니다. 이에 미루고 미룬 App Bundle을 왜 쓰나 알아보고, 직접 적용해 본 내용을 간단하게 정리합니다. App Bundle이 뭔데? 결국, 안드로이드 시스템이 앱을 소비하기 위해서는 apk가 필요합니다. App Bundle 자체를 실행할 수 있는 것은 아니죠. 그럼 App Bundle은 뭘까요? App Bundle을 사용하면 apk 생성과 Signing이 지연된다. 기존에는 개발자가 apk를..
Homebrew brew.sh/ How to Install > /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" --- Iterm2 iterm2.com/ PowerLevel 10K iterm2 level을 위한... 엄청난 친구 github.com/romkatv/powerlevel10k#prezto Iterm2 Material Design iterm2 profile에 지정하는 컬러 테마 github.com/MartinSeeler/iterm2-material-design --- nvim neovim.io/ How to Install > brew install neovim vim-plug..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ptWGY/btqZoxyBxbi/KwKKDkmfhyzIKIUHQWMTE1/img.png)
도입 다시 함수로 돌아와 볼까요? 이번 시간엔 코틀린이 제공하는 아주 강력한 기능인 확장 함수(Extension Function)에 대해서 알아보겠습니다. 저는 이 확장 함수가 코틀린을 코틀린답게 만드는 가장 큰 요소라고 생각하는데요. 같이 더 깊은 코틀린의 세계로 빠져 봅시다. TL;DR 확장 함수는 어떤 클래스의 인스턴스가 호출할 수 있는 함수를 클래스 밖에 정의하는 것이다. fun 클래스이름.함수이름(...) { } 형태로 정의한다. Toast, Toast, Toast 안드로이드를 개발하다 보면 사용자에게 Toast를 보여줘야 하는 경우가 생깁니다. 간단한 Toast를 보여주는 코드와 함께, 오늘의 포스팅을 시작해봅시다. 버튼을 누를 때, 사용자에게 토스트를 보여주고 싶다고 합시다. class Sa..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/c54gSI/btqZegwge5K/pUXTqAXpmXd3sPuOyXMbFk/img.png)
물리 서버 실제로 물리적 컴퓨터를 관리함. 하드웨어를 관리하는 비용이 듦. 컴퓨팅 리소스가 낭비되는 경향이 있음 소프트웨어 충돌, 네트워크 라우팅, 사용자 접근이 복잡 가상화 하드웨어를 소프트웨어로 에뮬레이션 하는 것. 닳아 없어지지 않는다. 여전히 하드웨어가 필요하다. (그 하드웨어에 설치한 소프트웨어로 가상화를 하는 것이다.) 따라서 물리 서버의 관리와 VM의 운영 로드가 추가된다. IaaS Public Cloud가 나오면서 문제가 해결되나? IaaS는 간단히 말해서, 가상 머신 사용자에게 물리 서버를 숨긴다. Infrastructure의 구성 요소가 하드웨어에서 소프트웨어로 넘어갔다. Infra의 구현 형태만 변경된 것이므로 여전히 운영체제, 앱 모니터링, 지원 도구 관리가 필요하다. PaaS Pa..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b3CODB/btqVcsVVSpp/dIrWF0pP2oDjpZCandW021/img.png)
대상 2개 이상의 라이브 데이터를 조합해서 사용하고 싶은 사람. MediatorLiveData가 별로라고 생각하는 사람. 문제 2개 이상의 라이브 데이터를 조합하여 새로운 라이브 데이터를 만들고 싶다고 해보죠. 예를 들면, 로그인 화면에서 이메일과 비밀번호가 작성되었을 때만 로그인의 enable 설정이 되었으면 이 화면에서 2개의 live data를 쉽게 설계할 수 있겠죠. val email: MutableLiveData = MutableLiveData() val password: MutableLiveData = MutableLiveData() 해결 해결할 때 Flow를 사용해 봅시다. val enableLogin = combine(email.asFlow(), password.asFlow()) { ema..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/nQbuM/btqU4ZyJS8A/d5iXAcxOKSjNonhV0LSGu1/img.png)
무엇을 원하는가? 완전 커스텀한 뷰의 Dialog 전면을 다 차지하는 Dialog 단계별로 따라 하기 1. AlertDialog 사용하기 Dialog를 띄우는 가장 쉬운 방법은 AlertDialog.Builder가 제공하는 기능만 사용하는 것입니다. setTitle, setMessage, setPositiveButton을 조합하면 위의 Dialog와 일치하는 정보를 제공할 수 있습니다. 개발 기간이 너무 촉박하다면 이 코드를 사용해보세요. AlertDialog.Builder(context) .setTitle("로그인 해볼까요?") .setMessage("로그인 후 사용할 수 있는 기능입니다.") .setPositiveButton("로그인 하기", null) .setNegativeButton("x") { ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/YtLJ0/btqRTRkeh52/RaztVzKkKNNkbGmdFBXOP1/img.jpg)
안드로이드 백그라운드 가이드 https://developer.android.com/guide/background 백그라운드 작업 분류 즉시 (Immediate) 사용자와 상호작용 해야 하는가? 지연 (Deferred) 사용자와 상호작용 하지 않아도 되는가? 정확한 시간에 작동하지 않아도 되는가? 정시 (Exact) 사용자와 상호작용 하지 않아도 되는가? 정확한 시간에 작동해야 하는가? 백그라운드 작업 분류에 따른 해결 즉시 (Immediate) 앱의 스코프 내부에서만 유요한: 코틀린 코루틴, RxJava 앱 외부 스코프에서도 유요한: WorkManager(with long running support) 미디어나 스마트키 위젯에 유요한: Foreground Service 지연 (Deferred) WorkM..