유니티 교과서 - 유니티(Unity) 2022 버전 완벽 대응, 개정6판
기타무라 마나미 지음, 김은철 외 옮김 / 길벗 / 2023년 5월
평점 :
장바구니담기


 개정 6판까지 나와, 길벗출판사에서 개정판 서평 이벤트를 하게 되어 읽게 되었다.

 평소 유니티나 언리얼 엔진과 같은 게임 제작에 대해 관심이 있었으나, 게임 제작은 코드보다 제작 툴을 다룬다는 느낌이 커서 어려웠었다.

 큰 총 평은 이 책은 툴을 다르는데 있어 쉽긴 한데 부족하다였다. 왜냐하면 전반적인 내용들이 정말 쉽고 쉬운 설명들로 가득했다. 특히 2D로 만드는 룰렛판의 경우, 사용하는 언어와 툴은 다르지만 웹 사이트로 만드는 룰렛과 정말 비슷하고 똑같다는 생각이 들었다. 유니티를 처음 보는 데도 정말 쉽다.

 하지만 부족하다라는 생각이 잊혀지지가 않았다. 왜 부족할까? 먼저 이 책을 읽고 싶은 사람은 게임을 만들고 싶은 사람일 텐데 게임을 만드는 데 부족한 지식이 많다. 유니티 교과서라 유니티만 다루고, 게임 서버에 관한 내용이 없는 것인가란 생각이 들었다. 그래서 어떠한 측면에서는 반쪽짜리 책이라 말할 수 있지 않을까 싶다. 차라리 예제를 하나로 추리고, 기초를 다룬 후 서버를 붙이면서 하나의 완성된 게임을 만드는 방향이었다면 좋지 않았을까?

 그리고 책 중간 중간 개정판의 흔적이 보인다. 귀여운 캐릭터가 표지에서도 보이지만, 책 중간 중간 옛날 느낌의 그림들이 있었다. 그리고 얼핏하면 어려울 수 있는 수학적인 내용도 그림으로 쉽게 설명해준다는 점도 장점이다.

내용이 워낙 쉬워서 입문하기 좋다는 것과 너무 쉬워서 아쉽다는 말만 자꾸 생각나는 책인 것 같다.


댓글(0) 먼댓글(0) 좋아요(1)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
아토믹 코틀린 - 코틀린 컴파일러 개발자가 알려주는 코틀린 기본기 87
브루스 에켈.스베트라나 이사코바 지음, 오현석 옮김 / 길벗 / 2023년 3월
평점 :
장바구니담기


아토믹 코틀린 책이란

 코틀린의 철학을 이해하기 위한 서적이라 볼 수 있다. 그래서 코틀린스러운 방법에 대해서 각 방법을 다뤄 준다.

총합 평가

 파이썬을 할 때 파이써닉한 코드를, C언어는 씨스럽게 등 그런 말을 종종하곤 한다. 하지만 현실은 자바공화국인 한국에서는 자바만 아니 자바 8에 머물러있으니 지루하기 그지 없다. 이런 사막같은 곳에 오아시스란 코틀린이 아닐까 자바 대체 언어로 인식되며, 스프링 프레임워크를 이용할 수 있고 자바에서 불편했던 코드들을 코틀린으로 어느정도 대체하여 편리함을 추구할 수 있게 되었다.

 하지만 문제가 무엇일까? 현업에서 모두가 코틀린 문법을 제대로 숙지하여 코스럽게 코드를 작성할 수 있을까? 만약에 모두가 코스럽게 코드를 작성한다한들 다음 인계자가 코스럽게 코드를 작성할 수 있을까? 자바에서 코틀린으로 언어만 바뀐 코드를 작성하고는 있지 않을까? 이처럼 여러 문제들이 존재한다.

 그렇기 때문에 이 책을 읽으면서 모두가 너무 코틀린스럽지 않으면서 쉽게 배울 수 있는 개념정도로 예를 들어 data class와 같은 개념들을 주로 찾아보았다.

