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)做順!
1.1.1. helper_ArtificialIntelligence.md - ArtificialIntelligence helper.
我完全不懂 AI (Artificial Intelligence),基本上你沒辦法從我這邊學到什麼,說是蹭 AI 也行。
只是把生活中的發想記錄下來。
1.1.2. helper_BackupAndRAID.md - Backup and RAID helper.
人們應該是追求資料的健全保存後,再取得效能上的平衡。
而一般人細究 RAID 是沒有意義,要認知自身的需求,評估選擇有利的應用。
1.1.3. helper_BLE.md - BLE helper.
BLE 的水很深,這邊只有概要,並且用不同的觀點去分析。
如果你是要實作的話,文件是幫不了你的!請直接找Opensource,而這裏有BlueZX 或許能幫助到你。
1.1.4. helper_Docker.md - docker helper.
docker is useful ? Please make sure that you aren't a low-level programmer or embedded engineer.
1.1.5. helper_Email.md - Email helper.
我的第一份工作就是寫一套電子報系統,當時的網路速度說有多慢就有多慢(記得不是很清楚,ADSL好像還沒有開始呢),當要發送電子報時,還要選擇冷門時段,不然整個銀行系統都要停擺了。
1.1.6. helper_GitHub.md - GitHub helper.
善用免費 git 空間。
1.1.7. helper_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 就是一個很不錯的方法。
1.1.8. helper_GStreamer.md - GStreamer helper.
1.1.9. helper_IoT.md - IoT helper.
IoT 的概念很簡單,不要被一些 “協定” 約束你的想像。也不要被主管 or 業務員的話語所迷惑。只要清楚基本概念既可。
1.1.10. helper_jq.md - jq helper.
JSON 是目前常用的資料格式,jq 提供於簡單的命令列下查詢、編輯,抓取所需之資訊,導入另一個程式使用。
1.1.11. helper_linux.md - linux helper.
某人說「我是雲端工程師,從來沒有學過什麼 linux,為什麼還要去學?」或許他的話沒有錯,出社會後,你能在工作上得心應心,其實就可以了。
1.1.12. helper_macOS.md - macOS helper.
1.1.13. helper_MarkDown.md - Markdown helper.
身為一個人,建議善用 Markdown 記錄相關筆記,少用 doc。
1.1.14. helper_Matter.md - Matter helper.
Matter(以前稱為 Project CHIP,Connected Home over IP)是一種物聯網(IoT)通信協議和平台,致力於促進智能家居設備之間的互操作性和互聯性。
1.1.15. helper_MultimediaMuxAndDemux.md - Multimedia Mux and Demux helper
除了用手機看 YouTube 外,有些基本常識還是補足一下。
1.1.16. helper_MQTT.md - MQTT helper.
use mosquitto.
1.1.17. helper_ONVIF.md - ONVIF helper.
1.1.18. helper_OpenSSL.md - OpenSSL helper.
1.1.19. helper_RaspberryPiOS.md - Raspberry Pi OS helper.
1.1.20. helper_SQLite.md - SQLite helper.
1.1.21. helper_SIPandAsterisk.md - SIP and Asterisk helper.
如果你選擇 FreePBX 或其它 UI 進行安裝設定前,不妨看看這裏的指引。
1.1.22. helper_SVNvsGit.md - SVN vs. Git helper.
SVN、Git 都是很好的版本控管工具,當然市面上不止這兩種。只是取得一個方便的即可。
曾經有人說:「SVN 的速度比 Git 慢,所以不會去用 SVN」;至於是不是如此,雖然心中已有答案,也不想當場有所爭執。因為版本控管是管東西,而不是管速度的。
1.1.23. helper_vi.md - vi/vim helper.
1.1.24. helper_VirtualBox-x86_64-Ubuntu20.04onWin10 - VirtualBox helper.
Host: win10
Client: x86_64, Ubuntu20.04
2.1.1. helper_SoftwareEnginnerX9.md - Software Engineer helper.
Please read this md at first !!! It is very important.
2.1.2. helper_SDKAndCodebase.md - SDK and 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_DBus.md - dbus helper.
本人是用 D-Bus low-level API 來進行對接,主要範例請見 utilx9。
這邊要說個小故事,“曾經將相關的 Sample 給了同事後,結果同事能在10幾隻程式裏,用了3種寫法去對接D-Bus,跟我的寫法完全不同,最神奇的事,他一樣用 D-Bus low-level API”。
我並不清楚他為什麼要這樣寫程式,有可能是為了展現他的實力;也有可能是每寫一隻新的程式時,就忘了曾經寫過的方式,再次詢問 google 大神而得到的結果。
所以請大家試著上網查尋看看。
2.1.5. helper_GCCDebugAndgdb.md - GCC and gdb helper.
這邊又有個小故事,雖然沒辦法百分之一百重現,但是大致如下
主管:「gdb 我要怎麼推廣全公司、加值產品價值」
小小RD:「gdb 只是用在 debug 上的」
請重複 5次以上之對話。
聰明的你應該知道 gdb 是個 debug 工具,而不是一個產品或是副產品。 至於不熟悉的新手,請看完 helper,再提問。不然會被 RD 當笑話來看。
平常寫程式有良好的習慣,如注意 alloc、free,給初值,使用驗證過的函數等,加上幾行 Debug message(s) ,解決 Compile Errors and Warnings,就能處理至少 95%上的問題。
2.1.6. helper_Python.md - Python helper.
不討論如何撰寫 Python 的程式,而是當使用或變動系統的 Python 時,可能發生的問題。
2.1.7. 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. pythonX9
pythonX9 provides simple APIs - class, debug api, queue/stack api, multicast server/client, state machine api, sysinfo api.
2.2.7. RPiP9
RPiP9 把 Raspberry Pi 上常見的模組搜集而成。
2.2.8. usbHunter
usbHunter is an application that checks usb plugged and unplugged.
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_FreeRTOS.md - 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
C. helper_Yocto.md - helper_Yocto helper
D. helper_Yocto-RaspberryPi3.md - helper_Yocto-RaspberryPi3 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 設定即可。
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.
Created and designed by Lanka Hsu.
HelperX is available under the BSD-3-Clause license. See the LICENSE file for more info.