【#程式教學】「想學會寫程式,必先練此功!」
新手必備✨C語言懶人包✨
大家千呼萬喚的C語言懶人包來啦🤟🏻一起看下去!!!!
1️⃣C語言:入門基本功💪🏻
C語言是個超~強大的程式語言,C語言靈活高效的運算和豐富的功能性,以及可以跨平台使用的特點,成為了近30年來用途最為廣泛的語言。...
【#程式教學】「想學會寫程式,必先練此功!」
新手必備✨C語言懶人包✨
大家千呼萬喚的C語言懶人包來啦🤟🏻一起看下去!!!!
1️⃣C語言:入門基本功💪🏻
C語言是個超~強大的程式語言,C語言靈活高效的運算和豐富的功能性,以及可以跨平台使用的特點,成為了近30年來用途最為廣泛的語言。
C語言最常使用在作業系統的編譯器中,由於它擅長處理低階語言,也常常被當作設備和軟體的橋樑,如果你想成為厲害的作業系統開發者,就學C語言吧!
2️⃣C++ :實用程度高🙌🏻
C++ 擁有C語言沒有的「物件導向設計」,讓C++比C語言更容易學習🧰
由於物件導向帶來的方便性,且承襲C語言的優點及特性,使得C++常常用來撰寫電腦的軟體,常見的Office系列軟體就是以C++撰寫而成的。
3️⃣C# :初學者的首選👆🏻
C# 是全物件導向設計的高階語言,比起C和C++更容易上手,是不少初學者的首選❣️❣️❣️
✔️以程式開發來說,C++的應用多於C#
✔️以網頁設計來說,C#則大大勝出💓
4️⃣學習的容易性ℹ️
學習的容易性是C#>C++>C
但應用的範圍是C>C++>C#;C語言最常應用在作業系統和韌體的開發及維護,C++是常應用於電腦軟體的開發及維護,而C#則是應用於網頁撰寫及架設居多😚
5️⃣善用 Compiler/IDE 軟體ℹ️
如果照著別人的範例打一次,一開始可能會有漏打的可能。
注意程式錯誤的地方,這些IDE軟體會透露,現在的IDE做得都很人性化,推薦新手可以使用 Visual Studio, Dev-C++, Code::Blocks 這幾個 IDE 來開發,都有不錯的除錯功能 (沒提到的IDE不代表沒有),進而學習如何看軟體給的錯誤(警告)訊息,去抓出程式碼中有問題的地方。
這點很重要,沒有一個工程師是只會 Coding 而不會 Trace Code, Debug 的😌
6️⃣善用google 搜尋引擎🔍
人類最偉大的發明之一 : google 搜尋引擎!
如果遇到不懂的觀念,請先 google 找資料,其他人可能都已經先遇過你的問題❗️如果遇到錯誤,最簡單的方法就是把錯誤的訊息直接貼上 Google,或是到 Stack Overflow 查詢。
至於範例程式碼,如果 google 用得夠強,也不排斥英文的話,事實上也幾乎都找得到你要的東西。而一些函數不會用,那可以上 " C++ reference" 、" C library referenct"、"MSDN" 查這些函數的說明,運氣好一點甚至可以到 GitHub 找到完整的專案可以參考👨🏻💻
7️⃣學會使用 Linux🙆🏻♂️
目前C語言相容於各種平台,但如果你今天要運行大型專案程式,一定需要一台伺服器,而伺服器的作業系統通常都是 Linux,而且這才是C語言最基本的環境,所以學習 Linux 指令絕對是必備技能之一!
如果要練習 Linux,最簡單的方法就是裝一台 VM 虛擬機,上面的 OS 安裝 Ubuntu 或是 CentOS,這兩個 OS 是比較廣泛應用的,接著就常常使用,自然而然就熟悉了。
8️⃣線上學習平台👨🏻💻
網路上的資源太瑣碎,我推薦你找幾堂完整的線上課程來學習,可以大幅減少摸索的時間⌚️
至於有哪些平台,可以上 Google 搜尋 🔍【程式語言推薦】2019年如何學程式?5個線上學習資源推薦 這是阿璋之前整理的文章。
想知道更多?
【歡迎追蹤Johntool-工具王阿璋 @johntooltw ↓↓↓】
facebook► https://www.facebook.com/JohntoolTW/
instagram► https://www.instagram.com/johntooltw/
收到更多 #程式教學 #不務正業工程師 #電腦程式 系列!
linux推薦 在 區塊勢 - 說人話的區塊鏈圖文 Facebook 的最讚貼文
來推薦個技術活動
題目:Hyperledger Meetup Taipei 2021
時間:9 / 30(四)19:00 - 21:00
地點:線上活動( https://forms.gle/HCVfByxTpm4etgzq5 )
如果你的公司未來可能使用區塊鏈,肯定會遇到要把資料放上 #公有鏈 還是 #聯盟鏈 的問題。前者會遇到的是該使用哪個鏈,後者則是要先選擇架構才來打造自己的鏈。
這場活動就是由 #Linux基金會 和 #國泰金控 共同舉辦,後者用聯盟鏈打造了「環球貿易共享區塊鏈」、「電動車車聯網區塊鏈」,兩個題目都有在區塊勢的 podcast 分享過。
他們藉由這場活動分享自己的開發經驗,推薦技術開發者有空可以報名。
--
👉 用區塊鏈將銀行、海運串起來 ft. 國泰金控環球貿易共享區塊鏈( https://blocktrend.substack.com/p/ep86 )
👉 電動車資料上鏈的用途 ft. 國泰金控、宅電、BSOS( https://blocktrend.substack.com/p/ep70 )
linux推薦 在 矽谷牛的耕田筆記 Facebook 的最佳貼文
ref: https://wiki.bash-hackers.org/howto/redirection_tutorial
本篇是個 Linux 相關的教學文,專注於透過視覺化的方式來教學到底 shell 上常常使用的 >, 2>&1 等差異是什麼。
舉例來說,你能不能清楚的說出下列兩種用法的差異,實際上 fd 到底會怎麼運作?
1. > file 2>&1
2. 2>&1 > file
亦或是某些 shell script 常看到 exec 2>log 到底是什麼意思?
本篇文章解釋得非常清除,透過 /dev/pts 這種 pseudo terminal 為起點,將 0(stdin), 1(stdout), 2(stderr) 三個 fd 給視覺化呈現。
基於這個概念開始探討下列不同指令實際上 fd 會有什麼變化
# Simple Redirections
">" 應該是最為簡單也最廣為人知的用法,command > file 的方式將輸入(stdout)給導入檔案(file)。
那加上數字後會有什麼變化呢? 譬如 command 1>file, command 3>file ?
下一個不能不知的就是 pipe 的概念,透過 pipe 能夠組合出各種指令來解決問題,到底 pipe(|) 的過程中這些 fd 是什麼變化?
# More On File Descriptors
另外一個很常被問到的用法就是,有沒有辦法將 stderr 跟 stdout 一起輸出?
這時候可能就會看到 1>&2 2>&1 等各種答案,那到底這些語法的背後是什麼意思?
非常推薦所有人都仔細閱讀這篇文章重新複習/學習這類型操作的底層變化。
linux推薦 在 矽谷牛的耕田筆記 Facebook 的最佳解答
ref: https://lwn.net/Articles/853637/
如果對 SO_REUSEPORT 這個能夠提供網路服務吞吐量的 socket options 不陌生的話,那這篇文章強烈推薦看看。
本篇文章是從討論開啟 SO_REUSEPORT 這個選項會出現的一些行為以及可能可以怎麼做
最直得看的應該是留言區本身,有很多不同層級的討論,大家最愛講的 Google SRE 人也都出來分享自己的經驗了。
正常情況下,每個 TCP Port 只能被一個 process 給使用來聽取封包,但是對於一些網路重度使用的系統來說,就算讓該 process 將連線給分散到其他的 process 去處理,該 process 依然可能是系統的效能瓶頸。
Linux Kernel 3.9 後引入的 SO_REUSEPORT 參數就是為了解決這個效能問題而來的,這個參數允許多個 Process 同時使用一個 TCP Port,每當底層有一條新的連線請求時, Kernel 會從眾多的候選人之一中挑選一個可用來處理。
這種情況下,網路應用程式就可以專心處理連線工作,然後實務上同時執行多個 Process 即可。底層的 Kernel 會幫忙做連線的負載分配。
當眾多候選 process 其中之一掛掉了(可能是 crash,也有可能是有意的重啟), kernel 會注意到這個候選人要說掰掰,這候選人處理的所有 connection 都會被移除,比較糟糕的是其他待在 Accept-Queue 那些還沒被建立連線的連線請求也會一併被移除。
作者認為 Kernel 應該要有能力可以轉移那些 Accept-queue 中的連線到其他還工作的候選 process 下去處理,這樣使用者/Client 的連線就不會需要處理太多重連的問題。
文章後面都在探討可行的做法以及這個問題可能會導致什麼問題。
留言區滿熱鬧的,譬如說
1. 有人認為 server 重啟的情況實在太少見,有需要為這麽少見的情況導入這麼複雜的修改到 Kernel 中?
a. 有人回答使用 Let's Encrypt 你可能每幾週就要重啟一次。
b. Google SRE 回答其內部因為調整設定的緣由,幾乎無時無刻都需要重啟服務,不過這問題已經從別的層級去處理掉,所以修改 Kernel 對他們的用途不太大。
2. 有人提出 Nginx 本身有 live migration 的功能,可以將 fd 給轉移到其他的 process 去處理。
a. 有人提出這邊談的是 socket/connection 的層級,這些東西都還沒發生到 userspace process 同時也不是 userspace 應用程式可以接觸處理的。
b. 本文探討的是 bind(), accept(), listen() 這類型 function call 之間 kernel 會幫忙做的事情。
有興趣的別忘了閱讀留言區