일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 안드로이드
- ReactiveProgramming
- Kotlin
- 코루틴
- android
- kotlin강좌
- 테스트
- Coroutine
- theming
- mockito
- g 단위테스트
- 안드로이드강좌
- 병럴프로그래밍
- 안드로이드스튜디오
- 알게되는
- 병렬프로그래밍
- k8s
- 책
- 스레드
- Gradle
- 회고
- 코틀린
- Compose
- 커스텀상태
- 글또
- 자바
- 디자인패턴
- Rxjava
- 알고리즘
- viewmodel
- Today
- Total
목록전체 글 (154)
선생님, 개발을 잘하고 싶어요.
이번 글은 작업할 때 생각 흐름을 나열하는 식의 글이기 때문에 편한 말투를 사용합니다. 독서타임 1.0.10 버전에서 통계 기능이 추가되었다. 통계 페이지에 독서 시간 통계를 위해서 바 그래프 UI를 구성해야 했다. 내가 이 디자인을 완성하기 위해서 거치는 생각 프로세스를 정리해보고자 한다. 우선 가장 먼저 디자인을 보며 화면을 그리기 위해서 필요한 데이터를 가장 먼저 생각한다. 가장 간결하게 생각하면 각 독서 기록 시간 리스트를 떠 올 릴 수 있다. 시간 리스트만 있다면 디자인에서 보이는 평균 시간, 최고 시간, 최저 시간을 모두 계산할 수 있을 것이고, 바 그래프의 상대 크기를 결정할 수 있을 것이다. 또 포인트 컬러가 필요하다. 디자인에서 드러나지만 책에 설정된 컬러 값에 따라서 최고 시간을 표현하..
서문 - 왜 이런 걸 하나 독서타임에 온보딩 기능을 추가하는 중이다. 온보딩은 앱을 사용하면서 달성하고자 하는 게 무엇인지 입력받는 것부터 시작한다. 유저는 목표를 2개까지 선택할 수 있다. 그렇다면 유저가 3개째를 선택할 때는 어떻게 해야 할까? 이미 2개까지 선택할 수 있다는 경고 문구를 두었으니 3개째 클릭에 아예 피드백을 안주는 선택지도 있지만 용납할 수 없었다. 최소한의 피드백으로 토스트 메시지를 띄우자니 영 멋이 없었다. 그래서 목표 위젯이 부들부들 떨리는 애니메이션과 진동으로 유저에게 피드백을 주는 방법을 떠올렸다. 왜냐하면 그게 간지 나니까. 분명 위아래로 진동하는 애니메이션을 구현하고 싶었건만, 결과물은 길거리 양아치마냥 고개를 까딱거리는 애니메이션이 탄생했다. 디자이너(트라)에게 넘기니..
총점 3/5 총평 위대한 것은 개인의 작고 위대한 생각에서 부터 시작된다. 컴퓨팅 세상에서 가장 위대한 운영체제의 개발 역사를 잘 보여주는 책이다. 재밌는 사실 벨연구소는 AT&T가 전국적인 전화 시스템을 제공하며 마주한 문제를 체계적으로 다루기 위해서 설립되었다. 벨연구소에서 트랜지스터가 발명되었다. 초기의 운영체제는 다수의 분산된 사용자에게 하나의 컴퓨터를 나눠 사용하게 만들기 위한 수단이었다. 최초 컴퓨터가 얼마나 비쌋는지는 유명하다. 유닉스 처음은 켄 톰프슨이 벨연구소에 있던 PDP-7을 위한 1000줄짜리 단일 사용자용 OS 커널부터 시작이었다. 이 코드는 3주만에 작성되었다. 켄 톰프슨은 구글에서 Go 언어를 개발했다. core dump는 초기 컴퓨터의 주기억장치가 자기 코어 장치였던 점에서 ..
총점 5/5 총평 위대한 제품을 만들고자 하는 욕망으로 똘똘 뭉친 기밀한 조직의 숨 막히는 마라톤을 보았다. 책을 읽으며 알게된 재밌는 사실들 안드로이드는 카메라를 위한 운영체제를 만들고 싶어서 시작한 프로젝트다. 구글에 투자를 받으러 갔다가 인수당했다. 구글은 안드로이드 팀을 인수한 이후에 자본과 기술력을 제공하면서도 큰 회사의 일부로 두지 않고 작은 스타트업의 자율성을 그대로 보장했다. 구글에 인수됐을 때 안드로이드 팀은 총 8명이고 그중 절반만 코드를 건드리고 있었다. 자바를 사용하기로 결정하고보니 런타임이 필요했다. 성능과 공간에 모두 이득을 얻고자 달빅런타임을 만들었다. 초창기 모바일기기에는 GPU가 없었다. GPU를 모방하는 소프트웨어 계층인 PixelFlinger를 설계했다. 나중에는 GPU..
Composable의 라이프사이클은 Activity 라이프사이클에 비하면 무척 간단하다. 총 세 단계만 기억하면 된다. Enter the Composition Composable 함수가 Composition 트리에 추가되는 순간이다. 즉, 최초로 Composable 함수가 호출되는 순간이다. Recompose 0 or more times 그러진 Composable에 State가 변경되면 UI를 다시 그려야 한다. 즉, 새로운 파라미터로 Composable 함수가 호출되는 순간이다. Leave the Composition Composable 함수가 Composition 트리에서 제거되는 순간이다. Lifecycle 확인하기 아래 코드로 설명한 Composable 각 라이프사이클 단계에 로그를 심을 수 있다..
러스트 왜 시작했나 안드로이드 개발자로 커리어를 쌓으며 항상 한 쪽에 불안감을 가지고 있다. 내가 지금까지 쌓은 커리어와 지식이 특정 플랫폼에만 종속되는 것은 아닐지, 소프트웨어 개발이라는 커다란 판에서 일회용 코더가 되는 것은 아닐지 하는 불안이다. 러스트는 이런 불안을 해소하기 위해 내가 찾은 공부 거리 중 하나였다. 예전에 웹 프론트 개발하는 친구에게 러스트라는 언어를 들었었고 C와 비슷한 런타임 성능을 내는 낮은 수준의 언어라는 내용이라 흥미를 자극했다. 지난 추석 시간이 남아서 러스트에 대해 본격적으로 알아보기 시작했는데 조금만 검색해봐도 양질의 학습 자료를 찾을 수 있었고, 이 언어는 공부할 만하겠다고 생각했다. 뭐가 재밌나 그리고 실제로 러스트에 다이브했다. 거의 3주 정도 시간을 들여서 러..
이전 포스트 그래들 기본 컨셉의 이해 후속 포스팅입니다. 이번 포스팅을 잘 따라오려면 다음과 같은 걸 알고있으면 좋습니다. 그래들 프로젝트, 빌드 스크립트, 테스크, 플러그인에 대한 이해 자바 프로그램 컴파일에 대한 아주 최소한의 지식 이번 포스팅을 읽으면 좋은 대상은 다음과 같습니다. 자바 프로젝트 생성하는데 ide의 도움 없이는 만들지 못하는 사람 이제 자바 애플리케이션 직접 만들며 각 컨셉이 어떻게 사용되는지 확인해봅시다. 그래들 프로젝트 준비하기 우선 그래들 프로젝트를 초기화합니다. mkdir gradle-java-project # 폴더 생성 cd gradle-java-project # 폴더로 이동 gradle init # gradle project 생성 그래들 init 옵션은 전부 기본 값으로 ..