站內搜尋:Yahoo搜尋如果沒有給完整的網址,請在站內再搜尋一次!

2019-07-23

Anaconda Python模組管理(Package) : 使用 Anaconda Navigator 更新、安裝模組

  1. 開啟Anaconda Navigator
  2. 選擇『Environment』
    點擊『』,先把環境選取的區塊收起來
    在Anaconda Package區塊中,
    模組Package選項:installed / Not installed / Updatable / Selected / All,選擇:All
    在package搜尋文字方塊中,輸入搜尋標的,例如:pyinstaller
  3. 『Apply』安裝

2019-07-22

Toshiba Satellite C640 重新安裝 Win 10 的工作清單


  1. Toshiba Satellite C640的硬體環境:
    • 2011年份
    • Intel Pentium B940@2.00GHz * 2,64位元,記憶體4GB。
    • 原硬碟已更換為256GB SSD,R/W DVD/CD 光碟機繼續使用。
    • 觸控板,外加藍芽滑鼠。
    • 網卡:Qualcomm Atheros AR8152,無線:Qualcomm Atheros AR9002WB-1NG
  2. 作業系統歷程:
    • 隨機:win 7 home prem
    • 升級安裝 win 10 home
    • 本次重新安裝 win 10 home 版次 1903
  3. 重安裝歷程:
    • 原win 10 按住 shift 再執行關機。 (清除快速開機的快取)
    • win 10 ISO image 燒錄至USB,一直無法成功開機進入安裝程式。
    • 將win 10 ISO image 燒錄至DVD,成功完成安裝。
      清除所所SSD上原先從舊硬碟GHOST過來的分割,清除四個分割整理成一個未分割的SSD,讓win 10安裝程式自行分割安裝。
  4. 相關硬體驅動及設定的確認:
    • 裝置管理員確認所有硬體均可正常驅動。
    • 手動新增藍芽滑鼠DWIRAY 型號:MB288 ,成功。
    • 電源選項,設定:選擇『選擇蓋上螢幕時的行為』,『當我關閉筆記電腦螢幕時』,『電池使用中』或『一般電源』都選取『不進行動作』。
      (開機後關上螢幕,丟到一旁遠端遙控使用。
    • 選擇關閉顯示器的時機:電池→1分鐘,一般電源→3分鐘
    • 變更電腦休眠的時間:電池→30分鐘,一般電源→永不
  5. 桌面基本需求建立:
    • 命令提示字元(System32\cmd.exe):加到工作列
    • 剪取工具(System32\SnippingTool.exe):加到工具列
    • 小畫家(System32\mspaint.exe):加到工具列
    • 筆記本(System32\notepad.exe):加到工具列
  6. 安裝Anaconda3:
    • https://www.anaconda.com/  
    • 安裝的版本:Anaconda2-2019.03-Windows-x86_86.exe
    • 安裝選項:
      Install for : All Users
      Destination Folder : C:\ProgramData\Anaconda3
      (勾選)Add Anaconda to the system PATH environment variable
      Not recommended . Instead, open Anaconda with the Windows Start menu and select "Anaconda(64-bit)". This "add to PATH option makes Anaconda get found before previously installed software, but may cause problems requiring you to uninstall and reinstall Anaconda.
      (勾選)Register Anaconda as the system Python 3.7
      This will allow other programs, such as python Tools for Visual Studio, PyCharm, Wing IDE, PyDev, and MSI binary packages, to automatically detect Anaconda as the primary Python 3.7 on the system.
    • 安裝前後環境變數的變化:
      控制台→系統及安全性→系統:進階系統設定:『進階』分頁:環境變數:
      安裝前:
      • 使用者變數:
        Ondrive : C:\Users\Hannibal\OneDrive
        Path: %USERPROFILE%\AppData\Local\MicroSoft\WindowsApps
        TEMP:%USERPROFILE%\AppData\Local\Temp
        TMP:%USERPROFILE%\AppData\Local\Temp
      • 系統變數:
        ComSpec: %SystemRoot%\system32\cmd.exe
        DriverData : C:\Windows\System32\Drivers\DriverData
        NUMBER_OF_PROCESSORS : 2
        OS : Windows_NT
        Path : %SystemRoot%\System32; %SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerPowerShell\v1.0\;%SYSTEMROOT%\System32\OpenSSH\
        PATHEXT : .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.WSH;.MSC
        PROCESSOR_ARCHITECTURE : AMD64
        PROCESSOR_IDENTIFIER : Intel64 Family 6 Model 42 Stepping 7, GenuineIntel
        PROCESSOR_LEVEL : 6
        PROCESSOR_REVISION : 2a07
        PSModulePath: %ProgramFiles%\WindowsPowerShell\Modules;%SystemRoot%\system32\WindowsPowerShell\v1.0\Modules
        TEMP : C:\Windows\TEMP
        TMP : C:\Windows\TEMP
        USERNAME : SYSTEM
        windir : C:\Windows
      • 安裝後環境變數的變化:
        使用者變數:沒改變
        系統變數:Path中增加了→
        c:\ProgramData\Anaconda3
        c:\ProgramData\Anaconda3\Library\mingw-w64\bin
        c:\ProgramData\Anaconda3\Library\usr\bin
        c:\ProgramData\Anaconda3\Library\bin
      • c:\ProgramData\Anaconda3\Scripts
      • Anaconda and JetBrains are working together to bring you Anaconda-powered environments tightly integrated in the PyCharm IDE.
        PyCharm for Anacondas is avaiable at : https://www.anaconda.com/pycharm 
      • Learn more about Anaconda Cloud : https://anaconda.org 
      • Learn how to get started with Anaconda :   http://docs.anaconda.com/anaconda/user-guide/getting-started 
      • 將Anaconda Navigator, Jupyter Notebook, Spyder 三個程式捷徑放到桌面,方便使用。
  7. 其他需要安裝的軟體:
    • 7-zip : 取自 sourceforge.net
    • Google Chrome 瀏覽器
    • 安裝VNC server,使用tightVNC 
      • https://www.tightvnc.com/downloads 
      • 安裝選項:
        Setup Type : Complete
        (勾選)Associate .vnc files with TightVNC Viewer
        (勾選)Register TightVNC Server as a system service
        (勾選)Configure system to allow services simulate Ctrl+Alt+Del
        Password for Remote Access
        Administrative Password
      • 確認TightVNC服務已啟動

2019-07-20

在樹莓派 RaspBerry Pi 下,用Python當開發工具,用SQLite儲存資料,用SQLiteBrowser協助資料管理

工作環境:

  • RaspBerry Pi 3 Mode B+
  • 作業系統:版本代號為 Buster (Version:June 2019 / Release date:2019-06-20 / Kernel version:4.19)
在Python測試連接SQLite3的使用:
  • Buster版本的Python環境,SQLite3已經是Ready的狀態
  • 用以下的程式測試,在Python使用SQLite是OK的
    使用Python sqlite3模組建立資料庫連線,如果所指定的資料庫不存在,Python便會自動建立產生該資料庫檔案

在樹莓派安裝sqlitebrowser
  • sudo apt-get update
  • sudo apt-get upgrade
  • sudo apt-get install sqlite3
  • sudo apt-get install sqlitebrowser

參考資料:

2019-07-19

python List 串列資料的函數方法演練

strList=list("abc")
print(strList)       
>>>['a','b','c']

aList=[]
aList.append([1,2,3])       #利用append將資料加入List串列
aList.append([2,3,4])
print(aList)           
>>>[1,2,3],[2,3,4]]

