[이펙티브 코틀린 요약] 재사용성(Reusability)에 대하여

프로젝트에서 이미 있던 코드를 복사해서 붙여넣고 있다면, 무언가가 잘못된 것이다. -이펙티브 코틀린 저자- Knowledge를 반복하여 사용하지 말라 여기서 언급하는 knowledge는 일반적으로 표현하는 ‘지식’과 약간 다르게 ‘의도적인 정보’를 나타내는 개념으로, <실용주의 프로그래머> 라는 책에서 언급된다. 이 책에서는 ‘Don’t Repat Yourself’라는 규칙을 ‘DRY 규칙’이라고 표현한다. 또는 WET 안티패턴이라고도 한다. 프로그램에서 중요한 knowledge를 더보기…

[이펙티브 코틀린 요약] 가독성(Readability)에 대하여

코틀린은 간결함 보다는 가독성을 좋게하는 데 목표를 두고 설계된 프로그래밍 언어다. 코틀린을 사용하면 깨끗하고 의미 있는 코드와 API를 쉽게 작성할 수 있다. 다음의 항목들을 참조하여 가독성 좋은 코드를 작성해보자. 1. 가독성을 목표로 설계하기 개발자는 코드를 작성하는 시간보다 읽는데 많은 시간을 소모한다. 따라서 항상 가독성을 생각하면서 코드를 작성해야 한다. 가독성이란 코드를 더보기…

[이펙티브 코틀린 요약] 안정성(Safety)에 대하여

이 책에서 코틀린을 사용하는 첫번째 이유로 안정성(Safety)을 꼽고 있다. 코틀린은 잠재적인 오류와 크래시를 줄이며, 사용자와 개발자 모두에게 좋은 비즈니스 가치를 제공한다라고 설명한다. 안전성은 기본적으로는 언어일뿐이고, 사실은 개발자가 이를 사용하여 어떻게 코드를 작성하느냐에 따라 안정성이 좌지우지 된다. 다음의 항목들을 참고하여 오류가 덜 발생하는 코드를 만들 수 있다고 이 책은 소개 하고 더보기…

KAPT보다 2배 더 빠르게, 코틀린을 위한 KSP

KSP(Kotlin Symbol Processing) KSP(Kotlin Symbol Processing)는 코틀린에서 경량화 된 컴파일러 플러그인을 개발할 수 있는 API다.  학습곡선을 최소한으로 줄이고, 코틀린의 기능을 활용할 수 있는 단순화된 API를 제공한다. KSP는 코틀린 1.4.30 버전 이상부터 호환되며, KAPT와 비교했을 때 KSP를 사용하는 애노테이션 프로세서는 최대 2배 더 빠르게 실행할 수 있다. 자세한 내용은  KSP Github 더보기…

코루틴이 경량 스레드인 이유 (Light-weight thread)

Why Coroutine is light-weight thread 코틀린 공식 문서에서는 코루틴을 경량 스레드(light-weight thread)라고 표현하고 있는데, 그 이유를 알아보자. 코루틴은 스레드에서 실행된다. 이것은 대원칙이다. 코루틴이 단독으로 또는 다른 수단에 의해 실행될 수 없다는 것을 명심하자. 그리고 여러개의 코루틴을 하나의 스레드를 지정하여 실행할 수 있지만 동시에 실행 하는 것은 불가능하고, 한번에 하나의 명령어만 더보기…

Jetpack 새로운 점 요약(What’s new in Android Jetpack)

 위의 영상을 요약한 내용입니다. 구글 안드로이드 소프트웨어 엔지니어인 이짓 보이어가 안드로이드 Jetpack에 대해서 설명을 시작합니다. 상위 1000개의 앱에서 47%가 두 개 이상의 Jetpack 라이브러리를 사용한다네요. Hilt Jetpack 설명하다가 바로 의존성 주입 이야기를 시작하며 Hilt라는 카드를 꺼냅니다. Hilt는 Dagger 기반의 안드로이드 전용 의존성 주입 라이브러리입니다. 구글이 Jetpack의 첫 소개로 Hilt를 더보기…

코틀린에서 Annotation Processor를 디버깅 하는 방법

코틀린에서 Annotation Processor를 디버깅 하는 방법 https://medium.com/@cafonsomota/debug-annotation-processor-in-kotlin-6eb462e965f8 아래에 나올 내용은 위 링크의 내용을 번역하고, 추가적인 내용을 덧붙인 글입니다. 코틀린 언어를 사용하면서 애노테이션 프로세서 다루는 경우 어떻게 디버깅을 할 수 있는지 알아봅시다. 로그 출력하기 어노테이션 프로세서가 컴파일 타임에 작업을 수행하는 동안 로그를 출력하기기 위해서는 ProcessingEnvironment.getMessager().printMessage(…)를 호출 해야 한다. ProcessingEnvironment 객체는 AbstractProcessor 더보기…

액티비티 결과 처리하기 (Good bye… startActivityForResult, onActivityResult)

액티비티(Activity)는 안드로이드의 주요 컴포넌트 중 하나로 애플리케이션에서 필수적으로 사용된다. 2007년, 안드로이드가 등장한 뒤로 액티비티간에 데이터(인텐트)를 전달하고, 결과를 처리할 때 개발자는 startActivityForResult()의 호출과 onActivityResult(requestCode, resultCode, data) 콜백호출을 다뤄왔다. 새로운 액티비티 결과(Activity Result) API는 지금까지 해오던 방법을 개선하여 완전히 새로운 액티비티 결과 처리 방법을 제공한다. 기존 방법으로 액티비티 결과 전달받기 예를 들어 더보기…

안드로이드에서 blur효과 구현하기 : 성능 개선 및 LiveBlur 구현하기

안드로이드에서 blur효과 구현하기 : 성능 개선 및 LiveBlurView 구현하기 이번 포스팅은 지난시간에 다룬 Box Blur와 StackBlur편에 이어 세번째 이야기입니다. 스택블러(Stack Blur)는 2Pass 전략을 사용하여 빠른 이미지 프로세싱 시간과 품질을 보장한다. 스택블러 알고리즘과는 별개로 안드로이드에서 조금 더 성능을 개선하는 방법에 대해서 알아보자. 성능 개선 방법 이전 시간에 다룬 스택블러로 HD품질의 이미지를 더보기…

안드로이드에서 blur효과 구현하기 : Gaussian Blur, Stack Blur

안드로이드에서 blur효과 구현하기 : Gaussian Blur, Stack Blur 이번 포스팅은 지난시간에 다룬 안드로이드에서 blur효과 구현하기 : Box Blur에 이어 두번째 포스팅입니다. 박스블러(Box Blur)는 radius값에 따라 연산량이 많아지는 문제가 있었지만, 연산방법을 개선하여 이미지 처리 시간 문제를 해결했다. 하지만 blur의 품질은 여전히 좋지 못했고, 픽셀화된 느낌이 많이 든다. Gaussian Blur 박스블러와는 다르게, 더보기…