하지만 그런 쉽게 배울 수 있는 팁들과 함께 철학을 알아야 했다.
-> 친절하게도 책 앞부분에 언어 계보와 각 언어들에 대한 점을 착안하여 언어가 만들어 졌는지 알려주는 페이지가 존재한다.

철학

Non-NullAble

자바에서는 Null인 상태와 Null이 아닌 상태가 공존하기 때문에 NPE 발생 여부를 매번 확인해야 한다.

예를 들어 대게 DB에서 값을 읽어올 경우

if (list.size() > 0 ) 으로 예외 상황을 체크할 수 있지만, 모종의 이유로 list 객체가 생성되지 않았다면 Null Pointer Exception이 발생할 것이다. 실제로 그런 경험을 해본 적이 있다. 그래서 assert를 이용하여 if 시작 전에 null이 아닌 것을 확인하는 단언문을 설정한다.

그렇기 때문에 코드를 낭비한다. 그래서  코틀린이나 C# 과 같은 언어에서는 애초에 Non-Null 상태임을 기본으로 가져간다. 그리고 코틀린 문법으로 val a: String과 val b: String?은 전혀 다른 타입이란 점을 강조한 부분이 꽤나 좋았다.

이런 철학적인 부분을 이해하고 넘어가는 것이 중요하다고 생각했다.

Final은 Default요

자바로 코드를 작성하면서 final 키워드의 불편함을 느끼거나 왜 있는지에 대한 의문을 가져본 경험이 있을까?
나는 javascript나 C++에서 const를 이용하여 변경되지 않는 변수를 상수 처리하여 사용했다.
그런데 Java에서는 final 키워드를 붙이는 일이 꽤나 손에 가지 않았다. 다른 언어를 사용하면서 const는 느낌이 바로 오지만 final은 그렇지 않았기도 했고, 스프링 강의 영상을 보아도 쓰는 것을 거의 보지 못했기 때문이다.

하지만 코틀린에서는 기본적으로 val과 var를 제공하며 이에 따라 IDE에서 한번도 변경되지 않은 var 변수에는 val로 사용하라고 권유한다.

아래 내용과 이어지는 내용이지만 자바에서는 상속을 명시적으로 금지하기 위해서는 final 키워드를 키워드에 붙여야 한다. 하지만 코틀린은 그렇지 않다. 그런 이유는 무엇일까?

fragile base  class란 치약한 기반 클래스 문제가 있다. 기반 클래스가 변경에 의해 깨져버린 경우 하위 클래스가 모두 깨져버릴 수 있다. 그렇기 때문에 의도 파악이 중요하다. 그래서 final이 기본 설정으로 되어 있다.

Open 키워드

상속이 가능하다면 open이란 키워드를 의도적으로 붙이면서 상속이 가능하다는 것을 알려준다.

이런 식으로 다른 언어와의 다른 점을 찾아가며 기존에 쓰고 있는 언어에 대한 이해도와 다른 언어에 대한 이해도가 같이 올라갈 수 있다.

식이란 개념덕분에 코드에 상상력이 더 해지거나 코드가 간결해진다.

public int hello() {
if(true) {
    	return 1;
    } else {
    	return 2;
    }   
}
fun hello(): int {
	return if(true) {
    	1 
    }
    else {
    	2
    }
}

개념

1. data class의 동등성 보장과 copy를 통한 새로운 객체 반환하기
- Spring 이 용시 자동으로 생성되는 HashCode를 이용하면 안 된다. <- 검색을 통해 알게 된 내용
2. 스프레드 연산자 *를 이용한 list를 이용한 가변 인자 보내기
- DB에 여러 데이터를 저장할 때 꽤 유용해보였다. 왜냐하면 들어올 변수의 수를 정하지 않기 때문이다.
3. 람다를 val과 var에 담을 수 있다.
4.레이블
5.확장 프로퍼티

깨닫게 된 개념

다중 인터페이스 상속과 다중 상속

