作者:曼紐爾·阿米納特吉(Manuel Amunategui)、邁赫迪·洛佩伊(Mehdi Roopaei)
如需轉載請聯繫大數據(ID:hzdashuju)
01 Jupyter Notebook
Jupyter Notebook是基於Web的交互式Python解釋器,非常適合構建、調整和發布任何使用Python腳本的東西。它被附加到一個功能完整的Python內核(將其設置為Python 3.x),並且可以像其他解釋器一樣加載和運行庫及腳本。要安裝Jupyter Notebook,請參考官方文檔:
http://jupyter.readthedocs.io/en/latest/install.html
安裝方式多種多樣,包括使用「pip3」命令,如果這種方法不適合你,則請查看官方文檔,了解不同的方法(代碼清單1)。
sudo pip3 install jupyter
Jupyter Notebook使用起來既簡單又強大。你只需將它下載到本地計算機(它是帶有* .ipynb擴展名的文件),打開命令/終端Shell窗口,導航到該文件夾,然後運行「notebook」命令(代碼清單2)。
此命令將打開一個網頁,顯示它從中啟動的文件夾的內容(圖3)。你可以通過單擊文件列表正上方的文件夾圖標向下導航文件夾結構。
▲圖3 Jupyter Notebook登錄頁面
要打開Jupyter Notebook,只需單擊任何帶有「 * .ipynb」擴展名的文件。如果要創建全新Notebook,請單擊緊接刷新按鈕的儀錶板右側的「New」按鈕。
【提示】有關其他信息、Jupyter Notebook問題以及附加內核的信息,請參閱:
http://jupyter-notebook-beginner-guide.readthedocs. io/en/latest/execute.html
02 Flask
Flask是一個輕量級但非常強大的伺服器端Web框架。它是應用程式背後的「大腦」,也是Python數據生成函數和網頁之間的黏合劑。我喜歡使用Flask的原因之一是,它允許我們在不離開Python語言的情況下將獨立的Python腳本連結到伺服器端Web框架,使得在對象之間傳遞數據更加容易!
Flask附帶了發布網頁的最低要求。如果你需要其他支持,例如資料庫、表單控制項等,則必須安裝其他庫,這就是它被稱為輕量級微框架的原因。這也是它易於使用的原因,因為你只需學習一些技巧,其他一切都可使用熟悉的經過驗證的Python庫。
遺憾的是,我們只能使用Python至此,最終你需要進入前端Web腳本。但是不要有困擾—網際網路上有很多很棒的例子(Stackoverflow.com、w3schools.com)和令人難以置信的GetBootstrap.com模板,可以讓你儘快到達目的地。
【提示】有關Flask的更多信息,請參閱官方Flask文檔。
http://flask.pocoo.org/
03 HTML
HTML(超文本標記語言)是網絡技術方面最基本的東西之一。它已存在多年,用於創建幾乎所有的網頁和Web應用程式。
對於那些想要了解這一主題的人來說,網上的免費資料浩如煙海。要了解HTML,推薦w3schools.com網站,這個網站的學習材料組織良好、全面,而且通常是交互式的。
04 CSS
CSS(Cascading Style Sheet,層疊樣式表)使大多數網站看起來很棒!我們在這裡使用兩種類型的CSS文件:大多數網頁(最常見)的「<HEAD>」部分中加載的CSS連結和代碼清單3中顯示的自定義CSS。
<STYLE>
.btn-circle.btn-xl {
width: 70px;
height: 70px;
padding: 10px 2px;
border-radius: 35px;
font-size: 17px;
line-height: 1.33;
}
</STYLE>
託管在外部伺服器上的CSS文件無法自定義,但通常是同類最佳的。有時你只需要在頁面上自定義功能,即在HTML頁面中直接創建本地CSS文件或樣式標籤,然後使用「class」參數將其應用於特定標籤或區域(代碼清單4)。
<button type="button" onclick="calculateBikeDemand(this)"
id="season_spring" class="btn btn-info btn-circle btn-xl">
<i class="fa fa-check">Spring</i></button>
CSS非常詳細地定義了所有的尺寸、顏色、字體。它還允許你創建所見即所感的Web門戶。只需創建一次,即可讓所有頁面調用它來繼承該特定樣式。
【提示】有關CSS的其他信息,請訪問:
w3schools.com
05 Jinja2
Jinja2用於生成標記和HTML代碼,並與Flask變量緊密配合。它由Armin Ronacher創建,廣泛用於處理Flask生成的數據以及直接在HTML模板中的if/then邏輯。
在此HTML模板示例中,使用Jinja2將名為「previous_slider_ value」的Flask生成的值注入滑塊的「value」參數。注意使用雙花括號(代碼清單5)。
<input type="range" min="1" max="100" value="{{previous_slider_value}}"
id="my_slider">
【提示】有關Jinja2的其他信息,請參閱:
http://jinja.pocoo.org/docs/2.10/
06 JavaScript
JavaScript本身就是一種真正的程式語言,它可以為你的任何前端控制項添加極其強大的行為。JavaScript為網頁帶來了很高的交互性。
這是一個有趣的示例,我們捕獲HTML滑塊控制項的滑鼠按鈕鬆開(mouse-up)事件,以將表單提交到Flask伺服器。這個想法是,每當用戶更改滑塊值時,Flask需要使用新的滑塊值進行一些伺服器端處理並重新生成網頁(代碼清單6)。
slider1.onmouseup = function ()
{
document.getElementById("submit_params").submit();
}
【提示】有關JavaScript的其他信息,請訪問:
w3schools.com
07 jQuery
jQuery是一個定製的JavaScript庫,可以幫助處理複雜的前端和行為事件,並確保不同瀏覽器版本之間的兼容性。
jQuery幫助優化按鈕、下拉動態行為,甚至Ajax交互(許多項目中大量使用的關鍵技術)。
【提示】有關jQuery的更多信息,請查看jQuery.com上的官方文檔。
08 Ajax
Ajax是一種出色的前端腳本技術,可以為網頁添加動態伺服器端行為。它允許發送和接收數據,而無須像表單提交那樣重建或重新加載整個頁面。一個常用領域是地圖網頁,例如Google地圖,它允許拖動和滑動地圖,而無須在每次移動後重新加載整個頁面。
【提示】有關Ajax的其他信息,請訪問w3schools.com。
09 Bootstrap
Bootstrap是一個非常強大、近乎神奇的前端Web工具。根據BuiltWith Trends的說法,它幾乎佔據了Web的13%。它包含大多數Web標籤和控制項的各種外觀及行為。通過簡單地將你的網頁連結到最新的Bootstrap,CSS將為任何無聊的HTML頁面提供即時和專業的改造!
如果你查看HTML文件,那麼首先要注意的是頁面頂部的LINK和SCRIPT標籤中包含的連結。這是構建網頁的最佳捷徑(代碼清單7)。
<LINK rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/
ootstrap/4.0.0/css/bootstrap.min.css">
HTML文件(更可能是你將來要創建的任何網頁)都將使用這些連結來下載預製的Bootstrap和JavaScript腳本,並自動繼承流行的字體、顏色、樣式和行為。通過網際網路,你可輕鬆且快速地獲得最佳外觀和行為。
【提示】有關Bootstrap的其他信息,請查看GetBootstrap.com上的官方文檔。
10 Web插件
Web插件(plugin)具有巨大的優勢:將大量硬體、數據和安全管理推送給專門從事該領域的人。沒有理由重新發明輪子,浪費寶貴時間或引入安全風險。讓其他人顧好這一點,而你專注於最擅長的事情。
遺憾的是,我們只能探索其中一部分,這裡列出了我過去用過的好東西或者從別人那裡聽來的好東西(還有成千上萬可能同樣好的東西—尋找那些為小型企業提供良好支持的人,在成交之前他們往往會提供演示和測試帳戶)。
11 會員平臺
有幾個平臺可用。
1. Memberful
www.memberful.com
我個人非常喜歡Memberful.com,並認為對於任何想要輕鬆管理網站付費功能的人來說,它是一個很好的選擇。它通過Stripe.com提供信用卡支付,以及用戶管理功能,並緊密集成在你自己的Web應用程式中。
2. Patreon
www.patreon.com
Patreon是藝術家和內容創作者的會員平臺與插件。
3. Wild Apricot
www.wildapricot.com
Wild Apricot是小型和非營利組織的會員平臺。
4. Subhub
www.subhub.com
Subhub是一個為企業家、專家和組織設計的會員平臺。
5. Membergate
www.membergate.com
Membergate是企業通信、新聞通訊、協會和受限訪問站點的平臺。
12 付款平臺
有幾個平臺可用。
1. Paypal Donations
www.paypal.com/us/webapps/mpp/donation
我過去使用過Paypal插件,它易於安裝和使用。你所需要的只是一個信譽良好的Paypal帳戶,剩下的事情都很簡單。
2. Paypal Express
www.paypal.com/us/webapps/mpp/express-checkout
Paypal Express仍然屬於Paypal,能快速簡便地結帳。
3. Stripe
http://stripe.com/
Stripe是一種付款選項,可讓網站輕鬆接受在線信用卡付款。它是Memberful.com背後的支付引擎。
13 分析
構建自己的Web使用跟蹤器需要在每個頁面上添加大量的Flask自定義代碼,以及用於保存這些交互的資料庫和用於理解它的分析引擎。這個工作量很大!相反,使用Google Analytics,我們所要做的只是在每個頁面頂部添加JavaScript代碼段。基本分析可以免費使用,這對我們非常有利。
14 留言板
我過去曾使用https://disqus.com向靜態網站添加留言板。它直接在你的網站上創建具有專業外觀的留言板,同時在其他地方進行管理。
15 郵件列表
我已經使用formspree.io很多年了,我很喜歡它!可以很容易地將它添加到任何靜態網頁、文本框和提交按鈕。用戶可以在你的網頁上添加他們的電子郵件地址,https://formspress.io將通過電子郵件向你發送已提交的信息。如果你正在託管靜態站點或者不想自己管理資料庫,那麼這是一個很好的選擇。
16 Git
Git是一個很棒的版本控制工具,它能保存存儲庫中發生的任何代碼創建、更改、更新以及刪除。它與GitHub緊密集成,這對於代碼保護和協作來說至關重要。它也集成在大多數雲提供商那裡。如果你需要處理大型應用程式或與他人協作,那麼強烈建議你使用它。
大多數雲提供商都支持GitHub、BitBucket等在線代碼庫。這些在線代碼庫利用Git,因此學習基礎知識將對你很有幫助。在Microsoft Azure上部署Web應用程式的過程與Git緊密集成,因此有必要學一些入門知識或在線獲取一些很棒的教程,例如try.github.io:
git init:創建本地存儲庫。
git clone https://github.com/...:將GitHub存儲庫克隆到本地驅動器。
git status:列出已更改並等待提交(commit)和推送(push)至存儲庫的文件。
git add.:添加所有文件(注釋期間)。
git add '*.txt':添加所有文本文件。
git commit:提交等待中的文件。
git log:查看提交歷史記錄。
git push(或git push azure master):將分支推送到遠程主站。
git pull:將遠程更改拉取到本地倉庫。
git reset *:撤銷git。
gitrm --cached <file>:停止跟蹤文件。
17 虛擬環境
使用虛擬環境能帶來許多優勢:
要啟動虛擬環境,請使用「venv」命令。如果你的計算機上沒有安裝它,建議安裝一下(可以通過常見的安裝程序,如pip、conda、brew等)。有關為作業系統安裝虛擬環境的更多信息,請參閱「venv-Greation of virtual environments」用戶指南:
https://docs.python. org/3/library/venv.html
打開命令窗口並在命令行上調用Python 3「venv」函數以創建沙箱環境(代碼清單8和代碼清單9)。
$ python3 -m venv some_name
$ source some_name/bin/activate
完成後,可以使用代碼清單10中的命令停用虛擬環境。
18 創建requirements.txt文件
大多數雲提供商使用requirements.txt文件列出託管Web應用程式所需的所有Python庫。在大多數情況下,它與Web文件一起打包並發送到其「無伺服器計算」雲上進行設置。
你可以創建自己的requirements.txt文件,並將其放在與Flask Python主腳本相同的文件夾中。讓我們看看如何使用虛擬環境創建一個完整的requirements.txt文件。
使用虛擬環境時,你將創建一個不含任何Python庫的安全沙箱。這允許你僅安裝所需內容並運行「pip freeze」命令以獲取庫和當前版本號的快照。請注意,如果你已經知道需要哪些庫、依賴項和版本號,則不需要執行此操作。
【第1步】在Python中創建虛擬環境,以從乾淨的平臺開始,如代碼清單11所示。
$ python3 -m venv some_env_name
$ source some_env_name/bin/activate
【第2步】使用「pip3」安裝運行本地Web應用程式所需的庫,如代碼清單12所示。
$ pip3 install flask
$ pip3 install pandas
$ pip3 install sklearn
【第3步】凍結環境及所有已安裝的Python庫,包括requirements.txt文件中的版本號,如代碼清單13所示。
$ pip3 freeze > requirements.txt
【第4步】停用虛擬環境,如代碼清單14所示。
通過上面這些步驟,創建了一個requirements.txt文件。使用「vi」查看其內容(按下ESC和Q鍵退出)。requirements.txt的內容可能看起來非常不同,但這沒關係(代碼清單15)。
輸入:
輸出:
click==6.7
Flask==0.12.2
itsdangerous==0.24
Jinja2==2.10
MarkupSafe==1.0
numpy==1.14.2
scikit-learn
scipy
python-dateutil==2.7.2
pytz==2018.4
six==1.11.0
Werkzeug==0.14.1
Pillow>=1.0
matplotlib
gunicorn>=19.7.1
wtforms>=2.1
在requirements.txt文件中,可以使用「==」符號來要求特定版本(代碼清單16)。
還可以要求大於等於或小於等於某版本(代碼清單17)。
或者可以簡單地指定為安裝程序可以找到的最新版本(代碼清單18)。