git安装

下载安装包,然后根据提示安装即可,默认安装就行。

Git SSH配置过程

配置邮箱和用户名

配置邮箱

1
git config --global user.email "your_email@example.com"

例如我的邮箱:

1
git config --global user.email "18251956727@163.com"

配置用户名

1
git config --global user.name "your_name"
1
git config --global user.name "lanlan2017"

查看效果

1
git config --global  --list
1
2
3
4
5
Administrator@DESKTOP-8ISAT6B MINGW64 /e/Blog
$ git config --global --list
core.quotepath=false
user.email=18251956727@163.com
user.name=lanlan2017

生成密钥对

生成默认长度的密钥对

1
ssh-keygen -t rsa -C "18251956727@163.com"

生成指定长度的密钥对

1
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

添加key到SSH

1
ssh-add 私钥文件名
1
ssh-add id_rsa

解决 Could not open a connection to your authentication agent

如果出现如下错误:

1
2
3
lan@DESKTOP-8ISAT6B MINGW64 ~/.ssh
$ ssh-add id_rsa
Could not open a connection to your authentication agent.

则先执行如下命令

1
ssh-agent bash

然后再次执行:

1
ssh-add id_rsa

即可

添加成功效果

1
2
$ ssh-add id_rsa
Identity added: id_rsa (xxxxxxx@xxxx.com)

将公钥添加到Github上

1
cat id_rsa.pub

然后复制,然后浏览器上进入GitHub网站。
点击github网站右上方头像,然后选择Setting,在Account settings栏中选择SSH and GPG keys,然后点击右上方的New SSH key按钮。
然后在Title输入框中输入公钥的名称。在Key文本域中输入上面的公钥(id_rsa.pub)的内容

测试链接是否成功

进入一个之前的git本地仓库,输入如下命令测试连接:

1
ssh -T git@github.com

如果有如下输出,则表示公钥已经设置好,SSH连接正常。

1
2
3
lan@DESKTOP-8ISAT6B MINGW64 /e/Blog/blog9 (master)
$ ssh -T git@github.com
Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.

使用SSH推送远程仓库

1
2
3
git add .
git commit -m '测试SSH推送'
git push origin master

这个时候就可以直接推送到远程仓库了.不再需要输入用户名和密码.

SSH推送有问题

如果这个时候还需要输入密码,这表示上面的步骤有问题.

你可能没有开启ssh-agent

你可以先需要输入如下命令

1
ssh-agent bash

再试着推送

1
git push origin master

你可能的远程仓库地址时HTTPS的不是SSH地址

如果ssh-agent也开启了,密钥设置的也没有问题,push的时候还是要求登录密码,那你可能用的时HTTPS的仓库地址

查看远程仓库地址

1
git remote -v
1
2
3
4
lan@DESKTOP-8ISAT6B MINGW64 /e/Blog/blog10 (master)
$ git remote -v
origin https://github.com/lanlan2017/JavaReadingNotes.git (fetch)
origin https://github.com/lanlan2017/JavaReadingNotes.git (push)

删除远程仓库地址

1
git remote rm origin

重新添加SSH地址

1
git remote add origin git@github.com:lanlan2017/JavaReadingNotes.git

这样就可以直接push了:

1
2
3
4
5
6
7
8
9
10
11
12
lan@DESKTOP-8ISAT6B MINGW64 /e/Blog/blog10 (master)
$ git push origin master
Enumerating objects: 18, done.
Counting objects: 100% (18/18), done.
Delta compression using up to 4 threads
Compressing objects: 100% (11/11), done.
Writing objects: 100% (11/11), 6.94 KiB | 3.47 MiB/s, done.
Total 11 (delta 6), reused 0 (delta 0)
remote: Resolving deltas: 100% (6/6), completed with 6 local objects.
To github.com:lanlan2017/JavaReadingNotes.git
58370ef..1f87f16 master -> master

如果还不行,则按上面的步骤重新操作一遍。

参考资料

https://blog.csdn.net/hx1298234467/article/details/53576826
https://www.cnblogs.com/yangshifu/p/9919817.html
https://www.cnblogs.com/e-cat/p/10862208.html

问题描述

使用git add添加要提交的文件的时候,如果文件名是中文,会显示形如274\232\350\256\256\346\200\273\347\273\223的乱码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Administrator@DESKTOP-8ISAT6B MINGW64 /e/Blog/blog9 (master)
$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

modified: "source/_posts/Hexo\346\220\255\345\273\272/Hexo\346\220\255\345\273\272.md"
modified: "source/_posts/\347\275\221\347\253\231\347\233\256\345\275\225.md"

no changes added to commit (use "git add" and/or "git commit -a")

解决方案

在bash提示符下输入:

1
git config --global core.quotepath false

core.quotepath设为false的话,就不会对0x80以上的字符进行quote。中文显示正常。

成功效果

这样中文就显示正常了:

1
2
3
4
5
6
7
8
9
10
11
Administrator@DESKTOP-8ISAT6B MINGW64 /e/Blog/blog9 (master)
$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

modified: source/_posts/Hexo搭建/Hexo搭建.md
modified: source/_posts/网站目录.md

参考资料

https://www.cnblogs.com/EasonJim/p/8403587.html

问题描述

使用git add添加要提交的文件的时候,如果文件名是中文,会显示形如274\232\350\256\256\346\200\273\347\273\223的乱码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Administrator@DESKTOP-8ISAT6B MINGW64 /e/Blog/blog9 (master)
$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

modified: "source/_posts/Hexo\346\220\255\345\273\272/Hexo\346\220\255\345\273\272.md"
modified: "source/_posts/\347\275\221\347\253\231\347\233\256\345\275\225.md"

no changes added to commit (use "git add" and/or "git commit -a")

解决方案

在bash提示符下输入:

1
git config --global core.quotepath false

core.quotepath设为false的话,就不会对0x80以上的字符进行quote。中文显示正常。

成功效果

这样中文就显示正常了:

1
2
3
4
5
6
7
8
9
10
11
Administrator@DESKTOP-8ISAT6B MINGW64 /e/Blog/blog9 (master)
$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

modified: source/_posts/Hexo搭建/Hexo搭建.md
modified: source/_posts/网站目录.md

参考资料

https://www.cnblogs.com/EasonJim/p/8403587.html

手机上安装VPN软件

Google Play上下载的银河VPN,这个软件可以代理其他设备的网络

Windows上下载安装SocksCap64

首先进入SocksCap64下载地址
选择Free Download,然后在弹出的窗口中点击Softpedia Secure Download (US)即可下下载.

