1
0

docs: 更新文章内容

This commit is contained in:
2025-10-13 10:20:34 +08:00
parent 6e549d6b49
commit afea227c37
108 changed files with 1439 additions and 921 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
--- ---
title: 「教程」Android 微软远程桌面客户端使用自定义分辨率 title: "「教程」Android 微软远程桌面客户端使用自定义分辨率"
date: 2025-03-16T15:48:43Z date: 2025-03-16T15:48:43Z
lastmod: 2025-03-16T15:50:59Z lastmod: 2025-03-16T15:50:59Z
tags: [Windows,教程,Android,远程桌面] tags: [Windows,教程,Android,远程桌面]
@@ -11,7 +11,7 @@ tags: [Windows,教程,Android,远程桌面]
通过远程桌面连接 Windows 时,不能在系统中修改分辨率,只能在连接远程桌面的工具中设置。 通过远程桌面连接 Windows 时,不能在系统中修改分辨率,只能在连接远程桌面的工具中设置。
对于 Windows 上的“远程桌面连接”工具,可在它的 `显示 - 显示配置` 中修改(只能选择给出的分辨率),也可以在远程桌面配置文件(`.rdp`)中修改(可以设置为任意合适的分辨率)。 对于 Windows 上的“远程桌面连接”工具,可在它的 `显示 - 显示配置` 中修改(只能选择给出的分辨率),也可以在远程桌面配置文件(`.rdp`)中修改(可以设置为任意合适的分辨率)。
而对于 Android 系统上的“RD Client”只能选择它给出的分辨率目前还不支持手动输入分辨率数值且由于给出的分辨率与手机的分辨率相关在全面屏手机上使用的时候会比较奇怪例如不能设置为 16:9 的分辨率)。 而对于 Android 系统上的“RD Client”只能选择它给出的分辨率目前还不支持手动输入分辨率数值且由于给出的分辨率与手机的分辨率相关在全面屏手机上使用的时候会比较奇怪例如不能设置为 16:9 的分辨率)。
@@ -37,7 +37,7 @@ tags: [Windows,教程,Android,远程桌面]
![截图](assets/network-asset-1_01_rdc_add-20250316154915-1rwvoe6.png "截图") ![截图](assets/network-asset-1_01_rdc_add-20250316154915-1rwvoe6.png "截图")
3. 打开安装的 MiXplorer授予 ROOT 权限。 3. 打开安装的 MiXplorer授予 ROOT 权限。
4. 进入路径 `/data/data/com.microsoft.rdc.androidx/databases` 4. 进入路径 `/data/data/com.microsoft.rdc.androidx/databases`
![截图](assets/network-asset-1_02_file_path-20250316154915-w3z5ov1.png "截图") ![截图](assets/network-asset-1_02_file_path-20250316154915-w3z5ov1.png "截图")
5. 使用 MiXplorer 的“SQLite Editor”工具打开文件夹中的 `RDPConnection.db` 文件。 5. 使用 MiXplorer 的“SQLite Editor”工具打开文件夹中的 `RDPConnection.db` 文件。
@@ -45,7 +45,7 @@ tags: [Windows,教程,Android,远程桌面]
> >
![截图](assets/network-asset-1_03_open-20250316154916-m1ql94t.png "截图") ![截图](assets/network-asset-1_03_open-20250316154916-m1ql94t.png "截图")
6. 点击左上方的下拉菜单,切换到 `resolution_table` 项。 6. 点击左上方的下拉菜单,切换到 `resolution_table` 项。
此时可以看到刚刚在 RD Client 中添加的几个分辨率项。 此时可以看到刚刚在 RD Client 中添加的几个分辨率项。
![截图](assets/network-asset-1_04_table-20250316154916-4boacd2.png "截图") ![截图](assets/network-asset-1_04_table-20250316154916-4boacd2.png "截图")
7. 长按需要修改的项进行编辑点击“UPDATE”保存。 7. 长按需要修改的项进行编辑点击“UPDATE”保存。
@@ -69,7 +69,7 @@ tags: [Windows,教程,Android,远程桌面]
2. 解压下载的 ADB 工具包(文件路径最好不包含中文)。 2. 解压下载的 ADB 工具包(文件路径最好不包含中文)。
3. 启动“命令提示符”CMD执行 `CD /D 文件夹路径` 命令,将工作目录切换到 ADB 工具所在的文件夹。 3. 启动“命令提示符”CMD执行 `CD /D 文件夹路径` 命令,将工作目录切换到 ADB 工具所在的文件夹。
> 例如 `CD /D D:\Development\adb` > 例如 `CD /D D:\Development\adb`
> >
4. 使用 USB 数据线将手机与电脑连接。 4. 使用 USB 数据线将手机与电脑连接。
5. 在手机系统的“开发者选项”中开启“USB 调试”。 5. 在手机系统的“开发者选项”中开启“USB 调试”。
@@ -83,17 +83,17 @@ tags: [Windows,教程,Android,远程桌面]
List of devices attached List of devices attached
2ab5d50e device 2ab5d50e device
``` ```
7. 执行 `adb shell` 命令,进入 Shell 环境。 7. 执行 `adb shell` 命令,进入 Shell 环境。
![截图](assets/network-asset-2_03_adb_shell-20250316154917-0wv5gpl.png "截图") ![截图](assets/network-asset-2_03_adb_shell-20250316154917-0wv5gpl.png "截图")
8. 执行 `wm size` 命令,查看和记下设备的**默认分辨率**,还原的时候会用到。 8. 执行 `wm size` 命令,查看和记下设备的**默认分辨率**,还原的时候会用到。
![截图](assets/network-asset-2_04_original_size-20250316154917-xxth547.png "截图") ![截图](assets/network-asset-2_04_original_size-20250316154917-xxth547.png "截图")
9. 执行 `wm size 宽x高` 命令,设置想要在远程桌面中使用的分辨率。 9. 执行 `wm size 宽x高` 命令,设置想要在远程桌面中使用的分辨率。
> “宽”和“高”对应手机竖屏状态下的数值(请参考默认分辨率),例如 `wm size 1080x1920`。 > “宽”和“高”对应手机竖屏状态下的数值(请参考默认分辨率),例如 `wm size 1080x1920`
> 不建议设置过大或过小的分辨率,以免导致系统出错。 > 不建议设置过大或过小的分辨率,以免导致系统出错。
> 执行命令前,请务必**检查确认无误**。 > 执行命令前,请务必**检查确认无误**。
> 执行命令后,**手机的分辨率会变为指定的值**。 > 执行命令后,**手机的分辨率会变为指定的值**。
> 如果不小心设置错了,可以尝试执行 `wm size reset` 或 `wm size 默认分辨率` 命令进行还原。 > 如果不小心设置错了,可以尝试执行 `wm size reset` 或 `wm size 默认分辨率` 命令进行还原。
> >
![截图](assets/network-asset-2_05_1_wm_size-20250316154917-ilz94fw.png "截图") ![截图](assets/network-asset-2_05_1_wm_size-20250316154917-ilz94fw.png "截图")
@@ -112,12 +112,12 @@ tags: [Windows,教程,Android,远程桌面]
![截图](assets/network-asset-2_07_2_app-20250316154918-oseljk6.jpg "截图") ![截图](assets/network-asset-2_07_2_app-20250316154918-oseljk6.jpg "截图")
![截图](assets/network-asset-2_08_1_wm_size-20250316154918-s58a8az.png "截图") ![截图](assets/network-asset-2_08_1_wm_size-20250316154918-s58a8az.png "截图")
![截图](assets/network-asset-2_08_2_app-20250316154918-28ql07i.jpg "截图") ![截图](assets/network-asset-2_08_2_app-20250316154918-28ql07i.jpg "截图")
14. 保存完所有需要的分辨率后,执行 `wm size reset` 或 `wm size 默认分辨率` 命令,把手机的分辨率还原为默认值。 14. 保存完所有需要的分辨率后,执行 `wm size reset` 或 `wm size 默认分辨率` 命令,把手机的分辨率还原为默认值。
15. 重新打开客户端,保存的分辨率都在,且有效果。 15. 重新打开客户端,保存的分辨率都在,且有效果。
![截图](assets/network-asset-2_09_app-20250316154918-8s0r8ec.jpg "截图") ![截图](assets/network-asset-2_09_app-20250316154918-8s0r8ec.jpg "截图")
16. 执行 `exit` 命令,退出 Shell 环境。 16. 执行 `exit` 命令,退出 Shell 环境。
![截图](assets/network-asset-2_10_exit-20250316154918-nu3c97e.png "截图") ![截图](assets/network-asset-2_10_exit-20250316154918-nu3c97e.png "截图")
17. 执行 `adb kill-server` 命令,结束 ADB 服务。 17. 执行 `adb kill-server` 命令,结束 ADB 服务。
![截图](assets/network-asset-2_11_kill_server-20250316154918-o1l309g.png "截图") ![截图](assets/network-asset-2_11_kill_server-20250316154918-o1l309g.png "截图")
18. 现在可以关闭 USB 调试,然后断开手机与电脑的连接了。 18. 现在可以关闭 USB 调试,然后断开手机与电脑的连接了。

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View File

@@ -1,5 +1,5 @@
--- ---
title: 百度触屏版首页不同样式的页面 title: "百度触屏版首页不同样式的页面"
date: 2025-03-16T22:31:54Z date: 2025-03-16T22:31:54Z
lastmod: 2025-03-16T22:32:26Z lastmod: 2025-03-16T22:32:26Z
tags: [链接,网站] tags: [链接,网站]
@@ -7,8 +7,8 @@ tags: [链接,网站]
# 百度触屏版首页不同样式的页面 # 百度触屏版首页不同样式的页面
- 普通版:`https://m.baidu.com` - 普通版:`https://m.baidu.com`
- 简版一:`https://m.baidu.com/?wpo=btmfast&pu=sz%401321_000` - 简版一:`https://m.baidu.com/?wpo=btmfast&pu=sz%401321_000`
- 简版二:`https://m.baidu.com/?wpo=btmfast&pu=sz%401325_000` - 简版二:`https://m.baidu.com/?wpo=btmfast&pu=sz%401325_000`

View File

