存档

‘语言’ 分类的存档

阿里云ECS程序开机启动失败原因及解决办法

2020年1月10日 没有评论
  1. 场景描述:
    • 程序a、b均部署在阿里云ecs上,需要开机启动。a需要获取ecs的ip地址,b有较多依赖项。
    • 将a、b启动脚本均配置在rc.local中
    • a存在获取不到ip地址的情况,b存在启动失败的情况
  2. 解决办法:
    • 不通过rc.local启动
    • 将a、b启动脚本配置在crontab中,前面加上@reboot即可:
      @reboot start_a.sh
    • 对于a,需要等待阿里云后台服务启动完成之后才运行。这个需要修改crond.service。如下,追加cloud-final.service即可
      cat /etc/systemd/system/multi-user.target.wants/crond.service
      
      [Unit]
      Description=Command Scheduler
      After=auditd.service systemd-user-sessions.service time-sync.target <span style="color: #0000ff;">cloud-final.service</span>
分类: Shell, 资料 标签: ,

js检测网页视频是否有流的两种方法

2019年10月12日 没有评论

当前web页面一般通过video标签来播放视频(点播或直播),我们在做音视频的自动化测试时,需要通过程序自动检测是否有视频流。

在具体的实践中,有两种方法可以实现视频流的检测:

  1. video标签的属性
    var video = document.getElementsByTagName('video');
    var isPalying = !(video.paused || video.ended || video.seeking || video.readyState < video.HAVE_FUTURE_DATA);
  2. 比较不同时刻的视频图像
    • 在页面上构造一个canvas,在其上绘制当前视频的图像
    • 通过getImageData获取图像的RGBA数据,简单计算(如求和)得到一个数值
    • 隔一段时间(如1秒)再依次获取若干图像的计算值
    • 通过比较这几个图像计算值是否相等,可以判断这段时间内是否有活动的视频流
  3. 可综合上述两种方法进行视频流的检测

方法2详细细节可加QQ群【KITE-WebRTC自动化测试】讨论。

shell脚本异步执行多任务并等待任务结束

2019年6月21日 没有评论

通常情况下,shell脚本中每条命令都是逐条按顺序执行的。如果想同时执行多条命令,并在所有命令完成后退出,这该如何实现?

我们可以在需要异步执行的命令后加&来实现后台运行,同时,使用wait来等待后台任务执行完成。

比如:

#!/bin/sh
i=0
while [ $i -lt 3 ];do
    long_time_task &
    let i++
done
wait
分类: Shell 标签:

python使用手记:使用pdb调试python程序

2018年9月18日 没有评论

调试是解决问题修复bug最有效的手段,用惯了gdb来调试c/c++代码,那么pdb就是调试python代码的得力助手。

  1. 开始调试

    python -m pdb test.py

  2. 查看、设置断点

    b:查看当前已设置的所有断点

    b [file:]lineNum:在file的lineNum行设置断点

  3. 运行、单步运行、进入函数、运行到下一断点

    run:开始运行程序,进入到脚本的首行

    n:单步运行,不进入当前函数

    s:进入当前函数,然后使用n命令单步调试该函数

    c:继续运行到下一断点出

  4. 查看变量值

    p:查看变量值

  5. 查看当前代码上下文

    l:列出当前代码所在行

  6. 其他
分类: Python 标签: ,

在CentOS或Ubuntu上通过源码安装python3.7

2018年9月14日 没有评论

在CentOS或Ubuntu上安装python3.7的步骤是类似的,区别在于依赖库的安装。具体步骤如下:

1,安装依赖库

  • CentOS

    yum -y install zlib zlib-devel
    yum -y install bzip2 bzip2-devel
    yum -y install ncurses ncurses-devel
    yum -y install readline readline-devel
    yum -y install openssl openssl-devel openssl-static
    yum -y install xz lzma xz-devel
    yum -y install sqlite sqlite-devel
    yum -y install gdbm gdbm-devel
    yum -y install tk tk-devel
    yum -y install libffi-devel

  • Ubuntu

    sudo apt-get install zlib1g-dev libbz2-dev libssl-dev libncurses5-dev libsqlite3-dev libreadline-dev tk-dev libgdbm-dev libdb-dev libpcap-dev xz-utils libexpat1-dev liblzma-dev libffi-dev libc6-dev

2,下载python3.7源码,并编译安装

wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz && tar xzvf Python-3.7.0.tgz && cd Python-3.7.0 && ./configure –enable-optimizations && make && make install

3,创建软链接

[ -f /usr/local/bin/python3 ] && ln -sf /usr/local/bin/python3 /usr/bin/python3 && ln -sf /usr/bin/python3 /usr/bin/python

分类: Python 标签:

python使用手记:简单示例python面向对象特征

2018年7月27日 没有评论

面向对象三大特征:封装、继承和多态。Python对这三点完美支持。

#封装
class CA(object):
	def __init__(self):
		pass
	def hi(self):
		print("CA")
		
#继承
class CB(CA):
	def __init__(self, msg):
		self.__msg = msg
	def hi(self):
		print("CB: %s" % self.__msg)
		
a = CA()
a.hi()
print(type(a))
b = CB("God")
b.hi()
print(type(b))

#多态
a = b
a.hi()
print(type(a))

			
分类: Python 标签: