이전

리뷰 (4)

한줄평
평점 분포
  • 리뷰 총점10 50%
  • 리뷰 총점8 25%
  • 리뷰 총점6 25%
  • 리뷰 총점4 0%
  • 리뷰 총점2 0%
연령대별 평균 점수
  • 10대 0.0
  • 20대 0.0
  • 30대 0.0
  • 40대 9.0
  • 50대 7.0

포토/동영상 (1)

리뷰 총점 종이책
안드로이드 멀티스레딩: 비동기 메커니즘으로 날렵하고 안정적인 앱 만들기 - 한빛미디어
"안드로이드 멀티스레딩: 비동기 메커니즘으로 날렵하고 안정적인 앱 만들기 - 한빛미디어" 내용보기
안드로이드를 어느 정도 사용하다보면 멀티스레딩 관련하여 한번씩 문제에 봉착하는 경우가 많다. (또는 좀 더 원리를 터득하여 효과적인 사용법을 익히보고 싶은 생각이 나는 경우가 있다.)그리고 한단계 높은 프로그래밍 실력을 갖추길 원한다면 멀티스레딩은 꼭 넘어야 할 산과 같다. (C를 배울때 포인터가 산인 것처럼..)프로그래밍을 하다보면 아래와 같은 경우가 많이 발생하는데,
"안드로이드 멀티스레딩: 비동기 메커니즘으로 날렵하고 안정적인 앱 만들기 - 한빛미디어" 내용보기

 


안드로이드를 어느 정도 사용하다보면 멀티스레딩 관련하여 한번씩 문제에 봉착하는 경우가 많다. (또는 좀 더 원리를 터득하여 효과적인 사용법을 익히보고 싶은 생각이 나는 경우가 있다.)

그리고 한단계 높은 프로그래밍 실력을 갖추길 원한다면 멀티스레딩은 꼭 넘어야 할 산과 같다. (C를 배울때 포인터가 산인 것처럼..)


프로그래밍을 하다보면 아래와 같은 경우가 많이 발생하는데, 대부분 스레드를 사용함에 따라 문제가 발생하는 경우가 많다.(잘못걸리면 정말 찾기 어려운 런타임에러가 발생한다.%EB%86%80%EB%9E%8C%20%EC%9C%A0%EB%A0%B9)

 


게다가 일반적인 스레드 사용법뿐만 아니라 안드로이드에서 사용하는 비동기 메커니즘(Loader, Executeor, 비동기 핸들러, AsyncQueryHandler) 또한 정확히 알고 있어야 더욱 안정적이고 효과적인 프로그래밍(반응성이 높고 구조화가 잘된 멀티스레딩)이 가능하다. 그리고 이 책을 통해 아래와 같은 것들을 배울 수 있다. (이책은 멀티스레딩 스킬 향상, 앱 성능 향상, 시니어 개발자되기 원하는 주니어 안드로이드 개발자가 대상이다.)


- 자바 및 안드로이드 플랫폼에서의 멀티스레딩 기초를 이해한다.

- 프로세스 내부 및 프로세스 간 스레드 통신을 배운다.

- 메모리 누수의 위험을 줄일 수 있는 전략을 사용한다.

- 기본 스레드의 생명주기를 관리한다.

- 핸들러 스레드를 사용해 백그라운드에서 태스크를 순차적으로 실행한다.

- 자바 Executeor 프레임워크를 사용하여 스레드를 관리 및 취소한다.

- AsyncTask 및 IntentService를 통해 백그라운드 태스크 실행을 처리한다.

- AsyncQueryHandler를 통해 콘텐츠 프로바이더에 접근한다.

- 로더를 이용해 UI에 새로운 데이터를 업데이트한다.

 


이 책은 2부로 구성되어 있고, 1부는 스레드의 기초와 스레드가 응용프로그램에 미치는 영향에 대해 설명했으며, 2부에서는 응용프로그램에서 사용되는 비동기 메커니즘의 처리에 대해서 설명하고 있다.

아래는 각장을 요약하여 정리한 것이다.

