Mac通过ssh密钥对登录远程Linux服务器

ssh登录Linux服务器通常有两种方法,第一种是通过账号密码登录,第二种是密钥对登录。

Windows环境下,我使用第一种方法比较多,因为有类似Xshell这样的工具,可以帮你记住账号密码,使用起来十分方便。而且,Xshell针对家庭和学校用户,有免费版本,不存在授权问题,可以说是十分贴心的。另外,配合他们家的Xftp使用,文件的上传下载也很方便。所以,如果你用的Windows系统,那么我会强烈推荐你使用Xshell和Xftp。

Mac用户就没有这么幸运了,因为Xshell和Xftp没有Mac版本。当然,你还可以用一些其他替代产品,比如SecureCRT,只不过是需要授权付费的,你可以选择用破解版。另外,FinalShell是免费软件,而且据说是由国人开发,支持Windows、Mac、Linux,评价也还不错。

那为什么现在我还要讲第二种登录ssh的方法呢?因为我个人不喜欢SecureCRT,FinalShell官网又看起来很简陋,我用着觉得不踏实。所以我现在的做法是,远程管理Linux用Mac自带的终端加上ssh密钥对,文件上传下载用Filezilla。

- 阅读剩余部分 -

火狐Firefox 双击关闭标签页,最右位置打开新标签页

我的习惯是:

  1. 双击标签页 不要 关闭标签页
  2. 新增标签页在最右边打开,而不是在当前标签页右边

Chrome默认就是这样的设置,但Firefox却偏偏相反。想在 选项 中调整一下,却发现没有入口。最后搜索之后,都需要通过about:config 的方式进行修改。

禁用默认双击关闭标签

  1. 进入 about:config
  2. 搜索 browser.tabs.closeTabByDblclick,将 true 改成 false

最右打开新标签页

  1. 进入 about:config
  2. 搜索 browser.tabs.insertAfterCurrent,将 true 改成 false

Git 修改已经提交的commit注释

已经执行git commit -m "xxxx注释"命令后,发现注释内容有误,想要修改,怎么办?
分两种情况:

  1. 没有push到远程仓库
  2. 已经push到远程仓库

修改最后一次注释

执行git commit --amend,出现修改界面,进去编辑模式(输入i),修改完成后进入命令模式(按esc),输入:wq保存并退出,即修改完成。

修改之前某次的注释(也包括最后一次,也就是倒数第1次)

  1. 执行 git rebase -i HEAD~3,后面的数字3就代表显示到倒数第几次。
  2. 进入编辑模式,把需要修改的那条注释前面的pick改成edit,保存并退出。
  3. 执行 git commit --amend,修改并保存。
  4. 执行 git rebase --continue
如果是想修改前几次的注释,执行到上面第2步的时候,把多个 pick 改成 edit,然后依次修改即可。

是否需要执行push

假如你没有push到远程,那修改注释的过程就完成了。如果已经将代码push到远程仓库,那么需要先执行pull后再执行上面的步骤。最后,执行 push 命令同步到远程仓库,但要加上 --force 强制覆盖参数,如 git push --force origin dev:dev

确保你push之前没有人提交新的代码,否则别人的修改会被你强制覆盖。

浏览器自动请求favicon导致重新访问一次主程序

语言:PHP
问题描述:自己写了一套程序实现简单的伪静态,就是将所有请求重定向到index.php,然后根据URI分发给不同的脚本处理。但运行起来发现,index.php总是比预想的多执行了一遍。

开始,自己以为是程序哪个地方出了问题,所以从头到尾检查,结果并没发现不合理的地方。最后没办法了,通过浏览器的network查看是不是访问时多发送了一次请求。
这一看就找到原因了:浏览器自动请求favicon.ico文件,但网站根目录不存在此文件,所以会重定向给index.php处理,于是主程序又背地里被执行了一遍。于是,我在伪静态里把类似的静态文件给排除掉了,无论找不找得到,都不会触发程序执行。

- 阅读剩余部分 -

Scrapy 实现博客爬虫实例

目标网址:http://i.csensix.com (即本站)
项目地址:blogSpider

系统环境

  1. CentOS 7.5
  2. Python 2.7.16
  3. Scrapy 1.7.3

实现过程

创建项目

scrapy startproject blogSpider
执行完上面的命令,会生成如下目录结构:

blogSpider/
    scrapy.cfg              # 配置文件
    blogSpider/             # 主要代码目录
        __init__.py
        items.py            # 定义项目items
        middlewares.py      # 项目中间件文件
        pipelines.py        # 项目管道文件
        settings.py         # 项目配置
        spiders/            # 爬虫目录
            __init__.py

- 阅读剩余部分 -