파이썬 플레이그라운드 (호기심 많은 프로그래머를 위한 14가지 창의적 프로젝트)

파이썬 플레이그라운드 (호기심 많은 프로그래머를 위한 14가지 창의적 프로젝트)

$32.50
Description
[파이썬 플레이그라운드]는 상상력을 동원하여 파이썬으로 재미있는 프로그램을 작성하는 예제들을 보여준다. 인기 있는 파이썬 라이브러리 및 OpenGL 라이브러리를 사용해 매개변수 방정식을 활용한 곡선 그리기, 생명체 시뮬레이션, 포토모자이크, 3D 애니메이션 생성 등의 프로그래밍을 실습해볼 수 있다. 마지막으로 아두이노 및 라즈베리파이와 함께 사용하는 방법을 소개하며 파이썬의 다양한 활용법을 보여준다.
저자

마헤시벤키타찰람

저자마헤시벤키타찰람(MaheshVenkitachalam)은20년이상의경력을지닌소프트웨어엔지니어다.중학교3학년시절부터기술에대한열정을키워왔으며,인기있는전자공학및프로그래밍블로그electronut.in을운영중이다.

목차

1부.워밍업

1장.아이튠즈재생목록다루기
__아이튠즈재생목록파일분석
__요구사항
__코드
____중복곡찾기
____중복곡추출하기
____둘이상의재생목록에공통되는트랙찾기
____통계값수집하기
____데이터를플롯으로나타내기
____명령라인옵션
__전체코드
__프로그램실행
__정리
__실습!


2장.스파이로그래프
__매개변수방정식
____스파이로그래프의방정식
____turtle모듈의그래픽
__요구사항
__코드
____Spiro생성자
____초기설정을수행하는함수들
____restart()메소드
____draw()메소드
____애니메이션만들기
____SpiroAnimator클래스
____genRandomParams()메소드
____프로그램재시작
____update()메소드
____커서를보이거나숨기기
____곡선저장하기
____명령라인인수파싱과초기화
__전체코드
__스파이로그래프애니메이션실행
__정리
__실습!


2부.생명체시뮬레이션

3장.콘웨이의생명게임
__동작원리
__요구사항
__코드
____그리드표현하기
____초기조건
____경계조건
____규칙구현하기
____프로그램에명령라인인수전달하기
____시뮬레이션초기화하기
__전체코드
__생명게임시뮬레이션실행
__정리
__실습!


4장.카플러스스트롱알고리즘을이용한배음생성
__동작원리
____시뮬레이션
____WAV파일생성하기
____단5음계
__요구사항
__코드
____deque로원형버퍼구현하기
____카플러스스트롱알고리즘구현하기
____WAV파일기록하기
____pygame으로WAV파일재생하기
____main()메소드
__전체코드
__시뮬레이션실행
__정리
__실습!


5장.보이즈:군집시뮬레이션
__동작원리
__요구사항
__코드
____새들의위치및속도계산하기
____경계조건설정하기
____새그리기
____규칙적용하기
____새추가하기
____새들을분산시키기
____명령라인인수
____Boids클래스
__전체코드
__보이즈시뮬레이션실행
__정리
__실습!


3부.이미지갖고놀기

6장.아스키아트
__동작원리
__요구사항
__코드
____그레이스케일레벨과그리드정의하기
____평균밝기계산하기
____이미지로부터아스키콘텐츠생성하기
____명령라인옵션
____아스키아트문자열을텍스트파일에기록하기
__전체코드
__아스키아트생성프로그램실행
__정리
__실습!


7장.포토모자이크
__동작원리
____타깃이미지분할하기
____색상값의평균구하기
____이미지대조하기
__요구사항
__코드
____타일이미지읽기
____입력이미지의평균색상값계산하기
____타깃이미지분할하기
____타일과가장비슷한이미지찾기
____이미지그리드생성하기
____포토모자이크생성하기
____명령라인옵션추가하기
____포토모자이크의크기제어하기
__전체코드
__포토모자이크생성프로그램실행
__정리
__실습!


8장.오토스테레오그램
__동작원리
____오토스테레오그램내의깊이지각하기
____깊이맵
__요구사항
__코드
____주어진타일반복하기
____임의의원으로타일생성하기
____오토스테레오그램만들기
____명령라인옵션
__전체코드
__오토스테레오그램생성프로그램실행
__정리
__실습!


4부.3D입문

