ubuntu20 设置程序/脚本开机自动启动 可视化

不少新手不会设置ubuntu20下程序自动启动。 网上大部分文章是使用命令行操作。
无非都是把脚本写入到/etc/rc.local 里面
 
不过笔者在ubuntu20下,试了他们的方法,发现都没有生效,所以就比较郁闷了。
 
不过也找到了一种图形界面的方法,亲测也可以使用。
 
1. 在终端下输入 
sudo gnome-session-properties

2. 在弹出来的图形界面中,会让你输入自动启动的命令路径和名字。
 
这个时候,点击add,然后只需要把你的程序路径填入 command 的地址中,然后随意写一个名字(有意义即可)
 

 
 
继续阅读 »
不少新手不会设置ubuntu20下程序自动启动。 网上大部分文章是使用命令行操作。
无非都是把脚本写入到/etc/rc.local 里面
 
不过笔者在ubuntu20下,试了他们的方法,发现都没有生效,所以就比较郁闷了。
 
不过也找到了一种图形界面的方法,亲测也可以使用。
 
1. 在终端下输入 
sudo gnome-session-properties

2. 在弹出来的图形界面中,会让你输入自动启动的命令路径和名字。
 
这个时候,点击add,然后只需要把你的程序路径填入 command 的地址中,然后随意写一个名字(有意义即可)
 

 
  收起阅读 »

typora markdown 调整表格宽度

原生的markdown语言只能控制居中,靠左,靠右这种比较常规的操作。
如果要控制具体的宽度,需要用html的语言控制:
<span style="display:inline-block;width: 80px"> 列名 </span>
 
上面的语句控制表格宽度为80像素。 改动数字80 ,可以设置为你;需要的任意宽度。
 
继续阅读 »
原生的markdown语言只能控制居中,靠左,靠右这种比较常规的操作。
如果要控制具体的宽度,需要用html的语言控制:
<span style="display:inline-block;width: 80px"> 列名 </span>
 
上面的语句控制表格宽度为80像素。 改动数字80 ,可以设置为你;需要的任意宽度。
 
收起阅读 »

为什么市面上大部分银河证券不免五了? 还有哪些营业部可以免五

 在2年前,免五的银河遍地都是。 而后面因为其他大券商不免五,纷纷向zjh投诉,施压。 后面银河的免五就逐渐被限制。
 
目前能够无条件开除免五的营业部已经不多了。
 
当然如果你满足一定资金量的话,个别营业部还是可以开出万一免五的低佣费率。
 

 
资金门槛在1w-50w不等。
 
需要的朋友可以扫码联系:

备注:开户
非诚勿扰。
 
也欢迎同行合作~
继续阅读 »
 在2年前,免五的银河遍地都是。 而后面因为其他大券商不免五,纷纷向zjh投诉,施压。 后面银河的免五就逐渐被限制。
 
目前能够无条件开除免五的营业部已经不多了。
 
当然如果你满足一定资金量的话,个别营业部还是可以开出万一免五的低佣费率。
 

 
资金门槛在1w-50w不等。
 
需要的朋友可以扫码联系:

备注:开户
非诚勿扰。
 
也欢迎同行合作~ 收起阅读 »

ubuntu的Shotwell 图片处理,居然连图片大小调整的功能都没有

有点无语,平时用得最多的功能,居然没有。
 


只好用用中的photogimg(号称ubuntu下的photoshop)
有点无语,平时用得最多的功能,居然没有。
 


只好用用中的photogimg(号称ubuntu下的photoshop)

禁止google浏览器http链接强制跳转为https ->网上的根本都是无效的方法


在Chrome浏览器地址栏中输入chrome://net-internals/,打开HSTS标签,在Add domain里的Domain输入要添加的域名地址(不带http的地址),点Add即可。  其中Include subdomains选项还可以添加子域名,保证所有子域名都使用HTTPS访问。
 


一般在网上的都是按照上面的方法操作,不过实际弄下来,发现根本无法组织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里面安装了一个docker,然后linux做了一个http接口,端口为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
继续阅读 »
假如在linux里面安装了一个docker,然后linux做了一个http接口,端口为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都不用


 
用稍微大点的ddos攻击下,就容易瘫痪大了的。。。。。。。
心真大。

 
用稍微大点的ddos攻击下,就容易瘫痪大了的。。。。。。。
心真大。

