树莓派更换中国大陆地区软件源(stretch)

查看自己的版本类型:
lsb_release -a

sudo nano /etc/apt/sources.list
将文件里的默认的官方软件源用# 注释掉
deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi

sudo nano /etc/apt/sources.list.d/raspi.list
将文件里的默认的官方软件源用# 注释掉
deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi stretch main ui

sudo apt-get update
sudo apt-get upgrade

CentOS 7 VMware 联网

dhclient –v
ip addr


Add this in auto-startup
cd /etc/init.d

vi net-autostart
#!/bin/bash
# Solution for "No Internet Connection from VMware"
#
### BEGIN INIT INFO
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
### END INIT INFO
dhclient -v


chmod 755 net-autostart
chkconfig --add net-autostart

restart vm to test

Linux下使用iptables禁止指定IP地址的网络连接

在Linux下,使用iptables来维护IP规则表。要封停或者是解封IP,其实就是在IP规则表添加规则。
要禁止指定IP地址的网络连接,可以使用以下两种方法来快速实现。

1.禁止特定IP的连接
要禁止一个IP,使用下面这条命令:
iptables -I INPUT -s ***.***.***.*** -j DROP

要解封一个IP,使用下面这条命令:
iptables -D INPUT -s ***.***.***.*** -j DROP

参数-I是表示 Insert (添加),-D表示 Delete (删除)。后面跟的是规则, INPUT 表示入站,***.***.***.*** 表示要封停的IP, DROP 表示放弃连接。

service iptables save
service iptables restart

可以使用下面的命令来查看当前的IP规则表: 
iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       all  --  120.120.120.36       anywhere                      

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

如果输出非常慢,可使用:
iptables -n -L
-n选项,主机和端口都以数字形式输出,不会去查询主机名(DNS查询是比较慢的)


2. 禁止IP段的网络连接
添加IP段到封停列表中: 
iptables -I INPUT -s 121.0.0.0/8 -j DROP

CentOS 7 SSH使用证书登录

客户端建立私钥和公钥
在客户端终端运行命令
ssh-keygen -t rsa


ssh服务端配置
vi /etc/ssh/sshd_config
# 是否让 sshd 去检查用户家目录或相关档案的权限数据,
# 这是为了担心使用者将某些重要档案的权限设错,可能会导致一些问题所致。
# 例如使用者的 ~.ssh/ 权限设错时,某些特殊情况下会不许用户登入
StrictModes no
# 是否允许用户自行使用成对的密钥系统进行登入行为,仅针对 version 2。
# 至于自制的公钥数据就放置于用户家目录下的 .ssh/authorized_keys 内
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys


把客户端的公钥添加到服务器的authorized_keys
vi ~/.ssh/id_rsa.pub
复制到服务器上的
/home/username/.ssh/authorized_keys
文件中


服务端重启sshd
systemctl restart sshd


客户端通过私钥登录ssh服务器
ssh -i ~/.ssh/id_rsa name@


每次敲命令,都要指定私钥,是一个很繁琐的事情,所以我们可以把私钥的路径加入ssh客户端的默认配置里
vi /etc/ssh/ssh_config
#其实默认id_rsa就已经加入私钥的路径了,这里只是示例而已
IdentityFile ~/.ssh/id_rsa
#如果有其他的私钥,还要再加入其他私钥的路径
IdentityFile ~/.ssh/blue_rsa

OnePlus 5T刷机

OnePlus 5T OxygenOS http://downloads.oneplus.net/
H2OS http://www.h2os.com/download

http://www.oneplusbbs.com/thread-3841246-1-13.html

第一步:打开手机设置-关于手机-连续点击版本号(5-7次)打开开发者选项
第二步:设置-开发者选项-打开OEM解锁、USB调试和高级重启选项

下载一加5T工具箱v1.5.3版 http://www.oneplusbbs.com/thread-3798911-1-1.html

启动工具箱
0 检查手机状态
16 启动设备到Fastboot模式

3 检查是否解锁
4 解锁手机(解除BootLoader锁)
手机按照提示选YES

9 刷写ROM或ZIP包(从USB安装升级文件)
拖入rom文件到5T工具箱
注意:ROM文件路径中不能出现中文

