山姆的編程實作分享。。。

Sam Blog, Sam Sharing, Sam Studio

2019年5月30日

Python 讀書筆記 (6) : Python Basics


讀完這章節:
1. 發現Python對字串的處理太強了, 忍不住要給它個讚!

2. 字串的並列(Concatenation)及複製(Replication)竟然用 "+" , "*" 就可以辦到了
-----------------------------------------------------
>>> "Sam" + "Chen"
'SamChen'
>>> "Sam" * 5
'SamSamSamSamSam'
-----------------------------------------------------

3. Common Data Type : Integer, Floating-point, Strings 可以透過 str(), int(), float() 輕易的轉型
-----------------------------------------------------
>>> Var = input(">>")
>>12345
>>> print(Var)
12345
>>> str(Var)
'12345'
>>> int(Var)
12345
>>> float(Var)
12345.0
>>> str(Var)
'12345'
>>> int(Var)
12345
--------------------------------------------------------

4. 對Python想要更深入了解它的語法或定義, 可以到 Python 官網閱讀
Python Document (English版)
Python Document (簡中版)

2019年5月29日

Python 讀書筆記 (5) : Python 書籍的選擇


Python WiKi 介紹了不少Python 的書籍, 你挑了哪本讀呢?

我個人認為每個人的學業背景及研讀習慣不盡相同,書籍的喜好也勢必不同, 所以這篇文章我不推薦好書, 而是單純的分享我挑選這兩本書的理由

AUTOMATE THE BORING STUFF WITH PYTHON

原因:
我已經會一些程式語言了, 也寫了不少程式碼, 所以我不需要"從零開始"的Python書籍, 而這本,  剛好是我需要的 "快速切入主題" 的書籍; 這本不囉嗦, 只在第一單元 (第1-6章, 佔全書1/3篇幅) 快速告訴你 "Python Programming Basic", 然後就在第二單元(也就是第七章)開始教你怎麼用Python處理日常routing 的事務, 進而達到自動化~

Web Scraping with Python, 2nd Edition

原因:
我學Python的主要的目的, 其實是撈取股市資訊及產品市場行情, 所以這本直接契合我的目的, 不選它還有哪本 ?



2019年5月28日

Python 讀書筆記 (4) : 改變 Anaconda prompt 工作目錄 / how to change default directory of Anaconda prompt


 Anaconda prompt 的default 工作目錄是 C:\Users\ID
以我而言, 我的 ID 是 "Sam", 所以我的原始工作目錄是  C:\Users\Sam
那如何改變?
可以在執行Anaconda prompt後直接就到Python的工作目錄?

答案是可以的!

Step 1:
On the start screen / menu, find the "Anaconda prompt" application

Step 2:
Right-click on "Anaconda prompt" application then select " Open File Location (開啟檔案位址)"

After Step 2, the GUI will move to the location of "Anaconda prompt" application

Step 3:
Right-click on "Anaconda prompt" application again then select "Properties (內容 )"
Step 4:
Edit the " Start in (開始位置)" property to your desired path
以我而言, 我的工作目錄是在D槽 ( D:\Workspace\Python )

2019年5月27日

Python 讀書筆記 (3) : Python 的禪意


The Zen of Python (英文原文版)

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

Python 之道 (POT 眾譯版)

美麗優於醜陋,明講好過暗諭。
簡潔者為上,複雜者次之,繁澀者為下。
平舖善於層疊,勻散勝過稠密;以致輕鬆易讀。
特例難免但不可打破原則,務求純淨卻不可不切實際。
斷勿使錯誤靜靜流逝,除非有意如此。
在模擬兩可之間,拒絕猜測的誘惑。
總會有一種明確的寫法,最好也只有一種,
但或須細想方可得。
凡事雖應三思後行,但坐而言不如起而行。
難以解釋的實作方式,必定是壞方法。
容易解釋的實作方式,可能是好主意。
命名空間讚,吾人多實用。

真好的意境!
我覺得, 這不單是寫Python程式時需要有這種心態, 而是所有的程式語言都應該效法, 不是嗎?!

簡明程式的撰寫, 命名的意喻都應該讓閱讀者有如在看白話文一般, 這樣程式碼才會被永久的留下來或重複的被採用, 我想這也是工程師在開源專案所抱持的心態以及夢寐以求的境界

2019年5月25日

2019年5月24日

2019年5月19日

Arduino Robot : First Try


有了3D列印機後, 就想來嘗試做一隻機器人玩玩, 於是選擇OTTO這隻關節少的Robot來做個初體驗, 看看能不能在做好後, 拍幾集教學影片😀

立馬選擇OTTO v7版本列印出所有零件, 如下圖
疊疊樂, 看起來就很漂亮, 威風了吧!


接著開始組裝電子零組件, 這時發現
1. 這間隙也太大了, 鬆垮垮的 (紅色圈圈處)
2. 原設計只鎖一根螺絲 (黃色箭頭處), 也太不靠普了吧

這樣的組裝結構, 我自己都不滿意了, 怎麼推廣呢~
於是, 我決定停下腳步, 另尋方案~


