通知设置 新通知
Ubuntu20安装搜狗输入法 (自带的智能拼音太烂了)
Linux • 李魔佛 发表了文章 • 0 个评论 • 1783 次浏览 • 2022-05-20 13:49
Ubuntu20.04安装搜狗输入法步骤
1、更新源
在终端执行 sudo apt update
2、安装fcitx输入法框架
\1. 在终端输入 sudo apt install fcitx
\2. 设置fcitx为系统输入法
点击左下角菜单选择语言支持,将语言选择为fcitx(如下图二)
\3. 设置fcitx开机自启动
在终端执行sudo cp /usr/share/applications/fcitx.desktop /etc/xdg/autostart/
\4. 卸载系统ibus输入法框架
在终端执行 sudo apt purge ibus
3、安装搜狗输入法
\1. 在官网下载搜狗输入法安装包,并安装,安装命令 sudo dpkg -i 安装包名
\2. 安装输入法依赖
在终端执行
sudo apt install libqt5qml5 libqt5quick5 libqt5quickwidgets5 qml-module-qtquick2
sudo apt install libgsettings-qt1
4、重启电脑、调出输入法
1.重启电脑
2.查看右上角,可以看到“搜狗”字样,在输入窗口即可且出搜狗输入法。
\3. 没有“搜狗”字样,选择配置,将搜狗加入输入法列表即可
至此,搜狗输入法安装完毕 查看全部
Ubuntu20.04安装搜狗输入法步骤
1、更新源
在终端执行 sudo apt update
2、安装fcitx输入法框架
\1. 在终端输入 sudo apt install fcitx
\2. 设置fcitx为系统输入法
点击左下角菜单选择语言支持,将语言选择为fcitx(如下图二)
\3. 设置fcitx开机自启动
在终端执行sudo cp /usr/share/applications/fcitx.desktop /etc/xdg/autostart/
\4. 卸载系统ibus输入法框架
在终端执行 sudo apt purge ibus
3、安装搜狗输入法
\1. 在官网下载搜狗输入法安装包,并安装,安装命令 sudo dpkg -i 安装包名
\2. 安装输入法依赖
在终端执行
sudo apt install libqt5qml5 libqt5quick5 libqt5quickwidgets5 qml-module-qtquick2
sudo apt install libgsettings-qt1
4、重启电脑、调出输入法
1.重启电脑
2.查看右上角,可以看到“搜狗”字样,在输入窗口即可且出搜狗输入法。
\3. 没有“搜狗”字样,选择配置,将搜狗加入输入法列表即可
至此,搜狗输入法安装完毕
国金证券可转债费率 最低是多少?
券商万一免五 • 绫波丽 发表了文章 • 0 个评论 • 2036 次浏览 • 2022-05-20 11:20
也就是你 单笔买入沪市可转债 10万,就收4.1块钱,如果买入5千元,就收2毛0.5分钱。 非常低,适合日内做T
除此之外,不会加收其他费用,买卖都是一样,不象股票那样,除非给券商交易佣金,还要给交易所印花税,过户费,股民就像个过街肥羊一样,谁都想要来咬一口。
一般沪市转债的代码是11开头的,深市转债的代码是12开头的。
目前本营业部的股票费率是万1,比你自己在官方app开通要便宜得多。因为我们会帮你们调佣。
需要开通国金证券的,可以扫描下面微信二维码: 查看全部
shell批量导入mysql数据库 附代码
Linux • 李魔佛 发表了文章 • 0 个评论 • 1305 次浏览 • 2022-05-19 17:52
restore_db=(db_bond_daily.sql db_bond_history.sql)
里面,比如这里的 db_bond_daily.sql db_bond_history.sql
#!/bin/bash
# 批量备份数据库
MYSQL_USER=root
MYSQL_PASSWORD=123456 # 改为你的mysql密码
HOST=127.0.0.1
restore_db=(db_bond_daily.sql db_bond_history.sql) # sql 文件列表
for i in ${restore_db[*]}
do
name=(${i//./ }) # 切割名字
mysql -h$HOST -u$MYSQL_USER -p$MYSQL_PASSWORD ${name[0]}<${i}
done
查看全部
restore_db=(db_bond_daily.sql db_bond_history.sql)
里面,比如这里的 db_bond_daily.sql db_bond_history.sql
#!/bin/bash
# 批量备份数据库
MYSQL_USER=root
MYSQL_PASSWORD=123456 # 改为你的mysql密码
HOST=127.0.0.1
restore_db=(db_bond_daily.sql db_bond_history.sql) # sql 文件列表
for i in ${restore_db[*]}
do
name=(${i//./ }) # 切割名字
mysql -h$HOST -u$MYSQL_USER -p$MYSQL_PASSWORD ${name[0]}<${i}
done
腾讯云轻量服务器使用mysqldump导出数据 导致进程被杀
数据库 • 李魔佛 发表了文章 • 0 个评论 • 1211 次浏览 • 2022-05-18 19:43
稍微密集一点,直接被杀掉。
在方面放mysql服务,简直就是煞笔行为。
稍微密集一点,直接被杀掉。
在方面放mysql服务,简直就是煞笔行为。
centos yum安装mysql client 客户端
数据库 • 马化云 发表了文章 • 0 个评论 • 2156 次浏览 • 2022-05-17 11:51
这时需要从官网下载
1.安装rpm源
rpm -ivh https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm
2.安装客户端
#可以通过yum搜索yum search mysql
#若是64位的话直接安装yum install mysql-community-client.x86_64
结果报错
报以下密钥错误:The GPG keys listed for the "MySQL 5.7 Community Server" repository are already installed but they are not correct for this package.
Check that the correct key URLs are configured for this repository.
则先执行以下命令再安装:rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
wget -q -O - https://repo.mysql.com/RPM-GPG-KEY-mysql-2022|yum install然后重新安装 yum install mysql-community-client.x86_64
操作:
连到数据库:mysql -h 数据库地址 -u数据库用户名 -p数据库密码 -D 数据库名称
mysql -h 88.88.19.252 -utravelplat -pHdkj1234 -D etravel
数据库导出(表结构):mysqldump -h 数据库地址 -u数据库用户名 -p数据库密码 -d 数据库名称 > 文件名.sql
mysqldump -h 88.88.19.252 -utravelplat -pHdkj1234 -d etravel > db20190713.sql
数据库导出(表结构 + 表数据):mysqldump -h 数据库地址 -u数据库用户名 -p数据库密码 数据库名称 > 文件名.sql
mysqldump -h 88.88.19.252 -utravelplat -pHdkj1234 etravel > db20190713.sql
数据库表导出(表结构 + 表数据):
mysqldump -h 88.88.19.252 -utravelplat -pHdkj1234 etravel doc > doc.sql
导入到数据库:source 文件名.sql
source db20190713.sql
查看全部
这时需要从官网下载
1.安装rpm源
rpm -ivh https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm
2.安装客户端
#可以通过yum搜索
yum search mysql
#若是64位的话直接安装
yum install mysql-community-client.x86_64
结果报错
报以下密钥错误:
The GPG keys listed for the "MySQL 5.7 Community Server" repository are already installed but they are not correct for this package.
Check that the correct key URLs are configured for this repository.
则先执行以下命令再安装:
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022然后重新安装 yum install mysql-community-client.x86_64
wget -q -O - https://repo.mysql.com/RPM-GPG-KEY-mysql-2022|yum install
操作:
连到数据库:mysql -h 数据库地址 -u数据库用户名 -p数据库密码 -D 数据库名称
mysql -h 88.88.19.252 -utravelplat -pHdkj1234 -D etravel
数据库导出(表结构):mysqldump -h 数据库地址 -u数据库用户名 -p数据库密码 -d 数据库名称 > 文件名.sql
mysqldump -h 88.88.19.252 -utravelplat -pHdkj1234 -d etravel > db20190713.sql
数据库导出(表结构 + 表数据):mysqldump -h 数据库地址 -u数据库用户名 -p数据库密码 数据库名称 > 文件名.sql
mysqldump -h 88.88.19.252 -utravelplat -pHdkj1234 etravel > db20190713.sql
数据库表导出(表结构 + 表数据):
mysqldump -h 88.88.19.252 -utravelplat -pHdkj1234 etravel doc > doc.sql
导入到数据库:source 文件名.sql
source db20190713.sql
ubuntu20 设置程序/脚本开机自动启动 可视化
Linux • 马化云 发表了文章 • 0 个评论 • 2660 次浏览 • 2022-05-16 16:40
无非都是把脚本写入到/etc/rc.local 里面
不过笔者在ubuntu20下,试了他们的方法,发现都没有生效,所以就比较郁闷了。
不过也找到了一种图形界面的方法,亲测也可以使用。
1. 在终端下输入
sudo gnome-session-properties
2. 在弹出来的图形界面中,会让你输入自动启动的命令路径和名字。
这个时候,点击add,然后只需要把你的程序路径填入 command 的地址中,然后随意写一个名字(有意义即可)
查看全部
无非都是把脚本写入到/etc/rc.local 里面
不过笔者在ubuntu20下,试了他们的方法,发现都没有生效,所以就比较郁闷了。
不过也找到了一种图形界面的方法,亲测也可以使用。
1. 在终端下输入
sudo gnome-session-properties
2. 在弹出来的图形界面中,会让你输入自动启动的命令路径和名字。
这个时候,点击add,然后只需要把你的程序路径填入 command 的地址中,然后随意写一个名字(有意义即可)
typora markdown 调整表格宽度
闲聊 • 马化云 发表了文章 • 0 个评论 • 4422 次浏览 • 2022-05-15 23:39
如果要控制具体的宽度,需要用html的语言控制:<span style="display:inline-block;width: 80px"> 列名 </span>
上面的语句控制表格宽度为80像素。 改动数字80 ,可以设置为你;需要的任意宽度。
查看全部
如果要控制具体的宽度,需要用html的语言控制:
<span style="display:inline-block;width: 80px"> 列名 </span>
上面的语句控制表格宽度为80像素。 改动数字80 ,可以设置为你;需要的任意宽度。
为什么市面上大部分银河证券不免五了? 还有哪些营业部可以免五
券商万一免五 • 绫波丽 发表了文章 • 0 个评论 • 3004 次浏览 • 2022-05-12 18:52
目前能够无条件开除免五的营业部已经不多了。
当然如果你满足一定资金量的话,个别营业部还是可以开出万一免五的低佣费率。
资金门槛在1w-50w不等。
需要的朋友可以扫码联系:
备注:开户
非诚勿扰。
也欢迎同行合作~ 查看全部
目前能够无条件开除免五的营业部已经不多了。
当然如果你满足一定资金量的话,个别营业部还是可以开出万一免五的低佣费率。
资金门槛在1w-50w不等。
需要的朋友可以扫码联系:
备注:开户
非诚勿扰。
也欢迎同行合作~
ubuntu的Shotwell 图片处理,居然连图片大小调整的功能都没有
Linux • 李魔佛 发表了文章 • 0 个评论 • 1271 次浏览 • 2022-05-11 17:31
只好用用中的photogimg(号称ubuntu下的photoshop)
只好用用中的photogimg(号称ubuntu下的photoshop)
禁止google浏览器http链接强制跳转为https ->网上的根本都是无效的方法
网络 • 李魔佛 发表了文章 • 0 个评论 • 1622 次浏览 • 2022-05-11 17:11
一般在网上的都是按照上面的方法操作,不过实际弄下来,发现根本无法组织chrome自动调转的https。
主要这个网站的主域名是https的,而他的二级域名是http的,用http的二级域名访问是,总是调转到https的页面(首页)。
最后无奈,只好用firefox来浏览这个http的页面。
郁闷ing。。 查看全部
在Chrome浏览器地址栏中输入chrome://net-internals/,打开HSTS标签,在Add domain里的Domain输入要添加的域名地址(不带http的地址),点Add即可。 其中Include subdomains选项还可以添加子域名,保证所有子域名都使用HTTPS访问。
一般在网上的都是按照上面的方法操作,不过实际弄下来,发现根本无法组织chrome自动调转的https。
主要这个网站的主域名是https的,而他的二级域名是http的,用http的二级域名访问是,总是调转到https的页面(首页)。
最后无奈,只好用firefox来浏览这个http的页面。
郁闷ing。。
docker访问外部主机的ip
Linux • 马化云 发表了文章 • 0 个评论 • 2521 次浏览 • 2022-05-10 01:48
那么假如我部署了一个nginx容器在docker里面,那么我的nginx要如何反向代理到我的linux主机的80端口呢?
那么我们测试一下,加入nginx容器的名字为ng110,那么我们通过命令docker exec -it ng110 /bin/bash
进入容器内部。
然后我们尝试curl获取主机的80端口。
首先,curl http://127.0.0.1/
这样子是不通的,因为127.0.0.1是docker内部的回环地址。并不是外部linux的ip。
那么我们先在linux外部,运行命令:ifconfig
这里有一个docker的的字样的ip地址。 那么这个地址就是在docker看来的外部ip地址。
然后我们继续回到docker容器里面,curl http://172.17.0.1/
结果我们发现有返回数据了。
所以在外面的ifconfig的docker容器地址,就是主机相对容器的ip地址。
所以我的nginx配置文件应该这么写:
proxy_pass http://172.17.0.1:80 查看全部
那么假如我部署了一个nginx容器在docker里面,那么我的nginx要如何反向代理到我的linux主机的80端口呢?
那么我们测试一下,加入nginx容器的名字为ng110,那么我们通过命令docker exec -it ng110 /bin/bash
进入容器内部。
然后我们尝试curl获取主机的80端口。
首先,curl http://127.0.0.1/
这样子是不通的,因为127.0.0.1是docker内部的回环地址。并不是外部linux的ip。
那么我们先在linux外部,运行命令:ifconfig
这里有一个docker的的字样的ip地址。 那么这个地址就是在docker看来的外部ip地址。
然后我们继续回到docker容器里面,curl http://172.17.0.1/
结果我们发现有返回数据了。
所以在外面的ifconfig的docker容器地址,就是主机相对容器的ip地址。
所以我的nginx配置文件应该这么写:
proxy_pass http://172.17.0.1:80
集思录这个站点的技术人员挺菜的,连cdn都不用
网络 • 李魔佛 发表了文章 • 0 个评论 • 1039 次浏览 • 2022-05-09 23:21
用稍微大点的ddos攻击下,就容易瘫痪大了的。。。。。。。
心真大。
用稍微大点的ddos攻击下,就容易瘫痪大了的。。。。。。。
心真大。
csdn自定义域名居然都要收费,而且......
闲聊 • 李魔佛 发表了文章 • 0 个评论 • 1136 次浏览 • 2022-05-09 12:02
正规买个域名都没这么贵的。
只是个csdn自定义的二级域名,人家其他新浪微博啥的都任你改名字。。。
正规买个域名都没这么贵的。
只是个csdn自定义的二级域名,人家其他新浪微博啥的都任你改名字。。。
有道云笔记7.0版本太卡了
闲聊 • 李魔佛 发表了文章 • 0 个评论 • 2036 次浏览 • 2022-05-09 00:30
只要打开有道云笔记,立马超越chrome成为内存大户。
笔记本cpu风扇瞬间转起来。
只要打开有道云笔记,立马超越chrome成为内存大户。
笔记本cpu风扇瞬间转起来。
python对视频添加水印 调整帧率
python • 李魔佛 发表了文章 • 0 个评论 • 1267 次浏览 • 2022-05-07 11:37
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。 它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。 FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。 这个项目最早由Fabrice Bellard发起,2004年至2015年间由Michael Niedermayer主要负责维护。 许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。 项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。
# coding=utf-8
import os
import subprocess
import datetime
import json, pprint
import re, time
import threading
import random
import shutil
class FFmpeg:
def __init__(self, editvdo, addlogo=None, addmusic=None,
addvdohead=None, addvdotail=None):
self.editvdo = editvdo
self.addlogo = addlogo
self.addmusic = addmusic
self.addvdohead = addvdohead
self.addvdotail = addvdotail
self.vdo_time, self.vdo_width, self.vdo_height, self.attr_dict = self.get_attr()
self.editvdo_path = os.path.dirname(editvdo)
self.editvdo_name = os.path.basename(editvdo)
def get_attr(self):
"""
获取视频属性参数
:return:
"""
strcmd = r'ffprobe -print_format json -show_streams -i "{}"'.format(self.editvdo)
status, output = subprocess.getstatusoutput(strcmd)
agrs = eval(re.search('{.*}', output, re.S).group().replace("\n", "").replace(" ", ''))
streams = agrs.get('streams', )
agrs_dict = dict()
[agrs_dict.update(x) for x in streams]
vdo_time = agrs_dict.get('duration')
vdo_width = agrs_dict.get('width')
vdo_height = agrs_dict.get('height')
attr = (vdo_time, vdo_width, vdo_height, agrs_dict)
return attr
def edit_head(self, start_time, end_time, deposit=None):
"""
截取指定长度视频
:param second: 去除开始的多少秒
:param deposit: 另存为文件
:return: True/Flase
"""
if None == deposit:
deposit = self.editvdo_path+'/'+'edit_head'+self.editvdo_name
start = time.strftime('%H:%M:%S', time.gmtime(start_time))
end = time.strftime('%H:%M:%S', time.gmtime(end_time))
strcmd = 'ffmpeg -i "{}" -vcodec copy -acodec copy -ss {} -to {} "{}" -y'.format(
self.editvdo, start, end, deposit)
result = subprocess.run(args=strcmd, stdout=subprocess.PIPE, shell=True)
if os.path.exists(deposit):
os.remove(self.editvdo)
os.rename(deposit, self.editvdo)
return True
else:
return False
def edit_logo(self, deposit=None):
"""
添加水印
:param deposit:添加水印后另存为路径,为空则覆盖
:return: True/False
"""
if None == deposit:
deposit = self.editvdo_path+'/'+'edit_logo'+self.editvdo_name
strcmd = r'ffmpeg -i "{}" -vf "movie=\'{}\' [watermark];[in] ' \
r'[watermark] overlay=main_w-overlay_w-10:10 [out]" "{}"'.format(
self.editvdo, self.addlogo, deposit)
result = subprocess.run(args=strcmd, stdout=subprocess.PIPE, shell=True)
if os.path.exists(deposit):
os.remove(self.editvdo)
os.rename(deposit, self.editvdo)
return True
else:
return False
def edit_music(self, deposit=None):
if None == deposit:
deposit = self.editvdo_path+'/'+'edit_music'+self.editvdo_name
strcmd = r'ffmpeg -y -i "{}" -i "{}" -filter_complex "[0:a] ' \
r'pan=stereo|c0=1*c0|c1=1*c1 [a1], [1:a] ' \
r'pan=stereo|c0=1*c0|c1=1*c1 [a2],[a1][a2]amix=duration=first,' \
r'pan=stereo|c0<c0+c1|c1<c2+c3,pan=mono|c0=c0+c1[a]" ' \
r'-map "[a]" -map 0:v -c:v libx264 -c:a aac ' \
r'-strict -2 -ac 2 "{}"'.format(self.editvdo, self.addmusic, deposit)
result = subprocess.run(args=strcmd, stdout=subprocess.PIPE, shell=True)
if os.path.exists(deposit):
os.remove(self.editvdo)
os.rename(deposit, self.editvdo)
return True
else:
return False
def edit_rate(self, rete=30, deposit=None):
"""
改变帧率
:param rete: 修改大小帧率
:param deposit: 修改后保存路径
:return:
"""
if None == deposit:
deposit = self.editvdo_path+'/'+'edit_music'+self.editvdo_name
strcmd = r'ffmpeg -i "{}" -r {} "{}"' % (self.editvdo, rete, deposit)
result = subprocess.run(args=strcmd, stdout=subprocess.PIPE, shell=True)
if os.path.exists(deposit):
os.remove(self.editvdo)
os.rename(deposit, self.editvdo)
return True
else:
return False
def edit_power(self, power='1280x720', deposit=None):
"""
修改分辨率
:param power: 分辨率
:param deposit: 修改后保存路径,为空则覆盖
:return:
"""
if None == deposit:
deposit = self.editvdo_path+'/'+'edit_power'+self.editvdo_name
strcmd = r'ffmpeg -i "{}" -s {} "{}"'.format(self.editvdo, power, deposit)
result = subprocess.run(args=strcmd, stdout=subprocess.PIPE, shell=True)
if os.path.exists(deposit):
os.remove(self.editvdo)
os.rename(deposit, self.editvdo)
return True
else:
return False
def rdit_marge(self, vdo_head, vdo_tail, deposit=None):
if None == deposit:
deposit = self.editvdo_path+'/'+'rdit_marge'+self.editvdo_name
with open(self.editvdo_path+'/'+'rdit_marge.txt', 'w', encoding='utf-8') as f:
f.write("file '{}' \nfile '{}' \nfile '{}'" .format(
vdo_head, self.editvdo, vdo_tail))
strcmd = r'ffmpeg -f concat -safe 0 -i "{}" -c copy "{}"'.format(
self.editvdo_path + '/' + 'rdit_marge.txt', deposit)
result = subprocess.run(args=strcmd, stdout=subprocess.PIPE, shell=True)
if os.path.exists(deposit):
os.remove(self.editvdo)
os.rename(deposit, self.editvdo)
return True
else:
return False
# ffmpeg - i input.mkv - filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" - map"[v]" - map"[a]" output.mkv
test = FFmpeg(r"D:\vdio\4.mp4")
PS:需要电脑把ffmpeg的可执行文件放到环境变量中 查看全部
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。 它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。 FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。 这个项目最早由Fabrice Bellard发起,2004年至2015年间由Michael Niedermayer主要负责维护。 许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。 项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。
# coding=utf-8
import os
import subprocess
import datetime
import json, pprint
import re, time
import threading
import random
import shutil
class FFmpeg:
def __init__(self, editvdo, addlogo=None, addmusic=None,
addvdohead=None, addvdotail=None):
self.editvdo = editvdo
self.addlogo = addlogo
self.addmusic = addmusic
self.addvdohead = addvdohead
self.addvdotail = addvdotail
self.vdo_time, self.vdo_width, self.vdo_height, self.attr_dict = self.get_attr()
self.editvdo_path = os.path.dirname(editvdo)
self.editvdo_name = os.path.basename(editvdo)
def get_attr(self):
"""
获取视频属性参数
:return:
"""
strcmd = r'ffprobe -print_format json -show_streams -i "{}"'.format(self.editvdo)
status, output = subprocess.getstatusoutput(strcmd)
agrs = eval(re.search('{.*}', output, re.S).group().replace("\n", "").replace(" ", ''))
streams = agrs.get('streams', )
agrs_dict = dict()
[agrs_dict.update(x) for x in streams]
vdo_time = agrs_dict.get('duration')
vdo_width = agrs_dict.get('width')
vdo_height = agrs_dict.get('height')
attr = (vdo_time, vdo_width, vdo_height, agrs_dict)
return attr
def edit_head(self, start_time, end_time, deposit=None):
"""
截取指定长度视频
:param second: 去除开始的多少秒
:param deposit: 另存为文件
:return: True/Flase
"""
if None == deposit:
deposit = self.editvdo_path+'/'+'edit_head'+self.editvdo_name
start = time.strftime('%H:%M:%S', time.gmtime(start_time))
end = time.strftime('%H:%M:%S', time.gmtime(end_time))
strcmd = 'ffmpeg -i "{}" -vcodec copy -acodec copy -ss {} -to {} "{}" -y'.format(
self.editvdo, start, end, deposit)
result = subprocess.run(args=strcmd, stdout=subprocess.PIPE, shell=True)
if os.path.exists(deposit):
os.remove(self.editvdo)
os.rename(deposit, self.editvdo)
return True
else:
return False
def edit_logo(self, deposit=None):
"""
添加水印
:param deposit:添加水印后另存为路径,为空则覆盖
:return: True/False
"""
if None == deposit:
deposit = self.editvdo_path+'/'+'edit_logo'+self.editvdo_name
strcmd = r'ffmpeg -i "{}" -vf "movie=\'{}\' [watermark];[in] ' \
r'[watermark] overlay=main_w-overlay_w-10:10 [out]" "{}"'.format(
self.editvdo, self.addlogo, deposit)
result = subprocess.run(args=strcmd, stdout=subprocess.PIPE, shell=True)
if os.path.exists(deposit):
os.remove(self.editvdo)
os.rename(deposit, self.editvdo)
return True
else:
return False
def edit_music(self, deposit=None):
if None == deposit:
deposit = self.editvdo_path+'/'+'edit_music'+self.editvdo_name
strcmd = r'ffmpeg -y -i "{}" -i "{}" -filter_complex "[0:a] ' \
r'pan=stereo|c0=1*c0|c1=1*c1 [a1], [1:a] ' \
r'pan=stereo|c0=1*c0|c1=1*c1 [a2],[a1][a2]amix=duration=first,' \
r'pan=stereo|c0<c0+c1|c1<c2+c3,pan=mono|c0=c0+c1[a]" ' \
r'-map "[a]" -map 0:v -c:v libx264 -c:a aac ' \
r'-strict -2 -ac 2 "{}"'.format(self.editvdo, self.addmusic, deposit)
result = subprocess.run(args=strcmd, stdout=subprocess.PIPE, shell=True)
if os.path.exists(deposit):
os.remove(self.editvdo)
os.rename(deposit, self.editvdo)
return True
else:
return False
def edit_rate(self, rete=30, deposit=None):
"""
改变帧率
:param rete: 修改大小帧率
:param deposit: 修改后保存路径
:return:
"""
if None == deposit:
deposit = self.editvdo_path+'/'+'edit_music'+self.editvdo_name
strcmd = r'ffmpeg -i "{}" -r {} "{}"' % (self.editvdo, rete, deposit)
result = subprocess.run(args=strcmd, stdout=subprocess.PIPE, shell=True)
if os.path.exists(deposit):
os.remove(self.editvdo)
os.rename(deposit, self.editvdo)
return True
else:
return False
def edit_power(self, power='1280x720', deposit=None):
"""
修改分辨率
:param power: 分辨率
:param deposit: 修改后保存路径,为空则覆盖
:return:
"""
if None == deposit:
deposit = self.editvdo_path+'/'+'edit_power'+self.editvdo_name
strcmd = r'ffmpeg -i "{}" -s {} "{}"'.format(self.editvdo, power, deposit)
result = subprocess.run(args=strcmd, stdout=subprocess.PIPE, shell=True)
if os.path.exists(deposit):
os.remove(self.editvdo)
os.rename(deposit, self.editvdo)
return True
else:
return False
def rdit_marge(self, vdo_head, vdo_tail, deposit=None):
if None == deposit:
deposit = self.editvdo_path+'/'+'rdit_marge'+self.editvdo_name
with open(self.editvdo_path+'/'+'rdit_marge.txt', 'w', encoding='utf-8') as f:
f.write("file '{}' \nfile '{}' \nfile '{}'" .format(
vdo_head, self.editvdo, vdo_tail))
strcmd = r'ffmpeg -f concat -safe 0 -i "{}" -c copy "{}"'.format(
self.editvdo_path + '/' + 'rdit_marge.txt', deposit)
result = subprocess.run(args=strcmd, stdout=subprocess.PIPE, shell=True)
if os.path.exists(deposit):
os.remove(self.editvdo)
os.rename(deposit, self.editvdo)
return True
else:
return False
# ffmpeg - i input.mkv - filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" - map"[v]" - map"[a]" output.mkv
test = FFmpeg(r"D:\vdio\4.mp4")
PS:需要电脑把ffmpeg的可执行文件放到环境变量中
格式工厂去除视频水印logo效果不好
python • 李魔佛 发表了文章 • 0 个评论 • 1650 次浏览 • 2022-05-07 10:53
试了一下,结果效果不理想,格式工厂只是把logo区域进行模糊处理,也就是logo区域变得不可再阅读。
wp super cache缓存文件在哪里?
网络 • 李魔佛 发表了文章 • 0 个评论 • 1436 次浏览 • 2022-05-07 01:01
里面的静态文件是html后缀结尾的。
如果同时开启了cdn加速,和wp super cache, 那么会有个问题。 你写的文章,发布出去后,无论怎么刷新都出不了的。
为什么?
因为你的首页也是做了wp super cache 变成了静态页面,以html结尾的。
而html文件默认是被cdn缓存起来的。
也就是用户访问你的网站的时候, 看到的是cdn里面的index.html, 而这个文件是有wp super cache生成的,而你的缓存规则如果是所有文件缓存7天的话,意味着你7天后才可以看到你新发的文章。
当然解决办法也很简单,在缓存规则里面,把html后缀设置为不缓存就可以了。 查看全部
里面的静态文件是html后缀结尾的。
如果同时开启了cdn加速,和wp super cache, 那么会有个问题。 你写的文章,发布出去后,无论怎么刷新都出不了的。
为什么?
因为你的首页也是做了wp super cache 变成了静态页面,以html结尾的。
而html文件默认是被cdn缓存起来的。
也就是用户访问你的网站的时候, 看到的是cdn里面的index.html, 而这个文件是有wp super cache生成的,而你的缓存规则如果是所有文件缓存7天的话,意味着你7天后才可以看到你新发的文章。
当然解决办法也很简单,在缓存规则里面,把html后缀设置为不缓存就可以了。
typora 复制公众号文章时图片无法正确上传到图床
闲聊 • 李魔佛 发表了文章 • 0 个评论 • 1532 次浏览 • 2022-05-07 00:54
可是对于微信公众号的文章,typora复制出来的图片都是一样的。主要原因是公众号的图片命名都叫640.png。
以至于上传的图片都是同一张。
那么如何解决这个问题呢?
我们可以绕道。
先用有道云笔记保存公众号的文章。
有道云保存文章时,可以正常把公众号的图片正常拉下来的。
然后右键,导出word。 对,有道云笔记这个功能。
然后打开保存的word文件,全选,复制里面的内容,包含图片。
然后ctrl+v 粘贴到typora。
然后图片就可以正常上传的腾讯云,七牛云的文件服务器啦。
查看全部
可是对于微信公众号的文章,typora复制出来的图片都是一样的。主要原因是公众号的图片命名都叫640.png。
以至于上传的图片都是同一张。
那么如何解决这个问题呢?
我们可以绕道。
先用有道云笔记保存公众号的文章。
有道云保存文章时,可以正常把公众号的图片正常拉下来的。
然后右键,导出word。 对,有道云笔记这个功能。
然后打开保存的word文件,全选,复制里面的内容,包含图片。
然后ctrl+v 粘贴到typora。
然后图片就可以正常上传的腾讯云,七牛云的文件服务器啦。
腾讯云添加cdn加速后 域名加上www无法访问
网络 • 李魔佛 发表了文章 • 0 个评论 • 1966 次浏览 • 2022-05-06 00:31
而加入了cdn加速之后,30daydo.com 可以正常访问, 而www.30daydo.com 却访问异常。
解决方法:
www的域名访问 也要加入一个cdn加速记录。
如下图所示:
添加完记录后,需要在你的DNSPod 的域名解析里面,把这个www的解析CNAME也加进去。 这一步也不能少。
类型要填写CNAME,不能填A哦。
然后过大概十来分钟才能生效。并不是马上就生效的哦。
查看全部
而加入了cdn加速之后,30daydo.com 可以正常访问, 而www.30daydo.com 却访问异常。
解决方法:
www的域名访问 也要加入一个cdn加速记录。
如下图所示:
添加完记录后,需要在你的DNSPod 的域名解析里面,把这个www的解析CNAME也加进去。 这一步也不能少。
类型要填写CNAME,不能填A哦。
然后过大概十来分钟才能生效。并不是马上就生效的哦。
使用代理VPN后,微信公众号发文章显示的是代理后的VPN归属地
闲聊 • 李魔佛 发表了文章 • 0 个评论 • 4818 次浏览 • 2022-05-05 00:28
公众号也不例外。
如果想修改归属地,首先需要有一个代理或者VPN软件。设置为全局代理,然后发文,你的发文地址就会显示你的代理和VPN地址啦。
typora markdown文章 快速清除文章内的所有超链接
闲聊 • 李魔佛 发表了文章 • 0 个评论 • 3602 次浏览 • 2022-04-27 12:11
如何快速地清除这些超链接呢?
很简单,只要你把要删除的超链接区域选中,如果全文的话,ctrl+A ,
然后按下快捷键 Ctrl + \
就可以快速清除样式,所有的超链接就会不见了的。
查看全部
如何快速地清除这些超链接呢?
很简单,只要你把要删除的超链接区域选中,如果全文的话,ctrl+A ,
然后按下快捷键 Ctrl + \
就可以快速清除样式,所有的超链接就会不见了的。
wordpress安装了jetpack插件速度慢得一批
网络 • 李魔佛 发表了文章 • 0 个评论 • 1483 次浏览 • 2022-04-26 09:17
果断卸载了。
查看全部
果断卸载了。
docker wordpress无法上传图片到uploads目录
网络 • 李魔佛 发表了文章 • 0 个评论 • 1458 次浏览 • 2022-04-25 12:38
无法将上传的文件移动至wp-content/uploads/
uploads文件夹权限不够。
这个时候需要进入到docker里面,赋予一定的写权限。
网上看到很多人直接来一个命令:
chmod -R 777 uploads/
这种玩意对方上传一个可执行文件到uploads,后面利用漏洞执行这个路径。 那么你的站点可能就落入到其他人手上了。
所以只要保证设置非这个用户组的用户只给与读写的权限,不给与执行x的权限
7 7 6 , 所以正确的写法是:
chmod -R 776 uploads/
后面再上传一次文件,就成功了。
查看全部
无法将上传的文件移动至wp-content/uploads/
uploads文件夹权限不够。
这个时候需要进入到docker里面,赋予一定的写权限。
网上看到很多人直接来一个命令:
chmod -R 777 uploads/
这种玩意对方上传一个可执行文件到uploads,后面利用漏洞执行这个路径。 那么你的站点可能就落入到其他人手上了。
所以只要保证设置非这个用户组的用户只给与读写的权限,不给与执行x的权限
7 7 6 , 所以正确的写法是:
chmod -R 776 uploads/
后面再上传一次文件,就成功了。
七牛云的图片图床配置到腾讯云域名解析
Linux • 李魔佛 发表了文章 • 0 个评论 • 1113 次浏览 • 2022-04-24 16:24
https://developer.qiniu.com/fusion/kb/1322/how-to-configure-cname-domain-name
一般按照上面链接创建就可以了。
这里有个值要注意的,主机记录
描述如下:
主机记录 填写加速域名对应的主机前缀 该参数唯一,请勿自定义
这里你的主机记录是你的二级域名的部分,
比如你的二级域名是 img.30daydo.com
那么这里你的主机记录就是 img
查看全部
https://developer.qiniu.com/fusion/kb/1322/how-to-configure-cname-domain-name
一般按照上面链接创建就可以了。
这里有个值要注意的,主机记录
描述如下:
主机记录 填写加速域名对应的主机前缀 该参数唯一,请勿自定义
这里你的主机记录是你的二级域名的部分,
比如你的二级域名是 img.30daydo.com
那么这里你的主机记录就是 img
讯投QMT python API文档
股票 • 李魔佛 发表了文章 • 0 个评论 • 2406 次浏览 • 2022-04-23 01:35
需要的可以到公众号后台留言获取: qmt接口文档
需要开通qmt可以联系微信: (目前交易费率万一免五)
docker nginx+php部署的wordpress,安装插件不需要ftp账号
Linux • 李魔佛 发表了文章 • 0 个评论 • 1413 次浏览 • 2022-04-22 23:43
配置好之后,如果需要安装第三方的应用,每次需要FTP账号,用于远程下载这个插件文件到wordpress的plugin目录下。
不过为了这个插件功能再开个ftp服务,还暴露了端口,有点鸡肋。
于是按照网上的教程倒腾,不过网上的教程都没有使用docker操作,按照他们的操作是没能把问题解决的。
主要是用户名不一样。
1. 进入nginx的容器中,注意是nginx,而不是php
docker exec -it xxxx /bin/bash
2. 修改nginx的 wordpress的根目录所有者权限
注意这里的用户名是 www-data , 而不是www
chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html
不要乱信网上的人说,要改为777, 除非你想把你的服务器送给别人做肉鸡。
然后刷新一下页面,就可以直接安装,而跳过那个ftp密码, 查看全部
配置好之后,如果需要安装第三方的应用,每次需要FTP账号,用于远程下载这个插件文件到wordpress的plugin目录下。
不过为了这个插件功能再开个ftp服务,还暴露了端口,有点鸡肋。
于是按照网上的教程倒腾,不过网上的教程都没有使用docker操作,按照他们的操作是没能把问题解决的。
主要是用户名不一样。
1. 进入nginx的容器中,注意是nginx,而不是php
docker exec -it xxxx /bin/bash
2. 修改nginx的 wordpress的根目录所有者权限
注意这里的用户名是 www-data , 而不是www
chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html
不要乱信网上的人说,要改为777, 除非你想把你的服务器送给别人做肉鸡。
然后刷新一下页面,就可以直接安装,而跳过那个ftp密码,
docker php fpm里面有个Kdevtmpfsi挖矿病毒
Linux • 李魔佛 发表了文章 • 0 个评论 • 1709 次浏览 • 2022-04-20 00:51
一个欲思主题,一个大学主题。狗日了。
查看本地的连接。
netstat -atnlp
居然有2个ssh的连接,一个IP是美国的。一个是我自己的。
而且重启后这玩意还是自动被重连。
感觉被做了反向连接。
最后定位到的问题是,php的9000端口暴露了。导致被对方使用漏洞程序扫描,注入了病毒。
查看全部
一个欲思主题,一个大学主题。狗日了。
查看本地的连接。
netstat -atnlp
居然有2个ssh的连接,一个IP是美国的。一个是我自己的。
而且重启后这玩意还是自动被重连。
感觉被做了反向连接。
最后定位到的问题是,php的9000端口暴露了。导致被对方使用漏洞程序扫描,注入了病毒。
1核2G的服务器 docker跑wordpress真够吃力
Linux • 李魔佛 发表了文章 • 0 个评论 • 1194 次浏览 • 2022-04-19 23:04
现在的wordpress加的内容可真多
现在的wordpress加的内容可真多
python3 安装demjson 报错 use_2to3 is invalid
python • 李魔佛 发表了文章 • 0 个评论 • 4875 次浏览 • 2022-04-18 20:19
Collecting demjson==2.2.4
Downloading https://pypi.doubanio.com/pack ... ar.gz (131 kB)
|████████████████████████████████| 131 kB 985 kB/s
ERROR: Command errored out with exit status 1:
command: /root/miniconda3/envs/py37/bin/python -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-pj0ajcpl/demjson_86a1bab6643c4ed7a7b0c6bb6d3a43a2/setup.py'"'"'; __file__='"'"'/tmp/pip-install-pj0ajcpl/demjson_86a1bab6643c4ed7a7b0c6bb6d3a43a2/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-7ve4tu87
cwd: /tmp/pip-install-pj0ajcpl/demjson_86a1bab6643c4ed7a7b0c6bb6d3a43a2/
Complete output (3 lines):
/root/miniconda3/envs/py37/lib/python3.7/site-packages/setuptools/dist.py:760: UserWarning: Usage of dash-separated 'index-url' will not be supported in future versions. Please use the underscore name 'index_url' instead
% (opt, underscore_opt)
error in demjson setup command: use_2to3 is invalid.
记录一下解决办法:
setuptools 降级:
pip install --upgrade setuptools==57.5.0
然后再pip install demjson 即可
如果担心setuptools 修改到系统的其他库,可以创建一个虚拟环境。
然后在虚拟环境里面对setuptools 降级,再安装demjson
来个养眼图: 查看全部
ooking in indexes: https://pypi.douban.com/simple
Collecting demjson==2.2.4
Downloading https://pypi.doubanio.com/pack ... ar.gz (131 kB)
|████████████████████████████████| 131 kB 985 kB/s
ERROR: Command errored out with exit status 1:
command: /root/miniconda3/envs/py37/bin/python -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-pj0ajcpl/demjson_86a1bab6643c4ed7a7b0c6bb6d3a43a2/setup.py'"'"'; __file__='"'"'/tmp/pip-install-pj0ajcpl/demjson_86a1bab6643c4ed7a7b0c6bb6d3a43a2/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-7ve4tu87
cwd: /tmp/pip-install-pj0ajcpl/demjson_86a1bab6643c4ed7a7b0c6bb6d3a43a2/
Complete output (3 lines):
/root/miniconda3/envs/py37/lib/python3.7/site-packages/setuptools/dist.py:760: UserWarning: Usage of dash-separated 'index-url' will not be supported in future versions. Please use the underscore name 'index_url' instead
% (opt, underscore_opt)
error in demjson setup command: use_2to3 is invalid.
记录一下解决办法:
setuptools 降级:
pip install --upgrade setuptools==57.5.0
然后再pip install demjson 即可
如果担心setuptools 修改到系统的其他库,可以创建一个虚拟环境。
然后在虚拟环境里面对setuptools 降级,再安装demjson
来个养眼图: