스프링 부트 3와 스프링 클라우드를 활용한 마이크로서비스 구축
42,000원
중급
도서 소개
파이썬으로 쉽고 재미있게 웹 프로그래밍을 시작하세요!
《파이썬 웹 프로그래밍: 플라스크를 이용한 쉽고 빠른 웹 개발》은 많은 개발자들에게 인기를 얻고 있는 파이썬과 마이크로 웹 프레임워크인 플라스크를 활용해 쉽고 재미있게 웹 애플리케이션을 개발하는 방법을 안내합니다. 파이썬이나 웹 프로그래밍을 잘 모르더라도 프로그래밍에 대한 약간의 경험만 있다면 이 책에서 제시하는 예제와 설명을 통해 자연스럽게 웹 프로그래밍의 재미를 느낄 수 있을 것입니다.
★ 이 책에서 다루는 내용 ★
- 파이썬 기반 마이크로 웹 프레임워크인 플라스크의 활용
- 애플리케이션 개발을 위한 다양한 라이브러리(SQLAlchemy, PIL, Bootstrap, GMaps.js 등)
- 트위터와 앱 애플리케이션 연동
- 엔진엑스와 아파치 웹서버를 이용한 애플리케이션 운영
- 레디스를 이용한 독립된 세션 관리
- 구글 앱 엔진에서의 플라스크 활용
출판사 리뷰
플라스크는 강력한 기능을 제공하지만 쉽게 배울 수 있는 파이썬의 특징을 그대로 닮아 있다. 하지만 세상에 만병통치약은 없는 법! 플라스크 역시 ‘은탄환’은 아니다. 플라스크는 웹 개발에 필요한 핵심적인 기능을 제공하지만 추가적으로 필요한 기능은 개발자가 직접 해당 모듈을 찾아 통합해야 한다. 그리고 뷰 함수(view function)라고 하는 기본 호출 단위를 제외하면 정해진 개발 가이드라인이 없어서 개발 환경에 맞게 프레임워크를 적절히 설계하고 구조화할 필요도 있다.
그럼에도 기존 웹 개발에 대한 대안으로 파이썬과 플라스크는 굉장히 매력적이다. 기존 웹 개발을 경험해본 개발자에게는 개발 도메인에 따라 좀 더 유연한 개발 환경을 적용할 필요가 있을 때 사용할 대안으로 사용하기에 좋다. 또한 웹 개발 경험이 없더라도 단지 몇 시간만 투자하면 간단한 웹 애플리케이션을 개발할 수 있을 정도로 이해하기 쉽고 사용하기 편리하다.
이 책은 기본적인 파이썬 문법을 아는 초보자를 대상으로 한다. 하지만 파이썬을 사용해본 적이 없더라도 파이썬 기본서나 인터넷에 있는 간단한 강좌를 한번 살펴보면 어렵지 않게 내용을 이해할 수 있을 것이다.
이 책은 총 3부로 다음과 같이 구성돼 있다.
1부에서는 ‘파이썬 웹 프로그래밍’을 시작하는 내용으로 파이썬 및 플라스크를 소개하고 플라스크의 기본 기능을 비롯해 간단한 예제 프로그램인 ‘미니 트윗’을 제작한다.
2부에서는 1부에서 다룬 내용을 바탕으로 실제 웹 애플리케이션 개발에서 자주 사용되는 여러 개발 도구에 더해 ‘포토로그’라는 예제 프로젝트를 통해 실전에서 사용할 수 있는 기능에 관해 다룬다.
3부에서는 2부에서 개발한 ‘포토로그’ 애플리케이션을 아파치와 엔진엑스 웹 서버에 배포하고 실행하는 법을 살펴본다.
부록에서는 2부에서 개발한 ‘포토로그’에서 세션 서버로 사용할 수 있는 메모리 저장소인 레디스(Redis)를 살펴보고 파이썬 웹 애플리케이션을 클라우드 서비스 중 하나인 구글 앱 엔진(Google App Engine)에 배포한다.
파이썬으로 이제 막 웹 개발을 시작하거나 기존 웹 개발 환경의 대안을 찾고 있는 개발자들에게 이 책이 더 높이 뛰어오를 수 있게 도와주는 발판이 됐으면 좋겠다.
-- 저자 서문 중에서
저자 소개
주성식
새로운 것을 찾아내고 가까운 곳에 적용해 보기를 좋아하는 탐구자. 정보의 공유를 지적 노동자의 최고 미덕으로 생각하고 있다. 지미 웨일스가 설립한 위키피디아처럼 사회적 가치에 공헌할 수 있는 서비스를 만들어 낼 수 있기를 꿈꾼다. 늘 배우는 것에 주저하지 않고 배움 앞에 겸손한 학생이 되고 싶다. 위키북스의 『데브옵스: 개발자, QA, 관리자가 함께 보는 리눅스 서버 트러블슈팅 기법』을 번역했다.
홍성민
풍기는 외모나 이미지와 달리 서울 토박이로 컴퓨터를 전공했으며 담배도 피우지 않는다. 웹 메일을 시작으로 SSO/EAM 솔루션을 개발했으며 여러 SI/SM 프로젝트에서 소프트웨어 아키텍트로 시스템 구축과 성능/문제 해결에 참여했고, 최근에는 닷넷으로 개발된 MDM(Mobile Device Management) 솔루션을 자바 기반의 오픈소스 소프트웨어로 전환했다. 현재는 오픈소스 소프트웨어와 파이썬으로 쉽게 웹 애플리케이션을 개발하는 방법에 관심이 많다. 번역서로 『데브옵스: 개발자, QA, 관리자가 함께 보는 리눅스 서버 트러블슈팅 기법』이 있다.
목차
- [PART 01] 파이썬 웹 애플리케이션 시작하기
- ▣ 1장: 파이썬과 웹 애플리케이션
- 1.1 파이썬
- 인터프리터 기반의 객체 지향(Object-oriented) 프로그래밍 언어
- 플랫폼 독립적인 언어 (Platform Independent)
- 유연한 확장(Extendible)
- 동적 타이핑(Dynamic Typing)
- 리플렉션(Reflection)
- 1.2 웹 애플리케이션 개발 동향
- 1.3 풀 스택 프레임워크 vs. 마이크로 프레임워크
- 1.4 대표적인 마이크로 프레임워크
- 시나트라(루비)
- 스칼라트라(Scalatra, Scala)
- 보틀(Bottle, 파이썬)
- 1.5 플라스크(Flask)
- 플라스크의 특징
- 플라스크 웹 애플리케이션 살펴보기
- 1.1 파이썬
- ▣ 2장: 개발 환경 설정
- 2.1 설치 개요
- 2.2 파이썬 설치
- 2.3 플라스크 설치
- 2.4 통합개발 환경(IDE) 설치
- 이클립스 설치
- PyDev 설치
- 2.5 깃허브(Github) 저장소 연결
- 깃(Git)
- 깃허브(Gitbub) 로컬로 예제 소스 가져오기
- 2.6 플라스크 애플리케이션 실행
- ▣ 3장: 플라스크 시작하기
- 3.1 첫 플라스크 애플리케이션, “Hello Flask!”
- 3.2 라우팅
- 3.3 요청과 응답
- 3.4 쿠키와 세션
- 3.5 정적 파일과 템플릿
- 주석
- 공백
- 이스케이핑
- for
- if
- macro
- import
- extends
- include
- 3.6 에러와 로깅
- 3.7 로컬 서버 실행
- ▣ 4장: 작은 트위터, 미니 트윗(minitwit)
- 4.1 미니 트윗 개요
- 4.2 데이터베이스처리
- 4.3 뷰 함수 구현
- 사용자 등록
- 로그인/로그아웃
- 트윗 등록
- 팔로우/언팔로우
- 타임라인
- 4.4 정적 파일과 템플릿
- ▣ 1장: 파이썬과 웹 애플리케이션
- [PART 02] 파이썬 웹 애플리케이션 만들기
- ▣ 5장: 추억을 기록한다, 포토로그(Photolog)
- 5.1 포토로그 개요
- 5.2 클라이언트 측 구조
- 부트스트랩(bootstrap)
- 폰트 어썸(Font Awesome)
- jQuery 자바스크립트 라이브러리
- exif.js와 binaryajax.js
- gmaps.js
- 5.3 애플리케이션 레이아웃
- 5.4 서버 측 구조
- MVC(Model-View-Controller)
- 패키지 초기화
- 로깅
- SQLAlchemy
- 블루프린트
- 세션
- WTForms
- 5.5 필요한 패키지 설치
- ▣ 6장: 사용자 관리와 로그인
- 6.1 사용자 등록
- 6.2 사용자 정보 변경
- 6.3 사용자 탈퇴
- 6.4 로그인/로그아웃
- ▣ 7장: EXIF분석과 사진업로드
- 7.1 EXIF 분석과 입력 값 처리
- 7.2 지도에 위치 정보 표시
- 7.3 사진 및 데이터 저장
- ▣ 8장: 포토로그 사진 보여주기
- 8.1 사진 목록 출력
- 8.2 페이징
- 8.3 수정/삭제
- 8.4 검색
- 8.5 지도에 위치 출력
- ▣ 9장: SNS 연동
- 9.1 트위터 애플리케이션 등록
- Application Details
- OAuth Settings
- 9.2 간단한 트위터 클라이언트 만들기
- 9.3 트위터 연동 모듈 개발
- 9.4 트윗 결과 메시지 출력
- 9.5 트위터 연동 확인
- 9.1 트위터 애플리케이션 등록
- ▣ 5장: 추억을 기록한다, 포토로그(Photolog)
- [PART 03] 파이썬 웹 애플리케이션 서비스하기
- ▣ 10장. 아파치로 포토로그 서비스하기
- 10.1 아파치 웹 서버(Apache HTTP Server)
- 10.2 mod_wsgi 확장 모듈
- 10.3 아파치와 mod_wsgi 설치
- 10.4 아파치와 mod_wsgi 설정
- 10.5 아파치로 포토로그 실행
- ▣ 11장: 엔진엑스로 파이썬 웹 애플리케이션 서비스하기
- 11.1 엔진엑스 웹 서버(Nginx Web Server)
- 11.2 uWSGI애플리케이션서버
- 11.3 엔진엑스와 uWSGI 설치
- 11.4 엔진엑스와 uWSGI 설정
- 11.5 엔진엑스로 포토로그 실행
- ▣ 10장. 아파치로 포토로그 서비스하기
- ▣ APPENDIX 01: 레디스(Redis) 살펴보기
- 1.1 개요
- 1.2 특징
- 다양한 데이터형(Data Type)
- 영속성(Persistence)
- 복제(Replication)
- 분할(Partitioning)
- 만료(Expiration)
- 1.3 OS별 설치
- 윈도우
- 맥OS/리눅스
- 1.4 포토로그 애플리케이션에 적용하기
- ▣ APPENDIX 02: 구글 앱 엔진 사용하기
- 2.1 개요
- 2.2 구글 앱 엔진 개발 환경
- 2.3 앱 엔진을 위한 플라스크 프로젝트 구성
- 2.4 구글 앱 엔진에 배포하기
예제 코드
예제코드 관련 GitHub 페이지
- GitHub 페이지: https://github.com/wikibook/flask
- ZIP 형식으로 다운로드: https://github.com/wikibook/flask/archive/master.zip
정오표
-
p. 43, 그림 2-15
가상 환경 활성화 그림만 있고, 설명 누락 --> 'cd venv/scripts'라고 입력해 가상환경 실행 스크립트가 있는 디렉토리로 이동하고 'activate.bat'라고 입력해 실행 스크립트를 실행한다(맥이나 리눅스에서는 'source activate'). 가상환경을 종료할 때는 'deactivate.bat'을 입력하면 된다.
-
p. 69, 소스 ch03/test_url_for.py
Flask(name) 누락 --> Flask(name) 추가
-
p. 71, 세 번째 단락 세 번째 줄
hello
flaks.py --> helloflask.py -
P. 75, hello_flask.py from flask import Flask -> from flask import Flask, render_template
-
p. 82, 10번째 줄 코드
<% from 'input.html' import input %>-->{% from 'input.html' import input %} -
p. 82, 17번째 줄 코드
<% macro <매크로 이름>(매크로 인자, …) %}-->{% macro <매크로 이름>(매크로 인자, …) %} -
p. 83, 5번째 줄 코드
<% from 'input.html' import input %>-->{% from 'input.html' import input %} -
p. 85, 첫 번째 예제
@app.errorhandler(404) def page_not_found(error): app.logger.error(error) # 이 줄을 들여쓰기 return render_template('page_not_found.html'), 404 -
p. 86, 첫 번째 줄
리턴값을 “
HelloFlaskAgain!”이라고 --> 리턴값을 “Hello FlaskAgain!”이라고 -
p. 96
if __name__ == '__main__'의 app.run() 들여쓰기 -
p. 144, 2~3번째 줄
username과 email은 둘 다 문자열이고 유일한 값을 갖게 설정돼 있다.
--> username과 email은 둘 다 문자열이지만, username은 유일한 값을 가지고 email은 중복을 허용한다.
-
p. 158, 예제 소스 경로
ch05/photolog/photolog/templates/l_formhelpers.html-->ch05/photolog/photolog/templates/_formhelpers.html -
p. 171, 예제 소스 경로
ch05/photolog/photolog/templates/register.html-->ch05/photolog/photolog/templates/regist.html -
p. 265
AFS --> ASF
- Apache Software Foundation의 약어이므로 ASF