搭建Dplayer-node后端
前言dplayer的后端之前其实早就搭好了,只是最近服务器重启了一下服务掉了再次启动的时候发现启动不起来,所以重新搭建了一下
踩雷由于第一次搭建的时间距离现在比较久远,以至于我都忘记了用的是docker还是node直接启动,照着github上的README用docker部署死活不成功,搞了一个上午,发现很多设置已经过时了,所以用node会更简单
依赖安装redis123456curl -fsSL https://packages.redis.io/gpg sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpgecho "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" sudo tee /etc/apt/sources.list.d/redis.listsudo apt-get updatesudo a ...
搭建Zerotier-Planet服务器
前言网课在家无聊,和朋友联机玩游戏,SakuraFrp老是拉跨所以直接转战zerotier,因为担心zerotier的国外服务器所以把planet部署在了自己的服务器上
Zerotier 是啥
ZeroTier 是一款非常简单易用的内网穿透工具,不需要配置,就能实现虚拟局域网的组建
开始依赖为了部署简单所以开发者使用了docker
[github author=”Jonnyan404” project=”zerotier-planet”][/github]
如果啥也不会1docker run --restart=on-failure:3 -d --name ztncui -e HTTP_PORT=4000 -e HTTP_ALL_INTERFACES=yes -e ZTNCUI_PASSWD=mrdoc.fun -p 4000:4000 keynetworks/ztncui
正常步骤123git clone https://github.com/Jonnyan404/zerotier-planetcd zerotier-planetdocker-com ...
浅用百度人脸检测SDK
前言上信息课的时候提到了百度的人脸检测的SDK并且有个附加作业是要识别图像的性别并用不同颜色的框表示,本来上课一直摸鱼一个字都不听的我当场就不困了,直接开搞
准备安装依赖因为要用百度的SDK所以先安装一下百度的包
1pip intsall baidu-aip
为了画框还要安装pillow
1pip intsall pillow
申请API_KEY进入百度智能云的控制台,在左侧菜单产品服务里找到人脸识别,进入板块后创建应用即可,注意要个人实名认证领取免费额度,不然没额度也没法检测
代码编写库首先需要import一下需要用到的库
1234from turtle import widthfrom aip import AipFaceimport base64from PIL import Image,ImageDraw
图像预处理百度要求以base64传入图片,所以需要对图片进行预处理变为base64编码
12345678filepath = "01.webp" #图片打开方式fp=open(filepath, "rb") #对图片进行base6 ...
Python使用FFmpeg进行视频抽帧
前言最近会了很多新东西,到时候会慢慢全部写下来,先把这个写下来
开始首先是文件选择,这次放弃了上次使用的win32ui因为这次需要把抽出来的帧放到一个文件夹里,所以用python自带的tkinter
1234import tkinter as tkfrom tkinter import filedialogroot=tk.Tk()root.withdraw()
FFmpeg因为涉及视频处理,所以要使用ffmpeg,目前主要有两种通过python使用的方法,第一种是使用anaconda和pip一起安装库和依赖,另一种是下载ffmpeg的发行版通过shell调用,因为第一种太烦这里使用第二种
1import subprocess
首先引入subprocess
subprocess其实可以比喻成一个包壳的命令行,原则上可以在命令行中实现的事情都可以使用subprocess在python中实现,固然可以实现ffmpeg
1subprocess.Popen(ffmpegpath +' -i'+ ' ' + filename+ ' ' ...
使用Python实现csv图像绘制
前言最近有处理csv的需求,于是摸了个这个出来
众所周知Python对于数据可视化性能不是很高,所以这种方法只能处理少量数据,几百条应该没问题
开始文件选择为了易用性加了个文件选择的功能,用到了win32ui库(需要用pip提前安装pypiwin32)
效果像这样
首先import一下这个库
1import win32ui
调用系统窗口
123dlg = win32ui.CreateFileDialog(1)dlg.SetOFNInitialDir('E:/Python') dlg.DoModal()
这时存储文件名,因为后面要用到
1filename = dlg.GetPathName()
读取csv文件Python自带csv处理库,现在只要调用就行
1import csv
读取文件列信息
123with open(filename) as f: reader = csv.reader(f) header_row = next(reader)
这时候加一个print来看一下是否能够正常读取
12for index, col ...
绕过单向历api的referer验证
前言一直想在web上放个单向历,但是单向历的api有referer验证,所以想了个办法绕过
本方法理论上可以绕过各种基本Referer验证
开始单向历的api地址是http://img.owspace.com/Public/uploads/Download/YYYY/MMDD.jpg
首先要解决的问题是日期的变换
考虑到需要日期变换和在服务器上运行,这次选用php
日期变换这个问题在php下很好解决,只需要调用一个date函数就行,并且定义一个变量来存date
1$a = date("Y/md");
合成链接得到了日期的参数就很好解决了
只需要合成一个正确的链接地址即可
同样用php解决
1$txt = "http://img.owspace.com/Public/uploads/Download/$a.jpg";
本来想着到这里把链接传给服务器就足够了,但是尝试后发现api有referer验证,查了几种常用的绕referer方法后还是觉得直接用服务器访问读取信息最简单
抓取信息既然选择了这种方法就需要用php显示图片了
1header( ...
美化uptime-status
起因最近云盘总是崩溃所以打算加个uptimerobot监视一下
魔改正好solstice23大佬也用uptimerobot监控,所以照着他的页面样式写了一个,js代码太长不好贴,只贴几个css主要修改的地方
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475#header { background-image:url(https://pic.zzzhxxx.top/2021/07/06/bf1a8b8dbcc9e.JPG!compress); background-size:100% 100%; background-size:cover; background-repeat:no-repeat; background-attachment:fixed; height:60vh}#uptime .loa ...
修改AB_Bangumi的css使其与Argon主题风格大致保持一致
题外话挺久没摸了,博客的系统从Wordpress到Typecho反复横跳,最终还是用回了Wordpress,趁着最近有时间把博客重新整修了一番
前言由于Argon不自带追番功能,在Argon底层新写一个function又太麻烦,主题更新了还要重新写,于是在网上深度调研锁定了梓喵大佬写的wordpress追番插件
准备加了大佬的qq群后拿到了插件,但是插件的风格是这样子的
与Argon的圆角风实属违和,我用Argon就是为了他的圆角设计,所以开始修改插件的css文件
开始修改导航栏样式插件原生的导航栏带圆角,基本符合我的需求,但是文字始终是黑色而且鼠标悬停是也没有阴影的淡入,所以这是针对导航栏着重修改的点
打开css文件夹,修改里面的css文件
找到第226行中
1234567891011121314151617181920212223#zm_ab_bangumi_nav li { display: inline-block; color: #666; padding: 10px; border-radius: 3px; border:1px s ...
Kruskal算法
存图
邻接矩阵
邻接表
邻接矩阵更适用于完全图
邻接表1.前向星
12345678910111213struct edge{ int u; int v; int w;}e[MAXN];for(int i=0;i<n;i++){ cin>>u>>v>>w; e[i].u=u; e[i].v=v; e[i].w=w;}
2.链式前向星
F1:
1234567891011121314151617181920212223int u,v,w;int head[V/*V是点数*/],cnt,E;//可能无向图要x2struct edge{ int u,v,w,nxt;}e[100];void add_edge(int u,int v,int w){ e[++cnt].v=v; e[cnt].w=w; e[cnt].nxt=head[u]; head[u]=cnt;}int main(){ cin> ...
CSP-J1 (NOIP普及组)近十年初赛考点整理
CSP-J1 (NOIP普及组)近十年初赛考点整理进制1.十进制小数125.125对应的8进制数是()NOIP 2009 普及组初赛 A. 100.1 B. 175.175 C. 175.1 D. 100.175
解析:B
$ 1758 = 1 \times 8^2 + 7 \times 8 + 5 = 125 0.18 = \frac{1}{8} = 0.125 $ 所以,$ 175.18 = 125.125 $
2.一个字长为8位的整数的补码是11111001,则它的原码是( )。NOIP 2010 普及组初赛
A. 00000111 B. 01111001 C. 11111001 D. 10000111
解析:D
正数的原码、反码、补码都一样。 负数的补码为原码取反加$1$,原码为补码减$1$取反(注意最高位的$1$是符号位,不用取反)。
3.在二进制下,1011001 + ( ) = 1100110。NOIP 2011 普及组初赛
A. 1011 B. 1101 C. 1010 D. 1111
解析:B
相加即可,超过 ...









