才发现 Windows11 添加了时钟应用,自带专注时段(可以直接理解为番茄时间)的规划功能,对于一直以来只有较大任务计划而导致在碎片时间内无法集中注意力的我来说简直是神器,趁着周末体验一下。


把一些基础设置的步骤一并放上,使用的体验感受会放在结尾。

1、启用时钟
开始菜单搜索 “时钟” 或者 "Clock" 应该都可以:
时钟

2、规划专注时段
首页显示的番茄工作法的总时常,默认规划为:每工作 30 分钟左右休息 5 分钟
默认规划
通过点击 视图设置 来自定义:
更多
视图设置
修改休息周期即可:
修改休息周期

3、链接 Spotify

微软商店安装 Spotify 需要先将地区切换至美国:
切换至美国

点击 链接 Spotify 并登录、同意即可:
链接 Spotify
链接完成后默认会推送一些轻音乐,右键播放后仍可以在 Spotify 应用内控制:
默认音乐
控制

4、启用待办事项(Windows To Do)
Windows To Do 实际为另一个应用,因此需要先登录以同步数据:
登录
可能会存在卡加载的问题,没关系看到任务栏出来了就 OK 了:
登录完成
你可以直接在任务栏添加任务:
从任务栏添加
也可以在 Windows To Do 添加,两边会同步的:
同步

5、使用感受
可能是有新鲜感加持的原因,体验很棒!Windows11 的时钟很适合小任务的划分,以手头我正在开发的项目为例:Notion 以整个项目为大任务,其中各子模块为中任务,子模块中的每一个功能开发或是优化为小任务:

通过番茄工作法,即使是 90 分钟的时间也能有规划的去推进进度,这对于自制力并不是那么强的我真的是很有帮助。
题外话,从 WSL 到 WSL2 的优化、对安卓虚拟机的原生支持,再到我发掘到这个时钟应用,我开始发现微软作为开发者,其实是最懂开发者需要什么的,只是取决于他们是否愿意去做那些功能罢了,感觉 MacBook 的购买计划又可以往后延延了......

结束。

应该也算硬件相关吧......


1、将系统地区切换至美国并开启虚拟化
因为是系统层面的配置因此放在一起讲。
① 设置 -> 时间和语言 -> 语言 & 区域 -> 国家或地区 -> 切换到美国
切换

不切换地区结果如下:
错误

② 开启 Windows 虚拟化
这里只需要开启 Windows 虚拟机监控程序平台虚拟机平台 就够了,没有 Hyper-V 不勾选也没有关系,对实际运行不会有影响
开启虚拟化

2、安装安卓子系统
当前在微软商店安装 Amazon Appstore 会自动帮你下载安卓子系统,考虑到我已经在路由器上配置了代理,能正常访问亚马逊服务,便采用这个较为官方的方式:
Amazon Appstore

如果你并不想安装 Amazon Appstore,并且后续只准备在安卓虚拟机中安装一些有 .apk 安装文件提供的国产应用,那么也可以直接前往:Windows Subsystem for Android™ with Amazon Appstore 进行下载:
Windows Subsystem for Android™ with Amazon Appstore

3、配置安卓子系统
打开其系统设置:
打开其系统设置
配置需做如下修改:

