목록분류 전체보기 (385)
만족
android app 내부에서 프라이빗하게 사용할 수 있는 간단한 SQLite에 대해 알아보자. 파일 형태로 입출력할 경우 검색을 위해서는 먼저 모든 file을 스캔해야 하고 검색, 수정, 삭제 등 모든 기능을 직접 구현해야 해서 매우 귀찮기 때문에, 용량이 비교적 큰 데이터를 다룰 때는 raw file과 직접 IO하는 것 보다 DB를 사용하는 편이 더 좋다. DBHelper 가장 먼저 Database와 통신하기 위한 클래스를 작성한다. class MyDBHelper( val context: Context, ) : SQLiteOpenHelper(context, DB_NAME, null, DB_VERSION) { companion object { val DB_NAME = "mydb.db" val DB_VE..
android에서 app의 스레드는 main thread와, sub thread가 있다. 기본 스레드는 main thread이고, 여기에서 ui update 가 진행된다. 하지만 file IO, network IO와 같이 오랫동안 스레드 상태를 block으로 만드는 작업들의 경우 해당 작업을 main thread에서 진행하면 ui update를 할 수 없는 상태가 되어 사용자가 바라보기에는 앱이 멈췄다고 인식하게 된다. (사실 network io의 경우에는 아주 구버전의 안드로이드가 아니라면 main thread에서 아예 실행할 수 없다. 가능하다면 발생할 상황이다.) 따라서 오래 걸리는 작업들은 별도의 스레드를 이용하여 메인 스레드가 오랫동안 블락되지 않게 해 주어야 한다. CorotineScope 기..
위와 같이 하나의 액티비티에 존재하는 어떤 sharedData에 대해 액티비티에 attached된 2개의 fragment가 그것을 사용한다고 가정해 보자. 만약 fragment1이 데이터를 변경한다면, 변경한 데이터를 activity가 fragment2에도 반영해 주어야 하고, 반대의 경우에도 마찬가지이다. 이것을 코드로 구현하게 되면 코드가 지저분해지면서 가독성을 낮추고, 이는 곧 버그가 발생하기 쉬운 환경이 된다. 사실 여기에서 우리는 '데이터가 무엇으로 바뀌는지'에 관심이 있지, '데이터가 어떻게 변경되는지(how to fetch?)'는 관심이 없다. ViewModel RxJava나 React를 경험해 본 사람들이라면, 리액티브 프로그래밍 기법을 사용했을 때 위와 같은 불필요한 곳에 신경을 덜 쓸 ..
난 처음 업로드한 영상을 보고 100% 짭이라고 생각했는데, 그걸로 짭이 맞네 찐이네 뭐네 싸우길래 이번에 학교에서 과제로 진행한 AWS Rekognition 서비스를 이용해 얼굴을 비교해 보았다. AWS Rekognition은 다양한 사물, 사람 등에 대한 정보를 AI로 학습하여 유용한 정보를 주는 서비스라고 보면 될 것 같다. 이 서비스의 기능 중 하나인 '얼굴 비교'를 통해 두 얼굴 간 유사도를 알아볼 것이다. 과연 찐일까? 짭일까? 결과 무려 99.96%의 유사도(거의 쌍둥이 혹은 동일인물이라고 보면 되는 값이다)를 보이며 AWS가 정품인증을 해 주었다. 나도 이제 인정한다. 인정한다고 스바색기야아~
SELECT table_schema "DB Name", Round(Sum(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB" FROM information_schema.tables GROUP BY table_schema; 위 SQL로 확인해볼 수 있다. 정상적으로 잘 표시되는 것을 확인할 수 있다. 수정 없이 그대로 갖다 붙이면 된다.
이번에는 데이터 모델링 시 유용하게 사용할 수 있는 패턴들에 대해 알아볼 것이다. Association Pattern 어떤 두 개체가 연관이 있기는 한데, 개체의 속성으로 추가하기에는 애매한 상황일 때 적용할 수 있다. 가령 음식 개체와 음식 제조 회사 개체가 있을 때, 모든 음식 제조 회사가 같은 음식을 만들 때 같은 가격과 같은 재료를 사용하지는 않는다. 이럴 경우 음식 가격과 음식 재료에 대한 정보를 회사 개체에 넣을 것인지, 음식 개체에 넣을 것인지가 애매해진다. 연관 패턴을 적용하면, 음식 가격/재료 속성을 포함하는 음식 제품이라는 새로운 개체를 만들고 음식 개체와 음식 제품 개체는 1:N 관계, 음식 제조 회사 개체와 음식 제품 개체가 1:N 관계를 갖게 만들 수 있다. Multivalued ..
Data Modeling을 위한 기본 개념에 무지하다면 아래 포스트를 읽어보고 오는 것을 추천한다. https://satisfactoryplace.tistory.com/232 [Database] Data Modeling (ER Modeling) 관계형 DB를 설계할 때 가장 많이 사용되는 기법으로 ER Modeling이 있다. ER Modeling은 이름에서부터 알 수 있듯이, Entity와 Relation을 이용해 현실 세계를 묘사한다. Entity Entity는 개체라고도 하며, 단독 satisfactoryplace.tistory.com Attribute ER 다이어그램이 Entity를 위와 같이 표현한 것과 달리, Crow Foot Notation에서는 아래와 같이 표현한다. 개체 표현이 더 간소화..
관계형 DB를 설계할 때 가장 많이 사용되는 기법으로 ER Modeling이 있다. ER Modeling은 이름에서부터 알 수 있듯이, Entity와 Relation을 이용해 현실 세계를 묘사한다. Entity Entity는 개체라고도 하며, 단독으로 존재할 수 있으며 다른 개체와 구별되는 object이다. 개체는 이름과 애트리뷰트를 갖는다. 이름은 개체의 이름이고, 애트리뷰트는 개체가 가질 수 있는 속성이다. 예를 들어, 사람이라는 개체는 성별, 나이, 키, 몸무게라는 애트리뷰트를 가질 수 있다. Attribute 첫 번째로 애트리뷰트는 단순 애트리뷰트와, 복합 애트리뷰트로 나눌 수 있다. 가령 사람의 나이라는 애트리뷰트는 더 이상 나눌 수 없는 단순 애트리뷰트이지만, 사람의 거주지 주소라는 애트리뷰트..