전체 글

전체 글

    [Android] CameraX

    개요 Android Jetpack에 속해있는 CameraX는 카메라 기능을 적용하는데 작업 비용을 줄이고, 더 쉽게 접근할 수 있도록 고안되었다. 대부분의 안드로이드 기기에서 동작하도록 일관성 있고 사용하기 쉬운 API들을 제공한다. (안드로이드 5.0 즉, API level 21까지 호환된다.) CameraX는 Camera2의 기능을 활용하지만, LifeCycle를 인식하여 리소스를 보다 효율적이고 쉽게 관리할 수 있다. 마지막으로, 카메라X는 개발자들이 두 줄의 코드만으로 미리 설치된 카메라 앱이 제공하는 것과 동일한 카메라 기능을 활용할 수 있게 해 준다. CameraX Extensions는 지원되는 장치에 한하여 효과를 추가할 수 있는 선택적 추가 기능(Bokeh(Portrait), HDR, Ni..

    [Kotlin] 코틀린에서 RxJava와 Coroutine

    위 두 라이브러리는 비동기 작업을 구현하는 방법으로 여기저기서 많이들 사용한다. 코틀린의 경우 RxJava와 Coroutine 모두 사용 가능하고, 두 방식을 혼합하여 사용할 수도 있다. 먼저 간단하게 두 방식 사용 방식 차이점에 대해 알아보자. RxJava RxJava는 Observable Pattern, Iterator Pattern, Functional Programming을 결합한 형태로 데이터를 관찰 가능한 stream 형태로 받을 수 있다. 그렇기 때문에 중간중간마다 데이터의 변화를 확인할 수 있다. RxJava를 사용하기 위해서는 반환값으로 Single 클래스를 사용해야 한다. interface UserService{ @GET("/users) fun getUser(): Single @GET(..

    [클린 코드] 주석(2)

    나쁜 주석 주석(1)에서 말한 케이스를 제외하고 나머지는 모두 나쁜 주석의 범주에 속한다. 일반적으로 대다수의 주석은 허술한 코드, 변명, 미숙한 결정을 합리화하는 독백이다. - 주절거리는 주석 주석을 달기로 했다면 충분한 시간을 들여 최고의 주석을 달도록 노력하라. 특별한 이유 없이 의무가 또는 프로세스에서 하라고 하니까 주석을 단다면 시간낭비다. 다음 코드를 보자 public void loadProperties(){ try{ String propertiesPath = propertiesLocation + "/" + PROPERTIES_FILE; FileInputStream propertiesStream = new FileInputStream(propertiesPath); loadProperties.l..

    [클린 코드] 주석(1)

    주석은 코드를 부연 설명해주는 역할을 한다. 하지만 주석으로 좋지 않은 방법으로 짜인 코드를 보완하진 못한다. 표현력이 풍부하고 깔끔하게 짜여진 코드는 주석이 사실상 거의 필요가 없다. 간단한 예를 들어보자 //직원에게 복지 혜택을 받을 자격이 있는지 확인한다. if((employ.flags & HOURLY_FLAG) && (employee.age > 65)); if(employ.isEligibleForFullBenefits()); 위 두 if문은 같은 비교를 하지만 누가 봐도 주석을 달지 않고도 코드만으로 의도를 분명히 할 수 있다. 이와 같이 대다수의 경우 주석으로 만들려는 설명을 함수로 풀어 표현하기에 충분하다. 하지만 특정한 경우에는 주석이 필요할 순 있다. 좋은 주석 법적인 주석 - 특정 회사가..

    [Android] JitPack 안드로이드 라이브러리 모듈 배포하기

    개인적으로 사용하고 싶은 라이브러리를 제작하는 과정에서 어디서든지 사용할 수 있도록 JitPack을 통해 배포하는 방법을 알아보았다. Step 1. 배포 환경 만들기 먼저 app gradle을 아래와 같이 수정한다. plugins { id 'com.android.application' // 제거 id 'com.android.library' // 추가 id 'kotlin-android' id 'maven-publish' //추가 } android { defaultConfig { applicationId "com.mj.beautycal" //제거 minSdk 21 targetSdk 31 versionCode 1 versionName "1.0.0" testInstrumentationRunner "android..

    [클린 코드] 함수(3)

    반복하지 않기 중복은 코드의 길이를 늘리고 알고리즘이 변할 경우 중복되는 부분 전부를 수정해야 하고, 하나라도 빠뜨리면 오류가 발생할 확률을 중복의 갯수만큼 높인다. 어쩌면 중복은 소프트웨어에서 모든 악의 근원으로 많은 원칙과 기법이 중복을 없애거나 제어할 목적으로 고안되었다. 예를 들면, E.F.커드는 자료에서 중복을 제거할 목적으로 관계형 데이터베이스에 정규 형식을 만들었고, 객체 지향 프로그래밍은 코드를 부모 클래스로 몰아 중복을 없앤다. 구조적 프로그래밍, AOP(Aspect Orient Programming: 관점지향 프로그래밍), COP(Component Oriented Programming: 컴포넌트지향 프로그램) 모두 어떤 면에서는 중복 제거 전략에 해당된다. 구조적 프로그래밍 에츠허르 데..