美化输出xml或json

xml

1
2
3
from xml.dom.minidom import *
with open('d:/xml.txt', 'r') as f:
    print(parseString(f.read()).toprettyxml())

json

1
python -m json.tool d:\json.txt

下载文件

1
2
3
4
import requests
resp = requests.get('http://file.url', headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'})
with open("aa.dat", "wb") as f:
    f.write(resp.content)

android cmake命令行

ninja这个工具是google的cmake特有的一个工具,不能用CMake官网下载安装的cmake编译安卓程序。

1
2
3
4
5
6
7
8
9
10
set SDK_PATH=E:\euhat\android-sdk
set path=%SDK_PATH%\cmake\3.10.2.4988404\bin;%path%
 
cd app
mkdir manBuild
cd manBuild
 
cmake -DANDROID_ABI=armeabi-v7a -DANDROID_STL=c++_shared -DBUILD_SHARED_LIBS=ON -DCMAKE_C_FLAGS="-s" -DANDROID_PLATFORM=android-27 -DCMAKE_BUILD_TYPE=Debug -DANDROID_NDK=%SDK_PATH%\ndk-bundle -DCMAKE_TOOLCHAIN_FILE=%SDK_PATH%\ndk-bundle\build\cmake\android.toolchain.cmake -DCMAKE_GENERATOR=Ninja ..
 
ninja

refer to: https://bbs.csdn.net/topics/392257691?list=lz

在同一图里画两个隐函数图

1
2
3
4
5
6
from sympy import *
x, y = symbols('x y')
p1 = plot_implicit(Eq(x**2 + y**2, 1), show = False, line_color = 'red')
p2 = plot_implicit(Eq(x + y, 1), show = False)
p1.extend(p2)
p1.show()

视频在微信手机端看不了

比如用ffmpeg在电脑端录的mp4视频,拖到微信电脑端是可以看的,但打开微信手机端就不动了,只能看到第一帧。

解决办法是先将mp4格式转为mpg格式,再将mpg格式转为mp4格式,最后得到的mp4就可在微信手机端播放了:

1
2
ffmpeg.exe -i old.mp4 temp.mpg
ffmpeg.exe -i temp.mpg new.mp4

附ffmpeg在windows下录屏方法:

1
ffmpeg -f gdigrab -framerate 30 -offset_x 655 -offset_y 517 -video_size 511x374 -i desktop capture.mpg

ffmpeg在ubuntu下录屏方法:

1
ffmpeg -framerate 25 -f x11grab -s 800x600 -i :0.0+100,200 capture.mp4

转码为mp4的方法:

1
2
3
ffmpeg.exe -ss 5 -sseof 5 -i %1 -vf scale=-2:600 -y output.mp4
 
rem ffmpeg.exe -ss 5 -sseof 5 -i %1 -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" output.mp4

refer to:
https://github.com/GyanD/codexffmpeg/releases/tag/2021-12-02-git-4a6aece703
https://www.xzcblog.com/post-173.html

用curl发送json请求

以下是json.bat的内容:

1
2
3
4
set /P json=<%1
set result=%json:"=\"%
curl -H "Content-Type:application/json" -X POST -d %result% http://you.url
pause

然后把只含json内容的文件拖到json.bat上面运行就可以了。

注意1,我测试时下载的curl命令行工具是不支持json串中包含空格的,这里只作测试用途,空格先都去掉。
注意2,json.bat第2行包含了Windows批处理脚本中,往字符串里插入字符的方法,此处是把json字符串中每一个双引号前插入一个反斜杠。

openssl vc2017

由于vc2013编译的openssl库用在vc2017的工程中会报LNK2019找不到___iob_func的错误,不得不重新在vc2017下编译openssl库,会到问题如下:

  1. 要先安装ActivePerl和nasm。
  2. openssl不能下载最新的,因为比如gsoap使用的很多结构体都是老openssl里的。因此,我这里还是编译openssl-1.0.1p。
  3. 解压出openssl-1.0.1p目录后,为了防止编译时出现以下错误,
    constant_time_test.obj : error LNK2019 ___iob_func
    先要修改里面的e_os.h如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    #   if defined(_MSC_VER) && !defined(_DLL) && defined(stdin)
    #    if _MSC_VER>=1300
    #if 0			// add here
    #     undef stdin
    #     undef stdout
    #     undef stderr
    FILE *__iob_func();
    #     define stdin  (&__iob_func()[0])
    #     define stdout (&__iob_func()[1])
    #     define stderr (&__iob_func()[2])
    #endif			// add here
    #    elif defined(I_CAN_LIVE_WITH_LNK4049)

    也就是禁止它修改stdin之类的指向__iob_func。
    注意,如果已执行了nmake,再改e_os.h,再nmake是不能自动解决依赖关系重编的。要么删掉openssl-1.0.1p目录,重新解压,要么执行
    nmake -f ms\nt.mak clean

  4. 编译脚本为:

    1
    2
    3
    4
    
    perl Configure VC-WIN32 --prefix=d:\OpenSSL
    ms\do_nasm.bat
    nmake -f ms\nt.mak
    nmake -f ms\nt.mak install

    最终生成的库在d:\OpenSSL里。

linux获取窗口对应进程

在图形界面下打开一个终端,输入命令:

xwininfo -all

再点击想要查询的窗口,会打印很多信息,其中Window manager hints下会有Process id,用这个pid就可找到进程对应的执行文件路径。

-fprofile-arcs -ftest-coverage
ps aux | sort -k2rn | head -n 3

caffe gemv
https://blog.csdn.net/langb2014/article/details/50986678

sed
https://www.toutiao.com/a6738939489579696651/

grep
https://www.toutiao.com/a6738675495363150344/

lsof
lsof cc.txt 显示开启文件cc.txt的进程
lsof -i :22 知道22端口被哪个进程占用
lsof -c a.out 显示a.out进程现在打开的文件
lsof -g gid 显示归属gid的进程情况
lsof -n 不将IP转换为hostname,缺省是不加上-n参数
lsof -p 12 看进程号为12的进程打开了哪些文件
lsof -u username 查看用户打开哪些文件
lsof -i @192.168.1.111 查看远程已打开的网络连接(连接到192.168.1.111)
lsof -i tcp@192.168.1.55 -r

fuser -k /mnt/test
umount /mnt/test

1
2
3
4
5
6
::chcp 65001
for /f "tokens=1,2 usebackq delims=." %%a in (`dir /o:n /b`) do (
	if not "%%a.%%b" == "%%a." (
		echo ^<%%a^>-[%%b]	
	)
)
1
2
3
body * {
 outline: 1px solid red
}

document.designMode='on'

VAR_A="hello, world, hello, me"
echo ${#VAR_A}
echo ${VAR_A:1:4}
echo ${VAR_A/hello/yes}
echo ${VAR_A//hello/yes}

# objdump -d c.elf | grep -A 2 function2
000084e8 <_Z9function2v>:
84e8: b580 push {r7, lr}
84ea: af00 add r7, sp, #0
# addr2line -e c.elf 84e8
testB/c.cpp:12
# nm c.elf | grep -Ei "function|main|globalvar"
00011028 D globalvar
U __libc_start_main@@GLIBC_2.4
00008500 T main
000084d0 T _Z9function1v
000084e8 T _Z9function2v

# nc 192.168.1.123 80
GET / HTTP/1.1

watch -d=cumulative 'ls -rtlh | tail'

exec 2>/tmp/run.log
exec 1>&2
set -x

for /r %i in (*.dll) do echo "%i"

libjpeg读烂文件出异常0xC0000005

出现这个问题,是由于libjpeg库的编译有问题,不要自已新建库工程一个个加jpeg-9c.zip里的文件,要按官方方法编译生成库,网上也有很多关于正确编库的说明,主要命令是

nmake nodebug=1 -f makefile.vc libjpeg.lib

记住nodebug版性能要好很多。另外,libjpeg读文件出异常就退出的问题参见:

libjpeg exit