일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- 스레드
- k8s
- kotlin강좌
- 디자인패턴
- 안드로이드강좌
- mockito
- 테스트
- theming
- 글또
- 자바
- 안드로이드
- Rxjava
- 코루틴
- Gradle
- android
- viewmodel
- 병렬프로그래밍
- 안드로이드스튜디오
- ReactiveProgramming
- Kotlin
- 커스텀상태
- Coroutine
- 책
- 병럴프로그래밍
- 알게되는
- 회고
- 코틀린
- Compose
- 알고리즘
- g 단위테스트
- Today
- Total
목록안드로이드 (22)
선생님, 개발을 잘하고 싶어요.
총점 5/5 총평 위대한 제품을 만들고자 하는 욕망으로 똘똘 뭉친 기밀한 조직의 숨 막히는 마라톤을 보았다. 책을 읽으며 알게된 재밌는 사실들 안드로이드는 카메라를 위한 운영체제를 만들고 싶어서 시작한 프로젝트다. 구글에 투자를 받으러 갔다가 인수당했다. 구글은 안드로이드 팀을 인수한 이후에 자본과 기술력을 제공하면서도 큰 회사의 일부로 두지 않고 작은 스타트업의 자율성을 그대로 보장했다. 구글에 인수됐을 때 안드로이드 팀은 총 8명이고 그중 절반만 코드를 건드리고 있었다. 자바를 사용하기로 결정하고보니 런타임이 필요했다. 성능과 공간에 모두 이득을 얻고자 달빅런타임을 만들었다. 초창기 모바일기기에는 GPU가 없었다. GPU를 모방하는 소프트웨어 계층인 PixelFlinger를 설계했다. 나중에는 GPU..
도입 뷰를 enabled, checked 여부에 따라서 다른 리소스를 사용해서 보여줘야 하는 경우가 많다. 이런 경우 우리는 selector를 활용한다. enabled, checked와 같이 안드로이드 플랫폼에서 미리 정의된 상태에 대해서는 이미 편하게 selector를 만들고 사용하지만 개발을 하다보면 새로운 요구 사항을 만족하는 화면을 그려야 할 때가 있다. 가령 예를 들어 TextField의 내용에 에러가 있을 때는 빨간 테두리를 그려주고 그러지 않을 때는 검은 테두리를 그려야 하는 요구사항이 있을 수 있다. 하지만 state_enabed는 있어도 state_error와 같은 커스텀 상태는 존재하지 않는다. 이번 포스팅에서는 이러한 커스텀 상태를 정의하고 사용하는 가이드를 보여주려고 한다. 작업하기..
도입 어떤 프로젝트를 해도 사용자 인증은 중요한 키워드다. 그리고 사용자의 쉬운 접근을 위해서는 소셜 로그인 지원은 거의 필수적이다. 이번에는 카카오 로그인에 대해서 a-to-z까지 따라만 하면 성공하는 형태로 포스팅을 쓴다. (유용한 gists 도 제공한다!) 절차 준비물 카카오 로그인을 설정하기 위해선 다음을 미리 준비하자. 카카오 개발자 계정 카카오 로그인 적용을 위한 안드로이드 프로젝트 카카오 디벨로퍼 페이지에서 준비하기 카카오 디벨로퍼 페이지에서 사용할 애플리케이션을 등록하자. https://developers.kakao.com/console/app 애플리케이션 추가하기 버튼을 눌러준다. 앱 이름, 사업자명을 지정한 다음 저장하기를 누른다. SampleOauthLogin 애플리케이션이 추가된 걸..
흔한 개발 시나리오 왜 Coroutine이 필요할까요? 이를 쉽게 이해하기 위해서 회원가입을 해야 하는 상황을 생각해봅시다. 편의를 위해서 회원가입 완료할 때 로그인 처리까지 하고 싶다고 합시다. 이메일, 비밀번호를 입력받습니다. 이메일, 비밀번호를 기반으로 회원가입을 요청합니다. 회원가입이 성공적으로 완수되면, 해당 이메일과 비밀번호를 사용해서 로그인을 요청합니다. 성공 메시지를 노출시킵니다. 이걸 코드로 옮겨보겠습니다. // 1. 이메일, 비밀번호를 입력 받습니다. val email: String = "greedy0110@gmail.com" val password: String = "0110" // 2. 이메일, 비밀번호를 기반으로 회원가입을 요청합니다. server.requestSignUp(emai..