问题
GitLab Shell Runner 虽然使用方便,但在实际运行过程中可能会遇到一些环境方面的问题,比如:
- 当前 Runner 是以哪个用户身份执行的任务?我应该在哪个用户目录下安装所需的软件包?
- 为什么在 gitlab-runner 用户目录下安装的软件,在 CI 流程中却无法正常生效?
- 为什么 CI 实际运行的 Node.js 版本与我在配置中指定的不一致?
GitLab Shell Runner 虽然使用方便,但在实际运行过程中可能会遇到一些环境方面的问题,比如:
日常讨论最多的树基本上都是查找树,构建、调整树的目的,都是为了快速地查找。在有限的资源下,谁能够在树的构建和查找上取得更加均衡的性能,谁就会成为最常用的技术。这里说的有限资源,主要是指存储:内存或磁盘。
如果数据集较少,只需要在内存中操作,主要考虑构建和查找树的时间复杂度,这类树的优胜者是红黑树;如果数据集很大,如GB级别,内存不足以存储整个数据集,势必以磁盘为主要存储手段,磁盘IO会是主要问题,减少IO操作是主要目的,这类树的优胜者是B+树。
严格地说,无论红黑树还是B+树,和平衡二叉树(AVL树)没有必然的联系,但考虑到树的平衡对查询的重要性,因此了解构建AVL树的详细步骤也是有必要的。
作为Python平台上的约定类框架,Django Admin因为可以非常方便地管理数据表而经常被我们使用。尽管功能强大,但动辄好几个月的使用间隔会让重新上手时不知所措。这里针对常用case进行速记。
安装django-admin命令行工具,创建项目
以下内容作为这段时间研究Kubernetes网络的总结,一口气写完,代表了当前对Kubernetes网络的认知,可能有误,权当摆龙门阵。
通常在带有登录功能的业务中,我们会向用户(客户端)发放访问凭证,往后一段时间,用户持该凭证即可在应用内畅行。不同应用可能有不同的名字:access_token、token、xxxid,也可能有不同的形式:不透明字符串、JWT等。本文讨论访问凭证的安全性。
这两天用go写一点点东西,发现自己的编码速度真慢,原因还是对常用API不熟悉,文件操作、压缩解压缩、进程启动、http服务操作,貌似一点都不知道。于是只能翻手册,一点点看,突然间想到一个事情——我该不会是个调包侠吧🤔。
两个多月前,我重构了支付服务苹果IAP部分代码,完善了苹果支付逻辑;大半个月前,以加强可维护性为目的重构了用户服务的代码;上周三开始,以同样的理由,重构了支付服务剩余的代码。这三次重构工作,前前后后加起来得有一个月工作量,这里进行总结:到底重构了什么。
为什么需要学习iptables ?
Linux防火墙、NAT、Kubernetes等很多地方都用到iptables,了解它很重要。
本文主要信息来源是netfilter官网推荐的iptables教程。
本文目的:了解iptables原理;了解iptables配置方法,看懂iptables配置脚本
三方登录常需要客户端和服务端共同完成,对OAuth2,客户端获取授权码,服务端用授权码换取访问凭证;对OIDC,客户端获取ID Token,服务端验证其正确性用以登录之类的场景。但两端又常非同一个开发人员,服务端逻辑写好后需要客户端配合获取授权码或ID Token作为输入进行调试验证。这样效率太过低下,协调上会有困难。
最好是服务端能够自己获取输入参数,这里介绍常见的四种登录方式的简单调试方法:微信登录、Apple ID登录、Google登录、Facebook登录。
我每篇博客的书写都是有动机的,它们或是对一段时间的工作总结、或是对某个事物的感悟。这次要写X.509的博客,是因接入IAP时,从网上搜索的各种问题发现一个惊人的事实:很多人不知道X.509证书的验证方式,当然也包括我。