本周新做一个需求,为IOS APP接入苹果第三方登录。查看官方文档,发现其在IOS端操作描述是非常细致的,但在用户服务端的讲解实在是不知所云,让人头大。只能借助广大网友的智慧。本文并非完全原创,因为无论概念解读,还是操作方式,都是从各个文章处抄来的。本文最大的作用,在于针对自己和团队内部的开发记录,防止多次踩坑。
Sign in with Apple,对IOS和其它平台的处理方式是有很大差别的。本文只针对IOS平台,其它平台可以参考这篇文章,说得非常详细
Hello Jellyyyyyyyyyyyyyy !!
我的Python是从使用开始的,因此很多Python基础理论并不是很足,之前在使用Celery时,因为日志无法正常打印而排查了一天。所以,为了节省时间,同时知其所以然,是时候系统梳理一下Python中日志的使用方法了。
之前的文章介绍了如何编写一个Maven插件。那插件的使用上呢?在本地,我们可以安装到本地仓库,使用没问题;在SIT环境中,我们可以安装到公司内部的私有仓库中。但如果公司的Maven包尚未形成规模,不需要搭建私有仓库,且私有仓库需要有专人进行维护,如果只有少量包,可能过一段时间都忘了还有这么个东西。等到出问题了找半天,又是一个麻烦事。
上传到Maven中央库也许是一个非常好的选择,任何人在任何地方都可以使用该包,爽歪歪。
Maven是个很好用的打包编译工具,也是目前自己正在使用的主力工具。对一些个性化的需求,编写插件,实现一些特有的功能,还是非常有效的。这次刚好,有需求如是:maven编译时用到数据库表描述文件自动生成插件,需要从配置文件中读取账号密码,而目前maven只提供了读取properties文件到声明周期的工具。而项目的通用配置文件是json,如果临时加一个重复的properties文件,显得多余且没必要。于是需求应运而生,开发一个读取json文件到Maven生命周期的工具。
我叫它 json-loader-maven-plugin。
前两天使用K8S的ingress配置,遇到两个有包含关系的uri需要匹配到两个不同的容器中的情况,找了一下具体的匹配规则,主要来自这篇文章
根据墨菲定律,可能会发生的事就一定会发生。如果对Nginx的路径配置一直存疑,迟早会出问题。因此,搞懂很重要。
总体来说,Nginx将配置根据不同的server分成了不同的块,每当一个请求过来时,Nginx都会根据一定的算法确定哪一个配置块来处理该请求。其中起关键性作用的是server块和location块。前者定义了一个虚拟服务器,管理员通常会定义多个server块,然后根据请求的域名,端口或IP决定匹配到哪一个;后者存在于server块内,根据URI对虚拟服务器进行更加详细的区分。二者组合起来能够实现非常灵活的配置。
Pipenv是一个包管理和虚拟环境工具,致力于将所有的打包工具(bundler, composer, npm, cargo, yarn等)中的优点带到python世界。它将pip和virtualenv结合起来,为每个project创建一个虚拟环境,同时通过Pipfile指定需要安装的依赖,并自动解析依赖的依赖,生成的Pipfile.lock将各依赖版本锁定,以使各个环境保持一致。
什么是有状态pod,即pod的运行状态与该pod耦合,当发生pod调度时新创建的pod必须和原有pod保持一致的状态,否则会出现状态丢失。前面我们所学习的pod都是由RC或RS创建的,然而他们无法满足pod对状态的需求。于是我们有了StatefulSet,它是专门定制的一类应用,这类应用的每个实例都是不可替代的个体,都拥有稳定的名字和状态。
前面介绍了各种Kubernetes资源以及使用方法,但在实际使用中,发布和升级总是避免不了的话题。使用一个容器级别的工具,每次发布时候敲一大段命令肯定是不行的,K8S提供声明式的发布升级方式,只需替换镜像即可触发,且提供滚动升级、回滚、暂停等操作。
对于特殊的pod,比如系统监控应用,知晓应用运行环境的各项参数是很常见的功能。Kubernetes对此也提供了很好的支持,用户可以通过环境变量、文件、API等多种方式获取到相关数据。
根据应用的开发进程,应用的配置一般会经历先嵌在应用本身,或通过命令行参数的形式传入。到测试生产阶段随着配置的增多会抽取为一个或多个配置文件。对于容器化应用,我们还可以为容器设置环境变量,应用中读取该变量即可。而对于K8S,还可以使用gitRepo卷作为配置文件的载体。但这些都还是太笨重了,K8S提供了更加简单的方法:ConfigMap,用于提供普通配置;Secret用于提供需要加密的配置。