使用步骤

  • 手机使用4G
  • 手机上开热点
  • 打开银河VPN,打开分享VPN功能,获取手机代理服务器地址(手机的IP地址),代理端口号`
  • 电脑连接到手机热点
  • 电脑上打开SocksCap64,填上手机代理服务器地址(手机的IP地址),代理端口号
  • SocksCap64选择使用系统代理

问题描述

在调用函数的时候,有时候可能会忘了传入参数,这样会报错:

1
TypeError: text is undefined

解决方案

使用参数的时候先判断参数是否存在,如果参数存在,再使用参数。

使用typeof运算符进行判断

1
2
3
4
5
6
7
8
9
function mdCodeInLines(text) {
// if (text == null) {
if (typeof (text) == "undefined") {
console.log("text=" + text)
var text = input.value;
}
text = text.replace(/`?((?:-(?! ))?[a-zA-Z<][a-zA-Z0-9 ():\_.\/\[\]<>,+="]*[a-zA-Z0-9)>/.\*])`?/mg, "`$1`");
result(text)
}

和null比较

1
2
3
4
5
6
7
8
9
function mdCodeInLines(text) {
if (text == null) {
// if (typeof (text) == "undefined") {
console.log("text=" + text)
var text = input.value;
}
text = text.replace(/`?((?:-(?! ))?[a-zA-Z<][a-zA-Z0-9 ():\_.\/\[\]<>,+="]*[a-zA-Z0-9)>/.\*])`?/mg, "`$1`");
result(text)
}

经过我的测试,这两种方式都可以,具体的区别我还没比较.

HTML 5 details标签

定义和用法
<details> 标签用于描述文档或文档某个部分的细节。

summary子标签

标签可以为 details 定义标题。标题是可见的,**用户点击标题时,会显示出 details**。

markdown中可以写HTML

使用如下HTML标签可以实现展开折叠功能

1
2
3
<details><summary>展开/收起</summary>
被折叠的内容
</details>
展开/收起 被折叠的内容

折叠的内容是可以Markdown

显示效果如下

展开/收起
1
2
3
4
5
6
7
private Formatter formatter;
......
public Console format(String fmt, Object ...args)
{
formatter.format(fmt, args).flush();
return this;
}

本文似乎过时了

获取Token

登陆Github,然后获取token,网上教程一堆。省略

配置Token

travis-ci上登陆github,然后开启要监控的仓库,在仓库上配置获取到的Token
过程省略,网上一大堆.

hexo d部署地址和.travis.yml书写的问题

Github Pages有两种:

  • 一种是基于用户的Github Pages:
    • 这个仓库的名称为用户名.github.io`,
    • 每个用户只能创建一个
    • 这个Github pages的域名为:https://用户名.github.io/
    • 这个Github pages默认部署在master分支上.
  • 一种是基于仓库的Github Pages:
    • 这仓库名可以随意,
    • 你可以创建多个仓库,然后在多个仓库上开启Github Pages.
    • 这种Github Pages的域名为:https://用户名.github.io/仓库名/`
    • 这种GitHub Pages默认部署在gh-pages分支上

基于项目的Github Pages的写法

Github允许在每个项目的gh-pages分支上开启GitHub Pages,将,

站点配置文件中仓库地址的写法

1
2
3
4
5
6
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repo: https://gh_token@github.com/lanlan2017/blog.git # 实际项目地址,不需要是xxxx.github.io
branch: gh-pages #基于项目的github pages默认搭建在gh-pages分支上

其中gh_token是一个占位符,方便后续使用真正的token填充。你可换成其他字符。

正确的.travis.yml

travis-ci中使用原来的hexo d进行发布,.travis.yml书写如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
language: node_js

node_js: stable # 要安装的node版本为当前的稳定版

cache:
directories:
- node_modules # 要缓存的文件夹

install: # 在安装项目环境阶段需要运行的命令,一条一行,类似的还有 before_install
- npm install # 安装 package.json 中的依赖

script: # 在构建阶段需要运行的命令,一条一行,类似的还有 before_script、after_script
- hexo generate # Hexo 常规命令,执行清理和生成

# 设置git提交名,邮箱;替换真实token到_config.yml文件,最后depoy部署
after_script:
- git config user.name "lanlan2017"
- git config user.email "18251956727@163.com"
# 替换同目录下的_config.yml文件中gh_token字符串为travis后台刚才配置的变量,注意此处sed命令用了双引号。单引号无效!
- sed -i "s/gh_token/${GH_TOKEN}/g" ./_config.yml
- hexo deploy

branches:
only:
- master # 触发持续集成的分支

注意

1
sed -i "s/gh_token/${GH_TOKEN}/g" ./_config.yml

GH_TOKEN就是你设置的token的名字
${GH_TOKEN}就是取出变量的值
整个命令的意思,就是将gh_token替换成GH_TOKEN这个变量的值,也就是替换成真正的token

推送到master分支

1
2
3
git add
git commit -m '自动部署'
git pull origin master

基于xxxx.github.io仓库的配置

xxxx.github.io是基于用户的github pages,只可以创建一份.并且必须构建在master分支上.
配置文件需要修改

站点配置文件中仓库地址的写法

1
2
3
4
5
6
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repo: https://gh_token@github.com/lanlan2017/lanlan2017.github.io.git # 填写上xxxx.github.io的仓库的地址
branch: master #xxxx.github.io仓库的GitHub Pages必须发布在主分支上

正确的.travis.yml

由于github pages已经放在master分支上了,我们必须使用其他分支来放博客源码,我这里创建了一个src分支来存放博客源码
这样就需要修改travis-ci的配置文件.travis.yml,在src分支上有变化时,部署博客.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
language: node_js

node_js: stable # 要安装的node版本为当前的稳定版

cache:
directories:
- node_modules # 要缓存的文件夹

install: # 在安装项目环境阶段需要运行的命令,一条一行,类似的还有 before_install
- npm install # 安装 package.json 中的依赖

script: # 在构建阶段需要运行的命令,一条一行,类似的还有 before_script、after_script
- hexo generate # Hexo 常规命令,执行清理和生成

# 设置git提交名,邮箱;替换真实token到_config.yml文件,最后depoy部署
after_script:
- git config user.name "lanlan2017"
- git config user.email "18251956727@163.com"
# 替换同目录下的_config.yml文件中gh_token字符串为travis后台刚才配置的变量,注意此处sed命令用了双引号。单引号无效!
- sed -i "s/gh_token/${GH_TOKEN_Root}/g" ./_config.yml
- hexo deploy

branches:
only:
- src # 触发持续集成的分支

推送到src分支

1
2
3
git add
git commit -m '自动部署'
git pull origin src

Termux API有什么用

Termux:API,用于访问手机硬件,实现更多的可玩性,可以实现如下等功能:

  • 访问电池信息
  • 获取相机设备信息
  • 获取本机设备信息
  • 获取设置剪贴板信息
  • 获取通讯录信息
  • 获取设置手机短信
  • 拨打号码
  • 振动设备

手机上安装Termux API APP

从Google Play上下载Termux API,然后安装.

Termux里面安装Termux-api软件包

安装完Termux-api APP后,Termux里面必须安装对应的包后才可以实现操作手机底层.

1
pkg install termux-api

常用命令

下面只列举一些可能会用到的,想要获取更多关于Termux-api的话,那就去参考官方文档.

获取电池信息

1
termux-battery-status

获取相机信息

1
termux-camera-info

获取与设置剪贴板

查看当前剪贴板内容

1
termux-clipboard-get

设置新的剪贴板内容

1
termux-clipboard-set HelloWorld

获取通讯录列表

1
termux-contact-list

查看短信内容列表

1
termux-sms-inbox

发送短信

1
termux-sms-send

支持同时发送多个号码,实现群发的效果,官方介绍如下:

1
termux-sms-send -n number(s)  recipient number(s) - separate multiple numbers by commas

发送测试

1
termux-sms-send -n 10001 cxll

这个好像不支持了,出现的错误如下:

1
2
3
4
termux-sms-send -n 10086 192
{
"error": "Sending SMS is no longer permitted by Google"
}

拨打电话

1
termux-telephony-call

拨打电话需要授予电话权限,下面拨打10086试试:

1
termux-telephony-call 10086

WiFi相关

获取当前WiFi连接信息

1
termux-wifi-connectioninfo

termux API小结

直接操作调动系统底层的话,可以通过编程来实现自动定时短信发送,语音播报等功能,DIY空间无线.

参考资料

https://www.sqlsec.com/2018/05/termux.html

grep命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
grep --help                                                               
Usage: grep [OPTION]... PATTERNS [FILE]...
Search for PATTERNS in each FILE.
Example: grep -i 'hello world' menu.h main.c
PATTERNS can contain multiple patterns separated by newlines.

Pattern selection and interpretation:
-E, --extended-regexp PATTERNS are extended regular expressions
-F, --fixed-strings PATTERNS are strings
-G, --basic-regexp PATTERNS are basic regular expressions
-P, --perl-regexp PATTERNS are Perl regular expressions
-e, --regexp=PATTERNS use PATTERNS for matching
-f, --file=FILE take PATTERNS from FILE
-i, --ignore-case ignore case distinctions
-w, --word-regexp match only whole words
-x, --line-regexp match only whole lines
-z, --null-data a data line ends in 0 byte, not newline

Miscellaneous:
-s, --no-messages suppress error messages
-v, --invert-match select non-matching lines
-V, --version display version information and exit
--help display this help text and exit

Output control:
-m, --max-count=NUM stop after NUM selected lines
-b, --byte-offset print the byte offset with output lines
-n, --line-number print line number with output lines
--line-buffered flush output on every line
-H, --with-filename print file name with output lines
-h, --no-filename suppress the file name prefix on output
--label=LABEL use LABEL as the standard input file name prefix
-o, --only-matching show only nonempty parts of lines that match
-q, --quiet, --silent suppress all normal output
--binary-files=TYPE assume that binary files are TYPE;
TYPE is 'binary', 'text', or 'without-match'
-a, --text equivalent to --binary-files=text
-I equivalent to --binary-files=without-match
-d, --directories=ACTION how to handle directories;
ACTION is 'read', 'recurse', or 'skip'
-D, --devices=ACTION how to handle devices, FIFOs and sockets;
ACTION is 'read' or 'skip'
-r, --recursive like --directories=recurse
-R, --dereference-recursive likewise, but follow all symlinks
--include=GLOB search only files that match GLOB (a file pattern)
--exclude=GLOB skip files and directories matching GLOB
--exclude-from=FILE skip files matching any file pattern from FILE
--exclude-dir=GLOB skip directories that match GLOB
-L, --files-without-match print only names of FILEs with no selected lines
-l, --files-with-matches print only names of FILEs with selected lines
-c, --count print only a count of selected lines per FILE
-T, --initial-tab make tabs line up (if needed)
-Z, --null print 0 byte after FILE name

Context control:
-B, --before-context=NUM print NUM lines of leading context
-A, --after-context=NUM print NUM lines of trailing context
-C, --context=NUM print NUM lines of output context
-NUM same as --context=NUM
--color[=WHEN],
--colour[=WHEN] use markers to highlight the matching strings;
WHEN is 'always', 'never', or 'auto'
-U, --binary do not strip CR characters at EOL (MSDOS/Windows)

When FILE is '-', read standard input. With no FILE, read '.' if
recursive, '-' otherwise. With fewer than two FILEs, assume -h.
Exit status is 0 if any line (or file if -L) is selected, 1 otherwise;
if any error occurs and -q is not given, the exit status is 2.

TL-WR800N v1路由器配置

固定电脑IP地址

网络和internet设置,更改适配器选项,然后在WLAN上右键,选择属性(R),然后点击internet协议版本4(TCP/IPv4)选项,然后按下属性(R)按钮,在弹出的窗口上选择使用下面的IP地址(S),
然后设置固IP为192.168.1.200,子网掩码为:255.255.255.0,最后选择确定即可

连接路由器的WiFi

WiFi列表中链接WiFi,这个WiFI的格式为:TP-LINK_xxxxxx

进入路由器后台

http://192.168.1.253/
后台用户名:admin,后台密码:admin

AP模式

AP模式就是将有线信号转成无线信号
参见:https://www.192ly.com/router-settings/tp-link/tl-wr800n-v1-ap.html

中继模式

中继模式用来将弱的无线信号放大,以便扩大无线的覆盖范围
参见:https://service.tp-link.com.cn/detail_article_1131.html

取消固定电脑IP地址

重复第一步的步骤,然后选择**自动获得IP地址(O)**即可.

参考链接

TL-WR800N v1 说明书
TP-Link TL-WR800N V1路由器-AP模式设置
TP-Link TL-WR800N V1路由器中继设置
TP-Link TL-WR800N V1路由器 其他设置
[TL-WR800N V1] 中继放大无线信号-中继模式