重启
!!!拷贝APP到手机!!!

6) 刷写第三方Recovery(TWRP)
自带的twrp-3.2.1-0

8) 刷写自选Recovery
拖入twrp-3.2.1-1-dumpling.img文件到5T工具箱
注意:ROM文件路径中不能出现中文

刷入氧OS:
重启设备到Recovery模式
如果您是第三方TWRP Recovery,刷写任意ROM或ZIP包(ROOT权限包等),请依次点击”Advanced”(高级) ADB Sideload,并滑动 显示”正在启动adb sideload”即为启动成功

音量键加 + 电源键,进入FastBoot模式
8) 刷写自选Recovery
拖入twrp-3.2.1-1-dumpling.img文件到5T工具箱
注意:ROM文件路径中不能出现中文

进入twrp
刷入SuperSU
重启

打开SuperSU

设置 – 按键 – 切换按钮
Home键长按操作:关闭屏幕

Nexus 6P刷机

下载:
https://dl.twrp.me/angler/
http://www.supersuer.com/
http://repo.xposed.info/module/de.robv.android.xposed.installer

刷入系统:
flash-all.bat

启动并按提示设置完毕

刷入twrp:
fastboot flash recovery twrp-3.2.1-0-angler.img
再执行一次:
fastboot flash recovery twrp-3.2.1-0-angler.img

开机
拷贝SuperSU-v2.82-201705271822.zip到SD卡

重启手机进入recovery
刷入SuperSU

去除网络连接感叹号:
adb shell settings put global captive_portal_mode 0

安装XposedInstaller_3.1.4.apk

VS2015 vcpkgsrv.exe进程CPU占用高的解决方法

是 VC 智能感知问题,可以禁了。
方法是: 菜单: 工具 -》 选项 -》 文本编辑器 -》 C++ -》 高级
右边 Intellisense false 改为 Ture
注意:此设置会导致无法使用代码高亮与智能提示

其他减少VS的CPU占用率的方法:
工具 -》 选项 -》 搜索codelens, 将 启用 取消勾选,重启VS
工具 -》 选项 -》 源代码管理 -》 当前源代码管理插件:无

FFmpeg新版API接口编译报错解决方法

PIX_FMT_YUV420P -> AV_PIX_FMT_YUV420P


'AVStream::codec': 被声明为已否决:
if(pFormatCtx->streams[i]->codec->codec_type==AVMEDIA_TYPE_VIDEO){
=>
if(pFormatCtx->streams[i]->codecpar->codec_type==AVMEDIA_TYPE_VIDEO){


'AVStream::codec': 被声明为已否决:
pCodecCtx = pFormatCtx->streams[videoindex]->codec;
=>
pCodecCtx = avcodec_alloc_context3(NULL);
avcodec_parameters_to_context(pCodecCtx, pFormatCtx->streams[videoindex]->codecpar);


'avpicture_get_size': 被声明为已否决:
avpicture_get_size(AV_PIX_FMT_YUV420P, pCodecCtx->width, pCodecCtx->height)
=>
#include "libavutil/imgutils.h"
av_image_get_buffer_size(AV_PIX_FMT_YUV420P, pCodecCtx->width, pCodecCtx->height, 1)


'avpicture_fill': 被声明为已否决:
avpicture_fill((AVPicture *)pFrameYUV, out_buffer, AV_PIX_FMT_YUV420P, pCodecCtx->width, pCodecCtx->height);
=>
av_image_fill_arrays(pFrameYUV->data, pFrameYUV->linesize, out_buffer, AV_PIX_FMT_YUV420P, pCodecCtx->width, pCodecCtx->height, 1);


'avcodec_decode_video2': 被声明为已否决:
ret = avcodec_decode_video2(pCodecCtx, pFrame, &got_picture, packet); //got_picture_ptr Zero if no frame could be decompressed
=>
ret = avcodec_send_packet(pCodecCtx, packet);
got_picture = avcodec_receive_frame(pCodecCtx, pFrame); //got_picture = 0 success, a frame was returned
//注意:got_picture含义相反


'av_free_packet': 被声明为已否决:
av_free_packet(packet);
=>
av_packet_unref(packet);