print(aList[0])          #取出指定位置的資料
>>>[1,2,3]
print(aList[-1])         #取出最後一個資料
>>>[2,3,4]

aList.append([3,4,5])   #append附加資料
print(aList[-1])         #查看最後一筆資料
>>>[3,4,5]
print(aList)             #查看串列資料
>>>[[1,2,3],[2,3,4],[3,4,5]]

print(aList.count([1,2,3]))        #資料是[1,2,3]的有一項
>>>1
print(aList.count(3))              #資料是3的有0項
>>>0

bList=[[1,1,1],[2,2,2]]   #extend, 將串列bList附加到串列aList後面
aList.extend(bList)
print(aList)           
>>>[[1,2,3],[2,3,4],[3,4,5],[1,1,1],[2,2,2]]

print(len(aList))        #目前串列aList共有5項資料
>>>5

del aList[4]             #刪除串列aList位置4的資料
print(aList)             #
>>>[[1,2,3],[2,3,4],[3,4,5],[1,1,1]]
del aList[3]            #刪除串列aList位置3的資料
print(aList)             #
>>>[[1,2,3],[2,3,4],[3,4,5]]

cList=aList+bList   #將串列aList 加上 串列 bList,成為串列 cList
print(cList)             #
>>>[[1,2,3],[2,3,4],[3,4,5],[1,1,1],[2,2,2]]

