不知道從什麼時候開始, Line的 Messaging API在 Messaging Settings 頁面上出現一個古怪的陷阱:
如果您先設定 Use webhooks 為 Enabled, 然後才填入 Webhook URL,那麼剛剛修改的 Use webhooks就會被暗地設回 Disabled, 但是看到的仍然是 Enabled, 像是這樣:
實際上 webhook 並沒有生效, 會讓你的 Line Chatbot 已讀不回。這時候只要按 F5 重新載入頁面, 就會看到暗中被設回 Disabled 的 Use webhooks 選項:
只要重新再設定為 Enabled 就好了。
highlight.js
星期六, 12月 08, 2018
星期四, 11月 08, 2018
使用 Python 從 excel 檔終結取資料
由於需要從大量的 excel 檔中擷取資料,就想是否可以用程式的方式來解決,一查知下, 果然有個 xlrd 模組可以讀寫 excel 檔。例如, 我想從當前資料夾下一個個打開 excel 檔,並且檢查每一筆資料中, 若第 B 欄的內容符合條件, 就將同一列 B 欄與 D欄的資料寫入輸出檔案中, 就可以撰寫類似以下的程式:
import glob
import xlrd
with open('result.txt', mode='w', encoding='utf-8') as of:
for xlsfile in glob.iglob("order*.xls"):
wb = xlrd.open_workbook(xlsfile)
for i in range(wb.nsheets):
st = wb.sheet_by_index(i)
if st.nrows > 1:
for r in range(st.nrows):
if st.cell(r, 1).value in ('table','chair'):
of.write(st.cell(r, 1).value + ',' +
st.cell(r, 3).value + "\n")
要注意的是, 這個套件中不論是列編號或是欄編號都是從 0 開始, 因此 excel 檔中的第 1 列編號為 0, 第 B 欄編號為 1, 所以上面程式中 cell(r, 1) 就是 excel 檔中第 r+1 列的第 B 欄。詳細的用法可以參考該模組的說明文件, 或是參考這一份簡單的教學。
從 eml 檔擷取郵件夾檔
最近遇到一個需求, 需要從一大堆的 eml 檔把郵件中的夾檔抽出來,因此找到一個 outlook add-on, 叫做 Ourlook Save Attachments from EML files, 可以針對特定的資料夾中的 eml 檔把其中的夾檔通取出存檔。
這個 add-on 其實跟 outlook一點都沒關係, 但是因為不是獨立的執行檔, 所以還是得要有 outlook 才行, 這是唯一美中不足之處。
這個 add-on 其實跟 outlook一點都沒關係, 但是因為不是獨立的執行檔, 所以還是得要有 outlook 才行, 這是唯一美中不足之處。
星期三, 10月 10, 2018
雷射模組 (KY-008) 的 3 根針腳
同事因為專案使用了市面上極容易買到的 KY-008 模組:
大部分的使用案例都會告訴你 S 接數位輸出控制開關, 中間腳接 5V, - 腳接地, 測試後發現怪怪的, S 的電壓會影響雷射的亮度, 並不是單純的開關;而且, 如果 S 腳完全不接, 似乎雷射會有微光。經過檢查模組上的線路後, 是這樣:
所以其實 S 和 - 就是供電控制雷射開關, 因此 S 的電壓會影像雷射光的亮度, 只要這兩隻腳就可以控制雷射。那麼為什麼要從 S 接一個 10KΩ電阻到中間腳呢?網路上有人稱呼中間腳為『神秘』腳, 因為不知道做什麼用途?根據這一篇文章的說明, 中間腳應該是模組的輸出腳位, 10KΩ電阻是為了限流, 可以讓你監控供給模組的電壓, 比方說偵測電源中斷、或是電壓意外陡降或是不穩等等, 至於實際上的用法, 就有待各位自行發想囉。
大部分的使用案例都會告訴你 S 接數位輸出控制開關, 中間腳接 5V, - 腳接地, 測試後發現怪怪的, S 的電壓會影響雷射的亮度, 並不是單純的開關;而且, 如果 S 腳完全不接, 似乎雷射會有微光。經過檢查模組上的線路後, 是這樣:
所以其實 S 和 - 就是供電控制雷射開關, 因此 S 的電壓會影像雷射光的亮度, 只要這兩隻腳就可以控制雷射。那麼為什麼要從 S 接一個 10KΩ電阻到中間腳呢?網路上有人稱呼中間腳為『神秘』腳, 因為不知道做什麼用途?根據這一篇文章的說明, 中間腳應該是模組的輸出腳位, 10KΩ電阻是為了限流, 可以讓你監控供給模組的電壓, 比方說偵測電源中斷、或是電壓意外陡降或是不穩等等, 至於實際上的用法, 就有待各位自行發想囉。
星期五, 8月 31, 2018
Arduino 1.8.6 無法上傳程式到 Arduino Nano 控制板
同事因為用到 Arduino Nano 控制板, 卻發現 Arduino 1.8.6 版無法上傳程式, 總是會有以下的錯誤訊息:
查了官網的資料後, 發現在 Arduino Nano 的 Getting started 文章中, 有以下的補充:
也就是說, 2018 年 1 月開始, 官方售出的 Arduino Nano 控制板上方的 bootloader 是新版的, 所以 Arduino 1.8.6 預設是配合此新版的 bootloader, 如果是之前買到的 Arduino Nano 控制板, 在上傳程式時就必須選取『工具/處理器/ATmega328P (Old Bootloader)』選項, 才能正確上傳:
查了官網的資料後, 發現在 Arduino Nano 的 Getting started 文章中, 有以下的補充:
NOTE: We have updated the NANO board with a fresh bootloader. Boards sold from us from January 2018 have this new bootloader, while boards manufactured before that date have the old bootloader. First, make sure you have the Arduino AVR Core 1.16.21 or later looking at the Board Manager. Then, to program the NEW Arduino NANO boards you need to chose Processor > "ATmega328P". To program old boards you need to choose Processor > "ATmega328P (Old Bootloader)". If you get an error while uploading or you are not sure which bootloader you have, try each type of processor 328P until your board gets properly programmed.
也就是說, 2018 年 1 月開始, 官方售出的 Arduino Nano 控制板上方的 bootloader 是新版的, 所以 Arduino 1.8.6 預設是配合此新版的 bootloader, 如果是之前買到的 Arduino Nano 控制板, 在上傳程式時就必須選取『工具/處理器/ATmega328P (Old Bootloader)』選項, 才能正確上傳:
星期一, 8月 06, 2018
firebase-arduino 程式庫無法更新資料
如果您有使用 firebase-arduino 程式庫由 ESP8266 控制板上傳資料到 Firebase 的資料庫, 會發現從約莫上週五開始, 就會失敗, 這是因為 Firebase 更新了他們的數位指紋 (fingerprint), 為此 firebase-arduino 也在幾天前修改了程式庫內容 (可參考這一篇文章)。您可以重新下載程式庫, 安裝到 Arduino 開發環境中就可以解決, 或者也可以直接修改 FirebaseHttpClient.h 檔, 將 kFirebaseFingerprint 字串的內容修改為 "6F D0 9A 52 C0 E9 E4 CD A0 D3 02 A4 B7 A1 92 38 2D CA 2F 26" , 再重新編譯程式執行即可。
星期三, 7月 11, 2018
MicroPyton 執行 UTF-8 with BOM 格式的檔案會出錯
在執行 MicroPython 的程式檔時,如果檔案是以 UTF-8 with BOM 的格式儲存, 例如以下的閃爍 LED 程式:
執行時就會發生錯誤:
這時只要將檔案另存新檔, 選取 UTF-8 格式即可, 以下使用 Visual Studio Code 為例:
另存後可以看到檔案格式已經變更:
重新執行就不會發生錯誤了:
執行時就會發生錯誤:
這時只要將檔案另存新檔, 選取 UTF-8 格式即可, 以下使用 Visual Studio Code 為例:
另存後可以看到檔案格式已經變更:
重新執行就不會發生錯誤了:
訂閱:
文章 (Atom)