1-1. 안드로이드 응용프로그램의 다양한 구성요소와 안드로이드 런타임 구조가 어떻게 스레드와 멀티프로세싱의 사용에 영향을 미치는지 설명한다.

1-2. 자바에서 동시 실행의 기본을 다룬다.

1-3. 안드로이드가 스레드를 처리하는 방법과 응용프로그램의 스레드가 리눅스 OS에서 실행되는 방법을 설명한다. 여기에는 스케줄링과 컨트롤 그룹control group뿐만 아니라 응답에 미치는 영향과 같은 중요한 주제도 포함한다.

1-4. 스레드 간의 기본 통신 수단으로 공유 메모리shared memory, 시그널signal, 그리고 일반적으로사용하는 안드로이드 메시지를 다룬다.

1-5. RPC, 메시징 등과 같은 메커니즘으로 안드로이드가 리눅스의 IPC 메커니즘을 향상시키는 방법을 보여준다.

1-6. 시스템을 저하시키고 사용자가 응용프로그램을 삭제하게 만드는 원인이 되는 누수를 피하는 방법을 설명한다.

2-1. 가장 기본인 비동기 구문(java.lang.Thread )을 설명하고, 스레드의 다양한 상태와 발생 할 수 있는 문제를 처리하는 방법을 살펴본다.

2-2. 백그라운드에서 태스크를 순차적으로 실행하는 편리한 방법을 살펴본다.

2-3. 스케줄링, 에러, 그리고 스레드 풀과 같은 스레드 처리의 다른 측면을 다루는 기술을 제공한다.

2-4. 가장 많이 사용하는 비동기 기법인 AsyncTask를 살펴보고, 이 기법의 위험을 피해 올바르게 사용하는 방법을 다룬다.

2-5. 여러 응용프로그램에 제공되는 기능이나 백그라운드 실행을 하는 동안 응용프로그램이 살아 있도록 하는 데 유용하게 쓰이는 필수 서비스 구성요소를 설명한다.

2-6. 이전 장을 기반으로, 기본 UI 스레드를 실행하기 위한 유용한 기술에 대한 논의를 다룬다.

2-7. 콘텐트 프로바이더content provider에 대한 빠른 비동기식 접근을 간소화하는 높은 수준의 메커니즘을 다룬다.

2-8. 변경된 데이터가 전달될 때마다 비동기식으로 새로운 데이터가 전달되는 로더를 통해 UI를 업데이트하는 방법을 알아본다.

2-9. 이 책에서 기술된 모든 기법을 고려해볼 때, 어떻게 응용프로그램에 알맞은 기법을 선택할 수 있을까? 이 장에서는 이러한 선택을 위한 지침을 제공한다.


 


이 책을 전반부에 스레드에 대한 기초적인 설명이 있지만, 간략하게 소개하기 때문에 조금 더 자세한 부분들은 직접 찾아 볼 필요가 있다. 후반부에서 안드로이드의 비동기 메커니즘을 설명하는 부분은 난이도가 조금 있지만 반드시 이해하고 넘어가길 바란다. 적재적소에 쓸 수 있는 기술을 배울 수 있기 때문이다. 이 책을 읽으면서 조금 아쉬운 부분은 번역이 조금 매끄럽지 못한 부분이 눈에 띈다는 것이다. 이에 반해 편집은 무난하게 된 것 같다. 아마 다음판에는 매끄럽지 못한 번역 부분은 정리할 것이라 생각된다.

이 책 한권으로 안드로이드 고수가 될 수는 없지만, 자신의 실력을 향상하는데 있어 벽돌 한장의 역할은 충분히하는 것 같다. 이 책은 비동기 메커니즘을 정리한 거의 유일한 책이므로 한번쯤은 꼭 읽어보길 권합니다. 


 

 

