git

图形界面:
gitkraken 据说好用的git图形界面

1
2
3
4
5
# 检出分支到本地新分支、覆盖工作区
git checkout -f -B branchabc remotes/origin/branchabc --

# 添加gpg签名密钥
git config --global user.signingkey 0A46826A

基本操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 检出dev分支
git checkout dev

# 检出某个文件, 还原工作区
git checkout xxx.c

# 把dev合并到当前分支
git merge dev

# 变基到dev分支
git rebase dev

# 查看某文件历史
git log --pretty=oneline xxx.c

# 删除未跟踪文件 -x连ignore的文件也一起 -d目录
git clean -xfd

查看更多

openssl

使用openssl进行aes加密、解密

1
$ openssl aes-128-cbc -K `xxd -p -c 32 ../base_key.bin` -iv `xxd -p -c 32../base_key_vi.bin` -e -nopad -nosalt -in aes_256_src_buf.bin > aes_256_src_buf-encrypt.bin
1
$ openssl aes-128-cbc -K `xxd -p -c 32 ../base_key.bin` -iv `xxd -p -c 32 ../base_key_vi.bin` -d -nopad -nosalt -in aes_256_src_buf-encrypt.bin > aes_256_src_buf-decrypt.bin

-K为key,-iv为IV,-e为encrypt,-d为解密,-in为文件输入

查看更多

hostapd

hostapd用于开启wifi ap,执行后会创建/var/run/hostpad文件夹,hostapd_cli是用户操作界面。

1
2
3
$ hostapd /etc/hostapd.conf &
$ hostapd_cli -i wlan0 enable
$ hostapd_cli -i wlan0 disable

用法

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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#!/bin/sh
#
# Start the Hotspot....
#

HOSTAPD_CONF=/etc/hostapd.conf
HOSTAPD_CONF_DEFAULT=/rom${HOSTAPD_CONF}

case "$1" in
start)
printf "Starting Hotspot: "

# start hostpad if /var/run/hostapd not exsit
if ! [ -e /var/run/hostapd ]; then
hostapd $HOSTAPD_CONF > /dev/null &
timeout=0
while ! [ -e /var/run/hostapd ]; do
usleep 100000
let timeout++
if [ $timeout -gt 10 ]; then
echo "FAIL"
exit 1
fi
done
fi

hostapd_cli -i wlan0 enable > /dev/null
[ $? = 0 ] && echo "OK" || echo "FAIL"
;;
stop)
printf "Stopping Hotspot: "
hostapd_cli -i wlan0 disable > /dev/null
[ $? = 0 ] && echo "OK" || echo "FAIL"
;;
ssid)
if [ $# == 2 ]; then
printf "Setting Hotspot SSID: "
{
sed -i "s/^ssid=.*/ssid=$2/" $HOSTAPD_CONF &&
hostapd_cli -i wlan0 set ssid "$2" > /dev/null &&
echo "OK"
} || { # error catch
echo "FAIL"
exit 1
}
"$0" stop
killall hostapd
"$0" start
else
SSID=`hostapd_cli -i wlan0 status | sed -n 's/^ssid\[0\]=\(.*\)/\1/p'`
[ -n "${SSID}" ] && echo $SSID || exit 1
fi
;;
passwd)
if [ $# == 2 ]; then
printf "Setting Hotspot PASSWD: "
{
sed -i "s/^wpa_passphrase=.*/wpa_passphrase=$2/" $HOSTAPD_CONF &&
hostapd_cli -i wlan0 set wpa_passphrase "$2" > /dev/null &&
echo "OK"
} || { # error catch
echo "FAIL"
exit 1
}
"$0" restart
else
exit 1
fi
;;
reset)
printf "Resetting Setting Configuration: "
cp $HOSTAPD_CONF_DEFAULT $HOSTAPD_CONF
[ $? = 0 ] && echo "OK" || (echo "FAIL"; exit 1)
"$0" stop
killall hostapd
"$0" start
;;
state)
STATE=`hostapd_cli -i wlan0 status | sed -n 's/^state=\(.*\)/\1/p'`
[ -n "${STATE}" ] && echo $STATE || exit 1
;;
restart|reload)
"$0" stop
"$0" start
;;
*)
echo "Usage: $0 {start|stop|ssid|passwd|state|reset|restart}"
exit 1
esac

