北京千鋒互聯(lián)科技有限公司成都分公司駱昊(jackfrued)在Github上發(fā)布了一個(gè)Python學(xué)習(xí)秘笈,從萌新到王者的100天Python學(xué)習(xí)之旅。
簡(jiǎn)單的說,Python是一個(gè)“優(yōu)雅”、“明確”、“簡(jiǎn)單”的編程語言。
學(xué)習(xí)曲線低,非專業(yè)人士也能上手
開源系統(tǒng),擁有強(qiáng)大的生態(tài)圈
解釋型語言,完美的平臺(tái)可移植性
支持面向?qū)ο蠛秃瘮?shù)式編程
能夠通過調(diào)用C/C++代碼擴(kuò)展功能
代碼規(guī)范程度高,可讀性強(qiáng)
目前幾個(gè)比較流行的領(lǐng)域,Python都有用武之地。
云基礎(chǔ)設(shè)施 - Python / Java / Go
DevOps - Python / Shell / Ruby / Go
網(wǎng)絡(luò)爬蟲 - Python / PHP / C++
數(shù)據(jù)分析挖掘 - Python / R / Scala / Matlab
機(jī)器學(xué)習(xí) - Python / R / Java / Lisp
作為一名Python開發(fā)者,主要的就業(yè)領(lǐng)域包括:
Python服務(wù)器后臺(tái)開發(fā) / 游戲服務(wù)器開發(fā) / 數(shù)據(jù)接口開發(fā)工程師
Python自動(dòng)化運(yùn)維工程師
Python數(shù)據(jù)分析 / 數(shù)據(jù)可視化 / 大數(shù)據(jù)工程師
Python爬蟲工程師
Python聊天機(jī)器人開發(fā) / 圖像識(shí)別和視覺算法 / 深度學(xué)習(xí)工程師
下圖顯示了主要城市Python招聘需求量及薪資待遇排行榜(截止到2018年5月)。
給初學(xué)者的幾個(gè)建議:
Make English as your working language.
All experience comes from mistakes.
Don t be one of the leeches.
Either stand out or kicked out.
課程表
Day01~15 -Python語言基礎(chǔ)
Day16~Day20 -Python語言進(jìn)階
常用數(shù)據(jù)結(jié)構(gòu)
函數(shù)的高級(jí)用法 - “一等公民” / 高階函數(shù) / Lambda函數(shù) / 作用域和閉包 / 裝飾器
面向?qū)ο蟾呒?jí)知識(shí) - “三大支柱” / 類與類之間的關(guān)系 / 垃圾回收 / 魔術(shù)屬性和方法 / 混入 / 元類 / 面向?qū)ο笤O(shè)計(jì)原則 / GoF設(shè)計(jì)模式
迭代器和生成器 - 相關(guān)魔術(shù)方法 / 創(chuàng)建生成器的兩種方式 /
并發(fā)和異步編程 - 多線程 / 多進(jìn)程 / 異步IO / async和await
Day21~30 -Web前端入門
用HTML標(biāo)簽承載頁面內(nèi)容
用CSS渲染頁面
用JavaScript處理交互式行為
jQuery入門和提高
Vue.js入門
Element的使用
Bootstrap的使用
Day31~35 -玩轉(zhuǎn)Linux操作系統(tǒng)
操作系統(tǒng)發(fā)展史和Linux概述
Linux基礎(chǔ)命令
Linux中的實(shí)用程序
Linux的文件系統(tǒng)
Vim編輯器的應(yīng)用
環(huán)境變量和Shell編程
軟件的安裝和服務(wù)的配置
網(wǎng)絡(luò)訪問和管理
其他相關(guān)內(nèi)容
Day36~40 -數(shù)據(jù)庫基礎(chǔ)和進(jìn)階
關(guān)系型數(shù)據(jù)庫MySQL
范式理論 - 設(shè)計(jì)二維表的指導(dǎo)思想
數(shù)據(jù)完整性
數(shù)據(jù)一致性
DDL - 數(shù)據(jù)定義語言 - create / drop / alter
DML - 數(shù)據(jù)操作語言 - insert / delete / update / select
DCL - 數(shù)據(jù)控制語言 - grant / revoke
關(guān)系型數(shù)據(jù)庫概述
MySQL的安裝和使用
SQL的使用
相關(guān)知識(shí)
在Python中操作MySQL
NoSQL入門
NoSQL概述
Redis概述
Mongo概述
Day41~55 -實(shí)戰(zhàn)Django
Day56~60 -實(shí)戰(zhàn)Flask
Day61~65 -實(shí)戰(zhàn)Tornado
Day66~75 -爬蟲開發(fā)
Day76~90 -數(shù)據(jù)處理和機(jī)器學(xué)習(xí)
Day91~100 -團(tuán)隊(duì)項(xiàng)目開發(fā)
第91天:團(tuán)隊(duì)開發(fā)和項(xiàng)目選題
軟件過程模型
角色:產(chǎn)品所有者(決定做什么,能對(duì)需求拍板的人)、團(tuán)隊(duì)負(fù)責(zé)人(解決各種問題,專注如何更好的工作,屏蔽外部對(duì)開發(fā)團(tuán)隊(duì)的影響)、開發(fā)團(tuán)隊(duì)(項(xiàng)目執(zhí)行人員,具體指開發(fā)人員和測(cè)試人員)。
準(zhǔn)備工作:商業(yè)案例和資金、合同、憧憬、初始產(chǎn)品需求、初始發(fā)布計(jì)劃、入股、組建團(tuán)隊(duì)。
敏捷團(tuán)隊(duì)通常人數(shù)為8-10人。
工作量估算:將開發(fā)任務(wù)量化,包括原型、Logo設(shè)計(jì)、UI設(shè)計(jì)、前端開發(fā)等,盡量把每個(gè)工作分解到最小任務(wù)量,最小任務(wù)量標(biāo)準(zhǔn)為工作時(shí)間不能超過兩天,然后估算總體項(xiàng)目時(shí)間。把每個(gè)任務(wù)都貼在白板上面,白板上分三部分:to do(待完成)、in progress(進(jìn)行中)和done(已完成)。
產(chǎn)品的Backlog(用戶故事、產(chǎn)品原型)。
計(jì)劃會(huì)議(評(píng)估和預(yù)算)。
日常開發(fā)(站立會(huì)議、番茄工作法、結(jié)對(duì)編程、測(cè)試先行、代碼重構(gòu)……)。
修復(fù)bug(問題描述、重現(xiàn)步驟、測(cè)試人員、被指派人)。
評(píng)審會(huì)議(Showcase)。
回顧會(huì)議(當(dāng)前周期做得好和不好的地方)。
個(gè)體和互動(dòng)高于 流程和工具
工作的軟件高于 詳盡的文檔
客戶合作高于 合同談判
響應(yīng)變化高于 遵循計(jì)劃
可行性分析(研究做還是不做),輸出《可行性分析報(bào)告》。
需求分析(研究做什么),輸出《需求規(guī)格說明書》和產(chǎn)品界面原型圖。
概要設(shè)計(jì)和詳細(xì)設(shè)計(jì),輸出概念模型圖、物理模型圖、類圖、時(shí)序圖等。
編碼 / 測(cè)試。
上線 / 維護(hù)。
經(jīng)典過程模型(瀑布模型)
敏捷開發(fā)(Scrum)- 產(chǎn)品所有者、Scrum Master、研發(fā)人員 - Sprint
補(bǔ)充:敏捷軟件開發(fā)宣言
項(xiàng)目團(tuán)隊(duì)組建
代碼注釋太少或者沒有注釋
代碼破壞了語言的最佳實(shí)踐
反模式編程(意大利面代碼、復(fù)制-黏貼編程、自負(fù)編程、……)
團(tuán)隊(duì)的構(gòu)成和角色
說明:謝謝付祥英女士繪制了下面這張精美的公司組織架構(gòu)圖。
編程規(guī)范和代碼審查(flake8、pylint)
Python中的一些“慣例”(請(qǐng)參考《Python慣例-如何編寫Pythonic的代碼》)
影響代碼可讀性的原因
團(tuán)隊(duì)開發(fā)工具介紹
請(qǐng)參考《團(tuán)隊(duì)項(xiàng)目開發(fā)》。
版本控制:Git、Mercury
缺陷管理:Gitlab、Redmine
敏捷閉環(huán)工具:禪道、JIRA
持續(xù)集成:Jenkins、Travis-CI
項(xiàng)目選題和理解業(yè)務(wù)
選題范圍設(shè)定
CMS(用戶端):新聞聚合網(wǎng)站、問答/分享社區(qū)、影評(píng)/書評(píng)網(wǎng)站等。
MIS(用戶端+管理端):KMS、KPI考核系統(tǒng)、HRS、CRM系統(tǒng)、供應(yīng)鏈系統(tǒng)、倉儲(chǔ)管理系統(tǒng)等。
App后臺(tái)(管理端+數(shù)據(jù)接口):二手交易類、報(bào)刊雜志類、小眾電商類、新聞資訊類、旅游類、社交類、閱讀類等。
其他類型:自身行業(yè)背景和工作經(jīng)驗(yàn)、業(yè)務(wù)容易理解和把控。
需求理解、模塊劃分和任務(wù)分配
需求理解:頭腦風(fēng)暴和競(jìng)品分析。
模塊劃分:畫思維導(dǎo)圖(XMind),每個(gè)模塊是一個(gè)枝節(jié)點(diǎn),每個(gè)具體的功能是一個(gè)葉節(jié)點(diǎn)(用動(dòng)詞表述),需要確保每個(gè)葉節(jié)點(diǎn)無法再生出新節(jié)點(diǎn),確定每個(gè)葉子節(jié)點(diǎn)的重要性、優(yōu)先級(jí)和工作量。
任務(wù)分配:由項(xiàng)目負(fù)責(zé)人根據(jù)上面的指標(biāo)為每個(gè)團(tuán)隊(duì)成員分配任務(wù)。
制定項(xiàng)目進(jìn)度表(每日更新)
第92天:數(shù)據(jù)庫設(shè)計(jì)和OOAD
概念模型和正向工程
UML(統(tǒng)一建模語言)的類圖
通過模型創(chuàng)建表(正向工程)
python manage.py makemigrations apppython manage.py migrate
物理模型和反向工程
PowerDesigner
過數(shù)據(jù)表創(chuàng)建模型(反向工程)
python manage.py inspectdb > app/models.py
第93-98天:使用Django開發(fā)項(xiàng)目
說明:具體內(nèi)容請(qǐng)參考《Django知識(shí)點(diǎn)概述》
項(xiàng)目開發(fā)中的公共問題
數(shù)據(jù)庫的配置(多數(shù)據(jù)庫、主從復(fù)制、數(shù)據(jù)庫路由)
緩存的配置(分區(qū)緩存、鍵設(shè)置、超時(shí)設(shè)置、主從復(fù)制、故障恢復(fù)(哨兵))
日志的配置
分析和調(diào)試(Django-Debug-ToolBar)
好用的Python模塊(日期計(jì)算、圖像處理、數(shù)據(jù)加密、三方API)
REST API設(shè)計(jì)
RESTful架構(gòu)
理解RESTful架構(gòu)
RESTful API設(shè)計(jì)指南
RESTful API最佳實(shí)踐
API接口文檔的撰寫(《網(wǎng)絡(luò)API接口設(shè)計(jì)》)
RAP2
YAPI
django-REST-framework的應(yīng)用
項(xiàng)目中的重點(diǎn)難點(diǎn)剖析
使用緩存緩解數(shù)據(jù)庫壓力 - Redis
使用消息隊(duì)列做解耦合和削峰 - Celery + RabbitMQ
第99-100天:測(cè)試和部署
單元測(cè)試
測(cè)試的種類
編寫單元測(cè)試(unittest、pytest、nose2、tox、ddt、……)
測(cè)試覆蓋率(coverage)
項(xiàng)目部署
說明:請(qǐng)參考《項(xiàng)目部署上線指南》。
部署前的準(zhǔn)備工作
關(guān)鍵設(shè)置(SECRET_KEY / DEBUG / ALLOWED_HOSTS / 緩存 / 數(shù)據(jù)庫)
HTTPS / CSRF_COOKIE_SECUR / SESSION_COOKIE_SECURE
日志相關(guān)配置
Linux常用命令回顧
Linux常用服務(wù)的安裝和配置
uWSGI/Gunicorn和Nginx的使用
對(duì)于不需要大量定制化的簡(jiǎn)單應(yīng)用程序,Gunicorn是一個(gè)不錯(cuò)的選擇,uWSGI的學(xué)習(xí)曲線比Gunicorn要陡峭得多,Gunicorn的默認(rèn)參數(shù)就已經(jīng)能夠適應(yīng)大多數(shù)應(yīng)用程序。
uWSGI支持異構(gòu)部署。
由于Nginx本身支持uWSGI,在線上一般都將Nginx和uWSGI捆綁在一起部署,而且uWSGI屬于功能齊全且高度定制的WSGI中間件。
在性能上,Gunicorn和uWSGI其實(shí)表現(xiàn)相當(dāng)。
Gunicorn和uWSGI的比較
虛擬化技術(shù)(Docker)
性能測(cè)試
說明:具體內(nèi)容請(qǐng)參考《Django知識(shí)點(diǎn)概述》。
AB的使用
SQLslap的使用
sysbench的使用
自動(dòng)化測(cè)試
使用Shell和Python進(jìn)行自動(dòng)化測(cè)試
使用Selenium實(shí)現(xiàn)自動(dòng)化測(cè)試
Selenium IDE
Selenium WebDriver
Selenium Remote Control
測(cè)試工具Robot Framework介紹
項(xiàng)目性能調(diào)優(yōu)
數(shù)據(jù)庫性能調(diào)優(yōu) - 請(qǐng)參考《MySQL相關(guān)知識(shí)》
分表分庫
主從復(fù)制,讀寫分離
集群架構(gòu)
軟硬件優(yōu)化
SQL優(yōu)化
架構(gòu)優(yōu)化
Web服務(wù)器性能優(yōu)化
Nginx負(fù)載均衡配置
Keepalived實(shí)現(xiàn)高可用
代碼性能調(diào)優(yōu)
多線程
異步化
靜態(tài)資源訪問優(yōu)化
云存儲(chǔ)
CDN
-
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8306瀏覽量
131848 -
python
+關(guān)注
關(guān)注
53文章
4753瀏覽量
84082 -
GitHub
+關(guān)注
關(guān)注
3文章
461瀏覽量
16237
原文標(biāo)題:Github超10000星:100天從Python新手到大師
文章出處:【微信號(hào):AI_era,微信公眾號(hào):新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論