-- ·|­û / µù¥U -- ¡@
¡@±b¸¹¡G
¡@±K½X¡G
¡@ | µù¥U | §Ñ°O±K½X
3/26 ·s®Ñ¨ì¡I 3/19 ·s®Ñ¨ì¡I 3/14 ·s®Ñ¨ì¡I 12/12 ·s®Ñ¨ì¡I
ÁʮѬyµ{¡EQ & A¡E¯¸°È¯d¨¥ª©¡E«ÈªA«H½c
¢x 3ds Max¢x Maya¢x Rhino¢x After Effects¢x SketchUp¢x ZBrush¢x Painter¢x Unity¢x
¢x PhotoShop¢x AutoCad¢x MasterCam¢x SolidWorks¢x Creo¢x UG¢x Revit¢x Nuke¢x
¢x C#¢x C¢x C++¢x Java¢x ¹CÀ¸µ{¦¡¢x Linux¢x ´O¤J¦¡¢x PLC¢x FPGA¢x Matlab¢x
¢x Àb«È¢x ¸ê®Æ®w¢x ·j¯Á¤ÞÀº¢x ¼v¹³³B²z¢x Fluent¢x VR+AR¢x ANSYS¢x ²`«×¾Ç²ß¢x
¢x ³æ´¹¤ù¢x AVR¢x OpenGL¢x Arduino¢x Raspberry Pi¢x ¹q¸ô³]­p¢x Cadence¢x Protel¢x
¢x Hadoop¢x Python¢x Stm32¢x Cortex¢x Labview¢x ¤â¾÷µ{¦¡¢x Android¢x iPhone¢x
¥i¬d®Ñ¦W,§@ªÌ,ISBN,3dwoo®Ñ¸¹
¸Ô²Ó®ÑÄy¤ÀÃþ

Python Web¶}µo¹ê¾Ô

( ²Åé ¦r)
§@ªÌ¡G¸³°¶©úÃþ§O¡G1. -> µ{¦¡³]­p -> Python
ĶªÌ¡G
¥Xª©ªÀ¡G¹q¤l¤u·~¥Xª©ªÀPython Web¶}µo¹ê¾Ô 3dWoo®Ñ¸¹¡G 45107
¸ß°Ý®ÑÄy½Ð»¡¥X¦¹®Ñ¸¹¡I

¡i¯Ê®Ñ¡j
NT°â»ù¡G 525 ¤¸

¥Xª©¤é¡G9/1/2016
­¶¼Æ¡G516
¥úºÐ¼Æ¡G0
¯¸ªø±ÀÂË¡G
¦L¨ê¡G¶Â¥Õ¦L¨ê»y¨t¡G ( ²Åé ª© )
¥[¤JÁʪ«¨® ¢x¥[¨ì§Úªº³Ì·R
(½Ð¥ýµn¤J·|­û)
ISBN¡G9787121297335
§@ªÌ§Ç¡@|¡@ĶªÌ§Ç¡@|¡@«e¨¥¡@|¡@¤º®e²¤¶¡@|¡@¥Ø¿ý¡@|¡@§Ç
(²Åé®Ñ¤W©Ò­z¤§¤U¸ü³sµ²¯Ó®É¶O¥\, ®¤¤£¾A¥Î¦b¥xÆW, ­YŪªÌ»Ý­n½Ð¦Û¦æ¹Á¸Õ, ®¤¤£«OÃÒ)
§@ªÌ§Ç¡G

ĶªÌ§Ç¡G

«e¨¥¡G

¤º®e²¤¶¡G

¥»®Ñ«ö·Ó¤@­ÓWeb ²£«~±qµL¨ì¦³¡B±q²³æÅÜ´_Âø¡B±q°ò¦¨ì¶i¶¥ªº¹Lµ{¡A¦h¨¤«×¡B¥þ¤è¦ìÁ¿­z¤FPython Web¶}µo¡C¤º®e¯A¤ÎWeb®Ø¬[¡B´ú¸Õ¡B¼Æ¾Ú®w¡B®ø®§¶¤¦C¡BªA°È¤Æ¡B«ùÄò¶°¦¨µ¥¡A§âºô¯¸¤uµ{ªº¥þ»ª®i²{¦bŪªÌªº²´«e¡A±q¨ä¤¤¥i¥H¤F¸ÑWeb¤uµ{±q¶}µo¨ì¤W½uªº§¹¾ã¬yµ{¡C¥t¥~¡A§@ªÌ¹ï·í«e²{¦b¥¿¦b¬y¦æªº§Þ³N©Î¤u¨ã¡A¦pFlask¡BCelery¡BJupyter¡BSupervisor¡BSaltStack¡BPandasµ¥³£¦³¸û¬°¸Ô²ÓªºÄÄ­z¡A¥i§@¬°§Þ³N¿ï«¬®Éªº°Ñ¦Ò¡C¹ï¤_Web ¶}µoªÌ¡B¨Ï¥ÎPython »y¨¥ªº¹Bºû¤uµ{®v©M¹Bºû¶}µo¤uµ{®v¡B·Q´£°ªPython §Þ¯àªº¶}µoªÌ¡B·Q¤F¸ÑPython Web ¶}µoªº¨ä¥L¶}µoªÌ¡A¥»®Ñ³£¾A¦X¾\Ū¡C

¥Ø¿ý¡G

²Ä1 ³¹ªìÃÑPython Web ¶}µo. . . . . 1
Python Web ¶}µo¤¶²Ð
¬°¤°¤\À³¸Ó¿ï¾ÜPython §@¬°Web ¶}µo»y¨¥
¿ï¾ÜPython
ÁÙ¬OPython
Web ®Ø¬[¤¶²Ð
¥D¬yWeb ®Ø¬[
¤p²³ªºWeb ®Ø¬[
¿ï¾ÜWeb ®Ø¬[®ÉÀ³¿í´`ªº­ì«h
²Ä2 ³¹Web ¶}µo«eªº·Ç³Æ. . . . . . 7
·f«Ø¤@­Ó¯à¹B¦æªºµêÀÀ¾÷Àô¹Ò
¦w¸ËVirtualBox
¨Ï¥ÎVagrant ¦w¸Ë
¨Ï¥ÎDocker ¦w¸Ë
¥]ºÞ²z©MµêÀÀÀô¹Ò
¥]ºÞ²z
¨Ï¥Îpip ´À¥Neasy_install
distribute¡Bdistutils ©Msetuptools
entry_points
´¡¥ó¨t²Î
µêÀÀÀô¹Ò
virtualenv
virtualenv ©w¨î¤Æ
virtualenvwrapper
virtualenv-burrito
autoenv
¶i¶¥½g¡Gpip °ª¯Å¥Îªk
©R¥O¦Û°Ê¸É¥þ
´¶³q¥Î¤á¦w¸Ë
½s¿è¼Ò¦¡
¨Ï¥Îdevapi §@¬°½w¦s¥N²zªA°È¾¹
PYPI ªº§¹¥þÃè¹³
²Ä3 ³¹Flask Web ¶}µo. . . . . . 28
Flask ¤Jªù
¦w¸ËFlask
±qHello World ¶}©l
°t¸mºÞ²z
½Õ¸Õ¼Ò¦¡
°ÊºAURL ³W«h
¦Û©w¸qURL Âà´«¾¹
HTTP ¤èªk
°ß¤@URL
ºc³yURL
¸õÂà©M­«©w¦V
ÅTÀ³
ÀRºA¤å¥óºÞ²z
§Y´¡µø¹Ï
ÂŹÏ
¤l°ì¦W
©R¥O¦æ±µ¤f
¼ÒªO
Jinja2
Mako
¨Ï¥ÎMySQL
¦w¸ËMySQL ©MÅX°Ê
³]¸mÀ³¥Î½ã¸¹©MÅv­­
¥ÎMySQLdb ¼g­ì¥Í»y¥y
¨Æ°È´£¥æ©M¦^ºu
ORM ²¤¶
¨Ï¥ÎSQLAlchemy
¨Ï¥ÎORM
¼Æ¾Ú®wÃöÁp
¦bFlask ¤¤¨Ï¥ÎSQLAlchemy
°O¿ýºC¬d¸ß
²z¸ÑContext
¥»¦a½uµ{
Werkzeug ªºLocal
flask.request
¨Ï¥Î¤W¤U¤å
¨Ï¥ÎLocalProxy ´À¥Ng
±q¹s¶}©l¹ê²{¤@­Ó¤å¥ó¦«ºÞªA°È
­º­¶
­«·s³]¸m¹Ï¤ù­¶
¤U¸ü­¶
¹wÄý­¶
µuÃì±µ­¶
²Ä4 ³¹Flask ¶}µo¶i¶¥. . . . . . 89
Flask ªº«H¸¹¾÷¨î
Blinker ªº¨Ï¥Î
Flask ¤¤¤º¸mªº«H¸¹
¦Û©w¸q«H¸¹
«H¸¹­q¾\ªº°ª¯Å¥Îªk
Flask-Login ¤¤ªº«H¸¹
Flask ªºÂX®i
Flask-Script
Flask-DebugToolbar
Flask-Migrate
Flask-WTF
Flask-Security
Flask-RESTful
Flask-Admin
Flask-Assets
Werkzeug ªº¨Ï¥Î
DebuggedApplication
¼Æ¾Úµ²ºc
¥\¯à¨ç¼Æ
±K½X¥[±K
¤¤¶¡¥ó
²Ä5 ³¹REST ©MAjax . . . . . . 127
¤°¤\¬OREST
RESTful API ³]­p«ü«n
¨Ï¥Î¦Wµü¨Óªí¥Ü¸ê·½
Ãöª`½Ð¨DÀY
¦X²z¨Ï¥Î½Ð¨D¤èªk©Mª¬ºA½X
¥¿½T¦a¨Ï¥ÎREST
¹ï¿é¥Xªºµ²ªG¤£¦A¥]¸Ë
¤£­n°µ¥X¿ù»~ªº´£¥Ü
¨Ï¥Î´O®M¹ï¶H§Ç¦C¤Æ
ª©¥»
URI ¥¢®Ä©M¾E²¾
«H®§¹LÂo
³t«×­­¨î
½w¦s
¦}µo±±¨î
¨Ï¥ÎAjax
²Ä6 ³¹ºô¯¸¬[ºc. . . . . . . 140
Python À³¥ÎªA°È¾¹
WSGI ¨óij
±`¨£ªºWSGI ®e¾¹
Web ªA°È¾¹Nginx
Web ªA°È¾¹»PÀ³¥ÎªA°È¾¹ªº°Ï§O
¬°¤°¤\­n¿ï¾ÜNginx
¦w¸ËNginx
¨Ï¥ÎNginx ³¡¸pFlask À³¥Î
½w¦s¨t²ÎMemcached
Libmc ¦w¸Ë°t¸m
¨Ï¥Î­ì¥ÍSQL ½w¦s
½w¦s§ó·sµ¦²¤
Memcached ¨Ï¥Îªº¸gÅç
Áä­È¹ï¼Æ¾Ú®wRedis
¾Þ§@Redis
Redis À³¥Î³õ´º
¤À¤ù©M¶°¸sºÞ²z
NoSQL ¼Æ¾Ú®wMongoDB
¬°¤°¤\¨Ï¥ÎNoSQL
MongoDB
¨Ï¥Îpymongo ªº¨Ò¤l
¨Ï¥ÎMongoengine ªº¨Ò¤l
MongoDB ¹ê½î¸gÅç
¤j«¬ºô¯¸¬[ºc¸gÅç
½w¦s
­t¸ü§¡¿Å
°ª¥i¥Î
·~°È©î¤À
¶°¸s
²Ä7 ³¹¨t²ÎºÞ²z. . . . . . . 186
¶iµ{ºÞ²zSupervisor
Supervisor ²Õ¥ó
°t¸mSupervisor
¨Ï¥ÎSupervisor
À³¥Î³¡¸pFabric
Fabric À³¥Î±µ¤f
¨Ï¥ÎFabric ºÞ²zFlask À³¥Î
°t¸mºÞ²z¤u¨ãSaltStack ©MAnsible
SaltStack
Ansible
¨Ï¥ÎPsutil
¨Ï¥ÎSentry ¦¬¶°¿ù»~«H®§
¦w¸Ë°t¸mSentry
±Ò°ÊSentry
³Ð«Ø¹Î¶¤©M¶µ¥Ø
°t¸mSDK
¨Ï¥ÎStatsD¡BGraphite µ¥·f«ØWeb ºÊ±±
°t¸mGraphite
¨Ï¥ÎStatsD
°t¸mDiamond
µo¥¬«ü¼Ð¶µ
¨Ï¥ÎGrafana
¨Ï¥ÎKenshin
²Ä8 ³¹´ú¸Õ©M«ùÄò¶°¦¨. . . . . . 233
¨Ï¥Îunittest ©Mdoctest °µ´ú¸Õ
unittest
doctest
¨Ï¥Îpy.test ©Mmock
py.test
mock
«ùÄò¶°¦¨
¨Ï¥ÎTox ¶°¦¨
²Ä9 ³¹®ø®§¶¤¦C©MCelery . . . . . 250
¨Ï¥ÎBeanstalkd
¨Ï¥ÎBeanstalkc
²`¤J²z¸ÑRabbitMQ
AMQP
µêÀÀ¥D¾÷
´¡¥ó¨t²Î
³q¹LWeb ©MREST API ºÞ²zRabbitMQ 259
¬G»ÙÂಾ
¨Ï¥ÎCelery
Celery ªº¬[ºc
Celery §Ç¦C¤Æ
¦w¸Ë°t¸mCelery
±q¤@­Ó²³æªº¨Ò¤l¶}©l
«ü©w¶¤¦C
¨Ï¥Î¥ô°È½Õ«×
¥ô°È¸j©w¡B°O¿ý¤é§Ó©M­«¸Õ
¦bFlask À³¥Î¤¤¨Ï¥ÎCelery
²`¤J²z¸ÑCelery
Celery ªº¨Ì¿à
¥ô°È½Õ¥Î
«H¸¹¨t²Î
Worker ºÞ²z
ºÊ±±©MºÞ²zCelery
¤l¥ô°È
¶i¶¥½g¡GCelery ³Ì¨Î¹ê½î
¨Ï¥Î¦Û°ÊÂX®i
µ½¥Î»·µ{Debug
¦X²z¦w±Æ¥ô°È©P´Á
¦X²z¨Ï¥Î¶¤¦C©MÀu¥ý¯Å
«OÃÒ·~°ÈÅ޿誺¨Æ°È©Ê
Ãö³¬§A¤£·Q­nªº¥\¯à
¨Ï¥Î¾\¦Z§YµI¼Ò¦¡
µ½¥ÎPrefetch ¼Ò¦¡
µ½¥Î¤u§@¬y
²Ä10 ³¹ªA°È¤Æ. . . . . . 288
¬°¤°¤\»Ý­nªA°È¤Æ
RPC ®Ø¬[
ªA°È¤Æ±a¨Óªº°ÝÃD
·LªA°È¬[ºc
¨Ï¥ÎúÄriû@
©w¸qIDL ¤å¥ó
ªA°ÈºÝ¹ê²{
«È¤áºÝ¹ê²{
PIDL¡X¡X¨§Ã¤ªºªA°È¤Æ¹ê½î
PIDL ¬[ºc
²Ä11 ³¹¼Æ¾Ú³B²z. . . . . . 305
¨Ï¥ÎMapReduce °µ¤é§Ó¤ÀªR
¨Ï¥ÎMapReduce

¨Ï¥ÎDPark
¤À¥¬¦¡¤å¥ó¨t²ÎMooseFS
Mesos
°t¸mDPark Àô¹Ò
±qWordCount ¶}©l
PV ¡® UV ²Î­p
¼Æ¾Ú³øªí
µo°e±a¦³¼Ë¦¡©Mªþ¥óªº¶l¥ó
³Ð«Øxlsx ¤å¥ó
¨Ï¥ÎPandas
Pandas ¤Jªù
Ū¨úMySQL ¼Æ¾Ú®w
©MFlask À³¥Î¶°¦¨
²Ä12 ³¹À°§U¤u¨ã. . . . . . 336
IPython
IPython ¥æ¤¬¼Ò¦¡
±`¥ÎªºMagic ¨ç¼Æ
°t¸m©M¦Û©w¸qIPython
IPython ªºÂX®i¨t²Î
¨Ï¥ÎIPython ½Õ¸Õ´_Âø¥N½X
Âù¶iµ{¼Ò«¬
¦}¦æ­pºâ
Jupyter Notebook
Notebook ®æ¦¡
Notebook ®æ¦¡Âà´«©M¹wÄý
¬°¤°¤\¨Ï¥ÎRequireJS
¦bNotebook ¨½¨Ï¥ÎEcharts
´IÅã¥Ü
¦Û©w¸qJavaScript ©MCSS ¼Ë¦¡
¨Ï¥Înbextension ÂX®iNotebook

¦bNotebook ¤W¨Ï¥Î¦}¦æ­pºâ
½Õ¸Õ©MDebug ¤u¨ã
¤F¸ÑLinux ªA°È¾¹¹B¦æ±¡ªp
©Ê¯à´ú¸Õ
Python µ{§Ç©Ê¯à¤ÀªR
©Ê¯à½ÕÀu¹ê½î
¶i¶¥½g¡G©w¨î°ò¤_IPython ªº¥æ¤¬¸ÑÄÀÀô¹Ò
¶i¶¥½g¡G¨§Ã¤ªF¦èªºJupyter Notebook ¹ê½î
²Ä13 ³¹Python ¦}µo½sµ{. . . . . 383
¨Ï¥Î¦h½uµ{
¨Ï¥ÎGevent
¨Ï¥Î¦h¶iµ{
¨Ï¥ÎFuture
¨Ï¥Îasyncio
async/await
Future
¨Ï¥Îaiohttp
¨Ï¥Î¶¤¦C
²Ä14 ³¹Python ¶i¶¥. . . . . 418
¨Ï¥Î¼Ð·Ç®w¼Ò¶ô
errno
subprocess
contextlib
glob
operator
functools
collections
Python »yªk³Ì¨Î¹ê½î
©R¦W

¨Ï¥Îjoin ³s±µ¦r²Å¦ê
EAFP vs LBYL
©w¸qÃþªº__str__/__repr__ ¤èªk
Àu¬üªºPython
±qPython 3 ²¾´Ó
partialmethod
singledispatch
suppress
redirect_stdout/redirect_stderr
¨Ï¥ÎCFFI/Cython ½s¼gPython ÂX®i
¨Ï¥ÎCFFI
¨Ï¥ÎCython
¶i¶¥½g¡G¨Ï¥ÎPyObjC µo°e³qª¾
²Ä15 ³¹Web ¶}µo¶µ¥Ø¹ê½î. . . . . 455
Web ¶µ¥Ø¸gÅçÁ`µ²
¶}µo¬yµ{
¨Ï¥Î¦X²zªº¶µ¥Øµ²ºc
Ãöª`¥N½X´_Âø«×
¥N½X½è¶q«OÃÒ¤u¨ã
Pycodestyle ¹ï¤¤¤åÁY¶iªº³B²z
Flake8
Pylint
¨ä¥L¥N½X½è¶q«OÃÒ¤u¨ã
¨Ï¥ÎAST °µÀRºAÀˬd
¨ä¥LÀRºAÀˬd¤u¨ã
½s¼gFlake8 ÂX®i
¥N½Xµû¼fªº·N¸q
§@¬°³Qµû¼fªÌ
§@¬°µû¼fªÌ
µû¼fªº¼Ð·Ç
§Ç¡G