exit $?

查看更多

expect

Expect是Unix系统中用来进行自动化控制和测试的软件工具,相当于手动输入命令行

TCL语言

脚本语言,Tool Command Language,在仪表领域被用得很多。

替代品

python

查看更多

攻击性相关

人格心理学: 人性及其差异的研究 攻击的理论

1、本能论

Freud是攻击行为本能论的著名代表,在《文明及其不满》一书中他曾写到“攻击的倾向是人天生、独立的本能倾向。”在他看来,和人有性本能、饮食本能、防御本能一样,人也有攻击的本能。他甚至推测在人身上还有容纳这种通过遗传获得的攻击性能量的存储器,存储器中的攻击性能量迟早要释放出来的,他称之为“宣泄”。如果能量宣泄指向内部,就表现为对自我的折磨摧残,甚至自杀;若指向外部,则表现为对他人的伤害,也就是多种多样的攻击行为。

大部分现代精神分析论者也认为攻击是一种本能性的驱力,却不同意Freud所说的我们都有自我导向的死亡本能。攻击的本能性倾向可能是在我们追求需要的满足时遭到了挫折,或自我的作用因面临威胁而受到了阻碍的结果。依照这种看法,攻击驱力是好的,它可以协助个体满足基本的需求,可维护生命而非自我摧毁。

查看更多

linux自带工具

mkdir 创建目录
cp 拷贝
cat 输出文件内容
stat 查看文件属性
ll 罗列当前目录内容(-h 以K,M,G单位表示文件大小)
chmod 修改权限,常用开关-R递归,例子 chmod -R a+wr *
mv 移动文件
rm 删除,常用开关-f强制-r递归
ps 查看进程 常用开关-aux
kill 杀进程,用进程号

killall 杀进程,用程序名字

nohup 后台运行进程 nohup ./xx.sh >output 2>&1 &
find /home -name “abc.txt”
tail 查看指定文件末尾几行
which 获取指定文件的完整路径($PATH中的)
shred 粉碎文件
tail 看文件尾部 -f参数看实时log日志(追加文件内容)
lsusb 查看usb设备

查看更多

shell脚本编程

技巧

获取脚本所在目录

获取脚本所在路径, 而不是$PWD

1
2
SHELL_DIR=$(cd "$(dirname "$0")";pwd)
cd $SHELL_DIR

当需要用source调用这个脚本时,上面这个$0是不可靠的,得换成${BASH_SOURCE[0]}

查看更多

xxd

xxd是个十六进制编辑器,可以完成二进制文件与十六进制文本的转换

文件转十六进制文本

1
2
3
4
5
$ xxd mount_mysdk.sh 
00000000: 2321 2f62 696e 2f62 6173 680a 0a73 7368 #!/bin/bash..ssh
00000010: 6673 206d 7063 406d 7973 646b 3a2f 686f fs [email protected]:/ho
00000020: 6d65 2f6d 7063 2f77 6f72 6b73 7061 6365 me/mpc/workspace
00000030: 7320 7e2f 6d79 7364 6b0a 0a s ~/mysdk..

常用选项:

查看更多

linux-socket-tcp

linux tcp客户端示例代码

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
struct sockaddr_i n servaddr;
int ret, flags;

ble_agent_sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (ble_agent_sockfd == -1) {
LOG_ERR("%s: socket creation failed...\n", __func__);
return -1;
}

bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(LOCAL_SERVER_PORT);
servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");
ret = connect(ble_agent_sockfd, (struct sockaddr*)&servaddr, sizeof(struct sockaddr));
if (0 != ret) {
LOG_ERR("%s: connect failed, %d\n", __func__, ret);
return ret;
}

// set no-block mode
flags = fcntl(ble_agent_sockfd, F_GETFL, 0);
ret = fcntl(ble_agent_sockfd, F_SETFL, flags | O_NONBLOCK);
if (0 != ret) {
LOG_ERR("%s: fcntl() failed, %d\n", __func__, ret);
return ret;
}

title: libc
date: 2019-07-27
categories:

  • 电子工程

查看更多