W14 直播檢討


Posted by Christy on 2021-09-23

Q1: 老師可以講一下物件導向的多型性跟五大原則(單一職責原則,開放封閉原則,里氏替換原則,依賴倒置原則,介面隔離原則)嗎,還有目前了解這些的必要性

A1: 不太熟物件導向,只回答了第一、二個,其他的不太確定,當時回答了一些對扣的理解,面試可能會被問到,但答不出來可能還好。

除非你寫 Angular,不然不太會碰到物件導向。

等 w20 再來複習物件導向,單一職責原則: 一個函式做一件事就好;開放封閉原則: 分成 private, public and protected

Q2: 還可以說一下物件導向跟程式導向的區別?方便舉一些簡單例子嗎

A2: PDO vs MySQLi,PDO 是很物件導向的東西,是 PHP 連接資料庫的介面

Q3: 系統設計是不是算偏後端?這樣是不是有一定經驗工程師其實大概都有全端的能力?

A3: 對,很後端;不一定。

Q4: 平常下載 node 上面的套件都不用花錢,想裝幾個就裝幾個,想問 node 套件的開發者怎麼賺錢?還是只能賺個名聲?

A4: 興趣使然,沒有賺錢。Vue 的作者就是全職維護,有接受捐款;或者被大公司用的話,就會有贊助。

Q5: 當引入不同的 CSS ,e.g. normalize.css、bootstrap與寫在 style 標籤裡面的 CSS,而造成樣式蓋來蓋去,這樣比較好的解決做法是什麼呢?

A5: 直接蓋過 normalize.css 沒關係,所以他放第一個;不應該寫 style 標籤裡面的 CSS;bootstrap 是特例,例如 d-flex 用的是 functional css

Q6: 既然都說盡量使用 https,那 http 目前使用的場合為何?

A6: 沒有人在用 http,除非你拿不到憑證

Q7: 這幾週內容偏後端,如果對後端有興趣,有什麼建議的學習路徑嗎?

A7: 問後端的助教必較清楚,可以先把課程裡面的修完,把系統架構、部署、MySQL 弄熟;然後再來問老師。

Q8: 從第四期官網中學到了很多 CSS 預處理器的用法,感恩學姊讚嘆學姊。不過還是很好奇在使用 @mixin 時,看到 @include font-size(16px)@include font-size(24px),為什麼不直接使用 font-size:16px or fon-size:24px 呢? (edited)

A8: 方便處理 RWD 的東西

Q9: 從 main.scss 可以發現全部樣式都是用 @import 的方法引入進來,大部分大型專案的實作也是如此嗎?

A9: 不確定,基本上沒有碰過用 scss 的專案,之後會學的 React 會有另一個寫法;根據之前的實作,老師猜應該是。

Q10: AWS 的security group和 Linux 內建的 ufw 差在哪裡? 如果主機同時用這兩個,算是雙層防火牆嗎?

A10: AWS 的 security group 是 VPS 廠商提供的防火牆,不太確定背後運作模式,兩個選用一個就好,規則都設一樣的,所以兩個都用不會比較安全。

Q11: 老師可以在講解一次 CSRF 的防範方法:Double Submit Cookie & SameSite cookie 嗎? Client 端生成的 Double Submit Cookie,還是有點不懂何謂「改由 Client 端生成 csrf token」

A11: 防範 CSRF 有兩個辦法:Double Submit Cookie & SameSite cookie

這個攻擊成立的前提是,在 A 網站發 req 給 B 網站時,要把 cookie一起帶上去,因此設置 SameSite 屬性可以防止這個攻擊(不同網址不會自動帶cookie)。

Double Submit Cookie: 除了 cookie 裡面會自動帶的 token 以外,假設是一個發表文章的網站,發表文章時,除了標題、內容以外,再多帶一個 csrf_token,這樣在發 req 的時候,cookie 裡面除了原本的 token 以外,也會有自定義的 csrf_token,假設這兩個 token 都是一樣的,那就表示是同一個網站發送的 req。

攻擊網頁裡面的表單如果把這個 token 存在 input 裡,攻擊者被不知道到底 csrf_token 是多少,因此無法跟 cookie 裡面的資訊配對,所以無法攻擊成功。

Q12: 虛擬主機設定好後,把 conn.php 帳號密碼設定好,沒有多做其他設定,丟進去虛擬主機,就連上 mysql 了。想請問老師,會這樣是因為虛擬機的 3306 port 預設留給 mysql 用,然後 conn.php 在沒另外設定的情況下也是連 3306 port ,所以造成這個很自然地連上線的結果嗎@@?

A12: 算是,MySQL 預設的 port 就是 3306,所以不寫也連的到。

Q13: 想問密碼雜湊在實作上比較會偏向前端做還是後端做呢?

A13: 後端,因為前端來的東西都不可以信任。前後端都做沒有意義,因為後端還是要再檢查一次。

Q14: 請問現在業界部屬系統大部分都是使用Ubuntu嗎

A14: 大部分都是。

Q15: 關於final project,老師說過目前還未學會現代框架下可以先思考規劃內容跟架構,但目前完全沒有想法,請問老師有什麼方向指引嗎(除了購物網站外)

A15: 可以看最後的建議,可以從自己需要的東西開始,例如筆記管理系統,或者模仿一個喜歡的網站。

Q16: 想問挑戰題的必要性,如果現在在進度上,沒寫挑戰題會影響面試嗎,還是把作業搞得越清楚越好就好

