Hero Image
Go articles

学会 gin 参数校验之 validator 库,看这一篇就足够了 字符串约束 excludesall:不包含参数中任意的 UNICODE 字符,例如 excludesall=ab excludesrune:不包含参数表示的 rune 字符,excludesrune=asong startswith:以参数子串为前缀,例如 startswith=hi endswith:以参数子串为后缀,例如 endswith=bye。 contains=:包含参数子串,例如 contains=email containsany:包含参数中任意的 UNICODE 字符,例如 containsany=ab containsrune:包含参数表示的 rune 字符,例如`containsrune=asong excludes:不包含参数子串,例如 excludes=email 范围约束 范围约束的字段类型分为三种: 对于数值,我们则可以约束其值 对于切片、数组和 map,我们则可以约束其长度 对于字符串,我们则可以约束其长度 常用 tag 介绍: ne:不等于参数值,例如 ne=5 gt:大于参数值,例如 gt=5 gte:大于等于参数值,例如 gte=50 lt:小于参数值,例如 lt=50 lte:小于等于参数值,例如 lte=50 oneof:只能是列举出的值其中一个,这些值必须是数值或字符串,以空格分隔,如果字符串中有空格,将字符串用单引号包围,例如 oneof=male female。 eq:等于参数值,注意与 len 不同。对于字符串,eq 约束字符串本身的值,而 len 约束字符串长度。例如 eq=10 len:等于参数值,例如 len=10 max:小于等于参数值,例如 max=10 min:大于等于参数值,例如 min=10 Fields 约束 eqfield:定义字段间的相等约束,用于约束同一结构体中的字段。例如:eqfield=Password eqcsfield:约束统一结构体中字段等于另一个字段(相对),确认密码时可以使用,例如:eqfiel=ConfirmPassword nefield:用来约束两个字段是否相同,确认两种颜色是否一致时可以使用,例如:nefield=Color1 necsfield:约束两个字段是否相同(相对) 常用约束 unique:指定唯一性约束,不同类型处理不同:

Hero Image
寫 Web 也可以用 Makefile:好好管理你的環境流程

寫 Web 也可以用 Makefile:好好管理你的環境流程 How I stopped worrying and loved Makefiles 注意:Makefile 的縮排應使用 Tab,否則會出現語法問題。 Makefile 的主要本體:Target up: cp .env.example .env docker compose up -d workspace stop: docker compose stop zsh: docker compose exec workspace zsh 本例有三個 Target:up、stop、zsh。Makefile 預設將第一個 Target 視為 Goal(不能是點(dot)開頭的 Target),是專案的最主要流程,可以直接用 make 執行。以本例來說,執行 make 和 make up 是一樣的結果。 但其實剛剛複製檔案的例子不是常見的 Make 用法。Make 的強項是在自動判斷有沒有必要執行每個 Target 的流程。例如我們常常將機敏資料放在 .env 中,若 .env 已經存在,就不應該再複製 .env.example 覆寫過去了。這時候我們可以把 .env 做成一個 Target: up: .env docker compose up -d workspace .env: cp .env.example .env Target 名稱預設是被視為檔名的。Make 之所以稱為 make,就是想要「製作」出指定的 Target,當符合指定條件時(如檔案不存在)才會執行 Target 的內容。 以本例來說,我們執行 up Target 時,如果 .env 不存在,就會先執行 .env Target 以複製出 .env,接著才會啟動 workspace container。如果執行 up Target 時 .env 已經存在,就會略過 .env Target,直接啟動 workspace container。 同樣地,如果我們目錄中有「up」這個檔案, up Target 就不會被執行了。這時我們可以設定 Phony Target,告訴 Make 哪些 Target 不是檔案的名稱,而是單純流程的命名。寫法如下: .PHONY: up stop zsh 來點變數 Make 當然也支援變數(Variable),與常見的 Unix 環境變數慣例相同,我們習慣用 SCREAMING_SNAKE_CASE 表示法(全大寫和底線的表示法)。並且在使用時以 $() 包裹變數名稱。