Ubuntu 上通过以太网分享网络连接(NAT)

Ubuntu 自带网络分享功能,但该功能很不稳定,往往断开连接后再连就无法使用了。
现在我们使用 DNSMASQ+IPTables 手动配置NAT.

禁用 systemd-resolved

Ubuntu 提供的 systemd-resolved 抢占53端口,首先禁用它。

1
2
systemctl stop systemd-resolved
systemctl disable systemd-resolved

删除不当设置

如果你之前配置过网络分享或已经用有线连接过电脑了,则需要这一步
运行 nm-connection-editor
删除所有有关你要分享的网卡的设置

安装并配置DNSMASQ

安装

1
2
3
apt install dnsmasq
service dnsmasq stop
nano /etc/dnsmasq.conf

编辑 /etc/dnsmasq.conf,加入下列内容:

1
2
3
4
dns-forward-max=15000
#eno1为你的要分享的网卡名
interface=eno1
dhcp-range=192.168.33.2,192.168.33.150,255.255.255.0,12h

配置域名解析

1
nano /etc/resolv.conf

填写你的DNS服务器,例如:

1
2
3
nameserver 223.5.5.5
nameserver 223.6.6.6
nameserver 114.114.114.114

启用内核IPV4转发

1
/etc/sysctl.conf

加入:

1
net.ipv4.ip_forward=1

运行:

1
sysctl -p

配置转发,为网卡分配初始IP

eno1为你的要分享的网卡名
enp2s0为有网的(被分享的)网卡名

1
2
3
ifconfig eno1 192.168.33.2
iptables -t nat -A POSTROUTING -o enp2s0 -j MASQUERADE
iptables -A FORWARD -i eno1 -o enp2s0 -m state --state RELATED,ESTABLISHED -j ACCEPT

上述内容重启后无效,可加入 /etc/rc.local 以开机自动应用。

启动DNSMASQ

1
2
3
systemctl enable dnsmasq
systemctl start dnsmasq
systemctl status dnsmasq

完事!

Windows 选择指定的网卡来开承载网络型热点

Windows 10 自带的移动热点比较废,只允许带8个设备,并且在断网后自动关闭,不能满足需求。
而通过 netsh 创建的 Microsoft 承载网络虽好,但却不支持选择用于创建热点的网卡。
本文介绍的玄学方法可以让用户做到自己选择网卡开 Microsoft 承载网络 热点。

  1. 打开 网络和 Internet 设置
  2. 更改适配器选项
  3. 选择你希望使用的网卡,重命名
  4. 起个字母排序在你不想使用的网卡的名字之前的名字,例如 !AWLAN
  5. 开!热!点!
1
2
netsh wlan set hostednetwork mode=allow ssid=namehere key=passwordhere keyUsage=persistent
netsh wlan start hostednetwork

博主真的是随便试出来的(

修复升级 Windows10 版本后所有内置应用闪退+第三方应用参数错误的问题

昨天把Windows10升级到1809后所有应用都挂了,应用商店和内置应用闪退,常用的应用参数错误,连WSL都出问题了。容我先亲切问候一下微软 :)

修复内置应用闪退、应用商店打不开

这里有 几个没啥用的方法,反正对我来说真的没啥用。

修复办法:

  1. 打开 C:\Program Files
  2. 显示隐藏的文件,找到 WindowsApps,点击上方菜单的 共享 – 高级共享
  3. 修改所有者为 Everyone
  4. 启用继承,保存

说白就是因为 ALL APPLICATION PACKAGES 没有权限。
另外还有人说是因为N卡驱动问题、LicenseManager服务被禁用等等,反正我不是这个问题。

修复第三方应用参数错误

没修好,我选择重装

配置用于 Gradle + SQLite 的 jOOQ 3.11 代码自动生成

为什么要写这篇文章

关于如何配置用于 Gradle + SQLite 的 jOOQ 3.11 代码自动生成的文档可谓少之又少,网络上大部分文档,要么是使用 Maven,要么是针对于早期版本的 jOOQ(并不向后兼容),而 jOOQ 官方文档又很不全面,以致于许多像我这样的萌新在初次接触 jooq 时踩了不少坑,浪费了不少宝贵的时间 :)

为何一定要使用 jOOQ