2019年5月17日

Python 讀書筆記 (1) : What is Anaconda / Jupyter Notebbok


現在才學Python會不會太晚 ? Anyway, 活到老學到老嘛, 撩落去啦~

透過Google大神的幫忙, 從Python 開發環境的安裝, Hello World 的程式,
以及到多種 IDE 開發環境嘗試,  起手是算是練起來!
而最終我的開發環境選擇了 Visual studio Code 以及 Anaconda / Jupyter Notebook

選擇 Visual studio Code 是因為他是我熟悉且慣用的Editor, 並且她的專案管理及IntelliCode功能 非常好用.
而選擇 Anaconda  / Jupyter Notebook  則是因為她有虛擬的開發環境管理功能, 可以透過他來客製化自己開發環境, 進而清楚的知道自己的程式用了哪些packages及版本; 另外一個選擇他的原因是我想用Python來做數據分析 😀

到這階段(起手式), 來小記一下, 順便分享~

1. Visual studio code  大家應該再熟悉不過了, 我就不再多做解釋. 開發環境安裝可以參考
Getting Started with Python in VS Code

2. 至於甚麼是 Jupyter Notebook 以及 Anaconda ?
以下分享兩篇中文介紹好文給大家, 相信你看完就了解甚麼是 Jupyter Notebook 以及 Anaconda了.
Anaconda介紹及安裝教學
Jupyter Notebook介紹

3. Jupyter 操作說明可以參考這篇
Jupyter Notebook操作介紹

2019年5月15日

分享3D STL 檔案 : Nano+擴充板 保護底座


從 Fusion 360 轉換跑道到 Blender, 還真花了不少工夫 😅 還好有YouTube 大師們的分享影片, 讓我從中摸索出些門道 😀

我轉換跑道的原因是 " Why I change from Fusion 360 to Blender "

底下是用 Blender 畫出來的草圖


這個case是用來保護  Arduino Nano 結合擴充板的保護底座, 以免擴充板背面不小心短路損毀,
透過 Cura 4.0 轉出來STL檔案可在下面連接取得

底下這張照片是透過FLUX列印出來的成品, 內部上下有4個卡鉤用來卡住PCB板,
所以拆裝時要有個傾斜角.

和 "Nano + 擴充板" 結合的樣子

PS: 電源接口處有些微干涉, 我是用小刀處理掉!

2019年5月13日

Why I change from Fusion 360 to Blender


對一位 EE 背景的創客來說, 3D design 絕對是全新的領域, 在網路上搜尋及觀看影片後, 覺得Fusion 360 最容易上手, 且它內建好多 "一鍵完成" 功能, 如圓角, 導角, 所以就申請了帳號然後下載來使用, 一切如我預期的, 不到3天的時間, 我用Fusion 360劃出了 ESP8266 保護殼且用FLUX Delta 列印出來
分享3D STL 檔案 : ESP8266 WiFi 擴充板保護殼

以這樣的開發速度真的令我滿意, 但這設計過程中一直有無法開啟Fusion 360的現象, Windows 及 Macbook 都會如此; 但這無法開啟應用程式的問題又Always 發生在傍晚後, 是因為我是使用trial version? 傍晚後就因為優先權就被犧牲??? ( 這是我猜的)

就在我設計好 Nano 控制板的 case 且存好檔後, 隔天登入竟然沒有Nano 的設計檔案, 當場令我傻眼..., 常在需要它時又開啟不了應用程式再加上檔案不見, 讓我決定要來轉換跑道了, 換Blender 上路了!

2019年5月10日

Shipping a Linux Kernel with Windows


