爱影CMS安装教程

爱影 CMS 是市面上不多见的 GO 语言实现的 CMS 软件。虽然免费但是没有开源,考虑官方已经一个多月没有更新,且官方社区、电报群、在线客服都处于失联状态,很有可能要干不下去。所以先把官方安装教程、相关资源做个备份。

Ubuntu 安装脚本

官方提供了一键安装脚本,很方便。

1
sudo rm -f iycms.sh; sudo wget --no-check-certificate -c -O iycms.sh https://www.iycms.com/api/static/down/linux/ubuntu/install_x86_64.sh;sudo chmod +x iycms.sh;sudo ./iycms.sh

install_x86_64.sh 文件内容:

阅读更多

阿里云企业邮箱免费版

实测发现阿里云的免费企业邮箱有坑。对同一邮箱发送邮件的时间间隔有限制,且不短于10分钟,完全不能用。我已经换到网易的免费企业邮箱了。

每个阿里云账号可以注册一个免费企业邮箱,但是阿里云把链接给藏起来了。

链接:https://common-buy.aliyun.com/?userCode=r3yteowb?spm=a2c6h.12873639.article-detail.8.85464bf1rfX5sH&commodityCode=alimail&specCode=lx_18482&request=%7B%22ord_time%22:%223:Year%22,%22account_num%22:%225%22%7D#/buy

零元购后按阿里云文档设置相关的 dns 解析字段,注意区分域名是在阿里云注册的还是其它服务商。

阿里云会自动创建一个 postmaster@mydomain.com 的邮箱账号,这个就是管理员账号。

用管理员账号访问 https://qiye.aliyun.com/admin/#/home 进入后台管理页面。几个常用的设置:

阅读更多

爱影CMS常用数据库表注释

在管理后台删除已经采集过的资源站时,爱影 CMS 不会扫描数据库把对应的采集纪录删掉,这时候就需要自己维护数据库,备注下这过程涉及的表。

collection

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
create table collection
(
id bigint auto_increment
primary key,
name varchar(191) default '' not null comment '名称',
data_method bigint default 1 not null comment '数据类型:1JSON 2XML',
data_type bigint default 1 not null comment '数据类型:1视频 2影人',
address varchar(191) default '' not null comment '地址',
param varchar(191) default '' not null comment '参数',
`desc` text null comment '说明',
charging_mode bigint default 1 not null comment '收费模式 1免费 2vip免费 3金币点播',
data_handle bigint default 1 not null comment '数据操作 1新增+更新 2新增 3更新',
log_id bigint default 0 not null comment '请求日志id',
sr_id bigint default 0 null comment '超管平台资源id',
status bigint default 1 null comment 'COMMENT',
create_at bigint not null,
update_at bigint not null,
match_player tinyint(1) null comment '是否匹配资源播放器',
use_parse int default 0 not null comment '是否启用解析,1-是,2-否',
parse_address varchar(191) default '' not null comment '解析地址,视频播放地址',
tags text null comment '来源',
color text null,
bold int default 0 not null,
sort int default 99 not null
)
collate = utf8mb4_unicode_ci;
阅读更多

各大影视资源站速度测试

时间: 22:30-24:00
地点: 广州
宽带: 电信 1000M

主要测试两个方面:

  • 资源站 cdn 节点的地理位置。同等条件下肯定是国内节点的延迟更低、稳定性更好
  • 高峰时段下的资源下载速度。可以综合考量 cdn 节点出口带宽紧张和下行网络拥堵的叠加影响

快车

对外域名弄了挺多 v1.zz-bosch.com - v12.zz-bosch.com,但实际大概只有 3 个 cdn 节点:156.238.192.114、156.238.194.211、156.238.194.50,都在德国。快车的表现最差,几乎不可用。

100s 传输 5.8MB,约 59KBPS。

阅读更多

一种低成本视频直播(轮播)解决方案

0. 概述

影视剧的直播,有其特殊性:

  1. 直播内容是“静态的”。直播源通常是预制的视频文件,而非实时通过摄像头采集的数据。
  2. 没有主播,所以也就没有主播和观众的互动需求。所以对延时(主播和观众的时间差)要求不高,只要保证所有观众端具有差不多的播放进度即可。

所以相比摄像头开播的直播,影视剧直播的技术方案有可简化的余地:

  1. 把视频文件预先转换成目标格式,避免推流过程中的编解码(当然这里只考虑为观众提供原始码率,不需要转码的情况)。
  2. 把视频文件切割成多个时间长度为几秒钟的小视频文件,依次轮播。当新用户进入时,使其从当前序号的视频文件播放即可——同其它观众的时间差不超过此文件的时长。
阅读更多

使 Sanic 后端支持 CORS

1. 源端消除 Preflight

Preflight(预检请求)是指在跨源发出用户请求前,预先发出一个 OPTIONS 请求,查询服务端是否允许从此源站的请求。

Restful 规范是“罪魁祸首”。因为跨域 fetch 时,application/json 类型的 Content-Type 必然会触发 Preflight。

只有满足简单请求fetch,才不会触发 Preflight:

阅读更多

玩会吧微服务改造

1. 基于 redis 实现 RPC 开发框架

市面上没有基于 redis 实现的 Python 异步 RPC 框架。
干脆自己写了一个最简版的。

1.1 客户端

连接 redis 服务器:

1
2
async def connect(self):
self.redis = await redis.from_url(self.url)
阅读更多

短视频网站优化及 Cloudflare 初体验笔记

1. 首页加载速度优化。

弃用 https://github.com/naver/egjs-infinitegrid,改用 css 原生的 columns 实现瀑布流。

这个 infinitegrid 乍一用还挺不错的,瀑布流布局、无限加载,完全符合我的需求。但是它的默认行为是阻塞式的,即在所有项(我的是图片)加载完成后再一次性渲染。虽然其文档上有提到异步加载方式,我简单尝试了下,没成功。

columns 默认会打断(break)元素。比如我的元素是这样的:

1
2
3
4
<div class="container">
<div class="top"></div>
<div class="bottom"></div>
</div>
阅读更多

React 笔记— Hooks

本文基于官方 v18.1.0 文档。

Introducing Hooks

They let you use state and other React features without writing a class.

Motivation

It’s hard to reuse stateful logic between components

现在可以通过自定义 Hook 提取封装带状态的逻辑。

Complex components become hard to understand

useEffect 可以把复杂逻辑分拆到多个小的函数中。

Classes confuse both people and machines

阅读更多

React 笔记—高级指引

本文基于官方 v18.1.0 文档。

Code-Splitting

Code Splitting

You need to keep an eye on the code you are including in your bundle so that you don’t accidentally make it so large that your app takes a long time to load.

Code-Splitting is a feature supported by bundlers like Webpack, Rollup and Browserify (via factor-bundle) which can create multiple bundles that can be dynamically loaded at runtime.

Code-splitting your app can help you “lazy-load” just the things that are currently needed by the user, which can dramatically improve the performance of your app.

阅读更多