목록분류 전체보기 (238)
Nuke Olaf - Log Store
1. 자료구조란? - 대량의 데이터를 효율적으로 관리할 수 있는 데이터의 구조 - 코드상에서 효율적으로 데이터를 처리하기 위해, 데이터의 특성에 따라 체계적으로 데이터를 구조화해야 한다. => 어떤 데이터 구조를 사용하느냐에 따라, 코드 효율이 달라진다 ex) 우편번호, 학생관리... 2. 대표적인 자료구조 (1) 배열 (2) 스택 (3) 큐 (4) 링크드 리스트 (5) 해쉬 테이블 (6) 힙 ... 등등 3. 알고리즘이란? - 어떤 문제를 풀기 위한 절차/방법 - 어떤 문제에 대해, 특정한 '입력'을 넣으면, 원하는 '출력'을 얻을 수 있도록 만드는 프로그래밍 - 얼마의 시간과 저장용량을 사용하느냐에 따라 좋은 알고리즘인지 아닌지가 판별 4. 자료구조와 알고리즘이 중요한 이유 - 어떤 자료구조와 알고리..
▶2020년 상반기 회고 2020년 1월부터 지금까지 두 개의 프로젝트를 진행했다. 지금 돌이켜 생각해보면 너무나도 소중한 경험이었고, 프로젝트를 통해 많은 것을 배운 것 같다. 나의 개발자 인생 모토인 "같이 일하고 싶은 개발자"가 되기 위해 앞으로도 더 발전하고 성장하고 싶다. 들꽃중년 (2020.1 ~ 2020.2) https://play.google.com/store/apps/details?id=com.bnvs.seniorcamera 들꽃중년 - Google Play 앱 '들꽃중년'은 사용자가 원하는 이미지에 원하는 글귀를 합성하는 서비스입니다. 새해, 기념일, 명절에 주변 지인들에게 감동적인 글귀를 입힌 이미지를 공유해보세요. 주요기능 : - 사진찍기 - �� play.google.com 정말 ..
0. 코루틴 Coroutine 과 비동기 프로그래밍 coroutine 은 비동기 처리를 하는데 사용되는 동시 실행 디자인 패턴(방법론에 가깝다)이다. 코틀린과 이름이 비슷하지만, 코틀린 뿐만 아니라 파이썬, C#, Go, Javascript 등 여러 언어에서 지원하고 있는 개념이다. Android 에서는 비동기 프로그래밍을 위한 방법으로 coroutine 을 제안한다. 멀티 스레딩을 처리할 수 있는 현재의 프레임 워크는 thread-safe excution 을 보장하는 간단한 방법이 없기 때문에, 그 이름도 유명한 콜백 지옥을 마주치게 된다. 나는 retrofit 을 이용한 서버와의 통신 과정에서 콜백 지옥이라는 것에 대해 알게 되었다. 처음엔 이 "비동기" 라는 개념을 제대로 이해하지 못해서 레트로핏을..
1. 리사이클러뷰로 스크롤 없이 유동적인 크기의 아이템을 보여주기 Metaler 앱을 만들면서, 사용자가 입력한 태그를 리사이클러뷰를 통해 보여줘야 하는 상황이 있었다. 그런데 문제가 있었다. 안드로이드에서 기본적으로 지원하는 linear layout manager를 리사이클러뷰에 사용하면, 한 행, 또는 한 열에 무조건 한 개의 아이템만을 보여줄 수 있다는 것이었다. 물론 같은 크기의 아이템으로 구성된 리스트를 보여줄 때는 (예: 메모장에서 메모 목록 보여주기, 뉴스기사 보여주기 등) 아이템을 한 행/열 당 한개만 보여주는 것이 일반적이다. 하지만 나는 마치 웹에서 사용되는 flexbox 레이아웃처럼 태그 목록을 보여주고 싶었다. flexbox 는 컨테이너 내의 아이템 요소를 컨테이너 크기에 따라 자동..
현재 Metaler 앱은 Fragment 가 아닌 Activity 만을 사용하여 만들어졌다. 그러나, Activity 만을 사용해서 탭바를 구현해야하는 점이 번거로웠다. 액티비티 스택을 어떻게 관리해야하며, 화면전환은 어떻게 해야 진짜 탭바 레이아웃처럼 보이게 할 수 있을까? 라는 고민에 대한 해결책이다. 1. 우선은 탭바 버튼을 누를때 액티비티의 화면전환 애니메이션을 제거하자. 실제 프래그먼트로 이루어진 탭바 레이아웃의 경우, 탭바 버튼을 누를때 화면이 움직이지 않는다. 즉, 애니메이션이 없다는 얘기이다. 그래서 나는 Animation Style 을 없앤 AppTheme 을 만든 다음, Manifest 파일에서 애니메이션이 제거되어야 하는 탭바 액티비티에 NoAnimTheme 을 설정해주었다. scre..
1. MVVM - Model View ViewModel MVVM 은 소프트웨어 아키텍쳐 패턴의 하나이다. * 아키텍처 패턴(architecture pattern) 이란, 주어진 문맥 안에서 소프트웨어 아키텍처의 공통적인 발생 문제에 대한 일반적인, 재사용 가능한 해결책을 의미한다. 아키텍처 패턴은 디자인 패턴과 비슷하지만 더 넓은 범위에 속한다. MVVM 에 대해 이해하기 위해서는 MVP 패턴에 대해 알고 있는 것이 좋다. MVVM 패턴은 MVP 패턴에서 파생되어 나왔기 때문이다. MVVM 패턴은 프로그램을 설계하기 위한 하나의 방법론이라고도 생각할 수 있다. 예를 들어서 메모장 안드로이드 앱을 만든다고 생각해보자. 패턴이나 아키텍처에 대해 전혀 몰랐을때, 나는 데이터를 가져오고 저장하는 코드, 데이터를..
1. Koin 이란? Koin 이란, 순수 kotlin 으로 작성된 Dependency Injection 프레임워크 (이하 DI 프레임워크)이다. DI 란 Inverse Of Control (제어 역전) 을 통해 객체끼리의 의존 관계를 분리시키는 디자인 패턴을 말한다. 즉, 쉽게 말해서 객체 A 내부에서 객체 B 를 어떤 방식으로든 사용하는 경우 객체 B 에 대해 객체 A 가 의존하고 있다고 볼수 있으며, 객체 A 에서 객체 B 를 초기화 하지 않고 사용할 수 있도록 외부에서 객체 B 를 초기화하여 객체 A 에 주입해주는 것을 DI 라고 생각할 수 있다. DI 관련 내용 정리 포스팅 : https://salix97.tistory.com/264 안드로이드에서 대표적으로 많이 사용하는 DI 프레임워크로 Da..
구글 공식문서에서는 Dependency Injection (줄여서 DI)에 관한 내용이 Best Practice 에 분류되어 있다. 또한, 현재 구글에서는 DI 프레임워크인 Dagger 를 공식적으로 지원하고 있다. 그 정도로 DI 가 구글에서 매우 중요하게 생각하고, 권장하는 기술이라는 것을 알 수 있다. 그렇다면, Dependency Injection 이란 무엇이고 왜 사용하는 것일까? 1. Dependency 란? Dependency Injection 가 무엇인지 알기 위해서는 먼저 Dependency 가 무엇인지 짚고 넘어가야겠다. Dependency 는 "의존성" 이라는 뜻이다. 일반적으로 둘 중 하나가 다른 하나를 어떤 용도를 위해 사용하는 경우를 Dependency 라고 하는데, 여기서는 객..