超级管理员系统内置的一个用户组,所有管理员用户都在这个组下,默认我们打开的cmd是普通用户组而非超级管理员,在Windows上编程开发,有些命令必须以管理员身份运行cmd,下面是两种操作方法。
本文记录在Windows右键菜单上增加一个以普通用户运行的“在此打开命令行窗口”的方法。
Win7的右键菜单上只有一个“在此处打开命令窗口(W)”,我平时用得PowerShell比较多,所以本文记录一种在右键菜单上增加“在此处打开PowerShell窗口”的方法。
代码统计我们时常用到,比如统计代码行数、注释行数、空行数、文件大小等等。本文介绍Windows和Linux上常用的代码工具。
上文《windterm#01#安装篇》介绍了WindTerm的安装和基本使用。本文从使用者角度,介绍WindTerm的定制方法,以期在实际使用时更加顺手。
如SecureCRT一般,WindTerm是一款多协议、多功能、跨平台的终端仿真协议程序,用于Windows/Mac/Linux等环境登录UNIX/Linux服务器主机。与其他终端工具相比,最大特点就是开源、无论商业或者非商业应用均免费,特别适合一般小型公司使用 。
如WinTerm官方所言“WindTerm is a partial open source project, and the source will be gradually opened.”,目前它是部分开源,其他代码逐步计划开源。
WindTerm的主要功能:
- 支持 SSH、Telnet、Tcp、Shell、Serial
- 支持 SSH v2、Telnet、Raw Tcp、串行、Shell 协议。
- 会话认证时支持 SSH 自动执行。
- 支持 SSH ControlMaster。
- 支持 SSH ProxyCommand 或 ProxyJump。
- 支持 SSH 代理转发。
- 支持使用密码、公钥、键盘交互、gssapi-with-mic 的 SSH 自动登录。
- 支持 X11 转发。
- 支持直接/本地端口转发、反向/远程端口转发和动态端口转发。
- 支持 XModem、YModem 和 ZModem。
- 集成 sftp、scp 客户端,支持下载、上传、删除、重命名、新建文件/目录等。
- 集成本地文件管理器,支持移动到、复制到、复制自、删除、重命名、新建文件/目录等。
- 支持 Windows Cmd、PowerShell 和 Cmd、PowerShell 作为管理员。
- 支持 Linux bash、zsh、powershell core 等。
- 支持 MacOS bash、zsh、powershell core 等。
更多:https://github.com/kingToolbox/WindTerm/blob/master/README.md
本次对Hexo的修改,主要完成如下两个功能:
- 第一,Hexo的分类默认使用名称按照字典排序,我希望是自己可以方便指定分类序号,从而按序号排序显示;
- 第二,Hexo的分类名称需要直接写在Post文档categories的字段,后续如果需要修改某个分类名称,需要修改多个文档,我希望是给每个分类起个别名,Post文档中使用该别名,在特定的文档中定义别名和真实名称的映射关系,然后Hexo生成静态页面时,Hexo自动对别名进行替换。
本博客是由Hexo来编译发布的,这里记录下Hexo首次安装和重新下载博客代码之后重置环境的方法。
首次安装Hexo
第一步,安装Node.js。我们可以使用腾讯电脑管家,搜索nodejs来安装。或者到Node.js的官方网站下载来安装。
访问官方网站:https://nodejs.org
直接下载链接:https://nodejs.org/dist/v20.17.0/node-v20.17.0-x64.msi
下载完毕之后,双击安装即可,这里不再赘述。
第二步,设置Node.js使用国内源。命令如下:
1 | ## 设置为腾讯源 |
第三步,使用如下命令安装Hexo
1 | npm install -g hexo |
安装过程如下图所示:

第四步,Hexo完毕之后,我们建立一个新的博客系统。
首先,我们创建一个空的目录,来存放工程文件。比如 d:/mancode/DemoBlog
然后,使用如下命令建立工程文件,并且启动脚手架演示页面。(如果提示错误,使用管理员来启动cmd)
1 | hexo init . |

使用浏览器,访问 http://localhost:4000 ,如果出现如下页面,则说明创建脚手架工程成功。
重置开发环境
从上步创建脚手架工程来看,DemoBlog目录下有个node_modules目录,这里存储了Hexo运行所需的NodeJs模块,很多也很大,所以一般我们不会将node_modules这个目录提交到SVN或者Git。
那这里有个问题,我们在其他机器上下载项目之后,如何重建node_modules目录呢?
我们使用如下命令来重新下载依赖并存在node_modules目录,所下载的模块是依据package.json文件来确定的:
1 | npm install |

说明一个问题
在我重新下载依赖时,出现了这么一个问题:
1 | Error: Cannot find module 'finalhandler' |

