Diary/300~400(100)
-
400일차 - Android Room Data Export(Backup) / Import(Recovery) (2)
https://developer.android.com/training/data-storage/room/migrating-db-versions?hl=ko Room 데이터베이스 이전 | Android 개발자 | Android Developers Room 라이브러리를 사용하여 데이터베이스를 안전하게 이전하는 방법 알아보기 developer.android.com 안드로이드 룸을 사용하면서 데이터를 백업하고 복구하는 기능이 필요해서 시행착오를 거치고 방법을 찾았다. Android Room에서 데이터를 백업하고 복구하는 방법이 변경되었고, 이는 2.2.0 버전부터 적용이 된다. 나는 2.4.0 버전을 사용 중이라서 변경된 백업, 복구 방법을 사용했다. 우선 MIGRATION_1_2 변수를 보면, database.e..
2022.02.08 -
399일차 - Android Room Data Export(Backup) / Import(Recovery) (1)
DB 파일을 DAT, CSV로 백업하고, 복구할 때는 DAT 파일만을 사용해서 백업한다. CSV로도 백업을 할 수 있고, 실제로도 백업 가능하게 코드를 작성했었지만, 굳이? 라는 생각이 들었다. CSV는 사실 옵션으로 테스트해본 부분이고, DAT만 다뤄도 충분할 것 같다. 백업을 할 때는, 현재 시간을 파일명으로 지정하고, 복구 할 때도, 해당 시간을 토대로 최신 파일을 찾아서 복구한다. 또한, DB를 복구할 때, 경로는 다운로드 폴더로 잡았는데 이는 사용자가 가장 쉽게 접근할 수 있는 폴더이기 때문이다. 다만, 안드로이드 OS가 업데이트가 되면서, 다운로드 폴더에 접근하기 위해서는 특정 권한이 필요하다. 최신 OS 버전부터는 미디어 권한과 모든 권한 2개로 나뉘어지게 되었고, 이에 따라서 코드를 작성하..
2022.02.07 -
398일차 - Android Send Email & Send Multiple Email
여기서 중요한 것은, 인텐트의 매개변수이다. ACTION_SENDTO는 단순 텍스트 이메일을 보내면서, 받는 사람을 지정하고 싶을 때, 사용하면 되고, ACTION_SEND_MULTIPLE는 파일을 담아서 전송하고 싶을 때, 사용하면 된다. createChooser 메서드는 앱 선택창을 띄워준다.
2022.02.06 -
397일차 - 깔끔한 코드 작성을 위한 Contains 작성법
코드를 작성하다보면 특정 상수들을 많이 사용하게 되는데, 이 부분만 조금 다듬어도 코드가 굉장히 깔끔해지고 가독성이 좋아진다. 나는 2가지 방법을 주로 쓴다. 1. companion object 해당 방식으로 상수를 선언하게되면, Define.EMPTY_STR로 사용할 수 있다. 정말 알아보기 쉽거나 단어만 봐도 딱 감이오는 상수들을 위의 방식으로 많이 처리한다. 2. enum class 위의 방식은 DatePattern.DDAY.pattern 으로 사용할 수 있다. 개인적으로 가장 많이 쓰는 방식인데, 해당 방식으로 상수를 선언하게 되면, 가독성이 정말 좋아진다. 위의 코드만 보더라도 DatePattern의 DDAY의 pattern이라고 명확하게 알 수 있어서 좋다. 또한, 매개변수나 코드를 작성하면서..
2022.02.05 -
396일차 - 자주 사용하는 Room DB Query 기본 프레임
나는 룸을 사용하면서 기본적인 쿼리문은 위의 방식대로 모두 작성해 놓는 편이다. 가장 필수적인 요소인 CRUD와 초기화 그리고 검색 기능이다. 이외에는 특정 기능을 수행하기 위한 쿼리문일뿐, 대부분은 위의 쿼리문으로 충분히 커버가 된다. 다만, 최적화를 위해서 조건문을 추가로 작성할 뿐이다.
2022.02.04 -
395일차 - Git Hub Desktop ( Version Control )
https://desktop.github.com/ GitHub Desktop Simple collaboration from your desktop desktop.github.com 내가 사용해 본 버전 관리 툴은 소스트리와 깃허브데스크탑 2개 밖에 없다. 이 중에서 나에게 더 잘 맞는 것은 깃허브데스크탑이다. 굳이 히스토리를 복잡한 트리형식 UI로 보지 않아도 되서 개인적으로는 깔끔하다고 생각한다. 소스트리는 좋지만 이름처럼 너무 트리트리하다. 단순한 커밋조차도 복잡해보이게 만드는 툴이다. 버전 관리를 중점적으로 하는 사람이라면 당연히 그러한 부분들이 중요하겠지만, 소규모 프로젝트같은 경우에는 깃허브데스크탑처럼 간단하고 필요한 기능들은 전부 있는 툴이 최고인 것 같다.
2022.02.03 -
394일차 - 헬스장 6개월 PT 3개월 결제
이번에 결혼준비를 하면서 6월 17일날에 스튜디오 촬영이 예정되어 있다. 이를 위해서 헬스장 6개월 PT 3개월을 193만원에 계약했다. 헬스는 20살때부터 방학시즌에는 주 3일 가벼운 런닝과 풀업만하면서 체중관리를 했었다. 현재 여자친구를 만나기 전에는 53~57kg을 계속 유지했었는데, 현재 내 몸무게는 73kg이다. 연애를 하면서 자연스럽게 헬스장도 안가게 되었고, 살은 계속 쪘다. 그래도 몸은 무겁지만 마음은 굉장히 가볍고 행복한 나날들을 보냈다. 하지만, 이제는 다시 빡세게 운동을 해야하는 시기이다. 한번뿐인 결혼식인데 못난 모습으로 결혼하고 싶지는 않다. 이번에는 무조건적인 다이어트라기보다는 이왕 살좀찐거 쇠질좀해서 근육먼저 만들고 빡쎄게 다이어트해보려고한다.
2022.02.02 -
393일차 - Android Samsung Knox
https://docs.samsungknox.com/dev/knox-sdk/index.htm Welcome to the Knox SDK Knox Developer Documentation Knox SDK Welcome to the Knox SDK Through the Knox SDK, you can manage a comprehensive set of features on a Samsung Android mobile device. You can control the device's accounts, apps, connections, customization features, device docs.samsungknox.com 삼성 단말기에는 Knox가 탑재되어서 출품된다. Knox는 현재 기업만 사용할 수..
2022.02.01 -
392일차 - Bottom Navigation Bar Library: SuperBottomBar
심플한 바텀 네비게이션을 구현하고 싶을 때, 사용하기 좋은 라이브러리이다. 약간의 애니메이션이 들어가있으며 사용자가 클릭에 대해서 인지할 수 있다. 이러한 UI 들은 라이브러리를 사용하는 것을 추천한다. 직접 그려보면 알겠지만, 생각보다 손이 많이간다. 이렇게 코드로 포지션을 가져올 수 있기 때문에, 여기서 스킴을 사용하던 뭘 하던 지지고 볶으면 된다.
2022.01.31 -
391일차 - Android Layout Include
안드로이드에서 레이아웃을 작성하는 방법은 여러가지가 존재한다. 특히나 레이아웃은 복붙을 해야하는 구조가 정말 많은데, 그럴 때, 사용하는 방법 중 하나가 include이다. 이는 웹에서 사용하는 것과 말그대로 다른 레이아웃을 가져와서 붙여넣는 것이다. 다만, 이 방법을 사용할 시에는 해당 레이아웃의 디자인의 디테일한 변경은 레이아웃 코드에서는 불가능하다. 예를 들어, 텍스트 변경이나 백그라운드 변경같은 부분이다. 이를 위해서는 코드로 변경해야한다. 이러한 방식으로 변경하면 된다. 코틀린을 사용하면서 with는 주로 위의 상황에서 자주 사용한다. NULL이 나오지 않을 경우에 사용해야하는데, 레이아웃을 바인딩해서 사용할 때, 딱이다. 위의 with는 apply와 같이 this로 지정되기 때문에, 내부 코드..
2022.01.30 -
390일차 - Firebase Database Read
저번 글에는 파이어베이스 DB에 데이터를 저장했다. 이번에는 데이터를 읽어오려고 한다. 파이어베이스의 컬렉션 READ를 시도하고, 통신이 성공했을 시에 해당 결과값에서 내가 필요한 data를 빼내오는 코드이다. 해당 코드의 deleteToken은 말그대로 파이어베이스에 저장된 FCM 토큰을 삭제하는 메서드이다. 앱이 꺼지면 FCM과 연결이 끊기면서 이전 FCM 토큰으로 SEND를 보내면 NotRegistred 에러가 뜬다. 이를 방지하기 위해서는 토큰을 초기화하고 다시 토큰을 받아오는 방식을 취해야한다. 위의 코드는 테스트하기 위한 코드이고, 앞에서 말한 부분의 보완은 따로 작업해야한다.
2022.01.29 -
389일차 - Firebase FCM 저장
파이어베이스의 가장 큰 장점은 간단하고 사용성이 아주 좋다는 점이다. 서버와 통신하고 DB에 저장하는 것은 웹 개발할 때, AWS를 사용해보면서 정말 귀찮고 시간이 많이 걸린다는 것을 깨달았다. 파이어베이스는 이러한 귀찮고, 시간이 많이 들어가는 부분들을 스킵하게 해준다. 해당 코드는 FCM 토큰과, 휴대폰 모델명, 현재 시간을 파이어베이스 DB에 저장한다. 이를 활용해 유저에게 PUSH 알림을 보낼 수 있다.
2022.01.28 -
388일차 - Android Log Library: XLog
https://github.com/elvishew/xLog GitHub - elvishew/xLog: Android logger, pretty, powerful and flexible, log to everywhere, save to file, all you want is here. Android logger, pretty, powerful and flexible, log to everywhere, save to file, all you want is here. - GitHub - elvishew/xLog: Android logger, pretty, powerful and flexible, log to everywhere, sav... github.com 안드로이드에는 여러 로그 라이브러리가 존재하지만,..
2022.01.27 -
387일차 - 2018 ~ 2021 베스트 안드로이드 라이브러리 (11)
[Debugging] Stetho https://github.com/facebook/stetho GitHub - facebook/stetho: Stetho is a debug bridge for Android applications, enabling the powerful Chrome Developer Tools and mu Stetho is a debug bridge for Android applications, enabling the powerful Chrome Developer Tools and much more. - GitHub - facebook/stetho: Stetho is a debug bridge for Android applications, enablin... github.com [Re..
2022.01.26 -
386일차 - 2018 ~ 2021 베스트 안드로이드 라이브러리 (10)
[Dependency Injector Library] Dagger2 https://github.com/google/dagger GitHub - google/dagger: A fast dependency injector for Android and Java. A fast dependency injector for Android and Java. Contribute to google/dagger development by creating an account on GitHub. github.com [Networking] Retrofit https://github.com/square/retrofit GitHub - square/retrofit: A type-safe HTTP client for Android a..
2022.01.25 -
385일차 - 2018 ~ 2021 베스트 안드로이드 라이브러리 (9)
DroidVizu (UI) https://github.com/wotomas/droid-vizu GitHub - wotomas/droid-vizu: Droid-vizu aims to provide customized visualization effects by easily swapping Renderer to get cool Droid-vizu aims to provide customized visualization effects by easily swapping Renderer to get cool effects - GitHub - wotomas/droid-vizu: Droid-vizu aims to provide customized visualization effect... github.com Mate..
2022.01.24 -
384일차 - 2018 ~ 2021 베스트 안드로이드 라이브러리 (8)
TicketView (UI) https://github.com/vipulasri/TicketView GitHub - vipulasri/TicketView: An Android library to implement TicketView in android with normal, rounded and scallop corners An Android library to implement TicketView in android with normal, rounded and scallop corners - GitHub - vipulasri/TicketView: An Android library to implement TicketView in android with normal, ro... github.com Recy..
2022.01.23 -
383일차 - 2018 ~ 2021 베스트 안드로이드 라이브러리 (7)
LayoutManagerGroup (UI) https://github.com/DingMouRen/LayoutManagerGroup GitHub - DingMouRen/LayoutManagerGroup: Customize the LayoutManager of RecyclerView(自定义LayoutManager) :point_right: Customize the LayoutManager of RecyclerView(自定义LayoutManager) - GitHub - DingMouRen/LayoutManagerGroup: Customize the LayoutManager of RecyclerView(自定义LayoutManager) github.com CreativeViewpager (UI) https://g..
2022.01.22 -
382일차 - 2018 ~ 2021 베스트 안드로이드 라이브러리 (6)
ProgressButton (UI) https://github.com/razir/ProgressButton GitHub - razir/ProgressButton: Android Progress Button Android Progress Button. Contribute to razir/ProgressButton development by creating an account on GitHub. github.com GradientView (UI) https://github.com/lopspower/GradientView GitHub - lopspower/GradientView: Create gradient view in Android in the simplest way possible 🌈 Create gra..
2022.01.21 -
381일차 - 2018 ~ 2021 베스트 안드로이드 라이브러리 (5)
SmoothBottomBar (UI) https://github.com/ibrahimsn98/SmoothBottomBar GitHub - ibrahimsn98/SmoothBottomBar: A lightweight Android material bottom navigation bar library A lightweight Android material bottom navigation bar library - GitHub - ibrahimsn98/SmoothBottomBar: A lightweight Android material bottom navigation bar library github.com Balloon (UI) https://github.com/skydoves/Balloon GitHub - ..
2022.01.20 -
380일차 - 2018 ~ 2021 베스트 안드로이드 라이브러리 (4)
Quantitizer (UI) https://github.com/kojofosu/Quantitizer GitHub - kojofosu/Quantitizer: A quantity stepper for android projects :sparkles: A quantity stepper for android projects - GitHub - kojofosu/Quantitizer: A quantity stepper for android projects github.com Coil (IMAGE LOADING) https://github.com/coil-kt/coil GitHub - coil-kt/coil: Image loading for Android backed by Kotlin Coroutines. Imag..
2022.01.19 -
379일차 - 2018 ~ 2021 베스트 안드로이드 라이브러리 (3)
TedImagePicker (UI) https://github.com/ParkSangGwon/TedImagePicker GitHub - ParkSangGwon/TedImagePicker: TedImagePicker is simple/beautiful/smart image picker TedImagePicker is simple/beautiful/smart image picker - GitHub - ParkSangGwon/TedImagePicker: TedImagePicker is simple/beautiful/smart image picker github.com SuperBottomBar (UI) https://github.com/ertugrulkaragoz/SuperBottomBar GitHub - e..
2022.01.18 -
378일차 - 2018 ~ 2021 베스트 안드로이드 라이브러리 (2)
ZoomRecyclerLayout (UI) https://github.com/Spikeysanju/ZoomRecylerLayout GitHub - Spikeysanju/ZoomRecylerLayout: 🎢 Zoom Recycler Layout Manager For Android Kotlin 🎢 Zoom Recycler Layout Manager For Android Kotlin. Contribute to Spikeysanju/ZoomRecylerLayout development by creating an account on GitHub. github.com MotionToast (UI) https://github.com/Spikeysanju/MotionToast GitHub - Spikeysanju/Mo..
2022.01.17 -
377일차 - 2018 ~ 2021 베스트 안드로이드 라이브러리 (1)
쓸만한 라이브러리 없나 찾아보다가 베스트 라이브러리 뽑아둔 글들이 있길래, 백업용으로 글을 써보려고한다. Venom (Test) https://github.com/YarikSOffice/venom GitHub - YarikSOffice/venom: A lightweight tool that simplifies testing of the process death scenario. A lightweight tool that simplifies testing of the process death scenario. - GitHub - YarikSOffice/venom: A lightweight tool that simplifies testing of the process death scenario. github..
2022.01.16 -
376일차 - Android Developer 훝어보기 : 인텐트 및 인텐트 필터 ( 4 )
이 부분은, 저번에 내가 글에서 말했던 암시적 인텐트가 만들어진 배경과 연관성이 있다고 본다. 해당 인텐트 필터를 통해 내가 어떤 기능을 담당하는 앱인지 안드로이드 시스템에 알려줄 수 있다. 중요한 부분은, 인텐트 필터에 CATEGORY_DEFAULT가 필수로 포함되어야 한다는 점과 다른 앱에서 자신의 앱을 열지 못하게 막기 위해서는 exported 특성을 false로 설정해야 한다는 점이다. 다른 앱에서 자신의 앱을 호출하기를 원하지 않는다면 암시적 인텐트는 사용하지 않는 것이 좋다. 여기서 중요한 부분은, ACTION_MAIN과 CATEGORY_LAUNCHER는 항상 짝으로 사용해야 한다는 점과 ShareActivity의 ACTION_SEND와 CATEGORY_DEFAULT, TEXT/PLAIN을 통..
2022.01.15 -
375일차 - Android Developer 훝어보기 : 인텐트 및 인텐트 필터 ( 3 )
명시적 인텐트는 평소 우리가 사용하는 방법이다. 어떤 액티비티로 보낼 것인지와 패키지 네임을 통해 앱을 여는 코드들이 이에 해당한다. 암시적 인텐트가 생겨난 배경은, 사용자에게 특정 기능을 수행하는 앱을 선택할 수 있는 선택권을 주기 위해서 생겨났다. 예를 들어, HTTPS를 열기 위해서 필요한 앱이 항상 삼성 인터넷이면 사용자 입장에서는 불만일 수 있기 때문에, 크롬이나 파이어폭스등으로도 열 수 있게끔 설정하게끔 만들기 위해서 만들어졌다. 단순 호출 기능으로만 사용하는 것이 아니기 때문에 이에 대해서 알고 넘어가야 좋다. 나는 지금까지 createChooser를 앱 선택상자를 좀 더 그럴듯하게 만들기 위해서 사용하는 줄 알았는데, 디벨로퍼를 읽어보니 잘못 사용하고 있었다는 것을 깨달았다. 여기서 중요한..
2022.01.14 -
374일차 - Android Developer 훝어보기 : 인텐트 및 인텐트 필터 ( 2 )
여기서 data와 type은 이메일을 보낼 때, 이메일 형식과 파일 형식을 지정하기위해 사용했었다. 다만, 주의: URI와 MIME 유형을 둘 다 설정하고자 하는 경우, setData() 및 setType()을 호출하면 안 됩니다. 이 둘은 서로의 값을 무효화하기 때문입니다. URI와 MIME 유형을 둘 모두 설정하려면 항상 setDataAndType()을 사용하세요. 이 부분은 전혀 몰랐다. 앞으로는 꼭 기억하고 주의해야겠다. CATEGORY_LAUNCHER는 메인 액티비티 생성 후에, 매니페스트에서 자주 접했기 때문에 알고 있었다. CATEGORY_BROWSABLE은 잘 모르겠는데, 웹 뷰를 띄울 때, 저걸 사용했었던 것 같기도하고 다른 카테고리를 사용했었던 것 같기도하고 헷갈린다. 모든걸 암기할 수..
2022.01.13 -
373일차 - Android Developer 훝어보기 : 인텐트 및 인텐트 필터 ( 1 )
https://developer.android.com/guide/components/intents-filters 인텐트 및 인텐트 필터 | Android 개발자 | Android Developers An Intent is a messaging object you can use to request an action from another app component . Although intents facilitate communication between components in several ways, there are three fundamental use cases: An Activity represents a single screen in… developer.android.com 개발하면서 정말 많이..
2022.01.12 -
372일차 - 이사
오늘은 이사하는 날이다. 가전제품들 설치하고 짐 옮기고 정리하고, 조립하고... 할일이 너무 많았는데 결국은 이사를 성공적으로 했다. 다만 아직도 짐이 남아있어서 차근차근 정리해야할 것 같다. 작은 방 커튼은 내일 사서 달고 티비 거치대와 싱크대 선반, 행거 등등 사야할 물건들도 차근차근 사야한다. 허리아파서 죽을 것 같다... 내일 출근하기 싫다....ㅠㅠ
2022.01.11 -
371일차 - 가족들과 식사
오늘은 퇴근하고 가족들과 오붓하게 식사를 하면서 옛날 이야기도하고 앞으로 살아갈 이야기도 나누면서 정을 나눴다. 현재 여자친구와 결혼식장도 알아보고 있는데, 내년 4월에 결혼을 하거나 좋은 식장이 있으면 더 당겨질 것 같다. 너무나도 바쁜 하루하루를 보내고 있지만 몸은 힘들지언정 마음은 행복하다. 보람찬 하루하루를 보내고있다는 생각이 든다. 안정적인 환경에서 내가 좋아하는 사람과 함께하고 내가 좋아하는 일을 하고 내가 좋아하는 취미생활을 즐기고 짜투리시간에 개인적인 개발도하고 굉장히 만족스러운 삶을 살아가고있다. 이제 곧 400일을 다 채우는 날이 오면 그때부터는 하루하루 쓰는 것 보다는 내가 쓰고 싶은 것들만 쓰려고한다.
2022.01.10