If these are helpful to you, please give me a star. Thanks a lot !
本日2023/3/31,愚人節的前一天,有人跟我說「你寫的這些文件,只有你看的懂」。簡直是個屁!(這句是我從它的語氣感受到的!)而這已經不是第一次發生,我想也將不是最後一次了。記得第一次發生這類鳥事時,讓我想了很久,也讓我有很深的感觸,“我從網路上學到了這麼多,用了這麼多 Open-source;身邊的人不懂、不會、短視這些小小作品,那為什麼不分享出來,回饋給大眾,總會有需要的人或是看得“懂”的人,並且很謝謝那些貢獻的人。”
從學校到出社會,從 Turbo C ++ 3.0、Delphi 5.0、 Linux 2.3 到現在的 AWS,就有一直撰寫筆記的習慣,當然中間也發生幾次硬碟損壞、資料遺失,讓我可以 copy-paste 的樣本變少了;後來轉至版本控管(svn 和 git)下就解決了這個煩惱。
學習改用 Markdown撰寫文件後,讓文件易讀性提高,並且更加精美,所以花了一些功夫進行重製。
這邊的作品也儘量避免放上與公司相關的東西,都是在網路上“出現”過的,再經過個人加工完成的。而我與公司的關係,也只能說魚幫水,水幫魚,因為是一段歷史的累積,我也不想細究了。另外東西很多,有些記憶也不是這麼清悉了,只能請大家一起努力成長。
遇過很多慣老闆、慣主管和慣員工,只會在意員工或同事完成“可用”的東東,而不會在意是那位員工完成的,甚至不會管怎麼處理的,有相同處境的人會知道我想表達的!
至今換了六家公司,只有1位上司表達過「文件就儘量寫,是好是壞沒關係,都對自己有幫助」。有相同處理事情習慣的同事,也只遇過一位。
當初大學專題的指導老師常說道:「要把平時的研究寫下,不管是對、是錯,那怕是一點小事也要寫下來」
像這次林智堅的論文案,如果當初歷史資料能回溯,或許就是不同的結果。
時時寫筆記的習慣,人人都討厭;會分享給其它人,更是少之又少。個人希望將來能成為一位像尤達大師,引領進入電腦世界的領航員。
人人都可以是 Computer Science!
舉凡操作身邊的電腦、手機、PS4、Smart TV或是智慧家電等,就已經是一位 Computer Science。
當然各行各業有資深也有資淺,但不要忘了當初也是經歷一段學習歷程,達到了某種成就,因此更不可以利用貶低別人來吹虛自我。
還有就算把所有的知識學會,你也不會成為賈伯斯(Steve Jobs),你也只能把工作(jobs)做順!
A. helper_ArtificialIntelligence.md - ArtificialIntelligence helper.
我完全不懂 AI (Artificial Intelligence),基本上你沒辦法從我這邊學到什麼,說是蹭 AI 也行。
只是把生活中的發想記錄下來。
B. helper_MCP.md - Model Context Protocol helper.
簡單的一句話,「只是方便 AI 嫁接 MCP Server 去“取用”資料」。
說實話,看了一說明,它們都是用一些“不利理解”的名詞去解譯名詞。建議直接去操作 MCP Server 後,反推回來是怎麼回事。
A. helper_BackupvsRAID.md - Backup vs. RAID helper.
人們應該是追求資料的健全保存後,再取得效能上的平衡。
而一般人細究 RAID 是沒有意義,要認知自身的需求,評估選擇有利的應用。
B. helper_Confluence.md - Confluence helper.
就是文件管理系統,相較於使用 Google Drive,一樣有共同編輯的功能,但是少了檔案的概念。
C. helper_DevelopmentandManage.md - Development and Manage helper
不管是敏捷式 (Agile) 開發、瀑布式 (Waterfall) 開發等,最主要是執行力,排除問題的能力!
D. helper_MarkDown.md - Markdown helper.
身為一個人,建議善用 Markdown 記錄相關筆記,少用 doc。
A. helper_IoT.md - IoT helper.
IoT 的概念很簡單,不要被一些 “協定” 約束你的想像。也不要被主管 or 業務員的話語所迷惑。只要清楚基本概念既可。
B. helper_IoT-Xiaomi.md - IoT Xiaomi helper.
用 Xiaomi 建構智慧居家。
C. helper_IoT-HomeAssistant.md - IoT Home Assistant helper.
Home Assistant 是一款開源的家庭自動化平台,強調本地控制與隱私保護。由全球熱衷創客與 DIY 愛好者所推動與維護,非常適合在 Raspberry Pi 或本地伺服器上執行。
它是一個輔助工具,是讓現有的環境下,整合成一個方便的 UI 環境,讓您能夠輕鬆地管理和控制各種智慧設備,讓它們可以協同作業。
D. helper_Matter.md - Matter helper.
Matter(以前稱為 Project CHIP,Connected Home over IP)是一種物聯網(IoT)通信協議和平台,致力於促進智能家居設備之間的互操作性和互聯性。
撰寫該篇文章的用意是要進行 Matter 的開發。既然 CHIP 已經提供相關解決方案,用就對了!
至於艱深的文件, 只會省略過去。就好像你要使用 OpenSSL 進行加密,知道編譯時怎麼連結,知道如何使用就好,有必要去細究裏面是如何加密嗎。
E. helper_MatterController-chip-tool.md - Matter Controller helper.
因為角色特別吃重,特別將 Matter Controller 從 helper_Matter.md 獨立出來。
A. helper_GStreamer.md - GStreamer helper.
B. helper_jq.md - jq helper.
JSON 是目前常用的資料格式,jq 提供於簡單的命令列下查詢、編輯,抓取所需之資訊,導入另一個程式使用。
C. helper_linux.md - linux helper.
某人說「我是雲端工程師,從來沒有學過什麼 linux,為什麼還要去學?」或許他的話沒有錯,出社會後,你能在工作上得心應心,其實就可以了。
D. helper_macOS.md - macOS helper.
E. helper_RaspberryPiOS.md - Raspberry Pi OS helper.
F. helper_vi.md - vi/vim helper.
A. helper_Email.md - Email helper.
我的第一份工作就是寫一套電子報系統,當時的網路速度說有多慢就有多慢(記得不是很清楚,ADSL好像還沒有開始呢),當要發送電子報時,還要選擇冷門時段,不然整個銀行系統都要停擺了。
B. helper_MQTT.md - MQTT helper.
use mosquitto.
C. helper_network.md - Network helper.
筆記 only。
D. helper_ONVIF.md - ONVIF helper.
E. helper_SIPandAsterisk.md - SIP and Asterisk helper.
如果你選擇 FreePBX 或其它 UI 進行安裝設定前,不妨看看這裏的指引。
F. helper_WebRTC - WebRTC helper.
WebRTC 使用的技術太多,我也只是略懂略懂。
當然裏面有些網路概念,希望能從中學習一二。
A. helper_VCS-GitHub.md - GitHub helper.
善用免費 git 空間。
B. helper_VCS-GitLabandCICD.md - GitLab helper.
CI/CD is useful ? Please make sure that you aren't a low-level programmer, system integration developer or embedded engineer.
當學習 AWS Lambda、Cloud Formation 後,感覺部署這件事很重要。當產品線到了最後上線或販賣時,就不應該允許專案的成員都能修改後部署,也不建議在不同電腦上進行操作。
這時 CI/CD 就是一個很不錯的方法。
C. helper_VCS-SCM-Manager.md - SCM-Manager helper.
一個很不錯的管理平台,安裝容易。
D. helper_VCS-SVNvsGit.md - SVN vs. Git helper.
SVN、Git 都是很好的版本控管工具,當然市面上不止這兩種。只要選擇方便性即可。
曾經有人說:「SVN 的速度比 Git 慢,所以不會去用 SVN」;至於是不是如此,雖然心中已有答案,也不想當場有所爭執。因為版本控管是管東西,而不是管速度的。
學霸:「每次用 svn 都會有衝突」
蘭卡:「那你用 git 就不會有衝突嗎?」
學霸:「會啊」
蘭卡:「公司才4位,你們有每天、每次上傳前 sync 嗎?」
學霸:「沒有啊!所以我才會找網路編輯」
蘭卡無語…
沒有良好的習慣,又沒有能力解決衝突。真的只能找網路編輯,這也是一個“work around”。
E. helper_VCS-Trac.md - Trac helper.
一個很不錯的管理平台,已安裝至 1.6。
A. helper_Docker.md - docker helper.
docker is useful ? Please make sure that you aren't a low-level programmer or embedded engineer.
B. helper_VirtualBox-x86_64-Ubuntu20.04onWin10 - VirtualBox helper.
Host: win10
Client: x86_64, Ubuntu20.04
A. helper_BLE.md - BLE helper.
BLE 的水很深,這邊只有概要,並且用不同的觀點去分析。
如果你是要實作的話,文件是幫不了你的!請直接找Opensource,而這裏有BlueZX 或許能幫助到你。
B. helper_MultimediaMuxandDemux.md - Multimedia Mux and Demux helper
除了用手機看 YouTube 外,有些基本常識還是補足一下。
C. helper_OpenSSL.md - OpenSSL helper.
D. helper_SQLite.md - SQLite helper.
2.1.1. helper_SoftwareEnginnerX9.md - Software Engineer helper.
Please read this md at first !!! It is very important.
2.1.2. helper_SDKvsCodebase.md - SDK vs. Codebase helper.
在專案開啟時,都會指派成員先去研究其可行性,當然有 SDK 時,就要先進行彙整、編譯和測試。
以下就是一個很糟的專案案例。
我:「你最近研究的東西相關的文件放那?」
先遣隊:「都在官網提供的 GitHub」
我:「那要從那開始 ?」
先遣隊:「官網都有寫」
我:「那 SDK,又放在那?編的如何?」
先遣隊:「官網都有,你自己不會抓哦!」
2.1.3. helper_astyle.md - astyle helper.
程式碼格式化(縮排)工具,支援 C/C++、C++/CLI、Objective-C、C# 和 Java。
2.1.4. helper_curl.md - curl helper.
使用 curl 抓圖、抓檔,甚至軟體工程師提供測試的方法。
2.1.5. helper_DBus.md - dbus helper.
本人是用 D-Bus low-level API 來進行對接,主要範例請見 utilx9。
這邊要說個小故事,“曾經將相關的 Sample 給了同事後,結果同事能在10幾隻程式裏,用了3種寫法去對接D-Bus,跟我的寫法完全不同,最神奇的事,他一樣用 D-Bus low-level API”。
我並不清楚他為什麼要這樣寫程式,有可能是為了展現他的實力;也有可能是每寫一隻新的程式時,就忘了曾經寫過的方式,再次詢問 google 大神而得到的結果。
所以請大家試著上網查尋看看。
2.1.6. helper_gdb-startup.md - gdb helper.
這邊又有個小故事,雖然沒辦法百分之一百重現,但是大致如下
主管:「gdb 我要怎麼推廣全公司、加值產品價值」
小小RD:「gdb 只是用在 debug 上的」
請重複 5次以上之對話。
聰明的你應該知道 gdb 是個 debug 工具,而不是一個產品或是副產品。 至於不熟悉的新手,請看完 helper,再提問。不然會被 RD 當笑話來看。
平常寫程式有良好的習慣,如注意 alloc、free,給初值,使用驗證過的函數等,加上幾行 Debug message(s) ,解決 Compile Errors and Warnings,就能處理至少 95%上的問題。
2.1.7. helper_gdb-GCCDebug.md - GCC Debug helper.
會寫 c 程式碼,也要學習相關的 debug 工具。
2.1.8. helper_Python.md - Python helper.
不討論如何撰寫 Python 的程式,而是當使用或變動系統的 Python 時,可能發生的問題。
2.1.9. helper_valgrind.md - valgrind helper.
平常寫程式有良好的習慣 ! 再以 valgrind 進行輔助,維持軟體品質。
2.2.1. beeX
beeX is an open source message handler that implements the MCTT protocol.
2.2.2. BlueZX
BlueZX is based on BlueZ (bluez-5.56). You can create a noninteractive daemon easily.
2.2.3. CvsCPPmixer
CvsCPPmixer gives an example how to mix C and C++.
2.2.4. GDBusX
gdbusx provides simple GDBus APIs.
2.2.5. makeXcmakeXmeson
Provide examples for make, cmake, meson and gn.
2.2.6. KconfigX
當編譯系統時,總是會遇到的,如
make menuconfig。
2.2.7. pythonX9
pythonX9 provides simple APIs - class, debug api, queue/stack api, multicast server/client, state machine api, sysinfo api.
2.2.8. RPiP9
RPiP9 把 Raspberry Pi 上常見的模組搜集而成。
2.2.9. utilx9
crontab api, queue api, socket server/client, dbus api, http/SOAP/ONVIF client, json api, led api, multicast server/client, ping api, cpu and proc info, ssh client/tunnel, thread api, tty read/writ…
敢自稱“雲端工程師”,為什麼還跑過來問我 SSH 怎麼用?scp 怎麼用?crontab 怎麼用?web server 怎麼架?甚至 shell script 怎麼寫?
因為身為一位資深的 Embedded Engineer (非只專注特定 MCU)就是什麼都要懂,不管是系統、網路、串流、協定、程式等。不然怎麼有效的安排資源,甚至多方面合作。
如果你認為一位認真的Embedded Engineer只會處理一個小小設備,那就大錯特錯!因為 Embedded Engineer 是來創造宇宙星系,而雲端工程師卻是遊走在宇宙間。
不過這邊還是語重心長的告知新同學,要賺大錢請往雲端工程師前進!但是平日要對資深的 Embedded Engineer 客氣點,因為你將可能需要他們的協助。
3.1.1. helper_EmbeddedEngineer.md
當初花了數個周末在家苦思,這一生學到了什麼,走過了什麼路,彙整入八個星期內,不只是想引領一位軟體工程師進嵌入式系統內;另一方面也想從中識別該員的能力。
隔天帶著興奮之情與同事們討論可行性,馬上被打槍「你這個太難了」、「你沒有限制編輯軟體,新人做錯了怎麼辦」,之後還有一些奇怪的想法,我也不想記了。頓時認清不用再跟他們說是非,做回我自己吧!
「你這個太難了」,這個還可以討論,是否更改內容或時間增長。
「你沒有限制編輯軟體…」聽到這個我是馬上“黃人”問號(現在不能說黑人問號,我講我自己總行吧)?身為一位嵌入式工程師,有的人用 vi,有的人用 Notepad++ 等。一套編輯軟體只要用的順手就好,那裏來的問題。有可能發生問題的部分常在開發 MCU,可我們的主力是 Linux 環境也。
3.1.2. helper_ESPandFreeRTOS.md - ESP and FreeRTOS helper.
3.1.3. helper_UnifySDKandGeckoSDK.md - UnifySDK and GeckoSDK helper.
研究中…
3.2.1. CrossCompilationX
討論 Cross Compilation 和相關應用,因為東西很多,特別獨立出來,
A. helper_Buildroot-RaspberryPi3.md - Buildroot-RaspberryPi3 helper
B. helper_OpenWrt-RaspberryPi3.md - helper_OpenWrt-RaspberryPi3 helper
3.2.2. cookerX
cookerX is depend on Yocto Cooker.
A. helper_Yocto.md - helper_Yocto helper
B. helper_Yocto-NXP-8MMINILPD4-EVKB.md - NXP-8MMINI helper
C. helper_Yocto-meta-HomeAssistant.md - meta-HomeAssistant helper
D. helper_Yocto-meta-NXP-Matter.md - meta-NXP-Matter helper
E. helper_Yocto-meta-RAUC.md - meta-RAUC helper
4.1.1. helper_AmazonX9.md - Amazon(AWS) helper.
Please read this md at first !!! It is very important.
4.1.2. helper_AmazonChime.md - Amazon Chime helper.
研究中…
4.1.3. helper_AmazonConnect.md - Amazon Connect helper.
擱置中…
4.1.4. helper_AmazonEC2.md - Amazon EC2 helper.
一般都是用 Console 設定即可。
4.1.5. helper_AmazonECS.md - Amazon ECS helper.
拜讀 Developer Guide 和網路文章後,還是完全沒有進展,這篇或許可以讓你有成就感。
此篇只是讓大家起個頭,了解運作後,再針對個人需求進行發展。
A fast and flexible NoSQL database service for any scale
用就對了!請見 helper_AWS-CLI.md。
4.1.6. helper_AmazonKinesisVideoStreams.md - Amazon Kinesis Video Streams helper.
已經應用WebRTC。
4.1.7. helper_AmazonLex.md - Amazon Lex helper.
擱置中…
Store and retrieve any amount of data from anywhere
用就對了!請見 helper_AWS-CLI.md。
4.1.9. helper_AVS-Device-SDK.md - AVS-Device-SDK helper.
已在 Raspberry PI4 和 ubuntu 上實作。
4.1.10. helper_AWS-CLI.md - AWS-CLI helper.
提供 command line 的方式與 Amazon Service 對接。常用 DynamoDB 和 S3。
4.1.11. helper_AWS-FreePBX.md - FreePBX Server on AWS helper.
目前照著網路大作操作後,還是失敗收場,希望有成功之士能告知一二。
4.1.12. helper_AWS-IAM.md - AWS-IAM helper.
就是一般使用者;很簡單的介紹,如安裝完 ubuntu 後會先建立 administrator,除 administrator 外就是 IAM。
AWS 的手冊常把事情複雜化,而且不使用生活化的名稱來命名,讓人看文件看的很吃力。
4.1.13. helper_AWS-Lambda.md - AWS-Lambda helper.
就是把你的程式碼放在雲端執行。你不用管主機是 Linux, win10 or mac OS,也不用管 CPU 等級,RAM 多大等。相關實作請參考 LambdaHello。
4.1.14. helper_AWS-SDK.md - AWS-SDK helper.
提供一個 API 方式與 Amazon Service 對接。已實作部分請參考 awsX9。
4.2.1. awsP9
awsP9 is an api of AWS SDK (Boto3).
4.2.2. awsX9
awsX9 is an api of AWS SDK (C++).
4.2.3. LambdaHello
It will only tell you how to publish the program to Lambda, invoke your application on Lambda or run on local.
5.1.1. helper_RetroPie.md - RetroPie helper.
RetroPie 是一個基於 Linux 的開源軟體套件,專為 Raspberry Pi(樹莓派)單板電腦設計,用於將其轉變為復古遊戲模擬器。它整合了 EmulationStation 前端界面與 RetroArch 模擬器,支援超過 80 種舊遊戲平台(如 NES、PlayStation、大型電玩等),讓用戶能輕鬆 DIY 懷舊遊戲機。
Created and designed by Lanka Hsu.
HelperX is available under the BSD-3-Clause license. See the LICENSE file for more info.