该问题的处理方法:删除package-lock.json和node_modules目录里的finalhandler,然后再次执行npm install。
参考资料
我们通常使用scp在服务器之间的copy数据,但需要每次输入账户密码才能完成copy。
比如我们欲将test.cpp文件从192.168.9.130拷贝到192.168.128服务器,一般执行流程如下图所示:

有时我们需要在脚本中自动将某些数据传输到另外一台机器上,每次输入密码则不那么方便,所以我们需要实现scp服务器间免密拷贝数据。
实现scp服务器间的密码拷贝数据,其方法一般有如下两步:
第一步,在本机生成SSH公私钥;
第二步,将本机生成的公钥拷贝到目标机器上,然后将公钥内容加入对应账号的 /home/{user}/.ssh/authorized_keys 文件内;
OpenSSH有两种认证方式:基于口令认证和基于密钥认证。
基于口令的认证相对简单,仅需在SSH客户端登录时输入密码即可。在某些场景,比如登录公司服务器,一般需要我们通过每人的密钥登录。
本文基于我经常使用的SecureCRT和WindTerm两个SSH客户端工具,分别介绍如何使用密钥登录。
OpenSSH有两种认证方式:基于口令认证和基于密钥认证。
基于口令的认证相对简单,仅需在SSH客户端登录时输入密码即可。在某些场景,比如登录公司服务器,一般需要我们通过每人的密钥登录。
本文基于我经常使用的SecureCRT和WindTerm两个SSH客户端工具,分别介绍如何使用密钥登录。
OpenSSH Server默认禁止root用户远程登录,实际工作中我们为了方便使用root账户,通常修改OpenSSH Server的配置文件,以使得root用户可以通过WindTerm或者SecrueCRT等软件登录服务器。
上文我们描述了基于源代码编译安装OpenSSH的方法,本文使用apt安装OpenSSH,并介绍OpenSSH的启动管理方法。
OpenSSH是SSH(Secure SHell)协议的免费开源实现,SSH协议族可以用来进行远程控制, 或在计算机之间传送文件。OpenSSH是用于远程登录、命令执行以及文件传输的SSH协议的完整实现,它支持SSH协议的V1.3、V1.5和V2。自OpenSSH-V2.9 以来,默认的SSH协议是V2,使用RSA 钥匙。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控制和文件传输过程中的数据,并由此来代替原来的类似服务。
程序主要包括了几个部分:
- ssh - rlogin与Telnet的替代方案。
- scp、sftp - rcp的替代方案,将文件复制到其他电脑上。
- sshd - SSH服务器。
- ssh-keygen - 产生RSA或DSA密钥,用来认证用。
- ssh-agent、ssh-add - 帮助用户不需要每次都要输入密钥密码的工具。
- ssh-keyscan - 扫描一群机器,并记录其公钥。
在Centos、Ubuntu或者Debian等发行版上,我们可以使用yum或者apt提供的软件源直接安装。本文主要讲解的是使用源代码+手工编译+手工安装的方式来编译安装OpenSSH。
本文记录使用supervisor部署nginx的方法。
上文 supervisor基本使用方法教程,我们重点了supervisor的基本使用方法,并未对它进行过多的展开。我们知道supervisor有三个重要的部分 supervisord、supervisorctl、inet_http_server 组成,但我认为隐藏在三部分后面的配置文件,才需要重点关注和学习,毕竟它控制着所有的表现属性。为了比较好的掌握supervisor的使用,本文我们对supervisor的配置文件进行重点分析。
Supervisor is a client/server system that allows its users to monitor and control a number of processes on UNIX-like operating systems.
Supervisor是一个在类UNIX系统上,监控控制大量进程的客户端/服务端系统。其主要功能包括程序自动启动、程序奔溃后自动重启,指定进程数目等等。本文是Supervisor安装、配置和使用的简单教程。
在Linux先编译软件基本都是采用configure文件生成makefile,或者,cmake生成makefile文件两种方式。它们生成的makefile文件,一般默认不支持-g调试选项。
但我们使用这种方式编译出来的静态库时,如果程序运行中core在静态库中,我们看不到有用的相关信息。所以有必要编译出debug版本。
glibc是标准C库的GNU实现。我们采用C/C++所写的程序,运行时基本都依赖与它。如果我们想看当前机器glibc的源代码,首先需要知道当前机器glibc的版本号,然后到glibc的官网下载对应版本的源代码。
目前现代c++的主要标准有c++11/14/17/20/23,我经常使用Debian/Ubuntu的不同版本,有时候想知道当前g++默认c++标准。本文就是记录下查看标准的两种方法。