复制一下 别人对此的介绍

JOOQ,全称Java Object Oriented Querying,即面向Java对象查询。它是Data Geekery公司研发的DA方案(Data Access Layer),主要解决两个问题:

  • Hibernate 的抽象使得我们离SQL太远,对SQL的掌控力度弱
  • JDBC 过于嘈杂,需要干的事情太多

JOOQ希望干的就是在上述两者中寻找一个最佳的平衡。它依据数据库中的表生成DA相关的代码,开发者将生成的代码引入项目中即可使用。

配置办法

官方文档 只贴了个代码,可以说是十分”友善”了

编辑 build.gradle

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
// Configure the Java plugin and the dependencies
apply plugin: 'java'

repositories {
mavenLocal()
mavenCentral()
}

dependencies {
//在此处放置你的项目的原有依赖
//添加jooq依赖
compile group: 'org.jooq', name: 'jooq', version: '3.11.5'
//<!> 一定要添加所用数据库的依赖,否则会报错而且不告诉你原因
runtime group: 'org.xerial', name: 'sqlite-jdbc', version: '3.25.2'
}

buildscript {
repositories {
mavenLocal()
mavenCentral()
}

dependencies {
//添加jooq依赖
classpath 'org.jooq:jooq-codegen:3.11.5'
//<!> 一定要添加所用数据库的依赖,否则会报错而且不告诉你原因
classpath group: 'org.xerial', name: 'sqlite-jdbc', version: '3.25.2'
}
}

// Use your favourite XML builder to construct the code generation configuration file
def writer = new StringWriter()
def xml = new groovy.xml.MarkupBuilder(writer)
.configuration('xmlns': 'http://www.jooq.org/xsd/jooq-codegen-3.11.0.xsd') {
jdbc() {
url('jdbc:sqlite:src/main/resources/database.db') // src/main/resources/database.db为数据库路径
//user() //不需要用户名,省略
//password() //不需要密码,省略
}
generator() {
database() {
includes('.*') //包括的数据表
excludes() //排除的数据表
inputSchema() //默认数据库
}

target() {
packageName('com.kenvix.pixiv.generated.jooq') //计划用于存储生成结果的包名
directory('src/main/java') //将生成结果储存于src/main/java
}
}
}

// Run the code generator
// ----------------------
org.jooq.codegen.GenerationTool.generate(writer.toString())

然后运行 gradlew buildEnvironment 看看jooq有没有什么警告,同时,你会发现代码生成好了。

修复 Windows 环境下的程序访问 WSL 中的 MySQL 提示 Access Denied 的问题

症状

Windows 10 版本 1803 + Ubuntu 18.04
位于 Windows 下的程序(例如Navicat)连接 MySQL 提示 Access Denied
同样位于 WSL 的程序可以正常访问 MySQL

原因

MySQL 把 Windows 下的程序的连接视为远程 MySQL 请求,若你使用的 MySQL 用户没有远程权限,则会出错。
WSL 特性?#(滑稽)

解决办法

WSL 输入 mysql -uroot

1
2
3
4
use mysql;
update user set host = '%' where user = 'root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '' WITH GRANT OPTION;
FLUSH PRIVILEGES;

现在就可以使用 root 连接了(无密码,本地开发环境搞个毛的密码)

修复 WSL 下 PHP+FastCGI 卡死的问题

症状

Windows 10 版本 1803 + Ubuntu 18.04
以 Nginx 服务端为例,访问多数 PHP 文件,PHP 会直接卡死。
访问那些极其简单的 PHP 文件 (例如Hello world, phpinfo()) 虽然可以加载出来但浏览器显示网页仍未加载完全。

原因

你肯定用了 Unix Socket 方式连接 Nginx 和 PHP,然而,WSL 对 Unix Socket 的支持有 bug….

解决办法

nginx.confserver 节点添加:

1
fastcgi_buffering off;

使用任意磁盘或路径保存 Windows 文件历史记录

不知为何,博主的 Windows 不允许使用本机的机械硬盘保存文件历史记录,这大概又是一个秘制bug吧。

无论是 Windows7 的备份还是 Windows10 的文件历史记录,它们都允许用户选择网络位置保存数据,于是我们就可以这样操作:

\\localhost\X$\Path

