本書涵蓋:
最完整的Python Web Framework Django和Flask
完整的Python語言說明
最好用的IPython(Jupyter)
最新的NoSQL資料庫應用(MongoDB、Redis、Memcached)
一些最好用的系統工具, SaltStack以及Ansible
系統監測工具StatsD, Graphite
服務化的Thrift
還有和Python配合的Ajax以及Javascript
作者序
雖然資訊業的範式已經走入大數據時代,新入門的程式工程師早就準備跳過APP開發而走向新的里程碑,但一路從電腦軟體開發走過來的資深或工程師卻不一定這麼認為。網頁的開發仍然在程式開發中佔有一席之地,而且是非常重要的地位。
原因無他,不管是手機APP或電腦,網頁仍然是最常見的資訊提供者,沒有以HTTP為主的WEB應用,一切終端的應用將淪為空談,而隨著雲端及大數據時代儼然降臨,對Web Server的需求只會增加不會減少。
開發一個網路應用程式,大家想到的就是微軟系的.NET及PHP。這剛好代表了天平的兩個極端;一個是以框架(Framework)為主的結構式開發,另一個則是自由派無拘無束的專屬網頁語言,程式設計新手,通常會選擇PHP,但我敢大膽的說,如果你選擇了這兩者,就真的走錯路了。
微軟架構的複雜及笨重性自然不會是快速輕巧開發Web應用程式首選,而PHP是一個專屬網頁語言,你無法把他用在其它地方,只能開發網頁。此外PHP是一個20年前的產品,雖然不斷進步卻舉步維艱,最重要的一點,就是一個不是原生支援MVC架構的語言,會讓你在路由、整合、規範、偵錯、協錯、測試、疊代上出現極大的問題。我這邊假設大家和我一樣不是電腦天才,那麼PHP絕對不是最好的選擇。
Python作為一個通用語言,簡單好學直覺,是所有Linux的預設草稿語言,此外大數據的流行,學習Python絕對是可以讓你長長久久的好工具。如果再加上支援MVC的Web Framework,你可以在短短的幾天之內,開發出大型、結構完整、符合標準的Web應用程式。
本書羅列出幾個最有名的Python Web Frameworks,最常見的Django、小而美的Flask等,都是符合MVC的好用框架,學習Python本身已經很容易了,如果再加上這些武器,兩三天開發出一個大型的網站真的不是夢想。
隨著框架的流行,Python的Framework已慢慢向Rails或Express.js的普遍性靠攏,如果你已經是Python高手,那麼本書的確可以帶給你一些滿滿的大平台,如果你還是新手,也可以利用本書同時學語言本身及框架,時代不斷進步,如果你還活在傳統的PHP思維中,而不向Rails或Django的未來前進,被時代洪流所淘汰就不會是危言聳聽了。
雖然資訊業的範式已經走入大數據時代,新入門的程式工程師早就準備跳過APP開發而走向新的里程碑,但一路從電腦軟體開發走過來的資深或工程師卻不一定這麼認為。網頁的開發仍然在程式開發中佔有一席之地,而且是非常重要的地位。
原因無他,不管是手機APP或電腦,網頁仍然是最常見的資訊提供者,沒有以HTTP為主的WEB應用,一切終端的應用將淪為空談,而隨著雲端及大數據時代儼然降臨,對Web Server的需求只會增加不會減少。
開發一個網路應用程式,大家想到的就是微軟系的.NET及PHP。這剛好代表了天平的兩個極端;一個是以框架(Framework)為...
目錄
Chapter 01 初識Python Web 開發
Python Web 開發介紹
Web 架構介紹
Chapter 02 Web 開發前的準備
架設一個能執行的虛擬機器環境
套件管理和虛擬環境
進階篇:pip 進階用法
Chapter 03 Flask Web 開發
Flask 入門
範本
使用MySQL
了解Context
從零開始實現一個檔案託管服務
Chapter 04 Flask 開發進階
Flask 的訊號機制
Flask 的擴充
Werkzeug 的使用
Chapter 05 REST 和Ajax
什麼是REST
RESTful API 設計指南
使用Ajax
Chapter 06 網站架構
Python 應用伺服器
Web 伺服器Nginx
快取系統Memcached
鍵值對資料庫Redis
NoSQL 資料庫MongoDB
大型網站架構經驗
Chapter 07 系統管理
處理程序管理Supervisor
應用部署Fabric
設定管理工具SaltStack 和Ansible
使用Psutil
使用Sentry 收集錯誤訊息
使用StatsD、Graphite 等架設Web 監控
Chapter 08 測試和持續整合
使用unittest 和doctest 做測試
使用py.test 和mock
持續整合
Chapter 09 訊息佇列和Celery
使用Beanstalkd
深入了解RabbitMQ
使用Celery
深入了解Celery
進階篇:Celery 最佳做法
Chapter 10 服務化
為什麼需要服務化
使用Thrift
PIDL——豆瓣的服務化實作
Chapter 11 資料處理
使用MapReduce 做記錄檔分析
使用DPark
資料總表
使用Pandas
Chapter 12 幫助工具
IPython
Jupyter Notebook
偵錯和Debug 工具
進階篇:訂製以IPython 為基礎的互動解釋環境
進階篇:豆瓣東西的Jupyter Notebook 實作
Chapter 13 Python 平行處理程式設計
使用多執行緒
使用Gevent
使用多處理程序
使用Future
使用asyncio
Chapter 14 Python 進階
使用標準函數庫模組
Python 語法最佳實作
從Python 3 移植
使用CFFI/Cython 撰寫Python 擴充
進階篇:使用PyObjC 發送通知
Chapter 15 Web 開發專案實作
Web 專案經驗歸納
程式品質保障工具
程式審核的意義
Chapter 01 初識Python Web 開發
Python Web 開發介紹
Web 架構介紹
Chapter 02 Web 開發前的準備
架設一個能執行的虛擬機器環境
套件管理和虛擬環境
進階篇:pip 進階用法
Chapter 03 Flask Web 開發
Flask 入門
範本
使用MySQL
了解Context
從零開始實現一個檔案託管服務
Chapter 04 Flask 開發進階
Flask 的訊號機制
Flask 的擴充
Werkzeug 的使用
Chapter 05 REST 和Ajax
什麼是REST
RESTful API 設計指南
使用Ajax
Chapter 06 網站架構
Python 應用伺服器
Web 伺服器Nginx
快取系統Memcached
鍵值對資料庫Redis
NoSQL 資料庫Mon...