[源码级解析] 漫游源码、纵观Linux&Unix历史,探索shutdown、poweroff、halt与reboot的前世今生

使用过Linux/MacOS的读者一定对shutdown、poweroff、halt和reboot这四个管理系统电源状态的命令非常熟悉,但这些命令到底有什么区别?它们之间存在什么样的历史故事?本文将为读者们讲解这四个命令的起源、发展、以及它们之间的联系与区别。

继续阅读 [源码级解析] 漫游源码、纵观Linux&Unix历史,探索shutdown、poweroff、halt与reboot的前世今生

CentOS/Fedora/RHEL下使用versionlock插件避免特定软件被更新

为了保证Linux的安全性和稳定性,我们经常需要对安装的软件进行更新。但如果某些更新与当前环境存在兼容性问题(最典型的例子是内核更新与虚拟机Hypervisor的兼容性),我们应该怎么做呢?在CentOS/Fedora/RHEL中(后文以CentOS为例),大部分用户可能会直接修改仓库配置文件,或者执行yum update --exclude=xxx,但这两种方法都不够直观,操作也比较繁琐。本文将为读者介绍一种使用yum/dnf的versionlock插件避免特定软件被更新的方法。

继续阅读 CentOS/Fedora/RHEL下使用versionlock插件避免特定软件被更新

在MacOS/Linux终端中快速启动Visual Studio Code,提升工作效率

近几年Visual Studio Code(后文简称VSCode)凭借其丰富的扩展和广泛的社区支持,在软件开发业内赢得了极佳的口碑。但作为一款轻量级编辑器,VSCode同样存在一些不便,例如打开文件功能无法打开文件夹,如果打开文件夹只能启动一个新的VSCode窗口。此外实际开发过程中我们经常需要重复打开若干个文件夹,或是在终端(用于Debug或构建)和VSCode中来回切换。那么有没有更高效的方式呢?本文将为读者介绍一种提高VSCode使用效率的方式,即在终端中快速启动VSCode。

继续阅读 在MacOS/Linux终端中快速启动Visual Studio Code,提升工作效率

拒绝千篇一律的“最佳实践”——利用MySQLTuner精准优化MySQL数据库性能

MySQL数据库的易用性和弹性使其在各行业都得到了广泛应用,大部分知名网站(如淘宝、Facebook、哔哩哔哩等)发展早期都使用过MySQL作为其数据库。相信大部分读者都使用过MySQL数据库,如果提到MySQL数据库的优化,可能我们脑中都会不约而同的想到一些『最佳实践』。但是这些最佳实践真的有效吗?换而言之,它们真的适用于所有规模的数据库吗?本文将为读者介绍一个可以对MySQL进行精准性能优化的实用工具MySQLTuner,并详细讲解其背后的工作机制。

继续阅读 拒绝千篇一律的“最佳实践”——利用MySQLTuner精准优化MySQL数据库性能

一行Golang代码引发的血案——全网最详细分析2020年3月Let’s Encrypt证书吊销事故

Let’s Encrypt作为一家免费提供SSL证书的组织,旨在推进互联网向更安全的HTTPS迁移,受到了大量小型网站的支持和认可。然而很多站长在3月3日收到了来自Let’s Encrypt名为ACTION REQUIRED: Renew these Let's Encrypt certificates by March 4的邮件,警告站长尽快更新证书。那么为什么需要更新证书?不更新证书有什么危害?如何更新证书?本文将为读者分析本次Let’s Encrypt证书漏洞事故的真相。

继续阅读 一行Golang代码引发的血案——全网最详细分析2020年3月Let’s Encrypt证书吊销事故

为CentOS/RHEL等发行版中的systemd服务配置ulimit限制

近年来,几乎所有现代Linux发行版都将service替换成了systemd以实现更完善的服务管理,而随之变化的是相关用户策略的变化。可能不少读者都遇到过systemd服务提示打开文件数过多,但设置ulimit无效的问题,尤其是对于数据库这种并发数较大的业务。本文将为读者讲解如何正确地为systemd的服务配置ulimit限制。

继续阅读 为CentOS/RHEL等发行版中的systemd服务配置ulimit限制

巧解国内网络环境下部分yum源下载速度过慢的问题

众所周知,CentOS下的大部分软件源服务器都在海外,因此使用这些软件源下载软件速度会非常慢,甚至完全下载不了。对于官方源我们可以使用Tuna等国内镜像加快速度,但对于DockerMySQLRemi等非官方源则无能为力。本文将介绍一个巧妙解决这一问题的方法,以便加快非官方源安装速度。

继续阅读 巧解国内网络环境下部分yum源下载速度过慢的问题

浅谈setTimeout与setInterval函数『不为人知』的第三个参数

提到JavaScript下的setTimeout()setInterval()函数,接触过JavaScript的读者一定非常熟悉:两个函数都接收一个函数和一个延时两个参数,前者用于设置超时,后者用于设置定时执行。但其实这两个函数除了以上两个参数外还有第三个参数。

继续阅读 浅谈setTimeout与setInterval函数『不为人知』的第三个参数

[源码级解析]解决Aegisub3.2.2 MacOS版本音量/缩放滑块无法使用的BUG

Aegisub是一款简单好用的开源字幕制作软件,广受字幕制作者欢迎。但Aegisub官方最新版本是2014年更新的3.2.2版本,距今已有6年历史,存在着大量未修复的BUG与兼容性问题。其中MacOS下的Aegisub存在一个致命的BUG,即波形视图右侧的音量/缩放滑块无法正常使用,只能在0%和100%两者间调整,导致要么看不到波形(听不到音频),要么波形爆满(严重削波)。本文将分析该问题存在的原因,并给出一个修复该问题的编译版本,便于字幕制作者正常使用。

继续阅读 [源码级解析]解决Aegisub3.2.2 MacOS版本音量/缩放滑块无法使用的BUG

进程间信号简述及使用Python响应进程间信号

在软件开发,尤其是命令行软件开发过程中,我们经常会遇到需要响应用户中止热键的情况:如Ctrl+C(中止程序)、Ctrl+Z(Shell下发送SIGTSTP信号)等,这些热键最终会以进程间信号的方式通过操作系统传递给进程。一个完善的软件应该能通过合适的方式处理各种信号,并执行用户所需的任务,以Python为例,它提供了signal模块便于我们捕获、处理信号,本文将为读者介绍常见的进程间信号与Python下使用signal响应进程间信号的方法。

继续阅读 进程间信号简述及使用Python响应进程间信号