반응형

분류 전체보기 134

[AOS] ROOM이란?

Android에서 ROOM이란 무엇일까? ROOM은 데이터베이스의 데이터를 Java 또는 Kotlin 객체로 매핑해주는 ORM 라이브러리입니다. ORM(Object Relational Mapping)이란? 객체 지향 프로그래밍은 Class를 사용하고, 관계형 데이터베이스는 Table을 사용한다. 객체 모델과 관계형 모델 간에 불일치가 존재한다. ORM은 객체간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다. ROOM은 SQLite에 대한 추상 레이어를 제공하여 SQLite의 모든 기능을 제공하면서 편리한 데이터베이스의 접근을 허용합니다. Google은 SQLite대신 ROOM을 사용하도록 권고하고 있습니다. SQLite vs ROOM SQLite는 쿼리에 대한 에러를 컴파일 타임에 확인할..

Android/study_til 2021.06.24

[6~7월] 개발 및 수정 사항

210617 6/22까지 목표: RecyclerView의 Drag & Drop과 Database에 변경 내용 저장하기 날씨 탭에 지역정보 적용하기 1. 미세먼지 관련 이미지 추가 (by Flaticon Freepik, DinosoftLabs) 2. LocationListView의 Layout 변경 광고가 적용되는 FrameLayout의 위치를 맨 위로 변경 RecyclerView와 FloatingActionButton을 RelativeLayout 하위에 위치시킴 LocationItem에 delete_Icon 적용 3. LocationListView에서 RecyclerView의 Drag & Drop 기능 구현 이제 Database에 적용해야 함! Reference https://jroomstudio.tis..

[문자열 탐색] KMP(Knuth-Morris-Pratt) 알고리즘

이번에 다루게 될 알고리즘은 KMP 알고리즘으로 대표적인 문자열 매칭 알고리즘입니다. KMP 알고리즘은 접두사와 접미사의 개념을 활용하여 문자열을 점프하는 기법입니다. 접두사는 앞에 있는 문자열, 접미사는 뒤에 있는 문자열로 abacaaba가 있을 때 다음과 같습니다. 접두사 접미사 a b a c a a b c 우리가 구해야 할 것은 위와 같은 접두사와 접미사가 일치하는 최대 길이입니다. 길이 문자열 최대 일치 길이 1 a 0 2 ab 0 3 aba 1 4 abac 0 5 abaca 1 6 abacaa 1 7 abacaab 2 8 abacaaba 3 위의 표처럼 접두사와 접미사가 일치하는 경우를 구하게 되면 KMP 알고리즘의 기반이 됩니다. 이제 위와 같은 접두사와 접미사의 최대 일치 길이를 어떻게 구하..

[문자열 탐색] 라빈 카프(Rabin-Karp) 알고리즘

라빈 카프(Rabin-Karp) 알고리즘 라빈 카프(Rabin-Karp) 알고리즘은 특이한 문자열 매칭 알고리즘입니다. 일반적인 경우, 빠르게 작동하는 간단한 구조의 문자열 매칭 알고리즘이라는 점에서 자주 사용됩니다. 기본적으로 해시(Hash)기법을 사용하며, 해시(Hash)는 긴 데이터를 상징하는 짧은 데이터로 바꾸어주는 기법입니다. 이러한 점에서 단순 해시 알고리즘의 경우 연산 속도가 O(1)에 달한다는 장점이 있습니다. 사실 해시(Hash)만 해도 다양한 종류의 알고리즘이 있을 뿐만 아니라 각기 다르게 구현될 수 있습니다. 하지만 문자열 매칭은 '연속적인 문자열'이라는 특별한 상황에 기반하기 때문에 해시(Hash) 또한 연속적인 경우에 더 빠르게 구할 수 있는 알고리즘을 채택하여 적용한다면 빠르게 ..

[AOS] RecyclerView의 원리와 사용법

RecyclerView란? 대량의 데이터set을 효율적으로 표시할 수 있는 View입니다. 예를 들어 카카오톡의 채팅 대화방처럼 특정 객체들을 리스트 형태로 나열하는데 RecyclerView를 활용할 수 있습니다. 기본적으로 제공되는 ListView가 있지만, RecyclerView는 커스터마이징과 효율성 측면에서 장점이 더 많은 View라고 볼 수 있습니다. RecyclerView의 재활용성 위의 그림을 보면, ListView와 다르게 RecylcerView는 아래로 스크롤 할 때, 맨 위의 객체를 맨 아래로 이동시켜 재활용하는 것을 확인할 수 있습니다. 물론, 객체 자체만을 재활용하는 것으로 객체에 담겨지는 데이터는 새로 갱신하여 사용합니다. 만약 맨 처음 화면에 보여질 View가 10개라면? 실제 ..

Android/study_til 2021.06.09

[문자열 탐색] Naive 알고리즘과 Hashing 기법

문자열 처리 알고리즘 웹 문서, XML, 빅데이터 등 문자열 데이터는 실제로 많이 처리되는 내용 단어별로 정리하여 처리한다 하더라도, 글자 단위로 처리하는 경우가 많이 발생한다. Naive 알고리즘 가장 기본적인 알고리즘으로 두개의 문자열을 처음부터 한 글자씩 비교하는 방법입니다. T[1, n], P[1, m]이 주어졌다면, T의 길이 m인 모든 부분문자열 T[1, m], T[2, m+1], ... , T[n-m+1, n]과 P를 비교 최악의 경우 시간복잡도: O(nm) Hashing 기법 P와 길이 m인 모든 부분문자열 T[1, m], T[2, m+1], ... , T[n-m+1, n]을 직접 비교하는 대신, 두 문자열의 hash값을 구하여 이 둘을 비교 만약 hash값이 다르면? 두 문자열은 100%..

[AOS] Fragment의 생명 주기

1. onAttach() - Fragment가 Activity에 붙을 때 호출. - 아직 fragment가 완벽하게 생성된 것은 아님. 2. onCreate() - 본격적으로 Fragment가 Activity에 호출을 받아 생성되는 시점. - 해당 메소드에서는 UI관련 작업을 할 수 없다. 3. onCreateView() - Fragment에 속한 각종 view나 viewGroup에 대한 UI바인딩 작업. - Layout을 inflate하여 view를 작업한다. 4. onActivityCreated() - Activity에서 Fragment를 모두 생성하고 난 후, 호출. - Activity에서 onCreate() 다음에 호출된다. - 여기서 Activity와 Fragment가 연결되는 시점이다. 5. ..

Android/study_til 2021.05.23

아키텍쳐 디자인 패턴 - MVP란?

이전 포스팅의 MVC에 이어서 MVP 패턴에 대해 알아보겠습니다. MVP란? Model, View, Presenter로 구성된 디자인 패턴입니다. MVP의 핵심 설계는 MVC와 다르게 UI(View)와 로직(Model)을 분리하고, 서로 간에 상호작용을 다른 객체(Presenter)에 그 역할을 줌으로써, 서로의 영향(의존성)을 최소화하는 것에 있습니다. 각 객체들의 특징은 아래와 같습니다. Model - 프로그램 내부적으로 쓰이는 데이터를 저장하고, 처리하는 역할(비즈니스 로직). - View 또는 Presenter 등 다른 어떤 요소에도 의존적이지 않은 독립적인 영역. View - UI를 담당하며 안드로이드에서는 Activity, Fragment가 대표적인 예. - Model에서 처리된 데이터를 Pr..

Android/study_til 2021.05.21

아키텍처 디자인 패턴 - MVC란?

위키피디아에서는 디자인 패턴을 아래와 같이 정의하고 있습니다. 소프트웨어 개발 방법에서 사용되는 디자인 패턴은, 프로그램 개발에서 자주 나타나는 과제를 해결하기 위한 방법 중 하나로, 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 이름을 붙여, 이후에 재이용하기 좋은 형태로 특정의 규약을 묶어서 정리한 것이다. 알고리즘과 같이 프로그램 코드로 바로 변환될 수 있는 형태는 아니지만, 특정한 상황에서 구조적인 문제를 해결하는 방식을 설명해 준다. 이러한 디자인 패턴은 코드의 가독성과 테스트 및 유지보수를 간편하게 만들어 줍니다. 만약 반대로 디자인 패턴을 적용하지 않는다면? 무작정 하나의 Class에 온갖 코드를 작성하면서 코드 중복이나 for문, if문들을 남발하게 되고, 제품의 유지보수..

Android/study_til 2021.05.21

[AOS] Activity의 생명 주기

Activity는 메모리에 상주되면서 소멸되기까지 생명 주기(Life Cycle)를 가지고 있습니다. 이에 따라 콜백 메서드가 호출되는데, Activity를 구현할 시에 반드시 알아야하는 내용입니다. 위 이미지는 구글 안드로이드 레퍼런스 API 가이드에 나오는 Activity의 생명 주기입니다. 다음으로 각 메서드에 관한 간략한 표를 가져왔습니다. 메소드 설명 다음 메소드 onCreate() 액티비티가 생성될 때 호출되며 사용자 인터페이스 초기화에 사용됨. onStart() onRestart() 액티비티가 멈췄다가 다시 시작되기 바로 전에 호출됨. onStart() onResume() 액티비티가 사용자와 상호작용하기 바로 전에 호출됨. onPause() onPause() 다른 액티비티가 보여질 때 호출됨..

Android/study_til 2021.05.21
반응형