A16: 基本上不會影響面試,但會更加分。把作業搞得越清楚越好非常重要。

Q17: 老師是以「要了解套件或是語法的歷史」,所以才從 css 教起,之後才用 sass/scss 嗎?像是 jQuery ,如果現在很少用到,為什麼還要學 jQuery 呢?

A17: 對,沒錯。jQuery 是一個歷史上很重要的工具,也是一個好用的工具,有可能去工作有機會碰到 jQuery 喔。

Q18: 看到有上期學長姐是跳過某些週數,然後沒做final project(都是放作業為主)最後求職的結果也很不錯,想問老師在做final project vs 加強react js 跟觀念題,這兩個方向選擇上有什麼想法(因求職有期限 自己覺得兼顧滿難的

A18: 這兩個其實可以並行,可以一邊投履歷,看結果怎麼樣,如果不夠吸引人,再做 final project。

其實加強作業是非常加分,可以加上「加強react js 跟觀念題」這個兩個方向去實作。

Q19: jQuery逐漸被廢棄的原因是因為前端框架的出現嗎?現在課程進度的程度做 side project 老師會建議用jQ 還是原生

A19: 對,看需求決定。

Q20: 現在業界大部分是 js 跟 html 分離,還是看專案性質或人力決定分離或合併呢

A20: 如果是前後端分離或合併,要看專案。

Q21: 老師覺得以我們出去求職來說,怎樣算是一個不錯的 final project (規模 使用技術 實用性!?)

A21: 主要看規模,太小的東西就不行。把東西都系統化,這種就可以。太常見就沒有吸引人的地方,不見得一定要有實用性。

Q22: 老師 get, post 的差別能夠再詳細說一次嗎,面試好像蠻常考的

A22: get 拿東西,紀錄會留在歷史紀錄上。

post: 兩者有瀏覽器跟 server 的限制,但要帶比較多的東西的話,用 POST 比較適合。

Q23: 想問 npx 跟 npm 的差別

A23: npx 執行指令而已。

Q24: 不太懂 W14 自我檢討提到的虛擬空間的意思,請問是甚麼意思

A24: 不能安裝要放什麼東西,只是一個 FTP 放檔案的空間。

Q25: 老師如果 w14 想弄 https 的話,可以簡單的提示一下有哪些需要注意的地方嗎?

A25: 最簡單的方式可以用 Cloudflare,要自己弄的話會麻煩很多。

Q26: 在安裝一些套件的時候安裝的很混亂,要怎麼檢視自己成功安裝了哪些呢?(例如 sass webpack..等)安裝一陣子都會忘記有安裝什麼...

A26: 如果是本地的話,看 node_modules 裡面那一堆資料夾。

Q27: 部署時間到了!

有提到遠端機器 Iaas

AWS 服務介紹:

  1. Compute 虛擬主機 Lambda: Serverless,不是沒有 Server,而是說不用維護 Server。W8 的 API 就是用這個建的!是按照執行時間計費的。

  2. Storage 裡面的 S3: 一個存檔案的地方,像是 dropbox,沒有分地區。

  3. Database 資料庫裡的 RDS: 把最基礎的設定都弄好了,不用自己裝 MySQL,只要設定好,就會有一個網址、使用者名稱跟密碼。

  4. Networking & Content Delivery 裡的 Route 53

部署實戰

  1. AMI: 類似自己燒錄的光碟映像檔,ISO 檔案之類的,幫你把裡面的東西先建好,複製貼上就好了。

  2. 選 ubuntu Server,也有其他客製化的系統。

  3. Instance Type 機器規格,t2.nano 是 amazon 分類的級別。

  4. VPC: 有些服務不想對外,把 DB 跟主機加到同一台 VPC 上面,所以內網可以溝通,但外部連不進來。

  5. subnet 的 AZ: availability zone 類似哪一個機房的概念。

  6. IAM role: 角色權限,例如公司內部不同部門有不同權限。

  7. Security Group: 防火牆,22 ssh 必開

  8. 彈性 ip: 類似動態 ip,例如爬蟲會規定不可以爬太多資料,所以可以從不同地方去爬,不是很確定。

  9. 私有 ip: 假設 VPC 裡面有兩台主機,用私有 ip 可以直接連且必較快,public ip 會繞出外面在連進來。

  10. 連進主機

  11. 錯誤訊息:unprotected private key file,可以用 chmod 400 加上金鑰路徑,改檔案權限

  12. $ top: 工作管理員,可以看主機狀況,按 q 離開

  13. 更新 ubuntu 系統

  14. 裝 LAMP 之前,先裝 Tasksel, apt 類似 npm

  15. 連進 MySQL: $ sudo mysql -u root mysql 管理員連進 MySQL 進一個叫 mysql 的 DB

  16. phpmyadmin 要裝不裝都可以

  17. 允許遠端也可以連到這個帳號,下次我要選 y

  18. 01:42:20 附近有解決外部連線進 mysql 的問題

  19. 用 PHP 會有 short tag 的問題,可以去改 PHP Config 檔設定

  20. 網域:把名稱伺服器設成 cloudflare 的

  21. FileZilla

  22. 系統設計:任何事都是為了要避免單點故障 SPOF 這件事。










Related Posts

Command Line 基本指令

Command Line 基本指令

關於 React 小書:ComponentWillMount, ComponentDidMount, ComponentWillUnmount

關於 React 小書:ComponentWillMount, ComponentDidMount, ComponentWillUnmount

用 PHP 做出 API

用 PHP 做出 API


Comments