개체지향 개념을 학습하고, 직접 코드를 작성하다 보면은 인터페이스와 추상 클래스, 상속에 대한 혼동이 왔었다.
다 비슷하고 조금씩만 다르기 때문에 A란 것을 하기 위해 인터페이스를 써도 되고, 추상 클래스를 써도 되고 그렇게 느껴진다. 그래서 제일 먼저 하는 행동이 뭘까? 고민이 아니라 검색이다.

검색을 통해 인터페이스와 추상 클래스의 차이점?을 검색한다.

C++은 왜 다중 상속을 지원하고, Java나 Kotlin은 인터페이스 상속을 지원할까?
책에서도 설명했듯이 상태 변수를 관리하기 힘든 문제로 인터페이스 상속만 지원한다.
C++에 대한 다중 상속에 대해 설명이 없었지만 내가 정리한다면 C++은 워낙 제공하는 기능이 많아 써야하는 것과 쓰지 말아야하는 것을 구분할 줄 알아야 한다는 말이 있을 정도이다. 그렇기 때문에 다중 상속을 지원해주며 예외적인 상황에서 유용하게 사용할 수 있으나 그런 상황이 아니라면 지양해야하는 문법이다.

좋았단 점

1. 언어에 대한 설명만 있는 것이 아닌 철학과 개념에 대한 설명이 곁들어져 있다는 점
2. 코드 설명 시 테스트으로 코드를 설명해준다는 것
3. 각 챕터가 끝나면 메모 페이지가 존재한다는 점
4. 아는  기호나 기술에 대한 키워드에 대해 영어로 한번 더 알 수 있어서 좋았다.

아쉬웠던 점

1. 코틀린이라면 경량 스레드인 Coroutine이 필수가 아닐까?
2. DSL 과 관련된 내용이 없다는 점
3. 책 본문에서 연습 문제를 언급하지 않는다는 점
4. 아토믹 코틀린이란 책 제목때문에 테스트로 쓰이는 아토믹 라이브러리와 혼동이 왔었다.

 코틀린에 대한 지식을 학습한다면 꽤 좋은 책이며, 책 표지도 이쁘니 소장할만한 가치가 있다. 코틀린 인 액션과 같은 책보다 훨씬 좋다고 생각한다. 코틀린 인 액션의 경우, 너무 글만 적혀있으니 언어를 배우는 것인지 생각이 든 경우가 많았다. 하지만 아토믹 코틀린을 이용하여 빠르게 코틀린을 습득한 후 어느정도 익숙해진 뒤  코틀린 인 액션을 통해 깊은 내용을 읽어보면 좋을 것 같다.

하지만 코루틴에 대한 내용이 없기 때문에 안드로이드 개발하는 분들께는 이 책 한 권으로 만족할 수 없을 것 같다. 물론 언어 자체만 배우는 저서임으로 안드로이드 관련 내용을 따로 봐야하긴 하지만...


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
0.1%의 승부, 소프트웨어로 분석하는 선거 개표방송 - C# · AWS · 파워빌더 · 델파이까지 1998~2022년 소스코드 전격 공개
이태희 지음 / 비제이퍼블릭 / 2022년 5월
평점 :
장바구니담기


기대했던 바:

  1. 프로젝트 진행에 따라 고민

  2. 데이터베이스 구축 방식

  3. 실제 프로젝트의 진행 방식

 책의 표지에서부터 알 수 있듯이 98년부터 22년까지의 소스 코드가 공개된 책이다. 그렇기에 시간이 흐르면서 각 시간대에 문제점과 해야하는 일에 고민들이 녹아져있다. 책의 쪽수가 526이 되는데 약 20년 간의 이야기를 526쪽에 녹여낸다는 사실 자체가 엄청난 고생이라 생각이 들었다.

