PROJECT (5) 썸네일형 리스트형 안드로이드 클린 아키텍처 도메인 레이어 설계 서론 이전 글에 이어서 이번엔 Domain Layer와 Presentation Layer를 설계해 보겠습니다. 클린 아키텍처를 처음 적용하면서 Domain Layer를 설계하는 것이 정말 많은 고민을 하게 해 주었습니다. 도메인 레이어가 의미 있으려면, 정말 다른 플랫폼에서도 재사용 가능할 정도로 치밀하게 비즈니스 로직이 잘 작성되어있어야 하며 그 어떤 외부 참조 없이 순수하고 클린 해야 합니다. 게다가 개인 프로젝트면 모르겠지만, 팀이 있다면 기획자, 서버개발자, 타 플랫폼 개발자가 보기에도 명확하게 짜여있어야 하며 궁극적으로는 도메인 레이어만 보고도 마치 공식문서처럼 해당 서비스의 스펙을 모두 파악할 수 있어야 합니다. 하지만 그렇게 도메인 레이어를 구축하는 건 사실상 불가능에 가깝습니다. 너무.. [PROJECT] MulterError: Unexpected field 🚨 Trouble Shooting 프로젝트에서 매장의 메뉴를 추가하기 위해 서버측 코드를 수정하던 중 아래와 같은 에러가 발생했습니다. Multer는 Node.JS에서 파일을 관리하는 모듈인데, 저는 이미지를 저장하기 위해 사용했습니다. 1차적으로 확인한건 multer를 사용하면서 선언한 변수들을 확인했습니다. 이미지를 저장하기 위한 NodeJs 서버의 로컬 저장소의 경로를 지정합니다. // 디스크에 이미지 저장을 위한 multer 설정 const storeMainImageStorage = multer.diskStorage({ destination: '/store_images_volume/main', filename: (req, file, cb) => { const fileName = 'main_img'.. [PROJECT] Fused Location Provider 🚨 Trouble Shooting 프로젝트에서 Kakao Map Api를 사용하기 위해 현재 사용자의 위치를 가져오기 위해서 안드로이드 OS에서 제공하는 LocationManager 시스템 서비스를 이용해 현재 사용자의 위치를 요청하였지만 계속해서 위치를 받아오지 못하는 문제가 발생했습니다. 원인을 분석하는 과정에서 이 API가 다음과 같은 문제점이 있다는 것을 알게 되었습니다. 정확한 위치를 불러오는 기능이 생각보다 배터리를 많이 소모합니다. -> 전력 효율 저하 건물 내부에서 정확한 위치를 파악하기 힘들거나 정확한 위치를 파악하기 힘들 때가 있습니다. -> 정확도 저하 API 자체가 복잡합니다. -> 개발 과정의 복잡성 증가 이에 대한 대응 방안으로 구글에서 서비스 하는 최적의 알고리즘으로 위치 제공.. [PROJECT] 프로젝트에 DataBinding & @BindingAdapter 사용해보기 이번엔 DataBinding과 BindingAdapter를 사용해 Room에서 가져온 이미지를 ImageView에 보여주는 연습을 해보겠습니다. 이 글의 예제 코드들은 제가 진행 중인 프로젝트에서 가져온 코드라 다소 뜬금없는 부분이 있을 수 도 있습니다. 안드로이드 공식 문서 데이터 결합 라이브러리 | Android 개발자 | Android Developers 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 데이터 결합 라이브러리 Android Jetpack의 구성요소. 데이터 결합 라이브러리는 프로그래매틱 방식이 아니라 선 developer.android.com 🎉 DataBinding이란 ? XML Layout 파일과 데이터를 직접 연결해 주는 기술입니다. DataBin.. [PROJECT]프로젝트 리팩토링 🚨 ISSUE 프로젝트를 진행하면서 서버에 저장된 매장 정보를 사용자에게 보여주는 과정에서 UI를 바로 렌더링 하지 못하는 issue가 발생했습니 다. SplashScreen이나 Loading 화면을 만들어 해결할 수 도 있겠지만 그러면 저 이거 못해요~~라고 인정하는 거 같아서 🐌 이를 개선하기 위해 기존 코드의 문제점을 분석해 보았습니다. 📌Activity class MyStoreActivity : AppCompatActivity(){ private lateinit var binding: ActivityMyStoreBinding private val viewModel: MyPageViewModel by viewModels() override fun onCreate(savedInstanceState: .. 이전 1 다음