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 服務介紹:
Compute 虛擬主機 Lambda: Serverless,不是沒有 Server,而是說不用維護 Server。W8 的 API 就是用這個建的!是按照執行時間計費的。
Storage 裡面的 S3: 一個存檔案的地方,像是 dropbox,沒有分地區。
Database 資料庫裡的 RDS: 把最基礎的設定都弄好了,不用自己裝 MySQL,只要設定好,就會有一個網址、使用者名稱跟密碼。
Networking & Content Delivery 裡的 Route 53
部署實戰
AMI: 類似自己燒錄的光碟映像檔,ISO 檔案之類的,幫你把裡面的東西先建好,複製貼上就好了。
選 ubuntu Server,也有其他客製化的系統。
Instance Type 機器規格,t2.nano 是 amazon 分類的級別。
VPC: 有些服務不想對外,把 DB 跟主機加到同一台 VPC 上面,所以內網可以溝通,但外部連不進來。
subnet 的 AZ: availability zone 類似哪一個機房的概念。
IAM role: 角色權限,例如公司內部不同部門有不同權限。
Security Group: 防火牆,22 ssh 必開
彈性 ip: 類似動態 ip,例如爬蟲會規定不可以爬太多資料,所以可以從不同地方去爬,不是很確定。
私有 ip: 假設 VPC 裡面有兩台主機,用私有 ip 可以直接連且必較快,public ip 會繞出外面在連進來。
連進主機
錯誤訊息:unprotected private key file,可以用 chmod 400 加上金鑰路徑,改檔案權限
$ top
: 工作管理員,可以看主機狀況,按 q 離開更新 ubuntu 系統
裝 LAMP 之前,先裝 Tasksel, apt 類似 npm
連進 MySQL:
$ sudo mysql -u root mysql
管理員連進 MySQL 進一個叫 mysql 的 DBphpmyadmin 要裝不裝都可以
允許遠端也可以連到這個帳號,下次我要選 y
01:42:20 附近有解決外部連線進 mysql 的問題
用 PHP 會有 short tag 的問題,可以去改 PHP Config 檔設定
網域:把名稱伺服器設成 cloudflare 的
FileZilla
系統設計:任何事都是為了要避免單點故障 SPOF 這件事。