csdn自定义域名居然都要收费,而且......

而且还不便宜呀
正规买个域名都没这么贵的。
只是个csdn自定义的二级域名,人家其他新浪微博啥的都任你改名字。。。

 
而且还不便宜呀
正规买个域名都没这么贵的。
只是个csdn自定义的二级域名,人家其他新浪微博啥的都任你改名字。。。

 

有道云笔记7.0版本太卡了


 
只要打开有道云笔记,立马超越chrome成为内存大户。
 
笔记本cpu风扇瞬间转起来。
 

 
只要打开有道云笔记,立马超越chrome成为内存大户。
 
笔记本cpu风扇瞬间转起来。
 

python对视频添加水印 调整帧率

Python调用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的可执行文件放到环境变量中
继续阅读 »
Python调用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效果不好

本来想用opencv处理的,发现格式工厂已经有类似的功能了。
 
试了一下,结果效果不理想,格式工厂只是把logo区域进行模糊处理,也就是logo区域变得不可再阅读。
 

 
 
继续阅读 »
本来想用opencv处理的,发现格式工厂已经有类似的功能了。
 
试了一下,结果效果不理想,格式工厂只是把logo区域进行模糊处理,也就是logo区域变得不可再阅读。
 

 
  收起阅读 »

wp super cache缓存文件在哪里?

wordpress_cn/wp-content/cache/supercache/xxxx.com (最后一个为你的域名)
 
里面的静态文件是html后缀结尾的。
 

 
如果同时开启了cdn加速,和wp super cache, 那么会有个问题。 你写的文章,发布出去后,无论怎么刷新都出不了的。
 
为什么?
 
因为你的首页也是做了wp super cache 变成了静态页面,以html结尾的。
 
而html文件默认是被cdn缓存起来的。
 
也就是用户访问你的网站的时候, 看到的是cdn里面的index.html, 而这个文件是有wp super cache生成的,而你的缓存规则如果是所有文件缓存7天的话,意味着你7天后才可以看到你新发的文章。
 
当然解决办法也很简单,在缓存规则里面,把html后缀设置为不缓存就可以了。
继续阅读 »
wordpress_cn/wp-content/cache/supercache/xxxx.com (最后一个为你的域名)
 
里面的静态文件是html后缀结尾的。
 

 
如果同时开启了cdn加速,和wp super cache, 那么会有个问题。 你写的文章,发布出去后,无论怎么刷新都出不了的。
 
为什么?
 
因为你的首页也是做了wp super cache 变成了静态页面,以html结尾的。
 
而html文件默认是被cdn缓存起来的。
 
也就是用户访问你的网站的时候, 看到的是cdn里面的index.html, 而这个文件是有wp super cache生成的,而你的缓存规则如果是所有文件缓存7天的话,意味着你7天后才可以看到你新发的文章。
 
当然解决办法也很简单,在缓存规则里面,把html后缀设置为不缓存就可以了。 收起阅读 »

typora 复制公众号文章时图片无法正确上传到图床

正常使用typora的时候,复制网页的内容,可以直接把远程的图片也顺带抓下来,同时上传到诸如七牛,腾讯cos的服务器。
 
可是对于微信公众号的文章,typora复制出来的图片都是一样的。主要原因是公众号的图片命名都叫640.png。
 
以至于上传的图片都是同一张。
 
那么如何解决这个问题呢?
 
我们可以绕道。
 
先用有道云笔记保存公众号的文章。
 
有道云保存文章时,可以正常把公众号的图片正常拉下来的。
 
然后右键,导出word。 对,有道云笔记这个功能。
 
然后打开保存的word文件,全选,复制里面的内容,包含图片。
 
 
然后ctrl+v 粘贴到typora。
 
然后图片就可以正常上传的腾讯云,七牛云的文件服务器啦。
 
 
继续阅读 »
正常使用typora的时候,复制网页的内容,可以直接把远程的图片也顺带抓下来,同时上传到诸如七牛,腾讯cos的服务器。
 
可是对于微信公众号的文章,typora复制出来的图片都是一样的。主要原因是公众号的图片命名都叫640.png。
 
以至于上传的图片都是同一张。
 
那么如何解决这个问题呢?
 
我们可以绕道。
 
先用有道云笔记保存公众号的文章。
 
有道云保存文章时,可以正常把公众号的图片正常拉下来的。
 
