FastChen | 快辰

以平常之心,做非凡之事。

0%

这篇文章推荐的音乐是《Louder - CVBZ

前言

可能是年纪大了,很多东西都记不住了。

主机名

查看当前主机名

1
2
3
hostname
# 或
hostnamectl

设置主机名

1
hostnamectl set-hostname 新名字

临时修改主机名

1
hostname 新名字

Swap分区

1.查看当前状态

使用 free -h 查看当前情况

1
2
3
4
[email protected]:~# free -h
total used free shared buff/cache available
Mem: 3.8Gi 653Mi 2.9Gi 1.0Mi 320Mi 2.9Gi
Swap: 974Mi 0B 974Mi

如果存在Swap先查看位置

1
cat /proc/swaps

Swap有时不一定叫swap,或许叫 /dev/sdb5

2.关闭并删除之前的Swap分区

1
2
sudo swapoff 分区名字
sudo rm 分区名字

3.创建新的Swap分区

创建一个4096大小的分区

1
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096

挂载(启用)Swap分区

1
sudo mkswap /swapfile

4.设置开机自动挂载

1
sudo vim /etc/fstab

添加

1
/swapfile swap swap defaults 0 0

额外内容

设置Swappiness (通常不需要设置)

swappiness的作用是用于设置将页面从物理内存交换到交换空间以及从页面缓存中删除页面之间的平衡。

查看当前值

1
cat /proc/sys/vm/swappiness

修改swappiness

1
2
3
4
# 直接设置
sysctl vm.swappiness=0-100
# 返回
vm.swappiness=设置的值

或者手动修改

1
2
3
4
# vim修改配置
vim /etc/sysctl.conf
# 设置属性值
vm.swappiness=0-100

激活设置

1
sysctl -p

允许远程SSH登录Root账户

1.进入SSH配置

1
vim /etc/ssh/sshd_config

2.添加(修改)配置项

1
PermitRootLogin yes

3.重启SSH服务

1
/etc/init.d/ssh restart

在这之前

一边听歌一边看,滋味很棒的哟。《Old Friends

什么?你说你不想听?…… 好吧。。。

我为什么要做这个?

开始。

我从最开始一直都是游玩的官服,起初并不知道原神还有其它渠道服。主要是当时闹的很凶的一件事就是miHoYo不开放渠道服了,不过我一般干什么都会选官方,自然也没去多了解。

契机。

随着原神1周年开始游戏的热度不断上升,市面上开始出现各种第三方作品,大地图、祈愿记录软件、数值显示等。
所以我也没有闲着,和群友吹水为了防止吹破,开始对原神进行抓包。希望自己吹出去的 🐂🍺 不会漏。好孩子不要学。

实验。

经历了十几分钟的抓包和分析,初步固定了官方数据接口和结构,开始向着吹出去的水进行一步一步的完善。
经过一天的优化迭代,第一个线上版本祈愿记录分析 —— 《派蒙工具箱》(老名字),上线了。

更新。

随着第一个版本公开上线到现在(2021-05-01)的持续更新中,名字从 《派蒙工具箱》 变成了 《万能派蒙》,从单纯的线上工具添加了本地辅助软件

《提瓦特之匙》

这个软件的出现,彻底改变了双服玩家的痛苦 —— 下载两个客户端 或 每次去手动修改文件。

起初的第一个版本需要在软件内设置好后,切换到指定服务器,在通过软件启动游戏。

它,依旧繁琐。

所以,在第二个版本,我添加了不需要打开软件,即可切换服务器的功能。
这无疑是减少了大量的不必要操作,从最开始的 打开软件,切换,启动启动器,然后启动器再启动游戏。
现在变成了就和直接双击原神的桌面快捷方式一样简单。

当然。我叫它《提瓦特之匙》—— The Key of Teyvat 参考了《所罗门的钥匙》(The Key of Solomon) 至于为什么叫这个。因为它打开了对应服务器的大门。就这么简单。

通过开发,我得到了什么?

官方一点的发言,就是我得到了经验。

其实,我并没有得到任何东西。因为我开发这款软件并不需求回报,这也是我开发软件的最初理念。

我不喜欢它的界面。太老了。

每个人的审美都是主观的(我认为的。),即便是我设计的再漂亮、华丽,依旧会有人不喜欢。我无法让每个人都喜欢,也无人能做到这点。而我,只需要我喜欢就好。

