自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

solan的博客

这个家伙很懒,啥都没写

  • 博客(43)
  • 收藏
  • 关注

原创 用python或者octave绘制RD曲线

对于穷人而言,是用不起昂贵的Matlab的。其实可以用开源的octave或者python来替代。而用python或者octave绘制RD曲线时,绘制的折线,要么不平滑,要么绘制的曲线有抖动。其实是有解决办法的。使用octave绘制平滑折线其实在octave上,有个pchip的函数,yi = pchip (x, y, xi)或者在interp1中使用pchip method。yi = interp1 (x, y, xi, "pchip")这样绘制的就是平滑的折线了。..

2021-03-30 10:57:57 1053

原创 创建一个全零的文件

dd if=/dev/zero of=zero.bin bs=1g count=2这样就创建了一个2GB的全零文件。

2021-05-07 18:12:38 499

原创 QuickTime不支持播放HEVC编码mp4/mov视频

用ffprobe或者mediainfo分析相关视频文件,会发现是hev1。hev1、hvc1是两种codec tag。Quicktime Player和iOS不再支持hev1 tag的mp4/mov。二者大致有如下不同:'hvc1' stores all parameter sets inside the MP4 container below the sample description boxes. 'hev1' stores all parameter sets in band (ins

2021-04-30 14:41:16 4370

原创 在Mac上编译交叉编译器

许多时候我们是用mac来编程。毕竟mac是正统的BSD的后裔。shell直接就是BSD的shell环境。这样对程序员而言,是天然友好的。但是现在生产力环境是Linux,mac下编译的东西没发直接在Linux下运行。这个时候,需要有交叉编译器来构造这样的二进制程序,这样在mac下编写、编译的程序,也可以在Linux运行。可以用crosstool-ng来产生适用于不同Linux平台的交叉编译器。在mac下,可以用如下命令来安装crosstool-ngbrew install crosstool-n

2021-04-25 10:37:00 2454

原创 find使用小笔记

replace tab with 4 spacesfind . -name "*.[hc]" | xargs sed -i 's/\t/ /g'remove trailing spacesfind . -name "*.[hc]" | xargs sed -i 's/\s\+$//g'dos转unix。许多Windows用户,会在代码中留下dos换行符。find . -name "*.[hc]" | xargs dos2unix...

2021-04-22 19:56:54 91

原创 zlib介绍

zlib是个经常被大家熟视无睹的库。实际上这个库涉及到了三个标准。RFC1950(zlib format) RFC1951(deflate format) RFC1952(gzip format)其中的通用算法,就是LZ77算法+Huffman编码。在gzip文件压缩,PNG、TIFF、flash screen video等无损图片中都得到应用。zlib是FFMPEG等软件必备的依赖。在ARM64上,若是需要自主编译zlib,可以参考如下命令。#!/bin/bashpush.

2021-04-20 16:43:39 5656

原创 代码性能分析工具

使用perf工具分析性能可分析到驱动内部。请参考 https://blog.csdn.net/u014608280/article/details/80265718使用gperf工具分析性能这是Google工具 依赖于libunwind。需要先编译libunwind#!/bin/bashset -xpushd libunwind-1.3.1./configure --host=aarch64-linux-gnu --build=aarch64 --disa...

2021-04-20 15:46:11 562

原创 Linux系统性能统计工具

安装sysstat包。在Ubuntu下,执行如下操作sudo apt install sysstatThe sysstat package contains the following system performance tools: - sar: collects and reports system activity information; - iostat: reports CPU utilization and disk I/O statistics; - tapes...

2021-04-16 09:26:36 137

原创 shell脚本定义数组、遍历数组的方法

数组的定义分量用小括号括起来。pics=( 1.jpg 2.jpg 3.jpg 4.jpg 5.jpg )遍历数组machine=$(name -s)for pic in ${pics[@]}; do if [ $machine = 'Linux' ]; then # linux echo -e "\n$pic" elif [ $machine = 'Darwin']; then # Mac echo "\

2021-04-11 17:25:18 1137

原创 Ubuntu下去掉普通用户的sudo权限

在Ubuntu下,用adduser命令创建的一个普通账户,总是带有sudo权限。譬如,下例sudo adduser --home /home/jim --shell /bin/bash jimjim这个账户就有sudo权限。要去掉jim的sudo权限,可以使用如下命令。sudo deluser jim sudo通过man deluser,可知道原因“If called with two non-option arguments, deluser will remove a user f.

2021-04-09 23:36:14 1558

原创 Ubuntu18.04下运行可执行文件出错:No such file or directory

用file查询文件,有如下信息,可以看出是个32位的可执行文件。ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.18, BuildID[sha1]=945a3f39d6b21bc7f57eec2644930a3900047448, with debug_info, not stripped我们

2021-04-07 15:12:29 1754

原创 Ubuntu下使用带libvmaf filter的ffmpeg

鉴于libvmaf对编译工具的要求比较高。在实际使用中,最方便的办法,就是下载一个已经编译好的ffmpeg来使用。直接设置PATH就行了。下载的地点https://johnvansickle.com/ffmpeg/下载,解压缩后,譬如,放到/opt目录下面。然后在.bashrc中设置PATH变量export PATH=/opt/ffmpeg-4.3.2-amd64-static/:$PATH...

2021-04-07 11:23:57 758 3

原创 查看JPEG文件信息的命令

这里说的都是开源的工具。1. jhead2. imagemagick安装包中的identify命令3. mediainfo

2021-03-16 22:44:03 608

原创 Linux/Mac下批量重命名文件的命令

使用mmv命令mmv \*_x265_\* \#1_x265-medium_\#2即可文件名中x265后面插入‘-medium’字段。Ubuntu下安装mmvsudo apt install mmvMac下安装mmvbrew install mmvCentOS下安装mmvyum install mmv

2021-03-15 17:38:37 180

原创 在Mac上安装或升级带libvmaf filter的ffmpeg

brew upgrade homebrew-ffmpeg/ffmpeg/ffmpeg --with-libvmafbrewinstall homebrew-ffmpeg/ffmpeg/ffmpeg --with-libvmaf

2021-03-11 19:42:54 558 1

原创 显示视频的帧数

mediainfo --Output="Video;%FrameCount%" input.mp4

2021-03-11 15:52:06 505

原创 用gdb调试core dump

开启core dump在/etc/profile最后加上下面这行ulimit -c unlimited程序发生段错误生成core dump$./test用gdb调试core dump$gdb ./test corefile(gdb) bt(gdb) bt full(gdb) info threads(gdb) thread apply all bt(gdb) th...

2019-08-29 19:05:47 319

原创 VSCode正确支持 "Find all reference"

让VSCode中的"Find all reference"正常工作熟悉Visual Studio的同学, 在Linux用VSCode的时候发现经常使用的"Find all reference"不能工作. 这是因为需要个人做些配置.1. 安装VSCode这个大家都会,就不多说了.2. 安装gnu global(gtags)在ubuntu环境下, 进行如下操作.$ sudo apt ins...

2019-08-29 18:31:23 5969

原创 代码清理Tips

代码清理Tips代码的格式化,也就是代码的美容。若是代码写的极其不堪,卒不忍睹,不但自己不爱看。别人也看着费劲。写好代码,最起码写干净一点的代码,应该是程序员的基本素养之一。下面的命令都是在Linux下执行的。1. 去掉行尾的空格和tab键find . -name “*.[hc]” | xargs sed -i ‘s/[ \t]+$//g’2. 待续...

2019-02-21 11:12:51 532

原创 用Ubuntu工作

用Ubuntu工作使用Ubuntu随笔装chrome浏览器装中文输入法中文字体缺省是Google的思源黑体使用微信待补充使用Ubuntu随笔好久没专门用Linux工作了;若是使用Linux,也是通过putty链接到服务器上开发。放在桌子上的还是一台Windows电脑。近期的工作需要在Ubuntu上开发,为避免在Windows和Ubuntu上倒来倒去的工作。这里试着只用Ubuntu来。装ch...

2019-02-12 15:42:27 738

原创 用git创建空白分支

用git创建空白分支许多时候,需要添加的分支的代码与原来的代码没有一点关系。若是我们创建分支的话,则会继承master原来的东西。 此时可以创建一个空白的分支。git checkout --orphan test这个时候会有许多无关文件存在。网上有许多方法,这里可以使用如下命令。git clean -df用ls查看一下,当前恢复到空白的状态。可以添加相应的东西了。...

2018-08-23 14:43:07 3046

原创 简单测试图片服务器的并发量

使用一个简单的工具http_load,来进行压力测试即可。 譬如对于某一幅尺寸固定的图片,在服务端拷贝多次。同时在客户端上放在一个url文件中。在客户端,使用http_load命令来测试服务器并发的图片数量。./http_load -rate ${test_rate} -seconds 10 url_list.txt 通过迭代改变 test_rate的值。譬如从1开始,逐步增加。直到...

2018-07-10 16:23:34 1315

原创 在linux下统计程序的最大内存使用情况

在内存的使用中,有程序本身所占的内存。也有程序动态分配的内存。里面还可能是系统调用外部的工具,又会占用了额外的内存。从使用者角度来看,可以认为里面是个黑盒子。启动了一个程序,却不知道该程序的峰值内存使用量。 用什么方法来知道最多使用了多少内存呢?其实通过如下free命令可以知道个大概。free -s 0.1 -h这样每100ms(这个可以根据自己需要来调整)采样一次,显示所占用的内存的多...

2018-07-03 19:11:36 3087

原创 在CentOS7.2中安装swift编译器

swift是苹果开发的编程语言,早已经开源,是新一代跨平台开发的潜力股。在苹果的平台上开发,自然已经没有什么困难了。 在Android端上开发SDK,慢慢应该没有问题了。 但在Linux端上,苹果官方只支持Ubuntu系列。对于国内广泛使用的CentOS系列,则缺乏有效的支持。本文成功在CentOS7.2上安装swift编译器。

2018-06-13 10:16:14 1975

原创 用python生成一个随机的文件名

用python时,经常遇到需要生成随机文件名的情况。 这里推荐一种。选自stackoverflow的一个回答。import uuiduuid_str = uuid.uuid4().hex()tmp_file_name = 'tmpfile_%s.txt' % uuid_strprint tmp_file_name这样就生成了一个随机的临时文件名。https://stackoverflow.co

2017-11-21 11:09:44 10326 2

原创 shell中for循环从0迭代到999

shell脚本的好处是方便,但若是平常用的少,总会忘记一些基本的操作。譬如,写一个for循环,打算迭代1000次,咋写呢? shell的麻烦之处就是各种写法太多了,其实只需要记住一种简单的写法就可以了。譬如,下面的写法不需要记seq的用法,又有点像python的写法 ^_^for i in {0..999} do echo $i done

2017-09-11 11:05:21 3307

原创 在TortoiseGit中用Beyond Compare4比较代码差异

Git现在用的很广,Beyond Compare或许是最好用的比较工具之一了吧。 在Git中,用Beyond Compare来做代码比较工具,可谓如虎添翼。好了,不多说。配置步骤如下: 在windows中点击 开始–>TortoiseGit –> Settings; 在弹出的对话框中,左边的列表框,选择Diff Viewer ; 将radio buttons从TortoiseMerge 改为

2017-07-18 16:18:05 5639 2

原创 FFMPEG的高危漏洞

https://hackerone.com/reports/242831 http://www.freebuf.com/vuls/138377.html该漏洞的特点: 利用avi文件中的GAB2字幕块,通过XBIN codec获取到视频转换网站的本地文件。涉及到的文件: ./libavformat/avidec.c /libavformat/bintext.cRoot Cause: 判断代

2017-06-27 14:32:35 860

原创 高效的六面体变换算法实现(一) —— 等圆柱映射 与 六面体映射(MarkDown编辑器版)

关键名词 等圆柱映射: equirectangular projection 六面体映射: cube projection or cube map当前360度的球形图像/全景图像,一般通过传统的等圆柱映射(equirectangular projection)来表示[1]。在这种等圆柱映射中,用缩放后的经度来表示图像的宽,用缩放后的纬度来表示图像的高。这里经度和纬度的缩放是等比例。因为经度的跨

2017-06-19 13:55:59 1474

原创 单元测试中的Sanity Testing与Regression Testing

作为开发人员,在发布代码之前,最好做一下单元测试,把许多低级的、高级的错误都能避免一下。而不是都甩手给测试人员。这样一方面可以通过测试自纠代码中存在的问题,提升个人代码质量;另一方面也可以降低项目成员之间的沟通成本。在工作中,最常用的两种单元测试方法,一种是Sanity Testing,另一种是Regression Testing。Sanity Testing都需要做什么工作呢? 百度百科的说明是:

2017-06-19 10:55:27 3146

原创 PEP8:python编程规范

PEP全称Python Enhancement Proposals。PEP8正式名称是Style Guide for Python Code。学python的起始,往往大家都是为了项目而学。学习语法,能运行就行了。随着越写越多,就会觉得有许多不确定性,觉得代码有些丑陋。此时为了让代码规范化,就越来越需要找一个固定的样式,一以贯之。让自己的程序显得不再业余,也真的像吃这碗饭的人。下面是官方文件。 h

2017-06-07 15:54:24 716

原创 给python脚本做个语法检查

在终端写python脚本的时候,经常在写完脚本运行的时候,才发现错误。如果某些代码没有运行到,则其中的错误不会被检查出来。这是因为python是一门动态解释型语言。这与用gcc编译C等静态语言时可以发现全局的语法问题有所不同。 为了避免潜在的语法问题。我们在写完python脚本文件之后,最好给python脚本做个静态语法检查,以此来避免低级错误。检查工具有pyflakes, pylint, pyf

2017-06-07 14:09:32 6918

原创 在msys2中让git忽略本机的权限

许多时候,我们是在Linux服务器上开发。有的时候我们需要在本地机器上用msys2同步查看代码。 经常碰到的事情是,明明我们在本地机上并没有修改代码。当敲下如下命令的时候,发现有几个文件被修改。git status如果用git的diff命令查看一下后,会出现文件读写执行权限的被修改了。这样导致无法在本地机上同步到最新的代码。git diff filenameold mode 100755new

2017-06-07 10:34:16 1015

原创 显示文本中的部分信息

在Linux终端下进行操作时,我们经常需要查看文本文件,譬如,脚本、代码等。许多时候我们的文本文件比较长。而我们却只想看固定的位置的几行。一般,我们想看一下开头、结尾或中间的部分。如果我们需要看README文件的开头部分前40行的文字,可以用下面的命令:head -n 40 README如果我们需要看README文件的倒数40行的文字,可以用下面的命令:tail -n 40 README如果我们想看

2017-06-05 17:36:38 314

原创 一款免费的十六进制编辑器 —— XVI32

Hex Editor XVI32 http://www.chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htmXVI32 is a freeware hex editor running under Windows 9x/NT/2000/XP/Vista/7. The name XVI32 is derived from XVI, the rom

2017-05-03 18:13:15 8504 1

原创 几个免费的视频小工具(待续)

MediaInfo用来分析视频和音频文件的编码和内容信息。 https://mediaarea.net/zh-CN/MediaInfoBitrate Viewerhttp://www.winhoros.de/docs/bitrate-viewer/ The main concept of this tool is to analyze all MPEG material from which y

2017-04-19 09:47:13 1121

原创 用echo输出多个空行

大家用shell编程,用echo输出空行的时候,通常想到就是用N个echo。如下输出三个空行#echo #echo #echo虽然内心里还是觉得如上写法有些丑陋。其实,echo是还有更多用法的,这在手册里面是有说明的。通过查看手册,我们可以知道,上面的代码可以写成\#echo -e '\n\n\n'\#man echoECHO(1)

2017-04-14 14:45:47 31360

转载 HTTP 状态码

1xx Informational responses100 Continue 初始的请求已经接受,客户应当继续发送请求的其余部分 101 Switching Protocols 服务器将遵从客户的请求转换到另外一种协议2xx Success200 OK 一切正常,对GET和POST请求的应答文档跟在后面 201 Created 服务器已经创建了文档,Location头给

2017-04-12 14:25:09 224

原创 高效的六面体变换算法实现(三) —— 基于GPU的转换方式B

在《高效的六面体变换算法实现(二) —— 基于GPU的转换方式A》一文中,我们首先设想了通过GPU来实现CubMap转换的方式,当然也预料到了方式A存在的问题。 在本文中,我们重新设计了一种新的GPU转换方式。利用该算法设计的转换,实现了比Facebook算法快几倍的效果。

2017-02-09 16:36:32 481

原创 Cygwin的显示设置

在用Cygwin编程的过程中,总觉得字体纤细看不清楚。其实可以修改字体的。 鼠标右击标题栏后,再弹出的菜单里选择Options…。在Options的对话框中,选择左边的Text,在字体里选择Fixedsys。好了,这下字体变粗了。另外,Cygwin里光标是一条竖线,用vim的时候,上下搜索文本的时候,简直要看不到光标了。其实,这也是可以设置的。 鼠标右击标题栏后,再弹出的菜单里选择Options

2016-12-09 12:03:27 3167

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除