9장.OpenGL의이해
__올드스쿨OpenGL
__현대적인OpenGL:3D그래픽파이프라인
____지오메트리프리미티브
____3D변환
____셰이더
____버텍스버퍼
____텍스처매핑
____OpenGL을화면에표시하기
__요구사항
__코드
____OpenGL창생성하기
____콜백설정하기
____Scene클래스
__전체코드
__OpenGL애플리케이션실행
__정리
__실습!


10장.입자시스템
__동작원리
____입자의움직임모델링하기
____최대스프레드설정하기
____입자를렌더링하기
____현실적인스파크를생성하기위해OpenGL블렌딩사용하기
____빌보딩사용하기
____애니메이션생성하기
__요구사항
__입자시스템을구현하는코드
____입자의지오메트리정의하기
____입자들의시간차배열정의하기
____입자의초기속도설정하기
____버텍스셰이더생성하기
____프래그먼트셰이더생성하기
____렌더링
____Camera클래스
__입자시스템의전체코드
__박스코드
__메인프로그램의코드
____시간단계별로입자갱신하기
____키보드핸들러
____메인프로그램루프관리하기
__메인프로그램의전체코드
__프로그램실행
__정리
__실습!


11장.볼륨렌더링
__동작원리
____데이터포맷
____광선생성하기
____OpenGL창표시하기
__요구사항
__프로젝트코드의개요
____3D텍스처생성하기
__3D텍스처의전체코드
__광선생성
____컬러큐브의지오메트리정의하기
____프레임버퍼객체생성하기
____큐브의후면렌더링하기
____큐브의전면렌더링하기
____큐브전체를렌더링하기
____크기변경핸들러
__광선생성의전체코드
__볼륨레이캐스팅
____버텍스셰이더
____프래그먼트셰이더
__볼륨레이캐스팅의전체코드
__2D슬라이싱
____버텍스셰이더
____프래그먼트셰이더
____2D슬라이싱을위한사용자인터페이스
__2D슬라이싱의전체코드
__코드종합
__메인파일의전체코드
__프로그램실행
__정리
__실습!


5부.하드웨어해킹

12장.아두이노소개
__아두이노
__아두이노생태계
____언어
____IDE
____커뮤니티
____주변장치
__요구사항
__광센서회로구축
____회로의동작원리
____아두이노스케치
____실시간그래프생성하기
__파이썬코드
__전체파이썬코드
__프로그램실행
__정리
__실습!


13장.레이저오디오디스플레이
__레이저패턴생성
____모터제어
____고속푸리에변환
__요구사항
____레이저디스플레이만들기
____모터드라이버배선하기
__아두이노스케치
____아두이노의디지털출력핀설정하기
____메인루프
____모터정지하기
__파이썬코드
____오디오장치선택하기
____입력장치로부터데이터읽기
____데이터스트림의FFT계산하기
____FFT값에서주파수정보추출하기
____주파수를모터속도와방향으로변환하기
____모터설정테스트하기
____명령라인옵션
____수동테스트
__전체파이썬코드
__프로그램실행
__정리
__실습!


14장.라즈베리파이기반의날씨모니터
__하드웨어
____DHT11온도및습도센서
____라즈베리파이
____라즈베리파이설정하기
__소프트웨어설치와구성
____운영체제
____초기설정
____와이파이설정
____프로그래밍환경설정하기
____SSH를통한연결
____보틀웹프레임워크
____flot으로그래프그리기
____라즈베리파이종료하기
__하드웨어제작
__코드
____센서데이터요청처리하기
____데이터를그래프로나타내기
____update()메소드
____LED를처리하는자바스크립트핸들러
____대화식기능추가하기
__전체코드
__프로그램실행
__정리
__실습!

부록A.소프트웨어설치
__프로젝트의소스코드설치
__윈도우에설치하기
____GLFW설치
____각모듈별로사전에빌드된바이너리설치
____그밖의옵션들
__OSX에설치하기
____Xcode와MacPorts설치
____모듈설치
__리눅스에설치하기

부록B.실용전자공학의기초
__일반적인부품
__필수도구
__회로제작
__더많은내용배우기

부록C.라즈베리파이팁
__와이파이설정
__라즈베리파이연결여부검사
__와이파이어댑터의절전모드방지
__라즈베리파이의코드와데이터백업
__라즈베리파이전체OS백업
__SSH로라즈베리파이에로그인
__라즈베리파이카메라사용
__라즈베리파이의사운드활성화
__라즈베리파이의텍스트-음성변환기능사용
__HDMI사용
__라즈베리파이를모바일기기로만들기
__라즈베리파이하드웨어의버전확인