h****m 2015.04.05. 신고 공감 0 댓글 0
리뷰 총점 종이책
안드로이드 멀티스레딩의 처음과 끝
"안드로이드 멀티스레딩의 처음과 끝" 내용보기
오늘의 책은 바로 한빛미디어의 안드로이드 멀티스레딩.  어째서 이 책을 읽게되었는고하니! 바로 요즈음은 안드로이드 앱 개발을 하고 있기 때문이다. [요즘 만드는 앱 스토리텔러 & 호이 스타일 매거진 쇼]    위의 앱들을 개발하는데 분명히 필요한 내용이었기 때문에 스레딩 관련 도서를 호시탐탐 노리며 찾고 있었던 것! 그럼스레드가 뭐길래? 안드로이드 개발할 때 필요하다는 것이
"안드로이드 멀티스레딩의 처음과 끝" 내용보기

오늘의 책은 바로 한빛미디어의 안드로이드 멀티스레딩.

  어째서 이 책을 읽게되었는고하니! 바로 요즈음은 안드로이드 앱 개발을 하고 있기 때문이다.



 




[요즘 만드는 앱 스토리텔러 & 호이 스타일 매거진 쇼]

 

 

  위의 앱들을 개발하는데 분명히 필요한 내용이었기 때문에 스레딩 관련 도서를 호시탐탐 노리며 찾고 있었던 것! 그럼스레드가 뭐길래? 안드로이드 개발할 때 필요하다는 것이지?  이제 한번 살펴 봅시다.


  안드로이드 기기는 동시에 여러 작업을 실행할 수 있는 멀티프로세서 시스템입니다. 하지만 작업을 나누고 응용프로그램의 성능을 최적화하기 위해 작업을 동시에 실행하도록 하는 것은 각 애플리케이션에 달려있습니다. 이 여러 작업을 동시에 실행하도록 하는 것의 핵심이 스레드 입니다.

  스레드란 프로세스와의 다른 개념으로 하나의 프로세스안에 여러개의 스레드가 돌면서 작업을 처리하게 됩니다. 이 때 스레드는 어떠한 태스크를 처리하는 작업자라고 생각하시면 편하겠습니다.


  또 안드로이드에서 스레드가 중요하게 여겨지는 것은 반응성있는 응용프로그램을 만들기 위해서 입니다. 반응성이란 상호작용하는 동안 사용자가 응용프로그램을 인식하는 방식을 말합니다. 사용자가 버튼을 클릭했을 때 애니메이션이 보여진다던지 하는 것 말이죠.

  그런데 오래 걸리는 태스크를 수행할 때 이 반응성이 멈춰버리는 순간이 있습니다. 큰 파일을 다운로드 받는다거나 할 때 사용자가 아무리 버튼을 클릭해도 앱이 반응하지 않는 그런 상황말이죠. 안드로이드는 이 때!! '응용프로그램이 응답하지 않습니다.' 대화상자를 보여주며 종료할 것 인지를 물어봅니다.

  이런 상황은 개발자게에 매우 난감합니다. 앱에서 사용자를 떠나게 할수도 있고... 종료해 버리면 그 다음으로 진행이 불가하기 때문이죠. 사용자 또한 불편하긴 마찬가지입니다. 앱이 진짜로 멈춘 것인지 아니면 어떤 백그라운드 작업이 돌아가고 있기 때문인지 전혀 알 수가 없기 때문입니다.



 

[멈추지마 앱아 제발....]



  위와 같은 메시지를 안드로이드 사용자라면 한번쯤은 보셨을 법합니다. 그런 상황을 막기 위해서는 오래 걸리는 태스크를 UI와 분리할 필요가 입니다. 이때 UI는 UI스레드로 돌아가고 별도의 태스크들은 다른 스레드에서 처리하는 것이죠! 이래서 스레드가 중요하다는 것입니다.


  다시한번 생각해 봅시다. 하나의 논에서 벼를 심는다고 생각해 봅시다. 한명의 농부가 벼를 심고, 물을 채우는 것까지 한다고 하면 둘중에 하나밖에 처리할 수 없습니다. 하지만 두명의 농부가 있다면 한명은 벼를 심고, 한명은 물을 채우는 것을 동시에 실행할 수 있겠죠? 

  프로세스는 '오늘은 이 논에 벼를 심자' 라는 전체 일이고, 태스크는 '벼를 심는다', '물을 채운다'로 나눌 수 있고, 스레드는 농부 두명이라고 할 수 있겠습니다.



 