当然,如果你觉得它不够漂亮。这款工具我开源了,欢迎随意加工它的界面。但请您遵守 LICENSE 进行发布。Github - FastChen/The-Key-of-Teyvat

同时,我的疑问。

一个非必要展示界面的工具,为什么一定要给用户展示它的界面?同时我也可以不用去花费心思设计它的UI。

如何使用?

1.获取&下载软件

目前、以及以后,都只在我的群进行更新与提供下载。 关于为什么,请查看 什么?你也需要这款软件。

the-key-of-teyvat_1

2.运行并阅读说明

软件通常以 [软件版本号][受支持的原神版本] 提瓦特之匙.exe 进行命名

the-key-of-teyvat_2

双击打开后,弹出使用前须知,建议至少一次以上的详细阅读。

the-key-of-teyvat_3

同意须知后,点击确定进入软件主界面,不同意则点取消按钮。

the-key-of-teyvat_4

3.获取切换服务器所需配置内容。

3.1 如何查找游戏 启动器目录 地址

  1. 找到你的游戏图标,通常在桌面上有一个快捷方式。(没有?那你是怎么打开游戏的?)
  2. 右键图标在弹出的菜单选择属性
  3. 在弹出的属性窗口里,目标里的就是启动器目录文件

the-key-of-teyvat_5the-key-of-teyvat_6

3.2 如何查找 游戏目录 地址

  1. 打开游戏启动器
  2. 点击右上角的齿轮⚙图标
  3. 在新打开的窗口点击左侧的游戏资源
  4. 当前游戏安装路径则为游戏目录地址了

the-key-of-teyvat_7
the-key-of-teyvat_8

4.配置提瓦特之匙并切换服务器

  1. 启动器目录 中选择 步骤 3.1 获取的 启动器目录 地址
  2. 在 *游戏目录 中选择 步骤 3.2 获取的 游戏目录 地址
  3. 选择要切换的服务器,然后点击 切换服务器 按钮
  4. 手动启动游戏或点击**[推荐]启动器启动**

the-key-of-teyvat_9

5.生成快捷切换

这个功能是在你配置好软件后才能使用的。

  1. 选择一个服务器(不需要是当前切换的。)
  2. 点击 生成当前选择服务器快捷启动方式
  3. 桌面上就多了一个对应的快捷方式,以后登录游戏用它就行了。

the-key-of-teyvat_11

the-key-of-teyvat_10

6.一些错误处理

6.1 操作已被用户取消

出现这个问题通常是你开启了 用户控制 功能询问你是否给权限继续,但是你点了否。就这样。

the-key-of-teyvat_qa_1

6.2 切换服务器时弹出“对路径拒绝访问”

以管理员运行软件再次修改即可

如何管理员运行?
右键软件 → 弹出菜单选择[以管理员身份运行]

如何默认以管理员身份运行?
右键软件 → 属性 → 兼容性 → √以管理员身份运行此软件

6.3 登陆出现数据异常,错误码31-4302

如果你在游戏目录里放入了非游戏的其它文件,那么就会出现此问题,尝试移除文件后再登陆尝试。

最后

什么?你也需要这款软件。

为了防止各位旅行者下载到第三方修改、捆绑、恶意的软件,我现在只会在我的群里进行更新与发布了。

你可以在这里下载到。

同时也非常欢迎在群里吹水,但一定要遵守群规发言。

陈年旧事。

在这里你可以看见这个项目的起源和更新记录。[原神] [支持2.1版本] 万能派蒙 & 提瓦特之匙

看到这里,音乐也差不多结束了吧。暂时就到这里吧。有缘再聚。

API

接触MC启动器开发的应该都知道官方是提供一系列API的,其中就包括一个版本列表,我们就是通过这个版本列表来实现检测更新的
API地址

1
https://launchermeta.mojang.com/mc/game/version_manifest.json

访问之后可以看见这里发布的版本都会在这里列出,包括快照,正式版

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
"latest": {
"release": "1.15.2",
"snapshot": "20w20a"
},
"versions": [
{
"id": "20w20a",
"type": "snapshot",
"url": "https://launchermeta.mojang.com/v1/packages/647210e26814933d29be51af2e3e0bb99ea3f4f3/20w20a.json",
"time": "2020-05-13T15:15:58+00:00",
"releaseTime": "2020-05-13T15:11:43+00:00"
},
{
"id": "20w19a",
"type": "snapshot",
"url": "https://launchermeta.mojang.com/v1/packages/e14d3652b363bf64b6b2cc7a2aee6cc0504fa4ba/20w19a.json",
"time": "2020-05-13T14:07:31+00:00",
"releaseTime": "2020-05-06T16:23:24+00:00"
}//省略一堆
]
}

