-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsearch_index.en.js
1 lines (1 loc) · 57.2 KB
/
search_index.en.js
1
window.searchIndex = {"fields":["title","body"],"pipeline":["trimmer","stopWordFilter","stemmer"],"ref":"id","version":"0.9.5","index":{"body":{"root":{"docs":{},"df":0,"0":{"docs":{},"df":0,"到":{"docs":{},"df":0,"1":{"docs":{},"df":0,",":{"docs":{},"df":0,"有":{"docs":{},"df":0,"过":{"docs":{},"df":0,"太":{"docs":{},"df":0,"多":{"docs":{},"df":0,"的":{"docs":{},"df":0,"造":{"docs":{},"df":0,"轮":{"docs":{},"df":0,"子":{"docs":{},"df":0,"。":{"docs":{},"df":0,"早":{"docs":{},"df":0,"几":{"docs":{},"df":0,"天":{"docs":{},"df":0,"跟":{"docs":{},"df":0,"小":{"docs":{},"df":0,"伙":{"docs":{},"df":0,"伴":{"docs":{},"df":0,"们":{"docs":{},"df":0,"聊":{"docs":{},"df":0,"起":{"docs":{},"df":0,"了":{"docs":{},"df":0,"从":{"docs":{},"df":0,"追":{"docs":{},"df":0,"求":{"docs":{},"df":0,"一":{"docs":{},"df":0,"个":{"docs":{},"df":0,"9":{"docs":{},"df":0,"到":{"docs":{},"df":0,"两":{"docs":{},"df":0,"个":{"docs":{},"df":0,"9":{"docs":{},"df":0,"到":{"docs":{},"df":0,"三":{"docs":{},"df":0,"个":{"docs":{},"df":0,"9":{"docs":{"https://xring.net/2024-summary/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"1":{"docs":{},"df":0,"0":{"docs":{"https://xring.net/2024-summary/":{"tf":1.0}},"df":1},"5":{"docs":{},"df":0,".":{"docs":{},"df":0,"2":{"docs":{"https://xring.net/xcode-15-2-install-ios-17-2-simulator/":{"tf":1.4142135623730951}},"df":1}}},"7":{"docs":{},"df":0,".":{"docs":{},"df":0,"2":{"docs":{"https://xring.net/xcode-15-2-install-ios-17-2-simulator/":{"tf":1.0}},"df":1}}},"8":{"docs":{"https://xring.net/2024-summary/":{"tf":1.0}},"df":1},"9":{"docs":{},"df":0,"年":{"docs":{},"df":0,"参":{"docs":{},"df":0,"与":{"docs":{},"df":0,"“":{"docs":{},"df":0,"创":{"docs":{},"df":0,"业":{"docs":{},"df":0,"”":{"docs":{},"df":0,"至":{"docs":{},"df":0,"今":{"docs":{},"df":0,",":{"docs":{},"df":0,"已":{"docs":{},"df":0,"经":{"docs":{},"df":0,"很":{"docs":{},"df":0,"长":{"docs":{},"df":0,"时":{"docs":{},"df":0,"间":{"docs":{},"df":0,"没":{"docs":{},"df":0,"有":{"docs":{},"df":0,"停":{"docs":{},"df":0,"下":{"docs":{},"df":0,"来":{"docs":{},"df":0,"做":{"docs":{},"df":0,"一":{"docs":{},"df":0,"些":{"docs":{},"df":0,"思":{"docs":{},"df":0,"考":{"docs":{},"df":0,"和":{"docs":{},"df":0,"总":{"docs":{},"df":0,"结":{"docs":{},"df":0,"了":{"docs":{},"df":0,",":{"docs":{},"df":0,"也":{"docs":{},"df":0,"有":{"docs":{},"df":0,"很":{"docs":{},"df":0,"长":{"docs":{},"df":0,"时":{"docs":{},"df":0,"间":{"docs":{},"df":0,"没":{"docs":{},"df":0,"有":{"docs":{},"df":0,"将":{"docs":{},"df":0,"学":{"docs":{},"df":0,"的":{"docs":{},"df":0,"知":{"docs":{},"df":0,"识":{"docs":{},"df":0,"、":{"docs":{},"df":0,"踩":{"docs":{},"df":0,"的":{"docs":{},"df":0,"坑":{"docs":{},"df":0,"、":{"docs":{},"df":0,"买":{"docs":{},"df":0,"的":{"docs":{},"df":0,"教":{"docs":{},"df":0,"训":{"docs":{},"df":0,"等":{"docs":{},"df":0,"等":{"docs":{},"df":0,"来":{"docs":{},"df":0,"沉":{"docs":{},"df":0,"淀":{"docs":{},"df":0,"一":{"docs":{},"df":0,"下":{"docs":{},"df":0,"。":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{"https://xring.net/blog-upgraded-to-zola/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"2":{"docs":{},"df":0,"0":{"docs":{},"df":0,"2":{"docs":{},"df":0,"4":{"docs":{"https://xring.net/2024-summary/":{"tf":1.4142135623730951}},"df":1}}},"5":{"docs":{},"df":0,"0":{"docs":{},"df":0,"0":{"docs":{"https://xring.net/2024-summary/":{"tf":1.0}},"df":1}}},"f":{"docs":{},"df":0,"a":{"docs":{},"df":0,",":{"docs":{},"df":0,"h":{"docs":{},"df":0,"t":{"docs":{},"df":0,"t":{"docs":{},"df":0,"p":{"docs":{},"df":0,"s":{"docs":{},"df":0,":":{"docs":{},"df":0,"/":{"docs":{},"df":0,"/":{"docs":{},"df":0,"m":{"docs":{},"df":0,"y":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,".":{"docs":{},"df":0,"g":{"docs":{},"df":0,"o":{"docs":{},"df":0,"o":{"docs":{},"df":0,"g":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,".":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"/":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,"n":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"p":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"s":{"docs":{},"df":0,"/":{"docs":{},"df":0,"t":{"docs":{},"df":0,"w":{"docs":{},"df":0,"o":{"docs":{"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"5":{"docs":{},"df":0,"0":{"docs":{},"df":0,"0":{"docs":{},"df":0,"0":{"docs":{"https://xring.net/2024-summary/":{"tf":1.0}},"df":1},"m":{"docs":{"https://xring.net/2024-summary/":{"tf":1.0}},"df":1}}}},"8":{"docs":{},"df":0,"0":{"docs":{},"df":0,"m":{"docs":{"https://xring.net/2024-summary/":{"tf":1.0}},"df":1}},"3":{"docs":{"https://xring.net/2024-summary/":{"tf":1.0}},"df":1}},"9":{"docs":{},"df":0,"9":{"docs":{"https://xring.net/xcode-15-2-install-ios-17-2-simulator/":{"tf":1.0}},"df":1}},"a":{"docs":{},"df":0,"b":{"docs":{},"df":0,"c":{"docs":{"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"tf":1.4142135623730951}},"df":1}},"c":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"tf":1.0}},"df":1}}}}},"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"v":{"docs":{"https://xring.net/maven-setup-http-proxy/":{"tf":1.0}},"df":1}}}},"d":{"docs":{},"df":0,"d":{"docs":{"https://xring.net/cargo-dependencies-from-git/":{"tf":1.0},"https://xring.net/cross-compiling-rust-from-mac-to-linux/":{"tf":1.0},"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"tf":1.0}},"df":3,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"tf":2.0}},"df":1}}}}}},"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://xring.net/cargo-dependencies-from-git/":{"tf":1.7320508075688772}},"df":1}}}},"i":{"docs":{"https://xring.net/2024-summary/":{"tf":1.4142135623730951}},"df":1},"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"tf":1.0}},"df":1}}}},"p":{"docs":{},"df":0,"i":{"docs":{"https://xring.net/lazylock-and-once-lock-in-rust/":{"tf":1.0}},"df":1},"p":{"docs":{"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"tf":1.0}},"df":1,"l":{"docs":{},"df":0,"i":{"docs":{"https://xring.net/k8s-pull-images-from-private-registry/":{"tf":1.0}},"df":1}}}}},"b":{"docs":{},"df":0,"u":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,"d":{"docs":{"https://xring.net/cross-compiling-rust-from-mac-to-linux/":{"tf":1.0}},"df":1}}}}},"c":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"b":{"docs":{},"df":0,"l":{"docs":{"https://xring.net/2024-summary/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"g":{"docs":{},"df":0,"o":{"docs":{"https://xring.net/cargo-dependencies-from-git/":{"tf":1.7320508075688772},"https://xring.net/cross-compiling-rust-from-mac-to-linux/":{"tf":2.23606797749979}},"df":2,"/":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{},"df":0,".":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"l":{"docs":{"https://xring.net/cross-compiling-rust-from-mac-to-linux/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}},"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"g":{"docs":{},"df":0,"p":{"docs":{},"df":0,"t":{"docs":{"https://xring.net/2024-summary/":{"tf":1.0}},"df":1}}}}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://xring.net/istio-gateway-get-client-ip/":{"tf":1.0}},"df":1}}}},"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"d":{"docs":{},"df":0,"f":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"tf":2.0}},"df":1}}}}}}},"u":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,",":{"docs":{},"df":0,"我":{"docs":{},"df":0,"们":{"docs":{},"df":0,"只":{"docs":{},"df":0,"要":{"docs":{},"df":0,"将":{"docs":{},"df":0,"这":{"docs":{},"df":0,"个":{"docs":{},"df":0,"值":{"docs":{},"df":0,"更":{"docs":{},"df":0,"新":{"docs":{},"df":0,"为":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"c":{"docs":{"https://xring.net/istio-gateway-get-client-ip/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"g":{"docs":{"https://xring.net/lazylock-and-once-lock-in-rust/":{"tf":1.0}},"df":1}}}}},"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{"https://xring.net/cargo-dependencies-from-git/":{"tf":1.4142135623730951}},"df":1}}}}}}},"e":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"https://xring.net/k8s-pull-images-from-private-registry/":{"tf":1.0}},"df":1}}}}}},"o":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"https://xring.net/cross-compiling-rust-from-mac-to-linux/":{"tf":1.0}},"df":1}}}}},"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"tf":1.0}},"df":1}}}}},"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"c":{"docs":{},"df":0,"u":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"https://xring.net/blog-upgraded-to-zola/":{"tf":1.0}},"df":1}}}}}},"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://xring.net/docker-manually-transfer-image/":{"tf":2.23606797749979},"https://xring.net/k8s-pull-images-from-private-registry/":{"tf":1.0}},"df":2}}}},"w":{"docs":{},"df":0,"n":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{"https://xring.net/xcode-15-2-install-ios-17-2-simulator/":{"tf":1.0}},"df":1}}}}}}}},"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"tf":2.23606797749979}},"df":1}}}},"n":{"docs":{},"df":0,"v":{"docs":{},"df":0,"o":{"docs":{},"df":0,"y":{"docs":{"https://xring.net/istio-gateway-get-client-ip/":{"tf":1.0}},"df":1}}}},"t":{"docs":{},"df":0,"c":{"docs":{},"df":0,"d":{"docs":{"https://xring.net/2024-summary/":{"tf":1.0}},"df":1}}}},"f":{"docs":{"https://xring.net/k8s-pull-images-from-private-registry/":{"tf":1.0}},"df":1,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"d":{"docs":{"https://xring.net/istio-gateway-get-client-ip/":{"tf":1.0}},"df":1}}}}}}},"g":{"docs":{},"df":0,"a":{"docs":{},"df":0,"p":{"docs":{"https://xring.net/2024-summary/":{"tf":1.0}},"df":1},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"y":{"docs":{},"df":0,"(":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"v":{"docs":{},"df":0,"o":{"docs":{},"df":0,"y":{"docs":{"https://xring.net/istio-gateway-get-client-ip/":{"tf":1.0}},"df":1}}}}}}}}}}}},"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"_":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"_":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"https://xring.net/lazylock-and-once-lock-in-rust/":{"tf":1.0}},"df":1}}}}}}}}}},"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"c":{"docs":{},"df":0,"u":{"docs":{"https://xring.net/blog-upgraded-to-zola/":{"tf":1.0}},"df":1}}},"t":{"docs":{"https://xring.net/cargo-dependencies-from-git/":{"tf":1.4142135623730951}},"df":1,"h":{"docs":{},"df":0,"u":{"docs":{},"df":0,"b":{"docs":{"https://xring.net/blog-upgraded-to-zola/":{"tf":1.0}},"df":1}}}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"c":{"docs":{"https://xring.net/cross-compiling-rust-from-mac-to-linux/":{"tf":1.7320508075688772}},"df":1}}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"tf":3.0}},"df":1}}}},"n":{"docs":{},"df":0,"u":{"docs":{"https://xring.net/cross-compiling-rust-from-mac-to-linux/":{"tf":1.0}},"df":1,"/":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{"https://xring.net/cross-compiling-rust-from-mac-to-linux/":{"tf":1.0}},"df":1}}}}}}}}},"o":{"docs":{"https://xring.net/2024-summary/":{"tf":1.0}},"df":1,"o":{"docs":{},"df":0,"g":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,".":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"https://xring.net/maven-setup-http-proxy/":{"tf":1.0}},"df":1}}}}}}}}},"t":{"docs":{"https://xring.net/docker-manually-transfer-image/":{"tf":1.0},"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"tf":2.23606797749979}},"df":2},"z":{"docs":{},"df":0,"i":{"docs":{},"df":0,"p":{"docs":{"https://xring.net/docker-manually-transfer-image/":{"tf":1.0}},"df":1}}}},"h":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"b":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{"https://xring.net/k8s-pull-images-from-private-registry/":{"tf":1.0}},"df":1}}}}},"e":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"'":{"docs":{"https://xring.net/blog-upgraded-to-zola/":{"tf":1.0}},"df":1}}}}},"l":{"docs":{},"df":0,"m":{"docs":{"https://xring.net/istio-gateway-get-client-ip/":{"tf":1.0}},"df":1}}},"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{"https://xring.net/maven-setup-http-proxy/":{"tf":1.0}},"df":1}}},"t":{"docs":{},"df":0,"t":{"docs":{},"df":0,"p":{"docs":{"https://xring.net/cargo-dependencies-from-git/":{"tf":1.0},"https://xring.net/maven-setup-http-proxy/":{"tf":2.449489742783178}},"df":2,":":{"docs":{},"df":0,"/":{"docs":{},"df":0,"/":{"docs":{},"df":0,"s":{"docs":{},"df":0,"m":{"docs":{},"df":0,"t":{"docs":{},"df":0,"p":{"docs":{},"df":0,".":{"docs":{},"df":0,"g":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{},"df":0,".":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}},"s":{"docs":{},"df":0,":":{"docs":{},"df":0,"/":{"docs":{},"df":0,"/":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,".":{"docs":{},"df":0,"a":{"docs":{},"df":0,"p":{"docs":{},"df":0,"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,".":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"/":{"docs":{},"df":0,"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{},"df":0,"n":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{},"df":0,"/":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"/":{"docs":{},"df":0,"?":{"docs":{},"df":0,"q":{"docs":{},"df":0,"=":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{"https://xring.net/xcode-15-2-install-ios-17-2-simulator/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"h":{"docs":{},"df":0,"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,".":{"docs":{},"df":0,"x":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,".":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"f":{"docs":{},"df":0,"o":{"docs":{"https://xring.net/k8s-pull-images-from-private-registry/":{"tf":1.0}},"df":1}}}}}}}}}}}}}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"y":{"docs":{},"df":0,".":{"docs":{},"df":0,"g":{"docs":{},"df":0,"o":{"docs":{},"df":0,"o":{"docs":{},"df":0,"g":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,".":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"/":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"s":{"docs":{},"df":0,"/":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"u":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"y":{"docs":{},"df":0,"/":{"docs":{},"df":0,"a":{"docs":{},"df":0,"p":{"docs":{},"df":0,"p":{"docs":{},"df":0,"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"w":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"d":{"docs":{"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"df":0,"d":{"docs":{"https://xring.net/maven-setup-http-proxy/":{"tf":1.0}},"df":1},"m":{"docs":{},"df":0,"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"t":{"docs":{"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"tf":1.0}},"df":1}}}}},"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{"https://xring.net/istio-gateway-get-client-ip/":{"tf":1.0}},"df":1,"g":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"y":{"docs":{"https://xring.net/istio-gateway-get-client-ip/":{"tf":1.0}},"df":1}}}}}}}}}}}},"i":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{"https://xring.net/lazylock-and-once-lock-in-rust/":{"tf":1.0}},"df":1}}}},"o":{"docs":{"https://xring.net/xcode-15-2-install-ios-17-2-simulator/":{"tf":1.0}},"df":1,"s":{"docs":{},"df":0,"_":{"docs":{},"df":0,"1":{"docs":{},"df":0,"7":{"docs":{},"df":0,".":{"docs":{},"df":0,"2":{"docs":{},"df":0,"_":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{"https://xring.net/xcode-15-2-install-ios-17-2-simulator/":{"tf":1.7320508075688772}},"df":1}}}}}}}}}}}}},"p":{"docs":{"https://xring.net/istio-gateway-get-client-ip/":{"tf":1.7320508075688772}},"df":1},"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{"https://xring.net/2024-summary/":{"tf":1.4142135623730951},"https://xring.net/istio-gateway-get-client-ip/":{"tf":2.0}},"df":2}}}}},"j":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{"https://xring.net/2024-summary/":{"tf":1.0}},"df":1}}}},"k":{"docs":{},"df":0,"8":{"docs":{"https://xring.net/2024-summary/":{"tf":1.4142135623730951}},"df":1},"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"t":{"docs":{},"df":0,"l":{"docs":{"https://xring.net/k8s-pull-images-from-private-registry/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://xring.net/k8s-pull-images-from-private-registry/":{"tf":1.7320508075688772}},"df":1}}}}}}}},"l":{"docs":{"https://xring.net/cargo-dependencies-from-git/":{"tf":1.0}},"df":1,"a":{"docs":{},"df":0,"z":{"docs":{},"df":0,"y":{"docs":{},"df":0,"_":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://xring.net/lazylock-and-once-lock-in-rust/":{"tf":1.0}},"df":1}}}}},"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{"https://xring.net/lazylock-and-once-lock-in-rust/":{"tf":2.0}},"df":1}}}}}}},"d":{"docs":{},"df":0,"d":{"docs":{"https://xring.net/cross-compiling-rust-from-mac-to-linux/":{"tf":1.0}},"df":1}},"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"k":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://xring.net/cross-compiling-rust-from-mac-to-linux/":{"tf":1.0}},"df":1}}},"u":{"docs":{},"df":0,"x":{"docs":{"https://xring.net/cross-compiling-rust-from-mac-to-linux/":{"tf":2.6457513110645907}},"df":1}}}},"l":{"docs":{},"df":0,"m":{"docs":{"https://xring.net/2024-summary/":{"tf":1.4142135623730951}},"df":1}},"o":{"docs":{},"df":0,"a":{"docs":{},"df":0,"d":{"docs":{"https://xring.net/docker-manually-transfer-image/":{"tf":1.0}},"df":1,"b":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{"https://xring.net/istio-gateway-get-client-ip/":{"tf":1.0}},"df":1}}}}}}}},"g":{"docs":{"https://xring.net/blog-upgraded-to-zola/":{"tf":1.0}},"df":1}}},"m":{"docs":{},"df":0,"2":{"docs":{},"df":0,"/":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"x":{"docs":{},"df":0,"m":{"docs":{},"df":0,"l":{"docs":{"https://xring.net/maven-setup-http-proxy/":{"tf":1.4142135623730951}},"df":1}}}}}}}}}}}}},"_":{"docs":{},"df":0,"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{"https://xring.net/maven-setup-http-proxy/":{"tf":1.4142135623730951}},"df":1,"/":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"f":{"docs":{},"df":0,"/":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"x":{"docs":{},"df":0,"m":{"docs":{},"df":0,"l":{"docs":{"https://xring.net/maven-setup-http-proxy/":{"tf":1.4142135623730951}},"df":1}}}}}}}}}}}}}}}}}}}}}}}},"a":{"docs":{},"df":0,"c":{"docs":{"https://xring.net/cross-compiling-rust-from-mac-to-linux/":{"tf":1.4142135623730951},"https://xring.net/maven-setup-http-proxy/":{"tf":1.0},"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"tf":1.0}},"df":3},"i":{"docs":{},"df":0,"l":{"docs":{"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"tf":1.7320508075688772}},"df":1}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"https://xring.net/maven-setup-http-proxy/":{"tf":2.8284271247461903}},"df":1}}}},"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"tf":1.0}},"df":1}}}}},"u":{"docs":{},"df":0,"s":{"docs":{},"df":0,"l":{"docs":{"https://xring.net/cross-compiling-rust-from-mac-to-linux/":{"tf":1.0}},"df":1,"/":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{"https://xring.net/cross-compiling-rust-from-mac-to-linux/":{"tf":1.0}},"df":1}}}}}}}}}},"v":{"docs":{},"df":0,"n":{"docs":{"https://xring.net/maven-setup-http-proxy/":{"tf":1.0}},"df":1}},"y":{"docs":{},"df":0,"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"x":{"docs":{"https://xring.net/k8s-pull-images-from-private-registry/":{"tf":1.0}},"df":1,".":{"docs":{},"df":0,"y":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"l":{"docs":{"https://xring.net/k8s-pull-images-from-private-registry/":{"tf":1.0}},"df":1}}}}}}}}}}}},"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{"https://xring.net/cross-compiling-rust-from-mac-to-linux/":{"tf":1.0}},"df":1,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"v":{"docs":{"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"tf":1.0}},"df":1}}}}}}},"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"x":{"docs":{"https://xring.net/docker-manually-transfer-image/":{"tf":1.4142135623730951}},"df":1,".":{"docs":{},"df":0,"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://xring.net/docker-manually-transfer-image/":{"tf":1.0}},"df":1,".":{"docs":{},"df":0,"g":{"docs":{},"df":0,"z":{"docs":{"https://xring.net/docker-manually-transfer-image/":{"tf":1.0}},"df":1}}}}}}},":":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://xring.net/docker-manually-transfer-image/":{"tf":1.7320508075688772}},"df":1}}}}}},"v":{"docs":{},"df":0,"0":{"docs":{},"df":0,".":{"docs":{},"df":0,"1":{"docs":{},"df":0,".":{"docs":{},"df":0,"0":{"docs":{"https://xring.net/k8s-pull-images-from-private-registry/":{"tf":1.0}},"df":1}}}}}}}}}}},"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"p":{"docs":{},"df":0,"r":{"docs":{},"df":0,"o":{"docs":{},"df":0,"x":{"docs":{},"df":0,"y":{"docs":{},"df":0,"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://xring.net/maven-setup-http-proxy/":{"tf":1.0}},"df":1}}}}}}}}}}}},"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"_":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{"https://xring.net/lazylock-and-once-lock-in-rust/":{"tf":1.0}},"df":1}}}},"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{"https://xring.net/lazylock-and-once-lock-in-rust/":{"tf":2.0}},"df":1}}}}}}},"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"、":{"docs":{},"df":0,"c":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"u":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"、":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"i":{"docs":{},"df":0,"、":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{},"df":0,"e":{"docs":{},"df":0,"p":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"e":{"docs":{},"df":0,"k":{"docs":{"https://xring.net/2024-summary/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"df":0,"a":{"docs":{},"df":0,"s":{"docs":{},"df":0,"s":{"docs":{},"df":0,"w":{"docs":{},"df":0,"o":{"docs":{},"df":0,"r":{"docs":{},"df":0,"d":{"docs":{"https://xring.net/maven-setup-http-proxy/":{"tf":1.0}},"df":1}}}}}}},"o":{"docs":{},"df":0,"d":{"docs":{"https://xring.net/k8s-pull-images-from-private-registry/":{"tf":1.7320508075688772}},"df":1}},"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"v":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{"https://xring.net/k8s-pull-images-from-private-registry/":{"tf":1.0}},"df":1}}}},"o":{"docs":{},"df":0,"x":{"docs":{},"df":0,"i":{"docs":{"https://xring.net/maven-setup-http-proxy/":{"tf":2.8284271247461903}},"df":1}}}},"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{"https://xring.net/k8s-pull-images-from-private-registry/":{"tf":1.0}},"df":1}}},"y":{"docs":{},"df":0,"t":{"docs":{},"df":0,"h":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://xring.net/2024-summary/":{"tf":1.0}},"df":1}}}}}},"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{"https://xring.net/docker-manually-transfer-image/":{"tf":1.0},"https://xring.net/k8s-pull-images-from-private-registry/":{"tf":1.0}},"df":2}}}}}},"p":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"tf":1.0}},"df":1}}}},"o":{"docs":{},"df":0,"u":{"docs":{},"df":0,"t":{"docs":{"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"tf":1.7320508075688772}},"df":1}}},"t":{"docs":{"https://xring.net/2024-summary/":{"tf":1.0}},"df":1},"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{},"df":0,".":{"docs":{},"df":0,"d":{"docs":{},"df":0,"m":{"docs":{},"df":0,"g":{"docs":{"https://xring.net/xcode-15-2-install-ios-17-2-simulator/":{"tf":1.0}},"df":1}}}}}}}}},"s":{"docs":{},"df":0,"t":{"docs":{"https://xring.net/2024-summary/":{"tf":1.0},"https://xring.net/blog-upgraded-to-zola/":{"tf":1.0},"https://xring.net/cross-compiling-rust-from-mac-to-linux/":{"tf":1.4142135623730951},"https://xring.net/lazylock-and-once-lock-in-rust/":{"tf":1.4142135623730951}},"df":4,"c":{"docs":{"https://xring.net/cross-compiling-rust-from-mac-to-linux/":{"tf":1.0}},"df":1},"u":{"docs":{},"df":0,"p":{"docs":{"https://xring.net/cross-compiling-rust-from-mac-to-linux/":{"tf":1.0}},"df":1}},",":{"docs":{},"df":0,"我":{"docs":{},"df":0,"一":{"docs":{},"df":0,"人":{"docs":{},"df":0,"一":{"docs":{},"df":0,"服":{"docs":{},"df":0,"务":{"docs":{},"df":0,",":{"docs":{},"df":0,"从":{"docs":{},"df":0,"0":{"docs":{},"df":0,"到":{"docs":{},"df":0,"1":{"docs":{"https://xring.net/2024-summary/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}},"s":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{},"df":0,"e":{"docs":{"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"tf":1.0}},"df":1}},"v":{"docs":{},"df":0,"e":{"docs":{"https://xring.net/docker-manually-transfer-image/":{"tf":1.4142135623730951}},"df":1}}},"c":{"docs":{},"df":0,"p":{"docs":{"https://xring.net/docker-manually-transfer-image/":{"tf":1.0}},"df":1}},"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://xring.net/k8s-pull-images-from-private-registry/":{"tf":2.0}},"df":1}}}},"e":{"docs":{"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"tf":1.0}},"df":1},"n":{"docs":{},"df":0,"d":{"docs":{"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"tf":1.4142135623730951}},"df":1},"t":{"docs":{"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"tf":1.0}},"df":1}},"r":{"docs":{},"df":0,"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"tf":1.0}},"df":1}},"i":{"docs":{},"df":0,"c":{"docs":{"https://xring.net/istio-gateway-get-client-ip/":{"tf":1.4142135623730951}},"df":1}}}},"t":{"docs":{"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"tf":1.0}},"df":1,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"g":{"docs":{},"df":0,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"x":{"docs":{},"df":0,"m":{"docs":{},"df":0,"l":{"docs":{"https://xring.net/maven-setup-http-proxy/":{"tf":1.4142135623730951}},"df":1}}}}}}},"n":{"docs":{},"df":0,"g":{"docs":{},"df":0,"s":{"docs":{},"df":0,".":{"docs":{},"df":0,"x":{"docs":{},"df":0,"m":{"docs":{},"df":0,"l":{"docs":{"https://xring.net/maven-setup-http-proxy/":{"tf":1.4142135623730951}},"df":1}}}}}}}}}}},"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{"https://xring.net/xcode-15-2-install-ios-17-2-simulator/":{"tf":1.0}},"df":1}}}},"m":{"docs":{},"df":0,"t":{"docs":{},"df":0,"p":{"docs":{"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"tf":1.0}},"df":1}}},"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,".":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"t":{"docs":{},"df":0,"r":{"docs":{},"df":0,"a":{"docs":{},"df":0,"f":{"docs":{},"df":0,"f":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"p":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"c":{"docs":{},"df":0,"i":{"docs":{"https://xring.net/istio-gateway-get-client-ip/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"p":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"r":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://xring.net/k8s-pull-images-from-private-registry/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"df":0,"h":{"docs":{"https://xring.net/cargo-dependencies-from-git/":{"tf":2.6457513110645907}},"df":1}},"t":{"docs":{},"df":0,"e":{"docs":{},"df":0,"p":{"docs":{"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"tf":1.0}},"df":1}}}},"t":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"g":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://xring.net/cross-compiling-rust-from-mac-to-linux/":{"tf":1.7320508075688772}},"df":1,"/":{"docs":{},"df":0,"x":{"docs":{},"df":0,"8":{"docs":{},"df":0,"6":{"docs":{},"df":0,"_":{"docs":{},"df":0,"6":{"docs":{},"df":0,"4":{"docs":{"https://xring.net/cross-compiling-rust-from-mac-to-linux/":{"tf":1.4142135623730951}},"df":1}}}}}}},"_":{"docs":{},"df":0,"c":{"docs":{},"df":0,"c":{"docs":{"https://xring.net/cross-compiling-rust-from-mac-to-linux/":{"tf":1.0}},"df":1}}}}}}}},"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"m":{"docs":{},"df":0,"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{"https://xring.net/blog-upgraded-to-zola/":{"tf":1.0}},"df":1}}}}}}},"o":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{"https://xring.net/cross-compiling-rust-from-mac-to-linux/":{"tf":1.0}},"df":1}}},"r":{"docs":{},"df":0,"u":{"docs":{},"df":0,"e":{"docs":{"https://xring.net/maven-setup-http-proxy/":{"tf":1.0}},"df":1}}},"y":{"docs":{},"df":0,"p":{"docs":{},"df":0,"e":{"docs":{},"df":0,"s":{"docs":{},"df":0,"c":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"p":{"docs":{},"df":0,"t":{"docs":{"https://xring.net/2024-summary/":{"tf":1.0}},"df":1}}}}}}}}}},"u":{"docs":{},"df":0,"n":{"docs":{},"df":0,"k":{"docs":{},"df":0,"n":{"docs":{},"df":0,"o":{"docs":{},"df":0,"w":{"docs":{},"df":0,"n":{"docs":{"https://xring.net/cross-compiling-rust-from-mac-to-linux/":{"tf":2.0}},"df":1}}}}}},"s":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"n":{"docs":{},"df":0,"a":{"docs":{},"df":0,"m":{"docs":{"https://xring.net/maven-setup-http-proxy/":{"tf":1.0}},"df":1}}}}},"r":{"docs":{},"df":0,"/":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"a":{"docs":{},"df":0,"l":{"docs":{},"df":0,"/":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"/":{"docs":{},"df":0,"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"/":{"docs":{},"df":0,"3":{"docs":{},"df":0,".":{"docs":{},"df":0,"3":{"docs":{},"df":0,".":{"docs":{},"df":0,"9":{"docs":{},"df":0,"/":{"docs":{},"df":0,"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"b":{"docs":{},"df":0,"e":{"docs":{},"df":0,"x":{"docs":{},"df":0,"e":{"docs":{},"df":0,"c":{"docs":{},"df":0,"/":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"f":{"docs":{"https://xring.net/maven-setup-http-proxy/":{"tf":1.0}},"df":1}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"i":{"docs":{},"df":0,"f":{"docs":{"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"tf":1.0}},"df":1}},"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"n":{"docs":{"https://xring.net/maven-setup-http-proxy/":{"tf":1.0}},"df":1}}}}}}},"w":{"docs":{},"df":0,"a":{"docs":{},"df":0,"k":{"docs":{},"df":0,"a":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{"https://xring.net/2024-summary/":{"tf":1.0}},"df":1}}}}}}},"x":{"docs":{"https://xring.net/istio-gateway-get-client-ip/":{"tf":1.0}},"df":1,"8":{"docs":{},"df":0,"6":{"docs":{},"df":0,"_":{"docs":{},"df":0,"6":{"docs":{},"df":0,"4":{"docs":{"https://xring.net/cross-compiling-rust-from-mac-to-linux/":{"tf":1.4142135623730951}},"df":1}}}}},"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{"https://xring.net/xcode-15-2-install-ios-17-2-simulator/":{"tf":2.0}},"df":1}}}},"m":{"docs":{},"df":0,"l":{"docs":{"https://xring.net/maven-setup-http-proxy/":{"tf":1.0}},"df":1}},"x":{"docs":{},"df":0,"@":{"docs":{},"df":0,"y":{"docs":{},"df":0,"y":{"docs":{},"df":0,".":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"m":{"docs":{"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"tf":2.23606797749979}},"df":1}}}}}}}}},"y":{"docs":{},"df":0,"e":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{"https://xring.net/2024-summary/":{"tf":1.0}},"df":1}}}},"z":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{"https://xring.net/blog-upgraded-to-zola/":{"tf":1.4142135623730951}},"df":1}}}}}},"title":{"root":{"docs":{},"df":0,"1":{"docs":{},"df":0,"5":{"docs":{},"df":0,".":{"docs":{},"df":0,"2":{"docs":{"https://xring.net/xcode-15-2-install-ios-17-2-simulator/":{"tf":1.0}},"df":1}}}},"2":{"docs":{},"df":0,"0":{"docs":{},"df":0,"2":{"docs":{},"df":0,"4":{"docs":{"https://xring.net/2024-summary/":{"tf":1.0}},"df":1}}}},"c":{"docs":{},"df":0,"a":{"docs":{},"df":0,"r":{"docs":{},"df":0,"g":{"docs":{},"df":0,"o":{"docs":{"https://xring.net/cargo-dependencies-from-git/":{"tf":1.0}},"df":1}}}},"l":{"docs":{},"df":0,"i":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"t":{"docs":{"https://xring.net/istio-gateway-get-client-ip/":{"tf":1.0}},"df":1}}}}}},"d":{"docs":{},"df":0,"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{"https://xring.net/docker-manually-transfer-image/":{"tf":1.0}},"df":1}}}}}},"e":{"docs":{},"df":0,"n":{"docs":{},"df":0,"v":{"docs":{},"df":0,"o":{"docs":{},"df":0,"y":{"docs":{"https://xring.net/istio-gateway-get-client-ip/":{"tf":1.0}},"df":1}}}}},"g":{"docs":{},"df":0,"i":{"docs":{},"df":0,"t":{"docs":{"https://xring.net/cargo-dependencies-from-git/":{"tf":1.0}},"df":1}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"i":{"docs":{},"df":0,"l":{"docs":{"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"tf":1.0}},"df":1}}}}},"h":{"docs":{},"df":0,"t":{"docs":{},"df":0,"t":{"docs":{},"df":0,"p":{"docs":{"https://xring.net/maven-setup-http-proxy/":{"tf":1.0}},"df":1}}}},"i":{"docs":{},"df":0,"o":{"docs":{},"df":0,"s":{"docs":{},"df":0,"_":{"docs":{},"df":0,"1":{"docs":{},"df":0,"7":{"docs":{},"df":0,".":{"docs":{},"df":0,"2":{"docs":{},"df":0,"_":{"docs":{},"df":0,"s":{"docs":{},"df":0,"i":{"docs":{},"df":0,"m":{"docs":{},"df":0,"u":{"docs":{},"df":0,"l":{"docs":{"https://xring.net/xcode-15-2-install-ios-17-2-simulator/":{"tf":1.0}},"df":1}}}}}}}}}}}}},"p":{"docs":{"https://xring.net/istio-gateway-get-client-ip/":{"tf":1.0}},"df":1},"s":{"docs":{},"df":0,"t":{"docs":{},"df":0,"i":{"docs":{},"df":0,"o":{"docs":{"https://xring.net/istio-gateway-get-client-ip/":{"tf":1.0}},"df":1}}}}},"k":{"docs":{},"df":0,"u":{"docs":{},"df":0,"b":{"docs":{},"df":0,"e":{"docs":{},"df":0,"r":{"docs":{},"df":0,"n":{"docs":{},"df":0,"e":{"docs":{},"df":0,"t":{"docs":{"https://xring.net/k8s-pull-images-from-private-registry/":{"tf":1.0}},"df":1}}}}}}}},"l":{"docs":{},"df":0,"a":{"docs":{},"df":0,"z":{"docs":{},"df":0,"y":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{"https://xring.net/lazylock-and-once-lock-in-rust/":{"tf":1.0}},"df":1}}}}}}},"i":{"docs":{},"df":0,"n":{"docs":{},"df":0,"u":{"docs":{},"df":0,"x":{"docs":{"https://xring.net/cross-compiling-rust-from-mac-to-linux/":{"tf":1.0}},"df":1}}}}},"m":{"docs":{},"df":0,"a":{"docs":{},"df":0,"c":{"docs":{"https://xring.net/cross-compiling-rust-from-mac-to-linux/":{"tf":1.0}},"df":1},"v":{"docs":{},"df":0,"e":{"docs":{},"df":0,"n":{"docs":{"https://xring.net/maven-setup-http-proxy/":{"tf":1.0}},"df":1}}}}},"o":{"docs":{},"df":0,"n":{"docs":{},"df":0,"c":{"docs":{},"df":0,"e":{"docs":{},"df":0,"l":{"docs":{},"df":0,"o":{"docs":{},"df":0,"c":{"docs":{},"df":0,"k":{"docs":{"https://xring.net/lazylock-and-once-lock-in-rust/":{"tf":1.0}},"df":1}}}}}}}},"r":{"docs":{},"df":0,"u":{"docs":{},"df":0,"s":{"docs":{},"df":0,"t":{"docs":{"https://xring.net/cross-compiling-rust-from-mac-to-linux/":{"tf":1.0},"https://xring.net/lazylock-and-once-lock-in-rust/":{"tf":1.0}},"df":2}}}},"x":{"docs":{},"df":0,"c":{"docs":{},"df":0,"o":{"docs":{},"df":0,"d":{"docs":{},"df":0,"e":{"docs":{"https://xring.net/xcode-15-2-install-ios-17-2-simulator/":{"tf":1.0}},"df":1}}}}},"z":{"docs":{},"df":0,"o":{"docs":{},"df":0,"l":{"docs":{},"df":0,"a":{"docs":{"https://xring.net/blog-upgraded-to-zola/":{"tf":1.0}},"df":1}}}}}}},"documentStore":{"save":true,"docs":{"https://xring.net/":{"body":"","id":"https://xring.net/","title":""},"https://xring.net/2024-summary/":{"body":"今天最后一天了,水一个年终总结。2024算是一个 gap year了,给自己放松了差不多三个月的时间,做了一些思考,也尝试了一些之前从未试过的东西。\n工作方面\n掰手指算了一下,“创业”第六年了。在这个团队里有过太多的从0到1,有过太多的造轮子。早几天跟小伙伴们聊起了从追求一个9到两个9到三个9,从网关 rt 500ms 到 80ms,也算是“小有成就”了。\n团队建设\n作为年轻人聚集地,咱们还是比较稳的。今年有一位后端小伙伴离开,有一位之前离职的测试小伙伴回归。极度扁平,基本不需要团队管理。大家都在自己的位置做自己的事,吃着老板画的饼,大概都在想着明年会不一样吧。\n编程语言\n和去年一样,Rust 依然是使用得最多的。今年把几个基础服务从 Go / Java 迁移到了 Rust,我一人一服务,从0到1,管它是不是轮子,能用就好,开心最重要。前端一如既往的烂,倒是尝试学习了一下 TypeScript,没有太多使用场景。然后复习了一下 Python 相关的,写了一些调用大模型的胶水代码。\n系统架构\n现在回想一下,在18年底就 all in 了 K8S 和 Istio,创业团队没有历史包袱还是舒服的。管它有没有坑,管它会不会,先上了再说。虽说一路踩坑填坑无数,但这玩意儿对于中小团队来说,走过一次基本到处可用了。\n今年在系统架构层面没有太多变更,基础服务有的变动只有配置中心从 etcd 切换到了更轻量的自己造的轮子。春节假期后会做一些 K8S 和 Istio 的升级工作。\nAI 和 LLM\n内部使用的类 ChatGPT 平台经过了多次升级,陆续添加了 OpenAI、Claude、Gemini、DeepSeek 的支持,一年用掉了5000多美刀,看起来还是提升了效率的。\n业务层面接入大模型也终于在下半年启动了,目前有两个场景在尝试中,更多的在路上。\n自己也尝试在借用 AI 和 LLM 相关的做一些独立开发,希望能在明年发布一款自己从需求开始的产品吧。\n近期比较多的精力在这一块了,做一些积累,计划明年在这块能有更多的产出。\n工具\n单独说一说 WakaTime 吧,一个记录“时间”的工作,个人觉得我还挺受用的。\n生活方面\n先说说孩子,三岁了,10月份出生的,关于是否上幼儿园的问题跟家里人有一些争执,还是决定晚一些再上幼儿园。春节过后有一次比较严重的生病,去住了几天院,万幸恢复的较好。关于孩子的教育,我个人承行快乐教育,在最近购置了帐篷天幕等装备,希望能坚持户外陪伴。\n然后说说媳妇儿,今年下半年换了工作,是她想要的“稳定”的工作。收入水平有所降低,但不重要,她开心就好了。另一个角度是有更多的时间陪孩子了。\n父母身体状态良好,这个最重要。下半年给父母安排了一场北京游,给我爹安排了心心念念梅兰芳大剧院看京剧。明年上半年需要再安排一次全面体检了。相比父母辈,祖父母、外祖父母辈身体状态较多,也给我妈整的有些憔悴,此处有些槽点...\n自己在生活上没有太多的变化,夏天有过一段时间的健身,没能每天坚持。唯一值得一提的是把英语学习当成了生活的一部分吧,在 Cambly 上了大概 83 节一对一的课,2500多分钟吧,口语能力有一些提升,明年需要更多的坚持。\n今年给自己差不多放了三个月的假,想清了一些东西,也甩掉了一些标签。如果要做个总结,那大概就是 做更好的自己 吧。然后希望明年的总结有更多的内容可以写下。\n","id":"https://xring.net/2024-summary/","title":"2024 总结"},"https://xring.net/blog-upgraded-to-zola/":{"body":"从19年参与“创业”至今,已经很长时间没有停下来做一些思考和总结了,也有很长时间没有将学的知识、踩的坑、买的教训等等来沉淀一下。TODO 里面记录了很多想要系统学习的内空,有书籍有视频有博客等等,很多时间脑子懂了不代表手懂了,那就多做一些记录吧。\n于是,博客迁移到 Rust 实现的 Zola,选择了一个简单的主题 terminimal,主题参照 Heitor's Log 进行了简单的装修 ,再搭配了一个基于 GitHub Discussions 的评论系统 giscus。基本就可以用起来了,等需要的时候再去折腾一下图床,就可以用来承载内容了。\n站点美容告一段落,希望每个月至少有两篇输出吧。\n自勉。\n","id":"https://xring.net/blog-upgraded-to-zola/","title":"博客迁移至 Zola"},"https://xring.net/cargo-dependencies-from-git/":{"body":"在 Cargo 项目中,最简单的依赖方式为:\n\n这会直接使用 crates.io 的依赖和版本,某些时候可能需要从源码仓库直接依赖某个分支或者依赖未发布到 crates.io 。此时,最小化的配置为:\n\n如果需要指定分支,可以配置为:\n\n上面两种使用基于 HTTPS 的认证,如果项目是非开仓库,需要进行额外配置,参考这里\n另外一种是基于 SSH 的认证,此时相关配置格式为:\n\n基于 SSH 的认证要求 ssh-agent,可以使用下面的方式快速添加:\n\n使用 ssh-add -l 来确认密钥已经成功添加到 ssh-agent。\n如果 SSH 密钥是有密码的,这个步骤需要输入密码。通过 ssh-agent 后续 Cargo 访问私仓时将不需要输入密码。\n当 Git 仓库中的代码更新了,使用以下命令来更新本地依赖的代码:\n\n","id":"https://xring.net/cargo-dependencies-from-git/","title":"在 Cargo 项目中使用 git 仓库作为依赖"},"https://xring.net/cross-compiling-rust-from-mac-to-linux/":{"body":"最近在用 Rust 开发一些提效小工具,在 Mac 平台编码但运行环境为 Linux(裸跑,非容器),将相关过程记录一下。\n之前这种跨平台的编译是使用 cross 来完成的,使用类似下面的命令来进行编译:\n\n本次直接用 cargo 来解决:\n\n使用 rustup target add 来添加目标平台的标准库\n安装目标平台的 链接器(linker)\n配置 cargo 来使 rustc 能够使用正确的链接器\n设置 TARGET_CC 环境变量\n使用 cargo build 来进行编译\n\n添加目标 target\n\n安装目标平台的链接器\n\n添加 cargo 配置文件\n\n添加下面的配置文件:\n\n设置环境变量\n\n开始编译\n\n设置环境变量和编译可以在同一步进行:\n\n然后在 ./target/x86_64-unknown-linux-gnu/release/ 可以找到编译产物。\n运行环境 glibc 版本过低问题\n当在运行环境执行 ./tool-name 时,部分服务器报错了:\n\n查看 ldd 版本:\n\n这是因为 glibc 版本较低(部分服务器运行好多年了,一直未替换),此时可以升级版本或者使用静态链接方案。升级版本考虑的问题比较多,下面继续看使用静态链接来编译。\n当 target 是 x86_64-unknown-linux-gnu 时,会使用动态链接,也就是在运行时来链接。因此会出现运行环境 glibc 版本不满足要求的情况。换用 x86_64-unknown-linux-musl 这个目标平台来解决问题。\n\n然后在 cargo 配置文件 .cargo/config.toml 中添加如下内容:\n\n最后执行编译:\n\n在 ./target/x86_64-unknown-linux-musl/release/ 可以找到编译产物。这样得到的可执行文件就是通过静态链接的了,应该在大部分的 Linux 上都可以执行。\n","id":"https://xring.net/cross-compiling-rust-from-mac-to-linux/","title":"Mac 平台交叉编译 Rust 至 Linux 平台"},"https://xring.net/docker-manually-transfer-image/":{"body":"使用公共或者私有的 Registry 可以方便的将 Docker 镜像进行转移,在某些场景可能期望手动来迁移镜像。\n此时可以使用 docker save 和 docker load 指令将镜像打包然后在其它位置加载回来。这里使用 nginx 镜像来做演示,将镜像从一台机器手动迁移到另一台机器。\n\n打包镜像\n\n然后 nginx:latest 镜像被打包为 nginx.tar 文件,此时可以通过 scp 之类的方法传输这个镜像文件。\n\n在打包过程中可以使用类似 docker save nginx | gzip > nginx.tar.gz 的命令进行压缩减小文件体积。\n\n更多参数请参考 官方文档 对此命令的说明。\n加载镜像\n在另一台没有 nginx:latest 镜像的机器上执行:\n\n执行完成后 nginx:latest 镜像就被手动迁移到了另一台机器上。\n更多参数请参考 官方文档 对此命令的说明。\n","id":"https://xring.net/docker-manually-transfer-image/","title":"Docker 手动迁移镜像"},"https://xring.net/istio-gateway-get-client-ip/":{"body":"背景:使用 Istio Ingress Gateway(Envoy),需要获取客户端真实 IP 地址\n使用 Helm 安装 Istio 会安装一个名为 istio-ingressgateway 的 Service,类型为 LoadBalancer,可以将服务暴露到公网。 \n这个 Service 的 spec.externalTrafficPolicy 默认值是 Cluster,我们只要将这个值更新为Local,就可以在 X-Forwarded-For 请求头获取到客户端真实 IP 地址了。\n","id":"https://xring.net/istio-gateway-get-client-ip/","title":"Istio 中配置 Envoy 获取 Client 真实 IP"},"https://xring.net/k8s-pull-images-from-private-registry/":{"body":"在企业内部使用 private registry 来存储私有镜像显然是必需的,本例的私仓使用 Harbor,下面来看看在 Kubernetes 集群中怎么配置使用我们建立的私有镜像仓库。假设私有镜像仓库地址为:https://hub.xring.info,我们要用的镜像为 nginx:v0.1.0,存在仓库 mynginx 中。如果使用 docker pull 来拉取镜像则命令为:\n\n为了在 Kubernetes 中使用私有镜像仓库,我们需要做两个事:\n\n创建一个存储了私有镜像 credential 信息的 Secret 资源对象\n在 Pod 创建模板使用 spec.imagePullSecrets 中指定创建的 Secret 对象\n\n\n创建 Secret 资源对象\n\n指定 Secret 对象\n以下面的 Pod 资源定义为例:\n\n然后再使用 kubectl apply -f mynginx.yaml 来创建 Pod 对象,就可以从私有镜像仓库中拉取镜像了。\n","id":"https://xring.net/k8s-pull-images-from-private-registry/","title":"Kubernetes 从私有镜像仓库拉取镜像"},"https://xring.net/lazylock-and-once-lock-in-rust/":{"body":"LazyLock 和 OnceLock 是 Rust 中用于实现惰性初始化的两种不同的锁机制。它们都可以用于延迟初始化某个值,直到第一次访问时才进行计算和存储。它们被视为对 lazy_static 和 once_cell 的现代替代方案,提供了更简洁和类型安全的接口。\n\nInitializing CONFIG... 的内容只会被打印一次。\n\n在已初始化的值上多次调用 get_or_init 不会重新初始化。\nLazyLock\n\n线程安全性: LazyLock 使用内部的同步机制来确保初始化逻辑只会执行一次,即使在多个线程同时访问的情况下。它通常用于全局静态变量的惰性初始化。\n使用场景: 适合在程序启动时就能确定初始化逻辑的场景,尤其是全局静态变量。\n\nOnceLock\n\n线程安全性: OnceLock 也使用同步机制来确保初始化逻辑只会执行一次。它提供了一个简单的 API 来在运行时进行初始化。\n使用场景: 适合需要在运行时初始化的场景,尤其是在需要确保某个值只被初始化一次的情况下。\n\n","id":"https://xring.net/lazylock-and-once-lock-in-rust/","title":"Rust 中的 LazyLock 和 OnceLock"},"https://xring.net/maven-setup-http-proxy/":{"body":"有时候基于公司安全因素考虑或者由于一些特殊原因,Maven 无法正常访问外部仓库来下载所需要的资源。这种情况下,可以通过为 Maven 配置 HTTP 代理来解决问题。\n通过以下步骤来为 Maven 配置 HTTP 代理:\n\n假设我们有如下 HTTP 代理信息:\n\n下一步来寻找 Maven 配置文件。settimgs.xml 文件可能存在于两个位置:\n– ~/.m2/settings.xml\n– M2_HOME/conf/settings.xml\n如果 ~/.m2/settings.xml 文件存在,则 优先 使用这个文件进行配置,如果不存在则需要使用 M2_HOME/conf/settings.xml 文件。如果没有配置 M2_HOME 这个环境变量或者忘记了 Maven 的安装位置,可以通过 mvn -version 可以找到 Maven home 目录,即上面提到的 M2_HOME,在 Mac 下得到类似输出:\n\n则 settimgs.xml 文件就在 /usr/local/Cellar/maven/3.3.9/libexec/conf 目录中。\n编辑找到的 settings.xml 文件,搜索 proxies 关键字,找到类似下面的这一段:\n\n在 proxies 下可以配置多个 proxy 元素,如果声明了多个 proxy 元素,则默认情况下第一个被激活的 proxy 元素会被使用。\n当 proxy 元素里的 active 被设置为 true 时表示该 proxy 处于激活状态。\nid 字段是 proxy 元素的一个标识\n当代理不需要认证时,username 和 password 可以被注释掉\nnonProxyHost 元素用来指定哪些主机名不需要代理,当有多个主机名不需要代理时用 | 来分隔主机名,主机名里支持通配符(如 *.google.com)。\n了解了这段 XML 各元素的意义后将得到的 HTTP 代理信息依次填入相应元素:\n\n保存 settings.xml 配置文件,Maven 配置 HTTP 代理完成。\n","id":"https://xring.net/maven-setup-http-proxy/","title":"Maven 设置 HTTP 代理"},"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"body":"业界良心 Cloudflare 提供了很多实用的功能,其中之一就是 Email Routing,可以用来便捷的将自定义域名邮箱收到的邮件转发到某个目标邮箱。再配合上 Gmail 的一些设置,即可以轻松实现使用 Gmail 来收和发域名邮箱的邮件。\n\n域名需要在 Cloudflare 或者使用 Cloudflare 的 Nameserver\n\n收邮件\n\n在 Cloudflare 的控制台,选择配置 Email --> Email Routing --> Routes\n添加 自定义邮箱地址 [email protected]\n然后选择转发的目标邮箱地址即可。\n\n可以在 Destination addresses 处添加多个 目标邮箱地址。目标邮箱地址在第一次添加时需要进行验证操作。\n通过上面的配置,发送到 [email protected] 的邮件会被转发到配置的 目标邮箱地址,但是在 Gmail 回复邮件的时候仍然使用 目标邮箱地址。需要继续下面的配置才能将回信发件人地址修改为 [email protected]。\n发邮件\n\n需要 Gmail 开启了 2FA,https://myaccount.google.com/signinoptions/two-step-verification\n创建一个 Gmail 的 App 密码,https://security.google.com/settings/security/apppasswords 分别选择 Mail 和 Mac 两个选项后生成,得到密码 ABC\n在 Gmail 页面,打开 see all settings --> Accounts and Import --> Send mail as --> add another email address\n填写表单的第一步 Email Address 填写 [email protected],即自定义域名邮箱\n填写表单的第二步 SMTP Server 填写 http://smtp.gmail.com,用户名填写 gmail 邮箱地址,密码填写上面得到的 ABC\n添加账户,然后在写信或者回信时就可以选择 [email protected]\n\n也可以在 Send mail as 处勾选 Reply from the same address the message was sent to 这样回信的时候就默认使用收信的地址了。\n配置好上面两个部分,就完成了使用 Gmail 来收和发域名邮箱的邮件。\n","id":"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/","title":"使用 Gmail 实现域名邮箱收发功能"},"https://xring.net/xcode-15-2-install-ios-17-2-simulator/":{"body":"更新 Xcode 到 15.2 之后,需要安装iOS_17.2_Simulator,但是在 Xcode 里下载总是网络错误,或者下载卡在 99% 的地方,可以用如下步骤来手动安装。\n打开官网 https://developer.apple.com/download/all/?q=ios,登录后选择下载 iOS 17.2 Simulator Runtime.dmg 文件。\n假设文件存储到 ~/Downloads,在终端依次执行下面的命令:\n\n然后在 Xcode 就可以看到 iOS_17.2_Simulator 了。\n","id":"https://xring.net/xcode-15-2-install-ios-17-2-simulator/","title":"Xcode 15.2 安装 iOS_17.2_Simulator"}},"docInfo":{"https://xring.net/":{"body":0,"title":0},"https://xring.net/2024-summary/":{"body":31,"title":1},"https://xring.net/blog-upgraded-to-zola/":{"body":9,"title":1},"https://xring.net/cargo-dependencies-from-git/":{"body":18,"title":2},"https://xring.net/cross-compiling-rust-from-mac-to-linux/":{"body":42,"title":3},"https://xring.net/docker-manually-transfer-image/":{"body":18,"title":1},"https://xring.net/istio-gateway-get-client-ip/":{"body":16,"title":4},"https://xring.net/k8s-pull-images-from-private-registry/":{"body":23,"title":1},"https://xring.net/lazylock-and-once-lock-in-rust/":{"body":13,"title":3},"https://xring.net/maven-setup-http-proxy/":{"body":43,"title":2},"https://xring.net/send-receive-email-with-cf-gmail-and-custom-domain/":{"body":62,"title":1},"https://xring.net/xcode-15-2-install-ios-17-2-simulator/":{"body":13,"title":3}},"length":12},"lang":"English"};