[맛있는 밥을 먹게 해주시는 영농인들 화이팅!]



  이정도면 이해가 되셨죠? 다시 책 이야기로 돌아옵시다. 이 책을 읽으면서 이런 스레드를 나누고 다루는 일을 얼마나 잘 할 수 있는지에 초점을 맞추고 보면 될것 같았습니다. 스레드는 단순하게 보면 소스코드로는 몇 페이지 되지 않는 일일 수도 있지만, 잘 다루려면 그 분량으로는 어림도 없거든요.


  책은 크게 두개의 파트로 나뉘어져 있습니다. 파트 1은 기초 파트인데요. 바로 여기가 중요하죠. 자바의 멀티스레딩 개념과 안드로이드 스레드의 개념 그리고 스레드, 프로세스 간 통신과 메모리 관리까지. 스레드의 개념이 전혀 없는 분들까지도 여기서 기초를 다지실 수 있습니다.

  자바라는 언어로 스레드를 충분히 다루셨을지 모르겠으나, 리눅스 기반인 안드로이드 플랫폼에서는 리눅스의 스레드 개념과 안드로이드에서의 개념을 모두 섭렵해야 하니 일이 두배! 입니다. 이 책은 이런 부분까지 놓치지 않고 설명해 주고 있는 것입니다!

  이론 부분이기 때문에 어찌보면 이 책에서 가장 지루한 부분이라고 볼 수 있지만! 이 고지를 지나면 신나는 코딩의 세계로 들어가실 수 있습니다. 제발 멈추지 말고 한걸음씩 더 해보시길 바랍니다.

  저에게 있어서 제일 좋았던 부분은 바로 우선 순위 부분이었습니다. 우선순위를 수치로 표현하는 부분부터 스레드의 우선순위와 리눅스의 나이스니스 수치간 비교 표까지 한눈에 보기 좋게끔 설명해 주셔서 한번에 확 이해가 되었습니다. 이 부분은 꼭 읽어보고 지나가시라고 말씀드리고 싶습니다.



  


[파트 2 비동기 기법을 공부해 봅니다.]



  이제 핵심인 파트 2로 넘어 갑시다. 1장에서 다진 기초를 머리속에 잘 담아두시고, 실전에 들어 갑니다.

  실전에서는 드디어 코드로 스레드를 사용하게 됩니다. 스레드를 사용하는데 그치지 않고 Executor 프레임 워크를 사용해서 스레드를 제어하는데 스레드 풀까지 커스터마이징 해서 사용하게 됩니다. 무시무시하죠? 무슨 소리인지 모르시겠죠? 책을 보시면 이해가 됩니다.


  이런 어려운 얘기는 조금 뒤로하고 안드로이드 스레드의 백미는 바로 서비스와 백그라운드 처리 입니다. 앱에서 사용되는 스레드 기능의 대부분은 (UI 스레드를 제외하면) 백그라운드 스레드이고, 또 더 나아가서는 서비스를 사용하는 것이 제일 좋기 때문입니다.(비동기적 실행을 위해)

  11.5.4에서 설명되는 동시 다운로드 예재를 보면 가장 많이 사용되는 기법이 소개되고 있습니다. 이를 통해 동시 다운로드로 성능향상, 프로세스가 런타임에 의해 종료될 경우 완료되지 않은 파일의 다운로드 재개, 다운로드 요청이 더 없을경우 프로세스를 종료해 자원을 해제하는 등의 이점을 취할 수 있습니다.

  하지만 여기까지 이르러서도 완전한 비동기적 실행이라고는 할 수 없습니다. 왜냐하면 서비스는 UI 스레드에서 실행되기 때문입니다. 이러한 단점을 해결하기 위해 Service 클래스를 확장한 인텐트 서비스를 이용하게 되는데요. 이를 12장에서 설명하고 있습니다.


  이렇게 많은 기술을 가지고 개발자는 비동기를 구현할 수 있습니다. 이런 기술이 없다면 반응성있는 앱을 개발하기 힘들겠지요. 하지만 매우 다양한 기술을 사용 가능하기 때문에 어떤 기술을 사용할지 선택하는 몫은 오롯이 개발자에게 달려 있습니다. 

  필요에 따라 최선의 상황을 만들수 있는 기술을 사용하는 것이 목표가 될 텐데요. 그럼 어떤 상황에 그런 결정을 내릴 수 있을지. 바로 이번 도서인 안드로이드 멀티스레딩을 통해 익혀보시길 바라겠습니다.



 

