iT邦幫忙

2022 iThome 鐵人賽

DAY 1
1
tags: 鐵人賽

前言

在今年9月到職滿一年了,套一句朋友說的工程師悖論,在這個過程中學習越多,越覺得自己不知道的、要學的變得更多了XD

還記得當初在學習之初看到roadmap,真的是兩眼一花,每個字看起來都跟天書差不多,真不知道自己有沒有哪一天可以把這些關鍵字都搞懂呢?

於是,覺得在一年的這個時候,看著roadmap,一邊對照著去整理自己所經驗到的實務工作,一邊在遇到一些其實還是有些模糊的關鍵字,去試著把這個洞稍稍補起來,至少希望在和其他工程師談到這些關鍵字的時候可以明白大家在說什麼吧~

在鐵人賽中有兩個願望,其一當然是希望能完賽,其二也是希望能夠透過產出文章,能夠刺激自己有大量閱讀並整理內化的經驗。

日程安排及說明

就算只是overview,並且將部分知識點做了整合,但BE的知識點還是多到無法在30天內說完,於是這次的鐵人賽,因為是側重我個人的學習為主,對於我個人相對有所了解的部分,會相對快的帶過,並將概要的說明放在此篇序章中,絕非該知識點不夠重要XD。

那就開始前進吧!!!!

文章日程

網際網路 Internet

  • Day 1: 網際網路(internet)是怎麼運作的?
  • Day 2: 超文本傳輸協定(Http)是什麼?
  • Day 3: 瀏覽器(Browser)與他們的產地-瀏覽器是怎麼運作的?
  • Day 4: 自己家的地址自己取-網域(domain) v.s. 網域名稱系統(domain name system)
  • Day 5: 欸黑,我的主機不在我家-託管(hosting)
  • (skip)Basic Frontend Knowledge

包含HTML, CSS, Javascript,號稱前端三劍客,基本上網頁開發是不學不行,但做為後端可以理解個大概就可以。
HTML用來管理網頁的架構,CSS用來管理網頁外貌(顏色、字體大小),JS則用來操作並修改HTML, CSS,所有網頁的動態變化,幾乎都是用JS來完成的。

參考內容:
Day02-網頁三兄弟:HTML、CSS、JavaScript

OS and general knowledge

  • (skip)Terminal Usage and basic terminal command
  1. 終端terminal-原本是指用來與主機互動的裝置,但在現在通常指的是純文字命令式介面。
  2. 常用指令
    • grep: 文本關鍵字搜尋,並列印行
    • awk: 文本逐行分析; 與grep搭配使用極佳
    • sed: 文本修改
    • lsof: 查看行程開啟使用檔案的相關訊息; 可以指定user, 目錄及其子目錄, 檔案。
    • curl vs wget: 下載檔案專用,兩者的差異,curl優點在於支援較多協議、較多作業系統,wget則是可以遞迴下載
    • tail: 印出文本最底的資料
    • head: 印出文本最頂的資料
    • less: more的增強版,我覺得看起來像是vi這樣的文本編輯程式
    • find: 尋找檔案,非常適合和其他命令共同使用,
    • ssh: 經過加密過的遠程連線,建議使用~/.ssh/config來設定連線參數
    • kill: 刪除指定行程
    • killall: 前面kill需要PID也就是ProcessID,使用killall可以僅輸入行程名稱
    • xargs: 可以作為其他命令傳遞參數的工具,例如find + xargs + grep就是很有用的方式可以指定特定檔案搜尋特定內容,當然,再加上awk就可以對輸出的列再做篩選了~
  3. 管道(pipe): 這是一個使用命令列很重要的方式,意旨將某個cli的輸出作為另外一個指令的輸入,前列常用指令提到的組合技也通常是以pipe 來使用。
  • Day 6: 作業系統(Operating System/OS) Overview(上)
  • Day 7: 作業系統(Operating System/OS) Overview(下)
  • Day 8: 行程(Process)、執行緒(thread)傻傻分不清楚(上)-行程管理
  • Day 9: 行程(Process)、執行緒(thread)傻傻分不清楚(下)-執行緒管理
  • Day 10: 行程(Process)、執行緒(thread)傻傻分不清楚(下)-並發(concurrency)
  • Day 11: 行程間通訊(Interprocess Communication)
  • Day 12: 電腦與外界的通訊方式-輸入/輸出(I/O)管理
  • Day 13: Unix的標準-POSIX Basics
  • (skip)Computer networking

(skip)main language

據我的經驗以及了解,選擇哪一種語言都是蠻ok的,好好了解一種語言後,學習其他語言的成本也會開始降低,且所有語言的基礎都差不多,各自相異的地方通常也就是該語言的特性,也會到學習的後期,開始建構專案的時候會比較明顯感覺到差異。

因為我本身是學JS並且在node.js這個runtime上運行,所以本系列若有需要程式碼範例的部份的話,也都會以這個語言作範例。

(skip)版本控制version control

version control其實有不少solution,大致分為中央式系統與分散式系統,但現在幾乎都是git的天下了XD

以下也提供一些我覺得蠻適合初步跟著學習的文章,但要我說,還是邊做專案邊來查找資料最快,也只有在合作的時候才會出現出乎預料的問題需要解決跟克服。
30天精通Git版本控管

小結

每一天的內容其實都大到可以獨立作為30天細細講解了,強行把這些內容併到一天實在是非常心虛,只能不斷提醒自己,目的是希望建立一些overview,讓未來在實務上遇到這些知識點的時候可以在先有一些認識的狀況,不會那麼小白XD


下一篇
序及目錄(下)
系列文
看Roadmap學backend overview30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言