Hey, I’m JoeZhao, a software engineer, and a gamer.
在 hugo 中插入游戏信息卡片
起因:受到 https://immmmm.com/hugo-shortcodes-douban/ 的启发,看了一下也不是特别复杂,简单仿照了一下,获取游戏数据并展示。 目前支持游研社的链接(数据相对比较全,也比较好获取),后续有空的话可能会考虑一下支持一下 Steam 商店 之类的平台。 代码不复杂,直接开源了:gameinfo-api 框架使用的是 expressjs,使用起来并不复杂,直接看文档吧。 顺便撸了一个免费的 Node 服务:https://gameinfo-api2.onrender.com,限制如下: 每月 100G 流量 每月 750 小时的时候时间 超过 15 分钟没有流量的话,服务会被睡眠,睡眠后如果重新收到请求,服务冷启动的时间可能需要 30s 或者更长的时间 如果不嫌弃的话,可以直接使用以上的 URL。 使用方法和案例如下: hugo 的 shortcode 和 CSS 在此:https://gist.github.com/bobolo2ex/7ffd163cc99d7891c8c362b19b632b34 <!-- shortcode --> {{ $dbUrl := "https://gameinfo-api2.onrender.com/" }} {{ $dbID := replaceRE `.*yystv.cn/g/([0-9]+)/.*` "$1" (.Get 0) }} {{ $db := getJSON $dbUrl "yys/v1/" $dbID }} {{ $score := div (int $db.score) 10.0 }} <div class="post-preview game"> <img referrer-policy="no-referrer" loading="lazy" class="post-preview--image" src="{{ $db....
Switch Emulators Guide
Ryujinx 指引 该指南将分为几个部分。您可以使用目录轻松找到您需要的部分。 如果想要更详细的内容,可以直接参考 Ryujinx 的官方文档 here 如果按照本指南进行操作后仍有问题并需要帮助,请加入我们的 Discord 服务器提问. 你可以在这里加入: Discord 下载说明(重要) 您下载的大部分(不是全部)内容都将采用压缩格式 (例如 .7zip, .zip or .rar). 你需要安装解压缩软件才可以使用。例如 7zip 和 WinRAR 目录 一、安装模拟器 二、安装 Keys 和固件(Firmware) Keys Firmware 三、安装游戏、更新以及DLC Loading Games into Ryujinx Loading Updates and DLCs 四、模拟器性能优化 Settings for all GPUs Nvidia GPU settings AMD GPU settings Intel GPU settings 五、安装模组(Mods)、存档(Saves)和着色器(Shaders) Mods Shaders Saves 六、杂项 Fixes for errors 一、安装模拟器 (可选) 你可以在 https://ryujinx....
Read and Parse JSON With Rust
主要讲讲 Rust 是如何处理 JSON 格式/文件的。 我的需求主要如下: 从一个远程地址下载 JSON 文件,保存到本地 读取这个 JSON 文件 对这个 JSON 文件内容进行搜索匹配 返回搜索结果 本文章的内容主要是集中讲讲第 2 步的内容。 首先需要解析 JSON 格式如下: { "0100000011D90000": { "bannerUrl": "https://img.../37fdb...f83a.jpg", "category": [ "Adventure", "RPG" ], "description": "Welcome to the Sinnoh region! ", "developer": null, "id": "0100000011D90000", "isDemo": false, "language": "en", "name": "Pok\u00e9mon\u2122 Brilliant Diamond", "nsuId": 70010000039950, "numberOfPlayers": 1, "publisher": "Nintendo", "rank": 30712, "ratingContent": [ "Mild Cartoon Violence", "Users Interact", "In-Game Purchases" ], "size": 7334789120, "version": 0 }, ....
Rust 基本知识
更多是从一个前端开发者的角度,来比较一下两门语言的区别,以助于更方便的入门。 基本类型(DataType) 多数情况下,基本类型直接代表了最底层的语言实现。 JavaScript 是弱类型,基本数据类型有以下 7 种: String Number BigInt Boolean Symbol ( ECMAScript 2016 新增 ) null undefined Rust 是 静态类型 ( statically typed ) 语言,也就是说在编译时就必须知道所有变量的类型。每一个值都属于某一个 数据类型 ( data type ),这告诉 Rust 它被指定为何种数据,以便明确数据处理方式。基本都属于两类数据类型子集:标量(scalar)和复合(compound)。 Integer (整数类型) 位长度 有符号 无符号 8-bit i8 u8 16-bit i16 u16 32-bit i32 u32 64-bit i64 u64 128-bit i128 u128 arch isize usize 每一个有符号的变体可以储存包含从 $-(2^{n-1})$ 到 $2^{n-1}-1$ 在内的数字,这里 $n$ 是变体使用的位数。所以 i8可以储存从 $-(2^7)$ 到 $2^7-1$ 在内的数字,也就是从 $-128$ 到 $127$ 。无符号的变体可以储存从 $0$ 到 $2^n-1$ 的数字,所以 u8 可以储存从 $0$ 到 $2^8-1$ 的数字,也就是从 $0$ 到 $255$。...
WordPress 如何禁止明文传输用户名密码,防止中间人攻击
虽然全站已经 HTTPS 了,但是因为某些原因,不允许明文传输用户名密码,也就意味着需要在客户端做一层加密,然后在服务端解密。 了解下来只能选择 RSA 的方式了。 准备工作,首先需要生成秘钥: # 生成 1024 位的 RSA 私钥 openssl genrsa -out key.pem 1024 # 导出相对应的公钥 openssl rsa -in key.pem -pubout -out pubkey.pem # 复制出来备用 cat key.pem cat pubkey.pem 打开 wp-login.php 文件,将以下代码补充到 loginform 后面,我是放在 $login_script 后面。 主要是为了捕获登录表单,在 submit 的时候,把 user_login 和 user_pass 各自加密后再发送到服务端。 <script src="https://cdn.jsdelivr.net/npm/jsencrypt@3.2.1/bin/jsencrypt.min.js" type="text/javascript"></script> <script type="text/javascript"> (function($) { var user_pass = $("#user_pass"); var user_login = $("#user_login"); var loginform = $("#loginform"); var sign = '公钥'; var encrypt = new JSEncrypt(); encrypt....
定时检查 unraid 网络情况,并重启
主要是为了解决机器不知道为啥突然掉 ip 的问题,就写了一个简单地监测脚本。 这是一个简单的小技巧,直接使用 unraid CA 的 User Scripts Plugin 即可。 新建一个 Script, 名字简介随便填,Script 内容如下: #!/bin/bash ping fun2ex.com -c 1 >/dev/null if [ $? -ne 0 ];then # powerdown -r echo `date` powerdown restart >> /tmp/powerdown_logs.txt fi 检查时间选手动,按照 cron 的规则添加即可,考虑到阵列关机的时间,我这里设定了 30 分钟检查一次。 # cron setting */30 * * * * –EOF–
解决华擎 Z370M-Pro4 主板在 Unraid 无法获取风扇转速
主板型号:华擎 Z370M-pro4 安装了「Dynamix System Temperature」却发现怎样也获取不了主板的温度和风扇的转速。 经过一番资料搜索,大致确定问题如下: Dynamix System Temperature 非商业应用,实际上能够校验的主板不多 coretemp 不支持 ITE IT8686E Super IO Sensors 华擎的部分主板是 nct6683 感应器,只能通过手动加载 mod 处理 知道了问题,那么解决起来也简单,打开终端手工加载一下驱动即可: $ modprobe coretemp $ modprobe -r nct6683 $ modprobe nct6683 force=1 然后回到 了「Dynamix System Temperature」 看看是不是已经可以正常了。 –EOF– 参考资料: 温度检测插件无法检测到主板风扇的转速 Unraid插件篇—重点解决ITE IT8686E芯片驱动无法获取阵列风扇信息
解决 Unraid 在关机的之后无法 unmout NFS 的问题
先说一下场景: 主机安装了 unraid 6.9.2 开了一个虚拟机跑黑群晖, 并直通了一个网口+两块硬盘 unraid 通过 Unassigned Devices 来挂载黑群晖的硬盘, 使用 NFS 协议 问题: 想更换硬盘的时候, 直接点停止阵列, 等了大半天都没有停止成功。 检查了一下系统日志, 发现一直卡在 Unmounting Remote SMB/NFS Share 不成功, 并且一直在重试。 造成这个问题的原因是因为黑群晖也是跑在 unraid 上面的, 停止阵列的操作会优先把 Docker 和虚拟机服务优先关闭掉, 导致 NFS 链接失去响应无法正常 Unmoun。 搜索了一下发现好多人都碰到过类似的问题:NFS 服务器某些原因断网后, NFS 客户机无法 umount 直到最新的 nfsv4 都是这样子, 所以会造成进程一致卡住在重试。 解决办法有以下两种: 更换成 SAMBA, SMB 无法卸载不影响关机,不会造成假死。 在关机前, 手动在 Unassigned Devices umount 所有已经挂载的 NFS mount, 或者可以打开终端运行 umount -l /mnt/remotes/* 强制卸载所有 NFS umount. 剩下在问题就是如何把方案 2 改成自动化,不需要每次去手工执行,在 unraid forums 看到一个解决方案:...
How to Install Seafile Pro and Use Caddy Proxy Fronted on Ubuntu 18.04
读完这篇文章,你应该能完成安装以下软件: python & python-pip caddy mysql-server jre seafile-pro ``` 注意:如果你想流程的跑 Seafile,机器配置建议: 1. 内存 >= 2GB 2. CPU >= 2 Core 环境准备 以下只针对 ubuntu 18.04 系统,在下一个 LTS 版本出来之前,应该都不会更新。 ...
win10 内网下如何开启远程登录
一开始找到一句这样的命令: wmic /node:[IP OR Domain] /user:[User] /password:[Password] PATH win32_terminalservicesetting WHERE (__Class!="") CALL SetAllowTSConnections 1 一直报错,没想明白是什么原因。 一番搜寻之后大致清楚了,最终的命令如下: wmic /node:[IP OR Domain] /user:[User] /password:[Password] RDTOGGLE WHERE (__Class!="") CALL SetAllowTSConnections 1 查阅资料: https://www.yuque.com/waiting4/fgq227/gfi4v7 https://blog.csdn.net/Aaron_Miller/article/details/109644865