2018年11月30日 星期五

樹莓派 NodeJS 升版為 11.3.0 版

今天將 Win10 筆電的 NodeJS 升版為最新的 11.3.0 版, 順便透過遠端連線將鄉下的 Pi 3 也升版, 程序參考之前舊文 (最底下的部分) :

如何更新樹莓派的 Node.js

此篇是根據在部落格留言的前輩建議成功升版為 9.3.0 版的 :

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri Nov 30 15:18:50 2018 from 42-77-42-227.emome-ip.hinet.net
pi@raspberrypi:~ $ node -v 
v9.3.0 

NodeJS 官網最新版已經是 11.3.0, 檔案列表參考 :

https://nodejs.org/dist/latest/

對於 Pi 3 而言所需要的檔案是其中的 node-v11.3.0-linux-armv6l.tar.gz, 因此要先用 wget 下載此檔解壓縮後放到執行目錄 /usr/local/bin 底下, 整個升版程序指令如下 :
  1. wget https://nodejs.org/dist/latest/node-v11.3.0-linux-armv6l.tar.gz (下載檔案)
  2. tar -xvf node-v11.3.0-linux-armv6l.tar.gz   (解壓縮檔案)
  3. cd node-v11.3.0-linux-armv6l  (變更工作路徑)
  4. sudo mv /usr/local/bin/node /usr/local/bin/node_old (備份舊版程式)
  5. sudo cp -R * /usr/local/   (複製新版程式到 /usr/local 下)
  6. export NODE_PATH=/usr/local/lib/node_modules   (設定路徑)
  7. sudo rm /usr/local/bin/node_old  (刪除舊版程式)
以下是升版紀錄 :

pi@raspberrypi:~ $ wget https://nodejs.org/dist/latest/node-v11.3.0-linux-armv6l.tar.gz 
--2018-11-30 15:24:06--  https://nodejs.org/dist/latest/node-v11.3.0-linux-armv6l.tar.gz
Resolving nodejs.org (nodejs.org)... 104.20.23.46, 104.20.22.46, 2606:4700:10::6814:162e, ...
Connecting to nodejs.org (nodejs.org)|104.20.23.46|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 17816658 (17M) [application/gzip]
Saving to: node-v11.3.0-linux-armv6l.tar.gz
2018-11-30 15:24:37 (592 KB/s) - node-v11.3.0-linux-armv6l.tar.gz saved [17816658/17816658]
pi@raspberrypi:~ $ tar -xvf node-v11.3.0-linux-armv6l.tar.gz 
node-v11.3.0-linux-armv6l/
node-v11.3.0-linux-armv6l/share/
node-v11.3.0-linux-armv6l/share/man/
node-v11.3.0-linux-armv6l/share/man/man1/
......
(略)
......
node-v11.3.0-linux-armv6l/lib/node_modules/npm/lib/profile.js
node-v11.3.0-linux-armv6l/lib/node_modules/npm/lib/help-search.js
node-v11.3.0-linux-armv6l/lib/node_modules/npm/lib/substack.js
node-v11.3.0-linux-armv6l/lib/node_modules/npm/lib/pack.js
pi@raspberrypi:~ $ cd node-v11.3.0-linux-armv6l 
pi@raspberrypi:~/node-v11.3.0-linux-armv6l $ sudo mv /usr/local/bin/node /usr/local/bin/node_old
pi@raspberrypi:~/node-v11.3.0-linux-armv6l $ sudo cp -R * /usr/local/ 
pi@raspberrypi:~/node-v11.3.0-linux-armv6l $ export NODE_PATH=/usr/local/lib/nod 
e_modules 
pi@raspberrypi:~/node-v11.3.0-linux-armv6l $ node -v 
v11.3.0
pi@raspberrypi:~/node-v11.3.0-linux-armv6l $ sudo rm /usr/local/bin/node_old 

Bingo! 順利升版完成!

NodeJS 測試系列之前的文章列表如下 :
  1. Stem OS
  2. 關於 Node.js
  3. 如何更新樹莓派的 Node.js
  4. Node.js 學習筆記 (一) : 安裝 Node.js
  5. Node.js 學習筆記 (二) : console 模組 (控制台) 測試
  6. Node.js 學習筆記 (三) : 檔案模組 fs 測試
NodeJS 11.3.0 的說明文件參考 :

https://nodejs.org/dist/latest-v11.x/docs/api/documentation.html

新筆電市調 (二) : ASUS ZenBook UX533FD

昨天收到一封資訊月 ASUS 促銷的 Email, 裡面有一款 ASUS 11 月新出的筆電 Zenbook 15 UX533FD, 規格相當不錯, 15.6 吋螢幕, 8 代 CPU 有 I5 (8265U) 與 I7 (8565U) 兩款, I5 配 8G DDR4 RAM, I7 配 16GB, 都是 ON BOARD 不能改. 硬碟均為 512GB SSD, 獨顯 GTX1050  MAX Q (2GB DDR5 RAM). 最重要的是電池為 75W, 續航力達 16 小時, 實測 4K 影片可連續播放 6 小時. 唯一缺點是較重, 約 1.6KG. 目前 I5 款售價約 37000 左右, 參考 :

大船3C ASUS UX533FD-0052B8265U i5 8g 512g gtx1050/2g $36500
比爾3C ASUS 華碩 15吋ZENBOOK 皇家藍 UX533FD-0052B8265U $36850
ASUS華碩四面窄邊框ErgoLift軸承設計GTX 1050 UX533FD-0052B8265U $36900
ASUS UX533FD-0052B8265U 皇家藍『實體店面』UX533FD UX533 全新未拆 $37700

這款與 ACER 尚未上市的 15 吋 Swift 5 (SF515-51T) 規格類似, 但 Swift 5 較輕, 約 990g, 當然續航力較差, 約 10 小時, 參考 :

IFA/宏碁發表超窄邊框15 吋輕薄筆電Swift 5

奇怪,  LG Gram 15.6 吋也是採用 72W 電池, 但續航力號稱可達 20 小時, 它是怎樣做到的? 難道是不用獨顯真的省這麼多電嗎? 不過 LG Gram 價格就貴多了. 等 15 吋 Swift 5 上市後再來評估吧.

參考 :

新筆電市調
看上ASUS-Zenbook-15- UX533FD
【開箱實測】ASUS ZenBook UX533FD 美。力無邊15吋筆電

2018-12-10 補充 :

今天查詢露天有無 UX533FD 16GB RAM 版, 目前最便宜是 43100 元 :

