# 思路 记录访问服务器的 IP,当一定时间段内访问次数或错误次数超过一定限度时,将请求直接返回 403 不经过逻辑代码 # 代码 # 解释 由于服务器使用了 nginx,常规获取 IP 的方法将只能获取到 localhost,后续章节讲如何配置 将请求的 IP 与请求时间存在数组中,每次请求时统计数组中的该 IP 在一秒钟内、一分钟内、一小时内的请求数量,如果有超过限额的 IP 就将此 IP 放置于黑名单中,再次碰到此 IP 将直接返回 403 而不经过逻辑代码 写法并不完善,对于每个请求都将开启一个线程用于定时将 IP 从数组中移除,对于大型网站而言可能会造成性能损失与负载增加。想要改进可...

# 这是什么 ImageSharp 为 C# 第三方绘图库,在.net core 时代开创了跨平台之后,gdi + 作为仅能在 Windows 平台使用的绘图库,失去了广泛性,为了跨平台,绘图需要使用一个第三库。 # 特性 跨平台 能够读取绘制大部分图片格式 暂不支持 Webp 的动图格式 相较于 GDI + 而言,占用内存更多、绘制速度更慢 特殊字符绘制会出现问题,需要独立处理特殊 Unicode 或者 Emoji 字符 提供自动换行的文本绘制方法 # 代码示例 # 新建空白画布 # 从文件读取图片 # 使用 rgb 新建颜色 # 使用 16 进制文本创建颜色 # 变更图片大小、裁剪 # 定...

# 说在前面 逻辑抄自 B 站弹幕姬 - Github # 封包组成 (协议版本 1) # 操作码(OPCode) # 封包(Pack) 封包均为大端顺序。 代码示例 (C#) IPAddress.HostToNetworkOrder() 用于转换大小端 # 解包(Unpack) 代码示例 (C#) 其中, RawDanmaku 为自定义类 # 拉取连接配置 拉取 json https://api.live.bilibili.com/room/v1/Danmu/getConf?room_id={需要拉取的房间号} 从 host_server_list 中任取一个,拼接字符串...

# 准备工具 ROM https://xiaomirom.com/ 秋之盒 payload_dumper # 流程 下载 ROM 解压 ROM,获取 payload.bin 打开 payload_dumper 文件夹,将上一步的文件放入 payload_input 文件夹 启动 payload_dumper.exe , 得到 boot.img 将文件传进设备,并使用面具 app 修补,再传回电脑 打开秋之盒连接设备,进入 fastboot , 单击 刷入Boot.img , 之后点击上方的 重启到系统 即可 打开手机上的面具 app, 点击 安装-直接安装 即可

# 相关资源 getUserMedia API 参考 getDisplayMedia API 参考 # 本篇内容 获取摄像头画面以及捕获桌面视频 # 说在前面 getUserMedia函数 是获取音视频流的方法,能指定设备获取音视频流以及限制只有视频或只有音频 getDisplayMedia函数 用于捕获用户桌面视频流,能指定整个显示器或者是限制某个窗口,单纯依靠浏览器是没办法获取到电脑正在播放的音频,而 Electron 上有捕获音视频的其他方案 # 约束 约束指上面提到的两个函数的参数,能够设置获取视频或音频的各种设置,常用的参数如下: 以上参数均可不写,单纯使用 { audio...

# 说在前面 本文涉及 WebRTC 最基础的部分,最终实现直播的类似效果。预计后面会和 Electron 系列文章合并。 # 相关资源 MDN 上的 WebRTC html5rocks 上的 WebRTC 信令服务器 coturn 服务器 SocketIO # 本篇内容 展示 WebRTC 的连接过程、搭建信令服务器、编译 coturn 服务器 # 关于 WebRTC WebRTC 是谷歌推出的一项十分复杂的音视频项目,包含了网络通信、音视频处理、STUN/TURN 技术等。尽管内核技术很多,但是给出的 API 相当丰富且实用。 WebRTC 最大的特点在于只依靠浏览器就可实现通信,且由于基...

# 说在前面 Electron 是一种使用编写网页的技术作为桌面端程序的一项技术,可以理解为使用网页作为界面的应用程序。优点在于跨平台 ( Windows 、 Linux 、 MacOS )、能够使用现代的网页前端技术、简单美观的网页样式。但是其最终编译结果文件尺寸较大,即使是只有一个空网页最终整个包也有 180MB+。系列文章将以 Vue2 作为框架以 Vuetify 作为前端主题 # 相关资源 Electron 中文文档 cnpm node.js 中文文档 Vuetify # 新建项目 # 安装 node.js node.js 下载网址 一路按 next 就好 验证是否安装成功可以打开任意...

# 问题描述 需要绘制文本,字体 字号均需要自定义,限定矩形区域绘制,也就是说需要有自动换行,而且前两段文本需要不同颜色 # 实现思路 单独对每个字符进行手动绘制,循环文本列表,手动维护当前绘制坐标。由于是手动绘制每个字符,所以每个字符的颜色和大小都可进行控制。 自动换行也同理,检测 当前坐标的 X + 字符宽度 是否大于某个值. # 代码 上述代码对两段文本进行了绘制,前一段是黑色,后一段是红色。并且自定义了字符间距以及行间距,对空格以及换行符进行了特殊的处理,空格直接当做一个汉字处理,换行符则是直接触发一次换行坐标变换. # 测试效果还行的参数 # 最终效果

# 相关资源 CefSharp 官方仓库 穿越 AppDomain 添加 AnyCPU 支持 # 自定义依赖路径 Lib 文件夹为编译后,在程序本体生成的这些散乱文件,把这些全都复制到一个集中的地方 # 跨 AppDomain CefSharp 限制必须在默认 AppDomain ( DefaultAppDomain ) 内初始化以及调用,而由于 OPQBot-Native 使用了 AppDomain隔离 ,导致插件无法正常工作,需要做以下工作找到默认 AppDomain # 新建类库项目 为透明代理创建一个单独的项目 # 加入 Interop.mscoree 的引用 不知道为什么,这个依赖在...

# 情景 某一天想写个博客,但是发现博客后台打不开了,登录进去只有一个白屏,而且使用 F12 捕获到一个这个错误 net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 。 # 尝试过的方法 当时拿着这个报错四处搜索,百度也找了谷歌也找了,都在说是 nginx 的缓存的问题。于是我尝试了增大 nginx 的缓存,可问题依旧没有解决。对着打不开的后台也没办法,想直接把博客重装,可是又怕丢失文章,于是只能继续找方法。 # 禁用所有插件 在 WordPress 官网提到了一个禁用插件的方法,可恶当时为什么没想着从插件下手呢。网站 使用数据库管理工具连接数据库 打开 Word...