JetpackCompose의 튜토리얼 codelabs을 하면서 자동 테스트와 ViewModel의 단위 테스트 작성을 해보게 되었다.내가 해본 테스트라곤 학부생 토이프로젝트 수준이었기 때문에 코드를 작성해보고 테스트로 변수 부분을 바꿔가며 에뮬레이터나 기기에 연결해 직접 부딪혀 LogCat에서 잡고 수정하는 것이었다. 자동 테스트란? 소프트웨어의 테스트는 소프트웨어가 예상대로 작동하는지 확인하는 구조화된 방법이다. 자동 테스트는 개발자가 작성한 코드의 또 다른 부분이 올바르게 작동하는지 확인하는 코드이다. 테스트는 앱 개발 프로세스에서 중요한 부분으로, 앱 테스트를 일관되게 실행하여 앱을 공개적으로 출시하기 전에 앱의 기능 동작과 사용성을 확인할 수 있다. 변경사항이 도입될 때 테스트를 통해 기존 코드..
앱 아키텍처는 클래스 간에 앱 책임을 할당하는 데 도움이 되는 가이드라인을 제공한다. 앱 아키텍처가 잘 디자인되어 있다면 앱을 확장하고 더 많은 기능을 추가하는데 도움이 된다. 아키텍처는 팀 공동 작업을 간소화시킬 수도 있다. 가장 일반적인 아키텍처 원칙은 관심사 분리와 모델에서 UI 만들기이다.관심사 분리란, 디자인 원칙은 각각 별개의 책임이 있는 여러 함수 클래스로 앱을 나눠야 한다는 원칙이다.모델에서 UI 만들기란, 모델에서 UI를 만들어야한다는 원칙으로, 모델은 앱의 데이터 처리를 담당하고 앱의 UI 요소 및 앱 구성요소와 독립되어 있으므로 앱의 수명 주기 및 관련 문제에 영향을 받지 않는다. 아키텍처 원칙에 대한 더 자세한 내용은 다음을 참고하라.https://developer.android.c..
Compose는 리컴포지션 중에 상태를 기억하지만, 구성 변경 중에는 이 상태를 유지하지 않는다.그렇기에 상태를 유지하기 위해서는 remeberSaveable을 사용해야 한다. https://small-stepping.tistory.com/880 Jetpack Compose에서의 StateJetpack Compose에서의 State란?상태는 어떤 타입이든 될 수 있다. Int, Float, Double, Boolean, String, 여러 값을 포함한 data class 등Jetpack Compose에서는 이 상태 값이 변경될 때마다 UI는 업데이트 된다. Composesmall-stepping.tistory.com 이전에 공부했던 상태를 저장하는 remember와 mutableStateOf()는 상태..
Jetpack Compose에서도 마찬가지로 애니메이션을 구현할 수 있다. 애플리케이션에서 애니메이션을 구현해야하는 이유는 무엇일까? 앱의 현재 상황에 관한 시각적인 단서를 준다.앱의 완성도를 높히며, 세련된 느낌을 준다.사용자의 경험을 끌어올려 상호작용을 극대화시킨다.외에도 우리는 애니메이션을 앱에 구현함으로써 얻는 이점을 위해 애니메이션을 구현하고자 한다. https://developer.android.com/develop/ui/compose/animation/introduction?hl=ko Compose의 애니메이션 | Jetpack Compose | Android DevelopersCompose의 애니메이션은 사용하기 쉬우며 앱에서 훌륭한 상호작용을 제공합니다.developer.andro..
해당 튜토리얼 진행시 다음과 같은 코드와 마주하게 되었다. @Composablefun WoofApp(dogs: List) { Scaffold( topBar = { WoofTopAppBar() } ) { LazyColumn(contentPadding = it) { items(dogs) { dogs -> DogItem( dog = dogs, modifier = Modifier.padding(dimensionResource(R.dimen.padding_small)) ) } } }} Scaffold(..
위 사진에서 사진이 들어간 Box의 Top, Bottom, Left, Right에 Custom Shadow를 부여하고자 한다.XML의 경우 drawable에서 shadow_corner 와 같은 느낌으로 따로 shape 정하고, 일일히 색을 겹쳐가며 만들어본 기억이 존재한다. https://github.com/hwisulee/CRCS/blob/main/CRCS/app/src/main/res/drawable/background01.xml CRCS/CRCS/app/src/main/res/drawable/background01.xml at main · hwisulee/CRCS기업연계프로젝트인 캡스톤 디자인 팀 프로젝트에 의해 제작한 CRCS(CropRemoteControlSystem) 어플리케이션 - hwisu..
Jetpack Compose에서의 State란?상태는 어떤 타입이든 될 수 있다. Int, Float, Double, Boolean, String, 여러 값을 포함한 data class 등Jetpack Compose에서는 이 상태 값이 변경될 때마다 UI는 업데이트 된다. Compose가 상태 변경을 인식하는 방법은 무엇일까?@Composablefun Somting() { var check by remember { mutableStateOf(false) } Text("Check is $check")} 상태를 담는 객체를 사용해 값을 추적한다. 예를 들어 위와 같은 코드가 존재할 때, 하나씩 살펴보면 다음과 같다.by = kotlin delegates 키워드로써, 사용 시 객체 자체를 반환하..
Google I/O가 24년 5월 14일 열린다.모든 컨텐츠는 5월 14일에 열리므로 미리 무슨 소식이 들려올지 간략하게 설명된 것들을 참고하고 귀를 기울이고 있는게 좋을 거 같다 모바일 I/O 컨텐츠 : https://io.google/2024/explore/intl/ko/?q=mobile Google I/O 2024Don't miss our biggest developer conference, featuring product news and innovations from Google. Tune in to I/O for livestreamed keynotes and technical sessions on demand.io.google 다양한 내용이 많아서 전부 쓰지는 못할 것 같다. Android에 ..
1. REST란?REST(Representational State Transfer)는 인터넷과 같이 복잡한 네트워크 통신의 등장에 따라 이를 관리하기 위한 지침으로 만들어진 것으로, 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든 것을 의미한다. HTTP URI을 통해 자원을 명시하고, HTTP Method를 통해 URI에 대한 CRUD Operation을 적용한다. ※ CRUD Operation이란?대부분의 컴퓨터 소프트웨어가 갖는 기본적인 데이터 처리 기능 Create, Read, Update, Delete를 묶어서 일컫는 말로 REST에서의 CRUD Operation 동작 예시는 다음과 같다.Create : 데이터 생성(POST)Read : 데이터 조회(GET)Updat..
프로그램, 애플리케이션, 기계, 전략 등 모든 것은 성능 최적화에 힘을 쓴다. 왜 그런가? 그에 대해서는 좀 더 매끄럽게 일을 진행하기 위해, 허용된 자원의 한계 내에서 주어진 요구사항을 만족시키면서도 최선, 최적의 결과를 얻기 위해 최적화에 힘쓴다고 할 수 있겠다. 쉽게 접할 수 있는 게임을 예로 들자면 과거 1984년 아스키에서 제작한 MSX용 게임인 소코반는은 무려 16K 바이트 게임이다. 물론 그 당시 기술력의 한계도 있었지만 그 한계 내에서 가능한한 요구사항을 만족시키는 최선의 게임을 만들어내고자 했다. 요즘 게임은 기술력이 늘고 점차 복잡한 메커니즘의 게임이 탄생하고 사용자를 만족시키기 위해 게임의 용량이 커지고 사용자의 PC 성능도 좋아지기에 허용되는 자원의 한계도 점차 높아져만 갔다. 그 ..