第一次接觸 ChatGPT
一個禮拜前發現幾年前用 .Net 寫的 micro service 似乎有 memory leak,由於只有幾百行 code,判斷是 .Net 本身有問題,於是打算用 Go 重寫一次。
再説 .Net ASPCore 單是起動就吃了 100MB 以上的 RAM,而且每個 service 都會 side-car 這個 app,弄兩三個 service 系統就開始 OOM-Kill 了。
雖然對 Go 不太熟悉,想著所有語言大多都相通,所以只要知道基本規則和一般做法的話應該還過得去。
於是便開始研究 /kubernetes 的 repo,第一個問題是 log 的做法,Google 了大半天,從 klog.InitFlags 到 pflag.Parse,弄了這幾行 code
這時候不知怎的突然想起某 YouTube 好像介紹用 ChatGPT 某些情況下比 Google 好,機會難得總之先試試看吧?
啊,怎麼 IP 被牆掉了?沒差,直接用 VPN 好了。
我:「 What is the general logging convention for writing k8s services with client-go?」
ChatGPT: [...](不知道有沒有版權問題所以這裏就不貼上來了)
我:

完‧全‧解‧答!
這什麼鬼好厲害!我花了半天 Google 的東西只是問一下 ChatGPT 就解決了!好厲害!嗯?但這裏為什麼要加 defer klog.Flush?順便也問一下吧。
我:「What does klog.Flush() do in your above example?」
ChatGPT:[...](簡單來説這個是必要而且是一般做法)
為了驗證我確應了一下 /kubernetes 的 repo⋯⋯
HO-LY FUCK!受教了!沒想到我也有被 AI 教育的一天,新時代要來了?
之後在開發中途問了幾個問題,結論 ChatGPT 是神器。
又一例我挖了大半天也找不到應該怎麼 decode 某些 resources ,於是問
「Please provide an example that shows how to unmarshal ingress object from AdmissionReview.Request.Resource using client-go.」
這個也沒問題地解答了。開發變得超輕鬆,好感動!
但得小心要抱持懷疑的態度來用呢。例如上面的問題 ChatGPT 會在 func init() 中寫 _ = AddSchema(..),我問為什麼要這樣寫,他説這一般做法和防止噴錯。
雖然解答得有條有度。但實際在上並沒有噴錯,而且 k8s 的 repo 裏面找不到這樣寫的例子。這裏反問了一下結果他説我是對的,噴錯的情況是在用其他工具( code scanning)的情況下才會發生。而且 k8s 也沒有指定 func init() 裏面要 _ = ...
本來預計要用幾天重寫的玩意最後只花了兩天就寫好了。感謝 ChatGPT 🙏
不過要問將這個技術一直伸延下去的話有沒有可能發展出完全的 AI⋯⋯只能説我沒有足夠的知識去判斷了,直覺判斷的話應該不行吧?個人來講我也有願想活在小説中的世界,希望在有生之年可以看到完全的 AI 呢。
現在這個 ChatGPT 也很 SF 就是了。
再説 .Net ASPCore 單是起動就吃了 100MB 以上的 RAM,而且每個 service 都會 side-car 這個 app,弄兩三個 service 系統就開始 OOM-Kill 了。
雖然對 Go 不太熟悉,想著所有語言大多都相通,所以只要知道基本規則和一般做法的話應該還過得去。
於是便開始研究 /kubernetes 的 repo,第一個問題是 log 的做法,Google 了大半天,從 klog.InitFlags 到 pflag.Parse,弄了這幾行 code
func main() {
fs := pflag.NewFlagSet("", pflag.ExitOnError)
c := Config{}
fs.StringVar(&c.TLSCertFile, "tls-cert-file", c.TLSCertFile,
"File containing x509 Certificate used for serving HTTPS (with intermediate certs, if any, concatenated after server cert).")
fs.StringVar(&c.TLSPrivateKeyFile, "tls-private-key-file", c.TLSPrivateKeyFile, "File containing x509 private key matching --tls-cert-file.")
klog.InitFlags(nil)
flag.Set("logtostderr", "true")
pflag.CommandLine.AddFlagSet(fs)
pflag.CommandLine.AddGoFlagSet(flag.CommandLine)
pflag.Parse()
}啊,怎麼 IP 被牆掉了?沒差,直接用 VPN 好了。
我:「 What is the general logging convention for writing k8s services with client-go?」
ChatGPT: [...](不知道有沒有版權問題所以這裏就不貼上來了)
我:
完‧全‧解‧答!
這什麼鬼好厲害!我花了半天 Google 的東西只是問一下 ChatGPT 就解決了!好厲害!嗯?但這裏為什麼要加 defer klog.Flush?順便也問一下吧。
我:「What does klog.Flush() do in your above example?」
ChatGPT:[...](簡單來説這個是必要而且是一般做法)
為了驗證我確應了一下 /kubernetes 的 repo⋯⋯
之後在開發中途問了幾個問題,結論 ChatGPT 是神器。
又一例我挖了大半天也找不到應該怎麼 decode 某些 resources ,於是問
「Please provide an example that shows how to unmarshal ingress object from AdmissionReview.Request.Resource using client-go.」
這個也沒問題地解答了。開發變得超輕鬆,好感動!
但得小心要抱持懷疑的態度來用呢。例如上面的問題 ChatGPT 會在 func init() 中寫 _ = AddSchema(..),我問為什麼要這樣寫,他説這一般做法和防止噴錯。
雖然解答得有條有度。但實際在上並沒有噴錯,而且 k8s 的 repo 裏面找不到這樣寫的例子。這裏反問了一下結果他説我是對的,噴錯的情況是在用其他工具( code scanning)的情況下才會發生。而且 k8s 也沒有指定 func init() 裏面要 _ = ...
本來預計要用幾天重寫的玩意最後只花了兩天就寫好了。感謝 ChatGPT 🙏
感想
網上有人笑讓 ChatGPT 寫 code debug 時間反而變長了。我覺得這是錯誤用法。不是要他幫你寫 code,像「請用 python 寫一個 program,會從 twitter 上 pull data 下來,然後分析這個 data,再將結果 save 都 db 上去」這類問題完全是想太多了。不如叫他幫你吃飯好不好?不過要問將這個技術一直伸延下去的話有沒有可能發展出完全的 AI⋯⋯只能説我沒有足夠的知識去判斷了,直覺判斷的話應該不行吧?個人來講我也有願想活在小説中的世界,希望在有生之年可以看到完全的 AI 呢。
現在這個 ChatGPT 也很 SF 就是了。
Fri Nov 29 2024 08:42:01 GMT+0000 (Coordinated Universal Time)
Last modified: Fri Nov 29 2024 08:42:01 GMT+0000 (Coordinated Universal Time)
Comments
No comments here.
Do you even comment?
website:
Not a valid website
Invalid email format
Please enter your email
*Name:
Please enter a name
Submit
抱歉,Google Recaptcha 服務被牆掉了,所以不能回覆了