【#程式教學】「想學會寫程式,必先練此功!」
新手必備✨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 的最佳貼文
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 會幫忙做的事情。
有興趣的別忘了閱讀留言區
linux系統推薦 在 緯育TibaMe Facebook 的精選貼文
▪Wireshark網路封包解析實務班 (真人直播)▪
第21期🎯 6/19(六)確認開班囉🎊~~~~~~~
還沒有報名的同學趕緊報名,不要錯過了
詳細課程內容👉https://www.tibame.com/offline/wireshark
-
兩天的課程6/19(六)、6/20(日),
老師手把手帶你實作,帶你從入門到專業💪💪
【上過的都說仔細、都說讚】
輕鬆遊走在Windows、Apple macIOS或各Linux系統中。
-
這堂課推薦給這樣的您
正在學習TCP/IP網路協定或有興趣者。
從事資訊網路管理相關人員。
對窺探網路封包有興趣者。
對網路安全與攻擊有興趣者。
-
掌握了Wireshark神器🤜🤛
再棘手的網路問題都可以迎刃而解~
-
#封包分析
#全真人直播
#在家就能上課
#超有料講義
linux系統推薦 在 矽谷牛的耕田筆記 Facebook 的最佳貼文
本篇文章是一個技術探討文,探討 Docker 是如何使用硬碟空間以及當維運人員發現空間不足時應該要如何清理系統上的空間。
Docker 的便利使用方式使得開發人員可以非常簡的透過的 Container 的概念來運行各式各樣的應用程式,這中間牽扯包含 Image 的建置,抓取以及透過其產生出一個運行的 Container。
隨者時間愈用愈久,系統內可用的空間也會愈來愈少,這時候可以透過 docker system df 來觀看一下目前系統上的空間資訊,主要包含下列四種類型,而每個類型也會包含目前使用量以及可以回收的量有多少
1. Images
2. Containers
3. Local Volumes
4. Build Cache(只有 docker 18.09 後使用 buildkit 才會有)
當 Contaienr 被創建時, /var/lib/docker 底下會有很多檔案以及資料夾都被創建出來,譬如
- /var/lib/docker/containers/ID (資料夾):如果 container 使用的是預設的 logging driver,則 log 檔案都會以 JSON 的格式存放於這個資料夾底下。
所以要注意,當 contaienr 有太多 log 時,其會透過這個方式影響節點檔案系統的容量
- /var/lid/docker/overlay2 (資料夾): 這邊包含了 containers 本身的 read-write layer 的檔案,大部分 Linux 發行版預設都會使用 overlay2 來管理。此外 contaienr 內如果有存放任何額外檔案於系統中,實際上都會放這節點上的這個資料夾內。
接下來作者透過一個實際的範例,讓一個全新的 contaienr 內透過 dd 指令來產生一些檔案,並且觀察上述資料夾的變化以及 docker system df 的結果,最後介紹 docker prune 以及 docker rm 針對 contaienr 的處理。
關於 image 的部分,除了常規使用的 Image 外,還有
1. Dangling images: 不再被參考使用的 image,譬如 ID/Tag 都是 None 的
這邊可以透過 docker image ls -f dangling=true 的指令
文章後半部分還有介紹 docker volume 以及 build cache 的部分,這篇文章非常推薦大家閱讀,除了基本使用外還會介紹底層 docker 實際上用到的資料夾,有了這些概念未來對於如何清除 docker 環境就會更有概念,知道要刪除哪些資料夾以及為什麼要刪除。
https://betterprogramming.pub/docker-tips-clean-up-your-local-machine-35f370a01a78