2021-09-04 13:37:13
摘要:一、了解MVVM
1. 什么是MVVM
一种设计模式
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
为什么需要MVVM?解决什么问题?
降低耦合、独立开发、逻辑重用(Xamarin MAUI多平台应用)、可测试
响应式布局
2. 控件交互到MVVM模式的转变
控件交互:基于控件的功能开发
-**MVVM**模式
代码/项目结构
Models:
Views:
ViewModels:
3. MVVM绑定模式下的信息交互
数据类型:INotifyPropertyChanged接口
public event PropertyChangedEventHandler? PropertyChanged;
执行事件,发公告
ContextMenu,注意:命令的数据源的指定
行为动作:ICommand接口
public event EventHandler? CanExecuteChanged;
public bool CanExecute(object? parameter)
public void Execute(object? parameter)
是不是所有控件都有Command属性?是不是所有动作都可以使用Command?
无法绑定的动作如何处理?
4. MVVM绑定扩展
无法绑定的对象属性
通过附加属性进行扩展
无法绑定的动作事件
(InputBindings: )
单击鼠标左键 :LeftClick 双击鼠标左键:LeftDoubleClick
单击鼠标中键 :MiddleClick 双击鼠标中键:MiddleDoubleClick
单击鼠标右键:RightClick 双击鼠标右键:RightDoubleClick
不执行任何操作:None 旋转鼠标滚……
阅读全文
2021-06-05 13:18:50
摘要:一个好的 Commit Message 至关重要:
可以使自己或者其他开发人员能够清晰地知道每个 commit 的变更内容,方便快速浏览变更历史,比如可以直接略过文档类型或者格式化类型的代码变更。
可以基于这些 Commit Message 进行过滤查找,比如只查找某个版本新增的功能:git log --oneline --grep ^feat|^fix|^perf。
可以基于规范化的 Commit Message 生成 Change Log。
可以依据某些类型的 Commit Message 触发构建或者发布流程,比如当 type 类型为 feat、fix 时我们才触发 CI 流程。
确定语义化版本的版本号。比如 fix 类型可以映射为 PATCH 版本,feat 类型可以映射为 MINOR 版本。带有 BREAKING CHANGE 的 commit,可以映射为 MAJOR 版本。
Angular 规范在功能上能够满足开发者 commit 需求,在格式上清晰易读,目前也是用得最多的。
Angular 规范其实是一种语义化的提交规范(Semantic Commit Messages),所谓语义化的提交规范包含以下内容:
Commit Message 是语义化的:Commit Message 都会被归为一个有意义的类型,用来说明本次 commit 的类型。
Commit Message 是规范化的:Commit Message 遵循预先定义好的规范,比如 Commit Message 格式固定、都属于某个类型,这些规范不仅可被开发者识别也可以被工具识别。
在 Angular 规范中,Commit Message 包含三个部分,分别是 Header、Body 和 Footer,格式如下:
type[optional scope]: description
// 空行
[optional body]
// 空行
[optional footer(s)]
其中,Header 是必需的,Body 和 Footer 可以省略。在以上规范中,必须用括号 ()括起来, [] 后必须紧跟冒号 ,冒号后必须紧跟空格,2 个空行也是必需的。
在实际开发中,为了使 Commit Message 在 GitHub 或者其他 Git 工具上更加易读,我们往往会限制每行 mess……
阅读全文
2021-04-10 10:53:48
摘要:1、编辑yaml文件
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: jenkins-claim
namespace: qjy-cicd
annotations:
volume.beta.kubernetes.io/storage-class: nfs-storage
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
# jenkins 对应的 RBAC
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: jenkins-admin
namespace: qjy-cicd
labels:
name: jenkins
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: jenkins-admin
labels:
name: jenkins
subjects:
- kind: ServiceAccount
name: jenkins-admin
namespace: qjy-cicd
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
# jenkins 对应的 svc
---
apiVersion: v1
kind: Service
metadata:
name: jenkins
namespace: qjy-cicd
labels:
app: jenkins
spec:
type: NodePort
ports:
- name: http
port: 8080 #服务端口
targetPort: 8080
nodePort: 32001 #NodePort方式……
阅读全文
2021-04-02 19:15:08
摘要:1、打包镜像
docker build -t zq-apigateway:1.0.0 ./zq-apigateway/.
2、Helm Create
在master节点上创建一个文件夹,如deploy
cd deploy
helm create zq-apigateway
将生成的文件下载到本地进行编辑
3、编辑deployment.yaml
spec/template/spec/containers,imagePullPolicy后
containers:
- name: {{ .Chart.Name }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
image: {{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
env:
- name: ASPNETCORE_HOSTINGSTARTUPASSEMBLIES
valueFrom:
configMapKeyRef:
name: zq-env-config
key: skywalking_hostingStartup
- name: SkyWalking__Transport__gRPC__Servers
valueFrom:
configMapKeyRef:
name: zq-env-config
key: skywalking_servers
- name: exceptionless__ServerUrl
valueF……
阅读全文
2021-03-27 17:09:31
摘要:截止到目前生产环境上要使用到的基础应用基本已经搭建完成,但似乎还缺少一点什么,对!就是docker镜像的仓库,如果没有私仓,我们需要把镜像手动推送各个node节点,这样太不方便了。
我们使用harbor来搭建:
一、安装
1. 确定30002,30003,30004端口没有被占用
2. helm repo add harbor https://helm.goharbor.io
3. helm search repo harbor
4. helm pull harbor/harbor --version=1.6.1
5. tar -xf harbor-1.6.1.tgz
6. 改values里面storageClass的值nfs-storage(有3个地方)
7. 改ingress
ingress:
hosts:
core: harbor.qhfinance.com
notary: notary.qhfinance.com
8. 改harborAdminPassword: xxxxx #设置密码
9. helm install harbor -f harbor-values.yaml --namespace qjy-public harbor/harbor --version 1.6.1
10. 配置host,随便一个节点的ip地址
vim /etc/hosts
172.16.0.3 harbor.qhfinance.com
二、访问
访问地址http://harbor.qhfinance.com/,默认用户名/密码为:admin/xxxxx
默认harbor只有一个公共的library项目,该项目的权限和docker hub一样不需要认证就可以拉取镜像,我们把它改成私有,也可以重新创建一个私有项目。
三、配置证书
因为我们部署的Harbour是有自带凭证(CA),所以需要再Docker Client加入凭证,这样Docker Client才有办法存取到私有的注册表。
首先,在Kubernetes Master使用以下指令取得凭证
kubectl get secret/harbor-harbor-ingress -n qjy-cicd -o jsonpath=……
阅读全文
2021-03-25 15:47:21
摘要:1、下载Charts包
git clone https://github.com/apache/skywalking-kubernetes
cd skywalking-kubernetes/chart
helm repo add elastic https://helm.elastic.co
helm dep up skywalking
2、修改配置文件 skywalking/values-my-es.yaml
oap:
image:
tag: 8.4.0-es7 # Set the right tag according to the existing Elasticsearch version
storageType: elasticsearch7
ui:
image:
tag: 8.4.0
service:
type: NodePort
externalPort: 80
internalPort: 8080
nodePort: 30008
elasticsearch:
enabled: false
config: # For users of an existing elasticsearch cluster,takes effect when `elasticsearch.enabled` is false
host: elasticsearch-client.qjy-efk.svc.cluster.local
port:
http: 9200
user: elastic # [optional]
password: xxxxx # [optional]
3、执行
kubectl create namespace qjy-apm
helm install skywalking skywalking --namespace qjy-apm -f ./skywalking/values-my-es.yaml
阅读全文