实现

我们可以看到官方在头部就列出了正式版和快照版的最新版本,这也方便了我们对其进行对比监控
我直接将 latest.releaselatest.snapshot 两个内容通过文件保存下来用作判断
然后设置一个周期,定时请求 API 然后解析 Json 将 key versions 下第一条信息,也就是 versions[0].XXX
通过 versions[0].type 获取最新的类型 然后对比 本地存储 latest.typeversions[0].id 的内容来实现判断更新推送

成品体验

[灵工艺] Minecraft 更新推送 酷Q论坛下载
如果你没有酷Q账号可以加入灵工艺用户群,群文件下载

前言

今天无聊,写了一个灵工艺Minecraft皮肤获取器,抓了几个API和找了一个MinecraftAPI — Crafatar

目前已将代码开源 发布地址 | Github开源

API调用

Mojang(官方) API

我们使用 Jeb_(首席创意设计师) 为例
软件提供了两种方式的获取皮肤,但是都需要首先经过MojangAPI从用户名获取UUID

1
2
3
https://api.mojang.com/users/profiles/minecraft/{USERNAME}
拼接URL:
https://api.mojang.com/users/profiles/minecraft/Jeb_

返回JSON

1
2
3
4
{
"name": "jeb_",
"id": "853c80ef3c3749fdaa49938b674adae6"
}

id就是获取到的UUID后面就可以用于查询皮肤信息。

1
2
3
https://sessionserver.mojang.com/session/minecraft/profile/{UUID}
拼接URL:
https://sessionserver.mojang.com/session/minecraft/profile/853c80ef3c3749fdaa49938b674adae6

然后就会返回一个JSON串,里面的皮肤JSON数据是base64进行存储的。

