Android

    [Android] 테스트 코드는 왜 작성해야 할까?

    안드로이드에서 "왜" 테스트 코드를 작성해야 할까? 지금까지 테스트 코드에 대해 알아보기 전에는 '대체 왜 테스트 코드를 작성해야 하는가' 에 대해 의문을 품고 있었습니다. 필자뿐만 아니라 이 글을 읽는 많은 분들이 그렇게 생각하셨을 것입니다. 우선 테스트 코드를 작성하지 않았을 때의 개발 flow에 대해 정리해보았습니다. 기존 개발 Flow 기획물과 디자인 작업물을 바탕으로 코드를 작성하여 기능을 구현합니다. 구현한 기능이 정상적으로 작동하는지 AVD 또는 실제 디바이스를 바탕으로 결과를 확인합니다. 에러가 발생하면 Timber 또는 Log를 통해 어느 부분에서 오류가 발생했는지 파악합니다. 문제가 있는 코드를 fix하고 다시 빌드하여 위 과정을 반복합니다. 위 flow를 읽어보았다면 이런 생각이 들 ..

    [Android] Jetpack Compose Part 1 - Does and Dont Code Style #2

    https://github.com/tmdgh1592/Jetpack-Compose-Android-Examples GitHub - tmdgh1592/Jetpack-Compose-Android-Examples: Learn Jetpack Compose for Android by Examples. Learn how to use Jetpack Com Learn Jetpack Compose for Android by Examples. Learn how to use Jetpack Compose for Android App Development. Android’s modern toolkit for building native UI. - GitHub - tmdgh1592/Jetpack-Compose-An... github..

    [Android] Jetpack Compose Part 1 - Does and Dont Code Style #1

    https://github.com/tmdgh1592/Jetpack-Compose-Android-Examples GitHub - tmdgh1592/Jetpack-Compose-Android-Examples: Learn Jetpack Compose for Android by Examples. Learn how to use Jetpack Com Learn Jetpack Compose for Android by Examples. Learn how to use Jetpack Compose for Android App Development. Android’s modern toolkit for building native UI. - GitHub - tmdgh1592/Jetpack-Compose-An... github..

    [Android] Jetpack Compose Part 0 - Compose란?

    https://github.com/tmdgh1592/Jetpack-Compose-Android-Examples GitHub - tmdgh1592/Jetpack-Compose-Android-Examples: Learn Jetpack Compose for Android by Examples. Learn how to use Jetpack Com Learn Jetpack Compose for Android by Examples. Learn how to use Jetpack Compose for Android App Development. Android’s modern toolkit for building native UI. - GitHub - tmdgh1592/Jetpack-Compose-An... github..

    [Android] Thread의 interrupt()와 stop()

    ■ Thread.stop() Deprecated 된 이유 Thread는 run() 메서드 내부의 코드가 모두 실행되면 자동적으로 종료됩니다. 하지만, 경우에 따라 개발자는 실행 중인 Thread를 즉시 종료할 필요가 발생할 수 있습니다. 예를 들어, 음악이 틀어져 있는 상태에서 음악의 진행도를 Progress로 표현하고자할 때 Thread를 사용한다면, 음악이 종료되었을 때, 더 이상 Progress를 변화시킬 필요가 없으므로 Thread를 종료시켜 메모리를 절약해야 합니다. 이전에는 이러한 경우에 Thread의 stop() 메서드를 호출하여 종료시켰지만, Oracle이 제공하는 Java API 문서에 따르면, This method is inherently unsafe. 를 시작으로 메서드가 사라졌음을 ..

    [Android] ViewTreeObserver를 이용하여 View가 그려지는 시점을 알아보자! (getWidth(), getHeight()의 출력값이 0인 경우..)

    ViewTreeObserver View의 높이를 구하기 위해, onCreate() 콜백 메서드에서 getHeight() 혹은 getMeasuredHeight()를 호출하면 0이 반환되곤 합니다. 그 이유는 높이를 얻고자 하는 View가 아직 화면에 그려지기 이전에 호출했기 때문입니다. ViewTreeObserver를 알기 전에는 자바에서는 Thread, 코틀린에서는 Coroutine을 사용하여 n MS(Millisecond) 만큼 시간이 지났을 때 높이를 얻으라고 했을 것입니다. 하지만 이런 방식은 View가 그려진 정확한 시점을 알지 못하기 때문에, n MS라는 시간 안에 View를 그리지 못하는 상황이나 기기 스펙에서는 똑같이 0을 반환하는 시간차 문제가 발생할 것입니다. 그렇기 때문에 알아야하는 것..

    [Android] Firebase Dynamic Link를 활용하여 사용자 초대링크 생성하기

    이번 포스팅에서는 Firebase의 Dynamic 링크를 활용하여 사용자를 유입시키고 초대할 수 있는 링크를 만들어보도록 하겠습니다. 해당 기능을 구현하게 된 계기는, 현재 동아리에서 진행하고 있는 과외 학생 관리 서비스에서 선생님이 학생을 수업에 참여시키기 위한 초대 링크 기능이 필요하였기 때문입니다. 그렇게 구상한 로직은 아래와 같습니다. 1. 선생님이 수업을 생성한다. 2. 초대하기 버튼을 통해 초대링크를 생성하고, 카카오톡으로 학생에게 링크를 공유한다. 3. 링크를 통해 앱 설치 후 접속하면, 선생님의 수업에 학생이 참여한다. 해당 포스팅에서는 링크를 공유하고 카카오톡으로 공유하여 접속하는 기능만 다루겠습니다. 우선 Firebase 사이트에 접속합니다. https://console.firebase..

    [Android] 자바 코틀린 (Pattern, Matcher)정규식을 사용하여 패스워드 조건을 만들어보자

    동아리 프로젝트 중, 비밀번호 변경을 구현하는 단계에서 정규식을 사용할 일이 생겼습니다. 조건은 '영문, 숫자, 특수문자 중 2개를 사용하여 최소 8자리 이상'의 비밀번호를 입력해야 합니다. 자바와 코틀린에서는 기본적으로 Pattern과 Matcher라는 정규식 라이브러리 클래스를 제공합니다. 이번 포스팅에서는 해당 클래스의 사용방법에 대해 알아보고 직접 비밀번호에 적용해보도록 하겠습니다. Pattern - Pattern 클래스 주요 메서드 compile(String regex) : 주어진 정규표현식으로부터 패턴을 만듭니다. matcher(CharSequence input) : 대상 문자열이 패턴과 일치할 경우 true를 반환합니다. asPredicate() : 문자열을 일치시키는 데 사용할 수있는 술어..

    쿠키(Cookie)와 세션(Session)을 이용한 로그인

    쿠키(Cookie)와 세션(Session) 동아리 프로젝트 기획 단계에서 '로그인 기능을 어떠한 방식으로 구현하는 것이 효율적일까?' 라는 생각을 하게 되어, OAuth, JWT 등 여러 방법들 중에서도 쿠키와 세션을 이용한 로그인 방식을 우선적으로 공부하여 정리합니다. 쿠키(Cookie)란? 쿠키(Cookie)란 서버가 사용자의 웹 브라우저(Client)에 저장하는 데이터입니다. 쿠키의 형태는 Key : Value의 String 형식으로 이루어져 있습니다. 쿠키당 최대 4Kb까지 저장할 수 있으며, 쿠키 표준안인 RFC2109에 따르면, 300개까지 만들 수 있습니다. 다만, 브라우저마다 저장되는 쿠키가 다르기 때문에, 예를 들어 크롬에 남긴 쿠키는 IE에서 사용할 수 없습니다. (브라우저가 다르면 서..

    [Android] 안드로이드 Strings.xml 국가별 언어 설정 방법 및 국가 코드 정리

    개발을 하다 보면, Android, ios 상관없이 다국어화를 해야 하는 경우가 발생하곤 합니다. 한국에서 중국어나 일본어로 된 앱을 잘 사용하지 않듯이, 본인의 모국어에 맞추어 화면에 텍스트를 보여줄 필요가 있습니다. 이번 시간에는 다양한 국가에서 앱을 사용하기 편하도록 설정하는 다국어 설정을 해보겠습니다. 우선 위 사진을 살펴보면, values와 values-ko 두 가지가 있습니다. values의 경우 우리가 처음 안드로이드 프로젝트를 실행하면 자동으로 생성되는 폴더로, 어떠한 나라에서든지 Default로 사용되는 폴더입니다. 그 아래를 보면 values-ko라는 폴더가 보이는데, 이는 한국어로 설정한 기기에서 앱을 실행했을 때 사용될 폴더입니다. 이처럼 특정 국가의 언어를 지정하고 싶으면, 국가 ..