2019年4月20日 星期六

用Python撰寫「用戶定義的HTTP回呼」結合IFTTT服務讓生活變得更變利

物聯網(Internet of Things, IoT)已經不在是高科技名詞而是我們日常生活中會用到的技術,日常中經常會使用到LINE、Gmail、Facebook、和一些感測元件,我們可以使用IFTTT服務串連這些服務。

參考資料:


1. ifttt 讓你手上的網路服務比別人聰明,讓網際網路自動做很多事

2.IFTTT Android iOS 入門教學:如果明天下雨請今日提醒我

3.PM2.5的Line機器IFTTT傳送最新PM2.5數值。


2019年3月10日 星期日

用Python Dash來設計展示用的儀錶板

對於大數據而言,如何用儀錶板來展示資料是很重要的,經由圖表的展現比從大量的數據中,找出關鏈問題做出決策要容易多。本節將介紹如何運用Python語言特質,使用Dash用圖表來展示結果。

參考資料來源:
1. Dash Layout,網址:https://dash.plot.ly/getting-started
2.Create Reactive Web Apps in pure Python,網址:https://medium.com/@plotlygraphs/introducing-dash-5ecf7191b503
3.Plotly Python Open Source Graphing Library

實際測試上述兩個網站所提供的三支程式,使用Python app.py,執行,app.py是指應用程式的名稱,也就是從上述網站中所提供的原始碼來進行測試,然後使用http://127.0.0.1:8050/查看執行結果。

(1) 長條圖


(二) 趨勢圖

 (三) 地圖顯示


2019年3月3日 星期日

使用Git+Bitbucket+Python+Django+Heroku來管理和發展網站

本篇將介紹用Git來做版本控制,用Bitbucket來儲存原始碼,使用Python來撰寫程式,Django來發展網站的框架,最後使用Heroku來發布網站。
1.使用Bitbucket來增加一個repository




2.按下列輸入指令


3.檢查檔案是否己經上傳成功

有關佈署到Heroku請參考文章"用 Heroku 部署網站"

2019年3月1日 星期五

使用Python+Django架構網站

為何要選用Django可以從下面影片中來瞭解。


中文Django教材可以參考文章"Django Tutorial"。
在Django Project教材中,僅提到三個指令
  1. pipenv run django-admin startproject blog
  2. cd blog
  3. pipenv run python manage.py runserver
經敏哥測試還需要加上建立虛擬環境以及安裝Django,變成下列:
  1. pipenv run django-admin startproject blog
  2. cd blog
  3. mkvirtualenv blog
  4. pip install django
  5. pipenv run python manage.py runserver
之後才能使用,打開瀏覽器輸入 http://localhost:8000/。

在"Django Template"文章中,有關datetime.now()使用的程式要改成下列(黃色顏色是補上的程式):

from django.shortcuts import render
import datetime

def now(request):

    return render(request, "now.html", {'now': datetime.datetime.now()})

對於"Django Views, Django URL & Django Template 再訪"的文章,view.py的程式應該為:

from django.shortcuts import render

from django.http import HttpResponse
import datetime
from .models import Article

def home(request):
    s = "Hello World!"
    return HttpResponse(s)

def now(request):
    return render(request, "now.html", {'now': datetime.datetime.now()})

def article_detail(request, pk):
    article = Article.objects.get(pk=pk)

    return render(request, 'article_detail.html', {'article': article})
另外
url(r'article//', article_detail),
也應該是path(r'article//', article_detail),


在部署的文件"把你的 Django Project 丟上雲端",heroku run python manage.my migrate,其中manage.my 要改成manage.py。

2019年2月18日 星期一

Python的虛擬環境 (Virtual Environment)

工欲善其事,必先利其器。在寫 python 程式的時候是否有曾經為了裝某些套件時,但是因為被其他套件的版本或是本身 python 的版本限制住,而無法順利安裝完成呢? 我自己目前有使用兩個python的虛擬環境來解決這個問題,一個是 virtual environemnt,另一個是 anaconda (或 miniconda)。
虛擬環境可以提供開發不同程式的時候,使用各自專案所需的開發環境,不會造成相互影響。或是如果有多人在相同平台上面開發程式時,也可以使用虛擬環境來區隔彼此所需的環境。

Virtual Environment

如果你的開發環境還沒有 virtualenv 的話,可以透過 easy_install virtualenv 的指令來安裝。

建立新的虛擬環境使用方式如下

    virtualenv -p /usr/bin/python venv


其中的 -p /usr/bin/python 這段參數是在指定這次建立的虛擬環境要使用哪一個的 python 執行檔;venv 這個參數是在指定這次建立的虛擬環境要放到哪邊。

如何套用建立的虛擬環境

    source venv/bin/activate

透過 source 的指令來指定到剛剛建立的 venv 裡面的 bin/activate 即可。若要離開現在的虛擬環境時,只需要輸入 deactivate 即可。
使用虛擬環境前與使用後的差異如下

如上圖所示,可以發現使用虛擬環境時所使用到的 python 路徑會一併跟著改變了。

如何在虛擬環境安裝套件

    當套用了虛擬環境之後,想要安裝任何的套件時,只需要透過 pip 這個指定直接安裝。

Anaconda (Miniconda)

另一個我有在使用的虛擬環境是 Anaconda/ Miniconda。Anaconda與Miniconda中間的差異主要在於預設的安裝套件,Anaconda 預設安裝的套件較多,許多 machine learning 會使用到的套件都會預設安裝,而 Minicoda 只會預設定裝 python 基本套件。

如何安裝

    Anaconda 與 Miniconda 安裝的說明可以參考下面連結。
    Anaconda - https://docs.anaconda.com/anaconda/install/
    Miniconda - https://conda.io/en/latest/miniconda.html

如何建立虛擬環境

    conda create -n py2 python=2.7

其中的 -n py2 是設定要建立的虛擬環境名稱,後面的 python=2.7 是拿來指定這次環境中 python 的版本。

如何查詢已建立過的虛擬環境

    conda env list

如何使用虛擬環境

    source activate py2

在 conda 裡面要使用虛擬環境跟 virtualenv 有一點點不同,指令 source 後面需要先加上 activate 之後,再加上之前建立的名稱,要離開目前 conda 的環境是要輸入 source deactivate。

如何在虛擬環境安裝套件

    當套用了虛擬環境之後,想要安裝任何的套件時,在 conda 下也可以直接透過 pip 這個指定直接安裝。或是 conda install PACKAGE_NAME。

虛擬環境的應用還蠻方便的,尤其是在開發多個專案的時候又遇到有不同的套件需求時,透過虛擬環境可以避免掉相互影響的問題。