firestore 공식문서에 iOS 빌드 시간 단축 방법이 있어서 적용 해보았다. 그 과정에서 몇 가지 에러가 났고, 이를 해결했던 과정을 기록했다. 빌드 시간 74% 단축.

왜 어떤거는 di.registerFactory 이고 어떤거는 di.registerLazySingleton 인가요?
개요 아키텍처 설계에 대해 고민을 하기 시작했다. 최근 사이드 프로젝트를 새로 진행하면서 구조를 짜게 된 덕분이다. 특히 흔히 사용되는 MVVM + 클린 아키텍처를 적용하려면 제대로 이해하고 정리할 필요성을 느꼈다. 사실 앱 개발을 처음 배울 때, 단순히 "요즘은 M
SOLID 원칙을 정처기 공부하면서 처음 접해서였는지, 그저 외우기 바빴다. “무슨 무슨 원칙이 있었지?” 정도로만 기억할 뿐, 각 원칙이 실제로 어떤 의미를 가지는지, 그리고 어떤 맥락에서 적용되어야 하는지는 제대로 이해하지 못했다. 말 그대로 ‘이해’가 아니라 ‘암

요즘 알고리즘 문제를 풀어보기 시작했다. 그러면서 새로 들인 습관이 있다. 내가 생각한 코드로 정답을 맞춘 뒤 GPT에게 코드를 더 짧게 리팩토링 해달라고 하는 것이다. 코드가 짧아지는 대신 실행 시간이 늘어나는 경우도 있고 아닌 경우도 있고, 미처 생각지 못한 접근법
자바나 코틀린에서 제공해주는 입출력 함수는 아주 다양하다. 그런데 알고리즘을 풀이할 때 어떤 조합을 사용해야 입출력이 가장 빠를까? 그리고 왜 다른 것들에 비해 빠를까?

Bloc 상태를 업데이트 할 때, copyWith 메서드를 직접 작성하고 있었는데 freezed 라는 code generator 를 쓰면 그런 번거로움을 해소할 수 있다고 하여 사용해보기로 했다.결론적으로는 너무 좋아서 프로젝트에 적용하기로 함. 엔티티 작성할 때 코드
깃헙 유저네임을 입력 후 버튼을 누르면, retrofit 을 통해 api 를 호출하여 유저 정보를 불러오는 예제를 구현해보았다.
recyclerView 를 띄우는데, 이미지가 많아서 초기 로딩이 너무 느렸다. 앱에서 개선할수 있는 방법이 있을까 해서 찾아보니 Glide 자체 기능에 preload 라는게 있었다. 간단하게 설명하자면 recyclerView가 스크롤 되기 전에 사진을 미리 로드하는건
공식 사이트 참고 bloc 을 통해 timer 를 구현해보자. timer 는 시간이 계속 흐르고 있다. 그리고 남은 시간이 보여져야 한다. 그래서 Stream 을 사용해 흐르는 시간을 방출한다.
지난 프로젝트에서 상태관리 라이브러리로 getX 를 사용했었다. 그땐 규모가 그리 크지 않으니 겟엑스로 충분할 줄 알았으나, 기능이 늘어나면서 컨트롤러의 역할이 점점 비대해지는 것을 경험했다. Getx Controller 파일 내의 코드가 너무 길어지고, 파일 하나에
프로젝트를 진행하면서 원하는대로 UI가 업데이트 되지 않는 상황을 몇번 겪었다. 내가 상태관리를 제대로 이해하지 못한 것 같다는 생각이 들었고, ‘상태관리’의 개념부터 정확하게 알고 넘어가야겠다는 생각을 했다. 다행히 플러터 공식 문서에 친절한 설명이 있었다.
MutableList 의 데이터를 수정했지만 LiveData 의 Observer가 이를 감지하지 못하는 문제가 발생했다. 로그를 찍어보면 값이 업데이트는 되어있는데, 정작 바뀐 값으로 UI 가 업데이트 되지 않았던 것이다.
이전 포스팅의 방식대로 recyclerView 를 구현할 때, 데이터가 변경될 때 notify~ 메서드를 호출해 데이터 변경을 알려주어야 했다. 매번 갱신 코드를 쓰지 않아도 되는 ListAdpater 를 써보자
앱과 서버가 데이터를 주고받기 위해서는 서로 어떻게 대화할지 정해둔 규칙과 방법이 있어야 하고, 그를 기반으로 네트워크 통신을 해야한다. 이런 규칙이 HTTP 와 API 다. 간단하게 요약하자면 다음과 같다.
스케줄 앱을 만들면서 datePicker 와 timePicker 를 사용하고 있었다. 그런데 사용자가 날짜나 시간을 빠르게 조정할 경우 onDateTimeChanged 콜백이 지나치게 자주 호출되어 앱이 다운되는 문제가 발견되었다.
also 는 코틀린에서 모든 객체에 기본으로 제공하는 함수이며, 속성의 변경 없이 중괄호 내 명령이 실행된다.
개발 중 Firebase를 초기화했음에도 불구하고, 초기화에 실패했다는 에러가 났다. Firebase.initializeApp();