/*******************************************************************************************
*
* Copyright (C) %{CurrentDate:yyyy} Guangzhou AoYiDuo Network Technology Co.,Ltd. All Rights Reserved.
*
* Contact: http://www.aoyiduo.com
*
* this file is used under the terms of the GPLv3[GNU GENERAL PUBLIC LICENSE v3]
* more information follow the website: https://www.gnu.org/licenses/gpl-3.0.en.html
*
*******************************************************************************************/
作者归档:xinlu
批处理中for/call/errorlevel返回值
因为做软件代码签名,在做脚本时,发现批处理脚本真是坑爹货,太多问题,故在以下记录一下。
rem @echo off
rem 必须使用setlocal,否则for()do(call)语句call函数返回值是无法正常返回的,故务必加上此句。
setlocal enabledelayedexpansion
set path_script=%~dp0
echo %path_script%
set myfile=%~1
set "myfile=%myfile:"=%"
for %%i in ("http://sha256timestamp.ws.symantec.com/sha256/","http://tsa.wosign.com/timestamp","http://timestamp.digicert.com") do (
call :signmain "%%i" "%myfile%"
rem 因为for语句的影响,必须和setLocal一起使用,才能返回errorlevel.
rem 因为是延后扩展返回值,不能使用%errorlevel%必须使用双叹号。
set retval=!errorlevel!
echo "retval:!retval!"
rem rem lss equ neq gtr geq leq
if !retval! neq 0 (
rem 必须加上/b参数,否则会是脚本退出,而不是call调用返回。
exit /b 0
)
)
rem 此处不需要使用双叹号,能直接返回值。
call :signmain "a" "b"
echo "errorlevelLast:%errorlevel%"
exit /b 12
:signmain
set timeserver=%~1
set "timeserver=%timeserver:"=%"
set signfile=%~2
set "signfile=%signfile:"=%"
set /a num=0
:loop
echo "try to do the %num% time"
echo "timeserver:%timeserver%"
echo "signfile:%signfile%"
signtool sign /v /fd sha256 /sha1 8cff6301fbee55b05364e6f11d2e5ed090abcdef /tr "%timeserver%" /td sha256 "%signfile%"
set errcode=%errorlevel%
echo "errorlevel:%errcode%"
if %errcode% == 0 (
echo "success:%signfile%"
echo "-------------------------------------------------------------------"
exit /b 0
) else (
set /a num+=1
if %num% lss 2 goto :loop
)
set /a retval=10+%num%
exit /b %retval%
Centos6编译gcc4.8.5
因为项目使用了Open-H264,如果要启用H264,则需要编译gcc4.8.5版本,取代系统的gcc4.47版本。
下载安装及依赖包
https://mirrors.tuna.tsinghua.edu.cn/gnu/gmp/gmp-4.3.2.tar.gz
https://mirrors.tuna.tsinghua.edu.cn/gnu/mpfr/mpfr-2.4.2.tar.gz
https://gcc.gnu.org/pub/gcc/infrastructure/mpc-0.8.1.tar.gz
http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-4.8.5/gcc-4.8.5.tar.gz
编译指令:
第一步:gmp / mpfr / mpc默认编译安装,相关库会安装至/usr/local/lib目录下
第二步:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
第三步:./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib --build=x86_64-redhat-linux
Centos6.5的软件源配置
当前只有阿里云软件源可用,配置如下:
sed -i "s|enabled=1|enabled=0|g" /etc/yum/pluginconf.d/fastestmirror.conf
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
curl -o /etc/yum.repos.d/CentOS-Base.repo https://www.xmpan.com/Centos-6-Vault-Aliyun.repo
yum makecache
yum list
yum groupinstall "Development Tools"
PTY终端连接实现的颜色无法输出问题
自已根据文档实现PTY时,发现终端连接上时没有颜色,折腾很久了看了很久网上文章,该做也做了,但就是无法输出颜色。后来单步调试发现,输出的颜色是256色或真彩色,而本地配置的颜色表只是16色。
仔细研究一下这个颜色库:https://github.com/mbadolato/iTerm2-Color-Schemes
它全都是只有16色,而PTY终端进程配置的256色或真彩色,故输出的颜色范围几本不在正常可视的范围内,故无法显示出颜色。
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
env.insert("TERM", "xterm"); // 这个默认情况下是16颜色的。
env.insert("TERM", "xterm-16color"); // 这个强制指定为16颜色的。
//env.insert("TERM", "xterm-256color"); //这个颜色指定后,上述颜色表均不会显示。
setProcessEnvironment(env);
检查颜色表是否启用,可在终端执行:env命令。如下图:

MacOS唤醒电脑
sudo -S pmset schedule wake “$(date -j -v +2S +’%m/%d/%y %H:%M:%S’)”
ALSA声卡回环准备
ubuntu16.04
sudo apt install alsa-utils
sudo apt-get install sox libsox-fmt-all
arecord -l
play ~/Downloads/dreamman.mp3

ALSA官网:https://www.alsa-project.org/wiki/Main_Page
Loopback官方说明:https://www.alsa-project.org/main/index.php/Matrix:Module-aloop
macOSX安装第三方应用提示unidentified developer。
因为woterm是没有进行应用签名,故从互联网下载此应用时,会被系统标记为非信任应用的属性,此时需要手动执行以解除此属性。
打开终端,进入系统的下载目录,如Download下,找到woterm的安装文件如woterm-macosx-xxxx.dmg。执行如下指令:xattr -d com.apple.quarantine woterm-macosx-xxxx.dmg

多次执行该命令后,会提示如下,则代表解除成功。
xattr: woterm-macosx-x86_64-xxx.dmg: No such xattr: com.apple.quarantine
开启或禁止本机发送UDP包
禁用本机UDP发送:iptables -A OUTPUT -p udp -j DROP
检查刚才添加的规执序号:iptables -nL OUTPUT –line-number

删除刚才添加的规执:iptables -D OUTPUT 2
确认刚才删除的规执是否删除:iptables -nL OUTPUT –line-number

iptables -F #清空所有规则:
iptables -I INPUT -p UDP -j ACCEPT
接受某个UDP端口:iptables -I INPUT -p UDP –dport 11111 -j ACCEPT
开启1111端口:
iptables -I INPUT -p UDP –dport 11111 -j ACCEPT
service iptables save
或
vi /etc/sysconfig/iptables
#插入下面这一行
-A INPUT -p udp -m udp –dport 11111 -j ACCEPT
#vi保存退出
wq
#重启
iptables service iptables restart
h264的下载地址
openh264是基于BSD协议,https://github.com/cisco/openh264https://github.com/cisco/openh264
可以自由使用。
https://artifacts.videolan.org/x264/
x264开源包,是基于GPL开源协议,这个不能用,
下载地址并提供编译包