오탈자 정보

[핵심만 골라 배우는 젯팩 컴포즈]_오탈자

제이펍 2023. 1. 5. 12:13

현재까지 발견된 이 책의 오탈자 정보와 오류를 안내합니다. 번역과 편집 시에 미처 확인하지 못하고 불편을 끼쳐드려 죄송하다는 말씀을 드립니다. 아래의 오탈자 사항은 추후 재쇄 시에 반영하도록 하겠습니다.

 

이외의 오탈자 정보를 발견하시면 옮긴이(creatinov.kim@gmail.com)나 출판사(help@jpub.kr)로 연락주시면 고맙겠습니다. 

 

최종수정일자: 2023년 12월 4일 
1쇄본 오탈자

33쪽 밑에서 두 번째 단락 2번째 줄에서(박명범 님 제보)

이는 차례로 sliderPosition 변수를 20으로 초기화하며

 이는 차례로 sliderPosition 변수를 20으로 재초기화하며

 

166쪽 밑에서 2번째 줄에서(강명원 님 제보)

onValueChange = onValueChange

⇒ onValueChange = onTextChange

 

168쪽 3번째 줄에서(강명원 님 제보)

onValueChange = onValueChange

⇒ onValueChange = onTextChange

 

179쪽 첫째 코드문에서(김동현 님 제보)

}
@Composable
fun Composable8() {
    Text("Composable 8")
}

 

     Text("Composable 7")
}


@Composable
fun Composable8() {
     Text("Composable 8")
}

 

209쪽 밑에서 3~2번째 줄에서(박명범 님 제보)

컴포저블 함수가 모디파이어를 받는다면 항상 해당 함수의 파라미터 리스트의 두 번째 선택적 파라미터여야 한다. 

 컴포저블 함수가 모디파이어를 받는다면 항상 해당 함수의 파라미터 리스트의 번째 선택적 파라미터여야 한다.

 

242쪽 밑에서 3번째 줄에서(박명범 님 제보)