1
2
3
4
5
6
7
8
9
10
11
{
"id": "853c80ef3c3749fdaa49938b674adae6",
"name": "jeb_",
"properties": [
{
"name": "textures",
"value": "ewogICJ0ZXh0dXJlcyIgOiB7CiAgICAiQ0FQRSIgOiB7CiAgICAgICJpZCIgOiAiMDdjYjY1YWJhZjVlNGE2ZTg1NTA0NzdmZjZkNjczYzkiLAogICAgICAidHlwZSIgOiAiQ0FQRSIsCiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTc4NmZlOTliZTM3N2RmYjY4NTg4NTlmOTI2YzRkYmM5OTU3NTFlOTFjZWUzNzM0NjhjNWZiZjQ4NjVlNzE1MSIsCiAgICAgICJwcm9maWxlSWQiIDogIjg1M2M4MGVmM2MzNzQ5ZmRhYTQ5OTM4YjY3NGFkYWU2IiwKICAgICAgInRleHR1cmVJZCIgOiAiNTc4NmZlOTliZTM3N2RmYjY4NTg4NTlmOTI2YzRkYmM5OTU3NTFlOTFjZWUzNzM0NjhjNWZiZjQ4NjVlNzE1MSIKICAgIH0sCiAgICAiU0tJTiIgOiB7CiAgICAgICJpZCIgOiAiNWIyNzkzYjc4MjJkNDFhNmJkMjgxZGMwYmZhNmM3YWEiLAogICAgICAidHlwZSIgOiAiU0tJTiIsCiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvN2ZkOWJhNDJhN2M4MWVlZWEyMmYxNTI0MjcxYWU4NWE4ZTA0NWNlMGFmNWE2YWUxNmM2NDA2YWU5MTdlNjhiNSIsCiAgICAgICJwcm9maWxlSWQiIDogIjg1M2M4MGVmM2MzNzQ5ZmRhYTQ5OTM4YjY3NGFkYWU2IiwKICAgICAgInRleHR1cmVJZCIgOiAiN2ZkOWJhNDJhN2M4MWVlZWEyMmYxNTI0MjcxYWU4NWE4ZTA0NWNlMGFmNWE2YWUxNmM2NDA2YWU5MTdlNjhiNSIKICAgIH0KICB9LAogICJza2luIiA6IHsKICAgICJpZCIgOiAiNWIyNzkzYjc4MjJkNDFhNmJkMjgxZGMwYmZhNmM3YWEiLAogICAgInR5cGUiIDogIlNLSU4iLAogICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS83ZmQ5YmE0MmE3YzgxZWVlYTIyZjE1MjQyNzFhZTg1YThlMDQ1Y2UwYWY1YTZhZTE2YzY0MDZhZTkxN2U2OGI1IiwKICAgICJwcm9maWxlSWQiIDogIjg1M2M4MGVmM2MzNzQ5ZmRhYTQ5OTM4YjY3NGFkYWU2IiwKICAgICJ0ZXh0dXJlSWQiIDogIjdmZDliYTQyYTdjODFlZWVhMjJmMTUyNDI3MWFlODVhOGUwNDVjZTBhZjVhNmFlMTZjNjQwNmFlOTE3ZTY4YjUiCiAgfSwKICAiY2FwZSIgOiB7CiAgICAiaWQiIDogIjA3Y2I2NWFiYWY1ZTRhNmU4NTUwNDc3ZmY2ZDY3M2M5IiwKICAgICJ0eXBlIiA6ICJDQVBFIiwKICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTc4NmZlOTliZTM3N2RmYjY4NTg4NTlmOTI2YzRkYmM5OTU3NTFlOTFjZWUzNzM0NjhjNWZiZjQ4NjVlNzE1MSIsCiAgICAicHJvZmlsZUlkIiA6ICI4NTNjODBlZjNjMzc0OWZkYWE0OTkzOGI2NzRhZGFlNiIsCiAgICAidGV4dHVyZUlkIiA6ICI1Nzg2ZmU5OWJlMzc3ZGZiNjg1ODg1OWY5MjZjNGRiYzk5NTc1MWU5MWNlZTM3MzQ2OGM1ZmJmNDg2NWU3MTUxIgogIH0KfQ==",
"signature": "n7rvOU6Tg46VVyvnuZoEIDjqFyKbaSHHVAI/+48LRzMZyLZ7O8bi04BtT+5xaaKfmrZfQQN6h4VxskTOG38tMfKRsqXTSTiCjMz2SUPJNqrjznbNrj6jQn2v0rULfXqY1MvyP5H8Dlf7z5RRdWrg9E+IS0PtqCAz7DjrX1JPCVi/ErWGnlKpcOvdHs8LQPYmCJYUcQd2yUPdeBcKlG5RB3kN0FnOCFiEGM3Og7rAJhlRXc2raj94SrU2d8XX6eyHVDQ/CbKGpXb3TtgtNiqYte0E7ltJzm9cWhSef5dcqzLkseUzzGT+LHW1rcjOXxVSnEt7KJgAkucXB928TAFhpsDRxNzfB9y+CyZEUAryQGTvkFrMB4iEcBvjM4uekHZXtJJFl9JrTYU0w+jtdvVQKmUNhRT5IBc/s9GbGV7VHUj7HS3qW1LMi/tBTJQQ/K8ffclNwz40bUaLuto/QZBydfr3c2sYlruylEEz/5oS0akcLGRwae4Q5DCs/LE5mjD+6cQCXu/bPhIw7bjepRDagfJXom2DVI4fy0iaiYNwY/1nPip7FnTntIv1Zir77j4Etq85bEwv6vEOvYp9SWrCd1wDV8KSZRLSJp6cy6ppjGfR/Fh9pdtYbMY6HEOe99XTi866H3qS/Qg4LIlIrfhEe3t9wC8sex9b8vnxEpdRjsA="
}
]
}