읽기 전과 읽으면서 들었던 생각은 적혀있는 코드에 의의를 두기 보다는 저자가 어떤 문제에 직면하였고 그 문제를 어떤 방식으로 해결해나갔는지 같이 함께 생각해보기라 생각한다. 그렇게 생각하게 된 이유는 일단 코드 자체를 보는 것이 의미가 없다고 생각했다. 물론 코드 자체를 봐야 이해가 더 잘 되겠지만, 코드 자체가 현재 사용되는 코드와의 차이가 존재한다고 생각하기에 저자의 생각의 흐름을 따라가는게 더 좋다고 생각했다.

또 글을 읽다보면 알 수 있는 특징이 옛날에 사용되된 프레임워크에 대한 간단한 지식을 얻어갈 수 있다는 점과 현재 쓰이는 기술에 대해 간략히 소개해준다는 점도 눈 여겨볼만한 특징이다.

또 다른 특징 중 하나는 선거 관련 내용이 적혀있음으로 눈에 익지 않은 단어들이 존재한다는 점과 현재 쓰이는 기술을 어떤 형태로 설계되어있는지 확인할 수 있다는 점이다.

이 책은 클린 코드나 오브젝트와 같은 책들과는 달리 하나의 프로젝트에 대한 과정에 대한 설명들이 담겨 있다. 이런 책은 시중에 별로 없다. 비슷한 특징을 찾는다면 깃허브에 올라와있는 프로젝트가 있겠다. 하지만 그런 프로젝트에는 프로젝트에 대한 구체적인 설명이 없다. 이 책엔 프로젝트에 대한 설명이 존재하니, 이 책만이 갖는 특징이라고 생각한다.

어느 정도 코딩 실력이 되는 초보자들이 읽는다면 실무에서 어떻게 프로젝트가 진행되는지 조금 엿볼 수 있다고 생각한다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
Do it! 플러터 앱 프로그래밍 - 오픈 API 활용 + 파이어베이스 + 구글 맵 + 광고 수익까지, 개정판 Do it! 시리즈
조준수 지음 / 이지스퍼블리싱 / 2021년 9월
평점 :
장바구니담기


이 글에는 스포일러가 포함되어 있습니다.

이지스 퍼블리싱 서평 이벤트로 책을 무료로 받아 읽고, 서평을 남깁니다.

책을 보았을 때 첫 인상

 책이 500페이지정도, 책의 크기는 A4정도 된다. 초판은 21년 2월이고 약 7개월 뒤인 9월에 개정판이 나왔다. 가격은 3만원이며, 이북으로 구매 시 2만원에 구매 가능하다. 가격에선 다른 안드로이드 프로그래밍 책들과 비슷한 가격을 가진다. 안드로이드 앱 프로그래밍 (자바) 판을 구매한 적이 있는데 이 책보다 더 비싸서 그 책에 비해 저렴하다는 느낌이 쎄다.

1장

여타 다른 책들과 동일하게 초보자를 위한 큼직한 그림의 개발 환경 구축, 설치시 오류 해결에 대한 설명 등을 해준다. 오류 해결에 조금만 더 힘을 써줬으면 좋았을 것 같다. 대개 윈도우를 사용하고 사용자 이름을 한글로 하기 때문에(LAN 꼽고 윈도우 설치시), 안드로이드 스튜디오 오류 범벅에 시달리게 되는데 이를 어떤 이유인지 전문가가 설명해주었다면 좋지 않을까 싶다. 왜냐면 대학 학부 수준에 안드로이드 스튜디오를 설치하면서 어렵다고 느낀 친구들이 많았다. 나 또한 작년 모바일 프로그래밍 수업을 들으면서 사용자명을 한글로 설정하여 여러가지로 시달렸던 것을 생각하면... 그렇다.

 개발환경뿐만 아니라, 플러터에 대한 스키아 엔진, 프레임워크, 엔진, 임베더 등 설명을 해주어서 좋았다. 개발하다보면 어떤 오류를 만났을 때, 왜 그런지 알 때 내가 작업하고 있는 프레임워크가 어떻게 구성되어있는지 아는 것이 중요하다고 생각하기 때문이다.