cList.reverse()       #reverse : 將串列內容反向排序       
print(cList)             #
>>>[[2,2,2],[1,1,1],[3,4,5],[2,3,4],[1,2,3]]

cList.sort()             #sort不指定參數,設設為增排序
print(cList)             #
>>>[[1,1,1],[1,2,3],[2,2,2],[2,3,4],[3,4,5]]

cList.sort(key=lambda aList:aList[2],reverse=True)
print(cList)             #以資料項中的第2項進行反向排序
>>>[[3,4,5],[2,3,4],[1,2,3],[2,2,2],[1,1,1]]

dList=[[9,9,9]]       #重銃三次 dList的內容
print(dList*3)           #
>>>[[9,9,9],[9,9,9],[9,9,9]]

print([1,2,3] in aList)  #aList中,是否有[1,2,3]這項資料
>>>True

print(cList.index([1,1,1]))  #[1,1,1]在cList的哪個位置?
>>>4

aList.insert(1,[2,2,2])    #在aList的位置1,insert插入[2,2,2]
print(aList)             #
>>>[[1,2,3],[2,2,2],[2,3,4],[3,4,5]]

print(aList[1])          #位置1的資料
>>>[2,2,2]
print(aList[1:3])        #位置1(含)到位置3(不含)的資料
>>>[[2,2,2],[2,3,4]]
print(aList[1:])         #位置1起的所有資料
>>>[[2,2,2],[2,3,4],[3,4,5]]

aList.pop()              #pop移除最後一項資料(預設為最後一個 index=-1)
print(aList)             #
>>>[[1,2,3],[2,2,2],[2,3,4]]
aList.pop(1)           #pop移除位置1的資料
print(aList)             #
>>>[[1,2,3],[2,3,4]]

aList.remove([2,3,4])   #remove移除[2,3,4]這個資料項目
print(aList)             #
>>>[[1,2,3],[2,2,2],[2,3,4]]

2019-07-17

在樹莓派 RaspBerry Pi 下,用Python 執行 CURL 指令,發送 LINE Notify即時通知

工作環境:
  • RaspBerry Pi 3 Mode B+
  • 作業系統:版本代號為 Buster (Version:June 2019 / Release date:2019-06-20 / Kernel version:4.19)
  • 透過LINE接收其他網站服務通知,與網站服務連動完成後,LINE所提供的官方帳號「LINE Notify」將會傳送通知。不僅可與多個服務連動,也可透過LINE群組接收通知。
  • 現有可用的可連動服務
  • 當然也可以根據自己的需求,自行開發自己的服務需求
    • 取得通知服務的Token(發行存取權杖),必須先用註冊的電子郵件帳號 / 密碼,登入以下網址:
      https://notify-bot.line.me/my/
    • 點擊『發行權杖』
      輸入權杖名稱
      選取通知對象,可以是自己(1對1聊天接收LINE Notify的通知)或已參加的群組

    • 取得已發行的權杖
      若離開此頁面,將不會再顯示新發行的權杖。 離開頁面前,請先複製權杖。
    • 邀請好友中的『LINE Notify』加入所選取的通知群組(這個範例的群組是:★LuckyFullHouse★幸運滿屋★)。
  • 在樹莓派使用 cURL指令,傳送通知給Line Notify對應的通知對象
    • 甚麼是 cURL ?
      Curl 是一個在 Linux 上用來透過 HTTP Protocol 定義存取網路資源的協定,讓我們可以使用 client / server 模式來取得網路資源)下載和上傳檔案的指令(比起 wget 只能下載強大許多)。
    • curl的選用參數
      -X/--request [GET|POST|PUT|DELETE|PATCH]  使用指定的 http method 來發出 http request
      -H/--header  設定 request 裡所攜帶的 header
      -i/--include   在 output 顯示 response 的 header
      -d/--data       攜帶 HTTP POST Data
      -v/--verbose 輸出更多的訊息方便 debug
      -u/--user       攜帶使用者帳號、密碼
      -b/--cookie   攜帶 cookie(可以是參數或是檔案位置)
    • 使用 curl 傳送通知給Line Notify對應通知對象的指令格式:
      • 文字訊息內容:
        curl -i -X POST -H 'Authorization: Bearer <權杖碼>' -d 'message=<文字訊息內容>' https://notify-api.line.me/api/notify
      • 包含圖片的通知內容:
        curl -i -X POST -H 'Authorization: Bearer <權杖碼>' -d 'message=<文字訊息>' https://notify-api.line.me/api/notify -d 'stickerPackageId=1' -d ' stickerId=407'
      • stickerPackageId 及 stickerId 的代號,可以參閱:
        https://devdocs.line.me/files/sticker_list.pdf  
      • 如果沒得可以執行 curl 的主機,可以用online curl
        https://onlinecurl.com/  
      • LINE Notify的參考文件: https://notify-bot.line.me/doc/en/ 
