본문 바로가기
반응형

Projects64

[It's My Waye] 7. 메인화면 UI 구현 (DrawerLayout) Intro 이전 시간에 DB 구현과 테스트를 모두 끝냈다. 이제 메인화면 부터 UI를 구현해야 한다. UI는 아래와 같이 만들 예정이다. 찾아보니 내가 만들려고 하는 UI가 DrawerLayout이란 것을 알게 되었다. 마침 Android Studio에서 기본 템플릿으로 제공하는 예제 Activity가 있어서 참고용으로 예제 소스를 뜯어봤는데, 너무 복잡하게 돼있어서 그냥 인터넷 찾아보면서 만들었다. DrawerLayout 구현 DrawerLayout은 위와 같이 구성되어있다. MainActivity에 content가 들어가고, 그 content 상단에 toolbar를 넣어준다. 그리고 NavigationView에 header와 main을 포함시킨다. 따라서 toolbar - content - nav_h.. 2022. 1. 23.
[It's My Waye] 6. DB 기능 구현 - 테스트 코드 작성 Intro 내가 작성한 DB 코드가 정상작동하는지 테스트를 해보는 시간이 왔다. 개인적으로 어떤 프로그램을 개발하든 테스트는 필수라고 생각한다. 개발을 다 마치고 실제 제품을 배포했는데 갑자기 오류가 발견되어 다시 전부 수정하는 것보다 미리미리 테스트 케이스를 생성해두고 오류가 발생하기 전 사전에 차단하는 게 훨씬 개발비용이 덜 들기 때문이다. 나중에 테스트하는 방법 관련해서 따로 글을 작성해 볼 예정이다. DBHelper 테스트 가장 먼저 DBHelper 클래스를 테스트한다. DBHelper가 제대로 동작하지 않으면 ItemDAO와 AlarmDAO는 보나마나 동작하지 않을 것이기 때문이다. DBHelperTest.kt package com.devjaewoo.itsmywaye.database import.. 2022. 1. 23.
[It's My Waye] 5. DB 기능 구현 - DAO 작성 DAO 작성 이제 이전 글에서 작성한 모델에 접근할 수 있게 해주는 DAO(Data Access Object)를 작성해야 한다. DAO는 DB와 프로그램 사이의 인터페이스 역할을 수행하여, Model을 DB에 쉽게 저장하고 불러올 수 있도록 해주는 클래스다. Item엔 Alarm의 FK가 있기 때문에 Alarm DAO부터 작성했다. AlarmDAO.kt class AlarmDAO(val context: Context) { fun insert(alarm: Alarm): Int { val db = DBHelper(context) val result = db.insert(Alarm.TableInfo.TABLE_NAME, ContentValues().apply { put(Alarm.TableInfo.COLUMN.. 2022. 1. 22.
[It's My Waye] 4. DB 기능 구현 - Model 작성 Model 작성 이제 설계한 DB를 바탕으로 테이블에 해당하는 Model을 만들어줘야 한다. 그림을 보면 Item과 Alarm이 1:1 관계이기 때문에, FK를 어느 테이블에 줘야 할지 선택해야 했다. FK를 Item에 주면, Item 모델 내에 Alarm 변수를 두어 관리하고, 반대로 Alarm에 주면 Alarm 모델 내에 Item 변수를 만들어 관리해야 한다. FK를 Item에 둔 경우 // Item class Item( var name: String, var enabled: Boolean, var alarm: Alarm? = null) {} // Alarm class Alarm( var filePath: String, var volume: Int = 100, var repeatTimes: Int =.. 2022. 1. 22.
[It's My Waye] 3. DB 기능 구현 - DBHelper DBHelper 작성 이전 글에서 설계한 DB 구조를 바탕으로 Android에서 제공하는 SQLite를 활용한 DBHandler와 Model, Model에 접근할 수 있게 해주는 DAO를 작성했다. 우선 Android의 DB에 접근하기 위한 DBHandler부터 만들었다. DB 인터페이스 종류로는 Room과 SQLiteOpenHelper가 있는데, Room을 사용하면 편리하겠지만 SQLite를 써서 기본을 다져야겠다는 생각으로 SQLiteOpenHelper를 선택했다. (Room으로 편하게 할걸 그랬다는 후회가...) 클래스를 맨 처음 만들었을 때 코드다. 여기에 Insert, Select, Update, Delete 기능을 수행하는 함수를 추가해줬다. class DBHelper(val context: .. 2022. 1. 22.
[It's My Waye] 2. 기능, DB 및 UI 설계하기 기능 설계 알림(Notification) 관련 알림 읽기 활성화/비활성화 디스코드만 읽을지, 카카오톡만 읽을지, 둘 다 읽을 지, 모든 앱의 알림을 읽을지 선택 알람(Alarm) 관련 알람 활성화/비활성화 알람 비활성화 시간대 선택 웨이를 포함한 다른 판매 아이템에 대한 알람 개발 활성화/비활성화 알람 곡, 볼륨, 알람 시간, 다음 반복까지 딜레이 설정 기타 설정값 자동저장 설정값 초기화 광고 보기 (선택사항) 개발자 후원 (선택사항) DB 설계 UI 설계 좌측 하단에 동그란 버튼을 만들고 누르면 왼쪽에서 메뉴가 슬라이드 되도록 한다. 메뉴엔 Alarm, Notification, Settings 메뉴가 있다. Alarm 메뉴의 상단에 알람 전체 활성화/비활성화 메뉴가 있고, 그 밑에 알람 금지 시간대가 .. 2022. 1. 6.
[It's My Waye] 1. 프로젝트 기획 프로젝트 시작 배경 요즘 '로스트아크' 라는 게임을 재밌게 플레이하고 있다. 간략하게 설명하자면 내 캐릭터를 성장시키고, 파티를 구해 보스를 잡는 게임이다. 파티에 들어가야 하는 만큼 내 캐릭터가 강해지는 것이 중요한데, 강해지는 방법은 크게 아래 4가지로 나눌 수 있다. 아이템 레벨 강화 각인 내실 (능력치, 체력, 스킬포인트 물약) 카드 세트효과 이 중 4번 '카드 세트효과' 중 가장 좋은 세트에 포함된 '웨이' 라는 카드를 판매하는 이벤트가 아주 가끔 생긴다. 이벤트가 30분에 열리고 55분에 끝나기 때문에, 25분 안에 게임에 접속해 구매하지 못하면 그대로 놓치게 된다. (체감 상 약 2주일에 1번 정도 뜨는 것 같다) 하지만 뜨는 시간이 무작위인 만큼 간혹 잠들어 있는 새벽 시간에 뜨기도 하는데.. 2022. 1. 5.
[Ubuntu Git Server] 3. Repository 생성 및 사용자 등록 Repository 생성 새 repo를 생성하기 위해 git-admin 계정으로 로그인한다. $ ssh git-admin@remote_host $ cd gitolite-admin repo를 관리하는 설정 파일을 열어준다. nano conf/gitolite.conf 특별히 수정한게 없다면 아래와 같은 내용이 적혀있을 것이다. repo gitolite-admin RW+ = git-admin repo testing RW+ = @all 새 repo를 추가하기 위해 파일 아래에 다음과 같은 내용을 추가한다. repo_name과 username은 적당히 수정하여 사용하면 된다. repo를 생성하기 위해 적어도 하나의 사용자에게 권한을 부여해야 한다. repo repo_name RW+ = username 파일을 저장.. 2021. 12. 2.
[Ubuntu Git Server] 2. 사용자 추가 사용자 추가 클라이언트에서 서버의 repo에 접근하려면 서버에 클라이언트를 추가해줘야 한다. 우선 클라이언트의 git 터미널에서 ssh 키를 새로 생성하거나, 이전에 ssh로 접속할 때 사용했던 키를 복사해온다. ssh-keygen -t rsa 키를 복사하지 않고 새로 생성했다면 만들어진 공개키(.pub)를 서버로 보내준다. 만약 접근 권한이 거부된다면 기존에 로그인했던 계정의 authorized_keys를 ~git-admin/.ssh 에 복사하면 된다. path/to/id_rsa.pub, remote_host, username.pub은 사용 환경에 따라 변경해야 한다. scp path/to/id_rsa.pub git-admin@remote_host:gitolite-admin/keydir/username.. 2021. 12. 2.
반응형