2장

 앱을 만들다 보면, 서버와 통신을 하다보면 비동기 처리를 해야하는 일이 흔하다. 2장부터 간단하게 다트에 대한 문법, 매우 필요한 비동기 처리를 다루고 있다. 중요한 것을 앞서 다룬 점에서 너무 좋은 것 같다. 추가적으로 스트림에 대해서도 알려준다. 😀  아쉬운 것은 "하나의 스레드로 동작한다"에서 자바와 코틀린과 비교하여 설명해주는 추가적인 페이지가 있었다면 더 좋지 않았을까 싶다. 책과 별개이지만 다트 문법이 꽤나 자바 스크립트와 닮아있다.

3장

 안드로이드와 레이아웃을 정의하는 것이 많이 다른데, 이에 대한 설명이 없다. 내가 못 읽은 것일까..

6장

 5장에서 실습한 내용을 IOS 환경으로 다루기 위해, 실습이 있다. 

7장

 대부분의 사람들이 쉽게 앱을 만들어 수익을 창출하기 위함이라고 생각한다. 그런 면에서 사용해야하는 라이브러리에 대한 라이선스에 대해 언급하는 부분이 인상적이었다. 거의 대부분의 서비스를 만들기 위해서 카카오 API와 같이 네이버, 구글 API를 이용하여 SNS 로그인을 구현해야한다. 이런 부분에서 아이오닉과 같은 JS 기반 크로스 플랫폼의 경우 정보가 적어 찾기도 힘들고, 이런 내용을 책에서 다루는 것을 처음 본다. 이 책을 사는 사람들의 니즈를 충족해주는 것 같다. 

8장

 안드로이드의 경우 인텐드란 개념으로 페이지를 왔다 갔다 한다. 플러터에서는 네비게이터를 이용하여 한다. 탭바보다 이 내용이 앞에 있어야 하는 것이 아닌가란 생각이 들었지만, 플러터의 방식이 JS 프레임워크와 비슷하여 JS 프론트 개발자들은 쉽게 개발할 수 있을 것 같다는 생각이 들었다.

9장-10장

 공유 환경설정, 파일, DB 등 데이터를 저장하는 방법을 여러가지 소개시켜 준다. 안드로이드하면 Room이 떠오르는데, IOS 환경도 구동하려면 사용할 수 없나보다.(추측)

11장

 웹이든 앱이든 애니메이션을 다루는 데 있어, 잼병이었는데, 읽어보니 꽤나 쉽게 다가왔다.

12장

 안드로이드, Ios 네이티브 API 통신 방법도 있다는 것 톺아보기 수준이라 살짝 아쉽다. 