使用Python搭配 curl 發送 Line Notify :
  • 參考程式碼:
    import os
    zToken='***TheTokenCode***'
    zMsg='2882國泰金目前股價=41.3'
    zCmd="curl -i -X POST -H "
    zCmd=zCmd+"'Authorization: Bearer " + zToken + "' "
    zCmd=zCmd+"-d 'message=" + zMsg + "' "
    zCmd=zCmd+"https://notify-api.line.me/api/notify"
    os.system(zCmd)
  • 執行結果:
    HTTP/1.1 200
    Server: nginx
    Date: Wed, 17 Jul 2019 09:08:31 GMT
    Content-Type: application/json;charset=UTF-8
    Transfer-Encoding: chunked
    Connection: keep-alive
    Keep-Alive: timeout=3
    X-RateLimit-Limit: 1000
    X-RateLimit-ImageLimit: 50
    X-RateLimit-Remaining: 998
    X-RateLimit-ImageRemaining: 50
    X-RateLimit-Reset: 1563357895

    {"status":200,"message":"ok"}
  • 發送的通知內容:

參考資料:

2019-07-16

在樹莓派 RaspBerry Pi 執行排程Python程式 (cron / crontab)

工作環境:

  • RaspBerry Pi 3 Mode B+
  • 作業系統:版本代號為 Buster (Version:June 2019 / Release date:2019-06-20 / Kernel version:4.19)
樹莓派排程工作的編輯:
  1. 如何進入排程工作的編輯?
    (要用預設登入帳號pi的身分執行,所以不要sudo)
     crontab -e
  2. crontab -e的編輯器預設為nano:
    存檔:^O (ctrl-O)
    離開:^X (ctrl-X)
  3. 加入一個排程工作
    */5 * * * * python3 /home/pi/Programs/testSchedule.py > /dev/null 2>&1 
  4. 排程時間參數說明:
    (第幾分鐘 ) (幾點) (哪一天) (月份) (星期)
  5. 常用排程執行週期格式:
    • 每五分鐘執行一次:
       */5 * * * *
    • 每整點執行一次:
       0 * * * * 
    • 每天23:55執行一次:
      55 23 * * *
    • 每月1日00:05執行一次:
      5 0 1 * *
    • 每週一07:00執行一次:
      0 7 * * 1
    • 每小時的1,10,21,32,43,55
      "1,10,21,32,43,55" * * * *
    • 每月的1-3日06:10個執行一次
      10 6 1-3 * *
  6. 排程工作內容編輯後,必須重新啟動排程服務
    sudo service cron restart
用於排程的Python Script程式,須注意的事項:
  1. 用於排程的Python script程式,第一行(shebang line, #! 程式檔名)需指定,這個script要用哪個程式來執行,依照作業環境的不同,區分如下:
    • Windows:#! python3
    • OS X:#! /usr/bin/env python3
    • Linux:#! /usr/bin/python3
    • 其他Linux常見的shebang
      • #!/bin/sh→使用 sh(Bourne shell) 或其它相容 shell 執行指令碼
      • #!/bin/csh→使用 csh(C shell) 執行
      • #!/usr/bin/perl -w→使用帶警告的 Perl 執行
      • #!/usr/bin/python -O→使用具有程式碼最佳化的 Python 執行
      • #!/usr/bin/php→使用 PHP 的命令列直譯器執行
  2. 確認Python script程式的執行權限:
    • 將 .py 程式,放在 預設使用者 pi 的 home folder
    • 授予執行權限:chmod +x thePythonScript.py
    • python script排程時間指定的範例:
      每逢1月2日的03:04am 執行
      4 3 2 1 8 /home/pi/schedulePython.py

參考資料: