docs: 更新文章内容
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「教程」Android 微软远程桌面客户端使用自定义分辨率
|
||||
title: "「教程」Android 微软远程桌面客户端使用自定义分辨率"
|
||||
date: 2025-03-16T15:48:43Z
|
||||
lastmod: 2025-03-16T15:50:59Z
|
||||
tags: [Windows,教程,Android,远程桌面]
|
||||
@@ -11,7 +11,7 @@ tags: [Windows,教程,Android,远程桌面]
|
||||
|
||||
通过远程桌面连接 Windows 时,不能在系统中修改分辨率,只能在连接远程桌面的工具中设置。
|
||||
|
||||
对于 Windows 上的“远程桌面连接”工具,可在它的 `显示 - 显示配置` 中修改(只能选择给出的分辨率),也可以在远程桌面配置文件(`.rdp`)中修改(可以设置为任意合适的分辨率)。
|
||||
对于 Windows 上的“远程桌面连接”工具,可在它的 `显示 - 显示配置` 中修改(只能选择给出的分辨率),也可以在远程桌面配置文件(`.rdp`)中修改(可以设置为任意合适的分辨率)。
|
||||
|
||||
而对于 Android 系统上的“RD Client”,只能选择它给出的分辨率(目前还不支持手动输入分辨率数值),且由于给出的分辨率与手机的分辨率相关,在全面屏手机上使用的时候会比较奇怪(例如不能设置为 16:9 的分辨率)。
|
||||
|
||||
@@ -37,7 +37,7 @@ tags: [Windows,教程,Android,远程桌面]
|
||||
|
||||

|
||||
3. 打开安装的 MiXplorer,授予 ROOT 权限。
|
||||
4. 进入路径 `/data/data/com.microsoft.rdc.androidx/databases`。
|
||||
4. 进入路径 `/data/data/com.microsoft.rdc.androidx/databases`。
|
||||

|
||||
5. 使用 MiXplorer 的“SQLite Editor”工具打开文件夹中的 `RDPConnection.db` 文件。
|
||||
|
||||
@@ -45,7 +45,7 @@ tags: [Windows,教程,Android,远程桌面]
|
||||
>
|
||||
|
||||

|
||||
6. 点击左上方的下拉菜单,切换到 `resolution_table` 项。
|
||||
6. 点击左上方的下拉菜单,切换到 `resolution_table` 项。
|
||||
此时可以看到刚刚在 RD Client 中添加的几个分辨率项。
|
||||

|
||||
7. 长按需要修改的项进行编辑,点击“UPDATE”保存。
|
||||
@@ -69,7 +69,7 @@ tags: [Windows,教程,Android,远程桌面]
|
||||
2. 解压下载的 ADB 工具包(文件路径最好不包含中文)。
|
||||
3. 启动“命令提示符”(CMD),执行 `CD /D 文件夹路径` 命令,将工作目录切换到 ADB 工具所在的文件夹。
|
||||
|
||||
> 例如 `CD /D D:\Development\adb`
|
||||
> 例如 `CD /D D:\Development\adb`
|
||||
>
|
||||
4. 使用 USB 数据线将手机与电脑连接。
|
||||
5. 在手机系统的“开发者选项”中开启“USB 调试”。
|
||||
@@ -83,17 +83,17 @@ tags: [Windows,教程,Android,远程桌面]
|
||||
List of devices attached
|
||||
2ab5d50e device
|
||||
```
|
||||
7. 执行 `adb shell` 命令,进入 Shell 环境。
|
||||
7. 执行 `adb shell` 命令,进入 Shell 环境。
|
||||

|
||||
8. 执行 `wm size` 命令,查看和记下设备的**默认分辨率**,还原的时候会用到。
|
||||
8. 执行 `wm size` 命令,查看和记下设备的**默认分辨率**,还原的时候会用到。
|
||||

|
||||
9. 执行 `wm size 宽x高` 命令,设置想要在远程桌面中使用的分辨率。
|
||||
|
||||
> “宽”和“高”对应手机竖屏状态下的数值(请参考默认分辨率),例如 `wm size 1080x1920`。
|
||||
> “宽”和“高”对应手机竖屏状态下的数值(请参考默认分辨率),例如 `wm size 1080x1920`。
|
||||
> 不建议设置过大或过小的分辨率,以免导致系统出错。
|
||||
> 执行命令前,请务必**检查确认无误**。
|
||||
> 执行命令后,**手机的分辨率会变为指定的值**。
|
||||
> 如果不小心设置错了,可以尝试执行 `wm size reset` 或 `wm size 默认分辨率` 命令进行还原。
|
||||
> 如果不小心设置错了,可以尝试执行 `wm size reset` 或 `wm size 默认分辨率` 命令进行还原。
|
||||
>
|
||||
|
||||

|
||||
@@ -112,12 +112,12 @@ tags: [Windows,教程,Android,远程桌面]
|
||||

|
||||

|
||||

|
||||
14. 保存完所有需要的分辨率后,执行 `wm size reset` 或 `wm size 默认分辨率` 命令,把手机的分辨率还原为默认值。
|
||||
14. 保存完所有需要的分辨率后,执行 `wm size reset` 或 `wm size 默认分辨率` 命令,把手机的分辨率还原为默认值。
|
||||
15. 重新打开客户端,保存的分辨率都在,且有效果。
|
||||

|
||||
16. 执行 `exit` 命令,退出 Shell 环境。
|
||||
16. 执行 `exit` 命令,退出 Shell 环境。
|
||||

|
||||
17. 执行 `adb kill-server` 命令,结束 ADB 服务。
|
||||
17. 执行 `adb kill-server` 命令,结束 ADB 服务。
|
||||

|
||||
18. 现在可以关闭 USB 调试,然后断开手机与电脑的连接了。
|
||||
|
||||
|
BIN
docs/content/assets/application-file-20250213095330-718k9j6.png
Normal file
After Width: | Height: | Size: 6.5 KiB |
BIN
docs/content/assets/extract-files-20250213095303-aywmav3.png
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
docs/content/assets/image-20250715091122-81qrd27.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
docs/content/assets/image-20250715091338-mnzarei.png
Normal file
After Width: | Height: | Size: 9.0 KiB |
BIN
docs/content/assets/image-20250715091554-u8q9frs.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
docs/content/assets/image-20250715091715-ct5nj3e.png
Normal file
After Width: | Height: | Size: 4.0 KiB |
BIN
docs/content/assets/image-20250717170359-41u38nf.png
Normal file
After Width: | Height: | Size: 136 KiB |
BIN
docs/content/assets/mirror-download-20250213095240-umr8ocy.png
Normal file
After Width: | Height: | Size: 29 KiB |
BIN
docs/content/assets/success-20250213095358-7jrshcl.png
Normal file
After Width: | Height: | Size: 5.6 KiB |
BIN
docs/content/assets/windows-download-20250213095228-60or0qq.png
Normal file
After Width: | Height: | Size: 19 KiB |
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 百度触屏版首页不同样式的页面
|
||||
title: "百度触屏版首页不同样式的页面"
|
||||
date: 2025-03-16T22:31:54Z
|
||||
lastmod: 2025-03-16T22:32:26Z
|
||||
tags: [链接,网站]
|
||||
@@ -7,8 +7,8 @@ tags: [链接,网站]
|
||||
|
||||
# 百度触屏版首页不同样式的页面
|
||||
|
||||
- 普通版:`https://m.baidu.com`
|
||||
- 简版一:`https://m.baidu.com/?wpo=btmfast&pu=sz%401321_000`
|
||||
- 简版二:`https://m.baidu.com/?wpo=btmfast&pu=sz%401325_000`
|
||||
- 普通版:`https://m.baidu.com`
|
||||
- 简版一:`https://m.baidu.com/?wpo=btmfast&pu=sz%401321_000`
|
||||
- 简版二:`https://m.baidu.com/?wpo=btmfast&pu=sz%401325_000`
|
||||
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 蓝狐(BLUEFOX)NX1 刷 GSI 系统
|
||||
title: "蓝狐(BLUEFOX)NX1 刷 GSI 系统"
|
||||
date: 2025-07-02T22:27:40Z
|
||||
lastmod: 2025-07-03T21:54:29Z
|
||||
tags: [Android,GSI,刷机,系统]
|
||||
@@ -21,11 +21,11 @@ tags: [Android,GSI,刷机,系统]
|
||||
|
||||
手机关机,打开 MTK Client 软件,手机同时按住“音量加”和“音量减”键,然后通过数据线连接到电脑。
|
||||
|
||||

|
||||

|
||||
|
||||
使用 MTK Client 的“Read partition”功能读出除“userdata”(用户数据)以外的分区,备份,以便刷坏了可以还原。
|
||||
|
||||

|
||||

|
||||
|
||||
### 二、解锁 BootLoader
|
||||
|
||||
@@ -39,7 +39,7 @@ tags: [Android,GSI,刷机,系统]
|
||||
|
||||
然后执行 `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)
|
||||
|
||||
@@ -59,7 +59,7 @@ No (Volume Down): Do not unlock bootloader.
|
||||
|
||||
将下载的 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”提示,则需要插拔一下数据线。
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 运算速度测试代码
|
||||
title: "运算速度测试代码"
|
||||
date: 2025-02-11T20:55:04Z
|
||||
lastmod: 2025-02-20T22:58:29Z
|
||||
tags: [测试,代码片段]
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Fabric.js 简单介绍和使用
|
||||
title: "Fabric.js 简单介绍和使用"
|
||||
date: 2025-03-15T22:51:22Z
|
||||
lastmod: 2025-03-15T22:55:55Z
|
||||
tags: [Web 前端,JavaScript,Canvas,Fabric.js]
|
||||
@@ -26,53 +26,53 @@ Fabric.js 是一个功能强大的 Canvas 库,它在原生 Canvas 之上提供
|
||||
|
||||
|名称|描述|
|
||||
| ------| ------------------------------|
|
||||
|`ActiveSelection`|选区|
|
||||
|`Group`|分组|
|
||||
|`Image`|图像|
|
||||
|`Line`|线段|
|
||||
|`Rect`|矩形|
|
||||
|`Text`|文本(不可编辑,不换行)|
|
||||
|`IText`|可编辑文本(可编辑,不换行)|
|
||||
|`Textbox`|文本框(可编辑,自动换行)|
|
||||
|`ActiveSelection`|选区|
|
||||
|`Group`|分组|
|
||||
|`Image`|图像|
|
||||
|`Line`|线段|
|
||||
|`Rect`|矩形|
|
||||
|`Text`|文本(不可编辑,不换行)|
|
||||
|`IText`|可编辑文本(可编辑,不换行)|
|
||||
|`Textbox`|文本框(可编辑,自动换行)|
|
||||
|
||||
### 常用属性
|
||||
|
||||
|属性|描述|
|
||||
| ------| ---------------------------------------------|
|
||||
|`type`|对象类型|
|
||||
|`data`|用于添加自定义的数据|
|
||||
|`originX`|对象转换的水平原点(left / center / right)|
|
||||
|`originY`|对象转换的垂直原点(top / center / bottom)|
|
||||
|`left`|水平坐标|
|
||||
|`top`|垂直坐标|
|
||||
|`width`|宽度|
|
||||
|`height`|高度|
|
||||
|`angle`|旋转角度|
|
||||
|`scaleX`|水平方向缩放倍数|
|
||||
|`scaleY`|垂直方向缩放倍数|
|
||||
|`stroke`|线段颜色|
|
||||
|`strokeWidth`|线段宽度|
|
||||
|`fill`|填充颜色|
|
||||
|`fontFamily`|文本字体名称|
|
||||
|`fontSize`|文本字体大小|
|
||||
|`opacity`|对象的不透明度|
|
||||
|`borderColor`|选区边框颜色|
|
||||
|`borderDashArray`|选区边框虚线样式|
|
||||
|`borderOpacityWhenMoving`|选区拖拽时的边框透明度|
|
||||
|`cornerColor`|选区 “操作点” 填充颜色|
|
||||
|`cornerSize`|选区 “操作点” 大小|
|
||||
|`cornerStrokeColor`|选区 “操作点” 描边颜色|
|
||||
|`cornerStyle`|选区 “操作点” 样式(circle / rect)|
|
||||
|`transparentCorners`|选区 “操作点” 中心是否透明(只有描边)|
|
||||
|`hasControls`|是否有 “操作点”|
|
||||
|`lockRotation`|是否禁止旋转对象|
|
||||
|`lockMovementX`|是否禁止水平移动对象|
|
||||
|`lockMovementY`|是否禁止垂直移动对象|
|
||||
|`lockScaleX`|是否禁止水平缩放对象|
|
||||
|`lockScaleY`|是否禁止垂直缩放对象|
|
||||
|`selectable`|是否可以被选中|
|
||||
|`hoverCursor`|光标在对象上方时的样式(子对象优先)|
|
||||
|`moveCursor`|光标在可移动对象上方时的样式(子对象优先)|
|
||||
|`type`|对象类型|
|
||||
|`data`|用于添加自定义的数据|
|
||||
|`originX`|对象转换的水平原点(left / center / right)|
|
||||
|`originY`|对象转换的垂直原点(top / center / bottom)|
|
||||
|`left`|水平坐标|
|
||||
|`top`|垂直坐标|
|
||||
|`width`|宽度|
|
||||
|`height`|高度|
|
||||
|`angle`|旋转角度|
|
||||
|`scaleX`|水平方向缩放倍数|
|
||||
|`scaleY`|垂直方向缩放倍数|
|
||||
|`stroke`|线段颜色|
|
||||
|`strokeWidth`|线段宽度|
|
||||
|`fill`|填充颜色|
|
||||
|`fontFamily`|文本字体名称|
|
||||
|`fontSize`|文本字体大小|
|
||||
|`opacity`|对象的不透明度|
|
||||
|`borderColor`|选区边框颜色|
|
||||
|`borderDashArray`|选区边框虚线样式|
|
||||
|`borderOpacityWhenMoving`|选区拖拽时的边框透明度|
|
||||
|`cornerColor`|选区 “操作点” 填充颜色|
|
||||
|`cornerSize`|选区 “操作点” 大小|
|
||||
|`cornerStrokeColor`|选区 “操作点” 描边颜色|
|
||||
|`cornerStyle`|选区 “操作点” 样式(circle / rect)|
|
||||
|`transparentCorners`|选区 “操作点” 中心是否透明(只有描边)|
|
||||
|`hasControls`|是否有 “操作点”|
|
||||
|`lockRotation`|是否禁止旋转对象|
|
||||
|`lockMovementX`|是否禁止水平移动对象|
|
||||
|`lockMovementY`|是否禁止垂直移动对象|
|
||||
|`lockScaleX`|是否禁止水平缩放对象|
|
||||
|`lockScaleY`|是否禁止垂直缩放对象|
|
||||
|`selectable`|是否可以被选中|
|
||||
|`hoverCursor`|光标在对象上方时的样式(子对象优先)|
|
||||
|`moveCursor`|光标在可移动对象上方时的样式(子对象优先)|
|
||||
|
||||
### 常用方法
|
||||
|
||||
@@ -80,35 +80,35 @@ Fabric.js 是一个功能强大的 Canvas 库,它在原生 Canvas 之上提供
|
||||
|
||||
|方法|描述|
|
||||
| ------| ------------------------------------|
|
||||
|`add(...object)`|添加对象到画布|
|
||||
|`insertAt(object, index, nonSplicing)`|添加对象到画布指定层级|
|
||||
|`moveTo(object, index)`|更改对象所在的层级|
|
||||
|`remove(...object)`|移除画布上的对象|
|
||||
|`discardActiveObject()`|取消选中对象|
|
||||
|`getActiveObject()`|获取选中的对象|
|
||||
|`setActiveObject()`|更改选中的对象|
|
||||
|`getPointer()`|传递事件对象,获取相对于画布的坐标|
|
||||
|`fire()`|触发画布事件|
|
||||
|`forEachObject()`|遍历画布上的对象|
|
||||
|`getZoom()`|获取画布缩放比例|
|
||||
|`setZoom()`|设置画布缩放比例|
|
||||
|`on()`|监听画布事件|
|
||||
|`requestRenderAll()`|刷新画布|
|
||||
|`set()`|设置画布属性|
|
||||
|`add(...object)`|添加对象到画布|
|
||||
|`insertAt(object, index, nonSplicing)`|添加对象到画布指定层级|
|
||||
|`moveTo(object, index)`|更改对象所在的层级|
|
||||
|`remove(...object)`|移除画布上的对象|
|
||||
|`discardActiveObject()`|取消选中对象|
|
||||
|`getActiveObject()`|获取选中的对象|
|
||||
|`setActiveObject()`|更改选中的对象|
|
||||
|`getPointer()`|传递事件对象,获取相对于画布的坐标|
|
||||
|`fire()`|触发画布事件|
|
||||
|`forEachObject()`|遍历画布上的对象|
|
||||
|`getZoom()`|获取画布缩放比例|
|
||||
|`setZoom()`|设置画布缩放比例|
|
||||
|`on()`|监听画布事件|
|
||||
|`requestRenderAll()`|刷新画布|
|
||||
|`set()`|设置画布属性|
|
||||
|
||||
#### 对象(Object)
|
||||
|
||||
|方法|描述|
|
||||
| ------| ------------------------------|
|
||||
|`bringToFront()`|改变对象层级,置顶|
|
||||
|`bringForward()`|改变对象层级,上移|
|
||||
|`sendBackwards()`|改变对象层级,下移|
|
||||
|`sendToBack()`|改变对象层级,置底|
|
||||
|`intersectsWithObject()`|检测两个对象是否相交(重叠)|
|
||||
|`isContainedWithinObject()`|检测对象是在另外一个对象内|
|
||||
|`on()`|监听对象事件|
|
||||
|`set()`|设置对象属性|
|
||||
|`toDataURL()`|转换为 Base64|
|
||||
|`bringToFront()`|改变对象层级,置顶|
|
||||
|`bringForward()`|改变对象层级,上移|
|
||||
|`sendBackwards()`|改变对象层级,下移|
|
||||
|`sendToBack()`|改变对象层级,置底|
|
||||
|`intersectsWithObject()`|检测两个对象是否相交(重叠)|
|
||||
|`isContainedWithinObject()`|检测对象是在另外一个对象内|
|
||||
|`on()`|监听对象事件|
|
||||
|`set()`|设置对象属性|
|
||||
|`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.
|
||||
```
|
||||
|
||||
其中一种解决方式是先使用 `new Image()` 设置 `crossorigin` 属性,加载图片,再创建 `fabric.Image` 对象(参考 “创建对象 - 图片”)。
|
||||
其中一种解决方式是先使用 `new Image()` 设置 `crossorigin` 属性,加载图片,再创建 `fabric.Image` 对象(参考 “创建对象 - 图片”)。
|
||||
|
||||
### 画布自适应父 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
|
||||
item.set({ clipPath: null, dirty: true });
|
||||
@@ -443,7 +443,7 @@ item.set({ clipPath: null, dirty: true });
|
||||
|
||||
### 鼠标滚轮缩放画布
|
||||
|
||||
主要用到了画布的鼠标事件(`mouse:wheel`)以及调用画布的 `zoomToPoint()` 方法改变视图缩放。
|
||||
主要用到了画布的鼠标事件(`mouse:wheel`)以及调用画布的 `zoomToPoint()` 方法改变视图缩放。
|
||||
|
||||
```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
|
||||
// 监听事件:鼠标按下
|
||||
@@ -578,9 +578,9 @@ canvas.on('mouse:up', function ({ 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`。
|
||||
|
||||
@@ -603,7 +603,7 @@ canvas.on('mouse:down', function (ev) {
|
||||
|
||||
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
|
||||
const textbox = new fabric.Textbox('文本框', {
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 浏览器 DevTools(开发人员工具)部分实用功能介绍
|
||||
title: "浏览器 DevTools(开发人员工具)部分实用功能介绍"
|
||||
date: 2025-03-16T15:54:20Z
|
||||
lastmod: 2025-03-16T15:58:30Z
|
||||
tags: [Chromium,Chrome,浏览器,工具,Web 前端,DevTools]
|
||||
@@ -45,17 +45,17 @@ DevTools 的 Console 是在开发过程中常用的功能之一,在其中可
|
||||
|
||||
实际上,`$0` 是对当前选中的 DOM 节点的引用。
|
||||
|
||||
除此之外,`$1` 是对上一次选择的 DOM 节点的引用,一直到 `$4`。
|
||||
除此之外,`$1` 是对上一次选择的 DOM 节点的引用,一直到 `$4`。
|
||||
|
||||

|
||||
|
||||
### \$ 和 \$\$
|
||||
|
||||
在默认情况下(没有定义过 `$` 变量),它在 Console 中是 `document.querySelector` 的别名。
|
||||
在默认情况下(没有定义过 `$` 变量),它在 Console 中是 `document.querySelector` 的别名。
|
||||
|
||||

|
||||
|
||||
而 `$$` 则类似 `document.QuerySelectorAll`,但它返回的是包含 DOM 节点的数组,而不是 NodeList。
|
||||
而 `$$` 则类似 `document.QuerySelectorAll`,但它返回的是包含 DOM 节点的数组,而不是 NodeList。
|
||||
|
||||

|
||||
|
||||
@@ -91,8 +91,8 @@ DevTools 的 Console 是在开发过程中常用的功能之一,在其中可
|
||||
|
||||

|
||||
|
||||
Copy selector:`#head_wrapper > div > div`
|
||||
Copy JS path:`document.querySelector("#head_wrapper > div > div")`
|
||||
Copy selector:`#head_wrapper > div > div`
|
||||
Copy JS path:`document.querySelector("#head_wrapper > div > div")`
|
||||
|
||||
## Sources(源代码)
|
||||
|
||||
@@ -128,7 +128,7 @@ DevTools 代码片段合集:[DevTools Snippets](http://bgrins.github.io/devtoo
|
||||
|
||||

|
||||
|
||||
之后网页会被模拟为聚焦状态,即使它不在前台。此时执行 `document.hasFocus()` 会返回 `true`。通过该功能,可以阻止大部分网站检测用户是否离开页面。
|
||||
之后网页会被模拟为聚焦状态,即使它不在前台。此时执行 `document.hasFocus()` 会返回 `true`。通过该功能,可以阻止大部分网站检测用户是否离开页面。
|
||||
|
||||
## 截屏
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Chromium 内核浏览器命令行启动参数
|
||||
title: "Chromium 内核浏览器命令行启动参数"
|
||||
date: 2025-03-19T11:37:29Z
|
||||
lastmod: 2025-03-19T11:40:14Z
|
||||
tags: [Chrome,Chromium,Windows]
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 经典句子、经典语录
|
||||
title: "经典句子、经典语录"
|
||||
date: 2025-03-19T11:45:59Z
|
||||
lastmod: 2025-03-19T11:46:31Z
|
||||
tags: [文字,经典]
|
||||
|
@@ -1,7 +1,7 @@
|
||||
---
|
||||
title: 「合集」常用的 JavaScript 代码
|
||||
title: "「合集」常用的 JavaScript 代码"
|
||||
date: 2025-03-16T22:02:06Z
|
||||
lastmod: 2025-03-16T22:02:51Z
|
||||
lastmod: 2025-03-16T22:02:33Z
|
||||
tags: [合集,代码片段,Web 前端,JavaScript]
|
||||
---
|
||||
|
||||
@@ -77,6 +77,43 @@ document.designMode = 'off';
|
||||
|
||||
## 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 对象
|
||||
|
||||
```javascript
|
||||
@@ -134,7 +171,7 @@ function findElementVue(el) {
|
||||
}
|
||||
```
|
||||
|
||||
#### 查找字符 `char` 在 `str` 中第 `num` 次出现的位置
|
||||
#### 查找字符 `char` 在 `str` 中第 `num` 次出现的位置
|
||||
|
||||
```javascript
|
||||
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
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「合集」Linux 常用命令
|
||||
title: "「合集」Linux 常用命令"
|
||||
date: 2025-03-16T19:25:02Z
|
||||
lastmod: 2025-03-16T19:28:22Z
|
||||
tags: [合集,Linux,命令]
|
||||
@@ -15,7 +15,7 @@ tags: [合集,Linux,命令]
|
||||
|
||||
## 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)
|
||||
|
||||
@@ -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
|
||||
tar -zcvf file.tgz test/content/
|
||||
```
|
||||
|
||||
#### 压缩当前路径下的 `test/content/` 文件夹和 `test/text.txt` 文件为 `file.tgz`
|
||||
#### 压缩当前路径下的 `test/content/` 文件夹和 `test/text.txt` 文件为 `file.tgz`
|
||||
|
||||
```bash
|
||||
tar -zcvf file.tgz test/content/ test/text.txt
|
||||
```
|
||||
|
||||
#### 压缩 `当前路径` 的文件夹为 `file.tgz`
|
||||
#### 压缩 `当前路径` 的文件夹为 `file.tgz`
|
||||
|
||||
```bash
|
||||
tar -zcvf file.tgz ./
|
||||
```
|
||||
|
||||
#### 压缩当前路径下的 `test/content/` 文件夹为 `file.tgz`,
|
||||
#### 压缩当前路径下的 `test/content/` 文件夹为 `file.tgz`,
|
||||
|
||||
```bash
|
||||
# 其中不包含 `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/
|
||||
```
|
||||
|
||||
#### 解压 `当前路径` 下的 `file.tar`
|
||||
#### 解压 `当前路径` 下的 `file.tar`
|
||||
|
||||
```bash
|
||||
tar -xvf file.tar
|
||||
```
|
||||
|
||||
#### 解压 `当前路径` 下的 `file.tgz`
|
||||
#### 解压 `当前路径` 下的 `file.tgz`
|
||||
|
||||
```bash
|
||||
tar -zxvf file.tgz
|
||||
@@ -164,7 +164,7 @@ tar -zxvf file.tgz
|
||||
|
||||
## taskset
|
||||
|
||||
指定 CPU `0~3` 执行当前路径下的 `start.sh`:
|
||||
指定 CPU `0~3` 执行当前路径下的 `start.sh`:
|
||||
|
||||
```bash
|
||||
taskset -c 0-3 ./start.sh
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「合集」Windows BAT CMD 常用命令
|
||||
title: "「合集」Windows BAT CMD 常用命令"
|
||||
date: 2025-03-16T15:47:13Z
|
||||
lastmod: 2025-03-16T15:47:31Z
|
||||
tags: [合集,Windows,命令提示符,命令,BAT,脚本]
|
||||
@@ -84,7 +84,7 @@ ping -n 次数 主机名
|
||||
|
||||
#### Ping 指定的主机,直到停止
|
||||
|
||||
> 按下 `Ctrl + Break` 查看统计信息并继续操作;
|
||||
> 按下 `Ctrl + Break` 查看统计信息并继续操作;
|
||||
> 按下 `Ctrl + C` 以停止。
|
||||
|
||||
```bat
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 常用的 Git 命令
|
||||
title: "常用的 Git 命令"
|
||||
date: 2025-02-11T20:43:29Z
|
||||
lastmod: 2025-02-20T22:59:20Z
|
||||
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 之后:
|
||||
|
||||
@@ -318,7 +318,7 @@ git gc --aggressive --prune=now
|
||||
```text
|
||||
git rebase e2394c2^ --interactive
|
||||
```
|
||||
3. 在打开的编辑界面中将需要修改的提交前的 `pick` 改为 `edit`,然后保存退出。
|
||||
3. 在打开的编辑界面中将需要修改的提交前的 `pick` 改为 `edit`,然后保存退出。
|
||||
4. 修改文件,然后重新提交。
|
||||
|
||||
```text
|
||||
@@ -327,7 +327,7 @@ git gc --aggressive --prune=now
|
||||
```
|
||||
|
||||
注意:提交使用的参数是 `--amend`。
|
||||
5. 执行 `git rebase --continue` 命令逐步前进到最新的提交位置。
|
||||
5. 执行 `git rebase --continue` 命令逐步前进到最新的提交位置。
|
||||
注意:修改文件后可能会产生冲突,解决冲突并提交后需要再次执行 `git rebase --continue` 命令以继续。
|
||||
6. 提交到远程:
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: CORS 预检请求(preflight request)
|
||||
title: "CORS 预检请求(preflight request)"
|
||||
date: 2025-03-15T23:08:14Z
|
||||
lastmod: 2025-03-15T23:08:41Z
|
||||
tags: [Web 前端,JavaScript,HTTP]
|
||||
@@ -39,7 +39,7 @@ CORS 预检请求主要用于检测服务器是否支持 CORS(跨域资源共
|
||||
- text/plain
|
||||
- multipart/form-data
|
||||
- application/x-www-form-urlencoded
|
||||
- 请求中的任意 `XMLHttpRequest` 对象均没有注册任何事件监听器;可以通过 `XMLHttpRequest.upload` 属性访问 `XMLHttpRequest` 对象。
|
||||
- 请求中的任意 `XMLHttpRequest` 对象均没有注册任何事件监听器;可以通过 `XMLHttpRequest.upload` 属性访问 `XMLHttpRequest` 对象。
|
||||
- 请求中没有使用 `ReadableStream` 对象。
|
||||
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 包含 T 和 Z 的日期时间字符串格式
|
||||
title: "包含 T 和 Z 的日期时间字符串格式"
|
||||
date: 2025-03-15T23:11:02Z
|
||||
lastmod: 2025-03-15T23:11:27Z
|
||||
tags: [格式,时间,日期]
|
||||
@@ -9,7 +9,7 @@ tags: [格式,时间,日期]
|
||||
|
||||
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”。
|
||||
|
||||
如果没有指定时区,则把字符串作为**本地时间**进行解析。
|
||||
|
||||
由于每天都以午夜开始和结束,所以可以在时间表达式中使用 `00:00` 和 `24:00` 来区分相同时间点的两个午夜。
|
||||
也就是说,字符串 `1995-02-04T24:00` 和 `1995-02-05T00:00` 可以表示完全相同的时间点。
|
||||
由于每天都以午夜开始和结束,所以可以在时间表达式中使用 `00:00` 和 `24:00` 来区分相同时间点的两个午夜。
|
||||
也就是说,字符串 `1995-02-04T24:00` 和 `1995-02-05T00:00` 可以表示完全相同的时间点。
|
||||
|
||||
字符串中可以只包含日期:
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「Minecraft」修改 Dynmap 让 WarsFtbDynmap 能正常使用
|
||||
title: "「Minecraft」修改 Dynmap 让 WarsFtbDynmap 能正常使用"
|
||||
date: 2025-03-16T18:58:37Z
|
||||
lastmod: 2025-03-16T19:02:34Z
|
||||
tags: [Minecraft,模组,代码片段,Dynmap]
|
||||
@@ -7,7 +7,7 @@ tags: [Minecraft,模组,代码片段,Dynmap]
|
||||
|
||||
# 「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
|
||||
|
||||
删除了第 28 行中的`world`,使在`网页地图`中切换世界时不能自动传入要加载的`marker.json`的文件名中的`world`参数。
|
||||
删除了第 28 行中的`world`,使在`网页地图`中切换世界时不能自动传入要加载的`marker.json`的文件名中的`world`参数。
|
||||
|
||||
```diff
|
||||
- function loadmarkers(world) {
|
||||
@@ -42,7 +42,7 @@ tags: [Minecraft,模组,代码片段,Dynmap]
|
||||
|
||||
> 因为去掉了“传入参数”,加载 `marker.json` 时会出错,所以要写一个用于手动传入参数的东西。
|
||||
|
||||
在第 38 行的后面插入 1 行,写入以下内容(用于设定初始加载的 `marker.json` 的世界名称为 `DIM0`):
|
||||
在第 38 行的后面插入 1 行,写入以下内容(用于设定初始加载的 `marker.json` 的世界名称为 `DIM0`):
|
||||
|
||||
```html
|
||||
<script type="text/javascript">world = "DIM0";</script>
|
||||
@@ -66,7 +66,7 @@ tags: [Minecraft,模组,代码片段,Dynmap]
|
||||
|
||||
#### dynmap/configuration.txt
|
||||
|
||||
> 修改 `DynmapForge` 的配置文件,添加用于切换要加载的 `marker.json` 的按钮。
|
||||
> 修改 `DynmapForge` 的配置文件,添加用于切换要加载的 `marker.json` 的按钮。
|
||||
|
||||
在第 178 行左右(内容是 `# Note: more than one logo component can be defined`)的后面插入 18 行,写入以下内容:
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 安装 elementary OS 后没有自动写入 EFI 引导
|
||||
title: "安装 elementary OS 后没有自动写入 EFI 引导"
|
||||
date: 2025-03-16T16:29:02Z
|
||||
lastmod: 2025-03-16T16:29:48Z
|
||||
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 说的:
|
||||
|
||||
> 把原 `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 了。
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 使用 FFmpeg 合并多个视频文件
|
||||
title: "使用 FFmpeg 合并多个视频文件"
|
||||
date: 2025-04-18T22:50:14Z
|
||||
lastmod: 2025-07-03T21:58:34Z
|
||||
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` 文件,写入需要合并的视频文件名称,例如:
|
||||
|
||||
```plaintext
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 解决 Ant TreeSelect(树选择)组件可以使用键盘选中 disabled(已禁用)项的问题
|
||||
title: "解决 Ant TreeSelect(树选择)组件可以使用键盘选中 disabled(已禁用)项的问题"
|
||||
date: 2025-02-11T20:55:27Z
|
||||
lastmod: 2025-02-20T22:56:23Z
|
||||
tags: [Web 前端,Vue.js]
|
||||
@@ -7,7 +7,7 @@ tags: [Web 前端,Vue.js]
|
||||
|
||||
# 解决 Ant TreeSelect(树选择)组件可以使用键盘选中 disabled(已禁用)项的问题
|
||||
|
||||
最近在使用 Ant Design Vue(V3.2.20)的 TreeSelect 组件时发现一个问题:`tree-data` 中部分数据的 `disabled` 属性设置为了 `true`,选项是“禁用”状态,无法通过鼠标点击选中,但是可以通过键盘 `↑` `↓` 键切换选项,按下 `Enter` 键选中。
|
||||
最近在使用 Ant Design Vue(V3.2.20)的 TreeSelect 组件时发现一个问题:`tree-data` 中部分数据的 `disabled` 属性设置为了 `true`,选项是“禁用”状态,无法通过鼠标点击选中,但是可以通过键盘 `↑` `↓` 键切换选项,按下 `Enter` 键选中。
|
||||
|
||||

|
||||
|
||||
@@ -15,8 +15,8 @@ tags: [Web 前端,Vue.js]
|
||||
|
||||

|
||||
|
||||
仅将选项的 `selectable` 属性设置为 `false` 时,对应的选项虽然文本颜色不变,但是不可通过点击或键盘选中。
|
||||
仅将选项的 `selectable` 属性设置为 `false` 时,对应的选项虽然文本颜色不变,但是不可通过点击或键盘选中。
|
||||
|
||||

|
||||
|
||||
因此,如果要实现选项变为灰色且不可选的效果,需要同时将选项的 `disabled` 属性设置为 `true`,将 `seletable` 属性设置为 `false`。
|
||||
因此,如果要实现选项变为灰色且不可选的效果,需要同时将选项的 `disabled` 属性设置为 `true`,将 `seletable` 属性设置为 `false`。
|
||||
|
@@ -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 < · 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
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 解决钉钉通过短链接跳转小程序 scheme 的方式打开小程序时会有一个空白页面的问题
|
||||
title: "解决钉钉通过短链接跳转小程序 scheme 的方式打开小程序时会有一个空白页面的问题"
|
||||
date: 2025-03-22T22:17:11Z
|
||||
lastmod: 2025-03-22T22:32:06Z
|
||||
tags: [钉钉,小程序,Web 前端]
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「Minecraft」自动修复部分由异常实体或异常方块实体导致的崩溃
|
||||
title: "「Minecraft」自动修复部分由异常实体或异常方块实体导致的崩溃"
|
||||
date: 2025-03-16T19:20:29Z
|
||||
lastmod: 2025-03-16T19:22:00Z
|
||||
tags: [Minecraft,Forge,教程]
|
||||
@@ -7,7 +7,7 @@ tags: [Minecraft,Forge,教程]
|
||||
|
||||
# 「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.
|
||||
|
||||
**注意,把此项设置为** **`true`** **前,请备份存档,以免丢失数据。**
|
||||
**注意,把此项设置为** **`true`** **前,请备份存档,以免丢失数据。**
|
||||
|
||||
BE WARNED THIS COULD SCREW UP EVERYTHING USE SPARINGLY WE ARE NOT RESPONSIBLE FOR DAMAGES.
|
||||
|
||||
#### 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.
|
||||
|
||||
**注意,把此项设置为** **`true`** **前,请备份存档,以免丢失数据。**
|
||||
**注意,把此项设置为** **`true`** **前,请备份存档,以免丢失数据。**
|
||||
|
||||
BE WARNED THIS COULD SCREW UP EVERYTHING USE SPARINGLY WE ARE NOT RESPONSIBLE FOR DAMAGES.
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「工具」Frost 网址导航 V2
|
||||
title: "「工具」Frost 网址导航 V2"
|
||||
date: 2025-03-16T18:34:16Z
|
||||
lastmod: 2025-03-16T18:36:28Z
|
||||
tags: [网站,工具,导航,HTML5]
|
||||
|
113
docs/content/git-angular-commits-specification.md
Normal 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>
|
||||
```
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「Web 前端」通过 iframe 实现 form 表单提交不跳转页面
|
||||
title: "「Web 前端」通过 iframe 实现 form 表单提交不跳转页面"
|
||||
date: 2025-03-15T22:49:42Z
|
||||
lastmod: 2025-03-15T22:50:25Z
|
||||
tags: [Web 前端,HTML5,代码片段]
|
||||
@@ -13,7 +13,7 @@ tags: [Web 前端,HTML5,代码片段]
|
||||
|
||||
## 示例代码
|
||||
|
||||
可以通过 `form` 的 `target` 属性指定在提交表单之后,在哪里显示响应信息:
|
||||
可以通过 `form` 的 `target` 属性指定在提交表单之后,在哪里显示响应信息:
|
||||
|
||||
```html
|
||||
<form action="example.php" method="post" target="result_element">
|
||||
@@ -26,7 +26,7 @@ tags: [Web 前端,HTML5,代码片段]
|
||||
|
||||
## 注意事项
|
||||
|
||||
- `form` 元素中的 `target` 属性值需要对应目标 `iframe` 元素的 `name` 属性值。
|
||||
- `iframe` 元素可以放到 `body` 中的任意位置。
|
||||
- `form` 元素中的 `target` 属性值需要对应目标 `iframe` 元素的 `name` 属性值。
|
||||
- `iframe` 元素可以放到 `body` 中的任意位置。
|
||||
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: HTML5 使用 FileReader 读取并预览文件内容
|
||||
title: "HTML5 使用 FileReader 读取并预览文件内容"
|
||||
date: 2025-03-16T18:26:17Z
|
||||
lastmod: 2025-03-16T18:27:48Z
|
||||
tags: [代码片段,HTML5,JavaScript,Web 前端]
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 一些有趣的中文句子(中文博大精深)
|
||||
title: "一些有趣的中文句子(中文博大精深)"
|
||||
date: 2025-03-16T19:14:21Z
|
||||
lastmod: 2025-03-16T19:19:09Z
|
||||
tags: [文字,句子]
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: JavaScript 创建并初始化任意长度的数组
|
||||
title: "JavaScript 创建并初始化任意长度的数组"
|
||||
date: 2025-02-11T20:45:30Z
|
||||
lastmod: 2025-02-20T22:59:05Z
|
||||
tags: [JavaScript,Web 前端]
|
||||
@@ -44,7 +44,7 @@ var arr = [...new Array(5).keys()]; // [0, 1, 2, 3, 4]
|
||||
|
||||
## 使用 Array.from()
|
||||
|
||||
> `Array.from(arrayLike[, mapFn[, thisArg]])`
|
||||
> `Array.from(arrayLike[, mapFn[, thisArg]])`
|
||||
|
||||
```javascript
|
||||
var arr = Array.from({length: 5}); // [undefined x 5]
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「JavaScript」提取(导出)网易云音乐歌单歌曲列表信息为文件
|
||||
title: "「JavaScript」提取(导出)网易云音乐歌单歌曲列表信息为文件"
|
||||
date: 2025-03-16T16:11:23Z
|
||||
lastmod: 2025-03-16T16:12:07Z
|
||||
tags: [代码片段,JavaScript,Web 前端,网易云音乐,信息,导出]
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「JavaScript」将 Dynmap 网页上的地图图片合成为一张图
|
||||
title: "「JavaScript」将 Dynmap 网页上的地图图片合成为一张图"
|
||||
date: 2025-03-16T16:24:15Z
|
||||
lastmod: 2025-03-16T16:26:41Z
|
||||
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 的页面。
|
||||
2. 根据需要调整地图的缩放比例(不建议太大)。
|
||||
3. 打开浏览器的 `开发人员工具`(可使用快捷键 `Ctrl + Shift + I`)。
|
||||
3. 打开浏览器的 `开发人员工具`(可使用快捷键 `Ctrl + Shift + I`)。
|
||||

|
||||
**建议将** **`开发人员工具`** **设置为独立窗口显示模式,以让网页有更大的显示区域:**
|
||||
**建议将** **`开发人员工具`** **设置为独立窗口显示模式,以让网页有更大的显示区域:**
|
||||
|
||||
右上角的三个点 -\> Dock side -\> Unlock info separate window
|
||||
4. 拖动地图,直至需要导出的地图范围都完成加载。
|
||||
5. 切换到 `Console`(控制台)标签页,并将上方的 `代码` 粘贴至输入区。
|
||||
5. 切换到 `Console`(控制台)标签页,并将上方的 `代码` 粘贴至输入区。
|
||||

|
||||
6. 按下 `Enter`(回车),等待即可。
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「JavaScript」修改 input type="file" 元素的文件对象
|
||||
title: "「JavaScript」修改 input type=\"file\" 元素的文件对象"
|
||||
date: 2025-03-15T22:42:40Z
|
||||
lastmod: 2025-03-15T22:43:04Z
|
||||
tags: [Web 前端,HTML5,JavaScript,代码片段]
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「Web 前端」原生 JavaScript 实现贪吃蛇游戏
|
||||
title: "「Web 前端」原生 JavaScript 实现贪吃蛇游戏"
|
||||
date: 2025-03-16T16:20:32Z
|
||||
lastmod: 2025-03-16T16:21:06Z
|
||||
tags: [代码片段,JavaScript,HTML5,Web 前端]
|
||||
@@ -7,11 +7,11 @@ tags: [代码片段,JavaScript,HTML5,Web 前端]
|
||||
|
||||
# 「Web 前端」原生 JavaScript 实现贪吃蛇游戏
|
||||
|
||||
使用 `WASD` 或 `上下左右` 键控制移动;
|
||||
使用 `WASD` 或 `上下左右` 键控制移动;
|
||||
|
||||
按下 `空格` 可 `暂停` 或 `开始` 游戏;
|
||||
按下 `空格` 可 `暂停` 或 `开始` 游戏;
|
||||
|
||||
可穿墙到另外一边;每获得 `5` 分,速度 `+0.5`。
|
||||
可穿墙到另外一边;每获得 `5` 分,速度 `+0.5`。
|
||||
|
||||
仅分享交流,代码不一定是最好的。
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「JavaScript」JSDoc 学习记录
|
||||
title: "「JavaScript」JSDoc 学习记录"
|
||||
date: 2025-03-15T23:19:54Z
|
||||
lastmod: 2025-03-15T23:25:49Z
|
||||
tags: [JavaScript,Web 前端,学习,记录]
|
||||
@@ -149,7 +149,7 @@ function example(options) {
|
||||
**数组和对象**
|
||||
|
||||
> JSDoc 支持 Closure Compiler 语法定义的数组和对象类型。
|
||||
> 可以在类型名称的后方添加 `[]` 描述数组项的类型。例如 `string[]` 表示字符串数组。
|
||||
> 可以在类型名称的后方添加 `[]` 描述数组项的类型。例如 `string[]` 表示字符串数组。
|
||||
> 对于具有已知的属性的对象,可以使用 Closure Compiler 语法描述类型。可以分别描述每个属性,以便为每个属性指定更详细的信息。
|
||||
|
||||
一个保存 MyClass 实例对象的数组:
|
||||
@@ -171,7 +171,7 @@ function example(options) {
|
||||
{Object.<number, object>}
|
||||
```
|
||||
|
||||
一个名称为 `myObj`,包含属性 `a`(number)和 `b`(任意类型)的对象:
|
||||
一个名称为 `myObj`,包含属性 `a`(number)和 `b`(任意类型)的对象:
|
||||
|
||||
```plaintext
|
||||
{{a: number, b: string, c}} myObj
|
||||
@@ -186,7 +186,7 @@ function example(options) {
|
||||
> 可以使用 `import` 导入其他文件中的类型。
|
||||
> 注意:此语法是特定于 TypeScript 的,不同于 JSDoc 标准。
|
||||
|
||||
从文件 `types.js` 中导入 `Example` 类型
|
||||
从文件 `types.js` 中导入 `Example` 类型
|
||||
|
||||
```plaintext
|
||||
{ import("./types").Example }
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Linux 允许或禁止指定用户进行 SSH 登录
|
||||
title: "Linux 允许或禁止指定用户进行 SSH 登录"
|
||||
date: 2025-03-16T16:04:28Z
|
||||
lastmod: 2025-03-16T16:06:51Z
|
||||
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
|
||||
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
|
||||
DenyUsers test-c test-d@192.168.1.100
|
||||
@@ -64,7 +64,7 @@ DenyUsers test-c test-d@192.168.1.100
|
||||
|
||||
一个 PATTERN 由零个或多个非空白字符以及“\*”(匹配零个或多个字符的通配符)或“?”(仅匹配一个字符的通配符)组成。
|
||||
|
||||
例如匹配主机 `192.168.0.0` \~ `192.168.0.9`,可以使用:
|
||||
例如匹配主机 `192.168.0.0` \~ `192.168.0.9`,可以使用:
|
||||
|
||||
```plaintext
|
||||
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`)。
|
||||
- 配置的 allow / deny 指令按照此顺序进行处理:`DenyUsers -> AllowUsers -> DenyGroups -> AllowGroups`
|
||||
- 配置完成后需要重启 `sshd` 服务(例如 `service sshd restart`)。
|
||||
- 配置的 allow / deny 指令按照此顺序进行处理:`DenyUsers -> AllowUsers -> DenyGroups -> AllowGroups`
|
||||
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Minecraft 十周年,感谢有你
|
||||
title: "Minecraft 十周年,感谢有你"
|
||||
date: 2025-03-17T00:16:19Z
|
||||
lastmod: 2025-03-17T00:18:27Z
|
||||
tags: [Minecraft,周年]
|
||||
@@ -9,7 +9,7 @@ tags: [Minecraft,周年]
|
||||
|
||||
不知不觉,距离 Minecraft 首个公开版本的发布日(2009 年 5 月 13 日)已经有 10 年了,Minecraft 十周年(2019年5月17日)即将到来,我接触 Minecraft 这款游戏也将近有 7 年了。十年以来,Minecraft 带给了我们很多的欢笑、回忆和感动。
|
||||
|
||||

|
||||

|
||||
|
||||
还记得,初次接触 Minecraft 是在 2012 年的暑假。那天在网上寻找游戏,然后无意中看到了 Minecraft,那时候的版本是 1.2.5。我被其独特的画风(方块、像素)吸引了,就下载来玩了。
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「Minecraft」自定义声音资源包
|
||||
title: "「Minecraft」自定义声音资源包"
|
||||
date: 2025-03-16T17:43:19Z
|
||||
lastmod: 2025-03-16T17:46:51Z
|
||||
tags: [Minecraft,教程,资源包]
|
||||
@@ -92,11 +92,11 @@ tags: [Minecraft,教程,资源包]
|
||||
|
||||
- custom.sound.a、custom.sound.b、custom.sound.ab(可根据需要修改)
|
||||
- 通常按照类别以点 `.` 分隔
|
||||
- 对应 `playsound` 命令中的 `声音`
|
||||
- 对应 `playsound` 命令中的 `声音`
|
||||
|
||||
#### replace
|
||||
|
||||
- 可选,默认为 `false`
|
||||
- 可选,默认为 `false`
|
||||
- 设定为 true,在 `sounds` 项中定义的音效列表会替换优先级较低的资源包的相同命名空间中与该声音事件名相同的声音。
|
||||
- 设定为 false,则补充到已有的音效列表中,而不是替换。
|
||||
|
||||
@@ -108,51 +108,51 @@ tags: [Minecraft,教程,资源包]
|
||||
#### sounds
|
||||
|
||||
- 该声音事件使用的音频文件列表
|
||||
- 当该声音事件被触发时,若列表中存在多个项目(类似 `custom.sound.ab` 中的 `sounds` 项),游戏会从此列表定义的音频文件中随机选取一个播放。
|
||||
- 当该声音事件被触发时,若列表中存在多个项目(类似 `custom.sound.ab` 中的 `sounds` 项),游戏会从此列表定义的音频文件中随机选取一个播放。
|
||||
|
||||
#### name
|
||||
|
||||
- 从资源包 `assets/<命名空间>/sounds/` 文件夹到此音频文件的相对路径(不带扩展名)
|
||||
- 可填写另一个已存在的声音事件名(受 `type` 项影响)
|
||||
- 音频文件格式必须为 `OGG`
|
||||
- 若音频文件路径为 `assets/minecraft/sounds/custom/sound/a.ogg`,则为 `custom/sound/a`。
|
||||
- 若音频文件路径为 `assets/custom/sounds/sound_a.ogg`,则为 `example:sound_a`。
|
||||
- 音频文件格式必须为 `OGG`
|
||||
- 若音频文件路径为 `assets/minecraft/sounds/custom/sound/a.ogg`,则为 `custom/sound/a`。
|
||||
- 若音频文件路径为 `assets/custom/sounds/sound_a.ogg`,则为 `example:sound_a`。
|
||||
|
||||
#### volume
|
||||
|
||||
- 可选,默认为 `1.0`
|
||||
- 可选,默认为 `1.0`
|
||||
- 此声音播放时的音量
|
||||
- 值为 0.0 到 1.0 的小数
|
||||
- 如非必要,可仅在 `playsound` 命令中设定。
|
||||
|
||||
#### pitch
|
||||
|
||||
- 可选,默认为 `1.0`
|
||||
- 可选,默认为 `1.0`
|
||||
- 此声音播放时的音调
|
||||
- 如非必要,可仅在 `playsound` 命令中设定。
|
||||
|
||||
#### weight
|
||||
|
||||
- 可选,默认为 `1`
|
||||
- 可选,默认为 `1`
|
||||
- 此声音事件触发时此声音被播放的概率(权重)。
|
||||
- 一般用于 `sounds` 项中存在多个项目时。
|
||||
|
||||
#### stream
|
||||
|
||||
- 可选,默认为 `false`
|
||||
- 可选,默认为 `false`
|
||||
- 设置为 true,此声音会以流式播放。
|
||||
- 当声音时长较长时,最好设为 true 以避免卡顿。
|
||||
- 所有的 `music` 和 `record` 类型的音效(除了音符盒)都使用流式播放(它们的时长都达到1分多钟)。
|
||||
- 所有的 `music` 和 `record` 类型的音效(除了音符盒)都使用流式播放(它们的时长都达到1分多钟)。
|
||||
|
||||
#### preload
|
||||
|
||||
- 可选,默认为 `false`
|
||||
- 可选,默认为 `false`
|
||||
- 设置为 true,则该音频文件会在加载资源包时被加载,而不是在播放音效时再被加载。
|
||||
|
||||
#### type
|
||||
|
||||
- 可选,默认为 `sound`
|
||||
- 可填写 `sound` 或 `event`
|
||||
- 可选,默认为 `sound`
|
||||
- 可填写 `sound` 或 `event`
|
||||
- sound:表明 `name` 项中定义的是文件名
|
||||
- event:表明 `name` 项中定义的是声音事件名
|
||||
|
||||
@@ -172,42 +172,42 @@ playsound <声音> <来源> <玩家> [x] [y] [z] [音量] [音调] [最小音量
|
||||
|
||||
- 指定要播放的声音
|
||||
- 在 `sounds.json` 中定义的一个声音事件
|
||||
- 若命名空间不为默认的 `minecraft`,则需要在前方包含命名空间(例如:`example:`)。
|
||||
- 例如:`custom.sound.a`、`example:sound.a`
|
||||
- 若命名空间不为默认的 `minecraft`,则需要在前方包含命名空间(例如:`example:`)。
|
||||
- 例如:`custom.sound.a`、`example:sound.a`
|
||||
- 来源
|
||||
|
||||
- 设定播放的声音所属的类型,对应游戏选项中的 `音乐和声音` 的分类。
|
||||
- 可填写:`master, music, record, weather, block, hostile, neutral, player, ambient, voice`
|
||||
- 一般为 `master`
|
||||
- 可填写:`master, music, record, weather, block, hostile, neutral, player, ambient, voice`
|
||||
- 一般为 `master`
|
||||
- 玩家
|
||||
|
||||
- 设定播放声音的目标(仅设定的目标可听到该声音)
|
||||
- 填写 `玩家ID` 或 `目标选择器`
|
||||
- 例如:`Frost_ZX`、`@a[x=0,y=80,z=0,r=16]`
|
||||
- 填写 `玩家ID` 或 `目标选择器`
|
||||
- 例如:`Frost_ZX`、`@a[x=0,y=80,z=0,r=16]`
|
||||
- x y z
|
||||
|
||||
- 发出声音的位置
|
||||
- 可用波浪号 `~` 来指定一个相对于命令执行者(玩家、命令方块)的位置
|
||||
- 例如:`0 85 0`、`~5 ~ ~-5`
|
||||
- 例如:`0 85 0`、`~5 ~ ~-5`
|
||||
- 音量
|
||||
|
||||
- 设定声音能被听见的距离
|
||||
- 最小值为 `0.0`
|
||||
- 设定小于 `1.0` 的值,声音的音量较低,可听到该声音的范围(中心坐标为 `x y z` 的球状)会较小。
|
||||
- 设定大于 `1.0` 的值,声音的音量不会增大(保持 `1.0`),但可听到该声音的范围(`16`)会与音量相乘。
|
||||
- 音量设定为 `1.0` 时,可听到该声音的范围为:中心坐标为 `x y z`,半径为 `16` 方块的球状范围。
|
||||
- 声音总会基于目标与球体中心(`x y z`)的距离逐渐衰减至无声(即使对方在 `目标` 范围内,也有可能听不到该声音)。
|
||||
- 最小值为 `0.0`
|
||||
- 设定小于 `1.0` 的值,声音的音量较低,可听到该声音的范围(中心坐标为 `x y z` 的球状)会较小。
|
||||
- 设定大于 `1.0` 的值,声音的音量不会增大(保持 `1.0`),但可听到该声音的范围(`16`)会与音量相乘。
|
||||
- 音量设定为 `1.0` 时,可听到该声音的范围为:中心坐标为 `x y z`,半径为 `16` 方块的球状范围。
|
||||
- 声音总会基于目标与球体中心(`x y z`)的距离逐渐衰减至无声(即使对方在 `目标` 范围内,也有可能听不到该声音)。
|
||||
- 音调
|
||||
|
||||
- 设定声音播放时的音调。
|
||||
- 数值在 `0.0` 至 `2.0` 之间(含 `0.0` 和 `2.0`)
|
||||
- 小于 `0.5` 的值与 `0.5` 等价(效果相同)
|
||||
- 数值在 `0.0` 至 `2.0` 之间(含 `0.0` 和 `2.0`)
|
||||
- 小于 `0.5` 的值与 `0.5` 等价(效果相同)
|
||||
- 小于 `1.0` 的值会降低音调,增加持续时间。
|
||||
- 大于 `1.0` 的值会提升音调,减小持续时间。
|
||||
- 最小音量
|
||||
|
||||
- 设定在可听到该声音的范围外的目标能听到该声音的音量
|
||||
- 数值在 `0.0` 至 `1.0` 之间(含 `0.0` 和 `1.0`)
|
||||
- 数值在 `0.0` 至 `1.0` 之间(含 `0.0` 和 `1.0`)
|
||||
|
||||
#### playsound 命令示例
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「Minecraft」In-Game Info XML 样式
|
||||
title: "「Minecraft」In-Game Info XML 样式"
|
||||
date: 2025-03-16T18:37:30Z
|
||||
lastmod: 2025-03-16T18:39:48Z
|
||||
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` 进行加载。
|
||||
|
||||
#### 方法二
|
||||
|
||||
1. 把代码保存为 `文件名.xml` 文件(文件名自定义;编码 `UTF-8`),放入 `.minecraft/config/` 文件夹。
|
||||
2. 在游戏中执行命令 `/igi load 文件名.xml`(`文件名` 是第 1 步中自己修改的文件名)进行加载。
|
||||
1. 把代码保存为 `文件名.xml` 文件(文件名自定义;编码 `UTF-8`),放入 `.minecraft/config/` 文件夹。
|
||||
2. 在游戏中执行命令 `/igi load 文件名.xml`(`文件名` 是第 1 步中自己修改的文件名)进行加载。
|
||||
|
||||
## 效果图
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Minecraft Java Edition 命令合集
|
||||
title: "Minecraft Java Edition 命令合集"
|
||||
date: 2025-03-16T22:24:06Z
|
||||
lastmod: 2025-03-16T22:26:03Z
|
||||
tags: [Minecraft,合集,命令,命令方块]
|
||||
@@ -13,7 +13,7 @@ tags: [Minecraft,合集,命令,命令方块]
|
||||
|
||||
---
|
||||
|
||||
> 如无特殊情况,本文中的 `目标选择器` 均使用 `r=半径` 作为说明,可根据需要自行修改。
|
||||
> 如无特殊情况,本文中的 `目标选择器` 均使用 `r=半径` 作为说明,可根据需要自行修改。
|
||||
>
|
||||
> **安全起见,最好先** **`/testfor`** **一下设定的** **`目标选择器`** **是否正确选择了所需要修改的** **`实体`** **。**
|
||||
|
||||
@@ -29,16 +29,16 @@ tags: [Minecraft,合集,命令,命令方块]
|
||||
|
||||
打开或关闭 `半径` 范围内的生物的 AI(已测试:1.10.2、1.12.2)
|
||||
|
||||
- 打开(默认状态):`/entitydata @e[r=半径] {NoAI:0}`
|
||||
- 关闭:`/entitydata @e[r=半径] {NoAI:1}`
|
||||
- 打开(默认状态):`/entitydata @e[r=半径] {NoAI:0}`
|
||||
- 关闭:`/entitydata @e[r=半径] {NoAI:1}`
|
||||
|
||||
更改 `半径` 范围内的 `自定义 NPC` 的 `玩家材质 ID` 为 `游戏 ID`(已测试:1.10.2)
|
||||
更改 `半径` 范围内的 `自定义 NPC` 的 `玩家材质 ID` 为 `游戏 ID`(已测试:1.10.2)
|
||||
|
||||
```text
|
||||
/entitydata @e[r=半径,type=customnpcs.CustomNpc] {SkinUsername:{Name:"游戏 ID"}}
|
||||
```
|
||||
|
||||
使 `半径` 范围内的 `RailCraft 永动机车` 的旋转角度变为 `角度`
|
||||
使 `半径` 范围内的 `RailCraft 永动机车` 的旋转角度变为 `角度`
|
||||
|
||||
```text
|
||||
已测试:1.10.2
|
||||
@@ -50,25 +50,25 @@ tags: [Minecraft,合集,命令,命令方块]
|
||||
可用的“角度”:0.0f 90.0f 180.0f 270.0f
|
||||
```
|
||||
|
||||
使 `半径` 范围内的 `RailCraft 永动机车` 锁定(私人模式)(已测试:1.10.2)
|
||||
使 `半径` 范围内的 `RailCraft 永动机车` 锁定(私人模式)(已测试:1.10.2)
|
||||
|
||||
```text
|
||||
/entitydata @e[r=半径,type=railcraft.locomotive_creative] {lock:"PRIVATE"}
|
||||
```
|
||||
|
||||
使 `半径` 范围内的 `RailCraft 永动机车` 启动(已测试:1.10.2)
|
||||
使 `半径` 范围内的 `RailCraft 永动机车` 启动(已测试:1.10.2)
|
||||
|
||||
```text
|
||||
/entitydata @e[r=半径,type=railcraft.locomotive_creative] {locoMode:2b}
|
||||
```
|
||||
|
||||
使 `半径` 范围内的 `RailCraft 永动机车` 停止(已测试:1.10.2)
|
||||
使 `半径` 范围内的 `RailCraft 永动机车` 停止(已测试:1.10.2)
|
||||
|
||||
```text
|
||||
/entitydata @e[r=半径,type=railcraft.locomotive_creative] {locoMode:0b}
|
||||
```
|
||||
|
||||
使 `半径` 范围内的 `矿车` 内显示方块 ID 为 `ID:数据值` 的方块
|
||||
使 `半径` 范围内的 `矿车` 内显示方块 ID 为 `ID:数据值` 的方块
|
||||
|
||||
```text
|
||||
已测试:1.10.2
|
||||
@@ -78,13 +78,13 @@ tags: [Minecraft,合集,命令,命令方块]
|
||||
/entitydata @e[r=半径,type=minecart] {CustomDisplayTile:1b,DisplayTile:"ID",DisplayData:数据值,DisplayOffset:方块垂直位移}
|
||||
```
|
||||
|
||||
使 `半径` 范围内的 `生物` 无敌(已测试:1.10.2)
|
||||
使 `半径` 范围内的 `生物` 无敌(已测试:1.10.2)
|
||||
|
||||
```text
|
||||
/entitydata @e[r=半径] {Invulnerable:1b}
|
||||
```
|
||||
|
||||
使 `半径` 范围内的 `物品` 无法被捡起 & 消失
|
||||
使 `半径` 范围内的 `物品` 无法被捡起 & 消失
|
||||
|
||||
```text
|
||||
已测试:1.10.2 Sponge 服务端
|
||||
@@ -121,19 +121,19 @@ tags: [Minecraft,合集,命令,命令方块]
|
||||
|
||||
## /summom
|
||||
|
||||
在 `原地` 生成半径为 `半径` ,时长为 `游戏刻` 的 `伤害 II` 的药水云(已测试:1.10.2)
|
||||
在 `原地` 生成半径为 `半径` ,时长为 `游戏刻` 的 `伤害 II` 的药水云(已测试:1.10.2)
|
||||
|
||||
```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}]}
|
||||
```
|
||||
|
||||
在 `原地` 生成名称为 `ID` 且 `无敌` 的临时 NPC(已测试:1.10.2 Sponge 服务端)
|
||||
在 `原地` 生成名称为 `ID` 且 `无敌` 的临时 NPC(已测试:1.10.2 Sponge 服务端)
|
||||
|
||||
```text
|
||||
/summon Sponge.Human ~ ~ ~ {Invulnerable:1b,CustomName:"ID"}
|
||||
```
|
||||
|
||||
在 `原地` 生成一辆内部显示方块 ID 为 `ID:数据值` 的方块的矿车
|
||||
在 `原地` 生成一辆内部显示方块 ID 为 `ID:数据值` 的方块的矿车
|
||||
|
||||
```text
|
||||
已测试:1.10.2
|
||||
@@ -143,7 +143,7 @@ tags: [Minecraft,合集,命令,命令方块]
|
||||
/summon minecart ~ ~ ~ {CustomDisplayTile:1b,DisplayTile:"ID",DisplayData:数据值,DisplayOffset:方块垂直位移}
|
||||
```
|
||||
|
||||
在 `原地` 生成方块 ID 为 `ID:数据值` 的浮空方块(已测试:1.12.2)
|
||||
在 `原地` 生成方块 ID 为 `ID:数据值` 的浮空方块(已测试:1.12.2)
|
||||
|
||||
```text
|
||||
/summon falling_block X Y Z {Block:"ID",Data:数据值b,Time:1,NoGravity:1b,UpdateBlocked:1b,CustomName:"名称"}
|
||||
@@ -151,18 +151,18 @@ tags: [Minecraft,合集,命令,命令方块]
|
||||
|
||||
## /testfor
|
||||
|
||||
检测半径为 `半径` 的玩家手上是否 `持有` 相应 `物品 ID` 的物品(已测试:1.10.2)
|
||||
检测半径为 `半径` 的玩家手上是否 `持有` 相应 `物品 ID` 的物品(已测试:1.10.2)
|
||||
|
||||
```text
|
||||
/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}}`
|
||||
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Minecraft Java 版服务端启动参数选项
|
||||
title: "Minecraft Java 版服务端启动参数选项"
|
||||
date: 2025-03-16T15:41:39Z
|
||||
lastmod: 2025-03-16T15:42:12Z
|
||||
tags: [Minecraft,Java,服务器]
|
||||
@@ -22,31 +22,31 @@ tags: [Minecraft,Java,服务器]
|
||||
- `--forceUpgrade`
|
||||
强制升级所有区块到服务端目前的版本(单人游戏世界也可用)。
|
||||
此选项会增加启动服务端所需的时间。
|
||||
- `--initSettings`
|
||||
只初始化 `server.properties` 和 `eula.txt`,然后退出。
|
||||
- `--initSettings`
|
||||
只初始化 `server.properties` 和 `eula.txt`,然后退出。
|
||||
- `--jfrprofile`
|
||||
启动服务端时初始化 Java Flight Recorder。
|
||||
只在 Minecraft 1.18 及以上的版本可用。
|
||||
- `--nogui`
|
||||
启动服务端不显示服务端内置的图形界面。
|
||||
添加该参数后,只能在系统的 “命令提示符” 或 “终端” 中控制服务端。
|
||||
- `--port <Integer>`
|
||||
- `--port <Integer>`
|
||||
指定服务端监听的端口(默认值为 -1 ),忽略在 `server.properties` 中的设置。
|
||||
- `--safeMode`
|
||||
安全模式,加载存档时只使用原版数据包。
|
||||
- `--serverId <String>`
|
||||
给服务端指定一个 ID(似乎没有作用)。
|
||||
- `--singleplayer <String>`
|
||||
- `--singleplayer <String>`
|
||||
使服务端以离线模式运行(参数值 `<String>` 的用途未知,可能是 Mojang 内部使用的)。
|
||||
- `--universe <String>`
|
||||
- `--universe <String>`
|
||||
指定查找存档文件夹所在的路径(默认为 `.`,即当前目录)。
|
||||
- `--world <String>`
|
||||
- `--world <String>`
|
||||
指定 `level.dat` 所在文件夹的名称(存档文件夹名称)。
|
||||
- `-o true`
|
||||
使服务端以在线模式运行,只有经过认证的用户才能进入(新版本中此选项不可用)。
|
||||
|
||||
示例命令行:
|
||||
|
||||
- `java -Xms256M -Xmx2G -jar minecraft_server.jar --forceUpgrade --nogui`
|
||||
- `java -Xms256M -Xmx2G -jar minecraft_server.jar --forceUpgrade --nogui`
|
||||
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「Minecraft」相关链接
|
||||
title: "「Minecraft」相关链接"
|
||||
date: 2025-03-16T22:22:44Z
|
||||
lastmod: 2025-03-16T22:23:24Z
|
||||
tags: [Minecraft,链接,网站]
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「Minecraft」Funny Items Mod
|
||||
title: "「Minecraft」Funny Items Mod"
|
||||
date: 2025-03-16T18:41:35Z
|
||||
lastmod: 2025-03-16T18:44:20Z
|
||||
tags: [Minecraft,模组]
|
||||
@@ -42,7 +42,7 @@ TNT(原版) + 铁粒
|
||||
|
||||
**合成表**(有序合成)
|
||||
|
||||
羽毛(原版) + 末影珍珠 `4`
|
||||
羽毛(原版) + 末影珍珠 `4`
|
||||

|
||||
|
||||
**可配置项**
|
||||
@@ -94,7 +94,7 @@ TNT(原版) + 铁粒
|
||||
|
||||
**合成表**(有序合成)
|
||||
|
||||
火药 + 铁锭 `4`
|
||||
火药 + 铁锭 `4`
|
||||

|
||||
|
||||
**可配置项**
|
||||
@@ -103,7 +103,7 @@ TNT(原版) + 铁粒
|
||||
|
||||
#### 铁剑(异常)
|
||||
|
||||
> 攻击 `生物` 后,随机给予 `生物` 随机的 `伤害值` 或 `生命值`。
|
||||
> 攻击 `生物` 后,随机给予 `生物` 随机的 `伤害值` 或 `生命值`。
|
||||
|
||||
**耐久度**
|
||||
|
||||
@@ -120,7 +120,7 @@ TNT(原版) + 铁粒
|
||||
|
||||
#### 钻石剑(异常)
|
||||
|
||||
> 攻击 `生物` 后,随机给予 `生物` 随机的 `伤害值` 或 `生命值`。
|
||||
> 攻击 `生物` 后,随机给予 `生物` 随机的 `伤害值` 或 `生命值`。
|
||||
|
||||
**耐久度**
|
||||
|
||||
@@ -187,21 +187,21 @@ TNT(原版) + 铁粒
|
||||
|
||||
- `/funnyitems get`
|
||||
获取当前配置。
|
||||
- `/funnyitems reset`
|
||||
- `/funnyitems reset`
|
||||
重置配置(第一次使用或更新后如果发现有配置值为 0,最好执行一次,或手动将其 `set` 为默认值以免出现问题)。
|
||||
- `/funnyitems set AttackRandomDiamond_Max <数值>`
|
||||
- `/funnyitems set AttackRandomDiamond_Max <数值>`
|
||||
修改 `钻石剑(异常)` 的随机值的最大值(默认值 14)。
|
||||
- `/funnyitems set AttackRandomIron_Max <数值>`
|
||||
- `/funnyitems set AttackRandomIron_Max <数值>`
|
||||
修改 `铁剑(异常)` 的随机值的最大值(默认值 12)。
|
||||
- `/funnyitems set DiamondExplode_Power <数值>`
|
||||
- `/funnyitems set DiamondExplode_Power <数值>`
|
||||
修改 `钻石` 的爆炸威力(默认值 4)。
|
||||
- `/funnyitems set HandGrenade_Power <数值>`
|
||||
- `/funnyitems set HandGrenade_Power <数值>`
|
||||
修改 `手榴弹` 的爆炸威力(默认值 4)。
|
||||
- `/funnyitems set SteveExplode_Power <数值>`
|
||||
- `/funnyitems set SteveExplode_Power <数值>`
|
||||
修改 `炸弹人` 的爆炸威力(默认值 2)。
|
||||
- `/funnyitems set TNTA_Power <数值>`
|
||||
- `/funnyitems set TNTA_Power <数值>`
|
||||
修改 `TNT` 的爆炸威力(默认值 4)。
|
||||
- `/funnyitems set ToSky_High <数值>`
|
||||
- `/funnyitems set ToSky_High <数值>`
|
||||
修改 `羽毛` 的传送高度差(默认值 100)。
|
||||
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 使用 gooreplacer 插件解决国内在 Minecraft 官网不能登录的问题
|
||||
title: "使用 gooreplacer 插件解决国内在 Minecraft 官网不能登录的问题"
|
||||
date: 2025-03-16T18:45:10Z
|
||||
lastmod: 2025-03-16T18:53:44Z
|
||||
tags: [Minecraft,教程,浏览器,插件]
|
||||
@@ -31,7 +31,7 @@ tags: [Minecraft,教程,浏览器,插件]
|
||||
|
||||
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 浏览器,则可以直接安装)。
|
||||
|
||||
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` 进行下载)。
|
||||

|
||||
3. 在 Chrome 中打开 `chrome://extensions/`,然后把刚刚下载的 `gooreplacer.crx` 文件拖到页面中,等待一会就会弹出确认安装提示框,点击“添加扩展程序”然后稍等片刻就安装完成了。
|
||||
3. 在 Chrome 中打开 `chrome://extensions/`,然后把刚刚下载的 `gooreplacer.crx` 文件拖到页面中,等待一会就会弹出确认安装提示框,点击“添加扩展程序”然后稍等片刻就安装完成了。
|
||||
|
||||
## 配置扩展程序
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「Minecraft」OP 权限等级
|
||||
title: "「Minecraft」OP 权限等级"
|
||||
date: 2025-03-19T12:32:49Z
|
||||
lastmod: 2025-03-19T12:35:47Z
|
||||
tags: [Minecraft,科普]
|
||||
@@ -39,7 +39,7 @@ tags: [Minecraft,科普]
|
||||
- 函数(Function)拥有权限等级 2(可以在 `server.properties` 中修改)。
|
||||
- 对于玩家:
|
||||
|
||||
- 若玩家在服务器中拥有 OP 权限,其权限等级可在服务端的 `ops.json` 文件中指定,默认权限等级可在 `server.properties` 中设置。
|
||||
- 若玩家在服务器中拥有 OP 权限,其权限等级可在服务端的 `ops.json` 文件中指定,默认权限等级可在 `server.properties` 中设置。
|
||||
- 若玩家处于单人世界或为局域网世界的所有者(房主),且启用了作弊,则其权限等级为 4。
|
||||
|
||||
### 基岩版
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「优化」使你的 Minecraft 玩起来更流畅
|
||||
title: "「优化」使你的 Minecraft 玩起来更流畅"
|
||||
date: 2025-02-15T19:17:41Z
|
||||
lastmod: 2025-02-20T23:04:13Z
|
||||
tags: [游戏,Minecraft,教程,优化]
|
||||
@@ -46,14 +46,14 @@ Java 分 32 位和 64 位版本,如果你的系统是 64 位,就安装 64
|
||||
|
||||
## 方法五:给 Java 分配更多的内存展开目录
|
||||
|
||||
本方法以正版启动器为例,其他的第三方启动器通常能在`启动器设置`找到内存分配设置选项。
|
||||
**注意:内存只能分配** **`小于`** **当前系统剩余内存的大小。**
|
||||
本方法以正版启动器为例,其他的第三方启动器通常能在`启动器设置`找到内存分配设置选项。
|
||||
**注意:内存只能分配** **`小于`** **当前系统剩余内存的大小。**
|
||||
|
||||
#### 步骤展开目录
|
||||
|
||||
1. 点击启动器左下角的 `Edit Profile` 按钮:
|
||||
1. 点击启动器左下角的 `Edit Profile` 按钮:
|
||||

|
||||
2. 勾选 `JVM Arguments` 后,即可修改内容:
|
||||
2. 勾选 `JVM Arguments` 后,即可修改内容:
|
||||

|
||||
3. 修改完成后,保存即可:
|
||||

|
||||
@@ -82,7 +82,7 @@ Optifine 是一个优化 Minecraft 的 MOD(模组),它提供了非常实
|
||||
|
||||

|
||||
|
||||
把 `图像品质` 设置为 `流畅`(视频设置)
|
||||
把 `图像品质` 设置为 `流畅`(视频设置)
|
||||
|
||||

|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: MIUI 拨号盘指令(代码)合集
|
||||
title: "MIUI 拨号盘指令(代码)合集"
|
||||
date: 2025-02-11T20:55:13Z
|
||||
lastmod: 2025-02-20T22:58:12Z
|
||||
tags: [Android,小米,系统,HyperOS,MIUI]
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 移动端 QQ & 微信页面链接
|
||||
title: "移动端 QQ & 微信页面链接"
|
||||
date: 2025-03-16T22:07:27Z
|
||||
lastmod: 2025-03-16T22:14:01Z
|
||||
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
|
||||
|
||||
### 打卡
|
||||
|
||||
#### 主页
|
||||
|
||||
- `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
|
||||
|
||||
#### QQ盲盒
|
||||
|
||||
- `https://h5.qzone.qq.com/v2/vip/giftv2/blindBox`
|
||||
- `https://h5.qzone.qq.com/v2/vip/giftv2/blindBox`
|
||||
- 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
|
||||
|
||||
#### 好友动态权限设置
|
||||
|
||||
- `https://h5.qzone.qq.com/qzone/setting`
|
||||
- `https://h5.qzone.qq.com/qzone/setting`
|
||||
- 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
|
||||
|
||||
#### 我的好友
|
||||
|
||||
- `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
|
||||
|
||||
### 群发助手
|
||||
|
||||
- `https://h5.qzone.qq.com/v2/mass`
|
||||
- `https://h5.qzone.qq.com/v2/mass`
|
||||
- 2020-11-11
|
||||
|
||||
### 群聊
|
||||
|
||||
#### 群成员等级
|
||||
|
||||
- `https://qun.qq.com/interactive/levellist?gc=群号`
|
||||
- `https://qun.qq.com/interactive/levellist?gc=群号`
|
||||
- 2020-08-10
|
||||
|
||||
#### 群打卡记录
|
||||
|
||||
- `https://qun.qq.com/v2/signin/detail?gc=群号`
|
||||
- `https://qun.qq.com/v2/signin/detail?gc=群号`
|
||||
- 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
|
||||
|
||||
##### 相关群
|
||||
|
||||
- `https://qun.qq.com/v2/associate/index?gc=群号`
|
||||
- `https://qun.qq.com/v2/associate/index?gc=群号`
|
||||
- 2021-10-10
|
||||
|
||||
#### 群机器人
|
||||
|
||||
- `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://qun.qq.com/qqweb/m/qun/qun_robot/setting.html?gc=群号`
|
||||
- `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
|
||||
|
||||
#### 群聊等级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
|
||||
|
||||
#### 群相册
|
||||
|
||||
##### 普通
|
||||
|
||||
- `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/index?inqq=1&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=4&groupId=群号`
|
||||
- `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=2&groupId=群号`
|
||||
- `https://h5.qzone.qq.com/groupphoto/index?inqq=3&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
|
||||
|
||||
#### 群应用
|
||||
|
||||
##### 普通
|
||||
|
||||
- `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
|
||||
|
||||
##### 管理
|
||||
|
||||
- `https://qun.qq.com/slidepanel/manage?gc=群号`
|
||||
- `https://qun.qq.com/slidepanel/manage?gc=群号`
|
||||
- 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
|
||||
|
||||
### 设置
|
||||
|
||||
#### 撤回消息提示文本
|
||||
|
||||
- `https://zb.vip.qq.com/v2/pages/withdrawMessage`
|
||||
- `https://zb.vip.qq.com/v2/pages/withdrawMessage`
|
||||
- 2020-09-03
|
||||
|
||||
#### 发现我的方式
|
||||
|
||||
- `https://ti.qq.com/friendshipauth/find`
|
||||
- `https://ti.qq.com/friendshipauth/find`
|
||||
- 2020-09-03
|
||||
|
||||
#### 单向好友管理
|
||||
|
||||
- `https://ti.qq.com/friends/unidirection`
|
||||
- `https://ti.qq.com/friends/unidirection`
|
||||
- 2020-09-03
|
||||
|
||||
#### 加我为好友的方式
|
||||
|
||||
- `https://ti.qq.com/friendship_auth/index.html`
|
||||
- `https://ti.qq.com/friendship_auth/index.html`
|
||||
- 2020-09-03
|
||||
|
||||
#### 聊天记录漫游
|
||||
|
||||
- QQ:`https://gxh.vip.qq.com/club/client/msgRoam/rel/html/index_v2.html`
|
||||
- TIM:`https://tim.qq.com/htdocs/roaming/index.html`
|
||||
- QQ:`https://gxh.vip.qq.com/club/client/msgRoam/rel/html/index_v2.html`
|
||||
- TIM:`https://tim.qq.com/htdocs/roaming/index.html`
|
||||
- 2020-09-03
|
||||
|
||||
#### 群互动标识开关(个人)
|
||||
|
||||
- `https://qun.qq.com/interactive/usersetting`
|
||||
- `https://qun.qq.com/interactive/usersetting`
|
||||
- 2020-09-03
|
||||
|
||||
#### 头像双击互动装扮(拍一拍)
|
||||
|
||||
- `https://zb.vip.qq.com/v2/pages/nudgeMall`
|
||||
- `https://zb.vip.qq.com/v2/pages/nudgeMall`
|
||||
- 2022-04-25
|
||||
|
||||
### 坦白说
|
||||
|
||||
- `https://ti.qq.com/honest-say/main.html`
|
||||
- `https://ti.qq.com/honest-say/main.html`
|
||||
- 2021-10-10
|
||||
|
||||
### 提醒
|
||||
|
||||
- `https://ti.qq.com/remind/index`
|
||||
- `https://ti.qq.com/remind/index`
|
||||
- 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://h5.vip.qq.com/p/mc/card/grow`
|
||||
- `https://h5.vip.qq.com/p/mc/card/grow`
|
||||
- 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
|
||||
|
||||
#### 精选照片
|
||||
|
||||
- `https://ti.qq.com/photowall/index.html?uin=Q号`
|
||||
- `https://ti.qq.com/photowall/index.html?uin=Q号`
|
||||
- 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
|
||||
|
||||
##### 回答
|
||||
|
||||
- `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
|
||||
|
||||
#### 头像
|
||||
@@ -318,7 +318,7 @@ tags: [链接,Android,QQ,微信,软件]
|
||||
|
||||
> 参考: [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)|
|
||||
| :-----------------| :-------------|
|
||||
@@ -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
|
||||
|
||||
#### 消息列表(资料卡)
|
||||
|
||||
- `https://ti.qq.com/signature/msglist`
|
||||
- `https://ti.qq.com/signature/msglist`
|
||||
- 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://club.vip.qq.com/card`
|
||||
- `https://mc.vip.qq.com/card/index`
|
||||
- `https://club.vip.qq.com/card`
|
||||
|
||||
## 微信
|
||||
|
||||
### ~~添加联系人(URL Scheme)~~
|
||||
|
||||
- `<a href="weixin://contacts/profile/对方微信ID">微信</a>`
|
||||
- 复制到输入框修改 `对方微信ID` 后发送,点击发出的 `微信` 即可进入。
|
||||
- `<a href="weixin://contacts/profile/对方微信ID">微信</a>`
|
||||
- 复制到输入框修改 `对方微信ID` 后发送,点击发出的 `微信` 即可进入。
|
||||
- 使用此方法可以添加自己到联系人列表,也可以重复添加联系人列表中已存在的好友(修改`对方微信ID`的英文字母大小写)。
|
||||
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Nginx 常用配置文件片段
|
||||
title: "Nginx 常用配置文件片段"
|
||||
date: 2025-03-15T22:57:21Z
|
||||
lastmod: 2025-03-15T22:59:02Z
|
||||
tags: [配置,Nginx,服务器,网站]
|
||||
@@ -116,7 +116,7 @@ server {
|
||||
|
||||
注意:只有 OpenSSL 1.0.2 及以上版本支持
|
||||
|
||||
将 `ssl_certificate` 和 `ssl_certificate_key`,复制多一份,然后把路径修改为其他类型证书的路径:
|
||||
将 `ssl_certificate` 和 `ssl_certificate_key`,复制多一份,然后把路径修改为其他类型证书的路径:
|
||||
|
||||
```nginx
|
||||
server {
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Electron 或 Node.js 判断当前设备是否支持触摸屏
|
||||
title: "Electron 或 Node.js 判断当前设备是否支持触摸屏"
|
||||
date: 2025-02-11T20:55:18Z
|
||||
lastmod: 2025-02-20T22:57:46Z
|
||||
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` 获取当前设备是否支持触摸屏。
|
||||
|
||||
若 `IsTabletPC` 的值大于 `0`,则表示支持触摸屏。
|
||||
若 `IsTabletPC` 的值大于 `0`,则表示支持触摸屏。
|
||||
|
||||

|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: NPM、Yarn、Vue CLI 的常见问题以及解决方法
|
||||
title: "NPM、Yarn、Vue CLI 的常见问题以及解决方法"
|
||||
date: 2025-03-15T23:00:14Z
|
||||
lastmod: 2025-03-15T23:02:32Z
|
||||
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
|
||||
|
||||
`less-loader` 或 `sass-loader` 的版本过高,不兼容,需要降级。
|
||||
`less-loader` 或 `sass-loader` 的版本过高,不兼容,需要降级。
|
||||
|
||||
对于 Less:
|
||||
|
||||
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:
|
||||
|
||||
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 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
|
||||
vue init simulatedgreg/electron-vue 项目名称 --offline
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 解决 OBS 显示器捕获黑屏的三个方法
|
||||
title: "解决 OBS 显示器捕获黑屏的三个方法"
|
||||
date: 2025-03-16T16:22:52Z
|
||||
lastmod: 2025-03-16T16:23:19Z
|
||||
tags: [Windows,软件,OBS,配置]
|
||||
@@ -23,8 +23,8 @@ tags: [Windows,软件,OBS,配置]
|
||||
|
||||
- 找到 OBS 的可执行文件:
|
||||
|
||||
- 32位:`OBS安装路径\bin\32bit\obs32.exe`
|
||||
- 64位:`OBS安装路径\bin\64bit\obs64.exe`
|
||||
- 32位:`OBS安装路径\bin\32bit\obs32.exe`
|
||||
- 64位:`OBS安装路径\bin\64bit\obs64.exe`
|
||||
- 右键点击 `可执行文件`,点击“属性”
|
||||
- 根据图中的标出的内容修改设置,并点击“确定”
|
||||

|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: PlotSquared 创建 Minecraft 默认地形的地皮世界
|
||||
title: "PlotSquared 创建 Minecraft 默认地形的地皮世界"
|
||||
date: 2025-03-16T18:28:32Z
|
||||
lastmod: 2025-03-16T18:30:18Z
|
||||
tags: [插件,Minecraft,PlotSquared]
|
||||
@@ -52,13 +52,13 @@ PlotSquared 插件版本: v3.5.0-SNAPSHOT
|
||||
- 5.9 地皮路面的方块
|
||||
- 5.10 地皮围墙的方块
|
||||
- 5.11 地皮围墙的高度
|
||||
- 5.12 是否在世界最低层生成 `基岩`
|
||||
- 5.12 是否在世界最低层生成 `基岩`
|
||||
|
||||
#### 6. 世界的名称(建议仅使用 `英文字母`、`数字`、`下划线`)
|
||||
#### 6. 世界的名称(建议仅使用 `英文字母`、`数字`、`下划线`)
|
||||
|
||||
## 提示
|
||||
|
||||
若在安装过程中输入了错误的参数,可通过 `/p setup cancel` 取消 `安装` 并重新开始。
|
||||
若在安装过程中输入了错误的参数,可通过 `/p setup cancel` 取消 `安装` 并重新开始。
|
||||
|
||||
正常安装结束后,在配置文件 `plotsquared/config/worlds.yml` 中会存在以下内容:
|
||||
|
||||
@@ -78,6 +78,6 @@ world-generation-modifiers=[
|
||||
]
|
||||
```
|
||||
|
||||
安装结束后,在对应的世界中输入 `/p i`、`/p claim` 等命令,可能会提示 `不在地皮世界中`,此时需要重启服务端。
|
||||
安装结束后,在对应的世界中输入 `/p i`、`/p claim` 等命令,可能会提示 `不在地皮世界中`,此时需要重启服务端。
|
||||
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 在用 uni-app 开发钉钉小程序的时候遇到一个奇怪的问题,发送请求拿不到返回的数据
|
||||
title: "在用 uni-app 开发钉钉小程序的时候遇到一个奇怪的问题,发送请求拿不到返回的数据"
|
||||
date: 2025-02-11T20:55:40Z
|
||||
lastmod: 2025-02-12T09:51:42Z
|
||||
tags: [Web 前端,uni-app,小程序]
|
||||
@@ -9,7 +9,7 @@ tags: [Web 前端,uni-app,小程序]
|
||||
|
||||
今天我一位同事说用 uni-app 新开发的钉钉小程序里发送请求拿不到返回的数据,看了下发现调试工具的“Network”栏里显示请求是发送成功的,也有返回数据,但是没触发请求的回调函数。
|
||||
|
||||
原本用的是 `luch-request` 这个库发送的请求,后来试了下 uni-app 内置的 `uni.request` 以及钉钉的 `dd.httpRequest` 都是一样不行。
|
||||
原本用的是 `luch-request` 这个库发送的请求,后来试了下 uni-app 内置的 `uni.request` 以及钉钉的 `dd.httpRequest` 都是一样不行。
|
||||
|
||||

|
||||
|
||||
@@ -23,7 +23,7 @@ tags: [Web 前端,uni-app,小程序]
|
||||
|
||||

|
||||
|
||||
看来看去,最后发现原来是这个 `options.value = options` 导致的(刚开始试过在 `App.vue` 里写请求也不行就没怎么在意这里),把它去掉就正常了。
|
||||
看来看去,最后发现原来是这个 `options.value = options` 导致的(刚开始试过在 `App.vue` 里写请求也不行就没怎么在意这里),把它去掉就正常了。
|
||||
|
||||

|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: QQ 宠物 HTML5 版
|
||||
title: "QQ 宠物 HTML5 版"
|
||||
date: 2025-03-16T22:20:29Z
|
||||
lastmod: 2025-03-16T22:21:35Z
|
||||
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)。
|
||||
|
||||
---
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 在 Linux Windows 查询域名的 SRV 记录
|
||||
title: "在 Linux Windows 查询域名的 SRV 记录"
|
||||
date: 2025-03-16T16:03:27Z
|
||||
lastmod: 2025-03-16T16:03:47Z
|
||||
tags: [Windows,Linux,域名,命令]
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「推荐」实用网站
|
||||
title: "「推荐」实用网站"
|
||||
date: 2025-03-19T11:40:35Z
|
||||
lastmod: 2025-03-19T11:43:06Z
|
||||
tags: [推荐,网站,合集]
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「记录」游戏通关记录
|
||||
title: "「记录」游戏通关记录"
|
||||
date: 2025-03-19T12:30:11Z
|
||||
lastmod: 2025-03-19T12:32:33Z
|
||||
tags: [游戏,记录]
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Chrome URLs 列表(List of Chrome URLs)
|
||||
title: "Chrome URLs 列表(List of Chrome URLs)"
|
||||
date: 2025-03-16T22:14:24Z
|
||||
lastmod: 2025-03-16T22:17:01Z
|
||||
tags: [软件,Chrome,Chromium,链接]
|
||||
@@ -15,7 +15,7 @@ tags: [软件,Chrome,Chromium,链接]
|
||||
|
||||
- **chrome://about**
|
||||
|
||||
进入 `chrome://chrome-urls`
|
||||
进入 `chrome://chrome-urls`
|
||||
- **chrome://accessibility**
|
||||
- **chrome://appcache-internals**
|
||||
|
||||
@@ -99,7 +99,7 @@ tags: [软件,Chrome,Chromium,链接]
|
||||
- **chrome://offline-internals**
|
||||
- **chrome://omnibox**
|
||||
|
||||
调试 `智能地址栏`
|
||||
调试 `智能地址栏`
|
||||
- **chrome://password-manager-internals**
|
||||
- **chrome://plugins/**
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 临时设置 Java 环境变量(PATH)
|
||||
title: "临时设置 Java 环境变量(PATH)"
|
||||
date: 2025-03-16T16:09:15Z
|
||||
lastmod: 2025-03-16T16:10:28Z
|
||||
tags: [Linux,Windows,命令,命令提示符,Java,终端]
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「教程」在 Termux 中安装任意版本的 JDK
|
||||
title: "「教程」在 Termux 中安装任意版本的 JDK"
|
||||
date: 2025-03-16T15:43:12Z
|
||||
lastmod: 2025-03-16T15:45:51Z
|
||||
tags: [教程,Android,Java,JDK,Termux]
|
||||
@@ -31,9 +31,9 @@ tags: [教程,Android,Java,JDK,Termux]
|
||||
## 启动 Termux & 安装相关的软件包
|
||||
|
||||
1. 启动 Termux,等待初始化完成(仅在第一次启动时)。
|
||||
2. 执行 `pkg update` 命令,更新软件包信息。
|
||||
2. 执行 `pkg update` 命令,更新软件包信息。
|
||||
可能会出现类似这样的提示,如果没有手动修改过提示中的文件,
|
||||
可以输入 `Y`,否则输入 `N`,然后点击 `ENTER`。
|
||||
可以输入 `Y`,否则输入 `N`,然后点击 `ENTER`。
|
||||

|
||||
3. 执行 `pkg install openssl-tool proot vim wget -y` 命令,安装4个软件包。
|
||||
|
||||
@@ -48,13 +48,13 @@ tags: [教程,Android,Java,JDK,Termux]
|
||||

|
||||
2. 复制软件给出的安装命令。
|
||||

|
||||
3. 在 Termux 中执行 `cd ~` 命令,切换工作目录到 `home` 文件夹。
|
||||
3. 在 Termux 中执行 `cd ~` 命令,切换工作目录到 `home` 文件夹。
|
||||
然后粘贴复制的命令,等待脚本自动完成安装操作。
|
||||
如果网络状况不稳定,可能会出现安装失败或文件下载失败的情况。
|
||||
一般来说,如果在输出的内容中已经出现 `Resolving...`、`Connecting...` 之类的提示,则表示命令前方部分的 `pkg install` 部分已执行成功,但在后方部分的 `wget` 下载安装脚本或 Rootfs 文件的过程中出现错误。
|
||||
一般来说,如果在输出的内容中已经出现 `Resolving...`、`Connecting...` 之类的提示,则表示命令前方部分的 `pkg install` 部分已执行成功,但在后方部分的 `wget` 下载安装脚本或 Rootfs 文件的过程中出现错误。
|
||||

|
||||

|
||||
如果文件下载失败(输出的内容中有类似 `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*` 命令),才能再次执行复制的命令,否则可能会被误认为文件已经下载完成或出现其他问题。
|
||||

|
||||
4. 如果文件下载完毕且安装成功,则会出现类似这样的提示:
|
||||

|
||||
@@ -78,7 +78,7 @@ tags: [教程,Android,Java,JDK,Termux]
|
||||
>
|
||||
5. 进入 `Anlinux-Resources/Scripts/Installer/` 文件夹,下载对应系统的安装脚本。
|
||||
|
||||
> Ubuntu 系统的安装脚本路径为 `Anlinux-Resources/Scripts/Installer/Ubuntu/ubuntu.sh`。
|
||||
> Ubuntu 系统的安装脚本路径为 `Anlinux-Resources/Scripts/Installer/Ubuntu/ubuntu.sh`。
|
||||
> 本教程中使用的文件的更新日期为 **2020-01-15**。
|
||||
>
|
||||
|
||||
@@ -93,13 +93,13 @@ tags: [教程,Android,Java,JDK,Termux]
|
||||
9. 执行 `cp <源路径> <目标路径>` 命令,复制 Rootfs 文件和安装脚本到 Termux 中。
|
||||
|
||||
> 注:
|
||||
> 执行 `cp` 命令前可以先执行 `cd` 命令切换工作目录;
|
||||
> 建议执行 `cd ~` 命令,回到 `home` 目录,方便后续操作。
|
||||
> 执行 `cp` 命令前可以先执行 `cd` 命令切换工作目录;
|
||||
> 建议执行 `cd ~` 命令,回到 `home` 目录,方便后续操作。
|
||||
> 命令中的 `.` 表示执行命令时的工作目录。
|
||||
>
|
||||
|
||||

|
||||
10. 执行 `bash <安装脚本文件名>` 命令,调用脚本,安装系统。
|
||||
10. 执行 `bash <安装脚本文件名>` 命令,调用脚本,安装系统。
|
||||

|
||||
|
||||
## 进入 Ubuntu 系统
|
||||
@@ -109,16 +109,16 @@ tags: [教程,Android,Java,JDK,Termux]
|
||||
> **建议修改,方便传输文件。**
|
||||
>
|
||||
|
||||
执行 `vim ~/start-ubuntu.sh` 命令,打开编辑器:
|
||||
执行 `vim ~/start-ubuntu.sh` 命令,打开编辑器:
|
||||

|
||||
点击 `i` 键,进入插入模式,然后将第 20 行前的 `#` 删除(取消注释):
|
||||
点击 `i` 键,进入插入模式,然后将第 20 行前的 `#` 删除(取消注释):
|
||||

|
||||
点击 `ESC`,输入 `:wq`,点击 `ENTER`,保存并关闭文件:
|
||||
点击 `ESC`,输入 `:wq`,点击 `ENTER`,保存并关闭文件:
|
||||

|
||||
2. 然后就可以执行 `bash ~/start-ubuntu.sh` 命令,进入安装的 Ubuntu 系统了。
|
||||
|
||||
> 注:
|
||||
> 如果当前的工作目录为 `home`,可以执行 `./start-ubuntu.sh`。
|
||||
> 如果当前的工作目录为 `home`,可以执行 `./start-ubuntu.sh`。
|
||||
> 下一次打开 Termux 时也是通过执行此命令进入 Ubuntu 系统。
|
||||
>
|
||||
|
||||
@@ -168,17 +168,17 @@ tags: [教程,Android,Java,JDK,Termux]
|
||||
|
||||
1. 将下载好的 JDK 文件移动到任意位置放好(也可以不移动)。
|
||||

|
||||
2. 在 Termux 中执行 `cd` 命令切换工作目录(例如 `cd ~`);
|
||||
然后执行 `mkdir <文件夹名称>` 命令创建用于放置 JDK 的文件夹;
|
||||
2. 在 Termux 中执行 `cd` 命令切换工作目录(例如 `cd ~`);
|
||||
然后执行 `mkdir <文件夹名称>` 命令创建用于放置 JDK 的文件夹;
|
||||
然后执行 `cd <文件夹名称>` 命令切换工作目录到创建的文件夹。
|
||||
3. 执行 `cp <源路径> <目标路径>` 命令,把下载的 JDK 文件复制到 Ubuntu 中。
|
||||
|
||||
> 例如 `cp /sdcard/Files/OpenJDK_16.tar.gz .`
|
||||
> 例如 `cp /sdcard/Files/OpenJDK_16.tar.gz .`
|
||||
> 注:`/sdcard` 为手机的内部储存挂载路径,需要修改 Ubuntu 启动脚本才能使用。
|
||||
>
|
||||
|
||||

|
||||
4. 执行 `tar -xzf <文件名>` 命令,解压文件。
|
||||
4. 执行 `tar -xzf <文件名>` 命令,解压文件。
|
||||

|
||||
5. 执行 `mv <文件夹名称> <目标名称>` 命令,重命名 JDK 文件夹。
|
||||
|
||||
@@ -186,14 +186,14 @@ tags: [教程,Android,Java,JDK,Termux]
|
||||
>
|
||||
|
||||

|
||||
6. 执行 `cd <文件夹名称>/bin/` 命令,将工作目录切换到 JDK 的 `bin` 文件夹。
|
||||
然后执行 `ls -al` 命令,查看其中的文件是否有可执行权限(左侧的权限属性有三个 `x`)。
|
||||
6. 执行 `cd <文件夹名称>/bin/` 命令,将工作目录切换到 JDK 的 `bin` 文件夹。
|
||||
然后执行 `ls -al` 命令,查看其中的文件是否有可执行权限(左侧的权限属性有三个 `x`)。
|
||||
一般情况下,该权限在 JDK 文件打包前已经被设置,解压时会自动识别。
|
||||
如果没有,可以在当前文件夹执行一次 `chmod +x *` 命令。
|
||||
如果没有,可以在当前文件夹执行一次 `chmod +x *` 命令。
|
||||

|
||||
7. 执行 `./java -version` 命令,测试是否能出现对应的版本号。
|
||||
7. 执行 `./java -version` 命令,测试是否能出现对应的版本号。
|
||||

|
||||
8. 执行 `vim ~/.bash_profile` 命令(也可以先 `cd ~` 再 `vim .bash_profile`),
|
||||
8. 执行 `vim ~/.bash_profile` 命令(也可以先 `cd ~` 再 `vim .bash_profile`),
|
||||
打开“home”目录下的 `.bash_profile` 文件,设置环境变量。
|
||||
默认情况下,应该没有这个文件,将会在保存后自动创建。
|
||||
|
||||
@@ -204,10 +204,10 @@ tags: [教程,Android,Java,JDK,Termux]
|
||||
|
||||

|
||||

|
||||
9. 保存后,执行 `exit` 命令退出 Ubuntu 系统,
|
||||
然后再执行 `bash ~/start-ubuntu.sh` 命令,重新进入 Ubuntu 系统。
|
||||
9. 保存后,执行 `exit` 命令退出 Ubuntu 系统,
|
||||
然后再执行 `bash ~/start-ubuntu.sh` 命令,重新进入 Ubuntu 系统。
|
||||

|
||||
10. 此时执行 `java -version` 命令,有显示对应的版本号则安装成功,否则检查环境变量是否设置正确。
|
||||
10. 此时执行 `java -version` 命令,有显示对应的版本号则安装成功,否则检查环境变量是否设置正确。
|
||||

|
||||
|
||||
## 注意事项
|
||||
@@ -225,7 +225,7 @@ tags: [教程,Android,Java,JDK,Termux]
|
||||
|
||||
### Ubuntu
|
||||
|
||||
- 如果需要同时使用多个会话,可以安装 `screen` 软件包(`apt install screen`)。
|
||||
- 如果需要同时使用多个会话,可以安装 `screen` 软件包(`apt install screen`)。
|
||||
|
||||
### Vim 操作提示
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 内容格式测试
|
||||
title: "内容格式测试"
|
||||
date: 2025-03-16T22:27:03Z
|
||||
lastmod: 2025-10-07T18:32:34Z
|
||||
tags: [测试,格式,Markdown]
|
||||
@@ -9,7 +9,7 @@ tags: [测试,格式,Markdown]
|
||||
|
||||
## 目录
|
||||
|
||||
`[TOC]`
|
||||
`[TOC]`
|
||||
|
||||
## 字体样式
|
||||
|
||||
@@ -90,7 +90,7 @@ System.out.println("MarkDown");
|
||||
|
||||
## 格式
|
||||
|
||||
- `重点文字`
|
||||
- `重点文字`
|
||||
- ~~删除线~~
|
||||
- <u>下划线</u>
|
||||
- ==高亮==
|
||||
@@ -100,7 +100,7 @@ System.out.println("MarkDown");
|
||||
|
||||
## 图片
|
||||
|
||||

|
||||

|
||||
|
||||
## 表格
|
||||
|
||||
@@ -144,6 +144,6 @@ System.out.println("MarkDown");
|
||||
|
||||
### 手动换行
|
||||
|
||||
HTML 标签 `<br>`
|
||||
HTML 标签 `<br>`
|
||||
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 英语句子
|
||||
title: "英语句子"
|
||||
date: 2025-03-16T19:54:20Z
|
||||
lastmod: 2025-03-16T19:58:30Z
|
||||
tags: [文字,英语,句子]
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「Minecraft」UniverseGuard 2 插件部分提示文本汉化
|
||||
title: "「Minecraft」UniverseGuard 2 插件部分提示文本汉化"
|
||||
date: 2025-03-16T19:06:28Z
|
||||
lastmod: 2025-03-16T19:07:34Z
|
||||
tags: [Minecraft,翻译,插件]
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「Minecraft」矿车内显示自定义方块
|
||||
title: "「Minecraft」矿车内显示自定义方块"
|
||||
date: 2025-03-16T19:32:19Z
|
||||
lastmod: 2025-03-16T19:38:03Z
|
||||
tags: [Minecraft,教程,命令,命令方块]
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「教程」在 Android 手机上开 Minecraft 服务器
|
||||
title: "「教程」在 Android 手机上开 Minecraft 服务器"
|
||||
date: 2025-03-16T19:03:33Z
|
||||
lastmod: 2025-03-16T19:05:46Z
|
||||
tags: [Minecraft,教程,服务器,Android]
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「Minecraft」SignPicture(告示牌图片)教程
|
||||
title: "「Minecraft」SignPicture(告示牌图片)教程"
|
||||
date: 2025-03-16T22:18:01Z
|
||||
lastmod: 2025-03-16T22:19:24Z
|
||||
tags: [Minecraft,模组,教程]
|
||||
@@ -10,7 +10,7 @@ tags: [Minecraft,模组,教程]
|
||||
## 对于网络图片
|
||||
|
||||
1. 获取图片链接。
|
||||
2. 若链接长度较长,需要使用 `短链接服务` 把链接缩短([例](https://tinyurl.com/))。
|
||||
2. 若链接长度较长,需要使用 `短链接服务` 把链接缩短([例](https://tinyurl.com/))。
|
||||
|
||||
若链接长度较短,则直接到第 3 步。
|
||||
3. 在游戏中按下打开告示牌图片 GUI 的按键(默认是 `\`)。
|
||||
@@ -25,7 +25,7 @@ tags: [Minecraft,模组,教程]
|
||||
1. 寻找合适的图床([例](https://sm.ms/))。
|
||||
2. 把图片上传至图床。
|
||||
3. 获取图片链接。
|
||||
4. 若链接长度较长,需要使用 `短链接服务` 把链接缩短([例](https://tinyurl.com/))。
|
||||
4. 若链接长度较长,需要使用 `短链接服务` 把链接缩短([例](https://tinyurl.com/))。
|
||||
|
||||
若链接长度较短,则直接到第 5 步。
|
||||
5. 在游戏中按下打开告示牌图片 GUI 的按键(默认是 `\`)。
|
||||
@@ -41,6 +41,6 @@ tags: [Minecraft,模组,教程]
|
||||
|
||||
若需要使用资源包中的图片,可以将格式为 `!命名空间:文件名` 的文本作为图片链接在 SignPicture 中使用。
|
||||
|
||||
例如图片文件在资源包中的路径为 `/assets/image_pack/frost-zx.png`,则对应的链接文本为 `!image_pack:frost-zx.png`。
|
||||
例如图片文件在资源包中的路径为 `/assets/image_pack/frost-zx.png`,则对应的链接文本为 `!image_pack:frost-zx.png`。
|
||||
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 记一次 Ubuntu 20.04 双网卡配置过程
|
||||
title: "记一次 Ubuntu 20.04 双网卡配置过程"
|
||||
date: 2025-03-16T15:59:37Z
|
||||
lastmod: 2025-03-16T15:59:55Z
|
||||
tags: [网络,Linux,Ubuntu,系统,配置]
|
||||
@@ -17,7 +17,7 @@ tags: [网络,Linux,Ubuntu,系统,配置]
|
||||
|
||||
- 主路由有两个 DHCP 服务器(IP 为 10.32.1.1 和 10.32.2.1)。
|
||||
- 子路由设置了 DMZ 主机,指向服务器(192.168.148.100)。
|
||||
- 网卡A - `enp6s0`,网卡B - `ens4`。
|
||||
- 网卡A - `enp6s0`,网卡B - `ens4`。
|
||||
|
||||
注意:
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 在 Less 中使用与 Less 内置函数同名的原生 CSS 函数
|
||||
title: "在 Less 中使用与 Less 内置函数同名的原生 CSS 函数"
|
||||
date: 2025-02-11T20:47:17Z
|
||||
lastmod: 2025-02-20T22:58:47Z
|
||||
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()` 和 `max()` 嵌套使用的时候:
|
||||
但如果其中包含变量或嵌套的函数,则会进行计算。例如 `calc()` 和 `max()` 嵌套使用的时候:
|
||||
|
||||
```css
|
||||
.element {
|
||||
@@ -37,7 +37,7 @@ tags: [Web 前端,CSS,Less]
|
||||
|
||||
## 如何解决
|
||||
|
||||
这时可以使用 Less 的转义字符:在字符串前加上一个 `~` 符号,并将需要转义的字符串放在 `""` 或 `''` 中。
|
||||
这时可以使用 Less 的转义字符:在字符串前加上一个 `~` 符号,并将需要转义的字符串放在 `""` 或 `''` 中。
|
||||
|
||||

|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「合集」实用的 CSS、JavaScript 库
|
||||
title: "「合集」实用的 CSS、JavaScript 库"
|
||||
date: 2025-03-15T23:12:36Z
|
||||
lastmod: 2025-03-15T23:13:16Z
|
||||
tags: [Web 前端,CSS,JavaScript,Node.js,NPM]
|
||||
|
71
docs/content/ventoy-tool-usage-tutorial.md
Normal 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` 文件:
|
||||
|
||||

|
||||
|
||||
原地址的下载速度可能比较慢,建议从页面下方的镜像地址下载:
|
||||
|
||||

|
||||
3. 将下载的文件解压到任意位置(建议文件路径不包含空格或中文):
|
||||
|
||||

|
||||
|
||||
### 二、连接U盘
|
||||
|
||||
将需要制作为启动盘的U盘与电脑连接。
|
||||
|
||||
**注意:工具会将U盘的数据清空,请操作前先备份U盘中的文件。**
|
||||
|
||||
### 三、启动 Ventoy 工具
|
||||
|
||||
1. 运行文件夹中的 `Ventoy2Disk.exe`。
|
||||
|
||||

|
||||
2. 在“设备”中选择需要使用的U盘。
|
||||
|
||||
**注意:请确保选择正确的设备。**
|
||||
|
||||

|
||||
3. 根据需要,调整工具的配置选项。
|
||||
|
||||

|
||||
|
||||

|
||||
4. 点击“安装”。
|
||||
|
||||

|
||||
|
||||
等待片刻后,如无意外会弹出“安装成功”提示框。
|
||||
|
||||

|
||||
|
||||
此时可以关闭 Ventoy 工具。
|
||||
|
||||
### 四、放置需要使用的镜像文件到U盘
|
||||
|
||||
在“资源管理器”中打开U盘,将需要使用的 ISO 镜像文件复制到其中。
|
||||
|
||||
**注意:**
|
||||
|
||||
Ventoy 工具在U盘中创建了一个用于 BIOS 引导的分区(大小为 32MB 左右),Windows 10 上的资源管理器可能会显示该分区,复制文件时需要注意,应复制到空间**较大**的分区。
|
||||
|
||||

|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「摄影」2017 广州国际灯光节(固定机位夜景)
|
||||
title: "「摄影」2017 广州国际灯光节(固定机位夜景)"
|
||||
date: 2025-03-16T19:44:02Z
|
||||
lastmod: 2025-03-16T19:46:49Z
|
||||
tags: [视频,广州,灯光节,摄影,分享]
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「生活」中国人到底有多拼?
|
||||
title: "「生活」中国人到底有多拼?"
|
||||
date: 2025-03-16T16:56:37Z
|
||||
lastmod: 2025-03-16T16:56:56Z
|
||||
tags: [视频,生活,分享]
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「公益」当孝敬父母
|
||||
title: "「公益」当孝敬父母"
|
||||
date: 2025-03-16T21:54:03Z
|
||||
lastmod: 2025-03-17T00:50:55Z
|
||||
tags: [视频,分享,公益]
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「游戏」那些年,我们一起玩过的 MC
|
||||
title: "「游戏」那些年,我们一起玩过的 MC"
|
||||
date: 2025-03-17T00:05:10Z
|
||||
lastmod: 2025-03-17T00:10:53Z
|
||||
tags: [Minecraft,视频,籽岷,分享]
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「还原」使用 PPT 还原广州地铁 9 号线 LCD(单站)
|
||||
title: "「还原」使用 PPT 还原广州地铁 9 号线 LCD(单站)"
|
||||
date: 2025-03-17T00:11:25Z
|
||||
lastmod: 2025-03-17T11:49:22Z
|
||||
tags: [视频,临摹,PPT,广州地铁]
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「生活」上海,不夜的精彩
|
||||
title: "「生活」上海,不夜的精彩"
|
||||
date: 2025-03-16T21:42:59Z
|
||||
lastmod: 2025-03-16T21:44:04Z
|
||||
tags: [视频,上海,生活,分享]
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 使用 VSCode 查看和编辑 Minecraft 存档的 NBT
|
||||
title: "使用 VSCode 查看和编辑 Minecraft 存档的 NBT"
|
||||
date: 2025-03-15T22:16:38Z
|
||||
lastmod: 2025-03-15T22:22:27Z
|
||||
tags: [Minecraft,教程,工具,VSCode,NBT]
|
||||
@@ -21,7 +21,7 @@ tags: [Minecraft,教程,工具,VSCode,NBT]
|
||||
>
|
||||
|
||||

|
||||
本文中以 Windows 平台 `System Installer` `x64` 为例。
|
||||
本文中以 Windows 平台 `System Installer` `x64` 为例。
|
||||

|
||||
若有需要,可以访问 “[Setting up Visual Studio Code](https://code.visualstudio.com/docs/setup/setup-overview)” 页面查看安装说明文档(英文):
|
||||

|
||||
@@ -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` 键进行确认。
|
||||
|
||||

|
||||
|
||||
@@ -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` 键进行确认。
|
||||
|
||||

|
||||
|
||||
@@ -142,7 +142,7 @@ tags: [Minecraft,教程,工具,VSCode,NBT]
|
||||

|
||||
3. 打开浏览器的 “下载” 页面,复制安装包的下载链接。
|
||||

|
||||
4. 将下载地址中的 `az764295.vo.msecnd.net` 部分替换为 `vscode.cdn.azure.cn`,填入到浏览器的地址栏中访问,以通过国内的镜像服务器进行下载。
|
||||
4. 将下载地址中的 `az764295.vo.msecnd.net` 部分替换为 `vscode.cdn.azure.cn`,填入到浏览器的地址栏中访问,以通过国内的镜像服务器进行下载。
|
||||

|
||||

|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「Web 前端」Vue CLI 配置 Less 全局变量
|
||||
title: "「Web 前端」Vue CLI 配置 Less 全局变量"
|
||||
date: 2025-03-15T23:16:58Z
|
||||
lastmod: 2025-03-15T23:19:03Z
|
||||
tags: [Web 前端,Vue.js,Vue CLI,JavaScript,教程]
|
||||
@@ -18,7 +18,7 @@ tags: [Web 前端,Vue.js,Vue CLI,JavaScript,教程]
|
||||
|
||||
> 安装依赖和修改 `vue.config.js` 需要重新启动项目以生效。
|
||||
>
|
||||
2. 安装 `less` 和 `less-loader`。
|
||||
2. 安装 `less` 和 `less-loader`。
|
||||
|
||||
> 若已安装则可忽略(例如使用 Vue CLI 创建项目时选择了 Less CSS 预处理器)。
|
||||
>
|
||||
@@ -38,7 +38,7 @@ tags: [Web 前端,Vue.js,Vue CLI,JavaScript,教程]
|
||||
```
|
||||
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
|
||||
@@ -90,7 +90,7 @@ tags: [Web 前端,Vue.js,Vue CLI,JavaScript,教程]
|
||||
```
|
||||
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
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「Web 前端」在 Vue 中使用 JSX 的语法
|
||||
title: "「Web 前端」在 Vue 中使用 JSX 的语法"
|
||||
date: 2025-03-15T23:05:31Z
|
||||
lastmod: 2025-10-07T16:10:57Z
|
||||
tags: [Web 前端,JavaScript,JSX,Vue.js]
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「Web 前端」Vue 使用滚动条插件
|
||||
title: "「Web 前端」Vue 使用滚动条插件"
|
||||
date: 2025-03-15T23:15:09Z
|
||||
lastmod: 2025-03-15T23:15:38Z
|
||||
tags: [Web 前端,JavaScript,Vue.js,代码片段]
|
||||
|
43
docs/content/vue-typing-component-template-refs.md
Normal 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>
|
||||
```
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「提示」网络连接不可用
|
||||
title: "「提示」网络连接不可用"
|
||||
date: 2025-03-16T21:35:26Z
|
||||
lastmod: 2025-03-16T21:36:42Z
|
||||
tags: [提示,网页,软件]
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 解决 Windows 10 资源管理器操作 OGG 文件时未响应的问题
|
||||
title: "解决 Windows 10 资源管理器操作 OGG 文件时未响应的问题"
|
||||
date: 2025-03-16T16:27:26Z
|
||||
lastmod: 2025-03-16T16:28:19Z
|
||||
tags: [Windows,资源管理器,卡顿,文件,未响应]
|
||||
@@ -35,7 +35,7 @@ tags: [Windows,资源管理器,卡顿,文件,未响应]
|
||||
|
||||

|
||||
|
||||
若不需要使用,可在 `Windows 设置 - 应用 - 应用和功能` 将其卸载,即可解决 OGG 文件导致资源管理器 `未响应` 的问题。
|
||||
若不需要使用,可在 `Windows 设置 - 应用 - 应用和功能` 将其卸载,即可解决 OGG 文件导致资源管理器 `未响应` 的问题。
|
||||
|
||||

|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 解决 Windows 10 提示“无法登录到你的账户”问题
|
||||
title: "解决 Windows 10 提示“无法登录到你的账户”问题"
|
||||
date: 2025-03-15T22:24:21Z
|
||||
lastmod: 2025-03-15T22:26:43Z
|
||||
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`,将当前用户项中的 `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”,然后点击 “确定”。
|
||||
2. 在注册表编辑器的地址栏中输入 `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon`,按下回车键(Enter)。
|
||||
3. 双击 `DefaultUserName` 项,输入新账户的用户名,然后点击 “确定”。
|
||||
3. 双击 `DefaultUserName` 项,输入新账户的用户名,然后点击 “确定”。
|
||||

|
||||
4. 关闭注册表编辑器。
|
||||
|
||||
### 二、将原账户的用户数据文件夹移动到其它地方
|
||||
|
||||
1. 打开 `C:\Users` 文件夹,右键点击名称为**原账户**用户名的文件夹,点击 “剪切”(或使用快捷键 `Ctrl + X`)。
|
||||
1. 打开 `C:\Users` 文件夹,右键点击名称为**原账户**用户名的文件夹,点击 “剪切”(或使用快捷键 `Ctrl + X`)。
|
||||

|
||||
2. 打开用于放置该文件夹的目录,右键点击空白处,选择 “粘贴”(或使用快捷键 `Ctrl + V`)。
|
||||
2. 打开用于放置该文件夹的目录,右键点击空白处,选择 “粘贴”(或使用快捷键 `Ctrl + V`)。
|
||||

|
||||
若提示 “你需要提供管理员权限才能移动此文件夹”,则点击 “继续”。
|
||||

|
||||
@@ -110,17 +110,17 @@ tags: [系统,Windows,Windows 10]
|
||||
1. 重启系统,登录**新账户**(确保系统启动后初次登录的是**新账户**)。
|
||||
2. 打开资源管理器,在 “显示 / 隐藏” 中勾选 “隐藏的项目”。
|
||||

|
||||
3. 打开 `C:\Users` 文件夹,进入名称为**原账户**用户名的文件夹(以下称为 `user_data`)。
|
||||
3. 打开 `C:\Users` 文件夹,进入名称为**原账户**用户名的文件夹(以下称为 `user_data`)。
|
||||
若提示 “你当前无权限访问该文件夹。单击‘继续’获取永久访问该文件夹的权限。”,则点击 “是”。
|
||||

|
||||
4. 打开 “第二步” 中移动的用户数据文件夹(以下称为 `backup_data`)。
|
||||
5. 将 `backup_data` 中的文件夹和文件依次移动到 `user_data` 中。
|
||||
5. 将 `backup_data` 中的文件夹和文件依次移动到 `user_data` 中。
|
||||
**注意**
|
||||
不需要移动文件名以 `ntuser` 或 `NTUSER` 开头的文件。
|
||||
不需要移动文件名以 `ntuser` 或 `NTUSER` 开头的文件。
|
||||

|
||||
不需要移动图标左下角带箭头的隐藏文件夹。
|
||||

|
||||
移动文件夹前需要先把 `user_data` 中对应的文件夹删除。
|
||||
移动文件夹前需要先把 `user_data` 中对应的文件夹删除。
|
||||
若文件夹中没有实际的文件,可以不移动。
|
||||

|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 杀毒软件能力测试
|
||||
title: "杀毒软件能力测试"
|
||||
date: 2025-03-19T11:48:36Z
|
||||
lastmod: 2025-03-19T11:49:20Z
|
||||
tags: [测试,软件]
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: 「BAT工具」防止病毒在打开U盘时自动运行
|
||||
title: "「BAT工具」防止病毒在打开U盘时自动运行"
|
||||
date: 2025-03-16T21:39:48Z
|
||||
lastmod: 2025-03-16T21:41:56Z
|
||||
tags: [Windows,代码片段,BAT,工具,脚本]
|
||||
@@ -62,7 +62,7 @@ tags: [Windows,代码片段,BAT,工具,脚本]
|
||||
pause
|
||||
exit
|
||||
```
|
||||
3. 把它重命名为 `AntiAutorun.bat`(`文件名` 可以不一样,但 `扩展名` 必须为 `.bat`)。
|
||||
3. 把它重命名为 `AntiAutorun.bat`(`文件名` 可以不一样,但 `扩展名` 必须为 `.bat`)。
|
||||
4. 把文件放到U盘 `根目录` 下,运行,根据提示操作(保留文件,可多次使用)。
|
||||
|
||||
---
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Windows forfiles 命令
|
||||
title: "Windows forfiles 命令"
|
||||
date: 2025-03-16T16:07:42Z
|
||||
lastmod: 2025-03-16T16:08:11Z
|
||||
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 <文件日期>
|
||||
```
|
||||
|
||||
> **<文件路径>** 示例:`"D:\Example\Folder"`、`".\Example\Folder"`
|
||||
> **<文件路径>** 示例:`"D:\Example\Folder"`、`".\Example\Folder"`
|
||||
>
|
||||
> **<搜索掩码>** 示例:`*.exe`、`*.png`、`*.txt`
|
||||
> **<搜索掩码>** 示例:`*.exe`、`*.png`、`*.txt`
|
||||
>
|
||||
> **<文件日期>** 示例:`-100`(100 天前)、`-200`(200 天前)、`-365`(365 天前)
|
||||
> **<文件日期>** 示例:`-100`(100 天前)、`-200`(200 天前)、`-365`(365 天前)
|
||||
|
||||
## 相关链接
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Windows mklink 命令
|
||||
title: "Windows mklink 命令"
|
||||
date: 2025-03-15T22:29:09Z
|
||||
lastmod: 2025-03-15T22:30:51Z
|
||||
tags: [Windows,命令,命令提示符]
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Windows 通过命令提示符校验文件(MD5、SHA1等)
|
||||
title: "Windows 通过命令提示符校验文件(MD5、SHA1等)"
|
||||
date: 2025-03-16T18:30:47Z
|
||||
lastmod: 2025-03-16T18:33:57Z
|
||||
tags: [Windows,命令,命令提示符,校验,CertUtil]
|
||||
@@ -23,7 +23,7 @@ CertUtil -hashfile 文件路径 [算法]
|
||||
|
||||
### 使用举例
|
||||
|
||||
校验 `当前路径` 下的 `Test.zip` 的 MD5
|
||||
校验 `当前路径` 下的 `Test.zip` 的 MD5
|
||||
|
||||
```plaintext
|
||||
CertUtil -hashfile Test.zip MD5
|
||||
|
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Windows copy 命令的妙用(文件里藏文件、合并文件)
|
||||
title: "Windows copy 命令的妙用(文件里藏文件、合并文件)"
|
||||
date: 2025-03-22T22:47:31Z
|
||||
lastmod: 2025-03-29T18:30:31Z
|
||||
tags: [Windows,命令,命令提示符]
|
||||
@@ -15,8 +15,8 @@ tags: [Windows,命令,命令提示符]
|
||||
|
||||
## 本教程中的命令格式
|
||||
|
||||
- `copy /B 文件名1+文件名2 合并后的文件名`
|
||||
- `copy /B *.扩展名 合并后的文件名`
|
||||
- `copy /B 文件名1+文件名2 合并后的文件名`
|
||||
- `copy /B *.扩展名 合并后的文件名`
|
||||
|
||||
## 使用前准备
|
||||
|
||||
@@ -31,7 +31,7 @@ tags: [Windows,命令,命令提示符]
|
||||
3. 依次点击“文件”->“运行新任务”
|
||||
|
||||

|
||||
4. 输入 `cmd`,勾选“以系统管理权限创建此任务”,按下 `Enter`(回车)键
|
||||
4. 输入 `cmd`,勾选“以系统管理权限创建此任务”,按下 `Enter`(回车)键
|
||||
|
||||

|
||||
|
||||
@@ -53,9 +53,9 @@ tags: [Windows,命令,命令提示符]
|
||||
|
||||
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` 命令 合并文件
|
||||
|
||||
命令格式:`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`
|
||||
|
||||

|
||||
|
||||
@@ -79,7 +79,7 @@ tags: [Windows,命令,命令提示符]
|
||||
|
||||
用于藏文件的文件的文件名与合并后的文件名的扩展名需要相同,但前缀名不能相同
|
||||
|
||||
例如 `Picture.png` 与 `Picture-Merge.png`
|
||||
例如 `Picture.png` 与 `Picture-Merge.png`
|
||||
|
||||
## 提取隐藏的文件
|
||||
|
||||
@@ -89,9 +89,9 @@ tags: [Windows,命令,命令提示符]
|
||||
|
||||

|
||||
|
||||
2. 在文件名后方加上 `.zip`
|
||||
2. 在文件名后方加上 `.zip`
|
||||
|
||||
例如 `Picture-Merge.png` 改为 `Picture-Merge.png.zip`
|
||||
例如 `Picture-Merge.png` 改为 `Picture-Merge.png.zip`
|
||||
|
||||

|
||||
|
||||
@@ -109,17 +109,17 @@ tags: [Windows,命令,命令提示符]
|
||||
|
||||
1. 把视频文件放于同一文件夹内
|
||||
|
||||
2. 视频文件的文件名需为 `序号.扩展名`
|
||||
2. 视频文件的文件名需为 `序号.扩展名`
|
||||
|
||||
例如 `001.mp4 002.mp4 003.mp4 004.mp4 ......`
|
||||
例如 `001.mp4 002.mp4 003.mp4 004.mp4 ......`
|
||||
|
||||
序号不能错,否则合并的视频内容会出错。
|
||||
|
||||
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 命令` 合并文件
|
||||
|
||||
命令格式:`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`
|
||||
|
||||

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

|
||||
2. 点击“显示”选项卡下方的“图形设置”。
|
||||

|
||||
3. 在“选择要设置首选项的应用”中选择“桌面应用”(一般情况下,默认为该选项),然后点击“浏览”,将 `java.exe` 和 `javaw.exe` 添加进来。
|
||||
3. 在“选择要设置首选项的应用”中选择“桌面应用”(一般情况下,默认为该选项),然后点击“浏览”,将 `java.exe` 和 `javaw.exe` 添加进来。
|
||||

|
||||
`java.exe` 和 `javaw.exe` 在 Java 安装路径的 `bin` 文件夹中。
|
||||
`java.exe` 和 `javaw.exe` 在 Java 安装路径的 `bin` 文件夹中。
|
||||
默认的 Java 安装路径的父路径为:
|
||||
|
||||
```text
|
||||
|