13장

 제일 기대했던 부분이다. 파이어베이스를 이용하여 간편하게 프로그램을 개발할 수 있어요!란 말을 많이 들었고 시도도 해봤지만, 익숙하지 않은 환경에 매번 어렵게 어렵게 했었다.

 요즘 플러터가 인기가 많아지고 있다. 안드로이드, ios 모두 개발하기 위해선 많은 시간이 들어가기 때문에, 구글이 내놓은 해결책인 다트와 플러터를 이용하여 개발한다면 많은 면에서 시간이 절약이 되기 때문일 것이다. 이전 아이오닉, 네이티브 js를 이용하여 크로스 플랫폼을 만들려고 했지만, 여러가지 이유 때문에 계속 별 것아닌 오류 때문에 발목을 붙잡히고 결국 프로젝트를 뒤엎고 PWA로 만들고 있다. 분명 이러한 이유 때문에 JS와 비슷하고, 크로스 플랫폼도 잘 되고, 인기도 많은 플랫폼이 있어야했고, 이 플러터가 그러한 것 같다. 현재 완벽한 해결 방안이라고 말하기 어렵기도 할 것이라 생각한다. 플러터에 관심이 있거나, 크로스 플랫폼을 개발하기 위한다면 이 책을 읽고 공부하면 조금이나마 수월할 것 같다는 생각이 들었다. 먼저 다른 책과 달리 개발시 진짜 필요한 것들, 그리고 수익 창출까지 도모해주는 책은 처음 봤다. to do list 소개하는 책은 많이 봤었다... 하지만 이 책이 만능의 책이냐고 물어본다면 그것은 아니다. 왜냐면 책 앞부분에서도 저자가 말했듯이 이 책의 대상은 프로그래밍 언어를 하나 배운 정도의 수준이기 때문이다.

 분명 플러터로 개발하다보면 여러가지 이유가 생길 것이다. 악담이 아니라 사실이다. 그 때에는 추가적인 자료 조사로 해결해야겠지만. 이 책만큼 실 사용에 관해 말한 책은 처음이다. 말이 계속 반복되니 강조가 아니라 약팔이가 되는 것 같다. 그렇다고 깊은 수준의 지식이 없다는 것만 문제일까, 이 책의 폰트도 조금 크고 (아마 대상자가 초보자이기 때문에), 클론 코딩마냥 코드가 나란히 붙어있다. 나는 이렇게 코드를 나란히 붙여넣고 설명하는 책을 싫어한다. (특히 코드가 한 눈에 안 보이고, 코드 길이가 너무 길어 다음 장에 짤려 나오는 것들) 이론적인 설명만 하고 따로 해설 영상이 있는 것이 더 코딩에 도움이 된다고 생각하기 때문이다. 내가 생각하는 단점은 앞서 말한 2가지다. 그럼에도 앞서 말한 독자의 니즈을 잘 파악한 책이라 Ebook으로 구매해서 볼만한 책이라 생각한다.

 내가 플러터 초중급자, 안드로이드 개발을 조금해본 개발자라 생각한다면 살 이유는 없다. 정말 초급자를 위한, 요즘 부가적인 수익을 위한 분들을 위한 딱 그런 책이라고 생각한다. 저자 또한 이를 초점으로 책을 쓰신 것 같다. 이분이 조금 딥한 플러터 책을 쓴다면 어떤 내용일지도 조금 궁금해진다.

여담) 안드로이드 스튜디오를 다뤄 앱을 만든다는 과정 자체가 대학교 1학년 때 너무 어려웠다. 그렇기 때문에 여러 책을 사서 읽어보기도 했다. 자바로 된 안드로이드 하나, 코틀린으로 된 안드로이드 하나, 코틀린 관련된 2권 등 뭐가 안되면 책을 사서 보는 습관이 있어 많이 샀었다. 모바일 프로그래밍이란 수업에서 안드로이드를 다뤘을 때, 놀란 경험이 있었다. ListView에 내가 원하는 이미지 하나, 텍스트 하나를 리스트뷰의 아이템 뷰로 넣어주는 행위를 해야 했다. 이 때 처음 어떤 책에서도 안 적혀? 아니 자세히 안 적혀 있는 동적 뷰 할당을 알게 되었다. 이에 대해 알게 된 곳은 공식 문서였다.  이후 이 개념은 리사이클러 뷰에 대한 기본 지식이 되었다. 이 책을 읽고 이제 난 "짱짱 플러터 코딩러다"고 외치면 참 좋겠지만 분명 직접 개발하면 막힌다.(악담같겠지만, 진짜 그렇다.) 꼭 플러터 공식 문서에가서 내용을 한번씩 훑어보거나 막힌 부분에서 막힌 것에 대한 내용을 공식 문서를 훑어보자. 이 때 입문서로 이 책과 같이 읽어나간다면 효율이 좋다고 생각한다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
조선왕조실톡 1 - 조선 패밀리의 탄생 조선왕조실톡 1
무적핑크 지음, 와이랩(YLAB) 기획, 이한 해설 / 위즈덤하우스 / 2015년 8월
평점 :
장바구니담기


처음 살때는 그냥 휴지만 주더만 왜 지금와선 북배터리를 증정으로 파는건지 참...ㅡㅡ;;

기분 더럽습니다. 장난하십니까 ?

댓글(0) 먼댓글(0) 좋아요(3)
좋아요
북마크하기찜하기 thankstoThanksTo