Windows 下 git checkout 时提示 “error: The following untracked working tree files would be overwritten by checkout” 的解决

描述

在 Windows 或者 macOS 系统中,对于已经提交到仓库中的文件修改文件名的大小写,然后又用 git rm 命令将老文件从 Git 仓库删除掉,并保存下新的文件,这个时候,再进行切换分支的操作,就会出现这个提示:

复现

分析

由于 Windows 或者 macOS 系统对于文件名是不区分大小写的,如果在 Git 仓库中应用了 ignorecase 的缺少配置 false,那么 Git 会区分文件名的大小写。

解决

在当前项目目录下执行

然后再切换分支,进行分支合并等操作之后,再执行

删除刚才的配置操作。

参考链接:

  1. git – The following untracked working tree files would be overwritten by checkout – Stack Overflow

PHP 通过 ReflectionMethod 反射类方法获取文档注释返回 false 的解决

问题描述

在公司的测试环境运行以上代码,如果是 CLI 模式,可以输出注释的内容,而如果是 FPM (网页浏览)模式,却输出 bool(false)。

问题解决

问了技术主管,才知道原来是 Opcache 配置项引起的问题。公司测试环境 PHP 开启了 Opcache 扩展,原配置如下:

将 opcache.save_comments=0 改为 opcache.save_comments=1 保存重启 PHP-FPM 进程,即可通过反射获取文档的注释了。

关于 Opcache 的 save_comment 和 load_comments 的含义请参考 PHP 官方文档中的解释:

opcache.save_comment 开启后将脚本文件中的注释内容将会包含到操作码缓存文件中,适用于我所碰到的问题。

opcache.load_comment 开启或者禁用的区别只是应用程序是否会按需加载注释内容,禁用则是按需加载,开启则总是加载。

问题总结

遇到这个问题的时候, 以为是 PHP 版本的问题,我本机的 PHP 5.6 的修订版本号比测试环境的 PHP 5.6 的修订版本号略新一点,打算让运维部门编译一个新版本的 PHP 5.6 到测试服务器上的。还好问了问主管,一下就解决了问题,填补了这个知识盲区。遇问题要多沟通!

Sublime Text 3 配置 Phpcs

 Phpcs 插件介绍

可以为 Sublime Text 编辑器提供代码格式检测的功能,使用以下工具(全部可选):

  • PHP_CodeSniffer (phpcs)
  • Linter (php -l)
  • PHP Mess Detector (phpmd)
  • Scheck (scheck, part of Facebook’s pfff toolchain)

还可以配置自动修复格式的工具:

  • PHP Coding Standards Fixer (php-cs-fixer)
  • PHP Code Beautifier (phpcbf) application

安装步骤

使用 Sublime Text 编辑器的 Package Control (Preferences -> Package Control -> Install Package -> Phpcs) 来安装 Phpcs。

配置

各个配置项的说明可参考 http://benmatselby.github.io/sublime-phpcs/ 的 Configuration 一节。

使用 Composer 安装 PHP Code Sniffer:

安装 PHP CS Fixer:

 下载 PHPMD:

查看 Composer 的 bin 目录的绝对路径:

在 Phpcs 的用户自定义配置文件中加上:

参考链接:

  1. http://benmatselby.github.io/sublime-phpcs/
  2. https://github.com/squizlabs/PHP_CodeSniffer
  3. https://packagecontrol.io/packages/Phpcs
  4. https://github.com/FriendsOfPHP/PHP-CS-Fixer
  5. https://phpmd.org/download/index.html

MySQL 数据库删除表中重复数据

采集数据的时候,由于先期对页面结构的分析不完善,导致采漏了一部分数据。完善代码之后重新运行 Scrapy,又采集了一些重复的数据,搜了下删除重复数据的方法。

N.B. 删除数据表的重复数据时,请先备份数据表。

方法一

方法二

P.S. 当数据表的数据量较多时,建议使用方法二,大大节省时间。

参考链接:

  1. Delete all Duplicate Rows except for One in MySQL? [duplicate]
  2. sql – Remove duplicate rows in MySQL – Stack Overflow

pip 修改镜像源为豆瓣源

1. 修改配置文件

编辑配置文件,如果没有则新建:

添加内容如下:

2. 命令行选项

使用 pip 命令安装扩展包时指定源:

 

参考链接:

  1. pip修改官方源为豆瓣源 | cls1991的个人博客
  2. pip 更换软件镜像源 – 简书

Siege 网站性能压力测试工具的使用

Siege is an open source regression test and benchmark utility. It can stress test a single URL with a user defined number of simulated users, or it can read many URLs into memory and stress them simultaneously. The program reports the total number of hits recorded, bytes transferred, response time, concurrency, and return status. Siege supports HTTP/1.0 and 1.1 protocols, the GET and POST directives, cookies, transaction logging, and basic authentication. Its features are configurable on a per user basis.

Linux 上编译安装步骤(参考):

 

Nginx internal 指令限制访问图片资源文件

Nginx 的 internal 指令可以用来限制 Web 公共目录下的图片等资源文件被任意用户直接访问。一个明显的使用场景是,对于用户上传的认证图片,属于个人隐私资源,不应该让所有用户都能访问得到,通常只能由管理员审核时查看。

假定需要限制访问的图片的 URL 路径是 /images/auth-pictures/,Nginx 进行如下配置:


重启 Nginx,直接访问 /images/auth-pictures/ 下的图片,会返回 404:

利用 PHP 在响应头加上 “X-Accel-Redirect” 域使请求重定向到真实的图片路径上面:

此时就可以通过 PHP 程序来重定向请求访问图片了: