Some tips, better use of Vim

网站管理员 发表了文章 • 0 个评论 • 168 次浏览 • 2019-04-17 11:07 • 来自相关话题

### Directory is not exist?

```bash
Command Control + Z, run vim background, and user command mkdir to create this directory
```

### No permission to create this file, or edit it?

```
# ESC
:w !sudo tee % >/dev/null
```

And then, your need to choice ```Ok``` or ```Load```, after your choice, the file mode will be readonly. don't feel fear, your can use command above 查看全部
### Directory is not exist?

```bash
Command Control + Z, run vim background, and user command mkdir to create this directory
```

### No permission to create this file, or edit it?

```
# ESC
:w !sudo tee % >/dev/null
```

And then, your need to choice ```Ok``` or ```Load```, after your choice, the file mode will be readonly. don't feel fear, your can use command above

It is required that your private key files are NOT accessible by others

网站管理员 发表了文章 • 0 个评论 • 208 次浏览 • 2019-04-09 10:55 • 来自相关话题

```
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/root/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/root/.ssh/id_rsa": bad permissions
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
```

### Solution

权限```0644```对于文件```~/.ssh/id_rsa```太开放了。

```bash
chmod 600 ~/.ssh/id_rsa ~/.ssh/id_rsa.pub
``` 查看全部
```
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/root/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/root/.ssh/id_rsa": bad permissions
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
```

### Solution

权限```0644```对于文件```~/.ssh/id_rsa```太开放了。

```bash
chmod 600 ~/.ssh/id_rsa ~/.ssh/id_rsa.pub
```

为什么用Charles配置了ssl证书还是抓不到https的包呢?

网站管理员 发表了文章 • 0 个评论 • 146 次浏览 • 2019-04-04 14:50 • 来自相关话题

### 背景

像往常一样,我在电脑端安装了ssl证书,然后手机端了下载了```chls.pro/ssl```的描述文件,且安装。但是依旧抓不到https包。

>
> iOS devices
> * Set your iOS device to use Charles as its HTTP proxy in the Settings app > Wifi settings.
> * Open Safari and browse to https://chls.pro/ssl. Safari will prompt you to install the SSL certificate.
> * If you are on iOS 10.3 or later, open the Settings.app and navigate to General > About > Certificate Trust Settings, and find the Charles Proxy certificate, and switch it on to enable full trust for it (More information about this change in iOS 10).
Now you should be able to access SSL websites with Charles using SSL Proxying.

### 出现问题的原因

1. 问题出现在第三点上,在iOS 10.3之后,我们需要在设置里```信任证书```

> 设置>通用>关于本机>信任证书设置(最下面)>信任对应的证书

### 总结

1. 如果你使用python的```mitmproxy```安装了证书,也抓不到https的包,那么处理方法也是这样的。 查看全部
### 背景

像往常一样,我在电脑端安装了ssl证书,然后手机端了下载了```chls.pro/ssl```的描述文件,且安装。但是依旧抓不到https包。

>
> iOS devices
> * Set your iOS device to use Charles as its HTTP proxy in the Settings app > Wifi settings.
> * Open Safari and browse to https://chls.pro/ssl. Safari will prompt you to install the SSL certificate.
> * If you are on iOS 10.3 or later, open the Settings.app and navigate to General > About > Certificate Trust Settings, and find the Charles Proxy certificate, and switch it on to enable full trust for it (More information about this change in iOS 10).
Now you should be able to access SSL websites with Charles using SSL Proxying.

### 出现问题的原因

1. 问题出现在第三点上,在iOS 10.3之后,我们需要在设置里```信任证书```

> 设置>通用>关于本机>信任证书设置(最下面)>信任对应的证书

### 总结

1. 如果你使用python的```mitmproxy```安装了证书,也抓不到https的包,那么处理方法也是这样的。

How to write a file, which named CMakeLists.txt,and build c-lang program with libevent

网站管理员 发表了文章 • 0 个评论 • 102 次浏览 • 2019-04-02 08:57 • 来自相关话题

I want to write a libevent c-lang program on the IDE clion, so I need to write a file, which named CMakeLists.txt to build this program.

### My program source code
```c

#include
#include
#include
#include
#include

#include
#include
#include

struct event ev;
struct timeval tv;

void time_cb(int fd, short event, void *argc) {
printf("timer wakeup\n");
event_add(&ev, &tv);
}

int main(int argc, char* argv[]) {
struct event_base *base = event_base_new();
tv.tv_sec = 10;
tv.tv_usec = 0;
event_assign(&ev, base, -1, 0, time_cb, NULL);
event_add(&ev, &tv);
event_base_dispatch(base);
}
```

### The CMakeLists.txt content
```
cmake_minimum_required(VERSION 3.12)
project(test)

set(CMAKE_CXX_STANDARD 98)

include_directories(/usr/local/Cellar/libevent/2.1.8/include/)
link_directories(/usr/local/Cellar/libevent/2.1.8/lib/)
add_executable(test a.c)
target_link_libraries(test event)
```
> used the function link_directions load the libraries, and use function target_link_libraries to link levent 查看全部

I want to write a libevent c-lang program on the IDE clion, so I need to write a file, which named CMakeLists.txt to build this program.

### My program source code
```c

#include
#include
#include
#include
#include

#include
#include
#include

struct event ev;
struct timeval tv;

void time_cb(int fd, short event, void *argc) {
printf("timer wakeup\n");
event_add(&ev, &tv);
}

int main(int argc, char* argv[]) {
struct event_base *base = event_base_new();
tv.tv_sec = 10;
tv.tv_usec = 0;
event_assign(&ev, base, -1, 0, time_cb, NULL);
event_add(&ev, &tv);
event_base_dispatch(base);
}
```

### The CMakeLists.txt content
```
cmake_minimum_required(VERSION 3.12)
project(test)

set(CMAKE_CXX_STANDARD 98)

include_directories(/usr/local/Cellar/libevent/2.1.8/include/)
link_directories(/usr/local/Cellar/libevent/2.1.8/lib/)
add_executable(test a.c)
target_link_libraries(test event)
```
> used the function link_directions load the libraries, and use function target_link_libraries to link levent

git的文件模式曾困扰了我

网站管理员 发表了文章 • 0 个评论 • 133 次浏览 • 2019-02-21 15:29 • 来自相关话题

当我为git里的某个文件建立软链的时候,文件模式从100644变成了120000,我起初以为是我的权限问题,导致文件的权限也发生了变化,

翻阅git的资料得知:
文件模式为 100644,表明这是一个普通文件,
其他可用的模式有:100755 表示可执行文件,
120000 表示符号链接。

文件模式是从常规的 UNIX 文件模式中参考来的,但是没有那么灵活 ── 上述三种模式仅对 Git 中的文件 (blobs) 有效 (虽然也有其他模式用于目录和子模块)。 查看全部

当我为git里的某个文件建立软链的时候,文件模式从100644变成了120000,我起初以为是我的权限问题,导致文件的权限也发生了变化,

翻阅git的资料得知:
文件模式为 100644,表明这是一个普通文件,
其他可用的模式有:100755 表示可执行文件,
120000 表示符号链接。

文件模式是从常规的 UNIX 文件模式中参考来的,但是没有那么灵活 ── 上述三种模式仅对 Git 中的文件 (blobs) 有效 (虽然也有其他模式用于目录和子模块)。

how to solve the command mv warning directory not empty, when target is directory?

网站管理员 发表了文章 • 0 个评论 • 133 次浏览 • 2019-02-14 12:57 • 来自相关话题

I get error ```mv: cannot move '/vendor/bin' to 'vendor/bin': Directory not empty```, when i used command ```mv``` on linux.
This problem is the direcotry is not empty, if your want overwrite it, you must add param ```-f``` or ```--force```.

### How to view the help of command ```mv```?

```bash
man mv
# or
mv --help
``` 查看全部

I get error ```mv: cannot move '/vendor/bin' to 'vendor/bin': Directory not empty```, when i used command ```mv``` on linux.
This problem is the direcotry is not empty, if your want overwrite it, you must add param ```-f``` or ```--force```.

### How to view the help of command ```mv```?