華碩 ASUS UX533FD 0042B8565U 15吋筆電 (i7-8565U/16G/512G/GTX1050  $43100

只差 CPU 與 8G DRAM, 差價為 6600 元, 就文書與寫程式來說好像不值得.

下面這篇有提到 UX533 的獨顯卡 GX1050 與一般筆電用的 MX150 差異 :

# 【心得】開箱ASUS ZenBook UX533FD i7-8565U/16G

"而且這台相較於一般輕薄筆電頂多給到MX150,
這台直接塞一張GTX1050 with Max-Q Design版在裡面,
相較於MX150(GT1030筆電版)的GP108核心,
1050的GP107核心除了性能較強外
還多了NVENC編碼與解碼
不像只配MX150的筆電只能用UHD620內顯來做QSV編碼以及CPU混解"

今天下班去燦坤看 UX533, 覺得重量 1.6KG 還可接受. 店員說宏碁 Swift 15.6 吋 SF515 也出來了, 兩者規格價格差不多, SF515 有觸控無獨顯有指紋識別續航力較小; UX533 無觸控有獨顯有臉部識別續航力較久. 參考 :

【葛萊美3C】Acer SF515-51T-54VR i5-8565U/8G/512G SSD $36800
【Acer】15吋 SF515-51T-54VR i5-8265U/8G/512GPCIe/觸控 $37800 (高雄茂訊阿楓)

2018年11月29日 星期四

安裝深度學習框架 PyTorch

本周去逛明儀時看到這本 PyTorch 的書, 稍微翻閱才知原產於臉書開發團隊的 PyTorch 是比 TensorFlow 更容易學習的深度學習框架, 它以 Python 重新實作了知名的 Torch, 其張量運算以 Numpy 為基礎, 且更甚於 Numpy, 所以書還沒買就先來安裝測試看看 :

比Tensorflow還精美的人工智慧套件:PyTorch讓你愛不釋手




PyTorch 是一個低階的深度學習框架, 主要聚焦於直接操作陣列 (張量), 比高階的 Keras 較有彈性. Keras 將深度學習的內部層次細節與操作包裝起來 (抽象化), 實作深度學習演算法就像堆積木一樣, 特色是簡單易學, 缺點是缺乏彈性. 而 PyTorch 則提供較低階的實驗環境, 使用者有較多自由度撰寫客製化的階層, 參考 :

https://www.pytorchtutorial.com
PyTorch 基礎篇
Keras or PyTorch as your first deep learning framework

我參考了下面這篇在 Win10 機器上安裝 PyTorch :

如何在windows10环境下安装Pytorch-0.4.1版本

安裝過程包括兩部分, 先安裝 PyTorch 本身, 然後安裝 torchvision (我的 Win10 安裝的是 Python 3.6 環境) :

D:\Python\test>pip3 install http://download.pytorch.org/whl/cu80/torch-0.4.1-cp36-cp36m-win_amd64.whl 
Collecting torch==0.4.1 from http://download.pytorch.org/whl/cu80/torch-0.4.1-cp36-cp36m-win_amd64.whl
  Downloading http://download.pytorch.org/whl/cu80/torch-0.4.1-cp36-cp36m-win_amd64.whl (595.0MB)
Installing collected packages: torch
Successfully installed torch-0.4.1

其次是安裝 torchvision 套件, 主要提供常用影像資料集, 模型架構, 以及影像轉換函式庫, 參考 :

#  https://pytorch.org/docs/stable/torchvision/index.html

D:\Python\test>pip3 install torchvision
Collecting torchvision
  Downloading https://files.pythonhosted.org/packages/ca/0d/f00b2885711e08bd71242ebe7b96561e6f6d01fdb4b9dcf4d37e2e13c5e1/torchvision-0.2.1-py2.py3-none-any.whl (54kB)
Requirement already satisfied: numpy in c:\python36\lib\site-packages (from torchvision) (1.14.1+mkl)
Requirement already satisfied: six in c:\python36\lib\site-packages (from torchvision) (1.11.0)
Requirement already satisfied: torch in c:\python36\lib\site-packages (from torchvision) (0.4.1)
Collecting pillow>=4.1.1 (from torchvision)
  Downloading https://files.pythonhosted.org/packages/bd/39/c76eaf781343162bdb1cf4854cb3bd5947a87ee44363e5acd6c48d69c4a1/Pillow-5.3.0-cp36-cp36m-win_amd64.whl (1.6MB)
Installing collected packages: pillow, torchvision
  Found existing installation: Pillow 4.1.0
    Uninstalling Pillow-4.1.0:
      Successfully uninstalled Pillow-4.1.0
Successfully installed pillow-5.3.0 torchvision-0.2.1

安裝完成後進行初步測試 :

Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import torch
>>> print(torch.__version__) 
0.4.1
>>> import numpy
>>> print(numpy.__version__) 
1.14.1
>>> torch.cuda.is_available() 
False 

由於我電腦沒有獨立顯示卡, 因此呼叫 torch.cuda.is_available() 時傳回 False, 若有顯示卡會傳回 True. 接著按照該網頁內容測試矩陣 :

>>> x = torch.Tensor(2,3) 
>>> print(x) 
tensor([[0.0000, 0.0000, 0.0000],
        [0.0000, 0.0000, 0.0000]])
>>> y=torch.Tensor(4,2,3) 
>>> print(y)   
tensor([[[1.3788e-14, 5.7453e-44, 9.3945e-05],
         [4.5911e-41, 0.0000e+00, 0.0000e+00]],

        [[2.1019e-44, 0.0000e+00, 2.9114e-05],
         [8.4218e-43, 7.3917e-06, 8.4218e-43]],

        [[0.0000e+00, 0.0000e+00, 2.1019e-44],
         [0.0000e+00, 2.7358e-05, 8.4218e-43]],

        [[1.0333e+20, 0.0000e+00, 0.0000e+00],
         [0.0000e+00, 2.1019e-44, 0.0000e+00]]])
>>> x = x.cuda() 
Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    x = x.cuda()
RuntimeError: cuda runtime error (35) : CUDA driver version is insufficient for CUDA runtime version at ..\aten\src\THC\THCGeneral.cpp:74

由於沒有獨顯卡, 因此呼叫 cuda() 會報錯.

2018-12-01 補充 :

看起來, 下次換新筆電時要把獨顯卡納入考量才好, ASUS UX533FD 似乎是兼具效能與長效電池優點的機種, 而且獨顯採用輝達 GTX 1050, 效能勝過 ACER Swift 5 所用的 MX150, 參考 :

MX150显卡和GTX1050哪个好

雖說在筆電上跑機器學習程式不用寄望效能有多好, 但至少呼叫 CUDA 函數不會抱錯, 且可以比較一下 CPU 版與 GPU 版效能差異, 偶而剪輯影片也比較順暢, 只要電池夠大, 多個顯卡也無妨. 參考 :

新筆電市調 (二) : ASUS ZenBook UX533FD


2019-01-29 補充 :

其實在 PyTorch 官網就有安裝指令產生網頁, 只要指定 OS, 安裝方式, Python 版本以及有無 CUDA, 底下就會自動產生所需之安裝指令 :




以 Win10, Python 3.7 無 CUDA 為例, 其 pip 指令如下 :

pip3 install https://download.pytorch.org/whl/cpu/torch-1.0.0-cp37-cp37m-win_amd64.whl
pip3 install torchvision

2018年11月28日 星期三

2018 年第 47 周記事

這兩周都在忙著編寫基本電學授課簡報, 上周二下午開始第一堂課, 約有 30 多人, 大部分是印尼籍學生, 少部分是越南籍, 剛開始用全英文授課, 下課與越南學生閒聊才知她們中文聽讀 OK, 但英文聽不懂, 所以就改為英文講解完後改用中文摘要說明. 昨天上第二課, 我帶了 Arduino, Raspberry Pi, ESP8266 等板子實體去給他們看, 因有好幾個學生非常有興趣. 由於電感電容電路之計算涉及微積分, 他們還正在學, 所以上這部分感覺他們有些茫然, 但講一些物聯網或程式設計的題外話就眼睛一亮.

週六九合一地方選舉, 這是有史以來第一次投票要大排長龍的怪象, 以前都隨到隨投, 這次都是那些無聊的公投搞飛機, 每一題都要看好久才能搞懂在說啥, 這裡面很多都是執政者必須擔起責任做決策的, 卻以公投名義轉移給民眾, 是不是一種政府失能呢? 公投是民主的額外成本, 動不動就發動公投很糟糕, 門檻弄這麼低又要綁大選, 難怪亂象叢生.

姊姊週五中午回到高雄, 準備週六要去參加第一次投票 (滿 18 囉), 但只能投公投, 還不能投選舉人票. 但週六早上才說身分證申報遺失後還沒去補辦, 所以也不能投公投.




韓劇 "九號房間" 周一終於播完, 不死心的秋榮培再次綁架奇佑鎮, 企圖進行靈魂換身, 將因拒捕癱瘓的兒子奇讚成與奇佑鎮交換靈魂, 結果又被海伊發現阻擋, 吳奉森警官及時趕到逮捕了朴秘書, 秋榮培的身分被揭穿, 張華娑終於在死前聽到自己的無罪判決, 最後倚在海伊懷裡死去. 回頭的海伊不再是以前高傲目空一切的尹智律師, 而是成為替冤獄翻案的正義律師. 這部片是今年看過最棒的劇集.

上個月買的十株辣椒苗, 六株種在鄉下菜園, 四株被我帶來高雄種在盆栽裡, 目前盆栽種的已開花結果, 菜園裡的卻才長高一點點. 兩株小番茄也同樣結出果實, 果然每天澆水還是有差的 : 





週日在市場種苗店購回 10 株韭菜苗, 種在菜園的水池邊, 因為媽原先種植的韭菜被小舅拔掉很多, 韭菜煎雞蛋很好吃, 如果臨時有客人來就可以多一道菜. 我覺得韭菜與洋蔥是很好的家庭常備菜, 洋蔥可以放很久, 菜園若有種韭菜, 隨時就可以變出一道下飯的好菜.

2018年11月24日 星期六

變天了

早上 10 點半去投票, 到現場才發現不得了, 每一個投票所都排了兩三圈, 從樓上排到樓下還拐兩次彎. 我研判這沒有排兩個小時是根本進不了的, 立馬回家去拿平板, 因為手機三兩下就沒啥好看, 還不如平板內的電子書可消磨時間. 結果真的到 12 點過後才進投票所, 投完傷腦筋的公投票出來已經快 12 點半了. 這近兩小時的罰站時間看完基本電學的 RC 與 RL 電路這兩節, 中間還拿出手機兩次跟阿英表妹哈啦.

晚上開票結果, 高雄與台中變天啦! 真棒, 明天開始就可以期待呼吸到新鮮空氣了! KMT 果然是空汙剋星!

2018-11-26 補充 :

只要上了供桌, 就得被檢驗到底是真神還是牛頭馬面. 那些假裝起乩的, 終究會在刀梯上鮮血淋漓.

2018年11月23日 星期五

明儀買書一本 : D3.JS 實作寶典

昨天跟明儀詢問了一本聊天機器人的書 "設計聊天機器人:建立對話式體驗", 架上有就請他們放櫃台, 晚上與水某, 菁菁三人去好市多買貓砂回來, 還有點時間便去明儀取書, 但實際翻閱發現並不是我想要的. 雖然沒買這本, 卻找到下面這本 D3.js 的好書 :

D3.JS 實作寶典 (呂之華, 松崗)


我學習 D3.js 跟其他學問一樣走走停停, 希望此書擺在案頭可以提醒我有空就翻幾頁, 積少成多總有看完之時.

2018年11月20日 星期二

幾本工程數學好書

這幾天在 Amazon 找到幾本工程數學的好書, 紀錄如下 :

Advanced Modern Engineering Mathematics 5th ed. (2018, Glyn James)




此書特點是以 Matlab 與 Maple 作為計算工具, 含有大量例題與習題. 其次它是從矩陣線性代數講起, 而不是一般從微分方程式開始. 計算範例如果是用 Python 那就更棒了, 不過我也可以一邊看一邊將 Matlab 改寫為 Python 版, 或許這也是磨練 Python 技能的好方法.


Advanced Engineering Mathematics 6th ed. (2018, Dennis G. Zill)




這本是很標準的工數教科書, 第一章就是從微分方程講起. 此書開頭還附上微積分公式表, 對於常忘記公式的人很方便, 不需要再去翻查微積分的書.


Advanced Engineering Mathematics 7th ed. (2012, Peter O'Neil)




這本書雖然是 2012 年的書了, 但編輯俐落, 非常適合自學, 我蠻喜歡此書的風格. 


Engineering Mathematics 8th ed (2017, John Bird)



此書不像一般工程數學那麼難, 反而像是高中數學, 適合作為正式學習工程數學的暖身書.

2018年11月18日 星期日

安裝 Python IDE : PyCharm

昨天老張分享了下面這篇 :

世界上最好的Python編輯器是什麼?我投 PyCharm一票

以前在書上有看過推薦此 IDE, 但我一直習慣用 EditPlus 編輯程式, 既然此文如此推崇便來安裝看看. 雖然 PyCharm 是 jetbrains 公司的商業軟體, 但也有提供免費的 Community 版供學生與科研人員使用, 下載網頁 :

https://www.jetbrains.com/pycharm/download/#section=windows

按右邊 Community 版下方的 Download 鈕即可下載, 蠻大的約 194MB :




執行下載的 pycharm-community-2018.2.5.exe 檔安裝 :






注意, 這裡根據電腦是 64 或 32 位元勾選, 因我已裝過 JDK, 所以不需安裝 JRE :






安裝完啟動 PyCharm 覺得執行速度比 Thonny 慢多了, 是跟 Eclipse 同等級的龐然大物, 適合開發較大型專案使用. 寫小程式我看用 Thonny 較省心.

2018 年第 46 周記事

本周大部分空閒時間都在編輯基本電學簡報檔, 全部要用英文, 我已多年未接觸, 所以花了一點時間閱讀原文書. 第一周電容部分已完成傳送給教授, 裡面用了一些微積分公式, 因不知這些東南亞學生數學程度如何, 所以例題與習題都盡量選基本題. 這幾天還是繼續寫電感與暫態響應, 微積分肯定要用上, 所以特別做了四張微積分公式回顧的投影片. Instructables 有很不錯的電容電感教學資料 (需登入帳號) :

https://www.instructables.com/lesson/Inductors/
https://www.instructables.com/lesson/Capacitors-2/

本週愛奇藝的韓片 "客 The Guest" 16 集終於看完了, 原來真正的朴日島是附身在尹華平的爺爺身上, 而不是被高度懷疑的韓神父, 他朴洪珠議員一樣也是被朴日島操控的受害者而已, 只是層級比朴議員似乎要高一些. 華平最後採用了睦光哥教他的方法, 讓朴日島重新附在他身上, 然後用咒語與經文封住跳到海裡同歸於盡, 崔允神父與姜吉英警官在祭祀他一年後, 從一位落海被華平救起的漁民口中查知原來華平沒死, 但不確定朴日島是否真的被封住, 所以暫時隱居起來. "客" 這部驚悚片我覺得還不錯看, 有些片段還蠻恐怖的.

"九號房間" 是這陣子所看過最棒的電視劇, 本週劇情越來越明朗, 奇佑鎮醫師果然是已死的山海集團繼承人奇山與美籍女子埃斯特的兒子, 所以事實上他是奇世雄會長的孫子, 秋榮培的姪子, 奇讚成的堂哥. 由於奇讚成車禍致死案宣判時吳奉森警官拿出奇讚成與埃斯特見面之錄影畫面, 導致奇讚成被當庭收押, 秋榮培一氣之下將尹智海伊律師 (當時是張華娑的心智) 涉及馬賢哲代表死亡證據交給警方, 使尹智律師也被吳奉森逮捕, 但後來發現其實馬代表是食用含有劇毒的酒而亡, 而這酒竟然是奇讚成給他的 ... 下周應該是結局了.

【韓劇《Nine Room九號房間》──當律師與死刑犯靈魂交換】劇情及人物介紹、預告、心得小評

"我身後的陶斯" 集溫馨搞笑, 推理, 緊張懸疑等元素於一身, 也是非常好看的韓劇. 本週申宇哲院長終於露出軍工業潛伏國情院內奸的真面目, 為取回被陶斯從尹春相保險櫃中偷走的隨身碟與受賄名單, 不惜派人開車撞擊隨多年的劉智妍, 但最後還是被陶斯逮住了. 可憐陳容泰為了引出躲藏的尹春相, 反而被殺手狙擊死亡, 陶斯發現不對但救援不及 ....

本週爸回鄉下住後, 我中午還是回家吃午餐, 督促一下菁菁的功課, 也怕她太無聊. 週五爸回診, 本來想中午回鄉下載他來, 下班後再去中正骨科, 但後來說為了避免我跑一趟, 請小舅載到鎮裡坐客運車較方便, 因為老年人優惠不用車錢. 這次吳院長說恢復情形 ok, 不用回診了.

2018年11月17日 星期六

購買小米 AI 智慧音箱 mini (小愛同學)

很早以前就想要買一個 Google 或 Amazon Echo 智慧音箱, 但是後來了解原來它們都還沒有在地化, 都必須用英文溝通, 所以就作罷了 (如果要練習英文倒是很好). 今天突然想起, 中國搞物聯網最厲害的小米應該有智慧音箱產品吧? 沒錯, 搜尋 "小米 智慧音箱" 果然找到 Youtube 這個小愛同學的介紹影片 :

《老爸的智能家居ep8》小米Ai音箱大PK|小愛同學與微軟小冰|小愛|小愛Mini|Yeelight語音助手|評測開箱review【我是老爸】




這影片介紹了小米音箱, 小愛同學 Mini, 以及 Yeelight 音箱的差別 (都是米家產品). 小愛同學 Mini 其實就是小米音箱的迷你款而已, 功能是一樣的. Yeelight 則是同時有小愛同學與微軟小冰雙系統, 且具有藍芽連線功能與 2.4GHz/5GHz 雙頻 WiFi 連線, 小愛 Mini 則只有 2.4GHz 頻段 (使用此頻段的設備較多), 所以比較貴一些 :

Yeelight語音助手 雙AI系統,語音控制智能家居,雙頻的Wi-Fi,藍牙BLE網關 $1050
[高雄現貨] 小米 Yeelight 語音助手 小愛小冰雙角色AI互動系統 $1150

我覺得小愛同學講話比較端莊, 微軟小冰腔調大陸味很濃, 比較囉嗦, 適合跟她打屁聊天, 可以連線藍芽音箱, 功能較多. 下面的影片介紹小愛同學的功能 :

小米AI音箱台灣實測!來看看小愛同學到底能做什麼




其他參考 :

https://www.youtube.com/watch?v=iGylS6yeBB8
《老爸的智能家居ep2》小愛同學回娘家|終於播歌了|反應變快了?|Asus路由器VPN設定【我是老爸 I'm Daddy】
小爱mini和小AI音箱有何区别 小爱音箱和小爱音箱mini

我在露天找到這個賣家, 價格 600 元應是最低, 所以馬上下標買一個來玩玩 :

現貨 小愛音箱 MINI 小米 $600





下周應該收到我的新玩具了, 哈哈.

六款智能音箱大對比,小米AI音箱表現優秀超蘋果homepod

2018-12-02 補充 :

這兩天測試發現 QQ 音樂無法播放, 與下面這位的問題一樣 :

[其他] 小愛同學無法使用QQ音樂

但是下面這篇 2018-05 發布的新聞說已經可以啦 !

小愛音箱正式與QQ音樂戰略合作!千萬首正版歌曲小愛同學任您聽

後來找到下面這篇, 說要將開發版升級到 1.3.27 才行, 但我實際下載時卻已到 1.3.32 版了 :

教您如何解決小米AI音箱小愛同學無法播放音樂?小愛音箱 1.3.27 開發版APK下載

我照指示在音樂設定中將音樂來源改為小米音樂後就可以播放了, 但不是每首點歌都找得到. 找不到時就說到 App 去設定 QQ 音樂即可, 但一設不久就說網路斷線.

小愛音箱不能播歌? 請更新小愛音箱1.3.37開發版
小米AI 小愛同學串連起我的智能懶惰生活

好站 : K.D. Chang's Startup Engineering Archive

前陣子在找尋 Python Pandas 資料時找到這個部落格, 發現裡面有非常多的 Javascript, Python, 網頁設計, 資料庫等好文章, 相信版主也是花了非常多整理, 值得細細品味 :

https://blog.kdchang.cc/archive/

許多人勤寫部落格的人或許跟我一樣並非以分享為職志, 只是隨手紀錄方便以後查考而已. 這種非故意的分享是很純真的, 如果有幫到任何人那也是意外之事, 這就是分享的最高境界.

還書一批

下面這幾本書借來一段時日沒時間看, 或只看了一點點, 估計年底前還是沒時間看, 所以早上去市場時順路拿去還了, 有空再借回來 :

2020-我們這樣生活-那樣工作 :上班.買房.借貸.教育到醫療......學什麼.做什麼有前景?廠商企業的機密-我們告訴你

坐天下很累 :中國武權力的八種滋味

動畫圖解資料結構 .第2版

最後一個知識人 :末日之後-掌握重建文明社會的器物、技術與知識原理

你所不知道的JS :非同步處理與效能

為什麼Google不夠用?

孫正義一次OK的社內簡報術 :3分鐘一舉過關!日本最強簡報術-各大企業競相採用

圖像思考訓練班 =Visual thinking :工作.生活.人脈.夢想的全能整理術

怪老子教你 :這樣算解答一生財務問題


但同時又借了下面五本好書 :

劍橋活用英語文法 .中級

Arduino物聯網最佳入門與應用 :打造智慧家庭輕鬆學

實戰Firebase :APP開發者的最佳雲端服務平台

跟錢好好相處 :幸福的關鍵-是找到金錢與人生的平衡點

一路笑到掛的生死哲學課 :哈佛哲學家用幽默剖析生與死的一


文法書是要給菁菁複習英文用的, Arduino 這本是楊明豐今年的新書, 主要是物聯網智慧家居應用. "跟錢好好相處" 探討要用甚麼態度看待金錢才能讓讓我們感到幸福. "一路笑到掛的生死哲學課" 這本則是非常有趣的哲學書, 以詼諧又睿智的言語探討人們的終極恐懼-死亡.

2018年11月16日 星期五

0056 台灣高股息 2018 配息入帳

最近收到元大寄來的股息配發通知書, 我在 10 月 30 日除息前一日以 24.1 元買到的一張 0056 股票配發 1450 元股息, 不計手續費的話, 殖利率約有 6%, 因為今年配息比較高, 所以作為懶人投資法好像還不錯 :



相較於股價較高的 0050, 台灣高股息 0056 價格都在 20~27 元間擺盪, 只要 2 萬多元就可以買一張, 而 0050 卻要 7 萬多元, 似乎 0056 比較容易下手. 雖然 0056 比 0050 內扣費用貴 0.3%, 交易成本貴 0.26%, 但是我還是比較偏愛 0056. 台灣 50 適合用零股平台定期定額扣款去投資, 否則要等累積 7 萬元才買, 恐怕投資熱情早就熄火了.

不過我看了綠角的分析後, 想法有點動搖了. 我原本打算將閒置資金漸漸轉移到 ETF 上, 只要持有成本夠低, 對五年平均股息殖利率超過 5% 就會進行轉移, 若股價漲高, 使資本利得遠超過配息收益就賣出, 否則等年底配息也可享有不錯的報酬. 但是下面這幾篇都一致認為 0050 比 0056 好 :

最適合上班族的ETF》為什麼0050比0056好?基金經理人沒說的3個真相
綠角財經筆記: 元大台灣高股息ETF分析介紹(0056,2018年版)
# 0050, 0056 怎麼看怎麼選?
買高股息 0056 真的比較 0050 好?存股達人只買「這一檔」,年年獲利高達「50 萬」!

下面這篇 "汪汪財經" 認為論股息殖利率, 其實比 0056 殖利率高的績優股還不少, 但那要對個股有研究, "如果你對個股有研究,有許多個股的現金殖利率都比0056高,但若你沒有時間研究個股,還是乖乖買0050或0056。" :

台灣高股息(0056)(每年多存300張股票)

他的另一篇文章如下, 結論是 "若是你是一個很懶的投資人,或是沒空追蹤基本面,較好的方式還是乖乖買台灣50。" :

台灣50(0050)適合投資的定存股嗎?(我用4張表,存股賺1倍)

投資達人施升輝則從機會成本角度對 0056 持肯定觀點, 參考 :

傻傻買0056的福氣!他買在25元高價,4年後賺贏「買在22元的人」

下面這篇市場先生的分析則指出, 0056 周轉率是 0050 的 10 倍, 所以稅費成本也是差 10 倍, 難怪內在成本比較高 :

0056ETF(元大高股息)是什麼、該怎麼買?高股息真的有比較好嗎?

看完這些分析, 我覺得都很有道理, 怎麼做因人而異, 在我有時間理財之前, 唯一能做的就是聽施升輝的傻傻買 0056, 免得資金閒置讓機會成本上流失. 如果是沒時間研究股票的年輕人, 還不需要靠配息過生活, 最好是定期定額投資具有長期成長性的 SP500 指數或 0050.

2018年11月15日 星期四

好書 : Math Adventures with Python 與 Doing Math with Python

今天在 No Starch 網站找到下面兩本 Python + Mathematics 的書, 內容還蠻有趣的 :

Math Adventures with Python-An Illustrated Guide to Exploring Math with Code




詳細章節參考 :

https://nostarch.com/download/MathAdventuresWithPython_SampleTOC.pdf

另外一本是 Doing Math with Python :

Doing Math with Python-Use Programming to Explore Algebra, Statistics, Calculus, and More!




詳細章節參考 :

http://www.nostarch.com/download/Doing%20Math%20with%20Python_dTOC.pdf

No Starch 出版蠻多 Python 方面的好書, 參考 :

https://nostarch.com/catalog/python

"Doing Math with Python" 天瓏賣 1050 元,  "Math Adventures with Python" 三民賣 828 元, 樂天 552 元最便宜 (電子書) :

https://www.tenlong.com.tw/products/9781593276409 $1050
http://www.sanmin.com.tw/Product/index/006834952 $828
https://www.kobo.com/tw/en/ebook/math-adventures-with-python $552

最近因為編寫基本電學授課簡報資料溫習了一下微積分, 對數學似又重燃希望, 這個在我求學路上絆倒我兩次, 讓我從此與電機研究所掰掰的傢伙, 現在看來其實還蠻可愛的, 以前讀工程數學都不知道要作何用, 現在終於有點感覺了. 讀數學若能配合 Python 的 Numpy, SciPy, 以及 SymPy 一起學習應該會相得益彰, 例如下面這本書就是 :

Numerical Methods in Engineering with Python 3




現在打算有空來重讀工程數學, 但似乎要先複習微積分才行.

其實我在 Amazon 還找到一本 Python 的數學書, 對於學習微積分與 Python coding 還不錯, 但底下書評反映此書作者英文欠佳, 難以閱讀, 所以就沒有興趣了, 但程式碼倒是值得參考 :

Mathematics and Python Programming
http://www.lulu.com/shop/jc-bautista/mathematics-and-python-programming/paperback/product-21805306.html

加購磁吸傳輸線與鞋掛

9 月買 Note8 時, 因覺得可能需每天充電, 故同時在露天買了一條 198 元的磁吸式傳輸線, 使用兩個月下來覺得很滿意, 手機 Type-C 孔不用經常插拔, 只要充電線接頭靠近馬上就吸附, 非常方便, 也可保護 Type-C 插孔. 此款產品內容是一線三頭價格 189 元; 也可以只買線, 一條 110 元,  我都買金色, 參考 :

# 2.4A 三合一磁吸線【一線三頭】磁吸傳輸線 磁吸快充線 磁力線 Iphone Micro USB Type-c充電線 $189
磁吸線 磁吸傳輸線【加購區只有線不含頭】磁吸快充線 Iphone Micro USB Type-c 手機充電 傳輸 $110
黏貼式 牆面 鞋掛 鞋架 壁掛【滿額免運】創意 節省 空間 收納 牆壁 節省空間 綠/藍/粉/白 $16
購買點菸器擴充座, 三星 Tab 傳輸線, Type-C 傳輸線, 18650 鋰電池

這次決定加購 2 條一線三頭, 以及 3 條有線無頭, 另購買 10 個鞋掛, 此賣家滿 599 免運, 剛好現在做活動滿 499 折 50 元, 一共 818 元 :




注意, 這種磁吸式充電線廠家很多, 接頭格式差異甚大, 因為後來有向鳳中附近一個賣家購買, 但因沒察覺這個差異, 交貨時發現與我現有的不相容, 但又已到店看貨不買不好意思, 便買了三條給水某用. 這個所謂第四代的產品充電頭只有 4 個接點; 而我之前買的是 8 個接點, 所以無法相容.  其充電頭上的 LED 未充飽時是橘色, 充飽是藍色, 我之前買的則不會變色, 價格 130 元較便宜是因為它是一線一頭, 參考 :

【ANNIE SHOP】第四代 磁吸充電線 三合一 2.4A 雙面充電 傳輸線 安卓Micro/蘋果/Type-C $130

此賣家還有賣多功能背包, 可方便收納筆電, 雨傘, 水壺等, 以後要換背包可考慮 :

【ANNIE SHOP】小款男生超大容量背包 旅行登山 新款津布 收納肩背包 USB充電多功能 防水旅行包 露營後背包 $890
【ANNIE SHOP】現貨 最新黑機芯 MOCORO毛球君 寵物自走球 迷你掃地機器人 寵物玩具 寵物球 除塵自走球 $140
【ANNIE SHOP】鋁合金尼龍編織傳輸線 手機充電線 快充一米 1米 金屬接頭銅芯 USB 蘋果/iPhone/安卓 $23

好站 : 如何製作風向計與風速計

以前在測試 Arduino 氣象站時就想過加裝風速計與風向計, 但市售的現成感測計並不便宜, 但 DIY 又不知如何製作. 今天在下面這篇高雄中正高工電子科同學的專題製作裡找到方法, 原來只要用 LED 加上旋轉編碼盤即可 :

# 數位化風向計與風速計之研究

此文將 360 度分成 32 個方位, 每一方位 11.25 度, 用 5 位元編碼盤 00000~11111 識別, 因此只要用五個紅外線 LED 與五個光敏電阻來偵測目前風向編碼即可偵測方位.

不過風速計的部分此文用的方法我覺得比較麻煩, 它使用一個小發電機從風葉驅動產生的電壓大小通過 32 個運算放大器來判別風速. 其實可以使用風向計的圓盤編碼器與一組 LED 來偵測圓盤洞口光訊號的頻率, 送給 Arduino 來計算風速. 

參考 :

https://www.youtube.com/watch?v=TIpPtFF8R2o




https://www.youtube.com/watch?v=xbc8zN1YDPU




https://www.youtube.com/watch?v=dfB3jxvi0LY




diy anemometer Part III






More videos :

https://www.youtube.com/watch?v=dIt35Ap8r6w
https://www.youtube.com/watch?v=-d2xOs5UDls
https://www.youtube.com/watch?v=UQir7qYmTP0

2018年11月14日 星期三

IEEE Spectrum : Python 連續兩年穩居程式語言排行榜 No.1

今天在 IEEE Spectrum 網站看到 2018 年最受歡迎程式語言排行榜, Python 自 2017 年打敗 C 語言榮登榜首以來, 已連續兩年穩居龍座, 可見 Python 拜其語法簡單易學, 動態直譯語言的優點, 加上龐大第三方函式庫支援, 在業界對 AI 機器學習, Fintech, 資料科學等方面人才殷切需求的推動下, 越來越受到程式員的歡迎.

# IEEE Spectrum : The 2018 Top Programming Languages




這個排行榜是 IEEE 透過互動 App 調查蒐集而來, 針對 47 種常用程式語言統計各語言受歡迎的程度, Python 連續兩年擊敗 C 語言與 Java 拿到 100 分. 這張排行榜也列出各語言的應用領域, Python 主要是在 Web 後端, 桌上型應用, 以及嵌入式設備 (例如 MicroPython), 獨缺行動 App 領域. 其實, 用 Python 寫 Android App 是可行的, 例如 kivy 函式庫, 除 Android 外, 他還支援 iOS, Meego, Windows, Linux. OSX 等作業系統, 參考 :

https://kivy.org/#home
https://kivy.org/doc/stable/guide/packaging-android.html
# Kivy Programming Guide
Python for Android: Start Building Kivy Cross-Platform Applications
Developing Apps for Android and Other Platforms with Kivy and Python
厲害了!如何Python寫一個安卓APP,附源碼!

2018年11月13日 星期二

論文 : 具備以Python為基礎之可嵌入式投資策略的 MVC 框架

今天在母校高科大圖書館網站找書時意外搜尋到下面這篇 2018 年資管研究所楊昌憲的碩士論文, 看標題應該是 Fintech 的好文章, 立馬上碩博士論文加值系統查詢, 發現有提供電子全文下載, 便下載下來一睹為快 :

具備以Python為基礎之可嵌入式投資策略的MVC框架─以程式交易系統為例

此文後端以 PHP 撰寫網頁與策略管理系統, 使用者可將以 Python 撰寫之策略程式上傳到伺服器, PHP 程式會選擇要執行之策略進行回測或交易. 此文的文獻探討也是快速熟悉 Fintech 背景知識非常好的資源.

2018年11月12日 星期一

如何關閉 Java 更新提醒 (Java Updator) 功能

每天早上開啟辦公室 Win7 電腦總是會跳出 Java 更新提示視窗, 它是 modal 視窗 (強制), 一定要按取消才會回到原來桌面, 每天如此真是討厭. 四, 五年前還有用 Java 時, 由於存取 ACCESS 資料庫在當時的 Java 7 會出現找不到驅動程式問題, 但 Java 6 的 32 位元版卻可以, 所以就一直停留在這個版本. 後來覺得 Java 被甲骨文接手後, 軀體越來越龐大, 又加入了非常多我根本用不到的功能如泛型等等, 越來越複雜, 最後就被我拋棄了, 改用 Javascript 與 Python 這種不需編譯的動態語言來編碼. 因可能還會用到不想移除 JDK, 但每天都要看到 Java Updator 跳出來真是煩, 怎麼讓它閉嘴呢? 我在下面這篇文章看到解決辦法, 就是在登錄檔中把它關掉 :

Disable Java updater in registry

只要在 Win7 的 "開始/執行" 輸入如下指令即可 :

reg delete "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run" /v "SunJavaUpdateSched" /f

但問題是, 我在 "開始" 中找不到 "執行", 查網路才知 Win7 預設不顯示 "執行", 需在  "內容/自訂" 中設定為顯示, 參考 : 


首先在 Win7 "開始" 按鈕上按滑鼠右鍵點選 "內容" :



在 "開始功能表" 頁籤中按 "自訂鈕" :




勾選 "執行命令" 選項 : 




按 "確定" 後在 "開始" 功能表中就會出現 "執行" 按鈕了 :




貼上上面那個取消 Java Updator 的指令, 按 "確定" 螢幕閃一下就結束了 :




Bingo !

20181116 補充 :

這幾天辦公室的 Win7 電腦開機後還是出現 Java Updator 提醒視窗, 可見上面的操作似乎無效. 查詢 Java 官網說明, 才想起控制台有一個 Java Control Panel 就可以設定更新, 只要取消勾選 "自動檢查更新" 項目即可 :




按 "不檢查" 即可 :



2018年11月11日 星期日

利用樹莓派的 Python 程式定時回報外網 IP 的方法 (Heart beat)

今天下午弄完滷冬瓜後, 花了一整個下午研究樹莓派上執行的 reportip2.py 為何近兩周以來都沒有回報外網 IP 變更訊息, 原先以為問題可能是 myip.com.tw 已經從 http 改成 https 協定, 導致呼叫 visit() 函數時無法取得 IP 資料所致. 但後來發覺 reportip2.py 的檔案模式竟然不是可執行模式, 奇怪, 難道有駭客入侵改了嗎? 總之, 兩個都改了之後就 OK 了 :

pi@raspberrypi:~ $ ls reportip2.py -al
-rw-r--r-- 1 pi pi 2960 Dec 10  2017 reportip2.py
pi@raspberrypi:~ $ sudo chmod +x /home/pi/reportip2.py 
pi@raspberrypi:~ $ ls reportip2.py -al 
-rwxr-xr-x 1 pi pi 2960 Dec 10  2017 reportip2.py 
pi@raspberrypi:~ $ python2 reportip2.py 
Network is Ready!
IP information from http://myip.com.tw
IP not change. 111.254.54.xx 192.168.2.192

reportip2.py 會將目前最新外網 IP 紀錄於文字檔中, 每次比對時會讀取現在的外網 IP 與檔案所記錄之 IP 比較, 若不一樣才以郵件通報. 這次我一直到兩周後連線失敗才發現這問題似乎太晚, 應該改為 HEART BEAT 模式, 例如每小時通報一次, 不需要去比對有無變異, 這樣只要沒有收到 email 就表示樹莓派有問題了, 而且從郵件中找尋最新 IP 也很快.

關於回報 IP 以便能從遠端存取樹莓派的方法參考之前的測試紀錄 :

從外網以 SSH 存取樹莓派的方法
Python 學習筆記 : 網頁擷取 (一) 使用 urllib 與 HTMLParser
Python 學習筆記 : 以 Gmail 寄送郵件的方法 (一)
樹莓派自動偵測網路斷線時重開機的方法

目前的 reportip2.py 是用 Python 2 改寫的 (利用我的 Hinet 信箱寄送郵件), 當時也嚐試改成 Python 3 版但沒成功, reportip3.py 就晾在那邊, 前陣子測試了用 Gmail 傳送郵件的方法, 因此這次就改為用 Gmail 來寄送 IP 訊息, 且改用 Python 3 來寫, 原始碼 reportip3.py 如下 :


#reportip3.py : send mail by Gmail with TLS
import smtplib
from urllib import request
import re
import socket
import time

class Getmyip:
    def getip(self):
        try:
            myip=self.visit("https://myip.com.tw")
        except:
            try:
                myip=self.visit("http://cmp.nkuht.edu.tw/info/ip.asp")
            except:
                try:
                    myip=self.visit("http://dir.twseo.org/ip-check.php")
                except:
                    print("Fail to get the Network ip.")
                    print("Get the LAN ip.")
                    myip=get_lan_ip()
        return myip
    def visit(self, url):
        opener=request.urlopen(url,timeout=20)
        #print(opener.headers.get_content_charset())
        if url==opener.geturl():
            str=opener.read().decode(opener.headers.get_content_charset())
            print("IP information from", url)
        return re.search('\d+\.\d+\.\d+\.\d+',str).group(0)

def get_network_ip():
    getmyip=Getmyip()
    localip=getmyip.getip()
    return localip

def get_lan_ip():
    s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    s.connect(("1.1.1.1",80))
    ipaddr=s.getsockname()[0]
    s.close()
    return ipaddr
 
#check_network()
ipaddr=get_network_ip()
lanip=get_lan_ip()
emailip=str(ipaddr)+" "+str(lanip)
print("current ip: {}".format(emailip))

smtp=smtplib.SMTP("smtp.gmail.com", 587)
smtp.ehlo()
smtp.starttls()
smtp.login("mygmail@gmail.com", "yguxhsurqwpseksw")
from_addr="mygmail@gmail.com"
to_addr=["myhinetmail@msa.hinet.net"]
msg="Subject:My IP\n\
From:Raspberry Pi 3\n\
To:My IP\n\
Cc:mycompanymail@mycompany.com.tw\n\
{}".format(emailip)
status=smtp.sendmail(from_addr, to_addr, msg)
if status=={}:
    print("郵件傳送成功!")
else:
    print("郵件傳送失敗!")
smtp.quit()

檔案存成 reportip3.py, 然後用 chmod 指令變更為可執行 : 

pi@raspberrypi:~ $ ls reportip3.py -ls    
4 -rw-r--r-- 1 pi pi 1800 Nov 11 17:03 reportip3.py    
pi@raspberrypi:~ $ sudo chmod +x /home/pi/reportip3.py    
pi@raspberrypi:~ $ ls reportip3.py -ls
4 -rwxr-xr-x 1 pi pi 1800 Nov 11 17:03 reportip3.py     

用 python3 指令執行成功 : 

pi@raspberrypi:~ $ python3 reportip3.py
IP information from https://myip.com.tw
current ip: 111.254.54.xx 192.168.2.192
Send mail successfully!

最後修改 crontab, 加入於整點執行 reportip3.py 的定時器 : 

pi@raspberrypi:~ $ crontab -e    
pi@raspberrypi:~ $ crontab -l 
*/10 * * * * /usr/bin/python2 /home/pi/reportip2.py    
0 * * * * sudo /usr/local/checkwifi.sh
0 * * * * /usr/bin/python3/home/pi/reportip3.py   

這是整點執行的 crontab. 

如果是想每個小時執行一次, 但不是整點, 而是 crontab 更新的那時開始每隔一小時的話要這麼寫 :

pi@raspberrypi:~ $ crontab -l 
*/10 * * * * /usr/bin/python2 /home/pi/reportip2.py
0 * * * * sudo /usr/local/checkwifi.sh
* */1 * * * /usr/bin/python3 /home/pi/reportip3.py  

查看 crontab 日誌 :

pi@raspberrypi:~ $ sudo cat /var/log/cron.log 

參考 :

定時任務之crontab命令
第十五章、例行性工作排程(crontab)
crontab 表达式每小时执行一次(整点整分)


2018-11-12 補充 :

今早收信確認每小時 (30 分) 都會收到樹莓派發出的外網 IP 通知信 :






只要漏掉一封信就表示有問題, 要嘛是網路斷線, 要嘛是樹莓派系統出問題.

2019-07-27 補充:

今天發現手機收到的 email 中, 鄉下 Pi 3 傳回來的 IP 為 192.168.2.192, 這表示查詢外網 IP 有問題, 檢查 reportip3.py 應該是每一個 try 都失敗, 原因可能出在 visit(), 它原先是用 urllib.request, 乾脆改成 requests 好了 :

#reportip3.1.py
#Send mail by Gmail with TLS
import smtplib
import request3
import re
import socket
import time

class Getmyip:
    def getip(self):
        try:
            myip=self.visit("https://myip.com.tw") #utf-8
        except:
            try:
                myip=self.visit("http://cmp.nkuht.edu.tw/info/ip.asp") #big-5
            except:
                try:
                    myip=self.visit("http://dir.twseo.org/ip-check.php")
                except:
                    print("Fail to get the Network ip.")
                    print("Get the LAN ip.")
                    myip=get_lan_ip()
        return myip
    def visit(self, url):
        r=requests.get(url)
        #print(r.encoding)
        return re.search('\d+\.\d+\.\d+\.\d+',r.text).group(0)

def get_network_ip():
    getmyip=Getmyip()
    localip=getmyip.getip()
    return localip

def get_lan_ip():
    s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    s.connect(("1.1.1.1",80))
    ipaddr=s.getsockname()[0]
    s.close()
    return ipaddr

#check_network()
ipaddr=get_network_ip()
lanip=get_lan_ip()
emailip=str(ipaddr)+" "+str(lanip)
print("current ip: {}".format(emailip))

smtp=smtplib.SMTP("smtp.gmail.com", 587)
smtp.ehlo()
smtp.starttls()
smtp.login("yhhuang1966@gmail.com", "yguxhsurqwpseksw")
from_addr="yhhuang1966@gmail.com"
to_addr=["tony1966@ms5.hinet.net"]
msg="Subject:Meinung IP\n\
From:Raspberry Pi 3\n\
To:MyIP\n\
Cc:yhhuang@cht.com.tw\n\
{}".format(emailip)
status=smtp.sendmail(from_addr, to_addr, msg)
if status=={}:
    print("Send mail successfully!")
else:
    print("Send mail in failure!")
smtp.quit()


2018 年第 45 周記事

因鄉下爸那台 OPEL 車要驗車, 且他尾椎的瘡傷口已癒合, 不需要再換藥, 所以爸決定下周回鄉下, 住在大樓其實很無聊, 每天只能看電視. 但菁菁聽說阿公要回鄉下, 說可不可以過年再回去, 覺得已經習慣阿公每天在高雄的日子.

周三收到小舅從鄉下發來的 Line, 門口路邊轉彎處的那棵龍眼樹竟然被修剪得光溜溜, 難道是阿正哥要犁田了, 叫他們清潔隊來修剪嗎? 週六回到鄉下一看, 地上連剪下的樹葉或樹枝都沒有, 感覺是清潔隊沒錯, 也許有人覺得此樹太密, 擋住轉彎的視線. 其實我也想找時間修剪, 但一直沒有付諸行動. 今天問阿正哥, 他說應該是選舉到了, 里長尋求連任要有表現, 所以各處去修剪轉彎處有礙視線的植栽.

下下周開始要去正修授課, 最近 Python 學習要暫緩, 先把英文簡報打完再說.

如何調整樹莓派的螢幕解析度

本周發現無法連線鄉下樹莓派, 昨天回到鄉下家, 檢查系統正常, 還有在跑, 但似乎沒有傳出外網 IP. 另外, 螢幕解析度似乎變得比較小, 畫面上的字變好大, 所以先來解決解析度問題.

設定螢幕解析度可從程式集 "Preference/Raspberry Pi Configuration" 進入 :




按 "System/Resolution" 項目下的 "Set Resolution" 按鈕 :




選擇適當解析度, 我之前買的 HDMI 樹莓派專用 16 吋顯示幕最高解析度為 1920*1080, 但這樣字會變得好小, 其適當解析度為 1360*768 :




設定完成後會詢問是否 REBOOT, 必須按 YES 重開機, 新的解析度才會生效.

參考 :

購買有 HDMI 輸入之液晶螢幕
樹莓派Raspberry Pi系統設定螢幕解析度


2019-07-26 補充 :

早上整理電視櫃雜物, 順便把拔電月餘的 Pi 3 重新送電開機, 準備要來好好利用它做網路爬蟲與物聯網 Gateway. 送電後才發現連接電腦的 HDMI 線沒拔掉, 這樣開電視時還要切換訊息來源很不方便, 於是在開機狀態下直接拔掉 HDMI 線, 結果 Putty 與 VNC 遠端連線立即被斷線, 只好拔掉電源重開機, 但 VNC 重新連線後發現 Pi 3 的螢幕解析度變成了預設的 720*480 (因為沒有偵測到 HDMI 螢幕嗎? ), 在 VNC 上選單太大根本沒辦法從 Respberry Pi 偏好設定去改解析度 (選單拉不下來, 按不到確定鈕), 怎麼辦?

當然只好用命令列的 raspi-config 去設定囉!

pi@raspberrypi:~ $ sudo raspi-config







設定完成後須重開機才會生效 :

pi@raspberrypi:~ $ sudo reboot 


2021-01-27 補充 :

這幾天在研究樹莓派 GPIO, 我把手上四塊 Zero 都焊上 40P 的排針, 焊完裝卡測試是否能正常開機, 從我的 15 吋 Acer Swift 5 筆電以 VNC 連線桌面發現解析度不適合, 經調整覺得 DMT mode 85 1260X720 16:9 最恰當 :




2018年11月9日 星期五

螺旋式水車幫浦 (二)

冬天腳步將近, 最近鄉下家的水圳的河水穿流不絕, 但灌溉仍需人力舀水實在費事. 去年年底有在考慮製作水車自動打水上岸, 但後來遇到工具不足, 又忙其他事就嘎然而止. 上週回鄉下重新思考此問題, 覺得螺旋式水車似乎較可行, 之前文章參考 :

螺旋式水車幫浦

我在 Youtube 看到另一個自製螺旋式水車的影片, 製作方法值得參考 :

https://www.youtube.com/watch?v=ap70HndRnQ4




不過這個看來比較像是玩具, 下面這個實用性較高. 它只用鐵條或木條製作水輪的框, 兩邊有支架支撐軸承, 水下應該有個底盤才對.

https://www.youtube.com/watch?v=rKQZTRIzhe8




下面這個影片則是農民運用這種無需電力之水車打水灌溉的實際應用 :

https://www.youtube.com/watch?v=kA_zNhyN6Fw




之前拆下來的腳踏車車輪若要拿來用, 可能要將軸拆掉換成鐵管, 然後另外加裝軸承即可. 問題在支架比較麻煩, 如何牢固鎖定在水圳上需要傷點腦筋.

購買葉黃素膠囊 (三)

前幾天二哥一再提醒我葉黃素快吃完了, 但上班一忙又忘了, 昨晚他抱怨只剩兩顆 ... 我還真是會拖, 立馬上網查詢, 發現雅虎康是美商城目前均無較優價格, 僅露天找到一瓶 1210 元的, 便先買三瓶, 免運合計 3630 元 :

# 【公司貨免運供應】悠康愛見康葉黃素120錠/瓶。完整包裝~低頭族、保養眼睛、中秋節送禮 $1210

之前買過最便宜價是一瓶 1160 元, 參考 :

購買葉黃素膠囊
購買葉黃素膠囊 (二)
代購悠康愛健康葉黃素

2018年11月7日 星期三

Python 學習筆記 : 台股資料擷取模組 twstock 測試 (三)

今天繼續測試 twstock 套件的功能, 本篇主要測試台股證券編碼資訊 twstock.codes 屬性以及 twstock,realtime 模組之即時股價擷取功能.

本系列之前的文章參考 :

Python 學習筆記 : 台股資料擷取模組 twstock 測試 (一)
Python 學習筆記 : 台股資料擷取模組 twstock 測試 (二)

台股證券編碼資訊儲存台股個股的資料, 例如股票代號 (code), 股名 (name), 上市日期 (start), 市場 (market) 等等. 這些資料放在 GitHub 上的兩個 csv 檔內, 參考 :

https://github.com/mlouielu/twstock/tree/master/twstock/codes

twstock.codes 屬性以字典形式儲存全部編碼資訊, 使用股票代號作為鍵 (key), 因此 twstock.codes['2330'] 可取得台積電之編碼資訊, 它會傳回一個 StockCodeInfo 物件, 其屬性如下表 :

 StockCodeInfo 物件屬性 說明
 type 類型字串 : "股票", "ETF"
 code 股票代號字串 : "2330"
 name 公司名稱字串 : "台積電"
 start 上市日期字串 : "1994/09/05"
 market 市場字串 : "上市", "上櫃"

例如 :

>>> import twstock 
>>> type(twstock.codes) 
<class 'dict'>
>>> twstock.codes['2330'] 
StockCodeInfo(type='股票', code='2330', name='台積電', ISIN='TW0002330008', start='1994/09/05', market='上市', group='半導體業', CFI='ESVUFR')
>>> info=twstock.codes['2330'] 
>>> type(info) 
<class 'twstock.codes.StockCodeInfo'> 
>>> info.code
'2330'
>>> info.name
'台積電'
>>> info.start
'1994/09/05'
>>> info.market 
'上市'

其次是即時股價擷取功能, 可用來實作股價到價通知, 方便即時採取停損或停利操作. 相關的原始碼放在在 twstock.realtime 模組裡, 參考 :

https://github.com/mlouielu/twstock/blob/master/twstock/realtime.py

利用 realtime 模組的 get() 函數傳入股票代號即可取得即時股價資料, 其傳回值為一字典, 即時股價資料放在 key=realtime 項目內, 其值也是一個字典, 其鍵如下 :

 realtime 的鍵 說明
 latest_trade_price 最心成交價字串
 trade_volume 成交量字串 (股)
 accumulate_trade_volume 累積成交量字串
 best_bid_price 最佳五檔賣出價 str 串列
 best_bid_volume 最佳五檔賣出量 str 串列 (股)
 best_ask_price 最佳五檔買入價 str 串列
 best_ask_volume 最佳五檔買入量 str 串列 (股)
 open 開盤價字串
 high 最高價字串
 low 最低價字串
 success 擷取成功與否 True/False

例如 :

>>> from twstock import realtime
>>> rt=realtime.get('2330') 
>>> type(rt) 
<class 'dict'>
>>> rt
{'timestamp': 1541485800.0, 'info': {'code': '2330', 'channel': '2330.tw', 'name': '台積電', 'fullname': '台灣積體電路製造股份有限公司', 'time': '2018-11-06 14:30:00'}, 'realtime': {'latest_trade_price': '234.50', 'trade_volume': '5303', 'accumulate_trade_volume': '30449', 'best_bid_price': ['234.00', '233.50', '233.00', '232.50', '232.00'], 'best_bid_volume': ['9', '153', '396', '414', '942'], 'best_ask_price': ['234.50', '235.00', '235.50', '236.00', '236.50'], 'best_ask_volume': ['2254', '1848', '1453', '1385', '859'], 'open': '234.00', 'high': '235.50', 'low': '232.50'}, 'success': True}
>>> rt['info'] 
{'code': '2330', 'channel': '2330.tw', 'name': '台積電', 'fullname': '台灣積體電路製造股份有限公司', 'time': '2018-11-06 14:30:00'}
>>> rt['info']['time']  
'2018-11-06 14:30:00'
>>> rt['realtime'] 
{'latest_trade_price': '234.50', 'trade_volume': '5303', 'accumulate_trade_volume': '30449', 'best_bid_price': ['234.00', '233.50', '233.00', '232.50', '232.00'], 'best_bid_volume': ['9', '153', '396', '414', '942'], 'best_ask_price': ['234.50', '235.00', '235.50', '236.00', '236.50'], 'best_ask_volume': ['2254', '1848', '1453', '1385', '859'], 'open': '234.00', 'high': '235.50', 'low': '232.50'}
>>> rt['realtime']['latest_trade_price']
'234.50'
>>> rt['realtime']['best_bid_price'] 
['234.00', '233.50', '233.00', '232.50', '232.00']
>>> rt['realtime']['best_ask_price']
['234.50', '235.00', '235.50', '236.00', '236.50']
>>> rt['success'] 
True

在追蹤即時股價時就可以用 ['realtime']['latest_trade_price'] 鍵取得最新成交股價, 如果大於預設的停利價格就發出停利通知 (簡訊或 Line 訊息). 注意, 每次要抓 latest_trade_price 必須再次呼叫 get() 函數才會重新擷取網頁, 否則會內容會不變.

realtime.get() 也可以傳入欲查詢的股票代號串列, 但測試結果卻 fail :

>>> from twstock import realtime
>>> rt=realtime.get(['2330','1101'])
>>> rt
{'rtmessage': 'json decode error', 'rtcode': '5000', 'success': False}

難道是有 bug?

新筆電市調

最近蘋果推出新款 MackBook Air 13 吋, 螢幕果真改為 Retina, CPU 性能也提升 27% 左右, DRAM 也改為 8GB, 硬碟 128GB SSD 價格為 $39900 元; 256GB SSD 者為 $45900 元, 比原先新聞所說的 999 美金廉價 Air 差了一萬元左右. 我那時就想, 螢幕與硬體功能都提升, 怎麼可能價格便宜呢? 參考 :

https://www.apple.com/tw/shop/buy-mac/macbook-air
MacBook Air 跑分完勝 12″ MacBook,四萬元預算你會怎麼選?

其實最近我已放棄買 Air 的想法了, 因為花時間去熟悉另一套作業系統實在不聰明, 可以用熟悉的 Windows 就可以快速完成的事, 為何要花幾周去學習不同介面? 更何況之後陸續安裝軟體或作物聯網實驗可能還會遇到一些奇奇怪怪的驅動程式問題, 幹嘛要把寶貴的時間花在 Trouble shooting?

Air 最吸引我的亮點是較實在的 12 小時電池續航力, 但 LG GRAM 比 Air 更持久, 號稱可達 21 小時, 同樣 i5 八代 CPU, 8GB DRAM 與 256GB SSD 規格, LG GRAM 價格約 38000 元左右, 而 Air 卻要 45900 元, 參考 :

光華NB專賣 LG樂金 Gram 14吋 14Z980 i5-8250U/8GB RAM/256GB SSD/14吋 $37900

LG GRAM 也是小於 1 KG 的輕薄比電, 不過, LG GRAM 這麼大的電池充電頭應該比較大顆, 充電時間要比較久吧! 而且以後若要更換電池, 價格與規格好不好找也要考慮, 畢竟我不是 3, 4 年就想換筆電的人, 我是要榨乾機器最後一滴油水的人.

前陣子有注意到 MSI 也有出一款 14 吋輕薄筆電 PS42 8M-402TW, 重量稍重約 1.2KG, 但規格較好, 使用 i7 八代 8550U CPU,  8GB DRAM, 512GB SSD, 螢幕可 180 度展開, 邊框超窄, 散熱設計非常優, 價格約 32000~34000 元左右, 比 LG GRAM 還有競爭力 (2 年保固與到府收送) :

♥正妹小舖♥MSI PS42 8M-402TW*i7-8550U/8G/512GB SSD/Win10/14" $31600
雙11破盤 MSI PS42 /i7-8550U/8G/512G/14吋/1.19kg $32900

PS42 也有 16GB/512GB 獨顯款, 型號 PS42-8RB-295, 適合需要編輯圖像影片等應用, 價格約 38000 左右, 多了 8GB DRAM 與顯示卡差價約 5~6000, 就看需不需要獨顯而已 (比較耗電與發熱), 如果只是文書上網寫程式應該不需要獨顯, 省下的錢把 DRAM 換成 16GB 較划算 (單槽不能擴充) :

微星 msi PS42-8RB-295 14吋/i7-8550U/MX150 2G/512G SSD $38000
【 高雄 】 來電享折扣 MSI PS42 8RB-022TW i7-8550U MX150 14吋 美型輕薄 微星 $38500

網路對 PS42 評價似乎不錯, 特別是 MSI 筆電的系統管理軟體 Dragon Center, 做備份映像檔等似乎很方便. 據電獺少女實測, 文書上網實際續航力約 7~8 小時, 看影片約 4~5 小時, 參考 :

披著羊皮的狼! 開箱 MSI PS42 美形效能筆電
[開箱] 微星『 PS42 』全台首測! 簡約金屬機身、輕薄美型14吋商務機
【心得】【宅開箱】MSI PS42 輕薄型筆電,時尚金屬外皮下隱藏未知的性能!

還有前陣子在看的 Acer Swift5 據說現在缺貨很搶手, 但與 PS42 比起來 CP 值較低, 因為同規格 16G/512G 獨顯比 PS42 貴上 2400 元, 新款 Swift5 大約 38900 元, 而 PS42 約 36500 元.

【 高雄 】 來電享折扣 acer SF514-52T-870J 金 I7-8550U 512GSSD Swift 5 $36000

舊款的 Swift5 (8G 內顯 i5-8255 CPU) 較便宜 :

【 高雄 】 來電享折扣 acer SF514-52T-57FV 藍 I5-8250U 256G SSD 宏碁 (8G/256G 內顯 無觸控) $29600 (到店自取 28600)
【琪琪3C】 ACER SF514-52T-56Q4 藍 i5-8250U/8GB /512GB SSD/W10 (8G/512G 內顯 觸控) $31800
【琪琪3C】 ACER SF514-52T-56Q4 金 i5-8250U/8GB /512GB SSD/W10 (8G/512G 內顯 觸控) $32000
【 高雄 】 來電享折扣 acer SF514-52T-51AA 金 I5-8250U 14吋 Swift5 觸控 宏碁 (8G/512G 內顯 觸控) $34000

若以 Swift 5 8G/256G I5-8250U 這台與正妹小舖的 31600 那台比較, 差價 3000 元差在 PS42 是 512GB SSD (PCI 介面), DRAM 為 DDR4, CPU 是 I7-8555U, 且電池續航力較強, 看起來 PS42 多 3000 元較划算.

參考 :

2018 年第 36 周記事 : 手機筆電評估
ACER Swift 5 與 USB Type-C PD 充電
關於 MacBook Air 筆電

2018-11-07 補充 :

今日下班後去建國路欣亞看筆電, 剛好有 PS42 的展示機, 與店員攀談後想法又有點改觀了, 他說如果只是文書寫程式, 幹嘛買快 4 萬元的筆電呢? 2 萬出頭就可以啦! 還真的是站在客戶需求來看啊! 他說其實各牌筆電裡面都用了環保材質, 所以 3~4 年差不多就會開始出現問題, 修如果划得來就修, 否則就得換新了.

2018-11-08 補充 :

今天在 "MSI PS42 優缺評,10月SSD降級,請三思" 看到對 PS42 評價 : 

"PS42 這台筆電的缺點,最嚴重的是觸控版,其次是USB配置,無法type c充電, 喇叭音質我的主觀評價是不行的, CPU持續10%負載+亮度20+Twitch實況(高強度持續連網,不是YT那種低強度的),大約4小時續行。如果只是文書應該5小時沒問題. 如果不需要顯卡,可以選SF514,這台喇叭比較好,SSD可以擴充(記憶體不能,所以一定要買頂規),有雷電3、可以PD快充. gram、swift5雖輕,但散熱不好,可能會常常碰到8代cpu的溫度牆但garm的續航真的無敵,可惜是鏡面螢幕. 有支援PD充電是最好的, 我只要買個小米PD充電頭65W或45W就可以達到. PS42 規格重量價錢其實應該算目前CP最高的(雖然新出廠的硬碟有被降階). 沒有獨顯的單風扇是正常的,因為這一台有限15W,MX150滿血版的功耗是25W, 用不到獨顯的話可以嘗試XTU調整,這一台有機會讓你用到10小時以上的文書上網的. 號稱可以撐8小時的電力選擇他,可使實際用來都差不多3小時多就沒電了?"

"sf514的硬碟是INNTEL 600p,其實挺差的,一定要換。swift 5 (sf514) Type-C 可以充電但它並不是thunderbolt 3(雷電3) ,只是usb3.1gen1,這台是sata ssd 囧,連600p速度都沒有"

Swift 5 最大的優點是輕薄, 缺點是較慢的 SATA SSD, 電池僅 36W, 續航力較弱, 但其 Type-C 有 PD 功能, 可以用像紫米之類的大容量行動電源給筆電充電, 參考 :

14 吋超輕薄筆電!Acer Swift 5 輕薄/擴充/性能兼具!
ACER SF514-52T 消光藍 8代 Swift 5 開箱
{小米家}-現貨加購有贈品【紫米官網商品】ZMI紫米10號移動電源20000mAh版 QC3.0快充為MacBook供電 $1635

另外我看到聯想 X1 Carbon 也不錯, 但價格實在太高 :

ThinkPad X1 Carbon (第 6 代) 特價 8G/256G $41990

2018-11-11 補充 :

昨天去民族路全國電子看 Swift 5 與 PS42, 發現 PS42 比 Swift 5 厚許多, 差 230 克真的有感覺, Swift 5 真的非常輕盈. 而且同樣都是內顯, PS42 底下散熱孔比較熱, 而 Swift 5 則是微溫而已, 所以目前比較傾向買 Swift 5 了, i7 8G/512G 價格約 35000 元 (全國破盤價 i5 8G/512G 33678 元, 建國路 33000); 而 16G/512G 則約 37900 元, 差個 8GB DDR3 價差 2900 元, 值得嗎?

【琪琪3C】 ACER SF514-52T-56Q4 金 i5-8250U/8GB /512GB SSD/W10 (8G/512G 內顯 觸控) $32000
【 高雄 】 來電享折扣 acer SF514-52T-51AA 金 I5-8250U 14吋 Swift5 觸控 宏碁 $34000
# 【 高雄 】 來電享折扣 acer SF514-52T-83U3 藍 I7-8550U 8G DDR3/512GSSD Swift 5 $36100
【琪琪3C】 ACER SF514-52T-89A3 藍 i7-8550U/16GB/512GB SSD/W10 $37900

"8250U和8550U在性能上不會有本質區別,買i5的就好"

參考 :

https://www.ptt.cc/bbs/nb-shopping/M.1507034929.A.4FD.html
https://cpu.userbenchmark.com/Compare/Intel-Core-i7-8550U-vs-Intel-Core-i5-8250U/m320742vsm338266
https://www.mobile01.com/topicdetail.php?f=394&t=5378081&p=2

"i5-7200u可以在3.1GHz撐很長一段時間
即使是系統預設一段時間後降到2.5GHz
再過一段時間依然能回到3.1GHz
這個有很大一個重點是因為散熱撐得住
但是i5-8250u以後的CPU就不一樣了
輕薄型的筆電99%不可能撐住這樣子的熱度
別說"瞬間"了
只要散熱和耗電量先撞牆
i5-8250u就是一顆連2GHz都跑不到的「超威猛4C8T」
(目前測試出來還看過低於1GHz的)
這頻率大概直接退回intel 20年前的單核水平吧"

Acer SF514-51-53EJ 14吋筆電(i5-7200U/8G/512SSD/福 $26505

20181124 補充 :

今天看到下面這篇, 覺得 ACER SWIFT 5 電池是否太那個了 ?

ACER Swift 5 電池膨脹

但下面這篇似又 OK, 平均可用 5 小時, 會不會上面那篇作者拿到的剛好是機王 :

[ 開箱 ] 宏碁 Acer New Swift 5 SF514–52T

2018-11-26 補充 :

Acer 發表全球最輕15.6 吋筆電,Swift 5 重量只有990 公克
Acer Swift 5 (2018) first-look: Hands-on with the ‘world’s lightest laptop’
5萬內 輕薄 美型 512ssd 16gb ram佳
【琪琪3C】 ACER SF514-52T-89A3 藍 i7-8550U/16GB/512GB SSD/W10 $37900

原來 ACER 已經有編號為 SF515-51T 的輕薄筆電, 我現在老花越來越明顯, 看來還是等這款 15.6 吋的上市好了. 只要背包換個較寬一點的就可以了.