该路径表示本机 X: 盘的 Path 文件夹
例如,我要将文件历史记录保存到 D:\FileHistory,只需在 “文件历史记录” – 选择驱动器 – 添加网络位置 中输入 \\localhost\D$\FileHistory

[1.12.2+Mod] MoeCraft :: 自由开放的科技向公益 Mod 服务器

特色&概述

screenshot-main

MoeCraft 创立于 2016 年六月,是一个非盈利的、旨在为热爱 MC 的玩家创造最优环境的公益 Minecraft 服务器

高水平

每份入服申请均由多名老玩家及操作员审核,最大限度确保新玩家素质达到要求

自由

MoeCraft 并无严格的规则来限制玩家的行为,MoeCraft 信任每一位玩家的自我约束能力,即,MoeCraft 开放了几乎一切能开放的功能给全部玩家。

你喜欢采矿镭射那高效直接的采矿手段吗?那就扔掉手中的钻头吧!
你喜欢核弹爆炸产生的快感吗?那就尽情享用吧!

本服服规即为:不做你认为不应该做的

平等

MoeCraft 旨在淡化 OP 对游戏的影响,我们认为,OP 亦为玩家。
同时,我们坚信,影响玩家的决策应该由玩家决定。

如何加入 MoeCraft

  1. 请打开 https://accounts.moecraft.net/index.php?m=home&c=apply&a=applyinvitecode 提交邀请码申请
  2. 我们会在最长 72 小时内审核您的申请。申请通过后您将收到邀请码邮件。您也可以手动查询申请状态
  3. 申请通过后,请您点击用户中心(https://accounts.moecraft.net/)上的注册按钮,输入信息完成注册。
  4. 完成注册后,按照提示输入 MC 玩家名确保可以登录游戏。
  5. 点击用户中心主页的“下载客户端”按钮下载 MoeCraft 客户端(根据你的系统选择客户端平台)
  6. 打开更新器,完成更新。(注意: 未来若有更新从这步开始操作)
  7. 按照更新器指示完成更新。
  8. 点击 Launcher,添加账号,账号类型选择 Authlib-Injector
  9. 输入你的用户中心邮箱和密码。
  10. 游戏选择“ MoeCraft ”或“ 1.12.2-Forge”,双击进入游戏.

注意: 若提示“无效的用户名”,则说明你操作错误,请关闭游戏,重新按照上面第六步操作。
注意: 若上述操作过程出现异常问题,请联系我们(见下文)

Mod 清单

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
ActuallyAdditions-1.12.2-r135.jar
ae2stuff-0.7.0.4-mc1.12.2.jar
AppleCore-mc1.12.2-3.1.3.jar
appliedenergistics2-rv5-stable-11.jar
Aroma1997Core-1.12.2-2.0.0.0.b155.jar
bdlib-1.14.3.12-mc1.12.2.jar
BiblioCraft[v2.4.5][MC1.12.2].jar
BrandonsCore-1.12-2.4.2.157-universal.jar
Chisel-MC1.12.2-0.2.0.31.jar
CodeChickenLib-1.12.2-3.1.9.344-universal.jar
CoFHCore-1.12.2-4.5.2.19-universal.jar
CoFHWorld-1.12.2-1.2.0.5-universal.jar
CompactSolars-1.12.2-5.0.17.340-universal.jar
CookingForBlockheads_1.12.2-6.4.40.jar
CraftTweaker2-1.12-4.1.9.jar
CustomSkinLoader_Forge-14.8.jar
Draconic-Evolution-1.12-2.3.11.290-universal.jar
extrautils2-1.12-1.7.6.jar
foamfix-0.9.9.1-1.12.2-law.jar
forestry_1.12.2-5.8.0.305.jar
Forgelin-1.7.4.jar
Hwyla-1.8.26-B41_1.12.2.jar
industrialcraft-2-2.8.83-ex112.jar
industrialforegoing-1.12.2-1.10.1-176.jar
ironchest-1.12.2-7.0.40.824.jar
jei_1.12.2-4.10.0.198.jar
Mantle-1.12-1.3.2.24.jar
mcjtylib-1.12-3.0.2.jar
Mekanism-1.12.2-9.4.13.349.jar
MekanismGenerators-1.12.2-9.4.13.349.jar
MTLib-3.0.5.jar
NBTEdit-0.7.jar
NotEnoughItems-1.12.2-2.4.1.233-universal.jar
OpenBlocks-1.12.2-1.7.6.jar
OpenComputers-MC1.12.2-1.7.2.67.jar
OpenModsLib-1.12.2-0.11.5.jar
Pam's+HarvestCraft+1.12.2u.jar
plustic-6.5.2.0.jar
RedstoneFlux-1.12-2.0.2.3-universal.jar
rftools-1.12-7.54.jar
roost-1.12-1.2.0.jar
SpiceOfLife-mc1.12-1.3.12.jar
TConstruct-1.12.2-2.10.1.84.jar
tesla-core-lib-1.12.2-1.0.14.jar
ThermalCultivation-1.12.2-0.3.0.7-universal.jar
ThermalDynamics-1.12.2-2.5.1.14-universal.jar
ThermalExpansion-1.12.2-5.5.0.29-universal.jar
ThermalFoundation-1.12.2-2.5.0.19-universal.jar
tinker_io-1.12.2-release+2.6.1.jar
TinkerToolLeveling-1.12.2-1.0.5.jar
UniDict-1.12.2-2.5c.jar
WanionLib-1.12.2-1.5.jar
woot-1.12.2-1.4.1.jar

联系我们

您可以通过以下方式联系我们:
电子邮件: admin$moecraft.net
用户中心的留言板(内容公开)

现已支持自助加入 MoeCraft Telegram 群,通过身份验证后即可加入
地址: https://t.me/MoeCraftBot

禁用使用Intel核显的Windows笔记本自动调节亮度功能

Intel 核显自带一个“节电功能”,它的工作原理:

比如你设置的100%的亮度,放着一张白的图片,那么屏幕只能100%亮度显示。但是如果是50%灰的图片呢,我只要50%亮度显示纯白就行了诶。如果整个屏幕最亮的颜色只有10%,那就干脆把亮度降到10%来省电好了,然而对于电影这种明暗变化较快的没优化好,导致体验较差。
来源: 知乎/汤雨豪

这功能有多智障呢?博主在太阳底下写代码,因为光照太强了看不见屏幕,于是把电脑屏幕亮度调到100%,切回编辑器,然后,Intel核显自动把屏幕亮度给降回来了。

关闭方法

  1. 打开控制面板
  2. 打开Intel核心显卡设置 -> 电源 -> 显示器节电技术 -> 禁用
  3. 返回控制面板
  4. 电源选项 -> 更改计划设置 -> 更改高级电源设置 -> 显示 -> 禁用“启用自适应亮度”

真正实现Minecraft高级登录(外置登录)的几种方案

通常把Minecraft服务器的登录方式分为高级登录(外置登录)和内置登录。高级登录的特点是用户的登录操作在启动器完成,启动器传递token给Minecraft客户端,客户端在加入服务器时直接将token传递给服务端完成身份验证。正版Minecraft登录就是典型的外置登录。而一般的非正版服务器(online-mode=false)则是身份验证仅在用户加入游戏后通过聊天框输入密码完成认证,此时用户已经加入了游戏,仅仅靠登录插件来限制用户进行其他操作。
而内置登录往往存在下列问题:

  1. 玩家在登录前已经进入了游戏。恶意用户可以借此进行假人压测攻击服务器
  2. 由于登录操作复杂并且退出游戏后就需要重新登录,玩家往往把密码设置得较为简单,留下安全隐患
  3. 对于Mod服务器来说,登录插件无法限制Mod行为。例如NEI仍然可以正常使用而不受登录插件限制

如果想根除上述问题,就必须要改换成高级登录。

实现

倘若从零开始自己写一套外部登录系统,意味着我们需要自己写服务端插件+验证端+客户端模组+启动器,还需要考虑兼容性、跨平台等问题。显然,这项工程十分浩大并且不划算。换个思路,mojang已经实现了自己的正版登录系统,我们能否将minecraft自带的正版登录系统为己所用呢?

方案1: 用hosts劫持域名解析

操作复杂度:高

修改操作系统的hosts文件:
(1.2.3.4为你的身份验证服务器IP地址)

1
2
1.2.3.4 sessionserver.mojang.com
1.2.3.4 api.mojang.com

然后,自己签署一个具有“所有颁发策略” “所以应用程序策略”的根证书,在MC服务器和身份验证服务器两边信任这个根证书。
接着,自己签发 *.mojang.com 的SSL证书,部署到身份验证服务器,对这两个域名使用自签发证书。
最后,自己按照此文档实现一套Yggdrasil服务端。
至于启动器方面也很简单,拿一套开源的启动器的代码(如BMCL,HMCL)然后批量替换上面给出的两个域名为你的身份验证服务器的域名,然后编译即可。
(用于客户端登录的身份验证服务器必须使用正规证书机构签发的证书,如let’s encrypt,当然你要是能拿到管理员权限悄悄导入根证书就不用管这句提示了)

方案2:用javaagent在运行时动态劫持身份验证地址

操作复杂度:中高

国内有大神已经实现了这种方案,并且最新的HMCL启动器原生支持使用这种方案实现客户端的高级登录。
点击此处查看,同样需要按照此文档实现一套Yggdrasil服务端
具体使用方法可以参考Blessing Studio上的文章

比起方案1,这个方案的优点是可以略过复杂的签发证书过程,并且API地址可以随便起,自己怎么爽怎么来(比如MoeCraft这样:https://accounts.moecraft.net/?s=API/Mc/Authlib&params=/)

方案3:使用他人编写Mod+插件+启动器解决

操作复杂度:低

参见SakuraLogin 樱花登录,可惜不支持 Sponge :(

附注

上文提到的《Yggdrasil服务端技术规范》中有一点需要注意:
以“用户部分-登录”为例,文档中的“请求格式”并 不是在用JSON描述这个请求POST内容的具体格式 ,而是真的POST了一个JSON文本过来!这点很误导人。
以PHP为例,使用 $_POST 无法获得任何数据,要获得POST提交的文本,应该使用 file_get_contents('php://input') 直接读取请求的原始数据

谈谈神舟的两艘贼船,Z7M-KP7S1 / Z7M-KP7SC

先放张蓝天的N85xEJ1模具的感人的拆机图镇楼

没错!这感天动地的单铜管散热!压 1050Ti + i7!我大神船的头就是这么铁!

厉害了,我的船

蓝天的N85xEJ1模具吼不吼啊?吼啊!单铜管散热,A面指纹收集器,B面比丑更丑,C面城乡结合部设计,D面散热开孔比肩Macbook,船新设计检验玩家拆机水平。(Z7M-KP7S1)

单铜管散热吼不吼啊?吼啊!开机温度 75℃+,开 IDEA 写代码风扇狂转,打游戏CPU温度三位数并且自动大规模降频,烤机?那啥,生命只有一次。

啊大概是真的有机子烤糊了吧,今年神船竟大发慈悲,竟然魔改了N85xEJ1的散热,变成双铜管了!双!铜!管!
接着默默给 “N85xEJ1·改” 强上了8代i7(i7-8750H)

这机子的散热到底有多厉害?厉害淘宝都有救生艇了

厉害了,Clevo

咱不能抓住上面的缺点不放,总得看点正面的,是不是?
我一直不很懂,8102年了,HDMI大行其道的年代,牺牲USB给笔电上MiniDP接口的ODM是什么心态,更不懂蓝天让笔记本的USB3.0接口的数量和MiniDP接口的数量相等是什么心态(2个)
我一直很好奇,蓝天的Control Center到底是在发什么疯,CPU都热到96℃强制降频了,Control Center还是不肯让风扇全速运转,强冷模式一开始倒是转到最高速了,结果,结果,让 风 扇 越 转 越 慢???触摸板的开关频繁失效的bug和这神奇的温控比起来简直不值一提
哦还有,那USB3.0的供电可真棒,笔电插着电源,再往USB接口上接个hub,hub上再接一个键盘和鼠标,然后键鼠的供电不足???WTF,你这供电是USB1.1的标准吗?
听说把type-c接口用来给笔记本供电还会烧主板(未证实)

到底是谁给了蓝天这么大的勇气

其他

貌似Z7M-KP7S1用DDR3内存???
HDD的读写声我开着usb风扇都能听见
SSD和我三年前买的Plextor M6S性能比起来没高到多少
外放能听见响声。我不是很懂C面贴的那个“Sound Blaster Cinema5”标签
「部分神舟笔记本电脑使用蓝天模具提升了做工」
截至发文,神船官方仍然打不开

最后

感谢您浪费您宝贵的时间来看我这篇充满戾气的水文。

USBCopyer: 插上U盘自动按需复制文件

注:本文介绍的是带来巨量更新的USBCopyer V5

USBCopyer: 插上U盘自动按需复制文件

用于在插上目标U盘后自动按需复制该U盘的文件。”备份&偷U盘文件的神器”
特点:

  1. 支持设置冲突解决方案
  2. 支持选择性复制,包括扩展名黑白名单、磁盘黑白名单。磁盘黑白名单支持序列号
    白名单模式结合版本控制可以方便地备份U盘
  3. 支持隐藏模式及开机启动
  4. 支持设置回调,可以自己编写代码实现某种高级的、程序没有提供的功能。
    默认提供Git版本控制支持
  5. 支持限制文件大小,防止复制大文件造成延误
  6. 支持延迟复制,对“偷”课件类的场景提升用户体验十分有用

Screenshot

本程序有两个图标,默认图标表示当前处于空闲状态,红色图标表示当前正在复制文件(工作中)

现已提供三个版本(标准版/兼容版)可供下载,见“已编译版本下载”节

已编译版本下载

【推荐】.Net Framework 4.0 版本(标准版)

适用操作系统:Windows 8 / Windows 10
点击从[email protected]下载(中国大陆用户推荐) 点击从GitHub下载

.Net Framework 3.5 版本(兼容版)

适用操作系统:Windows 7 / Windows Vista / Windows XP
WinXP请注意:XP可能需要手动安装 .NET Framework 3.5,没有安装请点此
点击从[email protected]下载(中国大陆用户推荐) 点击从GitHub下载

自 V5.0 开始,标准版即为低权限版。不会弹出UAC警告。亦支持高DPI缩放。

适用场景

  1. 获取授课教师的课件
  2. 获取插到某台公用电脑上的U盘的数据
  3. 快捷地备份U盘(从V5.0开始)
  4. 备份U盘的同时进行版本控制

如何使用

1.下载
2.双击 USBCopyer.exe
3.程序将在托盘区运行,右击图标可以调整其参数
点击 “隐藏图标” 将彻底隐藏程序,只能使用任务管理器停止,或按Win+R输入taskkill /f /im USBCopyer.exe
点击 “设置” 可以设置程序

命令行

USBCopyer.exe [/hide] [/gui] [/reset]
/hide 以隐藏模式启动,只能通过任务管理器结束进程
/gui 除非使用 /hide 参数,否则无论如何都不要使用隐藏模式启动。可用来解除隐藏模式
/reset 恢复默认设置并退出,若失败,返回退出码1。可用来解除隐藏模式,但会丢掉所有设置

常见问题

USBCopyer的复制行为造成U盘的文件操作卡顿

请设置一个延迟。通常推荐在使用者开始放映幻灯片时开始复制

使用者在使用该电脑前重启了此电脑

将本程序设为开机启动即可。设置方法如下:

  1. 直接在本程序的“设置”中设置
  2. 若上面的方法无效,则可:
    创建一个快捷方式,然后加上参数,拖到 “开始菜单” 的 “启动” 文件夹即可
可否复制手机的文件?

若为MTP/PTP则无法实现(V6.0也许会实现),但如果是以Mass Storage(大容量存储)模式挂载到电脑上的设备则可以复制

U盘在操作完成前被拔出

请使用心理学方法防止U盘在操作完成前被拔出

如何防止拷到病毒?

安装杀毒软件,监控 USBCopyerData 目录即可

目标电脑带有还原机制

两种方法:
1.插上你的U盘,然后启动本程序,加入该U盘到黑名单,然后设置输出目录到你的U盘
2.用 PCHunter 之类的程序干掉还原程序

如何使用回调&如何配置Git版本控制?

参见:https://kenvix.com/post/usbcopyer-callback/

代码仓库

[email protected] GitHub
我的博客文章

捐赠

USBCopyer 是一个开源的,非盈利的项目。如果你喜欢这个项目,请捐赠它:

支付宝捐赠

Screenshot

微信支付捐赠

Screenshot