```bash
man mv
# or
mv --help
```

vim如何进行无格式化粘贴,苦恼:每次在vim内粘贴文本格式都会变乱

网站管理员 发表了文章 • 0 个评论 • 173 次浏览 • 2018-11-21 16:06 • 来自相关话题

### 解决vim内文本粘贴格式变乱的问题?

### 解决方案
输入```:set paste```即可,然后再粘贴进去,就不会出现文本混乱的问题了。

```bash
vim docker-compose.yml

:set paste
```

### 解决vim内文本粘贴格式变乱的问题?

### 解决方案
输入```:set paste```即可,然后再粘贴进去,就不会出现文本混乱的问题了。

```bash
vim docker-compose.yml

:set paste
```

如何快速获取一个网站的HTML页面源码wget之爬虫系列

网站管理员 发表了文章 • 0 个评论 • 258 次浏览 • 2018-10-31 17:42 • 来自相关话题

其实使用wget获取整个网站的源代码其实用wget就可以,而且一个命令就可以解决,爬取页面十分的快

```bash
mkdir -p wingman
wget -c -r -npH -k wingman.mediumra.re
```

### 如何去掉字体font后面的get参数
```bash
cd assets/fonts
for i in `ls .`; do echo ${i}; mv ${i} `echo ${i} | sed 's/?.*$//g'`; done
```

是不是十分的简单 查看全部

其实使用wget获取整个网站的源代码其实用wget就可以,而且一个命令就可以解决,爬取页面十分的快

```bash
mkdir -p wingman
wget -c -r -npH -k wingman.mediumra.re
```

### 如何去掉字体font后面的get参数
```bash
cd assets/fonts
for i in `ls .`; do echo ${i}; mv ${i} `echo ${i} | sed 's/?.*$//g'`; done
```

是不是十分的简单

解决crontab指定用户执行脚本,或解决输出日志为root其他用户无法打开的问题

网站管理员 发表了文章 • 0 个评论 • 284 次浏览 • 2018-10-17 12:44 • 来自相关话题

解决crontab指定用户执行脚本,或解决输出日志为root其他用户无法打开的问题

### 背景:处理laravel定时任务时,出现目录不可读取

通常我们都会用```crontab```来执行一个定时任务
```bash
* * * * * /usr/bin/php /data/wwwroot/admin-api/artisan schedule:run >> /tmp/schedule 2>&1
```
如果当前用户是```root```的话,那么这个脚本就会是以```root```的身份去执行这个文件,那么生成的/tmp/schedule也是root的
所以其他权限低的用户打开这个文件会出现```Permission denied``` 权限被拒绝


### 解决方案

```bash
crontab -h
```
输出如下:
```
crontab: invalid option -- 'h'
crontab: usage error: unrecognized option
usage: crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
(default operation is replace, per 1003.2)
-e (edit user's crontab)
-l (list user's crontab)
-r (delete user's crontab)
-i (prompt before deleting user's crontab)
-s (selinux context)
```
```bash
crontab -u www-data # 指定一个用户身份,默认是当前登录的用户,root级root,当然不可以越级
crontab -u www-data -l # 查看这个用户www-data设置的定时任务
crontab -u www-data -e # 编辑www-data这个用户的定时任务
crontab -u www-data -r # 删除这个用户所有的定时任务
```

```crontab -u www-data -e```进入vim编辑模式,写入你的定时任务执行脚本,保存退出,即可生效了。 查看全部

解决crontab指定用户执行脚本,或解决输出日志为root其他用户无法打开的问题

### 背景:处理laravel定时任务时,出现目录不可读取

通常我们都会用```crontab```来执行一个定时任务
```bash
* * * * * /usr/bin/php /data/wwwroot/admin-api/artisan schedule:run >> /tmp/schedule 2>&1
```
如果当前用户是```root```的话,那么这个脚本就会是以```root```的身份去执行这个文件,那么生成的/tmp/schedule也是root的
所以其他权限低的用户打开这个文件会出现```Permission denied``` 权限被拒绝


### 解决方案