@@ -1,5 +1,5 @@
--- ---
title: 蓝狐BLUEFOXNX1 刷 GSI 系统 title: "蓝狐BLUEFOXNX1 刷 GSI 系统"
date: 2025-07-02T22:27:40Z date: 2025-07-02T22:27:40Z
lastmod: 2025-07-03T21:54:29Z lastmod: 2025-07-03T21:54:29Z
tags: [Android,GSI,刷机,系统] tags: [Android,GSI,刷机,系统]
@@ -21,11 +21,11 @@ tags: [Android,GSI,刷机,系统]
手机关机,打开 MTK Client 软件,手机同时按住“音量加”和“音量减”键,然后通过数据线连接到电脑。 手机关机,打开 MTK Client 软件,手机同时按住“音量加”和“音量减”键,然后通过数据线连接到电脑。
![image](assets/image-20250702233608-t3r8wve.png) ![image](assets/image-20250702233608-t3r8wve.png)
使用 MTK Client 的“Read partition”功能读出除“userdata”用户数据以外的分区备份以便刷坏了可以还原。 使用 MTK Client 的“Read partition”功能读出除“userdata”用户数据以外的分区备份以便刷坏了可以还原。
![image](assets/image-20250702224334-vyg3sj8.png) ![image](assets/image-20250702224334-vyg3sj8.png)
### 二、解锁 BootLoader ### 二、解锁 BootLoader
@@ -39,7 +39,7 @@ tags: [Android,GSI,刷机,系统]
然后执行 `adb reboot bootloader` 命令,等待几秒钟,直到设备重新启动进入引导加载程序。 然后执行 `adb reboot bootloader` 命令,等待几秒钟,直到设备重新启动进入引导加载程序。
> 注意:进入 fastboot 模式后,大概率会因为没有驱动程序,执行 `fastboot` 命令失败,需要参考“[https://www.cnblogs.com/changweijinghu/p/16880803.html](https://www.cnblogs.com/changweijinghu/p/16880803.html)”解决。 > 注意:进入 fastboot 模式后,大概率会因为没有驱动程序,执行 `fastboot` 命令失败,需要参考“[https://www.cnblogs.com/changweijinghu/p/16880803.html](https://www.cnblogs.com/changweijinghu/p/16880803.html)”解决。
> >
> 驱动程序下载地址:[获取 Google USB 驱动程序](https://developer.android.com/studio/run/win-usb) / [usb_driver_r13-windows.zip](https://dl.google.com/android/repository/usb_driver_r13-windows.zip) > 驱动程序下载地址:[获取 Google USB 驱动程序](https://developer.android.com/studio/run/win-usb) / [usb_driver_r13-windows.zip](https://dl.google.com/android/repository/usb_driver_r13-windows.zip)
@@ -59,7 +59,7 @@ No (Volume Down): Do not unlock bootloader.
将下载的 GSI 文件包解压到 ADB 工具所在文件夹内。 将下载的 GSI 文件包解压到 ADB 工具所在文件夹内。
> 例如本文使用的 `aosp_arm64-exp-BP1A.250405.005.C1-13151952-61d23231.zip`,可以解压得到 `system.img` 和 `vbmeta.img` 这两个镜像文件。 > 例如本文使用的 `aosp_arm64-exp-BP1A.250405.005.C1-13151952-61d23231.zip`,可以解压得到 `system.img` 和 `vbmeta.img` 这两个镜像文件。
依次执行以下命令,刷入镜像: 依次执行以下命令,刷入镜像:
@@ -72,6 +72,6 @@ fastboot reboot
> 注意:执行 `fastboot reboot fastboot` 命令后如果等待比较久都没出现“Finished”提示则需要插拔一下数据线。 > 注意:执行 `fastboot reboot fastboot` 命令后如果等待比较久都没出现“Finished”提示则需要插拔一下数据线。
![image](assets/image-20250702232252-k8k0r2r.png) ![image](assets/image-20250702232252-k8k0r2r.png)

View File

@@ -1,5 +1,5 @@
--- ---
title: 运算速度测试代码 title: "运算速度测试代码"
date: 2025-02-11T20:55:04Z date: 2025-02-11T20:55:04Z
lastmod: 2025-02-20T22:58:29Z lastmod: 2025-02-20T22:58:29Z
tags: [测试,代码片段] tags: [测试,代码片段]

View File

@@ -1,5 +1,5 @@
--- ---
title: Fabric.js 简单介绍和使用 title: "Fabric.js 简单介绍和使用"
date: 2025-03-15T22:51:22Z date: 2025-03-15T22:51:22Z
lastmod: 2025-03-15T22:55:55Z lastmod: 2025-03-15T22:55:55Z
tags: [Web 前端,JavaScript,Canvas,Fabric.js] tags: [Web 前端,JavaScript,Canvas,Fabric.js]
@@ -26,53 +26,53 @@ Fabric.js 是一个功能强大的 Canvas 库,它在原生 Canvas 之上提供
|名称|描述| |名称|描述|
| ------| ------------------------------| | ------| ------------------------------|
|`ActiveSelection`|选区| |`ActiveSelection`|选区|
|`Group`|分组| |`Group`|分组|
|`Image`|图像| |`Image`|图像|
|`Line`|线段| |`Line`|线段|
|`Rect`|矩形| |`Rect`|矩形|
|`Text`|文本(不可编辑,不换行)| |`Text`|文本(不可编辑,不换行)|
|`IText`|可编辑文本(可编辑,不换行)| |`IText`|可编辑文本(可编辑,不换行)|
|`Textbox`|文本框(可编辑,自动换行)| |`Textbox`|文本框(可编辑,自动换行)|
### 常用属性 ### 常用属性
|属性|描述| |属性|描述|
| ------| ---------------------------------------------| | ------| ---------------------------------------------|
|`type`|对象类型| |`type`|对象类型|
|`data`|用于添加自定义的数据| |`data`|用于添加自定义的数据|
|`originX`|对象转换的水平原点left / center / right| |`originX`|对象转换的水平原点left / center / right|
|`originY`|对象转换的垂直原点top / center / bottom| |`originY`|对象转换的垂直原点top / center / bottom|
|`left`|水平坐标| |`left`|水平坐标|
|`top`|垂直坐标| |`top`|垂直坐标|
|`width`|宽度| |`width`|宽度|
|`height`|高度| |`height`|高度|
|`angle`|旋转角度| |`angle`|旋转角度|
|`scaleX`|水平方向缩放倍数| |`scaleX`|水平方向缩放倍数|
|`scaleY`|垂直方向缩放倍数| |`scaleY`|垂直方向缩放倍数|
|`stroke`|线段颜色| |`stroke`|线段颜色|
|`strokeWidth`|线段宽度| |`strokeWidth`|线段宽度|
|`fill`|填充颜色| |`fill`|填充颜色|
|`fontFamily`|文本字体名称| |`fontFamily`|文本字体名称|
|`fontSize`|文本字体大小| |`fontSize`|文本字体大小|
|`opacity`|对象的不透明度| |`opacity`|对象的不透明度|
|`borderColor`|选区边框颜色| |`borderColor`|选区边框颜色|
|`borderDashArray`|选区边框虚线样式| |`borderDashArray`|选区边框虚线样式|
|`borderOpacityWhenMoving`|选区拖拽时的边框透明度| |`borderOpacityWhenMoving`|选区拖拽时的边框透明度|
|`cornerColor`|选区 “操作点” 填充颜色| |`cornerColor`|选区 “操作点” 填充颜色|
|`cornerSize`|选区 “操作点” 大小| |`cornerSize`|选区 “操作点” 大小|
|`cornerStrokeColor`|选区 “操作点” 描边颜色| |`cornerStrokeColor`|选区 “操作点” 描边颜色|
|`cornerStyle`|选区 “操作点” 样式circle / rect| |`cornerStyle`|选区 “操作点” 样式circle / rect|
|`transparentCorners`|选区 “操作点” 中心是否透明(只有描边)| |`transparentCorners`|选区 “操作点” 中心是否透明(只有描边)|
|`hasControls`|是否有 “操作点”| |`hasControls`|是否有 “操作点”|
|`lockRotation`|是否禁止旋转对象| |`lockRotation`|是否禁止旋转对象|
|`lockMovementX`|是否禁止水平移动对象| |`lockMovementX`|是否禁止水平移动对象|
|`lockMovementY`|是否禁止垂直移动对象| |`lockMovementY`|是否禁止垂直移动对象|
|`lockScaleX`|是否禁止水平缩放对象| |`lockScaleX`|是否禁止水平缩放对象|
|`lockScaleY`|是否禁止垂直缩放对象| |`lockScaleY`|是否禁止垂直缩放对象|
|`selectable`|是否可以被选中| |`selectable`|是否可以被选中|
|`hoverCursor`|光标在对象上方时的样式(子对象优先)| |`hoverCursor`|光标在对象上方时的样式(子对象优先)|
|`moveCursor`|光标在可移动对象上方时的样式(子对象优先)| |`moveCursor`|光标在可移动对象上方时的样式(子对象优先)|
### 常用方法 ### 常用方法
@@ -80,35 +80,35 @@ Fabric.js 是一个功能强大的 Canvas 库,它在原生 Canvas 之上提供
|方法|描述| |方法|描述|
| ------| ------------------------------------| | ------| ------------------------------------|
|`add(...object)`|添加对象到画布| |`add(...object)`|添加对象到画布|
|`insertAt(object, index, nonSplicing)`|添加对象到画布指定层级| |`insertAt(object, index, nonSplicing)`|添加对象到画布指定层级|
|`moveTo(object, index)`|更改对象所在的层级| |`moveTo(object, index)`|更改对象所在的层级|
|`remove(...object)`|移除画布上的对象| |`remove(...object)`|移除画布上的对象|
|`discardActiveObject()`|取消选中对象| |`discardActiveObject()`|取消选中对象|
|`getActiveObject()`|获取选中的对象| |`getActiveObject()`|获取选中的对象|
|`setActiveObject()`|更改选中的对象| |`setActiveObject()`|更改选中的对象|
|`getPointer()`|传递事件对象,获取相对于画布的坐标| |`getPointer()`|传递事件对象,获取相对于画布的坐标|
|`fire()`|触发画布事件| |`fire()`|触发画布事件|
|`forEachObject()`|遍历画布上的对象| |`forEachObject()`|遍历画布上的对象|
|`getZoom()`|获取画布缩放比例| |`getZoom()`|获取画布缩放比例|
|`setZoom()`|设置画布缩放比例| |`setZoom()`|设置画布缩放比例|
|`on()`|监听画布事件| |`on()`|监听画布事件|
|`requestRenderAll()`|刷新画布| |`requestRenderAll()`|刷新画布|
|`set()`|设置画布属性| |`set()`|设置画布属性|
#### 对象Object #### 对象Object
|方法|描述| |方法|描述|
| ------| ------------------------------| | ------| ------------------------------|
|`bringToFront()`|改变对象层级,置顶| |`bringToFront()`|改变对象层级,置顶|
|`bringForward()`|改变对象层级,上移| |`bringForward()`|改变对象层级,上移|
|`sendBackwards()`|改变对象层级,下移| |`sendBackwards()`|改变对象层级,下移|
|`sendToBack()`|改变对象层级,置底| |`sendToBack()`|改变对象层级,置底|
|`intersectsWithObject()`|检测两个对象是否相交(重叠)| |`intersectsWithObject()`|检测两个对象是否相交(重叠)|
|`isContainedWithinObject()`|检测对象是在另外一个对象内| |`isContainedWithinObject()`|检测对象是在另外一个对象内|
|`on()`|监听对象事件| |`on()`|监听对象事件|
|`set()`|设置对象属性| |`set()`|设置对象属性|
|`toDataURL()`|转换为 Base64| |`toDataURL()`|转换为 Base64|
## 创建对象 ## 创建对象
@@ -231,9 +231,9 @@ canvas.add(el);
### 画布内容撤销、恢复 ### 画布内容撤销、恢复
主要通过 Fabric.js 画布对象的 `toObject()``loadFromJSON()` 方法实现。 主要通过 Fabric.js 画布对象的 `toObject()``loadFromJSON()` 方法实现。
为了提高性能,默认情况下 `toObject()` 只会导出对象上**常用**的属性,其他属性(例如 `data``selectable`)不会被导出,需要手动在其 `propertiesToInclude` 参数中指定(例如 `canvas.toObject(['data', 'selectable'])`)。 为了提高性能,默认情况下 `toObject()` 只会导出对象上**常用**的属性,其他属性(例如 `data``selectable`)不会被导出,需要手动在其 `propertiesToInclude` 参数中指定(例如 `canvas.toObject(['data', 'selectable'])`)。
### 画布内容导出为图片 ### 画布内容导出为图片
@@ -279,7 +279,7 @@ let dataURL = rect.toDataURL({
The canvas has been tainted by cross-origin data. The canvas has been tainted by cross-origin data.
``` ```
其中一种解决方式是先使用 `new Image()` 设置 `crossorigin` 属性,加载图片,再创建 `fabric.Image` 对象(参考 “创建对象 - 图片”)。 其中一种解决方式是先使用 `new Image()` 设置 `crossorigin` 属性,加载图片,再创建 `fabric.Image` 对象(参考 “创建对象 - 图片”)。
### 画布自适应父 DOM 元素宽高 ### 画布自适应父 DOM 元素宽高
@@ -376,7 +376,7 @@ clearTimeout(debounce);
### 解决画布缩放后,对象显示模糊 ### 解决画布缩放后,对象显示模糊
把对象的 `objectCaching` 属性设置为 `false`,关闭缓存即可。 把对象的 `objectCaching` 属性设置为 `false`,关闭缓存即可。
例如: 例如:
@@ -429,13 +429,13 @@ const item = new fabric.Rect({
}); });
``` ```
**关于** **`absolutePositioned`** **属性:** **关于** **`absolutePositioned`** **属性:**
仅当对象作为 `clipPath` 使用时才有意义。如果为 `true``clipPath` 的位置将会相对于画布,且不受对象变换影响。([JSDoc: Class: Object#absolutePositioned](http://fabricjs.com/docs/fabric.Object.html#absolutePositioned) 仅当对象作为 `clipPath` 使用时才有意义。如果为 `true``clipPath` 的位置将会相对于画布,且不受对象变换影响。([JSDoc: Class: Object#absolutePositioned](http://fabricjs.com/docs/fabric.Object.html#absolutePositioned)
**注意:** **注意:**
后续通过 `.set()` 更新对象的 `clipPath` 属性时,建议同时将其 `dirty` 属性设置为 `true`,以便清除缓存,防止裁剪区域没有更新。([JSDoc: Class: Object#dirty](http://fabricjs.com/docs/fabric.Object.html#dirty) 后续通过 `.set()` 更新对象的 `clipPath` 属性时,建议同时将其 `dirty` 属性设置为 `true`,以便清除缓存,防止裁剪区域没有更新。([JSDoc: Class: Object#dirty](http://fabricjs.com/docs/fabric.Object.html#dirty)
```javascript ```javascript
item.set({ clipPath: null, dirty: true }); item.set({ clipPath: null, dirty: true });
@@ -443,7 +443,7 @@ item.set({ clipPath: null, dirty: true });
### 鼠标滚轮缩放画布 ### 鼠标滚轮缩放画布
主要用到了画布的鼠标事件(`mouse:wheel`)以及调用画布的 `zoomToPoint()` 方法改变视图缩放。 主要用到了画布的鼠标事件(`mouse:wheel`)以及调用画布的 `zoomToPoint()` 方法改变视图缩放。
```javascript ```javascript
// 监听事件:鼠标滚轮 // 监听事件:鼠标滚轮
@@ -497,9 +497,9 @@ canvas.on('mouse:wheel', function (ev) {
### 鼠标拖拽移动画布 ### 鼠标拖拽移动画布
主要用到了画布的鼠标事件(`mouse:down``mouse:move``mouse:up`)以及调用画布的 `setViewportTransform()` 方法改变视图偏移量。 主要用到了画布的鼠标事件(`mouse:down``mouse:move``mouse:up`)以及调用画布的 `setViewportTransform()` 方法改变视图偏移量。
注意:在拖拽前,若鼠标选中了对象,需要将对象的 `lockMovementX``lockMovementY` 属性设置为 `true`,锁定对象的移动,否则拖拽后对象的位置会变化。 注意:在拖拽前,若鼠标选中了对象,需要将对象的 `lockMovementX``lockMovementY` 属性设置为 `true`,锁定对象的移动,否则拖拽后对象的位置会变化。
```javascript ```javascript
// 监听事件:鼠标按下 // 监听事件:鼠标按下
@@ -578,9 +578,9 @@ canvas.on('mouse:up', function ({ target }) {
默认情况下,对于分组,`ev.target` 只能获取到整个分组,并不能具体到其中的对象。 默认情况下,对于分组,`ev.target` 只能获取到整个分组,并不能具体到其中的对象。
在创建分组时,将 `subTargetCheck` 属性设置为 `true`,即可通过 `ev.subTargets` 获取触发事件时的子对象。 在创建分组时,将 `subTargetCheck` 属性设置为 `true`,即可通过 `ev.subTargets` 获取触发事件时的子对象。
对于支持该功能的事件(`mouse:down``mouse:up``mouse:move` 等),该属性为 `fabric.Object` 数组; 对于支持该功能的事件(`mouse:down``mouse:up``mouse:move` 等),该属性为 `fabric.Object` 数组;
对于不支持该功能的事件,该属性为 `undefined` 对于不支持该功能的事件,该属性为 `undefined`
@@ -603,7 +603,7 @@ canvas.on('mouse:down', function (ev) {
Fabeic.js 的文本框对象Textbox默认支持文本自动换行但只能在**空格**处换行,对于类似中文句子这种不带空格的字符串并不会换行,且文本框的宽度会自动被撑开。 Fabeic.js 的文本框对象Textbox默认支持文本自动换行但只能在**空格**处换行,对于类似中文句子这种不带空格的字符串并不会换行,且文本框的宽度会自动被撑开。
在 Fabric.js 2.6.0 版本中,新增了一个 `splitByGrapheme` 属性,将其设置为 `true` 即可启用在任意字符之间自动换行(参考:[JSDoc: Global](http://fabricjs.com/docs/global.html#splitByGrapheme)),例如: 在 Fabric.js 2.6.0 版本中,新增了一个 `splitByGrapheme` 属性,将其设置为 `true` 即可启用在任意字符之间自动换行(参考:[JSDoc: Global](http://fabricjs.com/docs/global.html#splitByGrapheme)),例如:
```javascript ```javascript
const textbox = new fabric.Textbox('文本框', { const textbox = new fabric.Textbox('文本框', {

View File

@@ -1,5 +1,5 @@
--- ---
title: 浏览器 DevTools开发人员工具部分实用功能介绍 title: "浏览器 DevTools开发人员工具部分实用功能介绍"
date: 2025-03-16T15:54:20Z date: 2025-03-16T15:54:20Z
lastmod: 2025-03-16T15:58:30Z lastmod: 2025-03-16T15:58:30Z
tags: [Chromium,Chrome,浏览器,工具,Web 前端,DevTools] tags: [Chromium,Chrome,浏览器,工具,Web 前端,DevTools]
@@ -45,17 +45,17 @@ DevTools 的 Console 是在开发过程中常用的功能之一,在其中可
实际上,`$0` 是对当前选中的 DOM 节点的引用。 实际上,`$0` 是对当前选中的 DOM 节点的引用。
除此之外,`$1` 是对上一次选择的 DOM 节点的引用,一直到 `$4` 除此之外,`$1` 是对上一次选择的 DOM 节点的引用,一直到 `$4`
![](assets/network-asset-c-02-20250316155450-imayn8e.png) ![](assets/network-asset-c-02-20250316155450-imayn8e.png)
### \$ 和 \$\$ ### \$ 和 \$\$
在默认情况下(没有定义过 `$` 变量),它在 Console 中是 `document.querySelector` 的别名。 在默认情况下(没有定义过 `$` 变量),它在 Console 中是 `document.querySelector` 的别名。
![](assets/network-asset-c-03-20250316155450-w9czvqh.png) ![](assets/network-asset-c-03-20250316155450-w9czvqh.png)
`$$` 则类似 `document.QuerySelectorAll`,但它返回的是包含 DOM 节点的数组,而不是 NodeList。 `$$` 则类似 `document.QuerySelectorAll`,但它返回的是包含 DOM 节点的数组,而不是 NodeList。
![](assets/network-asset-c-04-20250316155450-ge91fnx.png) ![](assets/network-asset-c-04-20250316155450-ge91fnx.png)
@@ -91,8 +91,8 @@ DevTools 的 Console 是在开发过程中常用的功能之一,在其中可
![](assets/network-asset-f-04-20250316155451-32iica5.png) ![](assets/network-asset-f-04-20250316155451-32iica5.png)
Copy selector`#head_wrapper > div > div` Copy selector`#head_wrapper > div > div`
Copy JS path`document.querySelector("#head_wrapper > div > div")` Copy JS path`document.querySelector("#head_wrapper > div > div")`
## Sources源代码 ## Sources源代码
@@ -128,7 +128,7 @@ DevTools 代码片段合集:[DevTools Snippets](http://bgrins.github.io/devtoo
![](assets/network-asset-d-02-20250316155452-gdsmr1f.png) ![](assets/network-asset-d-02-20250316155452-gdsmr1f.png)
之后网页会被模拟为聚焦状态,即使它不在前台。此时执行 `document.hasFocus()` 会返回 `true`。通过该功能,可以阻止大部分网站检测用户是否离开页面。 之后网页会被模拟为聚焦状态,即使它不在前台。此时执行 `document.hasFocus()` 会返回 `true`。通过该功能,可以阻止大部分网站检测用户是否离开页面。
## 截屏 ## 截屏

View File

@@ -1,5 +1,5 @@
--- ---
title: Chromium 内核浏览器命令行启动参数 title: "Chromium 内核浏览器命令行启动参数"
date: 2025-03-19T11:37:29Z date: 2025-03-19T11:37:29Z
lastmod: 2025-03-19T11:40:14Z lastmod: 2025-03-19T11:40:14Z
tags: [Chrome,Chromium,Windows] tags: [Chrome,Chromium,Windows]

View File

@@ -1,5 +1,5 @@
--- ---
title: 经典句子、经典语录 title: "经典句子、经典语录"
date: 2025-03-19T11:45:59Z date: 2025-03-19T11:45:59Z
lastmod: 2025-03-19T11:46:31Z lastmod: 2025-03-19T11:46:31Z
tags: [文字,经典] tags: [文字,经典]

View File

@@ -1,7 +1,7 @@
--- ---
title: 「合集」常用的 JavaScript 代码 title: "「合集」常用的 JavaScript 代码"
date: 2025-03-16T22:02:06Z date: 2025-03-16T22:02:06Z
lastmod: 2025-03-16T22:02:51Z lastmod: 2025-03-16T22:02:33Z
tags: [合集,代码片段,Web 前端,JavaScript] tags: [合集,代码片段,Web 前端,JavaScript]
--- ---
@@ -77,6 +77,43 @@ document.designMode = 'off';
## function ## function
#### Blob 转 DataURL
```javascript
/**
* @description 转换 Blob 为 DataURL
* @param {Blob} blob
* @returns {Promise<{ dataURL: string; success: boolean; }>}
*/
function blobToDataURL(blob) {
return new Promise((resolve) => {
let fileReader = new FileReader();
// 处理读取异常
fileReader.onerror = function () {
resolve({
dataURL: '',
success: false,
});
};
// 处理读取完成
fileReader.onload = function () {
resolve({
dataURL: fileReader.result,
success: true,
});
};
// 开始读取
fileReader.readAsDataURL(blob);
});
}
```
#### 查找元素的 Vue 对象 #### 查找元素的 Vue 对象
```javascript ```javascript
@@ -134,7 +171,7 @@ function findElementVue(el) {
} }
``` ```
#### 查找字符 `char` 在 `str` 中第 `num` 次出现的位置 #### 查找字符 `char` 在 `str` 中第 `num` 次出现的位置
```javascript ```javascript
function findChar(str = '', char = '', num = 1) { function findChar(str = '', char = '', num = 1) {
@@ -149,6 +186,136 @@ function findChar(str = '', char = '', num = 1) {
} }
``` ```
#### 处理过渡效果
```javascript
// https://www.npmjs.com/package/d3-ease
/**
* @description 处理过渡效果
* @param {object} opts
* @param {number} opts.duration 时长(毫秒)
* @param {Function} opts.easeFn 过渡计算函数
* @param {Function} opts.onStop 结束时回调
* @param {Function} opts.onTick 进行时回调
* @returns {Promise<boolean>}
*/
function easeHandler(opts = {}) {
const {
duration = 0,
easeFn = easeLinear,
onStop = null,
onTick = null,
} = opts;
const isValid = (
(typeof duration === 'number' && duration >= 0) &&
(typeof easeFn === 'function') &&
(onStop ? typeof onStop === 'function' : true) &&
(onTick ? typeof onTick === 'function' : true)
);
if (!isValid) {
console.error('处理失败:参数错误');
return Promise.resolve(false);
}
// 时长为 0直接结束
if (duration === 0) {
onTick && onTick(1);
onStop && onStop();
return Promise.resolve(true);
}
const sTime = Date.now();
const eTIme = sTime + duration;
return new Promise((resolve) => {
const fn = function () {
try {
const curr = Date.now();
const diff = Math.min(duration, curr - sTime);
const p = parseFloat((diff / duration).toFixed(3));
const n = parseFloat(easeFn(p).toFixed(3));
if (curr < eTIme) {
// [继续]
onTick && onTick(n);
requestAnimationFrame(fn);
} else {
// [结束]
onTick && onTick(1);
onStop && onStop();
resolve(true);
}
} catch (error) {
console.error('处理失败:');
console.error(error);
resolve(false);
}
};
// 开始
fn();
});
}
```
#### 对有符号整型、无符号整型、浮点型、十六进制、二进制的数据处理
参考https://www.cnblogs.com/zhouheblog/p/13578012.html
```javascript
// 十六进制字符串转有符号整型(支持 S8、S16、S32
function hexToInt(hex) {
if (!hex) {
return NaN;
}
if (hex.length % 2 !== 0) {
hex = '0' + hex;
}
let num = parseInt(hex, 16);
let max = Math.pow(2, hex.length / 2 * 8);
if (num > max / 2 - 1) {
num = num - max;
}
return num;
}
```
```javascript
// 十六进制字符串转无符号整型(支持 U8、U16、U32
parseInt(str, 16);
```
```javascript
/**
* @description 合并对象lodash.mergeWith
* - 将会修改目标对象
* - 若来源属性为数组,将会直接替换
* - 若目标属性为对象,但来源属性为 `null`,则跳过
* @template TObject
* @param {TObject} obj 合并目标
* @param {TObject} src 合并来源
* @returns {TObject}
*/
function mergeObject(obj, src) {
return mergeWith(obj, src, function (objValue, srcValue) {
if (Array.isArray(srcValue)) {
return srcValue;
} else if (srcValue === null && isObject(objValue)) {
return objValue;
}
});
}
```
#### 格式化时间 #### 格式化时间
```javascript ```javascript
@@ -679,3 +846,72 @@ function strToFile(data = '', filename = 'export.txt', filetype = 'text/plain')
``` ```
#### 转换 JSON 为 SQLite 插入语句
```javascript
/**
* @description 生成 SQLite 插入语句
* @param {string} t 表名
* @param {string[]} k 键名列表
* @param {(number|string)[]} v 值列表
*/
function getSqlInsert(t, k, v) {
k = k.map(val => `"${val}"`);
v = v.map(val => (val === null ? 'NULL' : `'${val}'`));
return `INSERT INTO "${t}" (${k.join(', ')}) VALUES (${v.join(', ')})`;
}
/**
* @description 转换 JSON 为 SQLite 语句INSERT
* @param {string} table 表名
* @param {Record<string, number|string>[]} data
* @param {string[]} [keys] 属性过滤
*/
function jsonToSql(table, data, keys) {
try {
const result = [];
const filter = Array.isArray(keys);
if (!table) {
throw new Error('缺少 table 参数');
}
if (!Array.isArray(data)) {
throw new Error('缺少 data 参数');
}
for (let i = 0; i < data.length; i++) {
let item = data[i];
let keys = [];
let values = [];
let sql = '';
// 记录 key 和 value
if (filter) {
for (let key in item) {
if (keys.includes(key)) {
keys.push(key);
values.push(item[key]);
}
}
} else {
for (let key in item) {
keys.push(key);
values.push(item[key]);
}
}
// 生成 SQL 插入语句
sql = getSqlInsert(table, keys, values);
result.push(sql);
}
return result;
} catch (error) {
console.error('转换失败:');
console.error(error);
return null;
}
}
```

View File

@@ -1,5 +1,5 @@
--- ---
title: 「合集」Linux 常用命令 title: "「合集」Linux 常用命令"
date: 2025-03-16T19:25:02Z date: 2025-03-16T19:25:02Z
lastmod: 2025-03-16T19:28:22Z lastmod: 2025-03-16T19:28:22Z
tags: [合集,Linux,命令] tags: [合集,Linux,命令]
@@ -15,7 +15,7 @@ tags: [合集,Linux,命令]
## init ## init
重启:`init 6` 重启:`init 6`
--- ---
@@ -25,9 +25,9 @@ tags: [合集,Linux,命令]
配置自动维护日志文件大小 配置自动维护日志文件大小
只保留近两周的日志:`journalctl --vacuum-time=2w` 只保留近两周的日志:`journalctl --vacuum-time=2w`
只保留 256MB 的日志:`journalctl --vacuum-size=256M` 只保留 256MB 的日志:`journalctl --vacuum-size=256M`
参考:[Linux 系统 /var/log/journal/ 垃圾日志清理](https://cloud.tencent.com/developer/article/1446278) 参考:[Linux 系统 /var/log/journal/ 垃圾日志清理](https://cloud.tencent.com/developer/article/1446278)
@@ -51,7 +51,7 @@ pkill -kill -t <tty>
说明: 说明:
`<tty>` 为要踢的用户的 tty例如 `pkill -kill -t pts/1` `<tty>` 为要踢的用户的 tty例如 `pkill -kill -t pts/1`
--- ---
@@ -125,38 +125,38 @@ screen -r -d name
### 命令 ### 命令
#### 压缩当前路径下的 `test/content/` 文件夹为 `file.tgz` #### 压缩当前路径下的 `test/content/` 文件夹为 `file.tgz`
```bash ```bash
tar -zcvf file.tgz test/content/ tar -zcvf file.tgz test/content/
``` ```
#### 压缩当前路径下的 `test/content/` 文件夹和 `test/text.txt` 文件为 `file.tgz` #### 压缩当前路径下的 `test/content/` 文件夹和 `test/text.txt` 文件为 `file.tgz`
```bash ```bash
tar -zcvf file.tgz test/content/ test/text.txt tar -zcvf file.tgz test/content/ test/text.txt
``` ```
#### 压缩 `当前路径` 的文件夹为 `file.tgz` #### 压缩 `当前路径` 的文件夹为 `file.tgz`
```bash ```bash
tar -zcvf file.tgz ./ tar -zcvf file.tgz ./
``` ```
#### 压缩当前路径下的 `test/content/` 文件夹为 `file.tgz` #### 压缩当前路径下的 `test/content/` 文件夹为 `file.tgz`
```bash ```bash
# 其中不包含 `test/content/text_a.txt` 文件和 `test/content/test/text_b.txt` 文件 # 其中不包含 `test/content/text_a.txt` 文件和 `test/content/test/text_b.txt` 文件
tar --exclude=text_a.txt --exclude=test/text_b.txt -zcvf file.tgz test/content/ tar --exclude=text_a.txt --exclude=test/text_b.txt -zcvf file.tgz test/content/
``` ```
#### 解压 `当前路径` 下的 `file.tar` #### 解压 `当前路径` 下的 `file.tar`
```bash ```bash
tar -xvf file.tar tar -xvf file.tar
``` ```
#### 解压 `当前路径` 下的 `file.tgz` #### 解压 `当前路径` 下的 `file.tgz`
```bash ```bash
tar -zxvf file.tgz tar -zxvf file.tgz
@@ -164,7 +164,7 @@ tar -zxvf file.tgz
## taskset ## taskset
指定 CPU `0~3` 执行当前路径下的 `start.sh` 指定 CPU `0~3` 执行当前路径下的 `start.sh`
```bash ```bash
taskset -c 0-3 ./start.sh taskset -c 0-3 ./start.sh

View File

@@ -1,5 +1,5 @@
--- ---
title: 「合集」Windows BAT CMD 常用命令 title: "「合集」Windows BAT CMD 常用命令"
date: 2025-03-16T15:47:13Z date: 2025-03-16T15:47:13Z
lastmod: 2025-03-16T15:47:31Z lastmod: 2025-03-16T15:47:31Z
tags: [合集,Windows,命令提示符,命令,BAT,脚本] tags: [合集,Windows,命令提示符,命令,BAT,脚本]
@@ -84,7 +84,7 @@ ping -n 次数 主机名
#### Ping 指定的主机,直到停止 #### Ping 指定的主机,直到停止
> 按下 `Ctrl + Break` 查看统计信息并继续操作; > 按下 `Ctrl + Break` 查看统计信息并继续操作;
> 按下 `Ctrl + C` 以停止。 > 按下 `Ctrl + C` 以停止。
```bat ```bat

View File

@@ -1,5 +1,5 @@
--- ---
title: 常用的 Git 命令 title: "常用的 Git 命令"
date: 2025-02-11T20:43:29Z date: 2025-02-11T20:43:29Z
lastmod: 2025-02-20T22:59:20Z lastmod: 2025-02-20T22:59:20Z
tags: [Git,命令,开发] tags: [Git,命令,开发]
@@ -43,13 +43,13 @@ git config --global commit.gpgsign true
### 单行显示 ### 单行显示
`git log --oneline` `git log --oneline`
把每一条提交压缩到只有一行,仅保留短哈希、提价说明等最必要的信息,以一种更干净的方式查看提交。 把每一条提交压缩到只有一行,仅保留短哈希、提价说明等最必要的信息,以一种更干净的方式查看提交。
### 显示差异 ### 显示差异
`git log -p` `git log -p`
展示带有改动内容的历史,可以看到每条提交都改动了哪些内容。 展示带有改动内容的历史,可以看到每条提交都改动了哪些内容。
@@ -65,7 +65,7 @@ Git 会使用正则来进行筛选和过滤,因此非准确的名字或大小
### 按时间过滤 ### 按时间过滤
添加参数 `--after``--before` 以按时间过滤。 添加参数 `--after``--before` 以按时间过滤。
2021-01-01 之后: 2021-01-01 之后:
@@ -318,7 +318,7 @@ git gc --aggressive --prune=now
```text ```text
git rebase e2394c2^ --interactive git rebase e2394c2^ --interactive
``` ```
3. 在打开的编辑界面中将需要修改的提交前的 `pick` 改为 `edit`,然后保存退出。 3. 在打开的编辑界面中将需要修改的提交前的 `pick` 改为 `edit`,然后保存退出。
4. 修改文件,然后重新提交。 4. 修改文件,然后重新提交。
```text ```text
@@ -327,7 +327,7 @@ git gc --aggressive --prune=now
``` ```
注意:提交使用的参数是 `--amend`。 注意:提交使用的参数是 `--amend`。
5. 执行 `git rebase --continue` 命令逐步前进到最新的提交位置。 5. 执行 `git rebase --continue` 命令逐步前进到最新的提交位置。
注意:修改文件后可能会产生冲突,解决冲突并提交后需要再次执行 `git rebase --continue` 命令以继续。 注意:修改文件后可能会产生冲突,解决冲突并提交后需要再次执行 `git rebase --continue` 命令以继续。
6. 提交到远程: 6. 提交到远程:

View File

@@ -1,5 +1,5 @@
--- ---
title: CORS 预检请求preflight request title: "CORS 预检请求preflight request"
date: 2025-03-15T23:08:14Z date: 2025-03-15T23:08:14Z
lastmod: 2025-03-15T23:08:41Z lastmod: 2025-03-15T23:08:41Z
tags: [Web 前端,JavaScript,HTTP] tags: [Web 前端,JavaScript,HTTP]
@@ -39,7 +39,7 @@ CORS 预检请求主要用于检测服务器是否支持 CORS跨域资源共
- text/plain - text/plain
- multipart/form-data - multipart/form-data
- application/x-www-form-urlencoded - application/x-www-form-urlencoded
- 请求中的任意 `XMLHttpRequest` 对象均没有注册任何事件监听器;可以通过 `XMLHttpRequest.upload` 属性访问 `XMLHttpRequest` 对象。 - 请求中的任意 `XMLHttpRequest` 对象均没有注册任何事件监听器;可以通过 `XMLHttpRequest.upload` 属性访问 `XMLHttpRequest` 对象。
- 请求中没有使用 `ReadableStream` 对象。 - 请求中没有使用 `ReadableStream` 对象。

View File

@@ -1,5 +1,5 @@
--- ---
title: 包含 T 和 Z 的日期时间字符串格式 title: "包含 T 和 Z 的日期时间字符串格式"
date: 2025-03-15T23:11:02Z date: 2025-03-15T23:11:02Z
lastmod: 2025-03-15T23:11:27Z lastmod: 2025-03-15T23:11:27Z
tags: [格式,时间,日期] tags: [格式,时间,日期]
@@ -9,7 +9,7 @@ tags: [格式,时间,日期]
ECMAScript 基于 ISO 8601 扩展格式的简化定义了日期时间的字符串交换格式。 ECMAScript 基于 ISO 8601 扩展格式的简化定义了日期时间的字符串交换格式。
格式为:`YYYY-MM-DDTHH:mm:ss.sssZ` 格式为:`YYYY-MM-DDTHH:mm:ss.sssZ`
|内容|描述| |内容|描述|
| :-----| :-------------------------------------------------------------------| | :-----| :-------------------------------------------------------------------|
@@ -29,16 +29,16 @@ ECMAScript 基于 ISO 8601 扩展格式的简化定义了日期时间的字符
所有数字必须为**十进制**形式。 所有数字必须为**十进制**形式。
如果 `MM``DD` 字段不存在,则使用默认值 “01”。 如果 `MM``DD` 字段不存在,则使用默认值 “01”。
如果 `HH``mm``ss` 字段不存在,则使用默认值 “00”。 如果 `HH``mm``ss` 字段不存在,则使用默认值 “00”。
`sss` 字段不存在,则使用默认值 “000”。 `sss` 字段不存在,则使用默认值 “000”。
如果没有指定时区,则把字符串作为**本地时间**进行解析。 如果没有指定时区,则把字符串作为**本地时间**进行解析。
由于每天都以午夜开始和结束,所以可以在时间表达式中使用 `00:00``24:00` 来区分相同时间点的两个午夜。 由于每天都以午夜开始和结束,所以可以在时间表达式中使用 `00:00``24:00` 来区分相同时间点的两个午夜。
也就是说,字符串 `1995-02-04T24:00``1995-02-05T00:00` 可以表示完全相同的时间点。 也就是说,字符串 `1995-02-04T24:00``1995-02-05T00:00` 可以表示完全相同的时间点。
字符串中可以只包含日期: 字符串中可以只包含日期:

View File

@@ -1,5 +1,5 @@
--- ---
title: 「Minecraft」修改 Dynmap 让 WarsFtbDynmap 能正常使用 title: "「Minecraft」修改 Dynmap 让 WarsFtbDynmap 能正常使用"
date: 2025-03-16T18:58:37Z date: 2025-03-16T18:58:37Z
lastmod: 2025-03-16T19:02:34Z lastmod: 2025-03-16T19:02:34Z
tags: [Minecraft,模组,代码片段,Dynmap] tags: [Minecraft,模组,代码片段,Dynmap]
@@ -7,7 +7,7 @@ tags: [Minecraft,模组,代码片段,Dynmap]
# 「Minecraft」修改 Dynmap 让 WarsFtbDynmap 能正常使用 # 「Minecraft」修改 Dynmap 让 WarsFtbDynmap 能正常使用
修改 Dynmap Forge 的 `index.html``markers.js` 让 WarsFtbDynmap 能正常使用。记录下来,方便下次使用。 修改 Dynmap Forge 的 `index.html``markers.js` 让 WarsFtbDynmap 能正常使用。记录下来,方便下次使用。
版本信息: 版本信息:
@@ -19,19 +19,19 @@ tags: [Minecraft,模组,代码片段,Dynmap]
## 前言 ## 前言
可能是因为服务端的多世界功能是使用模组 [Just Enough Dimensions](https://minecraft.curseforge.com/projects/just-enough-dimensions) 实现的,然后 `WarsFtbDynmap` 不能正确识别世界,导致其生成的`marker.json`文件的文件名为 `marker_.json` ,而不是 `marker_世界名称.json`(或者直接把`标记点`的数据写入到原有的 `marker_世界名.json` 中)。 可能是因为服务端的多世界功能是使用模组 [Just Enough Dimensions](https://minecraft.curseforge.com/projects/just-enough-dimensions) 实现的,然后 `WarsFtbDynmap` 不能正确识别世界,导致其生成的`marker.json`文件的文件名为 `marker_.json` ,而不是 `marker_世界名称.json`(或者直接把`标记点`的数据写入到原有的 `marker_世界名.json` 中)。
因为`DynmapForge`只能加载对应世界名称的 `marker.json` 文件,所以 `WarsFtbDynmap` 不能正常使用(不显示 [FTB Utilities](https://minecraft.curseforge.com/projects/ftb-utilities) 设定的领地)。 因为`DynmapForge`只能加载对应世界名称的 `marker.json` 文件,所以 `WarsFtbDynmap` 不能正常使用(不显示 [FTB Utilities](https://minecraft.curseforge.com/projects/ftb-utilities) 设定的领地)。
这只是临时解决方案,且本方案可能有可以改进的地方。 这只是临时解决方案,且本方案可能有可以改进的地方。
目前`网页地图`只显示世界 `world` 和世界 `DIM0`(这两个世界名称是 `Just Enough Dimensions` 给的;`world` 是默认的主世界,`DIM0` 是自己加的世界)。 目前`网页地图`只显示世界 `world` 和世界 `DIM0`(这两个世界名称是 `Just Enough Dimensions` 给的;`world` 是默认的主世界,`DIM0` 是自己加的世界)。
## 进行的修改 ## 进行的修改
#### dynmap/web/js/markers.js #### dynmap/web/js/markers.js
删除了第 28 行中的`world`,使在`网页地图`中切换世界时不能自动传入要加载的`marker.json`的文件名中的`world`参数。 删除了第 28 行中的`world`,使在`网页地图`中切换世界时不能自动传入要加载的`marker.json`的文件名中的`world`参数。
```diff ```diff
- function loadmarkers(world) { - function loadmarkers(world) {
@@ -42,7 +42,7 @@ tags: [Minecraft,模组,代码片段,Dynmap]
> 因为去掉了“传入参数”,加载 `marker.json` 时会出错,所以要写一个用于手动传入参数的东西。 > 因为去掉了“传入参数”,加载 `marker.json` 时会出错,所以要写一个用于手动传入参数的东西。
在第 38 行的后面插入 1 行,写入以下内容(用于设定初始加载的 `marker.json` 的世界名称为 `DIM0` 在第 38 行的后面插入 1 行,写入以下内容(用于设定初始加载的 `marker.json` 的世界名称为 `DIM0`
```html ```html
<script type="text/javascript">world = "DIM0";</script> <script type="text/javascript">world = "DIM0";</script>
@@ -66,7 +66,7 @@ tags: [Minecraft,模组,代码片段,Dynmap]
#### dynmap/configuration.txt #### dynmap/configuration.txt
> 修改 `DynmapForge` 的配置文件,添加用于切换要加载的 `marker.json` 的按钮。 > 修改 `DynmapForge` 的配置文件,添加用于切换要加载的 `marker.json` 的按钮。
在第 178 行左右(内容是 `# Note: more than one logo component can be defined`)的后面插入 18 行,写入以下内容: 在第 178 行左右(内容是 `# Note: more than one logo component can be defined`)的后面插入 18 行,写入以下内容:

View File

@@ -1,5 +1,5 @@
--- ---
title: 安装 elementary OS 后没有自动写入 EFI 引导 title: "安装 elementary OS 后没有自动写入 EFI 引导"
date: 2025-03-16T16:29:02Z date: 2025-03-16T16:29:02Z
lastmod: 2025-03-16T16:29:48Z lastmod: 2025-03-16T16:29:48Z
tags: [记录,Linux,安装系统] tags: [记录,Linux,安装系统]
@@ -27,7 +27,7 @@ elementary OS 官网:[https://elementary.io/](https://elementary.io/)
最后看了深度科技论坛的一个帖子《[纯UEFI下安装15.7结果没有写入efi](https://bbs.deepin.org/forum.php?mod=viewthread&tid=170729)》,按照 10 楼 @redchenjs 说的: 最后看了深度科技论坛的一个帖子《[纯UEFI下安装15.7结果没有写入efi](https://bbs.deepin.org/forum.php?mod=viewthread&tid=170729)》,按照 10 楼 @redchenjs 说的:
> 把原 `EFI` 文件夹里的 `ubuntu` 文件夹复制到空的 `EFI` 分区的 `efi` 文件夹内,然后在 `efi` 文件夹内创建 `boot` 文件夹,复制 `ubuntu` 文件夹里的 `shimx64.efi` 和 `grubx64.efi` 到创建的 `boot` 文件夹,最后把 `shimx64.efi` 重命名为 `bootx64.efi`。 > 把原 `EFI` 文件夹里的 `ubuntu` 文件夹复制到空的 `EFI` 分区的 `efi` 文件夹内,然后在 `efi` 文件夹内创建 `boot` 文件夹,复制 `ubuntu` 文件夹里的 `shimx64.efi` 和 `grubx64.efi` 到创建的 `boot` 文件夹,最后把 `shimx64.efi` 重命名为 `bootx64.efi`。
这样就可以在 BIOS 启动菜单选第二块硬盘启动 elementary OS 了。 这样就可以在 BIOS 启动菜单选第二块硬盘启动 elementary OS 了。

View File

@@ -1,5 +1,5 @@
--- ---
title: 使用 FFmpeg 合并多个视频文件 title: "使用 FFmpeg 合并多个视频文件"
date: 2025-04-18T22:50:14Z date: 2025-04-18T22:50:14Z
lastmod: 2025-07-03T21:58:34Z lastmod: 2025-07-03T21:58:34Z
tags: [FFmpeg,命令] tags: [FFmpeg,命令]
@@ -9,7 +9,7 @@ tags: [FFmpeg,命令]
## 操作步骤 ## 操作步骤
1. 将合并的视频文件都放在同一个文件夹下,例如:`file_1.flv` `file_2.flv` 1. 将合并的视频文件都放在同一个文件夹下,例如:`file_1.flv` `file_2.flv`
2. 新建一个 `video.txt` 文件,写入需要合并的视频文件名称,例如: 2. 新建一个 `video.txt` 文件,写入需要合并的视频文件名称,例如:
```plaintext ```plaintext

View File

@@ -1,5 +1,5 @@
--- ---
title: 解决 Ant TreeSelect树选择组件可以使用键盘选中 disabled已禁用项的问题 title: "解决 Ant TreeSelect树选择组件可以使用键盘选中 disabled已禁用项的问题"
date: 2025-02-11T20:55:27Z date: 2025-02-11T20:55:27Z
lastmod: 2025-02-20T22:56:23Z lastmod: 2025-02-20T22:56:23Z
tags: [Web 前端,Vue.js] tags: [Web 前端,Vue.js]
@@ -7,7 +7,7 @@ tags: [Web 前端,Vue.js]
# 解决 Ant TreeSelect树选择组件可以使用键盘选中 disabled已禁用项的问题 # 解决 Ant TreeSelect树选择组件可以使用键盘选中 disabled已禁用项的问题
最近在使用 Ant Design VueV3.2.20)的 TreeSelect 组件时发现一个问题:`tree-data` 中部分数据的 `disabled` 属性设置为了 `true`,选项是“禁用”状态,无法通过鼠标点击选中,但是可以通过键盘 `↑` `↓` 键切换选项,按下 `Enter` 键选中。 最近在使用 Ant Design VueV3.2.20)的 TreeSelect 组件时发现一个问题:`tree-data` 中部分数据的 `disabled` 属性设置为了 `true`,选项是“禁用”状态,无法通过鼠标点击选中,但是可以通过键盘 `↑` `↓` 键切换选项,按下 `Enter` 键选中。
![](assets/network-asset-3280690-20240119205120253-1872302841-20250212094903-w5wx2lc.png) ![](assets/network-asset-3280690-20240119205120253-1872302841-20250212094903-w5wx2lc.png)
@@ -15,8 +15,8 @@ tags: [Web 前端,Vue.js]
![](assets/network-asset-3280690-20240119210345097-1090947655-20250212094903-j752pdy.png) ![](assets/network-asset-3280690-20240119210345097-1090947655-20250212094903-j752pdy.png)
仅将选项的 `selectable` 属性设置为 `false` 时,对应的选项虽然文本颜色不变,但是不可通过点击或键盘选中。 仅将选项的 `selectable` 属性设置为 `false` 时,对应的选项虽然文本颜色不变,但是不可通过点击或键盘选中。
![](assets/network-asset-3280690-20240119210906388-775240144-20250212094903-n43dx0a.png) ![](assets/network-asset-3280690-20240119210906388-775240144-20250212094903-n43dx0a.png)
因此,如果要实现选项变为灰色且不可选的效果,需要同时将选项的 `disabled` 属性设置为 `true`,将 `seletable` 属性设置为 `false` 因此,如果要实现选项变为灰色且不可选的效果,需要同时将选项的 `disabled` 属性设置为 `true`,将 `seletable` 属性设置为 `false`

View File

@@ -0,0 +1,27 @@
---
title: "解决 ESLint 提示“Parsing error: Unexpected token <”的问题"
date: 2025-03-09T22:32:22Z
lastmod: 2025-10-12T18:14:59Z
tags: [开发,Web 前端,JavaScript,配置]
---
# 解决 ESLint 提示“Parsing error: Unexpected token <”的问题
## 参考资料
- [error Parsing error: Unexpected token &lt; · Issue #447 · jsx-eslint/eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react/issues/447)
## 解决方法
修改 ESLint 配置文件(`.eslintrc.js`
```json
"parserOptions": {
"ecmaFeatures": {
"jsx": true,
"modules": true
}
}
```

View File

@@ -1,5 +1,5 @@
--- ---
title: 解决钉钉通过短链接跳转小程序 scheme 的方式打开小程序时会有一个空白页面的问题 title: "解决钉钉通过短链接跳转小程序 scheme 的方式打开小程序时会有一个空白页面的问题"
date: 2025-03-22T22:17:11Z date: 2025-03-22T22:17:11Z
lastmod: 2025-03-22T22:32:06Z lastmod: 2025-03-22T22:32:06Z
tags: [钉钉,小程序,Web 前端] tags: [钉钉,小程序,Web 前端]

View File

@@ -1,5 +1,5 @@
--- ---
title: 「Minecraft」自动修复部分由异常实体或异常方块实体导致的崩溃 title: "「Minecraft」自动修复部分由异常实体或异常方块实体导致的崩溃"
date: 2025-03-16T19:20:29Z date: 2025-03-16T19:20:29Z
lastmod: 2025-03-16T19:22:00Z lastmod: 2025-03-16T19:22:00Z
tags: [Minecraft,Forge,教程] tags: [Minecraft,Forge,教程]
@@ -7,7 +7,7 @@ tags: [Minecraft,Forge,教程]
# 「Minecraft」自动修复部分由异常实体或异常方块实体导致的崩溃 # 「Minecraft」自动修复部分由异常实体或异常方块实体导致的崩溃
需要安装 `Forge API`;可在 `客户端``服务端` 中使用;对于部分崩溃有效,例如 `Ticking block entity` 需要安装 `Forge API`;可在 `客户端``服务端` 中使用;对于部分崩溃有效,例如 `Ticking block entity`
已测试游戏版本: 已测试游戏版本:
@@ -63,17 +63,17 @@ B:removeErroringTileEntities=true
Set this to true to remove any Entity that throws an error in its update method instead of closing the server and reporting a crash log. Set this to true to remove any Entity that throws an error in its update method instead of closing the server and reporting a crash log.
**注意,把此项设置为** **`true`** **前,请备份存档,以免丢失数据。** **注意,把此项设置为** **`true`** **前,请备份存档,以免丢失数据。**
BE WARNED THIS COULD SCREW UP EVERYTHING USE SPARINGLY WE ARE NOT RESPONSIBLE FOR DAMAGES. BE WARNED THIS COULD SCREW UP EVERYTHING USE SPARINGLY WE ARE NOT RESPONSIBLE FOR DAMAGES.
#### removeErroringTileEntities #### removeErroringTileEntities
**把此项设置为** **`true`** **,可以自动移除发生异常的方块实体,而不是崩溃。** **把此项设置为** **`true`** **,可以自动移除发生异常的方块实体,而不是崩溃。**
Set this to true to remove any TileEntity that throws an error in its update method instead of closing the server and reporting a crash log. Set this to true to remove any TileEntity that throws an error in its update method instead of closing the server and reporting a crash log.
**注意,把此项设置为** **`true`** **前,请备份存档,以免丢失数据。** **注意,把此项设置为** **`true`** **前,请备份存档,以免丢失数据。**
BE WARNED THIS COULD SCREW UP EVERYTHING USE SPARINGLY WE ARE NOT RESPONSIBLE FOR DAMAGES. BE WARNED THIS COULD SCREW UP EVERYTHING USE SPARINGLY WE ARE NOT RESPONSIBLE FOR DAMAGES.

View File

@@ -1,5 +1,5 @@
--- ---
title: 「工具」Frost 网址导航 V2 title: "「工具」Frost 网址导航 V2"
date: 2025-03-16T18:34:16Z date: 2025-03-16T18:34:16Z
lastmod: 2025-03-16T18:36:28Z lastmod: 2025-03-16T18:36:28Z
tags: [网站,工具,导航,HTML5] tags: [网站,工具,导航,HTML5]

View File

@@ -0,0 +1,113 @@
---
title: "Git 提交信息规范Angular"
date: 2025-02-13T09:57:48Z
lastmod: 2025-02-13T09:58:02Z
tags: [Git,开发,规范]
---
# Git 提交信息规范Angular
## 参考资料
- [Angular 提交规范 - GitGuide](https://zjdoc-gitguide.readthedocs.io/zh_CN/latest/message/angular-commit.html)
- [Angular Commit Message Guidelines](https://github.com/angular/angular/blob/22b96b9/CONTRIBUTING.md#-commit-message-guidelines)
## 提交格式
```text
<type>(<scope>): <subject>
<blank line>
<body>
<blank line>
<footer>
```
提交信息中可以包含页眉(`header`​)、正文(`body`​)和页脚(`footer`**页眉内容为必须**,每次提交的信息不超过 `100` 个字符。
页眉中包含提交类型(`type`​)、作用域(`scope`​,可选)和主题(`subject`)。
## 提交类型
提交类型为下面其中一个:
1. `build`:对构建系统或者外部依赖项进行了修改
2. `ci`对CI配置文件或脚本进行了修改
3. `docs`:对文档进行了修改
4. `feat`:增加新的功能
5. `fix`​:修复 `bug`
6. `pref`:提高性能的代码更改
7. `refactor`​:既不是修复 `bug` 也不是添加功能的代码重构
8. `style`:不影响代码含义的修改,例如空格、格式化、缺失的分号等
9. `test`:增加确实的测试或者矫正已存在的测试
## 作用域
作用域可以是任何指定提交更改位置的内容。
## 主题
主题包括了对本次修改的简洁描述,有以下准则:
1. 使用命令式,使用现在时态:“改变”而不是“已改变”也不是“改变了”
2. 不要大写首字母
3. 不在末尾添加句号
## 正文
和主题设置类似,使用命令式、现在时态,应该包含修改的动机以及和之前行为的对比。
## 页脚
### Breaking changes
不兼容修改指的是本次提交修改了不兼容之前版本的 `API` 或者环境变量
所有不兼容修改都必须在页脚中作为中断更改块提到,以 `BREAKING CHANGE: ` 开头,后跟一个空格或者两个换行符,其余的信息就是对此次修改的描述,修改的理由和修改注释
```text
BREAKING CHANGE: isolate scope bindings definition has changed and the inject option for the directive controller injection was removed.
To migrate the code follow the example below:
Before:
...
...
After:
...
...
The removed `inject` wasn't generaly useful for directives so there should be no code using it.
```
### 引用提交的问题
如果本次提交目的是修改 `issue` 的话,需要在页脚引用该 `issue`
以关键字 `Closes` 开头,例如
```text
Closes #234
```
如果修改了多个 `bug`,以逗号隔开
```text
Closes #123, #245, #992
```
## 回滚设置
当此次提交包含回滚(`revert`​)操作,那么页眉以 `"revert:"` 开头,同时在正文中添加 `"This reverts commit hash"`​,其中 `hash` 值表示被回滚前的提交
```text
revert:<type>(<scope>): <subject>
<BLANK LINE>
This reverts commit hash
<other-body>
<BLANK LINE>
<footer>
```

View File

@@ -1,5 +1,5 @@
--- ---
title: 「Web 前端」通过 iframe 实现 form 表单提交不跳转页面 title: "「Web 前端」通过 iframe 实现 form 表单提交不跳转页面"
date: 2025-03-15T22:49:42Z date: 2025-03-15T22:49:42Z
lastmod: 2025-03-15T22:50:25Z lastmod: 2025-03-15T22:50:25Z
tags: [Web 前端,HTML5,代码片段] tags: [Web 前端,HTML5,代码片段]
@@ -13,7 +13,7 @@ tags: [Web 前端,HTML5,代码片段]
## 示例代码 ## 示例代码
可以通过 `form``target` 属性指定在提交表单之后,在哪里显示响应信息: 可以通过 `form``target` 属性指定在提交表单之后,在哪里显示响应信息:
```html ```html
<form action="example.php" method="post" target="result_element"> <form action="example.php" method="post" target="result_element">
@@ -26,7 +26,7 @@ tags: [Web 前端,HTML5,代码片段]
## 注意事项 ## 注意事项
- `form` 元素中的 `target` 属性值需要对应目标 `iframe` 元素的 `name` 属性值。 - `form` 元素中的 `target` 属性值需要对应目标 `iframe` 元素的 `name` 属性值。
- `iframe` 元素可以放到 `body` 中的任意位置。 - `iframe` 元素可以放到 `body` 中的任意位置。

View File

@@ -1,5 +1,5 @@
--- ---
title: HTML5 使用 FileReader 读取并预览文件内容 title: "HTML5 使用 FileReader 读取并预览文件内容"
date: 2025-03-16T18:26:17Z date: 2025-03-16T18:26:17Z
lastmod: 2025-03-16T18:27:48Z lastmod: 2025-03-16T18:27:48Z
tags: [代码片段,HTML5,JavaScript,Web 前端] tags: [代码片段,HTML5,JavaScript,Web 前端]

View File

@@ -1,5 +1,5 @@
--- ---
title: 一些有趣的中文句子(中文博大精深) title: "一些有趣的中文句子(中文博大精深)"
date: 2025-03-16T19:14:21Z date: 2025-03-16T19:14:21Z
lastmod: 2025-03-16T19:19:09Z lastmod: 2025-03-16T19:19:09Z
tags: [文字,句子] tags: [文字,句子]

View File

@@ -1,5 +1,5 @@
--- ---
title: JavaScript 创建并初始化任意长度的数组 title: "JavaScript 创建并初始化任意长度的数组"
date: 2025-02-11T20:45:30Z date: 2025-02-11T20:45:30Z
lastmod: 2025-02-20T22:59:05Z lastmod: 2025-02-20T22:59:05Z
tags: [JavaScript,Web 前端] tags: [JavaScript,Web 前端]
@@ -44,7 +44,7 @@ var arr = [...new Array(5).keys()]; // [0, 1, 2, 3, 4]
## 使用 Array.from() ## 使用 Array.from()
> `Array.from(arrayLike[, mapFn[, thisArg]])` > `Array.from(arrayLike[, mapFn[, thisArg]])`
```javascript ```javascript
var arr = Array.from({length: 5}); // [undefined x 5] var arr = Array.from({length: 5}); // [undefined x 5]

View File

@@ -1,5 +1,5 @@
--- ---
title: 「JavaScript」提取导出网易云音乐歌单歌曲列表信息为文件 title: "「JavaScript」提取导出网易云音乐歌单歌曲列表信息为文件"
date: 2025-03-16T16:11:23Z date: 2025-03-16T16:11:23Z
lastmod: 2025-03-16T16:12:07Z lastmod: 2025-03-16T16:12:07Z
tags: [代码片段,JavaScript,Web 前端,网易云音乐,信息,导出] tags: [代码片段,JavaScript,Web 前端,网易云音乐,信息,导出]

View File

@@ -1,5 +1,5 @@
--- ---
title: 「JavaScript」将 Dynmap 网页上的地图图片合成为一张图 title: "「JavaScript」将 Dynmap 网页上的地图图片合成为一张图"
date: 2025-03-16T16:24:15Z date: 2025-03-16T16:24:15Z
lastmod: 2025-03-16T16:26:41Z lastmod: 2025-03-16T16:26:41Z
tags: [Minecraft,JavaScript,Dynmap,Web 前端,代码片段] tags: [Minecraft,JavaScript,Dynmap,Web 前端,代码片段]
@@ -15,11 +15,11 @@ tags: [Minecraft,JavaScript,Dynmap,Web 前端,代码片段]
## 简介 ## 简介
根据我的 Minecraft 服务器的一位玩家的需求写的 JavaScript可自动将 Dynmap 网页上分块的地图图片合成为一张图。建议使用 `Chrome` 浏览器或 `Chromium` 内核的浏览器进行操作。 根据我的 Minecraft 服务器的一位玩家的需求写的 JavaScript可自动将 Dynmap 网页上分块的地图图片合成为一张图。建议使用 `Chrome` 浏览器或 `Chromium` 内核的浏览器进行操作。
因为是在 `前端` 进行合成,需要在操作前浏览一次要导出的地图区域。不建议合成过大的区域,否则可能会导致浏览器崩溃。 因为是在 `前端` 进行合成,需要在操作前浏览一次要导出的地图区域。不建议合成过大的区域,否则可能会导致浏览器崩溃。
结果会在新窗口中显示(若不能弹出新窗口,请将 `弹出新窗口` 设置为 `允许`)。 结果会在新窗口中显示(若不能弹出新窗口,请将 `弹出新窗口` 设置为 `允许`)。
本代码可能并不是最优的方案,欢迎各位在评论区提出建议。 本代码可能并不是最优的方案,欢迎各位在评论区提出建议。
@@ -170,13 +170,13 @@ exportMap();
1. 在浏览器打开 Dynmap 的页面。 1. 在浏览器打开 Dynmap 的页面。
2. 根据需要调整地图的缩放比例(不建议太大)。 2. 根据需要调整地图的缩放比例(不建议太大)。
3. 打开浏览器的 `开发人员工具`(可使用快捷键 `Ctrl + Shift + I`)。 3. 打开浏览器的 `开发人员工具`(可使用快捷键 `Ctrl + Shift + I`)。
![](assets/network-asset-01-20250316162508-3w1fppe.png) ![](assets/network-asset-01-20250316162508-3w1fppe.png)
**建议将** **`开发人员工具`** **设置为独立窗口显示模式,以让网页有更大的显示区域:** **建议将** **`开发人员工具`** **设置为独立窗口显示模式,以让网页有更大的显示区域:**
右上角的三个点 -\> Dock side -\> Unlock info separate window 右上角的三个点 -\> Dock side -\> Unlock info separate window
4. 拖动地图,直至需要导出的地图范围都完成加载。 4. 拖动地图,直至需要导出的地图范围都完成加载。
5. 切换到 `Console`(控制台)标签页,并将上方的 `代码` 粘贴至输入区。 5. 切换到 `Console`(控制台)标签页,并将上方的 `代码` 粘贴至输入区。
![](assets/network-asset-02-20250316162508-nz6ede0.png) ![](assets/network-asset-02-20250316162508-nz6ede0.png)
6. 按下 `Enter`(回车),等待即可。 6. 按下 `Enter`(回车),等待即可。

View File

@@ -1,5 +1,5 @@
--- ---
title: 「JavaScript」修改 input type="file" 元素的文件对象 title: "「JavaScript」修改 input type=\"file\" 元素的文件对象"
date: 2025-03-15T22:42:40Z date: 2025-03-15T22:42:40Z
lastmod: 2025-03-15T22:43:04Z lastmod: 2025-03-15T22:43:04Z
tags: [Web 前端,HTML5,JavaScript,代码片段] tags: [Web 前端,HTML5,JavaScript,代码片段]

View File

@@ -1,5 +1,5 @@
--- ---
title: 「Web 前端」原生 JavaScript 实现贪吃蛇游戏 title: "「Web 前端」原生 JavaScript 实现贪吃蛇游戏"
date: 2025-03-16T16:20:32Z date: 2025-03-16T16:20:32Z
lastmod: 2025-03-16T16:21:06Z lastmod: 2025-03-16T16:21:06Z
tags: [代码片段,JavaScript,HTML5,Web 前端] tags: [代码片段,JavaScript,HTML5,Web 前端]
@@ -7,11 +7,11 @@ tags: [代码片段,JavaScript,HTML5,Web 前端]
# 「Web 前端」原生 JavaScript 实现贪吃蛇游戏 # 「Web 前端」原生 JavaScript 实现贪吃蛇游戏
使用 `WASD``上下左右` 键控制移动; 使用 `WASD``上下左右` 键控制移动;
按下 `空格``暂停``开始` 游戏; 按下 `空格``暂停``开始` 游戏;
可穿墙到另外一边;每获得 `5` 分,速度 `+0.5` 可穿墙到另外一边;每获得 `5` 分,速度 `+0.5`
仅分享交流,代码不一定是最好的。 仅分享交流,代码不一定是最好的。

View File

@@ -1,5 +1,5 @@
--- ---
title: 「JavaScript」JSDoc 学习记录 title: "「JavaScript」JSDoc 学习记录"
date: 2025-03-15T23:19:54Z date: 2025-03-15T23:19:54Z
lastmod: 2025-03-15T23:25:49Z lastmod: 2025-03-15T23:25:49Z
tags: [JavaScript,Web 前端,学习,记录] tags: [JavaScript,Web 前端,学习,记录]
@@ -149,7 +149,7 @@ function example(options) {
**数组和对象** **数组和对象**
> JSDoc 支持 Closure Compiler 语法定义的数组和对象类型。 > JSDoc 支持 Closure Compiler 语法定义的数组和对象类型。
> 可以在类型名称的后方添加 `[]` 描述数组项的类型。例如 `string[]` 表示字符串数组。 > 可以在类型名称的后方添加 `[]` 描述数组项的类型。例如 `string[]` 表示字符串数组。
> 对于具有已知的属性的对象,可以使用 Closure Compiler 语法描述类型。可以分别描述每个属性,以便为每个属性指定更详细的信息。 > 对于具有已知的属性的对象,可以使用 Closure Compiler 语法描述类型。可以分别描述每个属性,以便为每个属性指定更详细的信息。
一个保存 MyClass 实例对象的数组: 一个保存 MyClass 实例对象的数组:
@@ -171,7 +171,7 @@ function example(options) {
{Object.<number, object>} {Object.<number, object>}
``` ```
一个名称为 `myObj`,包含属性 `a`number`b`(任意类型)的对象: 一个名称为 `myObj`,包含属性 `a`number`b`(任意类型)的对象:
```plaintext ```plaintext
{{a: number, b: string, c}} myObj {{a: number, b: string, c}} myObj
@@ -186,7 +186,7 @@ function example(options) {
> 可以使用 `import` 导入其他文件中的类型。 > 可以使用 `import` 导入其他文件中的类型。
> 注意:此语法是特定于 TypeScript 的,不同于 JSDoc 标准。 > 注意:此语法是特定于 TypeScript 的,不同于 JSDoc 标准。
从文件 `types.js` 中导入 `Example` 类型 从文件 `types.js` 中导入 `Example` 类型
```plaintext ```plaintext
{ import("./types").Example } { import("./types").Example }

View File

@@ -1,5 +1,5 @@
--- ---
title: Linux 允许或禁止指定用户进行 SSH 登录 title: "Linux 允许或禁止指定用户进行 SSH 登录"
date: 2025-03-16T16:04:28Z date: 2025-03-16T16:04:28Z
lastmod: 2025-03-16T16:06:51Z lastmod: 2025-03-16T16:06:51Z
tags: [Linux,SSH,配置] tags: [Linux,SSH,配置]
@@ -14,9 +14,9 @@ tags: [Linux,SSH,配置]
## 允许指定用户登录(白名单) ## 允许指定用户登录(白名单)
在 sshd 的配置文件 `/etc/ssh/sshd_config` 中添加 `AllowUsers` 项,其后方跟随以空格分隔的用户名 PATTERN 列表。 在 sshd 的配置文件 `/etc/ssh/sshd_config` 中添加 `AllowUsers` 项,其后方跟随以空格分隔的用户名 PATTERN 列表。
例如允许 `test-a` 用户和从 `192.168.1.100` 登录的 `test-b` 用户: 例如允许 `test-a` 用户和从 `192.168.1.100` 登录的 `test-b` 用户:
```plaintext ```plaintext
AllowUsers test-a test-b@192.168.1.100 AllowUsers test-a test-b@192.168.1.100
@@ -38,9 +38,9 @@ AllowUsers test-a test-b@192.168.1.100
## 禁止指定用户登录(黑名单) ## 禁止指定用户登录(黑名单)
在 sshd 的配置文件 `/etc/ssh/sshd_config` 中添加 `DenyUsers` 项,,其后方跟随以空格分隔的用户名 PATTERN 列表。 在 sshd 的配置文件 `/etc/ssh/sshd_config` 中添加 `DenyUsers` 项,,其后方跟随以空格分隔的用户名 PATTERN 列表。
例如禁止 `test-c` 用户和从 `192.168.1.100` 登录的 `test-d` 用户: 例如禁止 `test-c` 用户和从 `192.168.1.100` 登录的 `test-d` 用户:
```plaintext ```plaintext
DenyUsers test-c test-d@192.168.1.100 DenyUsers test-c test-d@192.168.1.100
@@ -64,7 +64,7 @@ DenyUsers test-c test-d@192.168.1.100
一个 PATTERN 由零个或多个非空白字符以及“\*”(匹配零个或多个字符的通配符)或“?”(仅匹配一个字符的通配符)组成。 一个 PATTERN 由零个或多个非空白字符以及“\*”(匹配零个或多个字符的通配符)或“?”(仅匹配一个字符的通配符)组成。
例如匹配主机 `192.168.0.0` \~ `192.168.0.9`,可以使用: 例如匹配主机 `192.168.0.0` \~ `192.168.0.9`,可以使用:
```plaintext ```plaintext
192.168.0.? 192.168.0.?
@@ -91,7 +91,7 @@ For example, to allow a key to be used from anywhere within an organisation exce
## 注意 ## 注意
- 配置完成后需要重启 `sshd` 服务(例如 `service sshd restart`)。 - 配置完成后需要重启 `sshd` 服务(例如 `service sshd restart`)。
- 配置的 allow / deny 指令按照此顺序进行处理:`DenyUsers -> AllowUsers -> DenyGroups -> AllowGroups` - 配置的 allow / deny 指令按照此顺序进行处理:`DenyUsers -> AllowUsers -> DenyGroups -> AllowGroups`

View File

@@ -1,5 +1,5 @@
--- ---
title: Minecraft 十周年,感谢有你 title: "Minecraft 十周年,感谢有你"
date: 2025-03-17T00:16:19Z date: 2025-03-17T00:16:19Z
lastmod: 2025-03-17T00:18:27Z lastmod: 2025-03-17T00:18:27Z
tags: [Minecraft,周年] tags: [Minecraft,周年]
@@ -9,7 +9,7 @@ tags: [Minecraft,周年]
不知不觉,距离 Minecraft 首个公开版本的发布日2009 年 5 月 13 日)已经有 10 年了Minecraft 十周年2019年5月17日即将到来我接触 Minecraft 这款游戏也将近有 7 年了。十年以来Minecraft 带给了我们很多的欢笑、回忆和感动。 不知不觉,距离 Minecraft 首个公开版本的发布日2009 年 5 月 13 日)已经有 10 年了Minecraft 十周年2019年5月17日即将到来我接触 Minecraft 这款游戏也将近有 7 年了。十年以来Minecraft 带给了我们很多的欢笑、回忆和感动。
![](assets/network-asset-fab82a145ddc0d2bad0be84a73556a5756283b18-20250317001907-1mf9fwp.gif "https://www.minecraft.net/zh-hans/10th-anniversary") ![](assets/network-asset-fab82a145ddc0d2bad0be84a73556a5756283b18-20250317001907-1mf9fwp.gif "https://www.minecraft.net/zh-hans/10th-anniversary")
还记得,初次接触 Minecraft 是在 2012 年的暑假。那天在网上寻找游戏,然后无意中看到了 Minecraft那时候的版本是 1.2.5。我被其独特的画风(方块、像素)吸引了,就下载来玩了。 还记得,初次接触 Minecraft 是在 2012 年的暑假。那天在网上寻找游戏,然后无意中看到了 Minecraft那时候的版本是 1.2.5。我被其独特的画风(方块、像素)吸引了,就下载来玩了。

View File

@@ -1,5 +1,5 @@
--- ---
title: 「Minecraft」自定义声音资源包 title: "「Minecraft」自定义声音资源包"
date: 2025-03-16T17:43:19Z date: 2025-03-16T17:43:19Z
lastmod: 2025-03-16T17:46:51Z lastmod: 2025-03-16T17:46:51Z
tags: [Minecraft,教程,资源包] tags: [Minecraft,教程,资源包]
@@ -92,11 +92,11 @@ tags: [Minecraft,教程,资源包]
- custom.sound.a、custom.sound.b、custom.sound.ab可根据需要修改 - custom.sound.a、custom.sound.b、custom.sound.ab可根据需要修改
- 通常按照类别以点 `.` 分隔 - 通常按照类别以点 `.` 分隔
- 对应 `playsound` 命令中的 `声音` - 对应 `playsound` 命令中的 `声音`
#### replace #### replace
- 可选,默认为 `false` - 可选,默认为 `false`
- 设定为 true`sounds` 项中定义的音效列表会替换优先级较低的资源包的相同命名空间中与该声音事件名相同的声音。 - 设定为 true`sounds` 项中定义的音效列表会替换优先级较低的资源包的相同命名空间中与该声音事件名相同的声音。
- 设定为 false则补充到已有的音效列表中而不是替换。 - 设定为 false则补充到已有的音效列表中而不是替换。
@@ -108,51 +108,51 @@ tags: [Minecraft,教程,资源包]
#### sounds #### sounds
- 该声音事件使用的音频文件列表 - 该声音事件使用的音频文件列表
- 当该声音事件被触发时,若列表中存在多个项目(类似 `custom.sound.ab` 中的 `sounds` 项),游戏会从此列表定义的音频文件中随机选取一个播放。 - 当该声音事件被触发时,若列表中存在多个项目(类似 `custom.sound.ab` 中的 `sounds` 项),游戏会从此列表定义的音频文件中随机选取一个播放。
#### name #### name
- 从资源包 `assets/<命名空间>/sounds/` 文件夹到此音频文件的相对路径(不带扩展名) - 从资源包 `assets/<命名空间>/sounds/` 文件夹到此音频文件的相对路径(不带扩展名)
- 可填写另一个已存在的声音事件名(受 `type` 项影响) - 可填写另一个已存在的声音事件名(受 `type` 项影响)
- 音频文件格式必须为 `OGG` - 音频文件格式必须为 `OGG`
- 若音频文件路径为 `assets/minecraft/sounds/custom/sound/a.ogg`,则为 `custom/sound/a` - 若音频文件路径为 `assets/minecraft/sounds/custom/sound/a.ogg`,则为 `custom/sound/a`
- 若音频文件路径为 `assets/custom/sounds/sound_a.ogg`,则为 `example:sound_a` - 若音频文件路径为 `assets/custom/sounds/sound_a.ogg`,则为 `example:sound_a`
#### volume #### volume
- 可选,默认为 `1.0` - 可选,默认为 `1.0`
- 此声音播放时的音量 - 此声音播放时的音量
- 值为 0.0 到 1.0 的小数 - 值为 0.0 到 1.0 的小数
- 如非必要,可仅在 `playsound` 命令中设定。 - 如非必要,可仅在 `playsound` 命令中设定。
#### pitch #### pitch
- 可选,默认为 `1.0` - 可选,默认为 `1.0`
- 此声音播放时的音调 - 此声音播放时的音调
- 如非必要,可仅在 `playsound` 命令中设定。 - 如非必要,可仅在 `playsound` 命令中设定。
#### weight #### weight
- 可选,默认为 `1` - 可选,默认为 `1`
- 此声音事件触发时此声音被播放的概率(权重)。 - 此声音事件触发时此声音被播放的概率(权重)。
- 一般用于 `sounds` 项中存在多个项目时。 - 一般用于 `sounds` 项中存在多个项目时。
#### stream #### stream
- 可选,默认为 `false` - 可选,默认为 `false`
- 设置为 true此声音会以流式播放。 - 设置为 true此声音会以流式播放。
- 当声音时长较长时,最好设为 true 以避免卡顿。 - 当声音时长较长时,最好设为 true 以避免卡顿。
- 所有的 `music``record` 类型的音效除了音符盒都使用流式播放它们的时长都达到1分多钟 - 所有的 `music``record` 类型的音效除了音符盒都使用流式播放它们的时长都达到1分多钟
#### preload #### preload
- 可选,默认为 `false` - 可选,默认为 `false`
- 设置为 true则该音频文件会在加载资源包时被加载而不是在播放音效时再被加载。 - 设置为 true则该音频文件会在加载资源包时被加载而不是在播放音效时再被加载。
#### type #### type
- 可选,默认为 `sound` - 可选,默认为 `sound`
- 可填写 `sound``event` - 可填写 `sound``event`
- sound表明 `name` 项中定义的是文件名 - sound表明 `name` 项中定义的是文件名
- event表明 `name` 项中定义的是声音事件名 - event表明 `name` 项中定义的是声音事件名
@@ -172,42 +172,42 @@ playsound <声音> <来源> <玩家> [x] [y] [z] [音量] [音调] [最小音量
- 指定要播放的声音 - 指定要播放的声音
-`sounds.json` 中定义的一个声音事件 -`sounds.json` 中定义的一个声音事件
- 若命名空间不为默认的 `minecraft`,则需要在前方包含命名空间(例如:`example:`)。 - 若命名空间不为默认的 `minecraft`,则需要在前方包含命名空间(例如:`example:`)。
- 例如:`custom.sound.a``example:sound.a` - 例如:`custom.sound.a``example:sound.a`
- 来源‌‌ - 来源‌‌
- 设定播放的声音所属的类型,对应游戏选项中的 `音乐和声音` 的分类。 - 设定播放的声音所属的类型,对应游戏选项中的 `音乐和声音` 的分类。
- 可填写:`master, music, record, weather, block, hostile, neutral, player, ambient, voice` - 可填写:`master, music, record, weather, block, hostile, neutral, player, ambient, voice`
- 一般为 `master` - 一般为 `master`
- 玩家 - 玩家
- 设定播放声音的目标(仅设定的目标可听到该声音) - 设定播放声音的目标(仅设定的目标可听到该声音)
- 填写 `玩家ID``目标选择器` - 填写 `玩家ID``目标选择器`
- 例如:`Frost_ZX``@a[x=0,y=80,z=0,r=16]` - 例如:`Frost_ZX``@a[x=0,y=80,z=0,r=16]`
- x y z - x y z
- 发出声音的位置 - 发出声音的位置
- 可用波浪号 `~` 来指定一个相对于命令执行者(玩家、命令方块)的位置 - 可用波浪号 `~` 来指定一个相对于命令执行者(玩家、命令方块)的位置
- 例如:`0 85 0``~5 ~ ~-5` - 例如:`0 85 0``~5 ~ ~-5`
- 音量 - 音量
- 设定声音能被听见的距离 - 设定声音能被听见的距离
- 最小值为 `0.0` - 最小值为 `0.0`
- 设定小于 `1.0` 的值,声音的音量较低,可听到该声音的范围(中心坐标为 `x y z` 的球状)会较小。 - 设定小于 `1.0` 的值,声音的音量较低,可听到该声音的范围(中心坐标为 `x y z` 的球状)会较小。
- 设定大于 `1.0` 的值,声音的音量不会增大(保持 `1.0`),但可听到该声音的范围(`16`)会与音量相乘。 - 设定大于 `1.0` 的值,声音的音量不会增大(保持 `1.0`),但可听到该声音的范围(`16`)会与音量相乘。
- 音量设定为 `1.0` 时,可听到该声音的范围为:中心坐标为 `x y z`,半径为 `16` 方块的球状范围。 - 音量设定为 `1.0` 时,可听到该声音的范围为:中心坐标为 `x y z`,半径为 `16` 方块的球状范围。
- 声音总会基于目标与球体中心(`x y z`)的距离逐渐衰减至无声(即使对方在 `目标` 范围内,也有可能听不到该声音)。 - 声音总会基于目标与球体中心(`x y z`)的距离逐渐衰减至无声(即使对方在 `目标` 范围内,也有可能听不到该声音)。
- 音调 - 音调
- 设定声音播放时的音调。 - 设定声音播放时的音调。
- 数值在 `0.0``2.0` 之间(含 `0.0``2.0` - 数值在 `0.0``2.0` 之间(含 `0.0``2.0`
- 小于 `0.5` 的值与 `0.5` 等价(效果相同) - 小于 `0.5` 的值与 `0.5` 等价(效果相同)
- 小于 `1.0` 的值会降低音调,增加持续时间。 - 小于 `1.0` 的值会降低音调,增加持续时间。
- 大于 `1.0` 的值会提升音调,减小持续时间。 - 大于 `1.0` 的值会提升音调,减小持续时间。
- 最小音量 - 最小音量
- 设定在可听到该声音的范围外的目标能听到该声音的音量 - 设定在可听到该声音的范围外的目标能听到该声音的音量
- 数值在 `0.0``1.0` 之间(含 `0.0``1.0` - 数值在 `0.0``1.0` 之间(含 `0.0``1.0`
#### playsound 命令示例 #### playsound 命令示例

View File

@@ -1,5 +1,5 @@
--- ---
title: 「Minecraft」In-Game Info XML 样式 title: "「Minecraft」In-Game Info XML 样式"
date: 2025-03-16T18:37:30Z date: 2025-03-16T18:37:30Z
lastmod: 2025-03-16T18:39:48Z lastmod: 2025-03-16T18:39:48Z
tags: [Minecraft,模组,分享,代码片段] tags: [Minecraft,模组,分享,代码片段]
@@ -23,13 +23,13 @@ tags: [Minecraft,模组,分享,代码片段]
#### 方法一 #### 方法一
1. 把代码保存为 `InGameInfo.xml` 文件(编码 `UTF-8`),放入 `.minecraft/config/` 文件夹。 1. 把代码保存为 `InGameInfo.xml` 文件(编码 `UTF-8`),放入 `.minecraft/config/` 文件夹。
2. 启动游戏或直接在游戏中执行命令 `/igi reload` 进行加载。 2. 启动游戏或直接在游戏中执行命令 `/igi reload` 进行加载。
#### 方法二 #### 方法二
1. 把代码保存为 `文件名.xml` 文件(文件名自定义;编码 `UTF-8`),放入 `.minecraft/config/` 文件夹。 1. 把代码保存为 `文件名.xml` 文件(文件名自定义;编码 `UTF-8`),放入 `.minecraft/config/` 文件夹。
2. 在游戏中执行命令 `/igi load 文件名.xml``文件名` 是第 1 步中自己修改的文件名)进行加载。 2. 在游戏中执行命令 `/igi load 文件名.xml``文件名` 是第 1 步中自己修改的文件名)进行加载。
## 效果图 ## 效果图

View File

@@ -1,5 +1,5 @@
--- ---
title: Minecraft Java Edition 命令合集 title: "Minecraft Java Edition 命令合集"
date: 2025-03-16T22:24:06Z date: 2025-03-16T22:24:06Z
lastmod: 2025-03-16T22:26:03Z lastmod: 2025-03-16T22:26:03Z
tags: [Minecraft,合集,命令,命令方块] tags: [Minecraft,合集,命令,命令方块]
@@ -13,7 +13,7 @@ tags: [Minecraft,合集,命令,命令方块]
--- ---
> 如无特殊情况,本文中的 `目标选择器` 均使用 `r=半径` 作为说明,可根据需要自行修改。 > 如无特殊情况,本文中的 `目标选择器` 均使用 `r=半径` 作为说明,可根据需要自行修改。
> >
> **安全起见,最好先** **`/testfor`** **一下设定的** **`目标选择器`** **是否正确选择了所需要修改的** **`实体`** **。** > **安全起见,最好先** **`/testfor`** **一下设定的** **`目标选择器`** **是否正确选择了所需要修改的** **`实体`** **。**
@@ -29,16 +29,16 @@ tags: [Minecraft,合集,命令,命令方块]
打开或关闭 `半径` 范围内的生物的 AI已测试1.10.2、1.12.2 打开或关闭 `半径` 范围内的生物的 AI已测试1.10.2、1.12.2
- 打开(默认状态):`/entitydata @e[r=半径] {NoAI:0}` - 打开(默认状态):`/entitydata @e[r=半径] {NoAI:0}`
- 关闭:`/entitydata @e[r=半径] {NoAI:1}` - 关闭:`/entitydata @e[r=半径] {NoAI:1}`
更改 `半径` 范围内的 `自定义 NPC``玩家材质 ID``游戏 ID`已测试1.10.2 更改 `半径` 范围内的 `自定义 NPC``玩家材质 ID``游戏 ID`已测试1.10.2
```text ```text
/entitydata @e[r=半径,type=customnpcs.CustomNpc] {SkinUsername:{Name:"游戏 ID"}} /entitydata @e[r=半径,type=customnpcs.CustomNpc] {SkinUsername:{Name:"游戏 ID"}}
``` ```
使 `半径` 范围内的 `RailCraft 永动机车` 的旋转角度变为 `角度` 使 `半径` 范围内的 `RailCraft 永动机车` 的旋转角度变为 `角度`
```text ```text
已测试1.10.2 已测试1.10.2
@@ -50,25 +50,25 @@ tags: [Minecraft,合集,命令,命令方块]
可用的“角度”0.0f 90.0f 180.0f 270.0f 可用的“角度”0.0f 90.0f 180.0f 270.0f
``` ```
使 `半径` 范围内的 `RailCraft 永动机车` 锁定私人模式已测试1.10.2 使 `半径` 范围内的 `RailCraft 永动机车` 锁定私人模式已测试1.10.2
```text ```text
/entitydata @e[r=半径,type=railcraft.locomotive_creative] {lock:"PRIVATE"} /entitydata @e[r=半径,type=railcraft.locomotive_creative] {lock:"PRIVATE"}
``` ```
使 `半径` 范围内的 `RailCraft 永动机车` 启动已测试1.10.2 使 `半径` 范围内的 `RailCraft 永动机车` 启动已测试1.10.2
```text ```text
/entitydata @e[r=半径,type=railcraft.locomotive_creative] {locoMode:2b} /entitydata @e[r=半径,type=railcraft.locomotive_creative] {locoMode:2b}
``` ```
使 `半径` 范围内的 `RailCraft 永动机车` 停止已测试1.10.2 使 `半径` 范围内的 `RailCraft 永动机车` 停止已测试1.10.2
```text ```text
/entitydata @e[r=半径,type=railcraft.locomotive_creative] {locoMode:0b} /entitydata @e[r=半径,type=railcraft.locomotive_creative] {locoMode:0b}
``` ```
使 `半径` 范围内的 `矿车` 内显示方块 ID 为 `ID:数据值` 的方块 使 `半径` 范围内的 `矿车` 内显示方块 ID 为 `ID:数据值` 的方块
```text ```text
已测试1.10.2 已测试1.10.2
@@ -78,13 +78,13 @@ tags: [Minecraft,合集,命令,命令方块]
/entitydata @e[r=半径,type=minecart] {CustomDisplayTile:1b,DisplayTile:"ID",DisplayData:数据值,DisplayOffset:方块垂直位移} /entitydata @e[r=半径,type=minecart] {CustomDisplayTile:1b,DisplayTile:"ID",DisplayData:数据值,DisplayOffset:方块垂直位移}
``` ```
使 `半径` 范围内的 `生物` 无敌已测试1.10.2 使 `半径` 范围内的 `生物` 无敌已测试1.10.2
```text ```text
/entitydata @e[r=半径] {Invulnerable:1b} /entitydata @e[r=半径] {Invulnerable:1b}
``` ```
使 `半径` 范围内的 `物品` 无法被捡起 & 消失 使 `半径` 范围内的 `物品` 无法被捡起 & 消失
```text ```text
已测试1.10.2 Sponge 服务端 已测试1.10.2 Sponge 服务端
@@ -121,19 +121,19 @@ tags: [Minecraft,合集,命令,命令方块]
## /summom ## /summom
`原地` 生成半径为 `半径` ,时长为 `游戏刻``伤害 II` 的药水云已测试1.10.2 `原地` 生成半径为 `半径` ,时长为 `游戏刻``伤害 II` 的药水云已测试1.10.2
```text ```text
/summon AreaEffectCloud ~ ~ ~ {Age:0,Duration:游戏刻,ReapplicationDelay:20,WaitTime:20,DurationOnUse:0,Radius:半径f,RadiusPerTick:0.0001f,RadiusOnUse:0.0f,Particle:flame,Effects:[{Ambient:0b,Amplifier:1b,Id:7b,ShowParticles:1b,Duration:1}]} /summon AreaEffectCloud ~ ~ ~ {Age:0,Duration:游戏刻,ReapplicationDelay:20,WaitTime:20,DurationOnUse:0,Radius:半径f,RadiusPerTick:0.0001f,RadiusOnUse:0.0f,Particle:flame,Effects:[{Ambient:0b,Amplifier:1b,Id:7b,ShowParticles:1b,Duration:1}]}
``` ```
`原地` 生成名称为 `ID``无敌` 的临时 NPC已测试1.10.2 Sponge 服务端) `原地` 生成名称为 `ID``无敌` 的临时 NPC已测试1.10.2 Sponge 服务端)
```text ```text
/summon Sponge.Human ~ ~ ~ {Invulnerable:1b,CustomName:"ID"} /summon Sponge.Human ~ ~ ~ {Invulnerable:1b,CustomName:"ID"}
``` ```
`原地` 生成一辆内部显示方块 ID 为 `ID:数据值` 的方块的矿车 `原地` 生成一辆内部显示方块 ID 为 `ID:数据值` 的方块的矿车
```text ```text
已测试1.10.2 已测试1.10.2
@@ -143,7 +143,7 @@ tags: [Minecraft,合集,命令,命令方块]
/summon minecart ~ ~ ~ {CustomDisplayTile:1b,DisplayTile:"ID",DisplayData:数据值,DisplayOffset:方块垂直位移} /summon minecart ~ ~ ~ {CustomDisplayTile:1b,DisplayTile:"ID",DisplayData:数据值,DisplayOffset:方块垂直位移}
``` ```
`原地` 生成方块 ID 为 `ID:数据值` 的浮空方块已测试1.12.2 `原地` 生成方块 ID 为 `ID:数据值` 的浮空方块已测试1.12.2
```text ```text
/summon falling_block X Y Z {Block:"ID",Data:数据值b,Time:1,NoGravity:1b,UpdateBlocked:1b,CustomName:"名称"} /summon falling_block X Y Z {Block:"ID",Data:数据值b,Time:1,NoGravity:1b,UpdateBlocked:1b,CustomName:"名称"}
@@ -151,18 +151,18 @@ tags: [Minecraft,合集,命令,命令方块]
## /testfor ## /testfor
检测半径为 `半径` 的玩家手上是否 `持有` 相应 `物品 ID` 的物品已测试1.10.2 检测半径为 `半径` 的玩家手上是否 `持有` 相应 `物品 ID` 的物品已测试1.10.2
```text ```text
/testfor @a[r=半径] {SelectedItem:{id:物品 ID}} /testfor @a[r=半径] {SelectedItem:{id:物品 ID}}
``` ```
> 检测的不一定是 `物品`,也可以是 `方块`、`装备` 等等,也支持检测模组中的物品。 > 检测的不一定是 `物品`,也可以是 `方块`、`装备` 等等,也支持检测模组中的物品。
> >
> 例: > 例:
> >
> `/testfor @a[r=5] {SelectedItem:{id:minecraft:stone}}` > `/testfor @a[r=5] {SelectedItem:{id:minecraft:stone}}`
> >
> `/testfor @a[r=16] {SelectedItem:{id:wheat_plus:MaiZiTong}}` > `/testfor @a[r=16] {SelectedItem:{id:wheat_plus:MaiZiTong}}`

View File

@@ -1,5 +1,5 @@
--- ---
title: Minecraft Java 版服务端启动参数选项 title: "Minecraft Java 版服务端启动参数选项"
date: 2025-03-16T15:41:39Z date: 2025-03-16T15:41:39Z
lastmod: 2025-03-16T15:42:12Z lastmod: 2025-03-16T15:42:12Z
tags: [Minecraft,Java,服务器] tags: [Minecraft,Java,服务器]
@@ -22,31 +22,31 @@ tags: [Minecraft,Java,服务器]
- `--forceUpgrade` - `--forceUpgrade`
强制升级所有区块到服务端目前的版本(单人游戏世界也可用)。 强制升级所有区块到服务端目前的版本(单人游戏世界也可用)。
此选项会增加启动服务端所需的时间。 此选项会增加启动服务端所需的时间。
- `--initSettings` - `--initSettings`
只初始化 `server.properties``eula.txt`,然后退出。 只初始化 `server.properties``eula.txt`,然后退出。
- `--jfrprofile` - `--jfrprofile`
启动服务端时初始化 Java Flight Recorder。 启动服务端时初始化 Java Flight Recorder。
只在 Minecraft 1.18 及以上的版本可用。 只在 Minecraft 1.18 及以上的版本可用。
- `--nogui` - `--nogui`
启动服务端不显示服务端内置的图形界面。 启动服务端不显示服务端内置的图形界面。
添加该参数后,只能在系统的 “命令提示符” 或 “终端” 中控制服务端。 添加该参数后,只能在系统的 “命令提示符” 或 “终端” 中控制服务端。
- `--port <Integer>` - `--port <Integer>`
指定服务端监听的端口(默认值为 -1 ),忽略在 `server.properties` 中的设置。 指定服务端监听的端口(默认值为 -1 ),忽略在 `server.properties` 中的设置。
- `--safeMode` - `--safeMode`
安全模式,加载存档时只使用原版数据包。 安全模式,加载存档时只使用原版数据包。
- `--serverId <String>` - `--serverId <String>`
给服务端指定一个 ID似乎没有作用 给服务端指定一个 ID似乎没有作用
- `--singleplayer <String>` - `--singleplayer <String>`
使服务端以离线模式运行(参数值 `<String>` 的用途未知,可能是 Mojang 内部使用的)。 使服务端以离线模式运行(参数值 `<String>` 的用途未知,可能是 Mojang 内部使用的)。
- `--universe <String>` - `--universe <String>`
指定查找存档文件夹所在的路径(默认为 `.`,即当前目录)。 指定查找存档文件夹所在的路径(默认为 `.`,即当前目录)。
- `--world <String>` - `--world <String>`
指定 `level.dat` 所在文件夹的名称(存档文件夹名称)。 指定 `level.dat` 所在文件夹的名称(存档文件夹名称)。
- `-o true` - `-o true`
使服务端以在线模式运行,只有经过认证的用户才能进入(新版本中此选项不可用)。 使服务端以在线模式运行,只有经过认证的用户才能进入(新版本中此选项不可用)。
示例命令行: 示例命令行:
- `java -Xms256M -Xmx2G -jar minecraft_server.jar --forceUpgrade --nogui` - `java -Xms256M -Xmx2G -jar minecraft_server.jar --forceUpgrade --nogui`

View File

@@ -1,5 +1,5 @@
--- ---
title: 「Minecraft」相关链接 title: "「Minecraft」相关链接"
date: 2025-03-16T22:22:44Z date: 2025-03-16T22:22:44Z
lastmod: 2025-03-16T22:23:24Z lastmod: 2025-03-16T22:23:24Z
tags: [Minecraft,链接,网站] tags: [Minecraft,链接,网站]

View File

@@ -1,5 +1,5 @@
--- ---
title: 「Minecraft」Funny Items Mod title: "「Minecraft」Funny Items Mod"
date: 2025-03-16T18:41:35Z date: 2025-03-16T18:41:35Z
lastmod: 2025-03-16T18:44:20Z lastmod: 2025-03-16T18:44:20Z
tags: [Minecraft,模组] tags: [Minecraft,模组]
@@ -42,7 +42,7 @@ TNT原版 + 铁粒
**合成表**(有序合成) **合成表**(有序合成)
羽毛(原版) + 末影珍珠 `4` 羽毛(原版) + 末影珍珠 `4`
![合成表](assets/network-asset-recipe-rightclick-to-fly-20250316184209-08yqxu4.png) ![合成表](assets/network-asset-recipe-rightclick-to-fly-20250316184209-08yqxu4.png)
**可配置项** **可配置项**
@@ -94,7 +94,7 @@ TNT原版 + 铁粒
**合成表**(有序合成) **合成表**(有序合成)
火药 + 铁锭 `4` 火药 + 铁锭 `4`
![合成表](assets/network-asset-recipe-hand-grenade-20250316184209-t0om6f6.png) ![合成表](assets/network-asset-recipe-hand-grenade-20250316184209-t0om6f6.png)
**可配置项** **可配置项**
@@ -103,7 +103,7 @@ TNT原版 + 铁粒
#### 铁剑(异常) #### 铁剑(异常)
> 攻击 `生物` 后,随机给予 `生物` 随机的 `伤害值` 或 `生命值`。 > 攻击 `生物` 后,随机给予 `生物` 随机的 `伤害值` 或 `生命值`。
**耐久度** **耐久度**
@@ -120,7 +120,7 @@ TNT原版 + 铁粒
#### 钻石剑(异常) #### 钻石剑(异常)
> 攻击 `生物` 后,随机给予 `生物` 随机的 `伤害值` 或 `生命值`。 > 攻击 `生物` 后,随机给予 `生物` 随机的 `伤害值` 或 `生命值`。
**耐久度** **耐久度**
@@ -187,21 +187,21 @@ TNT原版 + 铁粒
- `/funnyitems get` - `/funnyitems get`
获取当前配置。 获取当前配置。
- `/funnyitems reset` - `/funnyitems reset`
重置配置(第一次使用或更新后如果发现有配置值为 0最好执行一次或手动将其 `set` 为默认值以免出现问题)。 重置配置(第一次使用或更新后如果发现有配置值为 0最好执行一次或手动将其 `set` 为默认值以免出现问题)。
- `/funnyitems set AttackRandomDiamond_Max <数值>` - `/funnyitems set AttackRandomDiamond_Max <数值>`
修改 `钻石剑(异常)` 的随机值的最大值(默认值 14 修改 `钻石剑(异常)` 的随机值的最大值(默认值 14
- `/funnyitems set AttackRandomIron_Max <数值>` - `/funnyitems set AttackRandomIron_Max <数值>`
修改 `铁剑(异常)` 的随机值的最大值(默认值 12 修改 `铁剑(异常)` 的随机值的最大值(默认值 12
- `/funnyitems set DiamondExplode_Power <数值>` - `/funnyitems set DiamondExplode_Power <数值>`
修改 `钻石` 的爆炸威力(默认值 4 修改 `钻石` 的爆炸威力(默认值 4
- `/funnyitems set HandGrenade_Power <数值>` - `/funnyitems set HandGrenade_Power <数值>`
修改 `手榴弹` 的爆炸威力(默认值 4 修改 `手榴弹` 的爆炸威力(默认值 4
- `/funnyitems set SteveExplode_Power <数值>` - `/funnyitems set SteveExplode_Power <数值>`
修改 `炸弹人` 的爆炸威力(默认值 2 修改 `炸弹人` 的爆炸威力(默认值 2
- `/funnyitems set TNTA_Power <数值>` - `/funnyitems set TNTA_Power <数值>`
修改 `TNT` 的爆炸威力(默认值 4 修改 `TNT` 的爆炸威力(默认值 4
- `/funnyitems set ToSky_High <数值>` - `/funnyitems set ToSky_High <数值>`
修改 `羽毛` 的传送高度差(默认值 100 修改 `羽毛` 的传送高度差(默认值 100

View File

@@ -1,5 +1,5 @@
--- ---
title: 使用 gooreplacer 插件解决国内在 Minecraft 官网不能登录的问题 title: "使用 gooreplacer 插件解决国内在 Minecraft 官网不能登录的问题"
date: 2025-03-16T18:45:10Z date: 2025-03-16T18:45:10Z
lastmod: 2025-03-16T18:53:44Z lastmod: 2025-03-16T18:53:44Z
tags: [Minecraft,教程,浏览器,插件] tags: [Minecraft,教程,浏览器,插件]
@@ -31,7 +31,7 @@ tags: [Minecraft,教程,浏览器,插件]
Minecraft 国际版官网启用了 reCAPTCHA 验证码,由于其使用了 google.com 的域名,在中国大陆不能正常加载,导致点击“登录”按钮后没有任何的反应。 Minecraft 国际版官网启用了 reCAPTCHA 验证码,由于其使用了 google.com 的域名,在中国大陆不能正常加载,导致点击“登录”按钮后没有任何的反应。
本方法通过扩展程序把 `www.google.com/recaptcha` 重定向为 `recaptcha.net/recaptcha`,使 Minecraft 国际版官网上的 reCAPTCHA 能正常加载以登录。 本方法通过扩展程序把 `www.google.com/recaptcha` 重定向为 `recaptcha.net/recaptcha`,使 Minecraft 国际版官网上的 reCAPTCHA 能正常加载以登录。
## 安装扩展程序 ## 安装扩展程序
@@ -46,9 +46,9 @@ Minecraft 国际版官网启用了 reCAPTCHA 验证码,由于其使用了 goog
由于 Chrome 网上应用商店使用了 google.com 的域名,所以一般情况下,在中国大陆也是不能访问的,你可能要通过以下的方法安装 gooreplacer 扩展程序(如果你使用的是 Firefox 浏览器,则可以直接安装)。 由于 Chrome 网上应用商店使用了 google.com 的域名,所以一般情况下,在中国大陆也是不能访问的,你可能要通过以下的方法安装 gooreplacer 扩展程序(如果你使用的是 Firefox 浏览器,则可以直接安装)。
1. 进入 gooreplacer 扩展程序的 [GitHub 仓库](#20250316184740-67klq0m) 页面。 1. 进入 gooreplacer 扩展程序的 [GitHub 仓库](#20250316184740-67klq0m) 页面。
2.`安装` 部分找到 `此外,也可以直接下载本仓库的 crx 文件` ,点击 [crx 文件](https://github.com/jiacai2050/gooreplacer/blob/master/gooreplacer.crx) 字段,然后在打开的页面中点击 [Download](https://github.com/jiacai2050/gooreplacer/raw/master/gooreplacer.crx) 即可下载扩展程序文件(当然,你也可以直接点击这里的 `Download` 进行下载)。 2.`安装` 部分找到 `此外,也可以直接下载本仓库的 crx 文件` ,点击 [crx 文件](https://github.com/jiacai2050/gooreplacer/blob/master/gooreplacer.crx) 字段,然后在打开的页面中点击 [Download](https://github.com/jiacai2050/gooreplacer/raw/master/gooreplacer.crx) 即可下载扩展程序文件(当然,你也可以直接点击这里的 `Download` 进行下载)。
![Download CRX](assets/network-asset-download-crx-20250316184540-c6u4bof.png) ![Download CRX](assets/network-asset-download-crx-20250316184540-c6u4bof.png)
3. 在 Chrome 中打开 `chrome://extensions/`,然后把刚刚下载的 `gooreplacer.crx` 文件拖到页面中,等待一会就会弹出确认安装提示框,点击“添加扩展程序”然后稍等片刻就安装完成了。 3. 在 Chrome 中打开 `chrome://extensions/`,然后把刚刚下载的 `gooreplacer.crx` 文件拖到页面中,等待一会就会弹出确认安装提示框,点击“添加扩展程序”然后稍等片刻就安装完成了。
## 配置扩展程序 ## 配置扩展程序

View File

@@ -1,5 +1,5 @@
--- ---
title: 「Minecraft」OP 权限等级 title: "「Minecraft」OP 权限等级"
date: 2025-03-19T12:32:49Z date: 2025-03-19T12:32:49Z
lastmod: 2025-03-19T12:35:47Z lastmod: 2025-03-19T12:35:47Z
tags: [Minecraft,科普] tags: [Minecraft,科普]
@@ -39,7 +39,7 @@ tags: [Minecraft,科普]
- 函数Function拥有权限等级 2可以在 `server.properties` 中修改)。 - 函数Function拥有权限等级 2可以在 `server.properties` 中修改)。
- 对于玩家: - 对于玩家:
- 若玩家在服务器中拥有 OP 权限,其权限等级可在服务端的 `ops.json` 文件中指定,默认权限等级可在 `server.properties` 中设置。 - 若玩家在服务器中拥有 OP 权限,其权限等级可在服务端的 `ops.json` 文件中指定,默认权限等级可在 `server.properties` 中设置。
- 若玩家处于单人世界或为局域网世界的所有者(房主),且启用了作弊,则其权限等级为 4。 - 若玩家处于单人世界或为局域网世界的所有者(房主),且启用了作弊,则其权限等级为 4。
### 基岩版 ### 基岩版

View File

@@ -1,5 +1,5 @@
--- ---
title: 「优化」使你的 Minecraft 玩起来更流畅 title: "「优化」使你的 Minecraft 玩起来更流畅"
date: 2025-02-15T19:17:41Z date: 2025-02-15T19:17:41Z
lastmod: 2025-02-20T23:04:13Z lastmod: 2025-02-20T23:04:13Z
tags: [游戏,Minecraft,教程,优化] tags: [游戏,Minecraft,教程,优化]
@@ -46,14 +46,14 @@ Java 分 32 位和 64 位版本,如果你的系统是 64 位,就安装 64
## 方法五:给 Java 分配更多的内存展开目录 ## 方法五:给 Java 分配更多的内存展开目录
本方法以正版启动器为例,其他的第三方启动器通常能在`启动器设置`找到内存分配设置选项。 本方法以正版启动器为例,其他的第三方启动器通常能在`启动器设置`找到内存分配设置选项。
**注意:内存只能分配** **`小于`** **当前系统剩余内存的大小。** **注意:内存只能分配** **`小于`** **当前系统剩余内存的大小。**
#### 步骤展开目录 #### 步骤展开目录
1. 点击启动器左下角的 `Edit Profile` 按钮: 1. 点击启动器左下角的 `Edit Profile` 按钮:
![Edit Profile](assets/network-asset-728d23a7gw1f7c6gpkf2uj206t02eq2q-20250215192022-mhqzu1n.jpg "Edit Profile") ![Edit Profile](assets/network-asset-728d23a7gw1f7c6gpkf2uj206t02eq2q-20250215192022-mhqzu1n.jpg "Edit Profile")
2. 勾选 `JVM Arguments` 后,即可修改内容: 2. 勾选 `JVM Arguments` 后,即可修改内容:
![JVM Arguments](assets/network-asset-728d23a7gw1f7c6grxp6ej20jf02pt8t-20250215192023-q393aq2.jpg "JVM Arguments") ![JVM Arguments](assets/network-asset-728d23a7gw1f7c6grxp6ej20jf02pt8t-20250215192023-q393aq2.jpg "JVM Arguments")
3. 修改完成后,保存即可: 3. 修改完成后,保存即可:
![Save Profile](assets/network-asset-728d23a7gw1f7c6guubkij207401m742-20250215192025-ikuc9bb.jpg "Save Profile") ![Save Profile](assets/network-asset-728d23a7gw1f7c6guubkij207401m742-20250215192025-ikuc9bb.jpg "Save Profile")
@@ -82,7 +82,7 @@ Optifine 是一个优化 Minecraft 的 MOD模组它提供了非常实
![设置](assets/network-asset-728d23a7gw1f7c6gb146rj208y01qjr9-20250215192026-v5h81f5.jpg "设置") ![设置](assets/network-asset-728d23a7gw1f7c6gb146rj208y01qjr9-20250215192026-v5h81f5.jpg "设置")
`图像品质` 设置为 `流畅`(视频设置) `图像品质` 设置为 `流畅`(视频设置)
![设置](assets/network-asset-728d23a7gw1f7c6gigwd8j208y01qwed-20250215192027-tlsnvyt.jpg "设置") ![设置](assets/network-asset-728d23a7gw1f7c6gigwd8j208y01qwed-20250215192027-tlsnvyt.jpg "设置")

View File

@@ -1,5 +1,5 @@
--- ---
title: MIUI 拨号盘指令(代码)合集 title: "MIUI 拨号盘指令(代码)合集"
date: 2025-02-11T20:55:13Z date: 2025-02-11T20:55:13Z
lastmod: 2025-02-20T22:58:12Z lastmod: 2025-02-20T22:58:12Z
tags: [Android,小米,系统,HyperOS,MIUI] tags: [Android,小米,系统,HyperOS,MIUI]

View File

@@ -1,5 +1,5 @@
--- ---
title: 移动端 QQ & 微信页面链接 title: "移动端 QQ & 微信页面链接"
date: 2025-03-16T22:07:27Z date: 2025-03-16T22:07:27Z
lastmod: 2025-03-16T22:14:01Z lastmod: 2025-03-16T22:14:01Z
tags: [链接,Android,QQ,微信,软件] tags: [链接,Android,QQ,微信,软件]
@@ -19,297 +19,297 @@ tags: [链接,Android,QQ,微信,软件]
### 表情搜索 ### 表情搜索
- `https://ti.qq.com/hybrid-h5/emoticon/recommend` - `https://ti.qq.com/hybrid-h5/emoticon/recommend`
- 2020-11-44 - 2020-11-44
### 打卡 ### 打卡
#### 主页 #### 主页
- `https://ti.qq.com/signin/public/index.html` - `https://ti.qq.com/signin/public/index.html`
#### 我的卡片 #### 我的卡片
- `https://ti.qq.com/signin/public/cardsv2.html` - `https://ti.qq.com/signin/public/cardsv2.html`
- 2020-07-02 - 2020-07-02
#### QQ盲盒 #### QQ盲盒
- `https://h5.qzone.qq.com/v2/vip/giftv2/blindBox` - `https://h5.qzone.qq.com/v2/vip/giftv2/blindBox`
- 2021-03-07 - 2021-03-07
### 达人 ### 达人
- `https://ti.qq.com/xman/self.html` - `https://ti.qq.com/xman/self.html`
### 个性装扮 ### 个性装扮
- `https://zb.vip.qq.com/sonic/index` - `https://zb.vip.qq.com/sonic/index`
### 好友互动标识 ### 好友互动标识
- `https://ti.qq.com/hybrid-h5/interactive_logo/two?target_uin=对方Q号&_nav_txtclr=000000` - `https://ti.qq.com/hybrid-h5/interactive_logo/two?target_uin=对方Q号&_nav_txtclr=000000`
### 空间 ### 空间
#### 访客周报 #### 访客周报
- `https://h5.qzone.qq.com/qzoneVisitor/reporter/detail/Q号` - `https://h5.qzone.qq.com/qzoneVisitor/reporter/detail/Q号`
- 2020-08-10 - 2020-08-10
#### 好友动态权限设置 #### 好友动态权限设置
- `https://h5.qzone.qq.com/qzone/setting` - `https://h5.qzone.qq.com/qzone/setting`
- 2020-09-03 - 2020-09-03
#### 花藤 #### 花藤
- `https://qzs.qq.com/qzone/phone/m/v4/module/playbar/index.html?appid=1101255595` - `https://qzs.qq.com/qzone/phone/m/v4/module/playbar/index.html?appid=1101255595`
- 2020-08-10 - 2020-08-10
#### 我的好友 #### 我的好友
- `https://h5.qzone.qq.com/platform/myfriend` - `https://h5.qzone.qq.com/platform/myfriend`
#### 小秘密 #### 小秘密
- `https://h5.qzone.qq.com/secret/list` - `https://h5.qzone.qq.com/secret/list`
### 亲密关系 ### 亲密关系
- `https://ti.qq.com/hybrid-h5/intimate/list` - `https://ti.qq.com/hybrid-h5/intimate/list`
### 礼物 ### 礼物
- `https://h5.qzone.qq.com/v2/vip/giftv2/vuemall?friends=Q号` - `https://h5.qzone.qq.com/v2/vip/giftv2/vuemall?friends=Q号`
- 2020-07-02 - 2020-07-02
### 群发助手 ### 群发助手
- `https://h5.qzone.qq.com/v2/mass` - `https://h5.qzone.qq.com/v2/mass`
- 2020-11-11 - 2020-11-11
### 群聊 ### 群聊
#### 群成员等级 #### 群成员等级
- `https://qun.qq.com/interactive/levellist?gc=群号` - `https://qun.qq.com/interactive/levellist?gc=群号`
- 2020-08-10 - 2020-08-10
#### 群打卡记录 #### 群打卡记录
- `https://qun.qq.com/v2/signin/detail?gc=群号` - `https://qun.qq.com/v2/signin/detail?gc=群号`
- 2020-11-11 - 2020-11-11
#### 群发消息 #### 群发消息
- `https://qun.qq.com/qqweb/m/qun/supermaster/msg.html` - `https://qun.qq.com/qqweb/m/qun/supermaster/msg.html`
#### 群公告 #### 群公告
- `https://web.qun.qq.com/mannounce/index.html#gc=群号` - `https://web.qun.qq.com/mannounce/index.html#gc=群号`
#### 群管理 #### 群管理
##### 群标签编辑 ##### 群标签编辑
- `https://web.qun.qq.com/tag/index.html?gc=群号&modifyToSrv=0` - `https://web.qun.qq.com/tag/index.html?gc=群号&modifyToSrv=0`
- 2021-10-10 - 2021-10-10
##### 相关群 ##### 相关群
- `https://qun.qq.com/v2/associate/index?gc=群号` - `https://qun.qq.com/v2/associate/index?gc=群号`
- 2021-10-10 - 2021-10-10
#### 群机器人 #### 群机器人
- `https://qun.qq.com/qqweb/m/qun/qun_robot/setting.html?gc=群号` - `https://qun.qq.com/qqweb/m/qun/qun_robot/setting.html?gc=群号`
- `https://web.qun.qq.com/qunrobot/data.html?gc=群号&robot_uin=机器人Q号` - `https://web.qun.qq.com/qunrobot/data.html?gc=群号&robot_uin=机器人Q号`
#### 群精华消息 #### 群精华消息
- `https://qun.qq.com/essence/index?gc=群号` - `https://qun.qq.com/essence/index?gc=群号`
- 2020-09-03 - 2020-09-03
#### 群聊等级PK #### 群聊等级PK
- `https://qun.qq.com/qqweb/m/qun/rank/rank.html?gc=群号&uin=Q号` - `https://qun.qq.com/qqweb/m/qun/rank/rank.html?gc=群号&uin=Q号`
#### 群匿名 #### 群匿名
- `https://qqweb.qq.com/m/business/anonymoustalk/index.html?gcode=群号&role=1&self=1` - `https://qqweb.qq.com/m/business/anonymoustalk/index.html?gcode=群号&role=1&self=1`
#### 群签到 #### 群签到
##### 列表 ##### 列表
- `https://qun.qq.com/qqweb/m/qun/checkin/index.html?gc=群号&state=0` - `https://qun.qq.com/qqweb/m/qun/checkin/index.html?gc=群号&state=0`
##### 新签到 ##### 新签到
- `https://qun.qq.com/qqweb/m/qun/checkin/index.html?gc=群号&state=1` - `https://qun.qq.com/qqweb/m/qun/checkin/index.html?gc=群号&state=1`
#### 群日历 #### 群日历
- `https://qun.qq.com/qqweb/m/qun/calendar/index.html?gc=群号` - `https://qun.qq.com/qqweb/m/qun/calendar/index.html?gc=群号`
#### 群荣誉 #### 群荣誉
- `https://qun.qq.com/interactive/qunhonor?gc=群号` - `https://qun.qq.com/interactive/qunhonor?gc=群号`
#### 群收钱 #### 群收钱
- `https://mqq.tenpay.com/mqq/groupreceipts/index.shtml?uin=Q号&type=3` - `https://mqq.tenpay.com/mqq/groupreceipts/index.shtml?uin=Q号&type=3`
#### 群数据 #### 群数据
- `https://qqweb.qq.com/m/qun/activedata/active.html?gc=群号` - `https://qqweb.qq.com/m/qun/activedata/active.html?gc=群号`
#### 群投票 #### 群投票
##### 列表 ##### 列表
- `https://client.qun.qq.com/qqweb/m/qun/vote/index.html?groupuin=群号` - `https://client.qun.qq.com/qqweb/m/qun/vote/index.html?groupuin=群号`
##### 发布投票 ##### 发布投票
- `https://client.qun.qq.com/qqweb/m/qun/vote/form.html?groupuin=群号` - `https://client.qun.qq.com/qqweb/m/qun/vote/form.html?groupuin=群号`
#### 群头衔 #### 群头衔
##### 设置 ##### 设置
- `https://qinfo.clt.qq.com/qlevel/setting.html#gc=群号` - `https://qinfo.clt.qq.com/qlevel/setting.html#gc=群号`
##### 佩戴 ##### 佩戴
- `https://qun.qq.com/qqweb/m/qun/medal/index.html?gc=群号&uin=Q号` - `https://qun.qq.com/qqweb/m/qun/medal/index.html?gc=群号&uin=Q号`
#### 群头像 #### 群头像
- `https://p.qlogo.cn/gh/群号/群号_头像序号/640` - `https://p.qlogo.cn/gh/群号/群号_头像序号/640`
- 2020-08-10 - 2020-08-10
#### 群相册 #### 群相册
##### 普通 ##### 普通
- `https://h5.qzone.qq.com/groupphoto/inqq/album/群号` - `https://h5.qzone.qq.com/groupphoto/inqq/album/群号`
##### 最近照片 ##### 最近照片
- `https://h5.qzone.qq.com/groupphoto/inqq/recent/群号` - `https://h5.qzone.qq.com/groupphoto/inqq/recent/群号`
- `https://h5.qzone.qq.com/groupphoto/index?inqq=1&groupId=群号` - `https://h5.qzone.qq.com/groupphoto/index?inqq=1&groupId=群号`
- `https://h5.qzone.qq.com/groupphoto/index?inqq=2&groupId=群号` - `https://h5.qzone.qq.com/groupphoto/index?inqq=2&groupId=群号`
- `https://h5.qzone.qq.com/groupphoto/index?inqq=3&groupId=群号` - `https://h5.qzone.qq.com/groupphoto/index?inqq=3&groupId=群号`
- `https://h5.qzone.qq.com/groupphoto/index?inqq=4&groupId=群号` - `https://h5.qzone.qq.com/groupphoto/index?inqq=4&groupId=群号`
#### 群幸运字符 #### 群幸运字符
- `https://qun.qq.com/v2/luckyword/index?qunid=群号` - `https://qun.qq.com/v2/luckyword/index?qunid=群号`
- 2020-11-11 - 2020-11-11
#### 群应用 #### 群应用
##### 普通 ##### 普通
- `https://qun.qq.com/qqweb/m/qunopen/appstore/index.html?gc=群号` - `https://qun.qq.com/qqweb/m/qunopen/appstore/index.html?gc=群号`
- 2020-07-02 - 2020-07-02
##### 管理 ##### 管理
- `https://qun.qq.com/slidepanel/manage?gc=群号` - `https://qun.qq.com/slidepanel/manage?gc=群号`
- 2020-07-02 - 2020-07-02
#### 群员分布 #### 群员分布
- `https://web.qun.qq.com/statistics/index.html?gc=群号` - `https://web.qun.qq.com/statistics/index.html?gc=群号`
#### 群作业 #### 群作业
- `https://qun.qq.com/homework/features/index.html#gid=群号` - `https://qun.qq.com/homework/features/index.html#gid=群号`
- 2020-08-10 - 2020-08-10
### 设置 ### 设置
#### 撤回消息提示文本 #### 撤回消息提示文本
- `https://zb.vip.qq.com/v2/pages/withdrawMessage` - `https://zb.vip.qq.com/v2/pages/withdrawMessage`
- 2020-09-03 - 2020-09-03
#### 发现我的方式 #### 发现我的方式
- `https://ti.qq.com/friendshipauth/find` - `https://ti.qq.com/friendshipauth/find`
- 2020-09-03 - 2020-09-03
#### 单向好友管理 #### 单向好友管理
- `https://ti.qq.com/friends/unidirection` - `https://ti.qq.com/friends/unidirection`
- 2020-09-03 - 2020-09-03
#### 加我为好友的方式 #### 加我为好友的方式
- `https://ti.qq.com/friendship_auth/index.html` - `https://ti.qq.com/friendship_auth/index.html`
- 2020-09-03 - 2020-09-03
#### 聊天记录漫游 #### 聊天记录漫游
- QQ`https://gxh.vip.qq.com/club/client/msgRoam/rel/html/index_v2.html` - QQ`https://gxh.vip.qq.com/club/client/msgRoam/rel/html/index_v2.html`
- TIM`https://tim.qq.com/htdocs/roaming/index.html` - TIM`https://tim.qq.com/htdocs/roaming/index.html`
- 2020-09-03 - 2020-09-03
#### 群互动标识开关(个人) #### 群互动标识开关(个人)
- `https://qun.qq.com/interactive/usersetting` - `https://qun.qq.com/interactive/usersetting`
- 2020-09-03 - 2020-09-03
#### 头像双击互动装扮(拍一拍) #### 头像双击互动装扮(拍一拍)
- `https://zb.vip.qq.com/v2/pages/nudgeMall` - `https://zb.vip.qq.com/v2/pages/nudgeMall`
- 2022-04-25 - 2022-04-25
### 坦白说 ### 坦白说
- `https://ti.qq.com/honest-say/main.html` - `https://ti.qq.com/honest-say/main.html`
- 2021-10-10 - 2021-10-10
### 提醒 ### 提醒
- `https://ti.qq.com/remind/index` - `https://ti.qq.com/remind/index`
- 2021-10-10 - 2021-10-10
### 天气 ### 天气
- `https://weather.mp.qq.com/?city=城市` - `https://weather.mp.qq.com/?city=城市`
- 广州天气https://weather.mp.qq.com/?city=%E5%B9%BF%E5%B7%9E - 广州天气https://weather.mp.qq.com/?city=%E5%B9%BF%E5%B7%9E
### 资料 ### 资料
#### 成长攻略 #### 成长攻略
- `https://h5.vip.qq.com/p/mc/card/grow` - `https://h5.vip.qq.com/p/mc/card/grow`
- 2021-03-07 - 2021-03-07
#### 好友纪念日 #### 好友纪念日
- `https://h5.qzone.qq.com/friend/day/自己Q号/对方Q号/friendDay` - `https://h5.qzone.qq.com/friend/day/自己Q号/对方Q号/friendDay`
- 2021-03-07 - 2021-03-07
#### 精选照片 #### 精选照片
- `https://ti.qq.com/photowall/index.html?uin=Q号` - `https://ti.qq.com/photowall/index.html?uin=Q号`
- 2021-10-10 - 2021-10-10
#### 匿名提问(资料卡) #### 匿名提问(资料卡)
##### 提问 ##### 提问
- `https://ti.qq.com/v2/anonymous/question?uin=好友Q号&from=6` - `https://ti.qq.com/v2/anonymous/question?uin=好友Q号&from=6`
- 2020-11-11 - 2020-11-11
##### 回答 ##### 回答
- `https://ti.qq.com/v2/anonymous/answer?uin=自己Q号&from=1` - `https://ti.qq.com/v2/anonymous/answer?uin=自己Q号&from=1`
- 2020-11-11 - 2020-11-11
#### 头像 #### 头像
@@ -318,7 +318,7 @@ tags: [链接,Android,QQ,微信,软件]
> 参考: [https://blog.csdn.net/lddtime/article/details/64590011](https://blog.csdn.net/lddtime/article/details/64590011) > 参考: [https://blog.csdn.net/lddtime/article/details/64590011](https://blog.csdn.net/lddtime/article/details/64590011)
- `https://q1.qlogo.cn/g?b=qq&nk=Q号&s=数值` - `https://q1.qlogo.cn/g?b=qq&nk=Q号&s=数值`
|数值s / spec|分辨率px| |数值s / spec|分辨率px|
| :-----------------| :-------------| | :-----------------| :-------------|
@@ -332,33 +332,33 @@ tags: [链接,Android,QQ,微信,软件]
##### 头像挂件 ##### 头像挂件
- `https://zb.vip.qq.com/widget/mine` - `https://zb.vip.qq.com/widget/mine`
##### 历史头像 ##### 历史头像
- `https://ti.qq.com/avatarlist/public/index.html` - `https://ti.qq.com/avatarlist/public/index.html`
- 2020-08-10 - 2020-08-10
#### 消息列表(资料卡) #### 消息列表(资料卡)
- `https://ti.qq.com/signature/msglist` - `https://ti.qq.com/signature/msglist`
- 2020-08-10 - 2020-08-10
#### 详细资料 #### 详细资料
- `https://ti.qq.com/qcard/index.html?qq=Q号` - `https://ti.qq.com/qcard/index.html?qq=Q号`
#### 账号信息(个人) #### 账号信息(个人)
- `https://mc.vip.qq.com/card/index` - `https://mc.vip.qq.com/card/index`
- `https://club.vip.qq.com/card` - `https://club.vip.qq.com/card`
## 微信 ## 微信
### ~~添加联系人URL Scheme~~ ### ~~添加联系人URL Scheme~~
- `<a href="weixin://contacts/profile/对方微信ID">微信</a>` - `<a href="weixin://contacts/profile/对方微信ID">微信</a>`
- 复制到输入框修改 `对方微信ID` 后发送,点击发出的 `微信` 即可进入。 - 复制到输入框修改 `对方微信ID` 后发送,点击发出的 `微信` 即可进入。
- 使用此方法可以添加自己到联系人列表,也可以重复添加联系人列表中已存在的好友(修改`对方微信ID`的英文字母大小写)。 - 使用此方法可以添加自己到联系人列表,也可以重复添加联系人列表中已存在的好友(修改`对方微信ID`的英文字母大小写)。

View File

@@ -1,5 +1,5 @@
--- ---
title: Nginx 常用配置文件片段 title: "Nginx 常用配置文件片段"
date: 2025-03-15T22:57:21Z date: 2025-03-15T22:57:21Z
lastmod: 2025-03-15T22:59:02Z lastmod: 2025-03-15T22:59:02Z
tags: [配置,Nginx,服务器,网站] tags: [配置,Nginx,服务器,网站]
@@ -116,7 +116,7 @@ server {
注意:只有 OpenSSL 1.0.2 及以上版本支持 注意:只有 OpenSSL 1.0.2 及以上版本支持
`ssl_certificate``ssl_certificate_key`,复制多一份,然后把路径修改为其他类型证书的路径: `ssl_certificate``ssl_certificate_key`,复制多一份,然后把路径修改为其他类型证书的路径:
```nginx ```nginx
server { server {

View File

@@ -1,5 +1,5 @@
--- ---
title: Electron 或 Node.js 判断当前设备是否支持触摸屏 title: "Electron 或 Node.js 判断当前设备是否支持触摸屏"
date: 2025-02-11T20:55:18Z date: 2025-02-11T20:55:18Z
lastmod: 2025-02-20T22:57:46Z lastmod: 2025-02-20T22:57:46Z
tags: [JavaScript,Node.js,Electron,Web 前端] tags: [JavaScript,Node.js,Electron,Web 前端]
@@ -9,7 +9,7 @@ tags: [JavaScript,Node.js,Electron,Web 前端]
在 Windows 系统上,可以通过注册表项 `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Tablet PC\IsTabletPC` 获取当前设备是否支持触摸屏。 在 Windows 系统上,可以通过注册表项 `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Tablet PC\IsTabletPC` 获取当前设备是否支持触摸屏。
`IsTabletPC` 的值大于 `0`,则表示支持触摸屏。 `IsTabletPC` 的值大于 `0`,则表示支持触摸屏。
![](assets/network-asset-3280690-20231218143106045-884789034-20250212095032-064mwnt.png) ![](assets/network-asset-3280690-20231218143106045-884789034-20250212095032-064mwnt.png)

View File

@@ -1,5 +1,5 @@
--- ---
title: NPM、Yarn、Vue CLI 的常见问题以及解决方法 title: "NPM、Yarn、Vue CLI 的常见问题以及解决方法"
date: 2025-03-15T23:00:14Z date: 2025-03-15T23:00:14Z
lastmod: 2025-03-15T23:02:32Z lastmod: 2025-03-15T23:02:32Z
tags: [NPM,Yarn,Vue CLI] tags: [NPM,Yarn,Vue CLI]
@@ -30,27 +30,27 @@ npm config set ELECTRON_MIRROR https://registry.npmmirror.com/-/binary/electron/
#### Vue CLI编译 Less / Sass / Scss 时提示 this.getOptions is not a function #### Vue CLI编译 Less / Sass / Scss 时提示 this.getOptions is not a function
`less-loader` 或 `sass-loader` 的版本过高,不兼容,需要降级。 `less-loader` 或 `sass-loader` 的版本过高,不兼容,需要降级。
对于 Less 对于 Less
1. 执行 `npm uninstall less-loader` 卸载已有版本。 1. 执行 `npm uninstall less-loader` 卸载已有版本。
2. 执行 `npm install less-loader@5.0.0 -D` 安装低版本的 `less-loader`。 2. 执行 `npm install less-loader@5.0.0 -D` 安装低版本的 `less-loader`。
对于 Sass / Scss 对于 Sass / Scss
1. 执行 `npm uninstall sass-loader` 卸载已有版本。 1. 执行 `npm uninstall sass-loader` 卸载已有版本。
2. 执行 `npm install sass-loader@8.0.2 -D` 安装低版本的 `sass-loader`。 2. 执行 `npm install sass-loader@8.0.2 -D` 安装低版本的 `sass-loader`。
#### 使用 vue init 命令创建 electron-vue 模板项目时一直处于 downloading template 状态 #### 使用 vue init 命令创建 electron-vue 模板项目时一直处于 downloading template 状态
使用 `vue init simulatedgreg/electron-vue` 命令创建 electron-vue 模板项目时一直处于 `downloading template` 状态。 使用 `vue init simulatedgreg/electron-vue` 命令创建 electron-vue 模板项目时一直处于 `downloading template` 状态。
可能的原因:使用 `vue init` 创建项目时,默认从 GitHub 下载模板,而且还会把 `.vue-templates` 目录下已经下载过的 `simulatedgreg-electron-vue` 模板目录删除,隐藏在网络不好的情况下会一直 `downloading template`。 可能的原因:使用 `vue init` 创建项目时,默认从 GitHub 下载模板,而且还会把 `.vue-templates` 目录下已经下载过的 `simulatedgreg-electron-vue` 模板目录删除,隐藏在网络不好的情况下会一直 `downloading template`。
解决办法:下载 [SimulatedGREG/electron-vue](https://github.com/SimulatedGREG/electron-vue/) 到本地,解压放入 `C:\Users\用户名\.vue-templates`,文件夹名称为 `simulatedgreg-electron-vue`。 解决办法:下载 [SimulatedGREG/electron-vue](https://github.com/SimulatedGREG/electron-vue/) 到本地,解压放入 `C:\Users\用户名\.vue-templates`,文件夹名称为 `simulatedgreg-electron-vue`。
然后执行 `vue init simulatedgreg/electron-vue` 时增加一个参数 `--offline`,否则会重新下载: 然后执行 `vue init simulatedgreg/electron-vue` 时增加一个参数 `--offline`,否则会重新下载:
```plaintext ```plaintext
vue init simulatedgreg/electron-vue 项目名称 --offline vue init simulatedgreg/electron-vue 项目名称 --offline

View File

@@ -1,5 +1,5 @@
--- ---
title: 解决 OBS 显示器捕获黑屏的三个方法 title: "解决 OBS 显示器捕获黑屏的三个方法"
date: 2025-03-16T16:22:52Z date: 2025-03-16T16:22:52Z
lastmod: 2025-03-16T16:23:19Z lastmod: 2025-03-16T16:23:19Z
tags: [Windows,软件,OBS,配置] tags: [Windows,软件,OBS,配置]
@@ -23,8 +23,8 @@ tags: [Windows,软件,OBS,配置]
- 找到 OBS 的可执行文件: - 找到 OBS 的可执行文件:
- 32位`OBS安装路径\bin\32bit\obs32.exe` - 32位`OBS安装路径\bin\32bit\obs32.exe`
- 64位`OBS安装路径\bin\64bit\obs64.exe` - 64位`OBS安装路径\bin\64bit\obs64.exe`
- 右键点击 `可执行文件`,点击“属性” - 右键点击 `可执行文件`,点击“属性”
- 根据图中的标出的内容修改设置,并点击“确定” - 根据图中的标出的内容修改设置,并点击“确定”
![方法一](assets/network-asset-01-20250316162312-8e508cs.png "方法一") ![方法一](assets/network-asset-01-20250316162312-8e508cs.png "方法一")

View File

@@ -1,5 +1,5 @@
--- ---
title: PlotSquared 创建 Minecraft 默认地形的地皮世界 title: "PlotSquared 创建 Minecraft 默认地形的地皮世界"
date: 2025-03-16T18:28:32Z date: 2025-03-16T18:28:32Z
lastmod: 2025-03-16T18:30:18Z lastmod: 2025-03-16T18:30:18Z
tags: [插件,Minecraft,PlotSquared] tags: [插件,Minecraft,PlotSquared]
@@ -52,13 +52,13 @@ PlotSquared 插件版本: v3.5.0-SNAPSHOT
- 5.9 地皮路面的方块 - 5.9 地皮路面的方块
- 5.10 地皮围墙的方块 - 5.10 地皮围墙的方块
- 5.11 地皮围墙的高度 - 5.11 地皮围墙的高度
- 5.12 是否在世界最低层生成 `基岩` - 5.12 是否在世界最低层生成 `基岩`
#### 6. 世界的名称(建议仅使用 `英文字母`、`数字`、`下划线` #### 6. 世界的名称(建议仅使用 `英文字母`、`数字`、`下划线`
## 提示 ## 提示
若在安装过程中输入了错误的参数,可通过 `/p setup cancel` 取消 `安装` 并重新开始。 若在安装过程中输入了错误的参数,可通过 `/p setup cancel` 取消 `安装` 并重新开始。
正常安装结束后,在配置文件 `plotsquared/config/worlds.yml` 中会存在以下内容: 正常安装结束后,在配置文件 `plotsquared/config/worlds.yml` 中会存在以下内容:
@@ -78,6 +78,6 @@ world-generation-modifiers=[
] ]
``` ```
安装结束后,在对应的世界中输入 `/p i``/p claim` 等命令,可能会提示 `不在地皮世界中`,此时需要重启服务端。 安装结束后,在对应的世界中输入 `/p i``/p claim` 等命令,可能会提示 `不在地皮世界中`,此时需要重启服务端。

View File

@@ -1,5 +1,5 @@
--- ---
title: 在用 uni-app 开发钉钉小程序的时候遇到一个奇怪的问题,发送请求拿不到返回的数据 title: "在用 uni-app 开发钉钉小程序的时候遇到一个奇怪的问题,发送请求拿不到返回的数据"
date: 2025-02-11T20:55:40Z date: 2025-02-11T20:55:40Z
lastmod: 2025-02-12T09:51:42Z lastmod: 2025-02-12T09:51:42Z
tags: [Web 前端,uni-app,小程序] tags: [Web 前端,uni-app,小程序]
@@ -9,7 +9,7 @@ tags: [Web 前端,uni-app,小程序]
今天我一位同事说用 uni-app 新开发的钉钉小程序里发送请求拿不到返回的数据看了下发现调试工具的“Network”栏里显示请求是发送成功的也有返回数据但是没触发请求的回调函数。 今天我一位同事说用 uni-app 新开发的钉钉小程序里发送请求拿不到返回的数据看了下发现调试工具的“Network”栏里显示请求是发送成功的也有返回数据但是没触发请求的回调函数。
原本用的是 `luch-request` 这个库发送的请求,后来试了下 uni-app 内置的 `uni.request` 以及钉钉的 `dd.httpRequest` 都是一样不行。 原本用的是 `luch-request` 这个库发送的请求,后来试了下 uni-app 内置的 `uni.request` 以及钉钉的 `dd.httpRequest` 都是一样不行。
![](assets/network-asset-3280690-20250211195905643-857124077-20250212095147-hh7adaw.png) ![](assets/network-asset-3280690-20250211195905643-857124077-20250212095147-hh7adaw.png)
@@ -23,7 +23,7 @@ tags: [Web 前端,uni-app,小程序]
![](assets/network-asset-3280690-20250211201431143-429830505-20250212095148-k78zhfr.png) ![](assets/network-asset-3280690-20250211201431143-429830505-20250212095148-k78zhfr.png)
看来看去,最后发现原来是这个 `options.value = options` 导致的(刚开始试过在 `App.vue` 里写请求也不行就没怎么在意这里),把它去掉就正常了。 看来看去,最后发现原来是这个 `options.value = options` 导致的(刚开始试过在 `App.vue` 里写请求也不行就没怎么在意这里),把它去掉就正常了。
![](assets/network-asset-3280690-20250211195920444-892198191-20250212095148-t4npl5e.png) ![](assets/network-asset-3280690-20250211195920444-892198191-20250212095148-t4npl5e.png)

View File

@@ -1,5 +1,5 @@
--- ---
title: QQ 宠物 HTML5 版 title: "QQ 宠物 HTML5 版"
date: 2025-03-16T22:20:29Z date: 2025-03-16T22:20:29Z
lastmod: 2025-03-16T22:21:35Z lastmod: 2025-03-16T22:21:35Z
tags: [QQ,网站,链接] tags: [QQ,网站,链接]
@@ -15,7 +15,7 @@ tags: [QQ,网站,链接]
本页面仅支持横屏完整查看。 本页面仅支持横屏完整查看。
此处为 `iframe` 引用,点击前往 [原页面](http://ossweb-img.qq.com/images/MF/qqpet/index.html)。 此处为 `iframe` 引用,点击前往 [原页面](http://ossweb-img.qq.com/images/MF/qqpet/index.html)。
--- ---

View File

@@ -1,5 +1,5 @@
--- ---
title: 在 Linux Windows 查询域名的 SRV 记录 title: "在 Linux Windows 查询域名的 SRV 记录"
date: 2025-03-16T16:03:27Z date: 2025-03-16T16:03:27Z
lastmod: 2025-03-16T16:03:47Z lastmod: 2025-03-16T16:03:47Z
tags: [Windows,Linux,域名,命令] tags: [Windows,Linux,域名,命令]

View File

@@ -1,5 +1,5 @@
--- ---
title: 「推荐」实用网站 title: "「推荐」实用网站"
date: 2025-03-19T11:40:35Z date: 2025-03-19T11:40:35Z
lastmod: 2025-03-19T11:43:06Z lastmod: 2025-03-19T11:43:06Z
tags: [推荐,网站,合集] tags: [推荐,网站,合集]

View File

@@ -1,5 +1,5 @@
--- ---
title: 「记录」游戏通关记录 title: "「记录」游戏通关记录"
date: 2025-03-19T12:30:11Z date: 2025-03-19T12:30:11Z
lastmod: 2025-03-19T12:32:33Z lastmod: 2025-03-19T12:32:33Z
tags: [游戏,记录] tags: [游戏,记录]

View File

@@ -1,5 +1,5 @@
--- ---
title: Chrome URLs 列表List of Chrome URLs title: "Chrome URLs 列表List of Chrome URLs"
date: 2025-03-16T22:14:24Z date: 2025-03-16T22:14:24Z
lastmod: 2025-03-16T22:17:01Z lastmod: 2025-03-16T22:17:01Z
tags: [软件,Chrome,Chromium,链接] tags: [软件,Chrome,Chromium,链接]
@@ -15,7 +15,7 @@ tags: [软件,Chrome,Chromium,链接]
- **chrome://about** - **chrome://about**
进入 `chrome://chrome-urls` 进入 `chrome://chrome-urls`
- **chrome://accessibility** - **chrome://accessibility**
- **chrome://appcache-internals** - **chrome://appcache-internals**
@@ -99,7 +99,7 @@ tags: [软件,Chrome,Chromium,链接]
- **chrome://offline-internals** - **chrome://offline-internals**
- **chrome://omnibox** - **chrome://omnibox**
调试 `智能地址栏` 调试 `智能地址栏`
- **chrome://password-manager-internals** - **chrome://password-manager-internals**
- **chrome://plugins/** - **chrome://plugins/**

View File

@@ -1,5 +1,5 @@
--- ---
title: 临时设置 Java 环境变量PATH title: "临时设置 Java 环境变量PATH"
date: 2025-03-16T16:09:15Z date: 2025-03-16T16:09:15Z
lastmod: 2025-03-16T16:10:28Z lastmod: 2025-03-16T16:10:28Z
tags: [Linux,Windows,命令,命令提示符,Java,终端] tags: [Linux,Windows,命令,命令提示符,Java,终端]

View File

@@ -1,5 +1,5 @@
--- ---
title: 「教程」在 Termux 中安装任意版本的 JDK title: "「教程」在 Termux 中安装任意版本的 JDK"
date: 2025-03-16T15:43:12Z date: 2025-03-16T15:43:12Z
lastmod: 2025-03-16T15:45:51Z lastmod: 2025-03-16T15:45:51Z
tags: [教程,Android,Java,JDK,Termux] tags: [教程,Android,Java,JDK,Termux]
@@ -31,9 +31,9 @@ tags: [教程,Android,Java,JDK,Termux]
## 启动 Termux & 安装相关的软件包 ## 启动 Termux & 安装相关的软件包
1. 启动 Termux等待初始化完成仅在第一次启动时 1. 启动 Termux等待初始化完成仅在第一次启动时
2. 执行 `pkg update` 命令,更新软件包信息。 2. 执行 `pkg update` 命令,更新软件包信息。
可能会出现类似这样的提示,如果没有手动修改过提示中的文件, 可能会出现类似这样的提示,如果没有手动修改过提示中的文件,
可以输入 `Y`,否则输入 `N`,然后点击 `ENTER` 可以输入 `Y`,否则输入 `N`,然后点击 `ENTER`
![初始化](assets/network-asset-pkg_update-20250316154503-v6p17lv.jpg "初始化") ![初始化](assets/network-asset-pkg_update-20250316154503-v6p17lv.jpg "初始化")
3. 执行 `pkg install openssl-tool proot vim wget -y` 命令安装4个软件包。 3. 执行 `pkg install openssl-tool proot vim wget -y` 命令安装4个软件包。
@@ -48,13 +48,13 @@ tags: [教程,Android,Java,JDK,Termux]
![在线安装](assets/network-asset-A01_AnLinux_Panel-20250316154503-5qp14m5.jpg "在线安装") ![在线安装](assets/network-asset-A01_AnLinux_Panel-20250316154503-5qp14m5.jpg "在线安装")
2. 复制软件给出的安装命令。 2. 复制软件给出的安装命令。
![在线安装](assets/network-asset-A02_AnLinux_Ubuntu-20250316154503-pqddget.jpg "在线安装") ![在线安装](assets/network-asset-A02_AnLinux_Ubuntu-20250316154503-pqddget.jpg "在线安装")
3. 在 Termux 中执行 `cd ~` 命令,切换工作目录到 `home` 文件夹。 3. 在 Termux 中执行 `cd ~` 命令,切换工作目录到 `home` 文件夹。
然后粘贴复制的命令,等待脚本自动完成安装操作。 然后粘贴复制的命令,等待脚本自动完成安装操作。
如果网络状况不稳定,可能会出现安装失败或文件下载失败的情况。 如果网络状况不稳定,可能会出现安装失败或文件下载失败的情况。
一般来说,如果在输出的内容中已经出现 `Resolving...``Connecting...` 之类的提示,则表示命令前方部分的 `pkg install` 部分已执行成功,但在后方部分的 `wget` 下载安装脚本或 Rootfs 文件的过程中出现错误。 一般来说,如果在输出的内容中已经出现 `Resolving...``Connecting...` 之类的提示,则表示命令前方部分的 `pkg install` 部分已执行成功,但在后方部分的 `wget` 下载安装脚本或 Rootfs 文件的过程中出现错误。
![在线安装](assets/network-asset-A03_1_fail-20250316154503-31kfbli.jpg "在线安装") ![在线安装](assets/network-asset-A03_1_fail-20250316154503-31kfbli.jpg "在线安装")
![在线安装](assets/network-asset-A03_2_fail-20250316154503-jiwqkc3.jpg "在线安装") ![在线安装](assets/network-asset-A03_2_fail-20250316154503-jiwqkc3.jpg "在线安装")
如果文件下载失败(输出的内容中有类似 `Connection timed out``Unable to establish connection``Unexpected EOF in archive` 的提示),则执行 `ls -a` 命令,查看是否存在 `start-ubuntu.sh``ubuntu.sh``ubuntu-rootfs.tar.gz``ubuntu-binds``ubuntu-fs` 这几个文件(文件夹)。如果存在则执行 `rm -rf <文件名>` 命令将其删除(也可以直接执行 `rm -rf *ubuntu*` 命令),才能再次执行复制的命令,否则可能会被误认为文件已经下载完成或出现其他问题。 如果文件下载失败(输出的内容中有类似 `Connection timed out``Unable to establish connection``Unexpected EOF in archive` 的提示),则执行 `ls -a` 命令,查看是否存在 `start-ubuntu.sh``ubuntu.sh``ubuntu-rootfs.tar.gz``ubuntu-binds``ubuntu-fs` 这几个文件(文件夹)。如果存在则执行 `rm -rf <文件名>` 命令将其删除(也可以直接执行 `rm -rf *ubuntu*` 命令),才能再次执行复制的命令,否则可能会被误认为文件已经下载完成或出现其他问题。
![在线安装](assets/network-asset-A03_3_fail-20250316154504-pfofs04.jpg "在线安装") ![在线安装](assets/network-asset-A03_3_fail-20250316154504-pfofs04.jpg "在线安装")
4. 如果文件下载完毕且安装成功,则会出现类似这样的提示: 4. 如果文件下载完毕且安装成功,则会出现类似这样的提示:
![在线安装](assets/network-asset-A04_success-20250316154504-ae5ey2o.jpg "在线安装") ![在线安装](assets/network-asset-A04_success-20250316154504-ae5ey2o.jpg "在线安装")
@@ -78,7 +78,7 @@ tags: [教程,Android,Java,JDK,Termux]
> >
5. 进入 `Anlinux-Resources/Scripts/Installer/` 文件夹,下载对应系统的安装脚本。 5. 进入 `Anlinux-Resources/Scripts/Installer/` 文件夹,下载对应系统的安装脚本。
> Ubuntu 系统的安装脚本路径为 `Anlinux-Resources/Scripts/Installer/Ubuntu/ubuntu.sh`。 > Ubuntu 系统的安装脚本路径为 `Anlinux-Resources/Scripts/Installer/Ubuntu/ubuntu.sh`
> 本教程中使用的文件的更新日期为 **2020-01-15**。 > 本教程中使用的文件的更新日期为 **2020-01-15**。
> >
@@ -93,13 +93,13 @@ tags: [教程,Android,Java,JDK,Termux]
9. 执行 `cp <源路径> <目标路径>` 命令,复制 Rootfs 文件和安装脚本到 Termux 中。 9. 执行 `cp <源路径> <目标路径>` 命令,复制 Rootfs 文件和安装脚本到 Termux 中。
> 注: > 注:
> 执行 `cp` 命令前可以先执行 `cd` 命令切换工作目录; > 执行 `cp` 命令前可以先执行 `cd` 命令切换工作目录;
> 建议执行 `cd ~` 命令,回到 `home` 目录,方便后续操作。 > 建议执行 `cd ~` 命令,回到 `home` 目录,方便后续操作。
> 命令中的 `.` 表示执行命令时的工作目录。 > 命令中的 `.` 表示执行命令时的工作目录。
> >
![离线安装](assets/network-asset-B09_copy_files-20250316154505-ewfiral.png "离线安装") ![离线安装](assets/network-asset-B09_copy_files-20250316154505-ewfiral.png "离线安装")
10. 执行 `bash <安装脚本文件名>` 命令,调用脚本,安装系统。 10. 执行 `bash <安装脚本文件名>` 命令,调用脚本,安装系统。
![离线安装](assets/network-asset-B10_run_script-20250316154505-6sp5xib.jpg "离线安装") ![离线安装](assets/network-asset-B10_run_script-20250316154505-6sp5xib.jpg "离线安装")
## 进入 Ubuntu 系统 ## 进入 Ubuntu 系统
@@ -109,16 +109,16 @@ tags: [教程,Android,Java,JDK,Termux]
> **建议修改,方便传输文件。** > **建议修改,方便传输文件。**
> >
执行 `vim ~/start-ubuntu.sh` 命令,打开编辑器: 执行 `vim ~/start-ubuntu.sh` 命令,打开编辑器:
![离线安装](assets/network-asset-B11_1_modify_script-20250316154506-vr52sud.jpg "离线安装") ![离线安装](assets/network-asset-B11_1_modify_script-20250316154506-vr52sud.jpg "离线安装")
点击 `i` 键,进入插入模式,然后将第 20 行前的 `#` 删除(取消注释): 点击 `i` 键,进入插入模式,然后将第 20 行前的 `#` 删除(取消注释):
![离线安装](assets/network-asset-B11_2_modify_script-20250316154506-hzyxqre.jpg "离线安装") ![离线安装](assets/network-asset-B11_2_modify_script-20250316154506-hzyxqre.jpg "离线安装")
点击 `ESC`,输入 `:wq`,点击 `ENTER`,保存并关闭文件: 点击 `ESC`,输入 `:wq`,点击 `ENTER`,保存并关闭文件:
![离线安装](assets/network-asset-B11_3_modify_script-20250316154506-jhkwc9m.jpg "离线安装") ![离线安装](assets/network-asset-B11_3_modify_script-20250316154506-jhkwc9m.jpg "离线安装")
2. 然后就可以执行 `bash ~/start-ubuntu.sh` 命令,进入安装的 Ubuntu 系统了。 2. 然后就可以执行 `bash ~/start-ubuntu.sh` 命令,进入安装的 Ubuntu 系统了。
> 注: > 注:
> 如果当前的工作目录为 `home`,可以执行 `./start-ubuntu.sh`。 > 如果当前的工作目录为 `home`,可以执行 `./start-ubuntu.sh`。
> 下一次打开 Termux 时也是通过执行此命令进入 Ubuntu 系统。 > 下一次打开 Termux 时也是通过执行此命令进入 Ubuntu 系统。
> >
@@ -168,17 +168,17 @@ tags: [教程,Android,Java,JDK,Termux]
1. 将下载好的 JDK 文件移动到任意位置放好(也可以不移动)。 1. 将下载好的 JDK 文件移动到任意位置放好(也可以不移动)。
![方式二](assets/network-asset-B05_move_file-20250316154507-umldi6l.png "方式二") ![方式二](assets/network-asset-B05_move_file-20250316154507-umldi6l.png "方式二")
2. 在 Termux 中执行 `cd` 命令切换工作目录(例如 `cd ~` 2. 在 Termux 中执行 `cd` 命令切换工作目录(例如 `cd ~`
然后执行 `mkdir <文件夹名称>` 命令创建用于放置 JDK 的文件夹; 然后执行 `mkdir <文件夹名称>` 命令创建用于放置 JDK 的文件夹;
然后执行 `cd <文件夹名称>` 命令切换工作目录到创建的文件夹。 然后执行 `cd <文件夹名称>` 命令切换工作目录到创建的文件夹。
3. 执行 `cp <源路径> <目标路径>` 命令,把下载的 JDK 文件复制到 Ubuntu 中。 3. 执行 `cp <源路径> <目标路径>` 命令,把下载的 JDK 文件复制到 Ubuntu 中。
> 例如 `cp /sdcard/Files/OpenJDK_16.tar.gz .` > 例如 `cp /sdcard/Files/OpenJDK_16.tar.gz .`
> 注:`/sdcard` 为手机的内部储存挂载路径,需要修改 Ubuntu 启动脚本才能使用。 > 注:`/sdcard` 为手机的内部储存挂载路径,需要修改 Ubuntu 启动脚本才能使用。
> >
![方式二](assets/network-asset-B06_copy_file-20250316154507-3i571xi.png "方式二") ![方式二](assets/network-asset-B06_copy_file-20250316154507-3i571xi.png "方式二")
4. 执行 `tar -xzf <文件名>` 命令,解压文件。 4. 执行 `tar -xzf <文件名>` 命令,解压文件。
![方式二](assets/network-asset-B07_extract_file-20250316154507-xowa0v8.png "方式二") ![方式二](assets/network-asset-B07_extract_file-20250316154507-xowa0v8.png "方式二")
5. 执行 `mv <文件夹名称> <目标名称>` 命令,重命名 JDK 文件夹。 5. 执行 `mv <文件夹名称> <目标名称>` 命令,重命名 JDK 文件夹。
@@ -186,14 +186,14 @@ tags: [教程,Android,Java,JDK,Termux]
> >
![方式二](assets/network-asset-B08_rename_folder-20250316154508-nck7bmp.jpg "方式二") ![方式二](assets/network-asset-B08_rename_folder-20250316154508-nck7bmp.jpg "方式二")
6. 执行 `cd <文件夹名称>/bin/` 命令,将工作目录切换到 JDK 的 `bin` 文件夹。 6. 执行 `cd <文件夹名称>/bin/` 命令,将工作目录切换到 JDK 的 `bin` 文件夹。
然后执行 `ls -al` 命令,查看其中的文件是否有可执行权限(左侧的权限属性有三个 `x`)。 然后执行 `ls -al` 命令,查看其中的文件是否有可执行权限(左侧的权限属性有三个 `x`)。
一般情况下,该权限在 JDK 文件打包前已经被设置,解压时会自动识别。 一般情况下,该权限在 JDK 文件打包前已经被设置,解压时会自动识别。
如果没有,可以在当前文件夹执行一次 `chmod +x *` 命令。 如果没有,可以在当前文件夹执行一次 `chmod +x *` 命令。
![方式二](assets/network-asset-B09_check_permission-20250316154508-5znmk6q.png "方式二") ![方式二](assets/network-asset-B09_check_permission-20250316154508-5znmk6q.png "方式二")
7. 执行 `./java -version` 命令,测试是否能出现对应的版本号。 7. 执行 `./java -version` 命令,测试是否能出现对应的版本号。
![方式二](assets/network-asset-B10_test_command-20250316154508-luxyd8x.jpg "方式二") ![方式二](assets/network-asset-B10_test_command-20250316154508-luxyd8x.jpg "方式二")
8. 执行 `vim ~/.bash_profile` 命令(也可以先 `cd ~``vim .bash_profile` 8. 执行 `vim ~/.bash_profile` 命令(也可以先 `cd ~``vim .bash_profile`
打开“home”目录下的 `.bash_profile` 文件,设置环境变量。 打开“home”目录下的 `.bash_profile` 文件,设置环境变量。
默认情况下,应该没有这个文件,将会在保存后自动创建。 默认情况下,应该没有这个文件,将会在保存后自动创建。
@@ -204,10 +204,10 @@ tags: [教程,Android,Java,JDK,Termux]
![方式二](assets/network-asset-B11_1_set_variables-20250316154508-15g0q87.jpg "方式二") ![方式二](assets/network-asset-B11_1_set_variables-20250316154508-15g0q87.jpg "方式二")
![方式二](assets/network-asset-B11_2_set_variables-20250316154508-h1fh5sm.jpg "方式二") ![方式二](assets/network-asset-B11_2_set_variables-20250316154508-h1fh5sm.jpg "方式二")
9. 保存后,执行 `exit` 命令退出 Ubuntu 系统, 9. 保存后,执行 `exit` 命令退出 Ubuntu 系统,
然后再执行 `bash ~/start-ubuntu.sh` 命令,重新进入 Ubuntu 系统。 然后再执行 `bash ~/start-ubuntu.sh` 命令,重新进入 Ubuntu 系统。
![方式二](assets/network-asset-B12_restart_ubuntu-20250316154508-2czuiy6.jpg "方式二") ![方式二](assets/network-asset-B12_restart_ubuntu-20250316154508-2czuiy6.jpg "方式二")
10. 此时执行 `java -version` 命令,有显示对应的版本号则安装成功,否则检查环境变量是否设置正确。 10. 此时执行 `java -version` 命令,有显示对应的版本号则安装成功,否则检查环境变量是否设置正确。
![方式二](assets/network-asset-B13_jdk_version-20250316154509-szxns7p.jpg "方式二") ![方式二](assets/network-asset-B13_jdk_version-20250316154509-szxns7p.jpg "方式二")
## 注意事项 ## 注意事项
@@ -225,7 +225,7 @@ tags: [教程,Android,Java,JDK,Termux]
### Ubuntu ### Ubuntu
- 如果需要同时使用多个会话,可以安装 `screen` 软件包(`apt install screen`)。 - 如果需要同时使用多个会话,可以安装 `screen` 软件包(`apt install screen`)。
### Vim 操作提示 ### Vim 操作提示

View File

@@ -1,5 +1,5 @@
--- ---
title: 内容格式测试 title: "内容格式测试"
date: 2025-03-16T22:27:03Z date: 2025-03-16T22:27:03Z
lastmod: 2025-10-07T18:32:34Z lastmod: 2025-10-07T18:32:34Z
tags: [测试,格式,Markdown] tags: [测试,格式,Markdown]
@@ -9,7 +9,7 @@ tags: [测试,格式,Markdown]
## 目录 ## 目录
`[TOC]` `[TOC]`
## 字体样式 ## 字体样式
@@ -90,7 +90,7 @@ System.out.println("MarkDown");
## 格式 ## 格式
- `重点文字` - `重点文字`
- ~~删除线~~ - ~~删除线~~
- <u>下划线</u> - <u>下划线</u>
- ==高亮== - ==高亮==
@@ -100,7 +100,7 @@ System.out.println("MarkDown");
## 图片 ## 图片
![Favicon](/favicon.ico) ![Favicon](/favicon.ico)
## 表格 ## 表格
@@ -144,6 +144,6 @@ System.out.println("MarkDown");
### 手动换行 ### 手动换行
HTML 标签 `<br>` HTML 标签 `<br>`

View File

@@ -1,5 +1,5 @@
--- ---
title: 英语句子 title: "英语句子"
date: 2025-03-16T19:54:20Z date: 2025-03-16T19:54:20Z
lastmod: 2025-03-16T19:58:30Z lastmod: 2025-03-16T19:58:30Z
tags: [文字,英语,句子] tags: [文字,英语,句子]

View File

@@ -1,5 +1,5 @@
--- ---
title: 「Minecraft」UniverseGuard 2 插件部分提示文本汉化 title: "「Minecraft」UniverseGuard 2 插件部分提示文本汉化"
date: 2025-03-16T19:06:28Z date: 2025-03-16T19:06:28Z
lastmod: 2025-03-16T19:07:34Z lastmod: 2025-03-16T19:07:34Z
tags: [Minecraft,翻译,插件] tags: [Minecraft,翻译,插件]

View File

@@ -1,5 +1,5 @@
--- ---
title: 「Minecraft」矿车内显示自定义方块 title: "「Minecraft」矿车内显示自定义方块"
date: 2025-03-16T19:32:19Z date: 2025-03-16T19:32:19Z
lastmod: 2025-03-16T19:38:03Z lastmod: 2025-03-16T19:38:03Z
tags: [Minecraft,教程,命令,命令方块] tags: [Minecraft,教程,命令,命令方块]

View File

@@ -1,5 +1,5 @@
--- ---
title: 「教程」在 Android 手机上开 Minecraft 服务器 title: "「教程」在 Android 手机上开 Minecraft 服务器"
date: 2025-03-16T19:03:33Z date: 2025-03-16T19:03:33Z
lastmod: 2025-03-16T19:05:46Z lastmod: 2025-03-16T19:05:46Z
tags: [Minecraft,教程,服务器,Android] tags: [Minecraft,教程,服务器,Android]

View File

@@ -1,5 +1,5 @@
--- ---
title: 「Minecraft」SignPicture告示牌图片教程 title: "「Minecraft」SignPicture告示牌图片教程"
date: 2025-03-16T22:18:01Z date: 2025-03-16T22:18:01Z
lastmod: 2025-03-16T22:19:24Z lastmod: 2025-03-16T22:19:24Z
tags: [Minecraft,模组,教程] tags: [Minecraft,模组,教程]
@@ -10,7 +10,7 @@ tags: [Minecraft,模组,教程]
## 对于网络图片 ## 对于网络图片
1. 获取图片链接。 1. 获取图片链接。
2. 若链接长度较长,需要使用 `短链接服务` 把链接缩短([](https://tinyurl.com/))。 2. 若链接长度较长,需要使用 `短链接服务` 把链接缩短([](https://tinyurl.com/))。
若链接长度较短,则直接到第 3 步。 若链接长度较短,则直接到第 3 步。
3. 在游戏中按下打开告示牌图片 GUI 的按键(默认是 `\`)。 3. 在游戏中按下打开告示牌图片 GUI 的按键(默认是 `\`)。
@@ -25,7 +25,7 @@ tags: [Minecraft,模组,教程]
1. 寻找合适的图床([](https://sm.ms/))。 1. 寻找合适的图床([](https://sm.ms/))。
2. 把图片上传至图床。 2. 把图片上传至图床。
3. 获取图片链接。 3. 获取图片链接。
4. 若链接长度较长,需要使用 `短链接服务` 把链接缩短([](https://tinyurl.com/))。 4. 若链接长度较长,需要使用 `短链接服务` 把链接缩短([](https://tinyurl.com/))。
若链接长度较短,则直接到第 5 步。 若链接长度较短,则直接到第 5 步。
5. 在游戏中按下打开告示牌图片 GUI 的按键(默认是 `\`)。 5. 在游戏中按下打开告示牌图片 GUI 的按键(默认是 `\`)。
@@ -41,6 +41,6 @@ tags: [Minecraft,模组,教程]
若需要使用资源包中的图片,可以将格式为 `!命名空间:文件名` 的文本作为图片链接在 SignPicture 中使用。 若需要使用资源包中的图片,可以将格式为 `!命名空间:文件名` 的文本作为图片链接在 SignPicture 中使用。
例如图片文件在资源包中的路径为 `/assets/image_pack/frost-zx.png`,则对应的链接文本为 `!image_pack:frost-zx.png` 例如图片文件在资源包中的路径为 `/assets/image_pack/frost-zx.png`,则对应的链接文本为 `!image_pack:frost-zx.png`

View File

@@ -1,5 +1,5 @@
--- ---
title: 记一次 Ubuntu 20.04 双网卡配置过程 title: "记一次 Ubuntu 20.04 双网卡配置过程"
date: 2025-03-16T15:59:37Z date: 2025-03-16T15:59:37Z
lastmod: 2025-03-16T15:59:55Z lastmod: 2025-03-16T15:59:55Z
tags: [网络,Linux,Ubuntu,系统,配置] tags: [网络,Linux,Ubuntu,系统,配置]
@@ -17,7 +17,7 @@ tags: [网络,Linux,Ubuntu,系统,配置]
- 主路由有两个 DHCP 服务器IP 为 10.32.1.1 和 10.32.2.1)。 - 主路由有两个 DHCP 服务器IP 为 10.32.1.1 和 10.32.2.1)。
- 子路由设置了 DMZ 主机指向服务器192.168.148.100)。 - 子路由设置了 DMZ 主机指向服务器192.168.148.100)。
- 网卡A - `enp6s0`网卡B - `ens4` - 网卡A - `enp6s0`网卡B - `ens4`
注意: 注意:

View File

@@ -1,5 +1,5 @@
--- ---
title: 在 Less 中使用与 Less 内置函数同名的原生 CSS 函数 title: "在 Less 中使用与 Less 内置函数同名的原生 CSS 函数"
date: 2025-02-11T20:47:17Z date: 2025-02-11T20:47:17Z
lastmod: 2025-02-20T22:58:47Z lastmod: 2025-02-20T22:58:47Z
tags: [Web 前端,CSS,Less] tags: [Web 前端,CSS,Less]
@@ -15,13 +15,13 @@ tags: [Web 前端,CSS,Less]
## 问题描述 ## 问题描述
在原生 CSS 中有以下的函数:`calc()``max()``min()` 等,而在 Less 中也有同名的函数,使用的时候可能会冲突,无法得到需要的结果。 在原生 CSS 中有以下的函数:`calc()``max()``min()` 等,而在 Less 中也有同名的函数,使用的时候可能会冲突,无法得到需要的结果。
对于 `calc()`Less 进行了处理,不会对数学表达式进行计算。 对于 `calc()`Less 进行了处理,不会对数学表达式进行计算。
![image](assets/network-asset-3280690-20231008174044281-2111528680-20250212095025-si5gtja.png) ![image](assets/network-asset-3280690-20231008174044281-2111528680-20250212095025-si5gtja.png)
但如果其中包含变量或嵌套的函数,则会进行计算。例如 `calc()``max()` 嵌套使用的时候: 但如果其中包含变量或嵌套的函数,则会进行计算。例如 `calc()``max()` 嵌套使用的时候:
```css ```css
.element { .element {
@@ -37,7 +37,7 @@ tags: [Web 前端,CSS,Less]
## 如何解决 ## 如何解决
这时可以使用 Less 的转义字符:在字符串前加上一个 `~` 符号,并将需要转义的字符串放在 `""``''` 中。 这时可以使用 Less 的转义字符:在字符串前加上一个 `~` 符号,并将需要转义的字符串放在 `""``''` 中。
![image](assets/network-asset-3280690-20231008175104706-2112146183-20250212095025-306tf8i.png) ![image](assets/network-asset-3280690-20231008175104706-2112146183-20250212095025-306tf8i.png)

View File

@@ -1,5 +1,5 @@
--- ---
title: 「合集」实用的 CSS、JavaScript 库 title: "「合集」实用的 CSS、JavaScript 库"
date: 2025-03-15T23:12:36Z date: 2025-03-15T23:12:36Z
lastmod: 2025-03-15T23:13:16Z lastmod: 2025-03-15T23:13:16Z
tags: [Web 前端,CSS,JavaScript,Node.js,NPM] tags: [Web 前端,CSS,JavaScript,Node.js,NPM]

View File

@@ -0,0 +1,71 @@
---
title: "使用 Ventoy 工具制作U盘启动盘"
date: 2025-02-13T09:45:33Z
lastmod: 2025-10-12T18:19:39Z
tags: [Windows,U盘,工具,教程]
---
# 使用 Ventoy 工具制作U盘启动盘
## 简介
主要使用 [Ventoy](https://www.ventoy.net/) 工具制作,支持引导多个镜像。本文以 **Windows** 平台为例进行说明和演示。
## 操作步骤
### 一、下载 Ventoy 工具
1. 访问 Ventoy 官网的下载页面:[Download · Ventoy](https://www.ventoy.net/cn/download.html)
2. 根据当前的系统类型下载对应的文件。例如 Windows 系统,则下载 `ventoy-版本号-windows.zip` 文件:
![windows-download](assets/windows-download-20250213095228-60or0qq.png)
原地址的下载速度可能比较慢,建议从页面下方的镜像地址下载:
![mirror-download](assets/mirror-download-20250213095240-umr8ocy.png)
3. 将下载的文件解压到任意位置(建议文件路径不包含空格或中文):
![extract-files](assets/extract-files-20250213095303-aywmav3.png)
### 二、连接U盘
将需要制作为启动盘的U盘与电脑连接。
**注意工具会将U盘的数据清空请操作前先备份U盘中的文件。**
### 三、启动 Ventoy 工具
1. 运行文件夹中的 `Ventoy2Disk.exe`
![application-file](assets/application-file-20250213095330-718k9j6.png)
2. 在“设备”中选择需要使用的U盘。
**注意:请确保选择正确的设备。**
![image](assets/image-20250715091338-mnzarei.png)
3. 根据需要,调整工具的配置选项。
![image](assets/image-20250715091122-81qrd27.png "配置选项")
![image](assets/image-20250717170359-41u38nf.png "Ventoy MBR & GPT 格式对比")
4. 点击“安装”。
![image](assets/image-20250715091554-u8q9frs.png)
等待片刻后,如无意外会弹出“安装成功”提示框。
![success](assets/success-20250213095358-7jrshcl.png)
此时可以关闭 Ventoy 工具。
### 四、放置需要使用的镜像文件到U盘
在“资源管理器”中打开U盘将需要使用的 ISO 镜像文件复制到其中。
**注意:**
Ventoy 工具在U盘中创建了一个用于 BIOS 引导的分区(大小为 32MB 左右Windows 10 上的资源管理器可能会显示该分区,复制文件时需要注意,应复制到空间**较大**的分区。
![image](assets/image-20250715091715-ct5nj3e.png)

View File

@@ -1,5 +1,5 @@
--- ---
title: 「摄影」2017 广州国际灯光节(固定机位夜景) title: "「摄影」2017 广州国际灯光节(固定机位夜景)"
date: 2025-03-16T19:44:02Z date: 2025-03-16T19:44:02Z
lastmod: 2025-03-16T19:46:49Z lastmod: 2025-03-16T19:46:49Z
tags: [视频,广州,灯光节,摄影,分享] tags: [视频,广州,灯光节,摄影,分享]

View File

@@ -1,5 +1,5 @@
--- ---
title: 「生活」中国人到底有多拼? title: "「生活」中国人到底有多拼?"
date: 2025-03-16T16:56:37Z date: 2025-03-16T16:56:37Z
lastmod: 2025-03-16T16:56:56Z lastmod: 2025-03-16T16:56:56Z
tags: [视频,生活,分享] tags: [视频,生活,分享]

View File

@@ -1,5 +1,5 @@
--- ---
title: 「公益」当孝敬父母 title: "「公益」当孝敬父母"
date: 2025-03-16T21:54:03Z date: 2025-03-16T21:54:03Z
lastmod: 2025-03-17T00:50:55Z lastmod: 2025-03-17T00:50:55Z
tags: [视频,分享,公益] tags: [视频,分享,公益]

View File

@@ -1,5 +1,5 @@
--- ---
title: 「游戏」那些年,我们一起玩过的 MC title: "「游戏」那些年,我们一起玩过的 MC"
date: 2025-03-17T00:05:10Z date: 2025-03-17T00:05:10Z
lastmod: 2025-03-17T00:10:53Z lastmod: 2025-03-17T00:10:53Z
tags: [Minecraft,视频,籽岷,分享] tags: [Minecraft,视频,籽岷,分享]

View File

@@ -1,5 +1,5 @@
--- ---
title: 「还原」使用 PPT 还原广州地铁 9 号线 LCD单站 title: "「还原」使用 PPT 还原广州地铁 9 号线 LCD单站"
date: 2025-03-17T00:11:25Z date: 2025-03-17T00:11:25Z
lastmod: 2025-03-17T11:49:22Z lastmod: 2025-03-17T11:49:22Z
tags: [视频,临摹,PPT,广州地铁] tags: [视频,临摹,PPT,广州地铁]

View File

@@ -1,5 +1,5 @@
--- ---
title: 「生活」上海,不夜的精彩 title: "「生活」上海,不夜的精彩"
date: 2025-03-16T21:42:59Z date: 2025-03-16T21:42:59Z
lastmod: 2025-03-16T21:44:04Z lastmod: 2025-03-16T21:44:04Z
tags: [视频,上海,生活,分享] tags: [视频,上海,生活,分享]

View File

@@ -1,5 +1,5 @@
--- ---
title: 使用 VSCode 查看和编辑 Minecraft 存档的 NBT title: "使用 VSCode 查看和编辑 Minecraft 存档的 NBT"
date: 2025-03-15T22:16:38Z date: 2025-03-15T22:16:38Z
lastmod: 2025-03-15T22:22:27Z lastmod: 2025-03-15T22:22:27Z
tags: [Minecraft,教程,工具,VSCode,NBT] tags: [Minecraft,教程,工具,VSCode,NBT]
@@ -21,7 +21,7 @@ tags: [Minecraft,教程,工具,VSCode,NBT]
> >
![image](assets/network-asset-vscode-download-1-20250315221732-pbbk9r2.png) ![image](assets/network-asset-vscode-download-1-20250315221732-pbbk9r2.png)
本文中以 Windows 平台 `System Installer` `x64` 为例。 本文中以 Windows 平台 `System Installer` `x64` 为例。
![image](assets/network-asset-vscode-download-2-20250315221732-ydvbqhq.png) ![image](assets/network-asset-vscode-download-2-20250315221732-ydvbqhq.png)
若有需要,可以访问 “[Setting up Visual Studio Code](https://code.visualstudio.com/docs/setup/setup-overview)” 页面查看安装说明文档(英文): 若有需要,可以访问 “[Setting up Visual Studio Code](https://code.visualstudio.com/docs/setup/setup-overview)” 页面查看安装说明文档(英文):
![image](assets/network-asset-vscode-setup-doc-20250315221732-5nop15f.png) ![image](assets/network-asset-vscode-setup-doc-20250315221732-5nop15f.png)
@@ -42,9 +42,9 @@ tags: [Minecraft,教程,工具,VSCode,NBT]
--- ---
若有需要,可以按下 `Ctrl + Shift + P``F1`,输入 “display language”选择 “Configure Display Language”然后选择安装所需的语言包。 若有需要,可以按下 `Ctrl + Shift + P``F1`,输入 “display language”选择 “Configure Display Language”然后选择安装所需的语言包。
> 注:使用 `↑` `↓` 键切换选项,按下 `Enter` 键进行确认。 > 注:使用 `↑` `↓` 键切换选项,按下 `Enter` 键进行确认。
![image](assets/network-asset-vscode-configure-display-language-20250315221734-iudmfwz.png) ![image](assets/network-asset-vscode-configure-display-language-20250315221734-iudmfwz.png)
@@ -86,9 +86,9 @@ tags: [Minecraft,教程,工具,VSCode,NBT]
--- ---
若有需要,可以按下 `Ctrl + Shift + P``F1`,输入 “workspace trust”选择 “Manage Workspace Trust”查看工作区信任配置情况。 若有需要,可以按下 `Ctrl + Shift + P``F1`,输入 “workspace trust”选择 “Manage Workspace Trust”查看工作区信任配置情况。
> 注:使用 `↑` `↓` 键切换选项,按下 `Enter` 键进行确认。 > 注:使用 `↑` `↓` 键切换选项,按下 `Enter` 键进行确认。
![image](assets/network-asset-vscode-manage-workspace-trust-1-20250315221735-kinmnr6.png) ![image](assets/network-asset-vscode-manage-workspace-trust-1-20250315221735-kinmnr6.png)
@@ -142,7 +142,7 @@ tags: [Minecraft,教程,工具,VSCode,NBT]
![image](assets/network-asset-faq-installer-download-slow-2-20250315221737-qb1gq9i.png) ![image](assets/network-asset-faq-installer-download-slow-2-20250315221737-qb1gq9i.png)
3. 打开浏览器的 “下载” 页面,复制安装包的下载链接。 3. 打开浏览器的 “下载” 页面,复制安装包的下载链接。
![image](assets/network-asset-faq-installer-download-slow-3-20250315221737-zgc931w.png) ![image](assets/network-asset-faq-installer-download-slow-3-20250315221737-zgc931w.png)
4. 将下载地址中的 `az764295.vo.msecnd.net` 部分替换为 `vscode.cdn.azure.cn`,填入到浏览器的地址栏中访问,以通过国内的镜像服务器进行下载。 4. 将下载地址中的 `az764295.vo.msecnd.net` 部分替换为 `vscode.cdn.azure.cn`,填入到浏览器的地址栏中访问,以通过国内的镜像服务器进行下载。
![image](assets/network-asset-faq-installer-download-slow-4-20250315221737-y875dvj.png) ![image](assets/network-asset-faq-installer-download-slow-4-20250315221737-y875dvj.png)
![image](assets/network-asset-faq-installer-download-slow-5-20250315221737-ngc984s.png) ![image](assets/network-asset-faq-installer-download-slow-5-20250315221737-ngc984s.png)

View File

@@ -1,5 +1,5 @@
--- ---
title: 「Web 前端」Vue CLI 配置 Less 全局变量 title: "「Web 前端」Vue CLI 配置 Less 全局变量"
date: 2025-03-15T23:16:58Z date: 2025-03-15T23:16:58Z
lastmod: 2025-03-15T23:19:03Z lastmod: 2025-03-15T23:19:03Z
tags: [Web 前端,Vue.js,Vue CLI,JavaScript,教程] tags: [Web 前端,Vue.js,Vue CLI,JavaScript,教程]
@@ -18,7 +18,7 @@ tags: [Web 前端,Vue.js,Vue CLI,JavaScript,教程]
> 安装依赖和修改 `vue.config.js` 需要重新启动项目以生效。 > 安装依赖和修改 `vue.config.js` 需要重新启动项目以生效。
> >
2. 安装 `less` 和 `less-loader`。 2. 安装 `less` 和 `less-loader`。
> 若已安装则可忽略(例如使用 Vue CLI 创建项目时选择了 Less CSS 预处理器)。 > 若已安装则可忽略(例如使用 Vue CLI 创建项目时选择了 Less CSS 预处理器)。
> >
@@ -38,7 +38,7 @@ tags: [Web 前端,Vue.js,Vue CLI,JavaScript,教程]
``` ```
2. 修改项目根目录下的 `vue.config.js` 文件(若无则创建)。 2. 修改项目根目录下的 `vue.config.js` 文件(若无则创建)。
> 以使用 `src/assets/css/global.less` 和 `src/assets/css/variables.less` 文件为例。 > 以使用 `src/assets/css/global.less` 和 `src/assets/css/variables.less` 文件为例。
> >
```javascript ```javascript
@@ -90,7 +90,7 @@ tags: [Web 前端,Vue.js,Vue CLI,JavaScript,教程]
``` ```
2. 根据需要修改 `vue.config.js` 文件。 2. 根据需要修改 `vue.config.js` 文件。
> 以使用 `src/assets/css/global.less` 和 `src/assets/css/variables.less` 文件为例。 > 以使用 `src/assets/css/global.less` 和 `src/assets/css/variables.less` 文件为例。
> >
```javascript ```javascript

View File

@@ -1,5 +1,5 @@
--- ---
title: 「Web 前端」在 Vue 中使用 JSX 的语法 title: "「Web 前端」在 Vue 中使用 JSX 的语法"
date: 2025-03-15T23:05:31Z date: 2025-03-15T23:05:31Z
lastmod: 2025-10-07T16:10:57Z lastmod: 2025-10-07T16:10:57Z
tags: [Web 前端,JavaScript,JSX,Vue.js] tags: [Web 前端,JavaScript,JSX,Vue.js]

View File

@@ -1,5 +1,5 @@
--- ---
title: 「Web 前端」Vue 使用滚动条插件 title: "「Web 前端」Vue 使用滚动条插件"
date: 2025-03-15T23:15:09Z date: 2025-03-15T23:15:09Z
lastmod: 2025-03-15T23:15:38Z lastmod: 2025-03-15T23:15:38Z
tags: [Web 前端,JavaScript,Vue.js,代码片段] tags: [Web 前端,JavaScript,Vue.js,代码片段]

View File

@@ -0,0 +1,43 @@
---
title: "「Web 前端」Vue 为组件模板引用标注类型"
date: 2025-03-09T22:30:29Z
lastmod: 2025-10-12T18:27:37Z
tags: [Web 前端,Vue.js,JavaScript,TypeScript]
---
# 「Web 前端」Vue 为组件模板引用标注类型
## 参考资料
- [TypeScript 与组合式 API - Vue.js](https://cn.vuejs.org/guide/typescript/composition-api#typing-component-template-refs)
## 操作方式
为了获取 `MyModal` 的类型,我们首先需要通过 `typeof` 得到其类型,再使用 TypeScript 内置的 `InstanceType` 工具类型来获取其实例类型:
```html
<script setup lang="ts">
import MyModal from './MyModal.vue'
const modal = ref<InstanceType<typeof MyModal> | null>(null)
const openModal = () => {
modal.value?.open()
}
</script>
```
注意,如果你想在 TypeScript 文件而不是在 Vue SFC 中使用这种技巧,需要开启 Volar 的 Takeover 模式。
如果组件的具体类型无法获得,或者你并不关心组件的具体类型,那么可以使用 `ComponentPublicInstance`​。这只会包含所有组件都共享的属性,比如 `$el`
```html
<script setup lang="ts">
import { ref } from 'vue'
import type { ComponentPublicInstance } from 'vue'
const child = ref<ComponentPublicInstance | null>(null)
</script>
```

View File

@@ -1,5 +1,5 @@
--- ---
title: 「提示」网络连接不可用 title: "「提示」网络连接不可用"
date: 2025-03-16T21:35:26Z date: 2025-03-16T21:35:26Z
lastmod: 2025-03-16T21:36:42Z lastmod: 2025-03-16T21:36:42Z
tags: [提示,网页,软件] tags: [提示,网页,软件]

View File

@@ -1,5 +1,5 @@
--- ---
title: 解决 Windows 10 资源管理器操作 OGG 文件时未响应的问题 title: "解决 Windows 10 资源管理器操作 OGG 文件时未响应的问题"
date: 2025-03-16T16:27:26Z date: 2025-03-16T16:27:26Z
lastmod: 2025-03-16T16:28:19Z lastmod: 2025-03-16T16:28:19Z
tags: [Windows,资源管理器,卡顿,文件,未响应] tags: [Windows,资源管理器,卡顿,文件,未响应]
@@ -35,7 +35,7 @@ tags: [Windows,资源管理器,卡顿,文件,未响应]
![](assets/network-asset-01_3-20250316162752-tj2hi4r.png) ![](assets/network-asset-01_3-20250316162752-tj2hi4r.png)
若不需要使用,可在 `Windows 设置 - 应用 - 应用和功能` 将其卸载,即可解决 OGG 文件导致资源管理器 `未响应` 的问题。 若不需要使用,可在 `Windows 设置 - 应用 - 应用和功能` 将其卸载,即可解决 OGG 文件导致资源管理器 `未响应` 的问题。
![](assets/network-asset-02-20250316162752-ng03hvu.png) ![](assets/network-asset-02-20250316162752-ng03hvu.png)

View File

@@ -1,5 +1,5 @@
--- ---
title: 解决 Windows 10 提示“无法登录到你的账户”问题 title: "解决 Windows 10 提示“无法登录到你的账户”问题"
date: 2025-03-15T22:24:21Z date: 2025-03-15T22:24:21Z
lastmod: 2025-03-15T22:26:43Z lastmod: 2025-03-15T22:26:43Z
tags: [系统,Windows,Windows 10] tags: [系统,Windows,Windows 10]
@@ -19,11 +19,11 @@ tags: [系统,Windows,Windows 10]
- 使用 “系统还原” 功能回滚到 “还原点”(无法进行,“系统还原” 功能没有开启)。 - 使用 “系统还原” 功能回滚到 “还原点”(无法进行,“系统还原” 功能没有开启)。
- 重启,进入安全模式登录。 - 重启,进入安全模式登录。
- 打开注册表 `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList`,将末尾带 “.bak” 的项和不带 “.bak” 的同名项重命名互换。 - 打开注册表 `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList`,将末尾带 “.bak” 的项和不带 “.bak” 的同名项重命名互换。
- 打开注册表 `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList`,将当前用户项中的 `State` 属性值改为 `0` - 打开注册表 `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList`,将当前用户项中的 `State` 属性值改为 `0`
但是都没有效果,登录之后还是弹出错误提示。 但是都没有效果,登录之后还是弹出错误提示。
之后看到官方帮助文档里说创建一个新的账户,然后把文件复制到新账户的文件夹里可以解决,就试了下(开始之前先用虚拟机测试过一次),确实有效果,而且大部分软件的数据都在(小部分保存在注册表 `HKEY_CURRENT_USER` 里的不能恢复,据说这部分数据保存在 `NTUSER.DAT`)。 之后看到官方帮助文档里说创建一个新的账户,然后把文件复制到新账户的文件夹里可以解决,就试了下(开始之前先用虚拟机测试过一次),确实有效果,而且大部分软件的数据都在(小部分保存在注册表 `HKEY_CURRENT_USER` 里的不能恢复,据说这部分数据保存在 `NTUSER.DAT`)。
## 官方帮助文档 ## 官方帮助文档
@@ -35,7 +35,7 @@ tags: [系统,Windows,Windows 10]
> 注意: > 注意:
> 步骤与官方帮助文档中的不完全一致。 > 步骤与官方帮助文档中的不完全一致。
> 对于不同的情况,该方法不一定有效。 > 对于不同的情况,该方法不一定有效。
> 本文中的**原账户**用户名为 `my-user`**新账户**用户名为 `temp-user`。 > 本文中的**原账户**用户名为 `my-user`**新账户**用户名为 `temp-user`。
### 一、创建新的本地帐户并设置为管理员 ### 一、创建新的本地帐户并设置为管理员
@@ -56,15 +56,15 @@ tags: [系统,Windows,Windows 10]
1. 右键任务栏中的 “Windows” 图标,点击 “运行”,输入 “regedit”然后点击 “确定”。 1. 右键任务栏中的 “Windows” 图标,点击 “运行”,输入 “regedit”然后点击 “确定”。
2. 在注册表编辑器的地址栏中输入 `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon`按下回车键Enter 2. 在注册表编辑器的地址栏中输入 `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon`按下回车键Enter
3. 双击 `DefaultUserName` 项,输入新账户的用户名,然后点击 “确定”。 3. 双击 `DefaultUserName` 项,输入新账户的用户名,然后点击 “确定”。
![注册表编辑器](assets/network-asset-regedit-defaultusername-20250315222637-sr47gip.png "注册表编辑器") ![注册表编辑器](assets/network-asset-regedit-defaultusername-20250315222637-sr47gip.png "注册表编辑器")
4. 关闭注册表编辑器。 4. 关闭注册表编辑器。
### 二、将原账户的用户数据文件夹移动到其它地方 ### 二、将原账户的用户数据文件夹移动到其它地方
1. 打开 `C:\Users` 文件夹,右键点击名称为**原账户**用户名的文件夹,点击 “剪切”(或使用快捷键 `Ctrl + X`)。 1. 打开 `C:\Users` 文件夹,右键点击名称为**原账户**用户名的文件夹,点击 “剪切”(或使用快捷键 `Ctrl + X`)。
![剪切](assets/network-asset-user-data-cut-20250315222637-f2o5a0x.png "剪切") ![剪切](assets/network-asset-user-data-cut-20250315222637-f2o5a0x.png "剪切")
2. 打开用于放置该文件夹的目录,右键点击空白处,选择 “粘贴”(或使用快捷键 `Ctrl + V`)。 2. 打开用于放置该文件夹的目录,右键点击空白处,选择 “粘贴”(或使用快捷键 `Ctrl + V`)。
![粘贴](assets/network-asset-user-data-paste-20250315222637-8x3flj0.png "粘贴") ![粘贴](assets/network-asset-user-data-paste-20250315222637-8x3flj0.png "粘贴")
若提示 “你需要提供管理员权限才能移动此文件夹”,则点击 “继续”。 若提示 “你需要提供管理员权限才能移动此文件夹”,则点击 “继续”。
![权限](assets/network-asset-user-data-permission-20250315222638-cu41iou.png "权限") ![权限](assets/network-asset-user-data-permission-20250315222638-cu41iou.png "权限")
@@ -110,17 +110,17 @@ tags: [系统,Windows,Windows 10]
1. 重启系统,登录**新账户**(确保系统启动后初次登录的是**新账户**)。 1. 重启系统,登录**新账户**(确保系统启动后初次登录的是**新账户**)。
2. 打开资源管理器,在 “显示 / 隐藏” 中勾选 “隐藏的项目”。 2. 打开资源管理器,在 “显示 / 隐藏” 中勾选 “隐藏的项目”。
![显示隐藏的项目](assets/network-asset-explorer-show-hidden-items-20250315222638-qo64e3c.png "显示隐藏的项目") ![显示隐藏的项目](assets/network-asset-explorer-show-hidden-items-20250315222638-qo64e3c.png "显示隐藏的项目")
3. 打开 `C:\Users` 文件夹,进入名称为**原账户**用户名的文件夹(以下称为 `user_data`)。 3. 打开 `C:\Users` 文件夹,进入名称为**原账户**用户名的文件夹(以下称为 `user_data`)。
若提示 “你当前无权限访问该文件夹。单击‘继续’获取永久访问该文件夹的权限。”,则点击 “是”。 若提示 “你当前无权限访问该文件夹。单击‘继续’获取永久访问该文件夹的权限。”,则点击 “是”。
![文件夹权限](assets/network-asset-folder-permission-20250315222638-q4sv7jn.png "文件夹权限") ![文件夹权限](assets/network-asset-folder-permission-20250315222638-q4sv7jn.png "文件夹权限")
4. 打开 “第二步” 中移动的用户数据文件夹(以下称为 `backup_data`)。 4. 打开 “第二步” 中移动的用户数据文件夹(以下称为 `backup_data`)。
5.`backup_data` 中的文件夹和文件依次移动到 `user_data` 中。 5.`backup_data` 中的文件夹和文件依次移动到 `user_data` 中。
**注意** **注意**
不需要移动文件名以 `ntuser``NTUSER` 开头的文件。 不需要移动文件名以 `ntuser``NTUSER` 开头的文件。
![ntuser](assets/network-asset-ntuser-files-20250315222639-1xlzxem.png "ntuser") ![ntuser](assets/network-asset-ntuser-files-20250315222639-1xlzxem.png "ntuser")
不需要移动图标左下角带箭头的隐藏文件夹。 不需要移动图标左下角带箭头的隐藏文件夹。
![箭头文件夹](assets/network-asset-linked-folders-20250315222639-ejwvemn.png "箭头文件夹") ![箭头文件夹](assets/network-asset-linked-folders-20250315222639-ejwvemn.png "箭头文件夹")
移动文件夹前需要先把 `user_data` 中对应的文件夹删除。 移动文件夹前需要先把 `user_data` 中对应的文件夹删除。
若文件夹中没有实际的文件,可以不移动。 若文件夹中没有实际的文件,可以不移动。
![空文件夹](assets/network-asset-empty-folder-20250315222639-8gpgu8t.png "空文件夹") ![空文件夹](assets/network-asset-empty-folder-20250315222639-8gpgu8t.png "空文件夹")

View File

@@ -1,5 +1,5 @@
--- ---
title: 杀毒软件能力测试 title: "杀毒软件能力测试"
date: 2025-03-19T11:48:36Z date: 2025-03-19T11:48:36Z
lastmod: 2025-03-19T11:49:20Z lastmod: 2025-03-19T11:49:20Z
tags: [测试,软件] tags: [测试,软件]

View File

@@ -1,5 +1,5 @@
--- ---
title: 「BAT工具」防止病毒在打开U盘时自动运行 title: "「BAT工具」防止病毒在打开U盘时自动运行"
date: 2025-03-16T21:39:48Z date: 2025-03-16T21:39:48Z
lastmod: 2025-03-16T21:41:56Z lastmod: 2025-03-16T21:41:56Z
tags: [Windows,代码片段,BAT,工具,脚本] tags: [Windows,代码片段,BAT,工具,脚本]
@@ -62,7 +62,7 @@ tags: [Windows,代码片段,BAT,工具,脚本]
pause pause
exit exit
``` ```
3. 把它重命名为 `AntiAutorun.bat``文件名` 可以不一样,但 `扩展名` 必须为 `.bat`)。 3. 把它重命名为 `AntiAutorun.bat``文件名` 可以不一样,但 `扩展名` 必须为 `.bat`)。
4. 把文件放到U盘 `根目录` 下,运行,根据提示操作(保留文件,可多次使用)。 4. 把文件放到U盘 `根目录` 下,运行,根据提示操作(保留文件,可多次使用)。
--- ---

View File

@@ -1,5 +1,5 @@
--- ---
title: Windows forfiles 命令 title: "Windows forfiles 命令"
date: 2025-03-16T16:07:42Z date: 2025-03-16T16:07:42Z
lastmod: 2025-03-16T16:08:11Z lastmod: 2025-03-16T16:08:11Z
tags: [Windows,命令,命令提示符] tags: [Windows,命令,命令提示符]
@@ -94,11 +94,11 @@ FORFILES /S /C "cmd /C ECHO @relpath"
FORFILES /P <文件路径> /M <搜索掩码> /S /C "cmd /C IF @isdir==FALSE DEL @path /F /Q" /D <文件日期> FORFILES /P <文件路径> /M <搜索掩码> /S /C "cmd /C IF @isdir==FALSE DEL @path /F /Q" /D <文件日期>
``` ```
> **&lt;文件路径&gt;** 示例:`"D:\Example\Folder"`、`".\Example\Folder"` > **&lt;文件路径&gt;** 示例:`"D:\Example\Folder"`、`".\Example\Folder"`
> >
> **&lt;搜索掩码&gt;** 示例:`*.exe`、`*.png`、`*.txt` > **&lt;搜索掩码&gt;** 示例:`*.exe`、`*.png`、`*.txt`
> >
> **&lt;文件日期&gt;** 示例:`-100`100 天前)、`-200`200 天前)、`-365`365 天前) > **&lt;文件日期&gt;** 示例:`-100`100 天前)、`-200`200 天前)、`-365`365 天前)
## 相关链接 ## 相关链接

View File

@@ -1,5 +1,5 @@
--- ---
title: Windows mklink 命令 title: "Windows mklink 命令"
date: 2025-03-15T22:29:09Z date: 2025-03-15T22:29:09Z
lastmod: 2025-03-15T22:30:51Z lastmod: 2025-03-15T22:30:51Z
tags: [Windows,命令,命令提示符] tags: [Windows,命令,命令提示符]

View File

@@ -1,5 +1,5 @@
--- ---
title: Windows 通过命令提示符校验文件MD5、SHA1等 title: "Windows 通过命令提示符校验文件MD5、SHA1等"
date: 2025-03-16T18:30:47Z date: 2025-03-16T18:30:47Z
lastmod: 2025-03-16T18:33:57Z lastmod: 2025-03-16T18:33:57Z
tags: [Windows,命令,命令提示符,校验,CertUtil] tags: [Windows,命令,命令提示符,校验,CertUtil]
@@ -23,7 +23,7 @@ CertUtil -hashfile 文件路径 [算法]
### 使用举例 ### 使用举例
校验 `当前路径` 下的 `Test.zip` 的 MD5 校验 `当前路径` 下的 `Test.zip` 的 MD5
```plaintext ```plaintext
CertUtil -hashfile Test.zip MD5 CertUtil -hashfile Test.zip MD5

View File

@@ -1,5 +1,5 @@
--- ---
title: Windows copy 命令的妙用(文件里藏文件、合并文件) title: "Windows copy 命令的妙用(文件里藏文件、合并文件)"
date: 2025-03-22T22:47:31Z date: 2025-03-22T22:47:31Z
lastmod: 2025-03-29T18:30:31Z lastmod: 2025-03-29T18:30:31Z
tags: [Windows,命令,命令提示符] tags: [Windows,命令,命令提示符]
@@ -15,8 +15,8 @@ tags: [Windows,命令,命令提示符]
## 本教程中的命令格式 ## 本教程中的命令格式
- `copy /B 文件名1+文件名2 合并后的文件名` - `copy /B 文件名1+文件名2 合并后的文件名`
- `copy /B *.扩展名 合并后的文件名` - `copy /B *.扩展名 合并后的文件名`
## 使用前准备 ## 使用前准备
@@ -31,7 +31,7 @@ tags: [Windows,命令,命令提示符]
3. 依次点击“文件”->“运行新任务” 3. 依次点击“文件”->“运行新任务”
![](assets/network-asset-093fdf1667a63580d5f567eb42b9d4d9bdef895d-20250322225306-4p3zlsx.png) ![](assets/network-asset-093fdf1667a63580d5f567eb42b9d4d9bdef895d-20250322225306-4p3zlsx.png)
4. 输入 `cmd`,勾选“以系统管理权限创建此任务”,按下 `Enter`(回车)键 4. 输入 `cmd`,勾选“以系统管理权限创建此任务”,按下 `Enter`(回车)键
![](assets/network-asset-656fc603f1472b34ba2b61a46455b62301522103-20250322225306-8q8fkna.png) ![](assets/network-asset-656fc603f1472b34ba2b61a46455b62301522103-20250322225306-8q8fkna.png)
@@ -53,9 +53,9 @@ tags: [Windows,命令,命令提示符]
3. 使用 `cd /D` 命令 切换到第 2 步的文件夹 3. 使用 `cd /D` 命令 切换到第 2 步的文件夹
例如我第2步的文件夹在 `D:\Files\Desktop\教程-命令提示符-copy` 例如我第2步的文件夹在 `D:\Files\Desktop\教程-命令提示符-copy`
则执行命令 `cd /D D:\Files\Desktop\教程-命令提示符-copy` 则执行命令 `cd /D D:\Files\Desktop\教程-命令提示符-copy`
看到左侧显示切换后的路径则更改成功​ 看到左侧显示切换后的路径则更改成功​
@@ -63,13 +63,13 @@ tags: [Windows,命令,命令提示符]
4. 使用 `copy /B` 命令 合并文件 4. 使用 `copy /B` 命令 合并文件
命令格式:`copy /B 压缩包名+用于藏文件的文件的文件名 合并后的文件名` 命令格式:`copy /B 压缩包名+用于藏文件的文件的文件名 合并后的文件名`
文件的顺序不能错,否则合并后的文件无法正常打开 文件的顺序不能错,否则合并后的文件无法正常打开
例如我的压缩包名为 `Files.zip`,用于藏文件的文件的文件名为 `Picture.png` 例如我的压缩包名为 `Files.zip`,用于藏文件的文件的文件名为 `Picture.png`
则执行命令 `copy /B Picture.png+Files.zip Picture-Merge.png` 则执行命令 `copy /B Picture.png+Files.zip Picture-Merge.png`
![](assets/network-asset-2a0eb7a467fa83ad163d891247f1085d2acf4ecb-20250322225307-61zkyk9.png) ![](assets/network-asset-2a0eb7a467fa83ad163d891247f1085d2acf4ecb-20250322225307-61zkyk9.png)
@@ -79,7 +79,7 @@ tags: [Windows,命令,命令提示符]
用于藏文件的文件的文件名与合并后的文件名的扩展名需要相同,但前缀名不能相同 用于藏文件的文件的文件名与合并后的文件名的扩展名需要相同,但前缀名不能相同
例如 `Picture.png``Picture-Merge.png` 例如 `Picture.png``Picture-Merge.png`
## 提取隐藏的文件 ## 提取隐藏的文件
@@ -89,9 +89,9 @@ tags: [Windows,命令,命令提示符]
![](assets/network-asset-c87cca41e892c2efb3f7a88b7e8bd6cfab69cc10-20250322225308-0eosuty.png) ![](assets/network-asset-c87cca41e892c2efb3f7a88b7e8bd6cfab69cc10-20250322225308-0eosuty.png)
2. 在文件名后方加上 `.zip` 2. 在文件名后方加上 `.zip`
例如 `Picture-Merge.png` 改为 `Picture-Merge.png.zip` 例如 `Picture-Merge.png` 改为 `Picture-Merge.png.zip`
![](assets/network-asset-238df0b3448a6d039f5c0c6ca110b7ca18424166-20250322225308-mhd4bcl.png) ![](assets/network-asset-238df0b3448a6d039f5c0c6ca110b7ca18424166-20250322225308-mhd4bcl.png)
@@ -109,17 +109,17 @@ tags: [Windows,命令,命令提示符]
1. 把视频文件放于同一文件夹内 1. 把视频文件放于同一文件夹内
2. 视频文件的文件名需为 `序号.扩展名` 2. 视频文件的文件名需为 `序号.扩展名`
例如 `001.mp4 002.mp4 003.mp4 004.mp4 ......` 例如 `001.mp4 002.mp4 003.mp4 004.mp4 ......`
序号不能错,否则合并的视频内容会出错。 序号不能错,否则合并的视频内容会出错。
3. 使用 `cd /D` 命令 切换到要第 1 步的文件夹 3. 使用 `cd /D` 命令 切换到要第 1 步的文件夹
例如我第 1 步的文件夹在 `D:\Files\Desktop\教程-命令提示符-copy` 例如我第 1 步的文件夹在 `D:\Files\Desktop\教程-命令提示符-copy`
则执行命令 `cd /D D:\Files\Desktop\教程-命令提示符-copy` 则执行命令 `cd /D D:\Files\Desktop\教程-命令提示符-copy`
看到左侧显示切换后的路径则更改成功​ 看到左侧显示切换后的路径则更改成功​
@@ -127,11 +127,11 @@ tags: [Windows,命令,命令提示符]
4. 使用 `copy /B 命令` 合并文件 4. 使用 `copy /B 命令` 合并文件
命令格式:`copy /B *.扩展名 合并后的文件名` 命令格式:`copy /B *.扩展名 合并后的文件名`
例如我的分段视频文件名为 `Test_001.mp4 Test_002.mp4 Test_003.mp4 Test_004.mp4 ......` 例如我的分段视频文件名为 `Test_001.mp4 Test_002.mp4 Test_003.mp4 Test_004.mp4 ......`
则执行命令 `copy /B Test_*.mp4 Merge.mp4` 则执行命令 `copy /B Test_*.mp4 Merge.mp4`
![](assets/network-asset-dcc928943584c1208aedb29c24af9cd602ed4c21-20250322225310-h4g4rip.png) ![](assets/network-asset-dcc928943584c1208aedb29c24af9cd602ed4c21-20250322225310-h4g4rip.png)

View File

@@ -1,5 +1,5 @@
--- ---
title: 修改 Windows 远程桌面端口以及开启 60FPS title: "修改 Windows 远程桌面端口以及开启 60FPS"
date: 2025-03-16T19:08:57Z date: 2025-03-16T19:08:57Z
lastmod: 2025-03-16T19:12:48Z lastmod: 2025-03-16T19:12:48Z
tags: [Windows,教程,远程桌面] tags: [Windows,教程,远程桌面]
@@ -26,23 +26,23 @@ tags: [Windows,教程,远程桌面]
1. 启动 `注册表编辑器` 1. 启动 `注册表编辑器`
> 打开 `运行` —— 输入 `regedit` —— 点击 `确定` > 打开 `运行` —— 输入 `regedit` —— 点击 `确定`
> >
2. 找到并 `点击` 以下注册表子项。 2. 找到并 `点击` 以下注册表子项。
```text ```text
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp
``` ```
3. `鼠标右键` 点击 `PortNumber`,然后点击 `修改`。 3. `鼠标右键` 点击 `PortNumber`,然后点击 `修改`。
4. `选中` 弹出来的对话框中的 `十进制`,把 `数值数据` 输入框中的 `数字`(默认是 3389改为 `新的端口号`(不能与已使用的端口相同),然后点击 `确定`。 4. `选中` 弹出来的对话框中的 `十进制`,把 `数值数据` 输入框中的 `数字`(默认是 3389改为 `新的端口号`(不能与已使用的端口相同),然后点击 `确定`。
5. 找到并 `点击` 以下注册表子项: 5. 找到并 `点击` 以下注册表子项:
```text ```text
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
``` ```
6. `鼠标右键` 点击 `PortNumber`,然后点击 `修改`。 6. `鼠标右键` 点击 `PortNumber`,然后点击 `修改`。
7. `选中` 弹出来的对话框中的 `十进制`,把 `数值数据` 输入框中的 `数字`(默认是 3389改为 `想要的端口号`,然后点击 `确定`。 7. `选中` 弹出来的对话框中的 `十进制`,把 `数值数据` 输入框中的 `数字`(默认是 3389改为 `想要的端口号`,然后点击 `确定`。
8. 关闭 `注册表编辑器`,然后 `重新启动` 系统,以应用设定。 8. 关闭 `注册表编辑器`,然后 `重新启动` 系统,以应用设定。
--- ---
@@ -60,17 +60,17 @@ tags: [Windows,教程,远程桌面]
1. 启动 `注册表编辑器`。 1. 启动 `注册表编辑器`。
> 打开 `运行` —— 输入 `regedit` —— 点击 `确定` > 打开 `运行` —— 输入 `regedit` —— 点击 `确定`
> >
2. 找到并 `点击` 以下注册表子项: 2. 找到并 `点击` 以下注册表子项:
```text ```text
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations
``` ```
3. 在 `编辑` 菜单上,点击 `新建`,然后点击 `DWORD32-bit`。 3. 在 `编辑` 菜单上,点击 `新建`,然后点击 `DWORD32-bit`。
4. 输入 `DWMFRAMEINTERVAL`,然后按 `Enter` 键。 4. 输入 `DWMFRAMEINTERVAL`,然后按 `Enter` 键。
5. `鼠标右键` 点击 `DWMFRAMEINTERVAL`,然后点击 `修改`。 5. `鼠标右键` 点击 `DWMFRAMEINTERVAL`,然后点击 `修改`。
6. `选中` 弹出来的对话框中的 `十进制`,在 `数值数据` 输入框中,输入 `16`,然后点击 `确定`。 6. `选中` 弹出来的对话框中的 `十进制`,在 `数值数据` 输入框中,输入 `16`,然后点击 `确定`。
> **注意** > **注意**
> >

Some files were not shown because too many files have changed in this diff Show More