然后右键,导出word。 对,有道云笔记这个功能。
 
然后打开保存的word文件,全选,复制里面的内容,包含图片。
 
 
然后ctrl+v 粘贴到typora。
 
然后图片就可以正常上传的腾讯云,七牛云的文件服务器啦。
 
  收起阅读 »

腾讯云添加cdn加速后 域名加上www无法访问

比如 原来网址 为 30daydo.com, 没有使用cdn加速之前,在浏览器输入 30daydo.com 或者 www.30daydo.com 都可以正常访问。
 
而加入了cdn加速之后,30daydo.com 可以正常访问, 而www.30daydo.com 却访问异常。
 
解决方法:
www的域名访问 也要加入一个cdn加速记录。
 
如下图所示:
 

 
添加完记录后,需要在你的DNSPod 的域名解析里面,把这个www的解析CNAME也加进去。 这一步也不能少。
 

 
类型要填写CNAME,不能填A哦。
 
然后过大概十来分钟才能生效。并不是马上就生效的哦。
 
继续阅读 »
比如 原来网址 为 30daydo.com, 没有使用cdn加速之前,在浏览器输入 30daydo.com 或者 www.30daydo.com 都可以正常访问。
 
而加入了cdn加速之后,30daydo.com 可以正常访问, 而www.30daydo.com 却访问异常。
 
解决方法:
www的域名访问 也要加入一个cdn加速记录。
 
如下图所示:
 

 
添加完记录后,需要在你的DNSPod 的域名解析里面,把这个www的解析CNAME也加进去。 这一步也不能少。
 

 
类型要填写CNAME,不能填A哦。
 
然后过大概十来分钟才能生效。并不是马上就生效的哦。
  收起阅读 »

使用代理VPN后,微信公众号发文章显示的是代理后的VPN归属地

最近各种平台论坛都加入了归属地显示的功能。
 
公众号也不例外。
 
如果想修改归属地,首先需要有一个代理或者VPN软件。设置为全局代理,然后发文,你的发文地址就会显示你的代理和VPN地址啦。
 
继续阅读 »
最近各种平台论坛都加入了归属地显示的功能。
 
公众号也不例外。
 
如果想修改归属地,首先需要有一个代理或者VPN软件。设置为全局代理,然后发文,你的发文地址就会显示你的代理和VPN地址啦。
 
收起阅读 »

网易的云笔记新版出linux版本了

果然是良心企业。
果然是良心企业。

typora markdown文章 快速清除文章内的所有超链接

typora文章内,如果拷贝了他人的网页内容,如果文章内嵌入了大量的超链接,比如下面这样的:

 
 
如何快速地清除这些超链接呢?
 
很简单,只要你把要删除的超链接区域选中,如果全文的话,ctrl+A ,
然后按下快捷键 Ctrl + \ 
 
就可以快速清除样式,所有的超链接就会不见了的。 
 
 
继续阅读 »
typora文章内,如果拷贝了他人的网页内容,如果文章内嵌入了大量的超链接,比如下面这样的:

 
 
如何快速地清除这些超链接呢?
 
很简单,只要你把要删除的超链接区域选中,如果全文的话,ctrl+A ,
然后按下快捷键 Ctrl + \ 
 
就可以快速清除样式,所有的超链接就会不见了的。 
 
  收起阅读 »

wordpress安装了jetpack插件速度慢得一批

wordpress安装了jetpack后,默认的wp super cache的cdn就会使用jetpack的节点作为cdn,其url地址为 “i0.wp.com”等,实际使用后的访问速度还不如wp super cache默认的静态速度快。
 
果断卸载了。
 
 
继续阅读 »
wordpress安装了jetpack后,默认的wp super cache的cdn就会使用jetpack的节点作为cdn,其url地址为 “i0.wp.com”等,实际使用后的访问速度还不如wp super cache默认的静态速度快。
 
果断卸载了。
 
  收起阅读 »

docker wordpress无法上传图片到uploads目录

php
在写文章的时候插入图片,报错。


无法将上传的文件移动至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/
 
后面再上传一次文件,就成功了。
  收起阅读 »

七牛云的图片图床配置到腾讯云域名解析

官网的链接:
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文档

QMT

 

 

需要的可以到公众号后台留言获取: qmt接口文档

 
需要开通qmt可以联系微信: (目前交易费率万一免五)

 
继续阅读 »

 

 

