database5 안드로이드 Room의 사용법과 예제 1. Room 1-1. Room이란? 1-2. Room 구조 1-3. TMI 2. 사용법 2-1. gradle 2-2. Entity 2-3. DAO 2-4. Room Database 2-5. 데이터 베이스 사용 3. 예제 3-1. room + singleton + coroutine 3-2. room 1. Room 1-1. Room이란? Room은 스마트폰 내장 DB에 데이터를 저장하기 위해 사용하는 라이브러리이다. 평소에 우리는 메모를 저장하고, 일정을 저장하고, 즐겨보는 웹툰을 즐겨찾기 하고... 사용자의 데이터를 내장 DB에 저장할 일이 많다. 과거에는 SQLite라는 데이터베이스 엔진을 이용해 데이터를 저장했으나 다음과 같은 단점이 있었다 한마디로 사용하기 어렵다는 뜻이다. Room은 이러한 문제들.. 2021. 4. 3. 앱을 삭제했는데 데이터가 남아있어요 + Room cannot verify the data integrity. 0. 프롤로그(TMI) 1. 앱을 삭제했는데 데이터가 남아 있다구요? 2. Room cannot verify the data integrity. 2-1. 난 기존 데이터 따위는 날아가도 상관없다. 2-2. 안 돼!!! 데이터 날아가면 안 돼!!! 2-3. 중복된 이름을 사용하는 경우 0. 프롤로그(TMI) @Dao interface TodoDao { @Query("SELECT * FROM Todo") fun getAll(): List ... } 기존에 내가 앱에서 사용하면 Dao는 이렇게 List를 저장하고 불러오는 형식이었다. 근데 이번에 LiveData에 대해 배우면서 전면 수정하려고 하는데 @Dao interface TodoDao { @Query("SELECT * FROM Todo") fun get.. 2021. 3. 13. 파이어베이스 보안규칙 가입 없이 설정하기 (익명 로그인) 1. 데이터베이스 보안규칙 1-1. 규칙을 설정해야 하는 이유 1-2. 익명 로그인(anonymous login) 1-3. 보안규칙 설정 1-4. 코틀린 소스 코드 1-5. 의문점 1. 데이터베이스 보안규칙 1-1. 규칙을 설정해야 하는 이유 파이어 베이스 데이터베이스를 만들면 기본적으로 접근 권한이 true로 설정이 된다. 즉, 누구나 이 데이터에 접근을 할 수 있다는 뜻이다. 그래서 빨리 규칙을 변경하라고 아주 그냥 하루에 한 번씩 독촉 메일이 온다. 지겨워 죽겠어.. 만약 앱을 이대로 출시하면 어떤 또라이 새ㄲ..해커가 내 데이터를 조작할 수 있으니 보안규칙을 변경해주도록 하자. 꼭 해커가 아니더라도 앱 사용자가 아닌 누군가가 내 데이터를 반복해서 read/write 한다면 파이어 베이스 무료 제공.. 2021. 2. 1. 헤로쿠(heroku)에서 파이어베이스를 credentials JSON 파일 없이 사용하기 1. 첫 번째 삽질 지금까지 개인 노트북을 개인 서버로 사용하고 있었는데 아무래도 장기간 켜 두어야 하다 보니 부담이 되었다. 그러다가 heroku에 대해 알게 되었고 서버를 옮기려고 하는데 문제가 생겼다. 파이어 베이스를 사용하려면 키값이나 노출되어서는 안 되는 값들을 JSON파일로 저장해놓고 사용해야 한다는 것이다. (JSON 파일은 인증에 사용된다) Heroku file upload I have a local file download, which gets triggered in the following fashion. panelBody.append(' Download csv ') function downloadCsv(... stackoverflow.com 근데 문제는 heroku에 파일을 업로드할 .. 2021. 1. 20. Firebase 데이터베이스 딜레이 문제 해결(= 반환 값이 null일 때) 파이어 베이스를 사용해보는 것이 이번이 두 번째인데 너무나도 바보 같은 짓으로 삽질을 무진장 해버려서 기록을 남기려고 한다. 그리고 저 처럼 혼자 인터넷으로 공부해서 옆에서 올바른 방법을 지적해 줄 사람이 없는 분들을 위해 남깁니다. 1. 첫번째 삽질 private fun importKeywords(){ FirebaseDatabase.getInstance().reference .child("keywords") .addValueEventListener(object : ValueEventListener { override fun onCancelled(p0: DatabaseError) { } override fun onDataChange(p0: DataSnapshot) { // 파이어베이스에서 데이터를 읽어옴.. 2021. 1. 3. 이전 1 다음