SwiftUI 文本框TextField添加清除按钮 UIKit 框架的 UITextField可以配置clearButtonMode,但是SwiftUI框架里的TextField没有这个,需要自己实现。IOS开发我不熟悉,也没花时间去细学,本解决方案来自建议多使用英文技术网站,这么简单一个问题我在中文网站搜了好久都没找到,要么文不对题要么需要付费(不是说不尊重别人的知识,只是就这么点东西~)如果stackoverflow打开总是提示人机验证但是又没有可操作的图片或按钮那就是由于某些大家都熟知的原因没加载完全,参考。
istio访问网格外部服务 概述设想一个这样的场景需求:cluster1集群处在网格mesh1管理下,default命名空间下部署有应用sleep, cluster2处在另一网格mesh2下,它的default命名空间下部署有helloworld应用。现sleep应用希望能以域名test.external.helloworld的形式访问cluster2中的helloworld。这不属于istio的四种多集群部署模型之一,服务之间的调用需要另做配置。配置版本备注kubernetes 1.23.3istio 1.12暴
Istio多集群调研 版本 1.12概述将多个集群纳于同一网格下管理。部署模型总共有4种基本部署结构:相同网络下多控制面两集群处在相同网络下,各自部署一个控制面,istio资源只影响到本集群中的sidecar;因为处在相同网络,pod与pod之间可以直接通信(同上)。相同网络下单控制面两集群处在相同网络下,其中一个集群共用另一集群的控制平面,在控制平面组所在集群创建istio资源可以下发到两个集群sidecar中;因为处在相同网络,pod与pod之间可以直接通信(网格istiod做了集群间的服务发现和流
记一次不典型的 kubeadm init 失败(kubelet 启动失败) 记录一次不典型的 kubeadm init 失败背景原有kubernetes 环境,版本较老v1.19.8,需要用新版的,于是直接重装操作及问题#1. 安装新版本组件yum install -y kubeadm-1.23.0-0 kubelet-1.23.0-0 kubectl-1.23.0-0 --disableexcludes=kubernetes#2. 使用kubeadm重新部署kubeadm resetkubeadm init --image-repository=regist
kubernetes ingress原理及使用 概述k8s提供NodePort类型的Service可以用于向集群外暴露服务,但是其具备一定局限性,如端口维护困难(一个端口只能供一个服务使用且需要提前规划),只能提供4层负载。一个解决思路是使用具备7层路由功能的代理比如nginx作为所有外部流量的唯一入口,再由代理转发到不同的后台服务。以nginx为例,在集群部署一个nginx并以NodePort类型Service暴露给外部,然后通过添加nginx配置的形式把流量路由到不同后台服务的Service。ingress就是采用类似机制的一套解决方案。其中涉及
elastic-package 启动elastic报错 running Docker Compose build command failed: exit status 1 背景调试elastic integration,参考Test integration,使用elastic-package工具调试integration,启动elastic stack测试环境时(工具安装和概念参考上述链接官文):elastic-package stack up 报错:Boot up the Elastic stackUsing profile /home/lsd/.elastic-package/profiles/default.Remember to load stack e
minikube 部署的集群client证书过期 问题上午还好端端能用的kubectl工具突然报错:kubectl get poderror: You must be logged in to the server (Unauthorized)检查查看客户端config,并尝试手动指定kubectl config viewkubectl get pod --kubeconfig configpath同样报错检查config文件中所列的crt等文件是否存在ll $HOME/.minikube/profiles/minikube/ -
k8s operator-sdk安装及使用 参考 知乎文章 Kubernetes Operator 快速入门教程, Operator sdk github安装 参考 operator sdk 官方安装文档# set platform informationexport ARCH=$(case $(uname -m) in x86_64) echo -n amd64 ;; aarch64) echo -n arm64 ;; *) echo -n $(uname -m) ;; esac)export OS=$(unam
k8s容器资源limit和requests Example 2-3. Resource limitsapiVersion: v1kind: Podmetadata: name: random-generatorspec: containers: - image: k8spatterns/random-generator:1.0 name: random-generator resources: requests: cpu: 100m memory: 100Mi limits: cpu: 200m memory: 200M
cobra 命令行参数StringVarP与BoolVarP区别 使用cobra实现命令行参数解析的时候发现一个现象:bool类型参数和string类型参数解析时所需传入参数个数不一样, 假设有如下两行flag声明: cmd.Flags().StringVarP(&strV, "strVar", "", "defaultS", "a string param") cmd.Flags().BoolVarP(&boolV, "boolVar", "", false, "a bool param")在参数调用的时候就是cmd --strV newS
goland 无法拉取golang.org/x依赖 写go程序有时候会引到golang.org/x的包,下不下来就会飘红,go get也会失败,没研究过依赖处理,每回解决完就忘了,再遇到又得查,特记:goland 设置,file->Settings->Go->Go Modules ,勾选Enable Go modules integration,并在Enviroment一栏填新增GOPROXY:Apply 保存退出。如果还没有mod文件,需要先初始化cd $projectdirgo mod init ./go mod ti
Golang 获取当前可执行文件名 如果编译好的文件修改了文件名,又希望能正确打印usage信息等,就可以通过动态获取当前可执行程序文件名实现:func main() { path,_ := os.Executable() _,exec := filepath.Split(path) cmd := cobra.Command{ Use: exec, Short: "", Long: "",
goland 自动更新mod文件 问题使用goland,很多时候拉取代码遇到问题:本地mod文件与远端库不一致,例如这导致pull代码的时候会报冲突无法拉取。尽管使用rollback将mod文件与远端同步或者stash掉本地修改,goland也会立刻对mod重新做出修改,导致打开goland的情况下无法拉取最新代码。原因git自不用说,本地代码与远端不同就是不能拉取;问题出在goland,它会自动实时根据代码中的引用删除不必要的依赖项。解决去掉goland自动依赖更新即可windows: file -> settings
go get 报错 “is a GOROOT, not a GOPATH. For more details see: ‘go help gopath‘“ 笔记:删除 $GOPATH/src/cmd 目录解决:rm -rf $GOPATH/src/cmd参考
go get报错“is a GOROOT, not a GOPATH. For more details see: ‘go help gopath‘” 删除 $GOPATH/src/cmd 目录解决:rm -rf $GOPATH/src/cmd参考 https://www.jianshu.com/p/3fb4e58e4528
ubuntu下搭建nfs服务器 转载自https://www.cnblogs.com/Charles-Zhang-Blog/archive/2013/02/05/2892879.htmlubuntu下搭建nfs服务器1.1搭建NFS服务器NFS(Network FileSystem,网络文件系统)是由SUN公司发展,并于1984年推出的技术,用于在不同机器,不同操作系统之间通过网络互相分享各自的文件。NFS设计之初就是为了在不同的系统间使用,所以它的通讯协议设计与主机及操作系统无关。NFS分服...
shell read 指定分隔符 read默认使用空格做分隔符 如下:echo "aa bb"|while read a b;do echo $a,$bdone#默认按空格做分割,打印出aa,bb如果要修改分隔符,需要给IFS变量赋值:read --help其中有一句:…Only the characters found in IFSarerecognizedasworddelimiters.只有IFS are recognized as word delimiters. 只有IFSarerec
shell 管道循环内对外部变量赋值失败 问题写shell的时候遇到一段未如预期执行的代码:...str=""mysql -u xx -h localhost -pxx -Ne "select col1,col2 from db1.tbl1" | while read a b;do str=$str,$a,$bdoneecho "str is $str" 预期最后打印的应该是db读取的内容拼接结果,但实际打印出来str为空:str is 原因这是因为使用了管道|,在管道中的循环逻辑不能作用到外部变量,也就是说在上述do
gorm实现insert ignore into语句调用 insert into my_table values(‘1’,‘a’) :type MyTable struct { x string y string}func (tn *MyTable) Create(db *gorm.DB) error { return db.Create(tn).Error}func (tn *MyTable) TableName() string { return "my_table"}insert ignore into my_table .