출판사 서평

★이책에서다루는내용★

■매개변수방정식과turtle모듈로스파이로그래프와비슷한패턴생성
■주파수배음시뮬레이션을이용한음악작곡
■아스키아트로그래픽이미지변환
■임의의패턴에숨겨진3D이미지를생성하는오토스테레오그램프로그램작성
■입자시스템,투명도,빌보딩기법을이용해OpenGL셰이더로현실감있는애니메이션제작
■CT와MRI스캔으로얻은데이터를사용한3D시각화구축
■컴퓨터와아두이노를연결해음악에반응하는레이저쇼연출

★이책의대상독자★

이책은파이썬을처음으로접하는사람을대상으로하지않으며,기초지식을친절하게설명하지는않는다.하지만현실세계의다양한문제를해결하기위해파이썬을어떻게사용할수있는지구체적인방법을보여준다.이책의프로젝트들을실습하면서여러분은파이썬언어의미묘한사용법을접할수있으며널리쓰이는파이썬라이브러리들의사용방법도배울수있다.가장중요한것은,어떤문제를여러부분으로나누고문제를해결하기위한알고리즘을개발한뒤,파이썬을사용해기초부터해결책을구현하는방법을배울수있다는점이다.현실세계의문제들은경계가명확하지않고특정분야의전문적인지식을요구하기때문에해결하기어려울때가많다.하지만파이썬은문제해결을도와주는다양한도구를제공한다.어려움을극복하고문제의해결책을찾을줄아는것은프로그래밍의고수가되기위한여행에서가장중요한부분이다.

★이책의구성★

1부:워밍업
1장,‘아이튠즈재생목록다루기’에서는아이튠즈(iTunes)의재생목록파일을파싱해트랙길이와공통트랙등유용한정보를수집하는방법을보여준다.2장,‘스파이로그래프’에서는매개변수방정식과turtle그래픽모듈을사용해스파이로그래프와유사한곡선을그려볼것이다.

2부:생명체시뮬레이션
2부에서는어떤현상을시뮬레이션하기위해수학적모델을사용한다.3장,‘콘웨이의생명게임’에서는콘웨이의생명게임알고리즘을구현하는방법을배운다.이알고리즘은일종의인공생명시뮬레이션으로서동적패턴을생성할수있다.4장,‘카플러스스트롱알고리즘을이용한배음생성’에서는카플러스스트롱(Karplus-Strong)알고리즘을사용해현악기의현이튕길때나는소리를생성하는방법을보여준다.그다음5장,‘보이즈:군집시뮬레이션’에서는새의무리를시뮬레이션하는보이즈(Boids)알고리즘을구현하는방법을배울수있다.

3부:이미지갖고놀기
3부는파이썬으로2D이미지를읽고조작하는방법을소개한다.6장,‘아스키아트’에서는이미지로부터아스키아트를만드는방법을보여준다.7장,‘포토모자이크’에서는포토모자이크를생성하며,8장,‘오토스테레오그램’에서는3D이미지환상을생성하는오토스테레오그램을생성하는방법을배울것이다.

4부:3D입문
4부의프로젝트들은OpenGL3D그래픽라이브러리를사용한다.9장,‘OpenGL의이해’에서는OpenGL을사용해간단한3D그래픽을만드는기초개념을설명한다.10장,‘입자시스템’에서는입자시뮬레이션을생성하는데,수학적지식과OpenGL셰이더를사용해입자의이동경로를계산하고화면에불꽃분수를렌더링한다.그리고11장,‘볼륨렌더링’에서는볼륨데이터를렌더링할때사용되는볼륨레이캐스팅알고리즘을OpenGL셰이더를사용해구현한다.이기법은MRI나CT스캔같은의료영상에널리사용된다.

5부:하드웨어해킹
마지막5부에서는파이썬을사용해아두이노마이크로컨트롤러와라즈베리파이를탐구한다.12장,‘아두이노소개’에서는아두이노를사용해간단한회로로부터센서데이터를읽고그래프로나타낸다.13장,‘레이저오디오디스플레이’에서는파이썬과아두이노를사용해음악소리에반응하는레이저쇼를연출하기위해서2개의회전거울과레이저를제어한다.14장,‘라즈베리파이기반의날씨모니터’에서는웹기반의날씨모니터링시스템을라즈베리파이를사용해구축한다.