Personal project
안드로이드 앱 개발에서 mvvm패턴의 패키지구조 (chatgpt를 이용한 답변)
검색보다 gpt가 빠르다고 생각되어 gpt에게 물어보았다. =============================== Q. 안드로이드 앱 개발에서 mvvm패턴으로 만들때, 패키지 구조를 어떻게 만들어야해? A. MVVM (Model-View-ViewModel) 패턴은 안드로이드 앱 개발에서 많이 사용되는 아키텍처 패턴 중 하나입니다. 이 패턴은 앱의 구조를 잘 정리하고 유지보수를 용이하게 하기 위해 사용됩니다. MVVM 패턴을 적용할 때, 일반적으로 다음과 같은 패키지 구조를 따르는 것이 일반적입니다: 1. 모델 (Model): 이 패키지에는 앱의 데이터 및 비즈니스 로직을 포함합니다. 네트워크 요청, 데이터베이스 작업, 데이터 변환 등이 이곳에 해당됩니다. 일반적으로 데이터를 가져오고 조작하는 코드를 구..
앱 이름 변경.
three quest에서 오직 하나라도 잘하자라는 의미로, Just One Thing으로 변경. 몰입에 대한 이야기를 본 거에도 영향을 받음. 혹여나 상표권 따위가 문제 되지 않을까 염려가 되는데, 일단 구글 플레이스토어에서 앱이름이 겹치지는 않은듯. 그렇다면 앱 이름에 걸맞게 더 쉽게 기능을 구현할 수 있겠고 빠르게 실현해보자. 기능정의 ui정의 따위도 없이 그냥 막 만들어보자. 일단, 노션을 켜고, 이 프로젝트를 위해, 오늘 해야 할 것과 해낼 수 있을 정도의 양만 간략하게 작성해보자. Start!
5번째 버튼 jetpack navigation 연습
버튼이 있는 액티비티를 여러개 만들면서 예제를 만들어보는 프로젝트중이다. 5번째 버튼으로 안드로이드 jetpack navigation 예제로 fragment를 2개 만들어서 이동하는 것을 만들어보았다. fragment A, B 두개를 만들고, A에 viewModel을 붙여서 liveData값을 하나 만들어줬다. (문제발생 : 네비게이션으로 이동시, 뷰모델의 라이브데이터 값 유지가 안되는 문제) A -> B -> A 로 이동했는데, ( findnavigaton.navigae()로 ) A의 viewModel에 있는 liveData의 값이 유지되지 않고, 새로 만들어지는 것 같았다. 그래서 오픈채팅방에 질문을 해보았는데, 단순히 navigate()를 하게 되면, A가 다시 새로 만들어지게 되는 것이라는 것을 ..
4번째 버튼을 만들면서.. fragment 생명주기..?
4번째 버튼으로, fragment에 뷰모델을 넣고, livedata를 사용해서 버튼을 만들어보았다. 기존에 activity생명주기는 익숙했지만, activity와 fragment 둘의 생명주기 관계가 무시무시했다. 실제로 코드에 로그를 다 찍어서 돌려보니 activity의 생명주기내에서도 super.(생명주기이벤트)의 위쪽에 쓰느냐 아래쪽에 코드를 쓰느냐에 따라 코드의 순서가 약간 다르게 될 수도 있다는 것을 알았다. 내가 궁시렁 쓰는거보다 내가 참고한 블로그와 문서들을 백링크로 걸어본다. // activity와 fragement의 생명주기의 그림이 있다. https://ciwhiz.tistory.com/280 // 라이브데이터의 값은 항상 최신이라는 언급 https://thdev.tech/android..
화면 설계 중..
카카오의 오븐이라는 목업툴로 화면을 2개 그려봤는데, 쉽지가 않다. 이런 그림을 하나씩 넣으려니, 몸이 꼬이고 주리가 틀린다.. 디자이너 선생님들, 기획자 선생님들이 대단해! 게다가 ui를 그리면서 어떻게 기능이 나와야 할까도 생각해야 되니.. 대충 기능을 써둔 거랑은 다르게, 화면을 그리면서 다시 기능정의를 해야 되는 상황이다. (그리면서 기능 구현이 복잡하겠다 싶은 것은 과감하게 생략하고 만들자, 프로토타입을 빨리 만들어내는것이 현재 내 목표다.) 저 오븐이라는 툴도 일단은 편하지가 않고, 목업 하는 프로그램도 손에 익고 숙련도가 있어야 쓸 수 있을 듯하다. 나는 우선 손으로 그림을 그리는 게 더 빠를듯하다. (사실 개발자에게 가장 좋은 툴은 안스에서 xml 아닐까..?) 기능을 어디 옆에 다시 쓰면..
기능 명세를 했다.
20분만?에 했다. 원래 머릿속에서는 상상을 많이 했었는데, 막상 적으니 뭐 없다. 머릿속에 그려둔거는 한 6개월은 된거 같은데,, 얼마나 실행하기까지 오래걸렸는가. 이렇게 글로적게 되는게 진짜 시작이다. 기능을 세세하게 적은것도 아니고 정말 대~충~ 적었다. 완벽주의를 탈피해야 뭔가 만들어진다. 상세한 기능은 또 나중에 적으면 된다.! 이제 화면을 그려야하는데, 카카오의 오븐이라는 서비스를 활용하던지, ppt에 대충 네모세모로 그리던지 해야겠다. 일단, 오늘 카카오의 오븐이라는 서비스를 구경해봐야겠다. 구경하다가 오늘 다 그릴 수도 있겠다.
뷰바인딩에서 tools:viewBindingIgnore의 의미?
https://developer.android.com/topic/libraries/view-binding?hl=ko#setup 안드로이드 공식문서를 읽다가, tools:viewBindingIgnore이 옵션이 무슨 말인가 했는데, 뷰바인딩을 사용하게 되면, 원래 xml파일에 대해서 자동으로 바인딩 클래스가 생기는데, 해당 xml 파일에 대해서 바인딩 클래스를 생성하지 말라는 의미다. (하지만 직접 테스트 해보지는 않아서 맞는지는 모르겠다.) 아무튼, 아래 블로그를 보고 무슨 의미인지 알게 되었고, 뷰바인딩에 대해서 잘 정리가 되어있어서 참고하면 좋을 듯하다. https://todaycode.tistory.com/29
android .gitignore 파일을 수정해보자.
git을 사용 중에, 버전관리 되지 않을 파일을 .gitignore파일에 작성하여 버전관리 되지 않게 만들 수 있다. 안드로이드 스튜디오에서 새 프로젝트를 만들면, .gitignore파일이 새로 하나 만들어지는 것 같던데, 그 파일은 내용이 부실한 거 같다. (이게 내 프로그램에 설치된 git이 만들어내는 건지, 안스에서 만들어내는 건지도 궁금하다) 로컬에서 만들지 않고, 깃허브 remote저장소에서 새 저장소를 만들면서 바로 .gitignore파일을 추가하게 되면, 깃허브에서 제시하는 .gitignore파일이 들어오는 것 같은데 이 파일이 로컬에서 만들어지는 파일보다 더 쓸만한 거 같다. // 깃허브의 .gitignore파일 샘플은 아래 링크에서 볼 수 있다. https://github.com/gith..
String과 CharSequence의 차이점?이 궁금했다.
https://github.com/hhyeok1026/50Buttons GitHub - hhyeok1026/50Buttons: This is a development exercise project. This is a development exercise project. Contribute to hhyeok1026/50Buttons development by creating an account on GitHub. github.com 내 연습용 프로젝트에서 두 번째 버튼을 만들면서 궁금했던 점. xml뷰의 Button에서, setText, getText는 파라미터로 CharSequence라는 인터페이스를 가지고 있다. 보통은 String을 많이 쓰니까 CharSequence가 뭔지 궁금해졌다. 블로그를 좀 ..
프로젝트 개요
여러가지 버튼을 넣어둔 프로젝트 연습, 테스트 할 기능을 버튼에 이벤트로 처리하는 개발 연습용 프로젝트이다. 다양한 버튼을 만들면서, 개발의 자신감을 얻기 위함. ⇒ 아무거나 막 구현해 넣기 앞으로 할 것 저장소 생성 디펜던시 잡기 깃이그노어 파일 넣기 버튼 작성