① 将子系统资源改为连续以进行第三方应用安装(安装完之后可改回按需要
② 开启开发人员模式并记录下连接用的信息
修改配置

4、从 .apk 文件安装应用
这里就不演示从官方 Amazon Appstore 安装应用了,没有意义。
我需要安装的网易 UU 加速器,用来控制同一网络环境下 OpenWrt 上的 UU 加速器路由器插件,以此为例。

① 从官方下得安装文件
获取安装文件

② 下载安装 ADB 工具

官方描述:Android SDK Platform Tools 是 Android SDK 的一个组件。它包含与 Android 平台进行交互的工具,例如 adb、fastboot 和 systrace。开发 Android 应用时需要使用这些工具。如果您想要解锁设备的引导加载程序并为其刷入新的系统映像,同样需要使用这些工具。

下载地址:platform-tools-latest-windows.zip
下载
将解压后的文件夹移至任意位置:
移动

③ 使用 ADB 连接安卓虚拟机
在 ADB 工具包目录下启动 Windows 终端,并连接至安卓虚拟机(地址为你开启开发人员模式时记录的那个):

# 查看当前是否有能连接的设备
adb devices
# 连接至安卓虚拟机
adb connect 127.0.0.1:58526

连接

④ 安装应用
找到你 .apk 存放的路径并作为参数传入:

.\adb install C:\Users\m112233\Downloads\uu-6.2.6.1115.apk

安装
完成后,就能在你最近添加的项目处看见了:
最近添加的项目
正常打开没有问题:
没有问题

之后你可以把地区改回中国、虚拟机子系统改回按需求(这样 Android 虚拟机不会一直在后台运行着)。
再安装其他软件时如果出现连不上虚拟机的问题,需要将步骤 3 的配置重新做一遍。

结束。

1、错误信息

Missing or invalid credentials.
Error: connect ECONNREFUSED /run/user/0/vscode-git-02xxxeed11.sock
    at PipeConnectWrap.afterConnect [as oncomplete] (net.js:1146:16) {
  errno: -111,
  code: 'ECONNREFUSED',
  syscall: 'connect',
  address: '/run/user/0/vscode-git-02xxxeed11.sock'
}
Missing or invalid credentials.
Error: connect ECONNREFUSED /run/user/0/vscode-git-02xxxeed11.sock
    at PipeConnectWrap.afterConnect [as oncomplete] (net.js:1146:16) {
  errno: -111,
  code: 'ECONNREFUSED',
  syscall: 'connect',
  address: '/run/user/0/vscode-git-02xxxeed11.sock'
}
remote: Repository not found.
fatal: Authentication failed for 'https://github.com/username/repo.git/'

2、解决办法
参考文章:Git push: Missing or invalid credentials. fatal: Authentication failed for 'https://github.com/username/repo.git'
① 依次选择:文件 -> 首选项 -> 设置
选择
② 搜索 git.terminalAuthentication 并取消勾选:
取消勾选
③ 重启 VS Code 并重新 Push:
重启

这样操作之后有一个坏处,就是你 VS Code 对 GitHub 认证信息保存的功能会失效,你的每次 Push 都必须输入用户和密码。

结束。

本来是很简单的一件事情,追求新版本又把自己坑了一次......
留个记录稍微描述详细一点,希望能帮到你。


参考的文章:「VS Code」如何通过跳板机连接服务器进行远程开发:Remote-SSH 篇

1、VS Code 中 Remote - SSH 的安装和使用都很简单,就一步带过了。
在插件库中搜索安装:
选择安装
新建连接:
配置
选择 SSH 配置存放和读取路径:
选择 SSH 配置存放路径
接下来就是输入密码登录服务器,自行操作即可,但是如果你需要密钥登录,请跟着步骤 2 进行配置。

2、进行 SSH 密钥登录的配置和代理的配置。
进入刚刚所选 SSH 配置存放的目录,一般是 [C:\Users\你的用户名\.ssh]() 这个路径。

选择编辑 config 文件,密钥和代理的配置参照我设置即可:

# Host 为服务器别名,可以和 HostName 一样
Host $server_host
  # 你的服务器域名或 IP
  HostName $server_host
  # 用户
  User $user
  # SSH 私钥地址,例如:C:\Users\你的用户名\.ssh\example
  IdentityFile $ssh_primary_key$path
  # 代理配置
  ProxyCommand C:\bin\nmap\ncat.exe --proxy-type socks5 --proxy $proxy_host:$proxy_port %h %p --proxy-auth $proxy_auth_username:$proxy_auth_passwod

代理的配置详细说一下,也是我踩坑的地方。
下载压缩包后解压到任意目录,然后替换上面 C:\bin\nmap\ncat.exe 的路径即可。
虽然官方文档中明确记载了代理认证信息的配置方法,但是经过实测在当前最新版本:nmap-7.91-win32.zip 下是不支持的,VS Code 具体错误日志:

[01:09:46.557] Running script with connection command: ssh -T -D 13100 "example.com" bash
[01:09:46.559] Terminal shell path: C:\Windows\System32\cmd.exe
[01:09:46.742] > ]0;C:\Windows\System32\cmd.exe
[01:09:46.742] Got some output, clearing connection timeout
[01:09:47.447] > kex_exchange_identification: Connection closed by remote host
[01:09:47.454] > 过程试图写入的管道不存在。
[01:09:48.732] "install" terminal command done
[01:09:48.732] Install terminal quit with output: 过程试图写入的管道不存在。
[01:09:48.732] Received install output: 过程试图写入的管道不存在。
[01:09:48.733] Failed to parse remote port from server output
[01:09:48.733] Resolver error: Error: 
    at Function.Create (c:\Users\my_user\.vscode\extensions\ms-vscode-remote.remote-ssh-0.65.7\out\extension.js:1:64659)
    at Object.t.handleInstallOutput (c:\Users\my_user\.vscode\extensions\ms-vscode-remote.remote-ssh-0.65.7\out\extension.js:1:63302)
    at Object.t.tryInstall (c:\Users\my_user\.vscode\extensions\ms-vscode-remote.remote-ssh-0.65.7\out\extension.js:1:415135)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
    at async c:\Users\my_user\.vscode\extensions\ms-vscode-remote.remote-ssh-0.65.7\out\extension.js:1:294918
    at async Object.t.withShowDetailsEvent (c:\Users\my_user\.vscode\extensions\ms-vscode-remote.remote-ssh-0.65.7\out\extension.js:1:406463)
    at async Object.t.resolve (c:\Users\my_user\.vscode\extensions\ms-vscode-remote.remote-ssh-0.65.7\out\extension.js:1:295994)
    at async c:\Users\my_user\.vscode\extensions\ms-vscode-remote.remote-ssh-0.65.7\out\extension.js:127:110656
[01:09:48.736] ------

这种情况似乎只会在 VS Code 中出现,我在命令行中尝试连接时没有问题:

C:\Users\my_user>ssh [email protected] ProxyCommand="C:\bin\nmap-7.91\ncat.exe --proxy-type socks5 --proxy example.proxy:1080 %h %p --proxy-auth 111:222"
[email protected]: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

而解决方法则只有一个,回退版本,和参考的教程中使用同样的版本:nmap-7.70-win32.zip
这个问题的解决单纯就是试出来的,暂时也没有功夫去探究错误的原因,可能也只是个例,Stack Overflow 的个别讨论也都是纠结配置方法的问题,事实上格式官方已经给了,参考意义都不是很大。
如果回退依然没有解决你的问题的话,在确保 SSH 不适用代理能访问的前提下,使用以下代码去排查下:

lastb -n 100

在服务器运行,查看最近受阻的 100 次 SSH 登录,看客户端到服务器是否打开过连接,再做下一步的判断。
结束。