if placeable[FirstBaseline] == AlignmentLine.Unspecified {

 if (placeable[FirstBaseline] == AlignmentLine.Unspecified) {

 

279쪽 7~12번째 줄에서(박명범 님 제보)

ConstraintLayout(constraints, Modifier.size(width = 200.dp, height = 200.dp))
{

    val button1 = createRef()

    val constraints = myConstraintSet(margin = 8.dp)
    MyButton(text = "Button1", Modifier.size(200.dp).layoutId("button1"))
}

⇒ 

val constraints = myConstraintSet(margin = 8.dp)

ConstraintLayout(constraints, Modifier.size(width = 200.dp, height = 200.dp))
{

    val button1 = createRef()

    MyButton(text = "Button1", Modifier.size(200.dp).layoutId("button1"))
}

 

288쪽 둘째 단락에서(박명범 님 제보) 
대신 활성화 상태의 스레들 풀을 유지하고 코루틴들을 해당 스레드에 할당하는 방법을 관리한다. 활성화된 코루틴이 중지되면 해당 코루틴은 코틀린 런타임에 의해 저장되고, 다른 코루틴이 재실행되어 그 자리를 대신한다. 코루틴이 재시작되면 해당 코루틴은 스레들 풀의 비어 있는 스레드에 원복되고 완료 혹은 중지될 때까지 계속 실행된다.
⇒ 대신 활성화 상태의 스레드 풀을 유지하고 코루틴들을 해당 스레드에 할당하는 방법을 관리한다. 활성화된 코루틴이 중지되면 해당 코루틴은 코틀린 런타임에 의해 저장되고, 다른 코루틴이 재실행되어 그 자리를 대신한다. 코루틴이 재시작되면 해당 코루틴은 스레드 풀의 비어 있는 스레드에 원복되고 완료 혹은 중지될 때까지 계속 실행된다.

 

298쪽 밑에서 7~5번째 줄에서(강명원 님 제보)

앞의 Column 및 Row 리스트 예시는 아이템 리스트를 표시하지만, 사용자는 화면에 표시되는 영역에 맞는 아이템에만 접근할 수 있다. Row, Column 기반의 리스트를 스크롤 가능하게 하려면 추가 단계를 거쳐야 한다.

⇒ 앞의 Column 및 Row 리스트 예시는 아이템 리스트를 표시하지만, 사용자는 화면에 표시되는 영역에 맞는 아이템에만 접근할 수 있다. 왜냐하면 리스트는 기본적으로 스크롤되지 않기 때문이다. Row, Column 기반의 리스트를 스크롤 가능하게 하려면 추가 단계를 거쳐야 한다.

 

300쪽 첫 문장에서(박명범 님 제보)

LazyColumn, LazyRows 리스트를 
⇒ LazyColumn, LazyRow 리스트를  

 

336쪽 밑에서 2번째 줄에서(박명범 님 제보)

scaleOut(): 콘텐츠를 전체 크기에 지정한 대상 비율까지

⇒ scaleOut(): 콘텐츠를 전체 크기에 지정한 대상 비율까지

 

357쪽 38.9절 셋째 단락 끝줄에서(박명범 님 제보)

(animateFloat(), animateDp(), animationColor() 등).

⇒ (animateFloat(), animateDp(), animateColor() 등).

 

357쪽 38.9절 넷째 단락 첫 줄에서(박명범 님 제보)

updataTransitions의 동작을 확인하기 위해

updateTransition의 동작을 확인하기 위해

 

370쪽 첫째 코드문 9~10라인(공백 포함해서 카운트) 삭제(박명범 님 제보)

val canvasWidth = size.width
val canvasHeight = size.height

val canvasWidth = size.width

val canvasHeight = size.height

 

371쪽 첫째 코드문 2라인 삭제(박명범 님 제보)

val canvasWidth = size.width

val canvasWidth = size.width

 

372쪽 둘째 코드문 10~11라인(공백 포함해서 카운트) 삭제(박명범 님 제보)

val canvasWidth = size.width
val canvasHeight = size.height

val canvasWidth = size.width

val canvasHeight = size.height

 

390쪽 밑에서 5번째 줄에서(박명범 님 제보)

result = "Invalid Entry"

result = "Invalid Entry"

 

391쪽 둘째 코드문 7라인(공백 포함해서 카운트)에서(박명범 님 제보)

fun ScreenSetup(viewModel: DemoViewModel = DemoViewModel()) {

fun ScreenSetup(viewModel: DemoViewModel = viewModel()) {

 

392쪽 둘째 코드문 3라인에서(박명범 님 제보)

fun DefaultPreview(model: DemoViewModel = DemoViewModel()) {

fun DefaultPreview(model: DemoViewModel = viewModel()) {

 

395쪽 본문 4번째 줄에서(박명범 님 제보)

현재 textState 값 역시 convertTmpe() 함수로 전달된다.

⇒ 현재 textState 값 역시 convertTemp() 함수로 전달된다.

 

395쪽 본문 10번째 줄에서(박명범 님 제보)

키보드 타입 프로퍼티는 KeyboardNumber로 설정된다.

 키보드 타입 프로퍼티는 KeyboardType.Number로 설정된다.

 

395쪽 밑에서 2번째 줄에서(박명범 님 제보)

label 프로퍼티에 할당된 텍스는

label 프로퍼티에 할당된 텍스트

 

457쪽 본문 4번째 줄에서(박명범 님 제보)

New ➞ Kotlin Fail/Class 메뉴 옵션을 선택한다.

New ➞ Kotlin Class/File 메뉴 옵션을 선택한다.

 

459쪽 둘째 단락 2번째 줄에서(박명범 님 제보)

import, importVector 프로퍼티,

⇒ import, imageVector 프로퍼티,

 

463쪽 둘째 코드문 5~11라인(공백 포함해서 카운트)에서(박명범 님 제보): Compose v1.2.0 이후부터는 다음 내용으로 수정해야 작동함

Scaffold(
       topBar = { TopAppBar(title = {Text("Bottom Navigation Demo")}) },
       content = { NavigationHost(navController = navController) },
       bottomBar = { BottomNavigationBar(navController = navController)}
       )
}

 

Scaffold(
    topBar = { TopAppBar(title = { Text("Bottom Navigation Demo") }) },
    bottomBar = { BottomNavigationBar(navController = navController) }
) { paddingValue ->
    Box(
        modifier = Modifier.fillMaxSize()
            .padding(
                top = paddingValue.calculateTopPadding(),
                bottom = paddingValue.calculateBottomPadding()
            )
    ) {
        NavigationHost(navController = navController)
    }
}

 

471쪽 첫째 코드문 1~2라인에서(박명범 님 제보)
SomeComposable() {
       .pointerInput(Unit) {

SomeComposable() {

       Modifier
             .pointerInput(Unit) {

 

473쪽 48.8 3번째 줄에서(박명범 님 제보)

rememberScrollStat() 함수를 호출하면서

 rememberScrollState() 함수를 호출하면서

 

473쪽 밑에서 4번째 줄에서(박명범 님 제보)

스크롤 동작을 구현하기 위해 새로운 오스셋을 적용하는

스크롤 동작을 구현하기 위해 새로운 오프셋을 적용하는

 

476쪽 첫 줄에서(박명범 님 제보)

이러한 3개의 파라미터는 rememberTransformationState() 함수를 호출할 때,

 이러한 3개의 파라미터는 rememberTransformableState() 함수를 호출할 때,

 

476쪽 둘째 코드문에서(박명범 님 제보)

SomeComposable(modifier = Modifier
       .transformable(state = state) {
}

SomeComposable(modifier = Modifier
       .transformable(state = state) {
       }

)

 

479쪽 밑에서 2번째 줄에서(박명범 님 제보)

컴포저에서 제스처를 감지할 때는

컴포즈에서 제스처를 감지할 때는

 

505쪽 둘째 단락에서(이지훈 님 제보) 

• DROP_OLDEST: 버퍼를 ‘후입 선출(last-in, first-out)’ 스택처럼 다룬다.

• DROP_OLDEST: 버퍼를 ‘선입 선출(first-in, first-out)’ 처럼 다룬다.

 

514쪽 13번째 줄에서(이지훈 님 제보)

반대로 라이프사이클이 대상 상태보다 낮아지면 해당 코루틴을 취소한다.

⇒ 반대로 라이프사이클의 상탯값이 대상 상탯값보다 작아지면 해당 코루틴을 취소한다.

 

515쪽 밑에서 2번째 줄에서(이지훈 님 제보)

포함하는 라이프사이클이 지정한 라이프사이클에 도달하는 시점에

포함하는 라이프사이클이 지정한 라이프사이클에 도달하는 시점에

 

177, 210, 227, 235, 247, 262, 282, 307, 314, 332, 346, 363, 389, 418, 447, 456, 466, 483, 509, 524쪽에서 나오는 'onCreateActivity()’는 모두 ‘onCreate()’로 수정되어야 합니다(박명범 님 제보).