博客
ChatGPT初学者最佳实践
2022年11月底,ChatGPT引爆了新一轮AI的革命,也让人们意识到AI真的能够大幅度提高人们的工作效率,甚至有人担心自己的工作会因为AI不保。这种居安思危的意识是正确的,但是正如锛凿斧锯的出现,并没有让木匠这个行业消失,而是让这个行业以更高效的方式工作。所以作为一种工具,我们应当对ChatGPT有一个正确认知,我们不要把自己定位成ChatGPT,而是要站在更为宏观的角度上,将自己定位成利用工具的人,才不会出现被AI淘汰的局面。
17176-05-17
使用Mock思想进行单元测试Python篇
为什么使用Mock进行单元测试? 从功能开发完成的定义来看,至少包括:代码本身、文档及单元测试。而往往在实际开发中,由于需求的不停的变化,导致文档及单元测试是开发过程中直接被忽略的内容。反观优秀的开源项目,在全球几千人合作开发的大项目中,仍然能保持代码的高质量,这其中文档和单元测试是必不可少的环节之一。
3036-12-03
从Notion迁移至语雀的图片问题
为什么要迁移 Notion是一款非常优秀的笔记软件,在此之前我一直是印象笔记的拥趸,但是随着Notion这种全新概念的、符合程序员使用习惯的笔记软件出现后,完全撬动了印象笔记的市场。但是由于Notion服务器主要存储于国外,图片主要在AWS S3上,国内使用的速度上的用户体验较差。
28286-11-28
Serverless奇亚币(Chia)挖矿与成本分析
奇亚币Chia是最近非常火的新币种,火爆到什么程度呢?火爆到大容量的硬盘都被卖光了。另外一点Chia的创始人就是BT的创始人,依靠的是硬盘容量挖矿,号称绿色挖矿。虽然一直对区块链行业不是很了解,但是仍然想凑个热闹,想尝试一下Serverless是不是能挖矿。
29296-04-29
AWS Certified Solutions Architect - Associate Exam(Q1-Q100)
参考链接:https://www.examtopics.com/exams/amazon/aws-certified-solutions-architect-associate/view/
31316-03-31
AWS Certified Solutions Architecture Associate Practice
该模拟题出自AWS Practice,是付费后的模拟题,一共25道题,相对来说答案比较准确,答题正确率在76%,看中文的命题相对来说对理解题目内容更简单。
30306-03-30
Restic设计原理
Restic(https://github.com/restic/restic)一款开源文件备份工具,存储文件前将文件切割成对象进行存储,可以支持多种存储后端,包括本地目录、SFTP、HTTP Server和多种云平台的对象存储。Restic支持快照等备份常用功能,同时兼顾数据存储的安全性。 本文主要讲解Restic设计原理,内容来源于Restic官方文档的Design篇(https://restic.readthedocs.io/en/latest/100_references.html#design)。
23236-03-23
[Digitalcloud.Training]AWS CERTIFIED SOLUTIONS ARCHITECT ASSOCIATE
该模拟题出自DigitalCloud Training的模拟题,一共20道题,相对来说答案比较准确,第一次答正确率只有60%,看起来还有不太扎实的知识点,并且英文多了不太爱仔细阅读也是准确率低的原因。
14146-03-14
使用Chrome浏览器打开vCenter Web客户端
在vCenter 5.x时代,vCenter Web Client都是基于Flash实现的,随着Flash逐步被淘汰,在Web端使用vCenter就非常不方便。最近由于需要对最新的ESXi 7.0版本进行测试,原有的vCenter 5.5版本无法直接对7.0版本进行管理,所以决定对vCenter进行升级。升级后的vCenter使用了全新的HTML5进行了重构,很方便的就可以在浏览器端使用vCenter,而无需再使用Windows环境下载客户端。
14146-03-14
AWS Certified Solutions Architect - Associate Exam(Q101-Q200)
通过之前100道题的梳理,发现这个网站竟然有这么多争议的题目,我觉得有可能是有些题目已经跟不上AWS自身发展速度了,有了更多的方法。总之,通过这些题目的梳理,对AWS服务细节层面有了更多的了解,希望能够一次性通过ACA考试。这篇继续这个网站101到200题的学习工作,希望能提高点速度。
8086-03-08
Gitlab之间进行同步备份
目前,我们公司有两个研发团队,分别在北京和武汉,考虑到访问速度的问题,原有武汉的研发环境在近端部署。也就是北京和武汉分别有两套独立的研发管理环境,虽然这解决了近端访问速度的问题,但是管理上较为分散,比如研发环境备份和恢复就是最重要的问题之一。最近,处于对安全性和合规性的考虑,希望将北京和武汉的源代码,统一的集中备份,防止公司资产流失。
14146-02-14
将博客从Hexo迁移至Hugo
自从了解了Github Pages这种静态博客后,开始喜欢上这种技术人员才能鼓捣明白的协作方式。自己的博客系统也从最初的Octopress,切换到Hexo,直到最近看到Hugo这种号称全球最快的静态博客系统,被适合技术人员的风格样式所吸引。于是在经历了三天的折腾后,顺利的将Hexo迁移至Hugo中。同时,利用github workflows在提交后,将博客自动发布到腾讯的云开发中。其实这三种不同的博客系统也恰好了代表了每一个时代流行的语言,Octopress(Ruby),Hexo(Node.js),Hugo(Go)。时代在发展社会在进步,唯一不变的是开发人员追去完美的心,记录下这一过程,也作为切换至Hugo后的第一篇博文。
29296-11-29
如何在苹果日历订阅钉钉日历?
通常我会使用苹果日历来管理我的所有行程,这样在不同苹果设备上就能实现互联互通,大多数的软件通过日历订阅或者CalDAV方式提供了对苹果日历的支持。很多公司开始使用钉钉作为自己的企业级IM工具,但是钉钉自带的日历却无法显示在苹果日历中,只能反向的由钉钉显示苹果日历的内容,非常不方便。今天无意间发现,钉钉的日历可以支持CalDAV方式了,所以赶紧在苹果的设备上进行了测试,终于可以实现苹果同步钉钉的日程了,以下就为大家分享一下。
11116-11-11
如何清理/boot分区下的内容?
CentOS运行时间长了,随着系统更新,/boot分区空间会越来越小,因为存留低版本内核相关文件没有得到及时清理,所以需要手动进行清理,但是由于内核文件重要性,如果清理方法不当就会导致系统无法启动。
6066-11-06
利用Tushare对一夜持股法进行回归验证
最近在抖音看到很多金融博主在推荐一些投资股票的心得,可以说是五花八门,再看评论区,更是千奇百怪,大部分人都在说没用,但又拿不出什么证据来。事实是检验真理的唯一标准,我觉得对于此类投资观点,最好的方式进行用历史数据去验证,因为历史总是重复的,如果是对的,那么对于未来的投资也算是找到了一条生财之道。
1016-07-01
利用阿里云Serverless Kubernetes构建任务运行环境
Kubernetes是容器编排首选平台,现在各大云商也都推出了自己的Kubernetes服务。但是搭建Kubernetes环境往往在初始节点上需要很多云主机支持,三个Master节点实现HA,三个Node作为计算节点,成本开销比较大。后来阿里云推出了部分托管版本的Kubernetes,即Master节点托管给阿里云,用户只需要根据需求创建Node节点,大大节省了开销。但是如果用户连Node节点都不想创建,希望做到真正的按需分配怎么办呢?那么,你可以使用阿里云基于容器平台ECI构建的全托管版本的Kubernetes,即Kubernetes Serverless版本。这种环境下,用户可以完全忽略Master和Node节点,你的所有服务都会自动运行在ECI容器实例中,而费用则根据你的容器实际运行的时间和存储占用收取。这种方式适合有限时间内的任务运行方式,大大节约计算资源费用支出。
27276-05-27
阿里云盘与网盘终于合并
之前曾经写过一篇《我需要什么样的网盘?》来介绍内测版本的阿里云盘和Teambition网盘,其中重点讲述了阿里云内测的网盘和云盘项目,今天得到了一个确切的消息,阿里云盘和Teambition网盘终将合并。
13136-03-13
关闭Mac系统开机启动音
不知道你是否和我有一样的困惑,宁静的早晨打开iMac,一声浑然天成的开机声响彻屋内。虽然以Mac系统稳定性来说不必关机,但是对于iMac这种没有电池的主机,我还是有定期关机的习惯,只不过开机声这个问题让我很困扰。
5056-03-05
如何在Mac上控制独立应用的音量
我平时用Mac开会时,需要将音量调大的情况,但是有时候忘记打开了勿扰模式,导致其他应用在通知的时候声音也巨大,比如钉钉。那么如何在Mac是否有方法独立的控制每一个应用的音量呢?答案就是Background Music。
4046-03-04
PostgreSQL无法启动“global/pg_control”:Permission denied
昨天在为用户进行迁移后,用户Windows 2012系统上PostgreSQL服务无法启动,日志中提示“global/pg_control”:Permission denied,于是上网一顿搜索终于解决了这个问题。
11116-02-11
利用腾讯云开发免费搭建个人博客
之前一直使用Github Pages搭建个人博客,随着Github访问越来越困难,个人博客国内访问速度越来越慢。之前也试过用cloudflare进行加速,但是收效甚微,所以才考虑将项目迁回到国内。一个偶然的机会,腾讯云开发进入我的视野,起因是他们的9.9元计划,不过后来由于我配置错误,这部分资源无法使用。但是经过研究,原来腾讯云开发提供了最基础的免费资源,恰好可以让我们搭建个人的Blog,经过将近一年多的使用过程中,非常好用,所以就记录下来,供大家参考。
3036-02-03
CentOS7 zshrc快速配置
大部分时间里,我还是习惯于ssh到远程的CentOS7服务器上工作,因为Mac配置了漂亮zsh的缘故,所以也想把我的CentOS7切换到zsh模式。这是最终配置好的效果:
2026-02-02
Mac iTerm2 zshrc快速配置
zsh基本上已经成为Mac上的标配了,界面美观还有点缀的小图标,非常漂亮。但是网上配置zsh文章很多,配置方法也是五花八门,并且由于github被墙的原因,经过由于网络问题安装失败。经过反复测试,在国内的代码托管网站进行了Github部分关键项目定时缓存后,提高配置效率。这里写一篇自用的配置方法,留给有需要的人。
2026-02-02
如何在微信开发者工具中使用vim编辑模式
随着云计算技术的发展特别是无服务化的发展,在业务系统的研发上,前端和后端的边界逐步被打破。微信小程序便是这一方面的典型代表,特别是结合了腾讯Serverless云开发的套件后,小程序融会贯通成为业务开发非常重要的载体。今年疫情期间,基于小程序开发的健康码充分发挥了小程序这一方面的特点。小程序上手开发难度不高,基本都是基于Javascript生态构建,对于前端开发或者后端开发来说,无疑都是福音,让大家真正的做一次全栈开发。
27276-01-27
使用镜像源加速Github Clone速度
Github被屏蔽已经不是什么太新鲜的事情了,但是对开发人员下载速度确实造成很大的困扰,所以需要使用镜像源来加速下载速度。但是,我在clone的时候又不想每次破坏原有的链接,那有没有什么自动的方法来帮助我们来修改呢?
25256-01-25
利用Docker快速搭建Prometheus监控及告警平台
开源项目出现让IT产业得到了蓬勃发展的机会,大批的社区贡献者通过向开源社区贡献代码实现自我价值。企业通过使用开源项目,增加了对核心技术的掌控能力。虽然开源项目从功能性上是基本可用的,但是需要从用户体验、运维层面投入人力,本文目的就是帮助读者利用Docker快速构建一套基于Prometheus的监控及告警平台,能够实现对用户环境基本监控,本文将持续更新,收集好用的exporter及Grafana Dashboard。
25256-12-25
我需要一款什么样的网盘?
大概是在8月份的时候,收到阿里要做网盘的消息,那篇文章以“免费”、“不限速”这样的噱头来吸引读者的眼球,直击目前网盘的痛点,当时确实赚足了流量。不过两个月过后,阿里的网盘仍然是犹抱琵琶半遮面的感觉,始终让人看不清楚阿里网盘的端倪。十月底的时候,依靠阿里MVP这一“天时”,搞到了阿里云盘的内测码,并进行了深度体验,所以这篇文章主要是两个目的:第一,是交个作业,毕竟“拿人内测码,与人评测”;第二,网盘我用了不少,也从我的需求角度来讲一下,我对网盘的需求到底是什么,希望能引起读者的一些共鸣。
14146-12-14
Docker构建服务器空间占满问题
现象描述 今天Jenkins构建突然出现问题,检查Jenkins Job日志发现no space left,于是登录到Jenkins Build服务器上,发现容器所在的/var/lib空间被完全满了。
13136-11-13
利用钉钉通讯录同步构建本地LDAP服务
目前钉钉已经成为很多企业日常处理流程的必备工具,但是由于钉钉并没有开放鉴权接口,无法让钉钉作为本地系统的统一鉴权系统使用,每次有同事加入或者离开时,都需要人为的对本地系统进行维护,非常繁琐。那么有没有一种方法可以让钉钉作为本地的统一鉴权系统使用呢?
31316-10-31
Kubernetes All-in-One环境安装
Kubernetes安装及初始化 研发环境搭建Kubernetes All-in-One环境搭建。 CentOS 7初始化 ## Set SELinux in permissive mode (effectively disabling it) setenforce 0 ##sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config systemctl stop NetworkManager systemctl disable NetworkManager systemctl status firewalld systemctl stop firewalld systemctl disable firewalld systemctl status firewalld firewall-cmd --state curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo yum clean all && yum makecache yum update -y Docker国内源安装 ## Install Docker curl -sSL https://get.daocloud.io/docker | sh -s -- "--mirror" "Aliyun" ## Replace docker repo mkdir -p /etc/docker cat > /etc/docker/daemon.json <<EOF { "registry-mirrors": ["https://6m7d428u.mirror.aliyuncs.com"], "dns": ["114.114.114.114"], "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2", "storage-opts": [ "overlay2.override_kernel_check=true" ] } EOF systemctl enable docker && systemctl daemon-reload && systemctl restart docker curl -L https://get.daocloud.io/docker/compose/releases/download/1.28.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose 安装Kubernetes软件 ## step1 Installation Process cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg exclude=kube* EOF yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0 --disableexcludes=kubernetes systemctl enable kubelet ## for CentOS 7 cat <<EOF > /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 vm.swappiness=0 EOF sysctl --system ## from k8s 1.8, swap need to be cloased, otherwise k8s could not be started ## swapoff -a ## Modify /etc/fstab, comment swap mount 初始化Kubernetes集群 ## Step2 initialization ## Specify kubernetes-version if mirror do not contain latest kubernetes container. ex: if kubeadm is version 1.18.5, you can only ## install kubernetes = 1.18.x kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version=1.18.0 ## Response from output ## You should now deploy a pod network to the cluster. ## Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at: ## https://kubernetes.io/docs/concepts/cluster-administration/addons/ ## Then you can join any number of worker nodes by running the following on each as root: ## kubeadm join 192.168.10.111:6443 --token 1odaru.0by05advhbu7edgt \ ## --discovery-token-ca-cert-hash sha256:3efb71c40cce36c5ed90fc8b5831233aba06eec26576088e8e7a7a892d272776 ## Step3 To use cluster mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ## Step4 flannel Network sysctl net.bridge.bridge-nf-call-iptables=1 kubectl apply -f https://gitee.com/xiaoquqi/flannel/raw/master/Documentation/kube-flannel.yml 允许Master节点运行Pods kubectl taint nodes --all node-role.kubernetes.io/master- 测试 安装Wordpress和MySQL curl -LO https://raw.githubusercontent.com/xiaoquqi/k8s_demo/master/wordpress/mysql-deployment.yaml curl -LO https://raw.githubusercontent.com/xiaoquqi/k8s_demo/master/wordpress/wordpress-deployment.yaml curl -LO https://raw.githubusercontent.com/xiaoquqi/k8s_demo/master/wordpress/kustomization.yaml 执行安装 kubectl apply -k ./ 验证 kubectl get secrets kubectl get pvc kubectl get pods kubectl get services wordpress 资源清理 kubectl delete -k ./
31316-07-31
CentOS 7和Docker初始化安装
CentOS 7初始化 该安装脚本为搭建研发环境常用的脚本,记录在Blog中便于查阅。 ## Set SELinux in permissive mode (effectively disabling it) setenforce 0 ##sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config systemctl stop NetworkManager systemctl disable NetworkManager systemctl status firewalld systemctl stop firewalld systemctl disable firewalld systemctl status firewalld firewall-cmd --state curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo yum clean all && yum makecache yum update -y Docker国内源安装 ## Install Docker curl -sSL https://get.daocloud.io/docker | sh -s -- "--mirror" "Aliyun" ## Replace docker repo mkdir -p /etc/docker cat > /etc/docker/daemon.json <<EOF { "registry-mirrors": ["https://6m7d428u.mirror.aliyuncs.com"], "dns": ["114.114.114.114"], "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2", "storage-opts": [ "overlay2.override_kernel_check=true" ] } EOF systemctl enable docker && systemctl daemon-reload && systemctl restart docker curl -L https://get.daocloud.io/docker/compose/releases/download/1.28.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
31316-07-31
[阿里云]使用DataQuotient 画像分析筛选优质基金
该教程是阿里云帮助文档一部分,这里做了进一步完善:https://help.aliyun.com/document_detail/160711.html?spm=a2c4g.11174283.6.603.682fa00bJ7AHYK
14146-04-14
[Python]利用ZooKeeper构建分布式定时任务
#Zookeeper#微服务#分布式#Python#tooz
本文涉及的源代码路径:https://github.com/xiaoquqi/openstackclient-demo/tree/master/tooz 一、目前现状及存在的问题 在实际业务系统中,经常有需要定时执行的任务,例如任务状态的定时更新、定时发送状态信息等。在我们的云迁移产品中,允许用户可以设定周期同步规则,定期执行数据同步并调用云平台接口执行快照操作。在单机版本中,通常在同一时间点并发任务量较少的情况下,问题并不是很突出,但是随着我们将云迁移服务从单机版本改造为平台版本后,当多个用户的多台主机同时触发快照任务时,一方面传统的设计方式就成为了瓶颈,无法保证用户的同步任务在同一时间点被触发(需要排队);另外一方面,目前Active-Passive(简称AP方式)的高可靠部署方式无法利用集群横向扩展能力,无法满足高并发的要求。
24246-03-24
深度解读OpenStack Mitaka国内代码贡献
转眼间,OpenStack又迎来了新版本发布的日子,这是OpenStack第13个版本,也是Big Tent后的第二个版本,秉承“公开公正”的原则,OpenStack Release的项目达到了29个,比Liberty多出了8个。
7076-04-07
Consul主要使用场景
假设你已经按照之前的Consul安装方法部署了一套具备环境,具体方法可以参考:http://xiaoquqi.github.io/blog/2015/12/07/consul-installation/
24246-12-24
Consul的安装方法
什么是Consul? Consul拥有众多的组件,简言之,就是一个用于在你的基础设施中,发现和配置服务的工具。包含以下关键功能:服务发现、健康检查、键值存储和多数据中心支持。再说的通俗一点,就是用于管理分布式系统的利器。
7076-12-07
使用Grafana+Diamond+Graphite构造完美监控面板
服务器监控软件五花八门,没有一个是对的,但是总有一款是适合你的,本文中将使用Grafana+Dimaond+Graphite构造一款漂亮的监控面板,你可以独自欣赏,也可以让他们和你的应用勾勾搭搭。
1016-12-01
使用MongoDB作为Salt Pillar后端存储数据
今天在查找salt中pillar嵌套pillar的方法时,无意之间发现了pillar除了可以直接使用文件(sls)外,也同时支持多种后端的数据存储方式。例如:MySQL, MongoDB, Ldap, json, cobbler甚至是puppet。这无疑为开发中的接口提供了极大的便利。
23236-02-23