```bash
crontab -h
```
输出如下:
```
crontab: invalid option -- 'h'
crontab: usage error: unrecognized option
usage: crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
(default operation is replace, per 1003.2)
-e (edit user's crontab)
-l (list user's crontab)
-r (delete user's crontab)
-i (prompt before deleting user's crontab)
-s (selinux context)
```
```bash
crontab -u www-data # 指定一个用户身份,默认是当前登录的用户,root级root,当然不可以越级
crontab -u www-data -l # 查看这个用户www-data设置的定时任务
crontab -u www-data -e # 编辑www-data这个用户的定时任务
crontab -u www-data -r # 删除这个用户所有的定时任务
```

```crontab -u www-data -e```进入vim编辑模式,写入你的定时任务执行脚本,保存退出,即可生效了。

curl 常用命令集合的使用方法

网站管理员 发表了文章 • 0 个评论 • 273 次浏览 • 2018-10-11 18:03 • 来自相关话题

### cURL是利用url语法在命令行下工作的文件传输工具,支持很多种通讯协议

如:
```
FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3、SMTP和RTSP。

curl还支持SSL认证、HTTP POST、HTTP PUT、FTP上传, HTTP form based upload、proxies、HTTP/2、cookies、用户名+密码认证
```

### 安装使用

```bash
yum install curl -y // centos

apt-get install curl // debain/ubuntu
```

### curl的常用使用方法

- 查看http header请求头的信息

```bash
curl -I 'http://www.baidu.com'
```

- 发起POST请求
```bash
curl -XPOST 'http://www.baidu.com' --data-binary 'username=admin&password=123123'
```

- 发起PUT请求
```bash
curl -XPUT 'http://www.baidu.com' --data-binary 'xx=xxx&xxx=ssss'
```
- GET/DELETE 同理,但是不需要```--data-binary```通过body传输数据

- 带上请求头```-H```
模拟ajax请求,且设置内容类型
```bash
curl -H 'X-Requested-With: XMLHttpRequest' -H 'Content-type:application/json' 'http://www.baidu.com'
```

- ```-s slience``` 静默下载,不输出内容

- ```-s```或者```--write-out```定义在请求成功结束后显示的信息,即请求成功后格式化输出的内容。语法:

```-w```后面加上格式: 如http状态码```%{http_code}```、请求总的时间```%{time_total}```
```bash
curl -i -s -w "%{http_code}-%{time_total}" 'http://www.baidu.com' -o /dev/null
```

-o 将标准输出写入文件,后面加新的文件名
```bash
-o /dev/null // 写入黑洞
``` 查看全部
### cURL是利用url语法在命令行下工作的文件传输工具,支持很多种通讯协议

如:
```
FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3、SMTP和RTSP。

curl还支持SSL认证、HTTP POST、HTTP PUT、FTP上传, HTTP form based upload、proxies、HTTP/2、cookies、用户名+密码认证
```

### 安装使用

```bash
yum install curl -y // centos

apt-get install curl // debain/ubuntu
```

### curl的常用使用方法

- 查看http header请求头的信息

```bash
curl -I 'http://www.baidu.com'
```

- 发起POST请求
```bash
curl -XPOST 'http://www.baidu.com' --data-binary 'username=admin&password=123123'
```

- 发起PUT请求
```bash
curl -XPUT 'http://www.baidu.com' --data-binary 'xx=xxx&xxx=ssss'
```
- GET/DELETE 同理,但是不需要```--data-binary```通过body传输数据

- 带上请求头```-H```
模拟ajax请求,且设置内容类型
```bash
curl -H 'X-Requested-With: XMLHttpRequest' -H 'Content-type:application/json' 'http://www.baidu.com'
```

- ```-s slience``` 静默下载,不输出内容

- ```-s```或者```--write-out```定义在请求成功结束后显示的信息,即请求成功后格式化输出的内容。语法:

```-w```后面加上格式: 如http状态码```%{http_code}```、请求总的时间```%{time_total}```
```bash
curl -i -s -w "%{http_code}-%{time_total}" 'http://www.baidu.com' -o /dev/null
```

-o 将标准输出写入文件,后面加新的文件名
```bash
-o /dev/null // 写入黑洞
```