[만새기라 불리우는 물고기 표지! 무서워 은근 ㅠ]



  저는 이번달은 이 책과 함께 했는데요. 다음 달에는 어떤 재미난 책으로 여러분을 만나게 될지 기대가 됩니다. 물론 이 책이.. 바로 책장으로 가지는 않을꺼에요. 왜냐하면 앱 개발이 끝나지 않았거든요? 여러분도 함께 해주시길 간절히 소망합니다.

i*****s 2015.04.02. 신고 공감 0 댓글 0
리뷰 총점 종이책
안드로이드 멀티스레딩
"안드로이드 멀티스레딩" 내용보기
안드로이드 멀티스레딩 - 비동기 메커니즘으로 날렵하고 안정적인 앱 만들기안드로이드 개발로 소프트웨어 개발을 처음 해본 사람들이라면'비동기'라는 말이나 멀티 스레딩이라는 말을 들으면아마도 다음과 같은 예제 시나리오를 생각하기 쉬울 것 같습니다.  '기본 혹은 메인 창을 내가 보고 있고, 창을 보는데 아무 문제가 없이잘 보고 있고, 그 사이에 특정 웹페이지에서 파일을 다운
"안드로이드 멀티스레딩" 내용보기

안드로이드 멀티스레딩


 - 비동기 메커니즘으로 날렵하고 안정적인 앱 만들기



안드로이드 개발로 소프트웨어 개발을 처음 해본 사람들이라면


'비동기'라는 말이나 멀티 스레딩이라는 말을 들으면


아마도 다음과 같은 예제 시나리오를 생각하기 쉬울 것 같습니다. 


 '기본 혹은 메인 창을 내가 보고 있고, 창을 보는데 아무 문제가 없이


잘 보고 있고, 그 사이에 특정 웹페이지에서 파일을 다운로드 받거나


용량이 좀 큰 이미지를 가져와서 다 되면 내게 알려주고, 


화면에서 볼 수 있다.' 


물론 안드로이드 개발이 처음이 아니라고 하더라도 


비동기나 멀티 스레딩이라는 말을 들으면 


가장 쉬운 혹은 알아듣기 쉬운 예제의 시나리오가 아닐까 생각합니다. 



구글과 같은 검색엔진의 힘을 빌면, 실제로 돌아가는 코드를 구하는 


것 또한 그리 어렵지 않습니다. 하지만, 한 두개의 샘플 코드나 


한 두 조각의 짧은 코드들을 넘어서서 무엇인가 자신이 원하는대로 


만들려고 하면, 머리속은 정리가 되지 않고, 검색창만 계속 두들겨대다가


헤메는 경우는 아마도 저뿐만은 아닐까 싶습니다. 



윈도우나 리눅스 같은 혹은 안드로이드 외의 프로그래밍 경험이 있는 


분들이라면, 스레드나 동기, 비동기에 대한 개념의 중요성은 잘 알고 있으리라


생각합니다. 예제는 알겠지만, 내 프로그램에서는 잘 안되는 경우 


아니면, 예제는 단순한데, 설명이 너무 많고, 오히려 이해되지 않는 경우를 


겪어본적있는 분들이라면, 스레드에 대해 제대로 정리해 놓는 것이


프로그래밍을 하는 동안 고생을 덜 하는데 큰 역할을 한다는 것을 알고 계실텐데요



이 책은 말 그대로 안드로이드에서 멀티스레딩을 어떻게 할 것인가에 대한 


기본부터 차근차근 나와있어서 접근하기 상당히 좋았습니다. 


프로그래밍의 특성상 검색 및 예제코드를 통해 공부하는 경우가 많을텐데요.


이 책에 나와있는 개개의 개념이나 내용들은 어찌보면 '찾으면 다 나오는'


