演習課 WEEK12


Posted by s103071049 on 2021-07-21

P1 你知道什麼是 SPA
P1 你知道怎麼樣用 PHP 自己寫出 API
P1 你知道如何在前端與自己開的 API 串接
P1 你知道在 server 與在 client render 的差別
P1 你知道 jQuery 是做什麼的
P1 你知道 jQuery 與 vanilla js 的差別
P1 你知道什麼是 Bootstrap
P2 你知道 Bootstrap 原理及如何應用


Q1 : 熟悉Bootstrap在前端業界來說是必備技能嗎 ?
A1 : 不是,比起必備應該是快速上手新的工具。


Q2 : 在做 week11 hw 的時候,因為 bug 建立了重複的 帳號密碼,全部都是相同的,可是資料庫中 hash 過後的 password 為什麼會長的不一樣,不是應該一樣嗎?
A2 : 加鹽 !
根據 HASH 的特性,相同的 input HASH 過後會是相同的結果,我們也用了這個特性去驗證密碼是否相同。因為演算法、鹽都包在 hash 裡面,所以要驗證一定要用 password_verify()。

參考資料 :
現代PHP PASSWORD_HASH 雜湊加密採用隨機SALT 使用方式


Q3 : 認為 junior 程度必須涵蓋哪些?
A3 : 涵蓋課綱、扎實的網頁學習路線


Q4 : 真正工作時,從零到一寫 code 的比例多嗎?感覺許多地方用套件的效率大很多,而有些性質又偏維護,所以實際上應該是除錯佔大部分?
A4 : 除錯佔大部分、維護現有的功能、看 CODE、架 CODE 的功力很重要


Q5 : 工具要不要全域下載完全看個人習慣使用嗎?上網查是說怕污染環境,什麼情況下會污染環境~?
A5 : 不一定看個人習慣使用,要思考是否會在不同地方用不同版本的工具。
全域下載只能裝一個版本,如果每個資料夾都裝一份,就不會汙染外面的環境,外面打 webpack 他就找不到任何東西,因為他沒有裝。如果是全域裝,你在資料夾裡面打 webpack 你以為用到的是資料夾裡的 webpack 但事實上用到的是外面的 webpack,這樣就會有一些除錯問題要解決,這就是污染環境的狀況。


Q6 : 老師請問第十一周的 BLOG 作業檢討中對於經由 GET 得到的 id 再使用 intval() 處理的用意是什麼? 也是為了資訊安全嗎?
A6 : 這是一個好習慣,與資安無關
資料庫存的文章 ID 是數字,用 $_GET()$_POST() 的東西一定是字串或陣列,要知道你每個資料的型態,將他轉成你想要的不然某些時刻會出問題!

3 + '2' = 32
3 + 2 = 5

Q7 : 想請問老師~在目前有跟上課程進度狀況下,若之後求職薪資以超過45k為目標,於跟課上老師覺得我們可以往哪方面做努力 謝謝老師
A7 : final project、課程簡答題 (esp 16 週)、挑戰題、觀念


Q8 : 使用 gulp webpack 這些工具,是每一個有用到的專案資料夾都要分別安裝並設定嗎 ?
A8 : 對
因為版本問題,所以會建議每個資料夾各別安裝。
好處一、不會汙染全域的東西
好處二、版本之間問題較好解決
好處三、如果裝在資料夾內,在 git 上他就只要 npm install


Q9 : jQuery ajax 的錯誤處理上有哪些是比較需要做的
A9 : 原本 XHR 要處理那些錯誤、jQuery 就要處理那些

jQuery ajax() 成功錯誤 VS .done() 。fail()


Q10 : 請問el.childNodes el.children 的區別?
A10 : nodetype 的差別
Polyfill 不支援的功能就自己用其他功能寫出來。
用 childNodes 找到的是所有 nodetype、children 拿到的是 nodetype === 1 (表示元素 element 的節點)


Q11 : 可以請老師講一下 編碼、加密、雜湊的差異跟運用嗎 ?
A11 :

密碼三兄弟,各自目的

加密:隱藏內容
雜湊:辨識原始內容是否一致
編碼:轉換內容 (ex: base64)。為了轉換成另一種相同格式,才能保留意思但不破壞一些東西

加密 <=> 解密
加密的檔案透過 KEY 還原內容

======

雜湊 (一樣的 INPUT 產生一樣的 OUTPUT)
無法逆推,應用:密碼
hash function N % 10 
(碰撞)
123 % 10 = 3
1003 % 10 = 3
======

編碼:沒有任何 key 的概念,只是換一種表達方式

舉例、
瀏覽器有兩個 function
btoa 將東西轉成 base64 (base64 是用 64 個字元表示資料,一個字元對應 6bit 的資料。)
atob 將 base64 轉回來

base 64 可以將任何 binary 檔案變成文字 (week13 DATA URI)

encodeURLComponent
舉例、id ='1&a=23'
https://post?id=1&a=23 但我不是想表達兩個參數的意思,所以需要透過編碼轉換
經過 URL encode 
https://post?id=1%26a%3D23

Q12 : 很常在程式碼中看到 this. 像是request.onload = function() {if (this.status >= 200 && this.status < 400) {var resp = this.response;}}; 裡面的 this. 是什麼意思呢?

A12 : 參照 16 週 (你把這個東西放在誰身上,this 就是誰)

button.addEventListener('click', function() {
  this === button
})

request.onload = function() {
if (this.status >= 200 && this.status < 400) {
  this === request
  var resp = this.response;}
};

Q13 : 有看過前後端分離的文章了,但對前端 MVC 跟後端 MVC 的差異跟 MVC 還是有點不清楚,可以再請老師講解一次嗎?
A13 : 參照 20 週、21 週、22 週


Q14 : 那通常我們要把內容丟到網址上是不是就要先 encodeURL,使用 $_GET['id'] 才不會出錯?
A14 : 沒錯 ! 除非很確定東西不會有干擾 url 的參數,ex:= &



#note







Related Posts

Git 版本控制入門(2)- branch

Git 版本控制入門(2)- branch

在陣列中找出重複與不重複的元素

在陣列中找出重複與不重複的元素

一起來玩 OSRF 的 TensorFlow Object Detector

一起來玩 OSRF 的 TensorFlow Object Detector


Comments