现在你需要使用BASE64解码properties下的value就能获取到皮肤信息。
(可以用这个在线工具解码调试BASE64加密解密)

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
27
28
29
30
31
32
33
解密后:
{
"textures" : {
"CAPE" : {
"id" : "07cb65abaf5e4a6e8550477ff6d673c9",
"type" : "CAPE",
"url" : "http://textures.minecraft.net/texture/5786fe99be377dfb6858859f926c4dbc995751e91cee373468c5fbf4865e7151",
"profileId" : "853c80ef3c3749fdaa49938b674adae6",
"textureId" : "5786fe99be377dfb6858859f926c4dbc995751e91cee373468c5fbf4865e7151"
},
"SKIN" : {
"id" : "5b2793b7822d41a6bd281dc0bfa6c7aa",
"type" : "SKIN",
"url" : "http://textures.minecraft.net/texture/7fd9ba42a7c81eeea22f1524271ae85a8e045ce0af5a6ae16c6406ae917e68b5",
"profileId" : "853c80ef3c3749fdaa49938b674adae6",
"textureId" : "7fd9ba42a7c81eeea22f1524271ae85a8e045ce0af5a6ae16c6406ae917e68b5"
}
},
"skin" : {
"id" : "5b2793b7822d41a6bd281dc0bfa6c7aa",
"type" : "SKIN",
"url" : "http://textures.minecraft.net/texture/7fd9ba42a7c81eeea22f1524271ae85a8e045ce0af5a6ae16c6406ae917e68b5",
"profileId" : "853c80ef3c3749fdaa49938b674adae6",
"textureId" : "7fd9ba42a7c81eeea22f1524271ae85a8e045ce0af5a6ae16c6406ae917e68b5"
},
"cape" : {
"id" : "07cb65abaf5e4a6e8550477ff6d673c9",
"type" : "CAPE",
"url" : "http://textures.minecraft.net/texture/5786fe99be377dfb6858859f926c4dbc995751e91cee373468c5fbf4865e7151",
"profileId" : "853c80ef3c3749fdaa49938b674adae6",
"textureId" : "5786fe99be377dfb6858859f926c4dbc995751e91cee373468c5fbf4865e7151"
}
}

拥有披风的同时也会返回披风数据 皮肤数据是skin,cape是披风。然后就可以根据自己需求使用了。

Crafatar(第三方) API

如果你嫌官方的麻烦,可以用第三方API,当然稳定性跟随第三方开发者而定。

虽然是使用第三方,但是你还得通过MojangAPI先获取UUID

1
https://api.mojang.com/users/profiles/minecraft/Jeb_

返回JSON

1
2
3
4
{
"name": "jeb_",
"id": "853c80ef3c3749fdaa49938b674adae6"
}

当你有了UUID那么就非常简单了,它直接使用对应的URL+UUID即可返回对应的数据.

例如

头像

头像

1
2
3
https://crafatar.com/avatars/853c80ef3c3749fdaa49938b674adae6
可以使用 ?size=数值 来控制图片大小
https://crafatar.com/avatars/853c80ef3c3749fdaa49938b674adae6?size=64

头颅

头颅

1
https://crafatar.com/renders/head/853c80ef3c3749fdaa49938b674adae6

整个身体

整个身体

1
https://crafatar.com/renders/body/853c80ef3c3749fdaa49938b674adae6

皮肤与披风

皮肤披风

1
2
皮肤 https://crafatar.com/skins/853c80ef3c3749fdaa49938b674adae6
披风 https://crafatar.com/capes/853c80ef3c3749fdaa49938b674adae6?default=853c80ef3c3749fdaa49938b674adae6

大致就是这样。

前言

记录一下安装Flarum的流程和中文优化,包含安装,如何本地化符合国人使用习惯以及中文搜索中文语言包等。

服务器要求

  • Apache Or Nginx
  • PHP 7.1+ 并安装拓展:fileinfo、curl、dom、gd、json、mbstring、openssl、pdo_mysql、tokenizer、zip
  • MySQL 5.6+ or MariaDB 10.0.5+ *MySQL5.7+可使用中文搜索(不完美)
  • SSH (command-line) 用于使用 Composer 安装
  • 解除 putenv()pcntl_signal()proc_open() 函数禁用

安装步骤

0x01 前往网站根目录,使用 Composer 安装

1
composer composer create-project flarum/flarum . --stability=beta

0x02 更改网站的默认目录

1
网站根目录/forum/public

0x03 重写规则 需要替换路径

Apache

1
2
3
<Directory "/path/to/flarum/public">
AllowOverride All
</Directory>

Nginx

1
include /path/to/flarum/.nginx.conf;

中文搜索优化(不推荐)

目前此方案并不完美,无法搜索标题存在的字符,仅从帖内搜索

1.修改 mysql.cnf 文件

1
2
[mysqld]
ngram_token_size=2

2.修改后需要重建 FULLTEXT 索引,数据库前缀是你安装时写的

1
2
3
4
5
ALTER TABLE 数据库前缀_posts DROP INDEX content;
CREATE FULLTEXT INDEX content ON `数据库前缀_posts` (`content`) WITH PARSER ngram;

ALTER TABLE 数据库前缀_discussions DROP INDEX title;
CREATE FULLTEXT INDEX title ON `数据库前缀_discussions` (`title`) WITH PARSER ngram;

基础的框架没什么功能,可以到官方论坛的插件发布区下载插件 Extensions 全英警告