需要的可以到公众号后台留言获取: qmt接口文档

 
需要开通qmt可以联系微信: (目前交易费率万一免五)

  收起阅读 »

docker nginx+php部署的wordpress,安装插件不需要ftp账号

使用docker搭建的每一个组件,php,nginx,mysql,弄得wordpress站点。
 
配置好之后,如果需要安装第三方的应用,每次需要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,nginx,mysql,弄得wordpress站点。
 
配置好之后,如果需要安装第三方的应用,每次需要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挖矿病毒

官方应该不至于被植入病毒,很有可能就是使用的wordpress第三方的主题库。
一个欲思主题,一个大学主题。狗日了。
 
查看本地的连接。
netstat -atnlp

居然有2个ssh的连接,一个IP是美国的。一个是我自己的。
 
而且重启后这玩意还是自动被重连。
 
感觉被做了反向连接。
 
最后定位到的问题是,php的9000端口暴露了。导致被对方使用漏洞程序扫描,注入了病毒。
 

 
继续阅读 »
官方应该不至于被植入病毒,很有可能就是使用的wordpress第三方的主题库。
一个欲思主题,一个大学主题。狗日了。
 
查看本地的连接。
netstat -atnlp

居然有2个ssh的连接,一个IP是美国的。一个是我自己的。
 
而且重启后这玩意还是自动被重连。
 
感觉被做了反向连接。
 
最后定位到的问题是,php的9000端口暴露了。导致被对方使用漏洞程序扫描,注入了病毒。
 

 
收起阅读 »

1核2G的服务器 docker跑wordpress真够吃力

性能太烂,预览个主题要等几分钟,甚至无响应。。。。
 
现在的wordpress加的内容可真多
性能太烂,预览个主题要等几分钟,甚至无响应。。。。
 
现在的wordpress加的内容可真多

python3 安装demjson 报错 use_2to3 is invalid

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 
 
来个养眼图:
继续阅读 »
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 
 
来个养眼图:
收起阅读 »

股票证券资金账户开户选个吉祥号-靓号888,999

一开年,好多小伙伴问我,股票资金账户开户时是否可以选个吉祥号-如含靓号666,888,999
 
一般情况下,股民开户的股东账号都是中登公司随机产生的,不可以选择。有机会选择的是资金账号哦
 
那哪些数字比较受欢迎呢,当然是689啦

“6”代表六六大顺,
“8”谐音“发”,即发财。
“9”意味长长久久。
还有,其实7比8更受宠?

因为七上八下。股指都希望永远向上,不要下啊
 

bae7e68e9aed050e10010962c5e7e3eb_(1).jpeg

 
最近 国金证券 推出了些许靓号,开头888的,需要开户的朋友请扫码联系,备注:国金开户
继续阅读 »
一开年,好多小伙伴问我,股票资金账户开户时是否可以选个吉祥号-如含靓号666,888,999
 
一般情况下,股民开户的股东账号都是中登公司随机产生的,不可以选择。有机会选择的是资金账号哦
 
那哪些数字比较受欢迎呢,当然是689啦

“6”代表六六大顺,
“8”谐音“发”,即发财。
“9”意味长长久久。
还有,其实7比8更受宠?

因为七上八下。股指都希望永远向上,不要下啊
 

bae7e68e9aed050e10010962c5e7e3eb_(1).jpeg

 
最近 国金证券 推出了些许靓号,开头888的,需要开户的朋友请扫码联系,备注:国金开户
收起阅读 »

一些个人博客wordpress的内容需要用户扫码关注才可以阅读


 
这种体验差的一批。
是什么迷之自信让这些作者对自己写的内容如此敝帚自珍?
看到这样的站点,1s都不想停留,直接关闭了。

 
这种体验差的一批。
是什么迷之自信让这些作者对自己写的内容如此敝帚自珍?
看到这样的站点,1s都不想停留,直接关闭了。

centos/ubuntu linux 下 python matplotlib 绘图中文标题乱码 解决

出现下图的错误:

20220415_688533_上声电子_zdt.png

 测试代码:
import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib import rcParams


plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.sans-serif'] = ['simhei'] # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False

plt.title(r'宋体 Times New Roman')
plt.axis('off')
plt.savefig('usestix.png')
 