이야기들일 수 있습니다. 하지만, 이렇게 하나의 책으로 정리되어 


일관된 주제와 흐름을 가지고 읽고 정리할 수 있다는 점에서 이 책의 가치는 


작지 않다고 생각합니다. 



이 책은 크게 두 부분으로 나뉘어 있습니다. 


1부 '기초'와 2부 '비동기 기법' 입니다. 


1부는 말 그대로 스레드의 기본적인 사항들이 정리되어 있습니다. 


다른 언어에 대한 경험이 있는 경우라면 좀 더 쉽게 이해할 수 있을 것 같습니다. 


다른 언어에 대한 경험이 없더라도 스레드에 대해 궁금한 경우, 


이 부분을 통해 기본적인 사항을 정리할 수 있습니다. 



2부에서는 말 그대로 '안드로이드에서 사용할 수 있는' 비동기 기법에 대해 나옵니다. 


많이 쓰이는 핸들러 스레드에 대한 내용은 물론 AsyncTask나 서비스 등 


여러가지 기법들이 일목요연하게 나와 있어서 여러 검색엔진을 뒤지는 


수고를 덜 수 있습니다. 



개인적으로 1장과 15장을 먼저 보고 책의 나머지 부분을 순서대로 읽었습니다. 


책에 나온 전반적인 사항에 대한 큰 그림을 볼 수 있어서 잘한 일이라는 생각이 


들었습니다. 



안드로이드 개발을 하는 사람들이라면, 언제가 되든 멀티 스레딩을 만나게 됩니다. 


빠르냐 늦으냐의 차이일뿐, 피해가기는 정말 어려운 것이 이 부분인데요. 


띄엄띄엄 떨어져 있는 멀티 스레딩에 대한 단편적인 지식의 조각들만으로 


힘든 싸움을 하고 있는 분들이 있다면, 이 책을 통해 좀 덜 고생하고 


더 효율적으로 스레딩에 대한 지식을 얻을 수 있으리라 생각합니다. 





YES마니아 : 골드 m*********u 2015.05.01. 신고 공감 0 댓글 0
리뷰 총점 종이책
유일해서 선택의 여지가 없는...
"유일해서 선택의 여지가 없는..." 내용보기
리뷰하신 분중에'이 책은 비동기 메커니즘을 정리한 거의 유일한 책이므로 한번쯤은 꼭 읽어보길 권합니다.'라고 이렇게 쓰신 분이 었어서 사서 읽어보았습니다.  뭐 유일해서 선택의 여지가 없는 것도 있습니다.초기 번역수준은 좋았습니다.  그런데 뒤부분으로 넘어갈수록 번역수준이 떨어지는 건지 제가 한국어 실력이 떨어지는...  한 분이 다 번역했는지 의심이 됩니다.  아니면 시
"유일해서 선택의 여지가 없는..." 내용보기
리뷰하신 분중에

'이 책은 비동기 메커니즘을 정리한 거의 유일한 책이므로 한번쯤은 꼭 읽어보길 권합니다.'

라고 이렇게 쓰신 분이 었어서 사서 읽어보았습니다.  뭐 유일해서 선택의 여지가 없는 것도 있습니다.

초기 번역수준은 좋았습니다.  그런데 뒤부분으로 넘어갈수록 번역수준이 떨어지는 건지 제가 한국어 실력이 떨어지는...  한 분이 다 번역했는지 의심이 됩니다.  아니면 시간 압박때문이신지..  --;;

추가로 책 내용이 중요하겠지만 가격에 비해 책두께가 ...  새삼 물가 많이 올랐구나 느꼈습니다.


그럼에도 불구하고 본 원서를 번역해 주신 역자에게 감사드립니다. ^^


저와 같은 영어에 취약한 개발자에게는 가뭄속 단비입니다.


자바관련 병렬처리관련 서적중 다른 유명한 책도 있지만 그 책은 변역수준이 더 심하다는 평이라서..  


리뷰아닌 넋두리 남깁니다. 


j*****3 2015.06.05. 신고 공감 0 댓글 0