Guo Qiang

一些疑难问题

Frequently Asked Questions
image
当遇到困难时,一定要勇敢的去面对

我们总是被各种各样的问题困扰,有时为了解决这一个问题,可能需要话费几小时甚至几天的时间,有的问题确实复杂,而有的问题真得好简单,只是我们当时没有找对方向。

git diff 出现很多 ESC 字符

当使用 git diff 或者 git log 之类的命令时,看到转义字符 (ESC[m) 而不是颜色输出。这个问题可能是因为 less 或你的 pager 没有正确处理颜色代码。我们可以通过确保 less 正确处理颜色转义字符来解决这个问题。


~ % git reflog
ESC[33ma92009ESC[mESC[33m (ESC[mESC[1;36mHEADESC[mESC[33m -> ESC[mESC[1;32mmasterESC[mESC[33m, ESCL
mESC[1;31morigin/masterESC[mESC[33m, ESC[mESC[1;31morigin/HEADESC[mESC[33m)ESC[m HEAD@{03: commit: U
pdat to 1.3.4
ESC[33mf4d3875ESC[m HEAD@{1}: commit: Enhanced --poweroff handling for abnormally started virtual ma
chines
ESC[33mfa55555ESC[m HEAD@{2}: commit: Add lagg to the network card list
ESC[33mac061cdESC[m HEAD@{3}: commit: Fix a bug related to the IP mask in the function check_ip
ESC[33mba6ac2bESC[MESQ[33m (ESG[mESQ[1;33mtag: ESG[MESC[1;33m1.3.3ESG[MESQ[33m)ESG[m HEAD@54}:clone
from https://github.com/bigdragonsoft/bvm.git


运行以下命令,确保 Git 的 pager 能正确处理颜色:


git config --global color.ui always
git config --global core.pager "less -r"


Linux系统修改设置系统时区

服务器的系统时区非常重要,尤其在使用 crontab 的时候,几次都因为时区问题,导致任务执行出现偏差。

一、Debian/Ubuntu 设置系统时区

在 Debian 或者 Ubuntu 系统上设置系统时区很简单,输入下面命令行:


# dpkg-reconfigure tzdata


回车之后根据提示选择时区即可,比如依次选择 Asia 和 Shanghai,说明时区已经修改完成了。

二、CentOS 设置系统时区

在 CentOS 上面,修改时区稍微复杂一些,不过也不难。

  • 查看所有可选系统时区


# timedatectl list-timezones


使用向上、向下、向上翻页和向下翻页键导航到正确的时区。 记住它,写下来或将其复制为鼠标选择。 然后按 q 退出列表。

  • 设置时区(比如将 America/New_York 设置为正确的时区)


# timedatectl set-timezone ‘America/New_York’


至此也就修改成功了。

PHP返回上一页总提示需要重新提交表单

PHP开发的网页,在使用中发现点击浏览器返回上一页时,总是提示“确认重新提交表单“的一个错误页面,在 Safari 浏览器中会弹出一个确认刷新的窗口,而在谷歌浏览器就会出现前面提到的那个错误页面,其他的浏览器没测试过,起初并没在意这个问题,后来随着网站使用越来越觉得这样不方便,经查询,找到两个解决方案:

  • 一个是将表格的传输方式由 POST 改为 GET,这需要稍微修改下代码,虽然不麻烦,但我不喜欢这种方式

  • 另一个就是需要修改服务器 PHP 配置文件 php.ini,这是个一劳永逸的方法,我个人比较喜欢,缺点暂时还没发现,遇到时再说吧,办法总比问题多。


;session.cache_limiter = nocache
session.cache_limiter = none


vim 记住上次编辑和浏览的位置

在 Debian 系统中使用 vim 编辑文件后再次打开又回到第一行,这样非常不方便,编辑 /etc/vim/vimrc 中,加入以下语句,就可以在打开文件后回到关闭文件前编辑和浏览的位置了


" Uncomment the following to have Vim jump to the last position when
" reopening a file
if has("autocmd")
  au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
endif


Python 开了代理后执行报错

Windows 环境下,开了 vpn 代理后,不论执行 py 代码还是 pip 命令,只要跟网络有关的都会报错:


WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1129)'))': /simple/urllib3/
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1129)'))': /simple/urllib3/
WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1129)'))': /simple/urllib3/
WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1129)'))': /simple/urllib3/


解决办法就是安装版本号:1.25.11 的 urllib3


1. 关掉 vpn
2. pip install urllib3==1.25.11
3. 打开 vpn


Kali 更新源显示 Release 文件已经过期的解决办法

刚才在使用命令 apt update 更新 Kali 的时候,提示了如下错误信息:


# apt update

获取:1 http://mirrors.ustc.edu.cn/kali kali-rolling InRelease [30.5 kb]
正在读取软件包列表 ... 完成
E:http://mirrors.ustc.edu.cn/kali/dists/kali-rolling/InRelease 的 Release 文件已经过期(已经过期了 2天 3小时 45分 48秒)。该仓库的更新将不会应用。


起初以为是源的问题,换了几个其他的源,还是存在同样的错误,最后才知道居然是虚拟机系统时间与宿主机时间不一致造成的,只要将时间同步一下就可以了:


# service ntp restart