R8 FAQR8 은 ProGuard 와 동일한 문법을 사용즉 ProGuard 와 호환 되도록 최대화하지만 다른 부분도 있음. R8 은 최적화 모드가 다름 (2가지 제공)Compatibility 모드 와 Full 모드를 제공Compatibility 모드가 defaultR8 uses the same configuration specification language as ProGuard, and tries to be compatible with ProGuard. However as R8 has different optimizations it can be necessary to change the configuration when switching to R8. R8 provides two modes, R8 co..
ChatGPT 로 Commit Message 생성하기 유용한 커밋 메세지 commit 메세지를 개발, 리팩토링 진행 시 작업을 세분화하고 이력을 명확히 남기고 한 작업은 보통 한개의 jira 와 관련이 있지만. QA 이슈 지라가 발행되는 경우 jira 번호 링크하여 추적에 도움 개발, 버그 수정, 새기능 추가, 리팩토링 을 한번에 하는 것이 아닌 나눠 수행하도록 상기 코드 리뷰 시, 팀원들의 이해를 돕고 (불가피하게 많은 량의 코드를 pr로 올리는 경우 commit msg가 도움) 문제 추적을 용이하게 하고(필요시 각 단위작업 rollback 용이성 확보) 하기 위해 작성을 하곤 하는데요. 변수명, 함수명 못지않게 고민이 되는 것이 commit 메세지 입니다. 이번 글 에서는 Commit Message ..
키워드 분포란? "키워드 분포"란 특정 키워드가 웹페이지의 내용 전반에 골고루 퍼져 있는지를 나타내는 용어입니다. 예를들어 워드프레스 플러그인 인 Yoast SEO Premium은 키워드 분포를 최적화하고, 사용자에게 텍스트의 키워드 사용이 균형잡혀 있는지 알려줍니다. 이를 통해 검색 엔진이 웹페이지의 주제와 관련성을 더 정확하게 인식하게 도와주며, 결국 웹사이트의 검색 순위를 높이는데 도움을 줍니다. 파이썬 스크립트로 구현해보기 파이썬을 사용하여 텍스트 파일에서 키워드 분포를 측정하는 코드를 작성해 드리겠습니다. 아래 코드는 텍스트 파일을 읽어 특정 키워드의 분포를 계산하고 결과를 출력해 줍니다. import re def keyword_distribution(filename, keyword): with..
Testing in Jetpack Compose 2. What to test? 테스트 해볼 것들 Test that the tabs show the intended icon and text Test that the animation matches the spec Test that the triggered navigation events are correct Test the placement and distances of the UI elements in different states Take a screenshot of the bar and compare it with a previous screenshot 3. Create a simple UI test Create the TopAppBarTest fil..
RallyDestinations 이번 코드랩에서 배울 내용 Basics of using Jetpack Navigation with Jetpack Compose Navigating between composables Integrating a custom tab bar composable into your navigation hierarchy Navigating with arguments Navigating using deep links Testing navigation 샘플 프로젝트는 네비게이션이 되고 있지만, 사실 컴포즈 네비게이션을 사용한 구현이 아니다. 이를 컴포즈 네비게이션으로 구현해보자. Migrating to Compose Navigation 점진적으로 마이그레이션을 해보자! 의존성 추가 해주기..
AdvancedStateAndSideEffectsCodelab 1. 어떤 내용을 배울까? Introduction 젯팩 컴포즈의 State 와 Side Effects 에 대한 고급 개념을 실습해봤다. 로직이 사소하지 않은 stateful 한 컴포저블의 state holder 를 만드는 방법을 다룬다. 컴포즈 코드에서 코루틴과 suspend 함수를 사용하는 방법과 어떻게 다양한 유즈케이스를 위해 side effects 를 트리거하는지 알아 보았다. 미완성된 프로젝트 하나를 통해 점차적으로 개선하면서 완성하여 아래와 같은 앱을 완성하려고한다. 참고로 코드랩에 기본적인 테스트 코드가 작성되어 있기 때문에, 코드랩 중간 중간 테스트를 돌려보면서 잘 돌아가나 보도록 하자. (시간 나면 해보기) Displaying ..
1. What you'll learn How to use several basic Animation APIs 2. Getting set up gradle 버전 업 경고가 뜰 시, 업그레이드 해주어도 무방하다. (시간이 부족하면 skip) 3. Animating a simple value change animate*AsState 를 통해 간단한 값 변화가 일어나는 에니메이션을 줄 수 있다. 코드랩의 경우 색상 변경 이므로 animateColorAsState 를 사용할 수 있다. return value 는 State 이므로 by 델리 게이터를 사용할 수 있다. val backgroundColor by animateColorAsState(if (tabPage == TabPage.Home) Purple100 e..
pathway1-2: MigrationCodelab 정리 (스터디) 기존 뷰 기반 레이아웃을 컴포즈 레이아웃으로 마이그레이션 하는 방법을 알아보자. view-based → compose 컴포즈로 대체할 뷰 기반 레이아웃을 모두 주석 처리해주자. (xml 기준이다.) 주석으로 대체한 부분에는 아래와 같이 컴포즈 뷰를 삽입해주자. (xml 에 마이그레이션 하는 것이기 때문에 어쩔 수 없이 얘도 뷰가 되는 듯하다.) 안드로이드 뷰 에서 컴포즈 사용하기 composeView.setContent { // You're in Compose world! MaterialTheme { PlantDetailDescription() } } 기존 방식의 안드로이드 뷰(액티비티 등) 에서 컴포즈 레이아웃을 사용하는 방법이다. 본..
커스텀 테마를 사용하는 방법을 알아보자. 커스텀 테마 사용하기 먼저 JetnewsTheme 라는 이름으로 테마를 사용할 것이므로 테마를 아래와 같이 정의 해준다. @Composable fun JetnewsTheme(content: @Composable () -> Unit) { MaterialTheme(content = content) } MaterialTheme 를 단순 감싸고 있으며, 이후에 MaterialTheme 의 생성자 옵셔널한 파라미터를 전달하면서 테마를 커스텀하는 방식으로 사용할 수 있다. @Composable fun Home() { val featured = remember { PostRepo.getFeaturedPost() } val posts = remember { PostRepo.ge..
컴포즈에서 상태는 어떻게 정의하고 사용하는지 알아보는 코드랩을 진행하였다. 코드를 보면서 전체적인 이해를 해보도록 하자. Composable 에서의 상태 @Composable fun WaterCounter(modifier: Modifier = Modifier) { val count = 0 Text( text = "You've had $count glasses.", modifier = modifier.padding(16.dp) ) } Composable 함수 (WaterCounter 함수)를 사용하여 새 파일 WaterCounter.kt 를 생성 한다. @Composable fun WellnessScreen(modifier: Modifier = Modifier) { WaterCounter(modifier)..