前不久我才自己打開Windows 10 在 build 14393 後新釋放的一個新功能 - WSL (Windows Subsystem for Linux), 然後嘗試這個新功能, 並且發文 (It's time to use Linux / Ubuntu by using Windows Subsystem) 鼓勵大家使用; 而這個新功能打開後, 使用者還必須自己去安裝 Linux kernel, 但在 May 6th這個時間點, Microsoft devblog 釋出以下的訊息

訊息連結 : Shipping a Linux Kernel with Windows
也就說, 再不久, Windows 10 就 build-in Linux Kernel, 我們真的可以擺脫 VM 或雙系統了😃

事實上, 從 Stack overflow 的9萬份的市調, 可以看到 Linux 已經是developer 心中開發平台的首選了, 姑且不論Microsoft 此舉是力挽狂瀾 ? 或順應潮流 ? 但這做法是我們期待的, 畢竟 Windows 是我們熟悉的, 日常的工作也都是在Windows 環境下.

Linux and Windows are the most common platforms

2019年5月9日

Google Flutter is ready for iOS, Android, Desktop (Mac, Linux, and Windows) and embedded devices, like Raspberry


才在3天前 PO 文 ( 還在猶豫要不要跳入 Dart / Flutter ? ) , 建議大家可以開始研究一下 Flutter SDK,
就在昨天的 Google IO 2019的大會上, Google 更強化Flutter SDK了 / 或稱更接近他之前訂下的目標了 - Beyond Mobile (超越行動裝置)



底下是Google IO 2019 開發者大會針對 Flutter 的介紹
Developer Keynote (Google I/O '19) (Flutter 的Keynote 在55分鐘處)
Beyond Mobile: Building Flutter Apps for iOS, Android, Chrome OS, and Web (Google I/O'19)

在這段Google Flutter 介紹影片中, 可以看到Google 在 Dart / Flutter的努力, 你是否也隱約嗅到Google 為下一代Android OS催生而努力呢?

但至少我已經看到了 single Flutter codebase 現在不只是可以build出 iOS 和 Android app 而已, 還可build 出可以在desktop PC ( Mac, Linux, Windows) 上跑的app了, 甚至下一階段的 Embedded device - Raspberry...

所以, 想寫App 的你, 不要猶豫了, 可以一頭栽進去了😀




2019年5月8日

Anki is no longer manufacturing robots



看到這篇報導真令人傷感 😨
設計這麼優良的玩具機器人竟然也撐不下去, 還想買台來研究說...
The once-hot robotics startup Anki is shutting down after raising more than $200 million

這也間接的告訴我們, 機器人的研發不能只靠單項 "使人快樂" 而存活下來,
未來的機器人還必須具備 "幫助人類”這個因子,進而產生" 依賴” , 例如: 醫療, 家居照護...等等. 這樣產品週期才會長。

2019年5月7日

分享3D STL 檔案 : ESP8266 WiFi 擴充板保護殼


終於有了3D 列印機了😄,  一開始是列印玩家分享的一些3D模型來練練基本功及熟悉 FLUX 的脾氣, 再來, 當然就是自己設計3D模型 ~

底下這個是使用Fusion 360 軟體設計出來的3D模型,

這個case是用來保護 ESP8266 WiFi 模組, 以免模組背面不小心短路損毀,
透過 Cura 4.0 轉出來STL檔案可在下面連接取得
ESP8266 保護殼 STL 檔案

底下這張照片是透過FLUX列印出來的成品, 內部上下有4個卡鉤用來卡住PCB板,
所以拆裝時要有個傾斜角.

和ESP8266模組結合的樣子

2019年5月6日

Arduino 教學影片


還在猶豫要不要跳入 Dart / Flutter ?



還在猶豫要不要跳入 Dart / Flutter ? 底下這篇文章或許可以幫你做出決定

Why you should use Google Flutter ?

以我個人使用過後的感想是 "值得投資".

原因如下:

1. 文章中的 "Fast development", "Flexible UI".... 等等的這些制式優點我就不再論述了.

2. Hot Reload 真的很酷,  不僅僅是在PC Emulator端可以做到Hot Reload, 連實機的debug都可做到, 這對工程師而言真的是一項開發福音. (PS: 事實上, iOS app的開發, 在Swift導入的同時也就一併提供這項功能.)

3. Performance / Speed: 從目前丟出來的一些數據真的不差, 代表它體質好!

4. Flutter is Free. 這項對大眾真的有感. 要做到 single codebase 可以build出 iOS 和 Android app, Flutter 並不是首例, 但是加上 "Free" 就真的是一項創舉了, 這對平台的推廣真的是一項大助力, 這也是我看好它會成功的原因之一, 畢竟Google 推的東西並不是樣樣成功😁.

5. Flutter is open source framework. 這項對個體戶而言就幫助不大了, 畢竟Resource有限, Resource要花在刀口上; 但就研發團隊而言就是另一項助力了. 因為受制於3rd party (=黑盒子)一直是軟體開發的一個痛, 而時效, 差異化往往又是產品成敗的關鍵. 所以對講求開發時程以及製作差異化的研發團隊而言open source 就是很大的優點. 想必這open source 的做法也是Google針對平台的推廣拉攏公司團隊下的一步棋.

一項產品的成功與否, 不是產品本身要好就可以了, 在我看來Flutter本身是一個很好又有潛力的開發平台, 它已具備成功的基因, 再加上 "Free" 以及 " Open Source" 這兩項因素, 個人認為它至少會是下一個Android App 共同開發平台,  所以我給它 "值得投資"的評語, 也因此我在年初也跳入 Flutter 開發行列, 你呢 ?

2019年5月5日

入手 FLUX Delta+ 3D 列印機


在創客的這條的道路上, 個人的創意可以透過 Arduino open source的平台來完成電子及軟體的設計, 但是沒有機構的實體化, 總是感覺虛虛的, 沒有完成感.
也因為如此, 讓我想購入3D列印機...

於是, 就在上個月購入一台二手的文青機 -- FLUX Delta+


拿到手後, 立馬透過 Flux Studio 教學學程列印了內建3D模型,  過程及成品都不錯 :)
前主人機子顧的不錯!

接著就測試雷雕功能 (這功能也是我選擇這機子的一項原因)
首先是抓雷射頭Z軸的offset (+0.6mm)

接著就在隨機附贈的樟木上做雷雕的測試

以上兩項測試: GOOD!😊

熱門文章