每次换机器都遇到这个问题,所以记录下来,以免日后又在折腾
首先找到一个ttf格式的中文字体,windows系统的可以在C盘的system里面找找。
我用的是微软雅黑。msyh.ttf , 需要的可以到公众号里面取。 后台回复: msyh.ttf 即可
或者simhei.ttf
cd /usr/share/fonts/
sudo mkdir chinese
sudo cp simhei.ttf /usr/share/fonts/chinese/
sudo chmod -R 755 /usr/share/fonts/chinese

更新缓存
mkfontscale
mkfontdir
fc-cache


注意,如果你的系统没有上述命令,需要使用yum install mkfontscale mkfontdir c-cache安装
 
然后接下来这一步,很重要。
 
清理缓存,不然不会生效!!!!
rm -rf ~/.cache/matplotlib


 
matplotlib:
同时把这个msyh.ttf的文件复制到matplotlib库下的文件夹:
~python3.9/site-packages/matplotlib/mpl-data/fonts/ttf/ 
下面
 
然后运行程序,搞定~

20220415_688533_上声电子_zdt_(2).png

 
公众号:可转债量化分析

后台回复 : msyh.ttf 或者 simhei.ttf 即可获取字体文件。
继续阅读 »
出现下图的错误:

20220415_688533_上声电子_zdt.png

 测试代码:
import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib import rcParams


plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.sans-serif'] = ['simhei'] # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False

plt.title(r'宋体 Times New Roman')
plt.axis('off')
plt.savefig('usestix.png')
 
每次换机器都遇到这个问题,所以记录下来,以免日后又在折腾
首先找到一个ttf格式的中文字体,windows系统的可以在C盘的system里面找找。
我用的是微软雅黑。msyh.ttf , 需要的可以到公众号里面取。 后台回复: msyh.ttf 即可
或者simhei.ttf
cd /usr/share/fonts/
sudo mkdir chinese
sudo cp simhei.ttf /usr/share/fonts/chinese/
sudo chmod -R 755 /usr/share/fonts/chinese

更新缓存
mkfontscale
mkfontdir
fc-cache


注意,如果你的系统没有上述命令,需要使用yum install mkfontscale mkfontdir c-cache安装
 
然后接下来这一步,很重要。
 
清理缓存,不然不会生效!!!!
rm -rf ~/.cache/matplotlib


 
matplotlib:
同时把这个msyh.ttf的文件复制到matplotlib库下的文件夹:
~python3.9/site-packages/matplotlib/mpl-data/fonts/ttf/ 
下面
 
然后运行程序,搞定~

20220415_688533_上声电子_zdt_(2).png

 
公众号:可转债量化分析

后台回复 : msyh.ttf 或者 simhei.ttf 即可获取字体文件。 收起阅读 »

积分大于200才能够发帖

本站点此前处于不允许用户发言状态。
目前可以允许积分大于200分的用户发言。 
注册给10积分,更新个人资料送200积分。
所以只要更新一下个人资料即可处于发言状态。
 

02ia8kn.jpg

 
本站点此前处于不允许用户发言状态。
目前可以允许积分大于200分的用户发言。 
注册给10积分,更新个人资料送200积分。
所以只要更新一下个人资料即可处于发言状态。
 

02ia8kn.jpg

 

东方证券万一免五开户,已取消流量费,放心使用

之前有报道说东方证券有收取流量费,在同事的争取下,现在流量费已经取消。
 
而原来的费率也不变,股票万一免五,最低0.1元起。(是的,万一免五,没有流量费,没有流量费)
微信图片_20220414135421.jpg

 
PS:
一般流量费是在高频交易里面才会有,主要因为频繁挂单,扯单造成的费率影响。
 
 
开完户后,需要入金1w后,当天即可调免五,第二天可交易。到时会有电话通知调佣成功的。届时注意电话。

有问题可以咨询微信:


 
继续阅读 »
之前有报道说东方证券有收取流量费,在同事的争取下,现在流量费已经取消。
 
而原来的费率也不变,股票万一免五,最低0.1元起。(是的,万一免五,没有流量费,没有流量费)
微信图片_20220414135421.jpg

 
PS:
一般流量费是在高频交易里面才会有,主要因为频繁挂单,扯单造成的费率影响。
 
 
开完户后,需要入金1w后,当天即可调免五,第二天可交易。到时会有电话通知调佣成功的。届时注意电话。

有问题可以咨询微信:


  收起阅读 »