Create a GIN index with Django on AWS RDS

GIN What is it GIN 是一種 INDEX 可以幫助加速全文搜索的速度 GIN stands for Generalized Inverted Index. GIN is designed for handling cases where the items to be indexed are composite values, and the queries to be handled by the index need to search for element values that appear within the composite items. For example, the items could be documents, and the queries could be searches for documents containing specific words. Normal SQL 在傳統 SQL 下可以用以下幾個步驟完成建立 GIN INDEX

Closure

Closure What is closure Closure 簡單來說,就是某函數在另一個函數內被創造並且參照了創建函數的某些變數,此時該變數會存留於記憶內,儘管創建函數已經結束。 First time meet to Closure N年前在學習 Common Lisp 時教學內出現了一個陌生又奇特的技巧,Closure,以下是他的實做 (let ((counter 0)) (defun reset () (setf counter 0)) (defun stamp () (setf counter (+ counter 1)))) (list (stamp) (stamp) (reset) (stamp)) ; (1 2 0 1) 為了怕正常人看不懂,以下用 Python 翻譯 def gen_counter(): counter = 0 def reset(): nonlocal counter counter = 0 return counter def stamp(): nonlocal counter counter += 1 return counter return reset, stamp reset, stamp = gen_counter() print(stamp()) # 1 print(stamp()) # 2 print(reset()) # 0 print(stamp()) # 1 可以看出在 gen_counter 內的 兩個函數 (reset, stamp) 一同共用內部變數 counter 儘管 gen_counter 已經回傳並且結束,但是在之後的程式卻還是擁有當初初始化的 count,亦即 counter 在記憶體中不會因為 gen_counter 已經回傳就被回收。

gRPC

實做一個可以寄信的 gRPC Proto 寫一個寄發信件服務所需要的資料格式 Proto 是一個文件用來儲存 gRPC server 與 client 交換資料時鎖需要的資料格式,建議可以看看它與 JSON 的對照表來迅速了解需要怎樣寫 syntax = "proto3"; // use proto version 3 package pb; // package name /* Add the Send function for use / service Mail{ rpc Send (MailRequest) returns (MailStatus) {} } / Declare what data you need to let server know and server will use it to send a mail / message MailRequest{ string from = 1; repeated string to = 2; repeated string cc = 3; string subject = 4; string body = 5; string type = 6; } / Means what the mail status be send or not */ message MailStatus{ int32 status = 1; string code = 2; } 產生 golang 的程式 go get -u github.