發表文章

目前顯示的是 4月, 2018的文章

HTTP\HTTPS 差一字,差好多

HTTP的全名為超文本傳輸協定 ( HyperText Transfer Protocol,縮寫:HTTP)。是一種位於OSI中應用層的協定,也是如今在 Internet 中資料通訊的基礎。 設計 HTTP 最初的目的是為了提供一種發布和接收 HTML 頁面的方法。通過 HTTP 或者 HTTPS 協定請求的資源由統一資源識別元(Uniform Resource Identifiers,URI。用於標識某一網際網路資源名稱的字串)來標識。簡單來說,HTTP 就是往返"瀏覽器"與"WEB Server"的通訊協議。 HTTP缺點 明文。在 HTTP 中,Web 端與 Server 端進行通訊是使用"明文"的方式,因為其本身並不具備加密的功能,就算今天 Web 端可以對內容進行加密,再傳送至 Server 端解密,但這樣的機制因為沒有 CA 以及公鑰基礎建設的基礎,也沒有透過 SSL/TLS 來作加密的動作,仍然會有被解密的風險。 無驗證。在 HTTP 中,不管是 Web 端還是 Server 端都不會對身份來進行驗證,只會對訊息要求正確,並不會驗證這是不是真的由對應到的那端發出來的,所以內容很有可能被串改或竊聽。 有求必應。因為 Server 端因為對 request 幾乎是有求必應的,所以也無法阻擋海量的 DDoS 攻擊。 總合以上三點,其實說穿了就是兩個字,安全。已傳紙條來舉例,你可不希望在傳遞的過程中發生,紙條被偷看、串改的問題出現吧!因此 HTTPS 就出現了。 HTTPS 的全名為超文本傳輸安全協定 ( HyperText Transfer Protocol Secure,縮寫:HTTPS)。透過了 SSL/TLS (傳輸層安全性協定)去做了一道安全鎖,透過andshake (交握)、公私鑰加密、CA (第三方認證機構)等,來解決 HTTP 無法解決的問題。

JavaScript Minify 介紹

圖片
相信你一定有用過瀏覽器的一個叫“檢視網頁原始碼”的功能,而當你點開後,你會發現你看到的原始碼又髒又亂,什麼 a,b,c 的變數,而且又都寫在同一行。 ( 示意圖 ) 其實,這並不是因為開發者寫的程式碼就這麼髒,而是透過特定的 Minify 工具轉譯出來的。 而要這樣做的原因主要兩個: 把變數跟程式碼寫得越短,可以省掉不少瀏覽器解析 (Parse)的時間 雖然這些程式碼是公開的,但是如果有人想研究你程式碼的話,會比較不方便。 Minify開放原始碼-GitHub

REST/RESTful 介紹

Representational State Transfer ( 表示狀態傳送 ),簡稱REST,它是一種網路架構風格,他並不是一種標準。 而如果你符合 API 符合的話, 你可以將它稱作 RESTful API ( REST化 = RESTful )。 讓我們直接舉個例子 如果我們在寫一隻商品的 WebAPI,讓工程師隨便寫可能會有以下方式來作 Interface:  獲得商品資料 /getAllItems  獲得商品資料 /getItem/11  新增商品資料 /createItem  更新商品資料 /updateItem/  刪除商品資料 /deleteItem/ 若是以使用 RESTful API 開發的話:  獲取商品資料 /GET /items  獲取商品資料 /GET /items/1  新增商品資料 /POST /items  更新商品資料 /PATCH /items/1  刪除商品資料 /DELETE /items/1 而以上兩者的差異在於 RESTful API 充分地實現了 HTTP protocol ( GET/POST/PUT/DELETE),來達到簡潔易懂,並且可重用。

awk 簡單好用的資料處理工具!

awk 是一個可以處理資料、產生格式化報表的工具。 awk 的工作方式讀取資料源,並將每一列的資料視為一筆紀錄 (record),每筆記錄在被細分成數個欄位,預設的欄位分割字元為 '空白鍵' or 'tab' 。awk 會對每一筆記錄,都會套用一個「模式{動作}」,如果該列符合模式,就執行指定的動作。( 模式複習 ) 語法 awk '條件類型1{動作1} 條件類型2{動作2} ...' filename awk後面接兩個單引號並加上大括號 {} 來設定想要對資料進行的處理動作。 awk 可以處理後續接的檔案,也可以讀取來自前個指令的 standard output。 語法案例 顯示含 XXX 的資料列 awk '/abc/' file  從file檔案中顯示含 abc 的資料列。 顯示檔案中每一列的第 1 和第 2 個欄位。 awk '{print $1 , $2}' file  從file檔案中顯示第 1 和第 2 個欄位。 顯示含有 XXX 關鍵字的資料列的第 1 及第 2 個欄位 awk '/abc/{print $1 , $2}' file  從file檔案中顯示含 abc 的資料的第 1 和第 2 個欄位。 顯示含 XXX 的資料列,並以 , 為分割字元 awk 'BEGIN  {FS = ","}/abc/' file  從file檔案中顯示含 abc 的資料,並以 , 為分割字元。 BEGIN{} 區塊指示 awk 一開始先做初始化的動作,否則在第一行時就會以預設的字元來做分割。