중단 함수는 코틀린 코루틴의 핵심이다.코루틴을 중단한다는 건 실행을 중간에 멈추는 것을 의미한다.코루틴은 중단되었을 때 Continuation 객체를 반환한다. Continuation을 이용하면 멈췄던 곳에서 다시 코루틴을 실행할 수 있다.코루틴과 반대로 스레드는 저장이 불가능하고 멈추는 것만 가능하다.코루틴과 스레드는 확연히 다르다. 코루틴이 훨씬 강력한 도구다. 중단했을 때 코루틴은 어떤 자원도 사용하지 않는다.코루틴은 다른 스레드에서 시작할 수 있고, Continuation 객체는 직렬화와 역직렬화가 가능하며 다시 실행될 수 있다. 재개중단 함수는 말 그대로 코루틴을 중단할 수 있는 함수다.즉, 중단 함수가 반드시 코루틴이나 다른 중단 함수에 의해 호출되어야 한다. suspend fun mai..

왜 중단이 필요한지, 중단이 어떤 것인지 알아보기 위해 시퀀스의 작동 방식과 시퀀스 빌더를 알아보자. 시퀀스의 특징 코틀린에서는 제너레이터 대신 시퀀스를 생성 할 때 사용하는 시퀀스 빌더를 제공한다.코틀린의 시퀀스는 List나 Set과 같은 컬렉션이랑 비슷한 개념이지만, 필요할 때마다 값을 하나씩 계산하는 지연(lazy) 처리를 한다.요구되는 연산을 최소한으로 수행한다.무한정이 될 수 있다. (-> while(true))메모리 사용이 효율적이다.sequence()라는 함수를 이용해 값을 순차적으로 계산하고 필요할 때 반환하는 빌더를 정의한다.시퀀스의 람다 표현식 내부에서는 yield() 함수를 호출하여 시퀀스의 다음 값을 생성한다.val seq = sequence { yield(l) yiel..

코루틴 장점멀티플랫폼에서 작동시킬 수 있기 때문에 코틀린을 사용하는 모든 플랫폼에서 사용할 수 있다.기존 코드 구조를 광범위하게 뜯어고치지 않고 코루틴을 도입할 수 있다. 안드로이드에서의 코루틴 사용흔한 애플리케이션 로직은 다음과 같다.하나 이상의 소스(API, 뷰 구성요소, 데이터베이스, 설정, 다른 애플리케이션)로부터 데이터를 얻어온다. 데이터를 처리한다.가공된 데이터로 무엇인가를 한다. (화면에 보여주기, 데이터베이스에 저장, API로 전송) 기존의 구현 방식과 코루틴을 사용한 예제를 비교하여 두 방법이 어떻게 다른지 알아보자.예제 상황 - API로 뉴스를 가져와서 정렬한 후, 화면에 띄운다. 1) 가장 간단한 방법fun onCreate() { val news = getNewsFromApi()..
https://www.acmicpc.net/problem/7662 문제이중 우선순위 큐(dual priority queue)는 전형적인 우선순위 큐처럼 데이터를 삽입, 삭제할 수 있는 자료 구조이다. 전형적인 큐와의 차이점은 데이터를 삭제할 때 연산(operation) 명령에 따라 우선순위가 가장 높은 데이터 또는 가장 낮은 데이터 중 하나를 삭제하는 점이다. 이중 우선순위 큐를 위해선 두 가지 연산이 사용되는데, 하나는 데이터를 삽입하는 연산이고 다른 하나는 데이터를 삭제하는 연산이다. 데이터를 삭제하는 연산은 또 두 가지로 구분되는데 하나는 우선순위가 가장 높은 것을 삭제하기 위한 것이고 다른 하나는 우선순위가 가장 낮은 것을 삭제하기 위한 것이다.정수만 저장하는 이중 우선순위 큐 Q가 있다고 가정하..
4차 데모데이 체크리스트 중 하나로 난독화 적용이 있었다.난독화를 적용하면서 알아본 내용들과 팀원들에게 설명하기 위해 문서화해둔 것을 티스토리에도 올려본다. 난독화 관련 PRhttps://github.com/woowacourse-teams/2024-ody/pull/415 config: 난독화 적용 by kimhm0728 · Pull Request #415 · woowacourse-teams/2024-ody🚩 연관 이슈 close #414 📝 작업 내용 난독화 적용 외부 라이브러리 난독화 예외 처리 추가 🏞️ 스크린샷 (선택) 🗣️ 리뷰 요구사항 (선택) 난독화 관련 간단히 정리했는데 참고만 부탁드려여github.com R8 컴파일러Android Gradle 플러그인 3.4.0 이상을 사용하여..

우아한테크코스 레벨3가 끝나갈 무렵, 학습 돌아보기 인터뷰를 진행했다. 나는 6명으로 이루어진 조에 배정되어 인터뷰이 1명, 인터뷰어 3명, 옵저버 2명으로 진행했다.사전에 준비해간 자료를 토대로 질문을 하고 그에 대한 답변을 하는 방식이었다.옵저버는 인터뷰 과정을 관찰하고 그에 대한 피드백을 전달한다.인터뷰 20분 + 피드백 10분으로 진행했다. 인터뷰 때 받은 질문과 답변, 피드백들을 정리해 보려고 한다. 인터뷰 사전 자료인터뷰를 위한 사전 자료를 같은 조 크루들끼리 공유해야 했다.레벨3 팀 프로젝트를 하며 학습/협업한 내용을 A4 한 장 내외로 정리하는 것이었는데,나는 내가 팀에 기여한 점과 협업 측면에서 배운 점들을 자세히 작성했다.여러 주제를 얕게 적는 것보다는, 한 두개의 주제를 자세히 작..
미션 관련 링크쇼핑 장바구니 레포지토리https://github.com/kimhm0728/android-shopping-cart쇼핑 장바구니 1, 2단계 PRhttps://github.com/woowacourse/android-shopping-cart/pull/54쇼핑 장바구니 3, 4단계 PRhttps://github.com/woowacourse/android-shopping-cart/pull/79 코드 리뷰 받은 코멘트들 일반적으로 뷰모델은 화면과 1:1 구조로 만든다흔히 화면 단위의 ViewModel은 액티비티와 1:1 대응 구조를 가지고는 합니다. 뷰모델의 역할은 프레젠터와 마찬가지로 데이터(UI 상태)를 관리하고, 비즈니스 로직을 수행하는 것이다.그렇기에 현재 "UI에서 비즈니스 로직을 수행..
글에 들어가기 전, 지극히 주관적인 내용임을 밝힌다.'이렇게 생각할 수도 있구나!'라는 생각으로 가볍게 읽어주면 좋겠다. - 우아한테크코스에서 MVP 아키텍처를 기반으로 을 진행했다.MVP 아키텍처 관련해서 리뷰어와 여러 의견을 주고 받았고, 덕분에 내 의견을 명확히 정립할 수 있었다.내가 깨달은 내용들을 의식의 흐름대로 작성해보려고 한다. 리뷰어가 쏘아올린 작은 공..처음으로 MVP 아키텍처를 적용해보면서, 리뷰어에게 아래와 같은 코멘트를 받았다. Activity에서 repository 를 presenter 로 넘겨주는 것은, Activity와 presenter 의 역할을 제대로 하지 못하고 있는 것으로 보입니다. view 에서 model 을 presenter 에 넘겨주는 형태이니까요!Share..