Session & Cookie 傻傻分不清楚:Session 篇
你知道什麼是 Session 嗎?為什麼需要它?它又是怎麼運作的呢? 今天就來聊聊 Session 吧!
HIHI~😍 如果你是第一次來的話,『Chan-Chan-Dev』是一個專門用簡單的圖文與故事講解網路程式技術的網站。若你也喜歡用這種方式學習的話,歡迎加入 Chan-Chan-Dev Facebook 的粉絲團,在發佈的時候就有比較多機會收到通知喔!😍
身爲一個後端工程師,在學習的過程中一定都會經歷過 2 個關鍵字: Session & Cookie。
也許許多的語言或者是套件已經幫我們完成了 Session 與 Cookie 的功能,我們需要的僅止於知道如何使用他們。然而剛好趁這次的機會來好好瞭解一下他們的使用方式與背後的原理吧。
前情提要這篇是《 Session & Cookie 傻傻分不清楚》的下篇,簡單地介紹了 Session 是什麼與介紹情境。
若錯過上集的朋友,可以請往這邊走: Session & Cookie 傻傻分不清楚:Cookie 篇
在上一集我們有提到,因爲 HTTP 無狀態 的情況下,伺服器無法在這麼多個 HTTP ...
Session & Cookie 傻傻分不清楚:Cookie 篇
你知道什麼是 Cookie 嗎?為什麼需要它?它又是怎麼運作的呢?今天就來聊聊 Cookie 吧!
HIHI~😍 如果你是第一次來的話,『Chan-Chan-Dev』是一個專門用簡單的圖文與故事講解網路程式技術的網站。若你也喜歡用這種方式學習的話,歡迎加入 Chan-Chan-Dev Facebook 的粉絲團,在發佈的時候就有比較多機會收到通知喔!😍
身爲一個後端工程師,在學習的過程中一定都會經歷過 2 個關鍵字: Session & Cookie。
也許許多的語言或者是套件已經幫我們完成了 Session 與 Cookie 的功能,我們需要的僅止於知道如何使用他們。然而剛好趁這次的機會來好好瞭解一下他們的使用方式與背後的原理吧。
前情提要HTTP (Hypertext Transfer Protocol) 協定目前大部分所有的網路溝通的方式都建立在 HTTP 的協定上。至於 HTTP 是什麼呢?今天先不聊這 Part 😆
簡單地解釋一下 HTTP 的最基本運作方式:
使用者 會對 伺服器 發起一個 HTTP 請求 (Request)
伺服器 接到 使用者 ...
架設部落格第一次就上手 Hexo + Github + 自訂網域
HIHI~😍 如果你是第一次來的話,『Chan-Chan-Dev』是一個專門用簡單的圖文與故事講解網路程式技術的網站。若你也喜歡用這種方式學習的話,歡迎加入 Chan-Chan-Dev Facebook 的粉絲團,在發佈的時候就有比較多機會收到通知喔!😍
這篇文章是寫給誰看的呢?
會使用 Git 的工程師 或 對 Git 有一定瞭解的人
瞭解 Markdown 語法怎麼使用
需要架設自己 Blog 且 希望有自己的網域的人
若你已經知道為什麼要寫 Blog 與使用 Hexo 的原因的朋友,可以快轉到 安裝 / 設定 Hexo 囉 😍
為什麼要架設 Blog身爲一個工程師,隨著時間的成長,所需學習的知識日益增加。對於過往的知識都要完美地記得似乎是一個不可能的任務。於是爲自己所學的技能設立一個知識資料庫讓未來的自己可以查詢似乎就變得十分重要了。
架設 Blog 有什麼好處呢?
快速方便地回顧記錄過的知識與遇到的問題的解法
累積屬於自己在技術專業知識品牌
面試時可以作爲加分的作品集項目
選擇 Hexo 的原因在 2021 年架設 Blog 有上千種可行的做法。馬上想到的 ...
儘早 Return 函數:讓 if 邏輯條件判斷不再一層又一層!
HIHI~😍 如果你是第一次來的話,『Chan-Chan-Dev』是一個專門用簡單的圖文與故事講解網路程式技術的網站。若你也喜歡用這種方式學習的話,歡迎加入 Chan-Chan-Dev Facebook 的粉絲團,在發佈的時候就有比較多機會收到通知喔!😍
相信大家在寫程式的過程中,常常會遇到一些需要判斷好幾個不同狀況的時候,例如:表單送出前的驗證。
例如以下有一個類似這樣子的表單:
上面的欄位設定都是爲必須填寫的,所以在讓使用者送出之前,我們就必須要一一地檢查使用者是不是有輸入內容(這邊討論的是不使用套件來做驗證的範圍喔 😆)。
所以我們要檢查以下:
使用者帳號是否有填寫,如果沒有就跳出提示。
使用者 Email 是否有填寫,如果沒有就跳出提示。
使用者 Email 格式是否正確,如果沒有就跳出提示。
使用者密碼是否有填寫,如果沒有就跳出提示。
使用者地址是否有填寫,如果沒有就跳出提示。
使用者聯絡電話是否有填寫,如果沒有就跳出提示。
我們可能會先畫出這樣子的判斷圖
於是乎我們很自然而然就會寫出大概以下的判斷:
12345678910111213141516171 ...
Strategy 設計模式
HIHI~😍 如果你是第一次來的話,『Chan-Chan-Dev』是一個專門用簡單的圖文與故事講解網路程式技術的網站。若你也喜歡用這種方式學習的話,歡迎加入 Chan-Chan-Dev Facebook 的粉絲團,在發佈的時候就有比較多機會收到通知喔!😍
在寫程式的過程中,一定很常遇到需要很多不同狀態而有不同行爲的功能。這樣子例子在生活中其實滿常見的,例如天氣變冷了,我們受到 Natural call 就會不自覺地想要吃火鍋,而天氣變熱了,我們就會覺得吃涼麵比較清爽,明明都是『吃』的行爲,但是卻因爲『氣溫』的狀態不同,就會讓這個『吃』的行爲而有所不同。
所以如果要達到上述的不同狀態有不同的行爲,那條件語句是邏輯判斷的過程中無可避免的必須,但隨著狀態增長,條件語句也會跟着變多,很快地就會來到難以維護的狀態了。所以在狀態很多的情況下,要如何用更少的 if else 更有結構與更有效率地來完成一樣的功能呢? State 設計模式提供了一套棒的解法,讓我們用個小故事來輕鬆地學習如何將 State 設計模式運用在我們日常的開發當中吧 😍
State 設計模式是什麼?State 是 ...
Bridge 設計模式
HIHI~😍 如果你是第一次來的話,『Chan-Chan-Dev』是一個專門用簡單的圖文與故事講解網路程式技術的網站。若你也喜歡用這種方式學習的話,歡迎加入 Chan-Chan-Dev Facebook 的粉絲團,在發佈的時候就有比較多機會收到通知喔!😍
設計模式有很多種,但自己都是處於一知半解,所以在學習的過程也做些筆記與思考,希望幫助自己更能理解用法與使用的時機。
而這次在 Refactor Guru 的學習了 Bridge 的這個設計模式,但以下是我自己掰出來的小情境與筆記,所以我們來看看 Bridge 的設計模式要怎麼使用囉。
不用 Bridge 的設計模式會怎樣?🤔一樣來個情境做起手式,傑西 KeyCode 有限公司的工程師有 John、Mary,他們兩位都會寫 JAVA、PHP、Javascript、Python 的這幾種程式語言。
如果把他們的寫全部的語言全部都列出來,那會得到以下的這幾種 class。
必須要把每一種排列組合列出來
123public interface Developer{ String code();}
12 ...
小故事圖解物件導向的 interface 是什麼?為什麼要 interface?什麼時候要 interface?
HIHI~😍 如果你是第一次來的話,『Chan-Chan-Dev』是一個專門用簡單的圖文與故事講解網路程式技術的網站。若你也喜歡用這種方式學習的話,歡迎加入 Chan-Chan-Dev Facebook 的粉絲團,在發佈的時候就有比較多機會收到通知喔!😍
剛開始在學習物件導向的時候,學習了 class、object、繼承、封裝等等的使用方式,但是在這之中最無法參透的是:
為什麼需要 interface?
interface 翻譯成中文是『介面』,程式語言中的物件跟『介面』看字面上的意思感覺好像是八桿子打不著的關係,所以一直無法理解 interface 的用途,所以不得不說自已也遇過不知道什麼時候需要 interface,或者是只是覺得用了很帥才用,所以你問那時候的我為什麼要用,我也只能回答你:「因爲看大家都這樣子用,感覺這樣用很帥阿。」
所以今天我們就來聊聊為什麼需要 interface?什麼時候要使用 interface?
總結
interface 就像是證照或職位,誰持有這個證照或職位後誰就要有能力執行這張證照或職位要求的技能。
例如說:如果我們看到醫生,先還沒看 ...
Single Responsibility Principle(單一職責)
HIHI~😍 如果你是第一次來的話,『Chan-Chan-Dev』是一個專門用簡單的圖文與故事講解網路程式技術的網站。若你也喜歡用這種方式學習的話,歡迎加入 Chan-Chan-Dev Facebook 的粉絲團,在發佈的時候就有比較多機會收到通知喔!😍
Solid 的第一個 S 代表的就是 Single Responsibility Principle (SRP) ,翻成中文為「單一職責」。至於 Solid 是什麼意思,網路上應該滿多解釋的,而且我也可能無法在解釋的比他們好,有興趣可以參考底下的連結:https://zh.wikipedia.org/wiki/SOLID\_(%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E8%AE%BE%E8%AE%A1)
為什麼要單一化職責?我們從一個情境來當起手勢:
傑西的夢想是開一家早餐店,但是一開始的時候把所有的資金都投資在早餐店的設備了,所以只能自己一個人經營這家早餐店,所以早餐店開門營業後需要的工作簡單地分為:
接受客人的點餐(take client order)
烹飪客人的餐點(cook b ...
Python 學習 5: 變數命名
在 Python 學習 4 : 變數 我們聊到變數其實就是一個被貼了標籤命名的一個可以暫存資料的盒子,所以除了把資料放進去變數以外,另外還有做一件事情就是『變數的命名』,讓我們繼續看下去囉。
在 Python 裡命名是有一些規則的:
變數的名稱不能是 Python 的『保留字』Python 的保留字
and
except
lambda
with
as
finally
nonlocal
while
assert
false
None
yield
break
for
not
class
from
or
continue
global
pass
def
if
raise
del
import
return
elif
in
True
else
is
try
https://www.tutorialspoint.com/What-are-Reserved-Keywords-in-Python
上面爲 Python3 的保留字,保留字就是在 Python3 執行的過程中,會被用到語法關鍵字,例如 if 、else、return 等等,之後會在提到這幾個語法關鍵字的用法,這邊先稍微跟大家帶過 ...
Python 學習 4 : 變數
我們在 後端語言學習地圖 中內容中,其中有提到一個關鍵字叫做『變數』,所以我們今天就來聊聊『變數』的概念。
『變數』照字面上的解釋就是一個會變動的數值,它不是固定不變的。可以把它想像成在電腦記憶體裏面一個『盒子』,你可以在『盒子』存放一些資訊,並且可以替這個『盒子』貼上標籤命名。
假如你要把你的 Email 放進記憶體的『盒子』裡,還記得 Python 學習 3 : 資料型別 提過的觀念,Email 是一個『字串類型』的資料,所以需要被用『雙引號』或『單引號』包起來,看起來有點像是這樣子。
但是如果我們多放了把 Email、姓名、電話都放在『不同』的盒子裏面的話,畫面上就會像是這個樣子:
這時候當你需要『Email 盒子』的這個資料的時候,你就不知道他在哪個盒子裏面,所以這時候適當的幫這些盒子標記個命名方便之後辨識取用是個好的方法。
那如果我們想在 Python 做到這件事情的話要怎麼做呢?
my_email = “my-email@gmai ...