-
自动清理 Nexus 中的过期镜像
自动清理过期镜像Nexus Repository 是一款非常好用的私有仓库,支持 Maven、Docker、Yum、PyPi等等,基本主流的类型都支持。自从使用了持续集成以后,我们会自动对新代码进行编译打包发布到开发环境中,以便尽快地对新代码进行测试。这样导致的问题就是 Nexus 中的 Docker 库占用的空间越来越大。Nexus 本身提供了 Cleanup 功能,可以将一段时间之前的镜像删除,但是如果全部按过期时间去删除,会导致一些长时间以前上传,但是还需要使用的镜像也删除。幸运的是...
-
Locale 和 LanguageTag
“zh_CN”与“zh-CN”前段时间,在做一个国际化的项目时,关于中文语言是用 “zh_CN” 形式还是 “zh-CN” 形式来表示,团队里出现了一些分歧。借此机会,我查了相关资料,详细了解了有关规则。国际化与本地化国际化(Internationalization,通常被简称为 I18n)和本地化(Localization,通常被简称为 L10n)是两个看似熟悉但常常需要进一步查阅资料来真正理解的术语。两者虽然相关,但各有侧重点。对于软件系统来说,国际化是指在设计和开发时,通过一系列操作...
-
Linux Shell 编程
本文源于团队内部的一次分享,对 Linux Shell 编程进行基本的介绍。基本的文件格式#!/bin/sh => 指定要运行的 shellor#!/bin/bash => bash 是功能更全的一个 shellfoo1=abc foo2=abc 123 => illegalfoo3='abc 123' foo4=1+2 echo $foo1 => abcecho $foo3 => abc 123...
-
如何正确地设置 NTP 服务器
Ceph Cluster 的 clock skew detected 问题这是一个由于 Ceph Cluster clock skew 引发的问题。我们公司的生产环境里有一个 3 节点的 Ceph Cluster 用来做对象存储使用。运行了一段时间,发现其中一个节点上的 OSD 经常过上个把月就会重启一次,系统也没什么异常,查来查去发现最可疑的就是这个节点有时候会报 ceph:health_warn clock skew detected on mon。由于我们的服务器都设置了每天通过定时...
-
supervisord 中的 open files 数量限制
Linux 中的 nofile 设置Linux 系统通过 rlimit 来对一个进程可以使用的计算机资源进行限制,其中 nofile 表示单个进程可以打开的文件句柄数,默认值为 1024。 我们知道,Linux 系统下一切都是文件,这不仅包括了常规的文件,还包括 socket, pipe 等等,对于一些较大的应用,如数据库,Web 服务器等,1024 这个限制肯定是不够的。所以一般在初始化新服务器时都要进行修改,例如修改 /etc/security/limits.conf,把所有用户的 n...
-
软件开发的“偶然”困难和“本质”困难
No Silver BulletNo Silver Bullet – Essence and Accident in Software Engineering 是著名计算机科学家 Fred Brooks 的一篇著名论文。Fred Brooks 被称为IBM大型机之父,是著名软件工程著作《人月神话》的作者,在1999年获得了图灵奖。《No Silver Bullet》一文发表于1986年,作者认为,由于软件开发本质上的困难,在当时的十年内不会有技术和方法可以让软件生产力有数量级上(也就是十倍...
-
VIM 从入门到进阶
VIM 的三种模式命令模式(Command mode)vim 打开后就进入这个模式,所有的输入会被当成命令,不能输入字符。命令模式下有3个选择: 使用各种命令对文本进行操作 按下 i a I A 等输入命令中的一个,进入 输入模式 按下 : 进入 底线命令模式输入模式 (Insert mode)这个模式下,可以像个正常编辑器一样,输入字符编辑。按 <ESC> 回到命令模式底线命令模式 (Last line mode)可以执行 Ex Command,包括保存文件,退出 vi...
-
文本处理三大利器:grep awk sed
在计算机编程和系统管理中,文本处理是一项非常重要的任务。grep、awk和sed是三种流行的文本处理工具,它们可以让你在命令行中快速处理文本数据。以下是这三种工具的简要介绍:Unix 哲学 程序应该只关注一个目标,并尽可能把它做好。 让程序能够互相协同工作。 应该让程序处理文本数据流,因为这是一个通用的接口。grepgrep(Global Regular Expression Print) 主要用来在一个文件中搜索特定字符串。grep 'test' file.txt # 输出 fil...