전체 글 (84) 썸네일형 리스트형 32. Kotlin Flow 도입하기 새롭게 시작하는 프로젝트에 평소에 사용하던 LiveData 대신 Flow 로 데이터를 처리해보고 싶어서 Flow 를 도입해보았다. 기본적인 문법을 단순히 정리하는 것보다 어려움을 겪었던 부분에 대해서 정리해보려 한다. collect 와 collectLatest collect collect 를 보면 suspend 함수를 사용하여 emit 된 이벤트를 순차적으로 소비하는 함수이다. 이때 emit 속도 > collect 속도라면, 데이터의 소비가 느려질 수 있다. 즉 데이터가 발행되는 속도가 소비되는 속도보다 더 빠르다면 발행된 데이터가 바로 소비되지 못하고 기다리게 되는 것이다. 이렇게 되면 새로운 데이터가 발행되어도 이전의 데이터부터 순차적으로 소비하기 때문에 최신의 데이터로 ui 를 바로 그려야 하는 상.. 31. LiveData postValue vs setValue LiveData 는 관찰 가능한 데이터 홀더 클래스로 안드로이드 수명 주기를 인식한다는 특징을 가지고 있는 클래스다. Observe 패턴을 통해서 데이터가 변경됨에 따라 UI 를 자동으로 업데이트 할 수 있다는 장점이 있다. 이번 글에서는 LiveData 의 데이터를 업데이트 할 수 있는 메서드인 postValue 와 setValue 의 차이에 대해서 설명한다. setValue 메인 스레드에서 호출해야하며, 호출하자마자 변경된 값을 받아올 수 있다는 특징을 가진다. 아래 예시 코드를 보면 이해가 더 쉽다. // MainActivity viewModel._test.value = 1 Log.d("setValue", "onCreate: ${viewModel.test.value}") viewModel._test.. 30. Navigation Component 안드로이드 개발에서 화면 간 이동을 구현하는데 도움을 주는 라이브러리인 Navigation Component 에 대해 알아보자. * 자세한 사용 방법은 공식문서에 잘 설명되어 있다. 이 게시물에서는 3가지의 구성 요소를 중심으로 설명한다. 탐색 | Android 개발자 | Android Developers Android Jetpack의 탐색 구성요소를 사용하여 앱에서 탐색 구현 developer.android.com Navigation component 는 3가지 주요 요소로 이루어져 있다. Navigation graph 모든 Navigation 관련 정보를 포함하고 있는 리소스 파일이다. 리소스 파일의 하위 요소로는 destination 과 action 이 있는데, 이는 각각 activity / fra.. 6. Git 의 내부동작과 구조 개발 공부를 하거나 개발 협업을 경험해보았다면, 깃을 한 번 쯤은 사용해보았을 것이다. 3년 전에 깃을 처음 알게 된 후, 지금까지 사용하면서 나름 깃을 공부했다고 생각했다. 하지만 내가 한 것은 깃 공부가 아니라 깃 사용법 익히기 였던 것 같다. 그래서 이번에는 깃이 어떤 구조로 이루어져 있는지, 우리가 일반적으로 commit 을 할 때 내부에서는 어떤 일이 일어나는지 정리하려 한다. 먼저 깃은 분산 버전관리 툴이다. 각자의 저장소에 파일과 히스토리를 모두 복사할 수 있고, 중앙 서버에 문제가 생기면 각자의 저장소에 복사한 복제물로 작업을 이어나갈 수 있다. 모든 복제본이 서버 그 자체이며 모두가 원본과 백업본을 가지고 있다고 생각하면 이해가 쉬울 것이다. 이러한 깃은 각자의 저장소에 파일을 저장할 때.. 29. JVM 구조 JVM ( Java Virtual Machine ) 은 자바 프로그램 실행 환경을 만들어주는 소프트웨어로 유저 컴퓨터의 운영체제에 맞게 설치된다. 자바 소스코드를 컴파일하여 나온 자바 byte 코드를 실행하는 주체로서 모든 환경에서 동작이 가능하게 해준다. JVM 구조는 크게 Class Loader, Execution Engine, Garbage Collector, Runtime Data Area 로 나뉜다. Class Loader .java 파일을 컴파일하면 .class 파일이 생성된다. JVM 내로 이 .class 파일을 로드하고, Runtime Data Area 로 적재하는 역할을 하는 부분이 바로 Class Loader 이다. Execution Engine 메모리에 적재된 바이트코드를 명령어 단위.. 5. 운영체제 - 컴파일러 Compile 은 소스코드를 CPU 가 이해할 수 있는 기계어로 변환하는 작업이다. 여기서 소스코드는 C, C++, JAVA 등으로 작성된 파일이며, 이러한 소스코드 파일을 목적코드 파일로 변환하는 것이다. 코드를 작성하고 프로그램이 실행되는 과정은 아래와 같다. ✅ 코드 작성 ( 컴파일 ) 오브젝트 파일 ( 링킹 ) 실행 파일 ( 로드 ) 메모리 적재 후 수행 Compile 컴파일러는 Tokenizer , Lexer , Parser 를 거쳐서 구문분석 과정을 실행한다. 이 구문분석 과정이 완료되면 그 결과를 바탕으로 AST 가 생성된다. 🌲AST 란? Abstract Syntax Tree 의 약자. abstract 하게 작성된 parsing tree 로, 작성한 소스코드를 컴퓨터가 이해할 수 있도록 구.. [네이버 부스트캠프 웹・모바일 8기] 챌린지 수료후기 부스트캠프 챌린지 수료 후기로 오랜만에 블로그 글을 작성하려 합니다. ✅ 부스트캠프에 지원하기까지..올해 1학기는 저에게 4-2학기이자 졸업학기였습니다. 취업준비를 본격적으로 시작한 것은 아니었기 때문에 상반기 서류를 연습삼아 넣어보는 것으로 취준을 시작해보려 했습니다. 하지만 성격상 대충, 연습삼아가 쉽지 않아 결국 10곳에 가까운 회사에 지원했고, 일부는 코테까지 일부는 최종면접까지 경험해보았습니다. 학기와 병행하다보니 체력적으로나 정신적으로 정말 많은 에너지가 필요했습니다. 결국 최종 합격 소식은 받아보지 못했고 그렇게 수많은 탈락을 경험하고 난 후 고민에 빠졌던 것 같습니다. "내가 정말 개발자가 될 자격이 있을까?", "만약 나라면, 나와 함께 일하고싶을까?" 많은 생각들이 들며 조금은 위축되기.. 8. [Surveasy] 어플의 메인화면, HomeFragment 아래의 게시물에 이어지는 개발 과정 기록입니다. 7. [Surveasy] MainActivity 에서 하는 일 아래의 게시물에 이어지는 개발 과정 기록입니다. 6. [Surveasy] room db 이용하기 아래의 게시물에 이어지는 개발 과정 기록입니다. 5. [Surveasy] Register & Login 아래의 게시물에 이어지는 개발 과정 기록 self-motivated-developer.tistory.com 대부분의 어플이 그렇듯 메인화면에는 어플의 주요 기능과 관련한 컨텐츠가 들어가있다. 우리 어플의 주요 기능은 "설문 참여" 이기 때문에 메인화면인 홈화면에는 그와 관련한 컨텐츠와 기능들이 자리하고 있다. 💡 참여한 설문 개수, 적립된 리워드를 보여준다. 💡 유저가 아직 참여하지 않은 최근 설문.. 이전 1 2 3 4 ··· 11 다음