Skip to content

Commit de849bf

Browse files
committed
add post tesla p4
1 parent 9e980e9 commit de849bf

18 files changed

+550
-590
lines changed

.prettierrc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{
2-
"printWidth": 80,
3-
"proseWrap": "always"
2+
"printWidth": null,
3+
"proseWrap": "never"
44
}

content/posts/android-x86-pve.md

Lines changed: 18 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -20,61 +20,43 @@ toc:
2020

2121
![android-x86-demo.gif](https://img.linkzz.eu.org/main/images/2023/11/c8a6924e9c9fa1972a6f19da3367218c.gif)
2222

23-
可以看到运行很流畅,由于gif压缩小了尺寸,Aida64的信息界面看不清,显卡
24-
`virtGL`,支持`OpenGL`,3D加速由宿主机`Intel UHD 630`提供,最后的游戏演示可看
25-
出很流程。
23+
可以看到运行很流畅,由于gif压缩小了尺寸,Aida64的信息界面看不清,显卡是`virtGL`,支持`OpenGL`,3D加速由宿主机`Intel UHD 630`提供,最后的游戏演示可看出很流程。
2624

2725
## 1. 前言
2826

2927
### 1.1 为什么需要Android
3028

31-
我日常使用的是一个直通了RTX2060s(矿卡)的Win11虚拟机,众所周知,在虚拟机里使用
32-
模拟器性能巨差,我试过夜神模拟器,启动慢不说,游戏电竞帧数,连抖音都卡顿明显。所
33-
以一个能在Hypevision中运行的安卓系统就是一个很好的选择。
29+
我日常使用的是一个直通了RTX2060s(矿卡)的Win11虚拟机,众所周知,在虚拟机里使用模拟器性能巨差,我试过夜神模拟器,启动慢不说,游戏电竞帧数,连抖音都卡顿明显。所以一个能在Hypevision中运行的安卓系统就是一个很好的选择。
3430

3531
### 1.2 选择哪一种
3632

3733
现阶段能作为选择的有3种方案:
3834

3935
- 1. **ChromeOS**:
4036

41-
首当其冲的就是基于[Chromium OS](https://www.chromium.org/chromium-os/)
42-
ChromeOS及其他发行版如国内的[FydeOS](https://fydeos.io/),这系统号称老电影
43-
福音,具有完整的桌面环境并兼容Android应用,可惜对于显卡的兼容性不是很好,而
44-
虚拟机能使用3D加速的显卡,除了显卡直通外还有一种就是最近一两年积极维护
45-
[VirtualGL](https://wiki.archlinux.org/title/VirtualGL),所以ChromeOS在
46-
VirtualGL下运行是否可行还得画个问号,后面再折腾。
37+
首当其冲的就是基于[Chromium OS](https://www.chromium.org/chromium-os/)的ChromeOS及其他发行版如国内的[FydeOS](https://fydeos.io/),这系统号称老电影福音,具有完整的桌面环境并兼容Android应用,可惜对于显卡的兼容性不是很好,而虚拟机能使用3D加速的显卡,除了显卡直通外还有一种就是最近一两年积极维护的[VirtualGL](https://wiki.archlinux.org/title/VirtualGL),所以ChromeOS在VirtualGL下运行是否可行还得画个问号,后面再折腾。
4738

4839
- 2. **容器化方案 -`Waydroid` or `Redroid`**:
4940

50-
第二种方案就是借助容器化`cgroups``namespace` 等内核技术的容器化方案,这种
51-
方案启动快速,可使用宿主机硬件资源,也能使用宿主机GPU进行3D加速, 但是对于
52-
Nvidia的显卡兼容性很差。运用pve创建一个lxc容器来运行docker redroid容器也能
53-
运行,后续折腾一下这个方案。
41+
第二种方案就是借助容器化`cgroups``namespace` 等内核技术的容器化方案,这种方案启动快速,可使用宿主机硬件资源,也能使用宿主机GPU进行3D加速, 但是对于Nvidia的显卡兼容性很差。运用pve创建一个lxc容器来运行docker redroid容器也能运行,后续折腾一下这个方案。
5442

5543
- 3. **Android-x86:**
5644

57-
[Android-x86](https://www.android-x86.org/) 在AOSP的基础上增加x86平台的支
58-
持,可通过native-bridge转义arm指令从而运行arm应用,同样称为老电脑福音,GPU
59-
兼容性较好,兼容[VirtualGL](https://wiki.archlinux.org/title/VirtualGL)
60-
今天我们就来在pve中尝试一下这个系统有什么妙处。
45+
[Android-x86](https://www.android-x86.org/) 在AOSP的基础上增加x86平台的支持,可通过native-bridge转义arm指令从而运行arm应用,同样称为老电脑福音,GPU兼容性较好,兼容[VirtualGL](https://wiki.archlinux.org/title/VirtualGL) ,今天我们就来在pve中尝试一下这个系统有什么妙处。
6146

6247
## 2. 安装Android-x86
6348

6449
### 2.1 镜像下载
6550

66-
打开[Android-x86](https://www.android-x86.org/) 官网,官网提供了2个下载分流,按
67-
需选择,我这里选
68-
[SourceForge](https://sourceforge.net/projects/android-x86/files/)
51+
打开[Android-x86](https://www.android-x86.org/) 官网,官网提供了2个下载分流,按需选择,我这里选择[SourceForge](https://sourceforge.net/projects/android-x86/files/)
6952

7053
![image.png](https://img.linkzz.eu.org/main/images/2023/11/5d0d0aa1d930d4aba35b64d7cb377d8e.png)
7154

7255
共有一下版本:
7356

7457
![image.png](https://img.linkzz.eu.org/main/images/2023/11/7eb5ee18842f0715ae49fe07e057502f.png)
7558

76-
最新版本Release 9.0 基于Android 9.0 Pie,也是下载次数最多的版本,我们选择此版
77-
本。
59+
最新版本Release 9.0 基于Android 9.0 Pie,也是下载次数最多的版本,我们选择此版本。
7860

7961
![image.png](https://img.linkzz.eu.org/main/images/2023/11/68eaaa00161a22fc93115275dfa22175.png)
8062

@@ -92,17 +74,15 @@ toc:
9274

9375
选择 `q35` 机型和 `OVMF` 安装,显卡选择`VirGL GPU`
9476

95-
> `VirGL GPU` 需要宿主机有有效的render节点设备,也就是说你的显卡需要正确的驱动了
96-
> 才能运行,通过`ls /dev/dri` 查看是否有 `render*` 字样。
77+
> `VirGL GPU` 需要宿主机有有效的render节点设备,也就是说你的显卡需要正确的驱动了才能运行,通过`ls /dev/dri` 查看是否有 `render*` 字样。
9778
9879
![image.png](https://img.linkzz.eu.org/main/images/2023/11/ad8920561f6fc190fe3bddb0495dc2c9.png)
9980

10081
存储给到32G即可,如果需要安装大型游戏可以给多一点。
10182

10283
![image.png](https://img.linkzz.eu.org/main/images/2023/11/25c2e923bae364d53066cc0a2f5421c9.png)
10384

104-
安卓比较依赖`CPU`资源,如果运行的是`arm`应用更需要`CPU`的转译,所以这里给到
105-
`10 vCPU`
85+
安卓比较依赖`CPU`资源,如果运行的是`arm`应用更需要`CPU`的转译,所以这里给到 `10 vCPU`
10686

10787
![image.png](https://img.linkzz.eu.org/main/images/2023/11/50cae9a59aec34c61356736995d4d9fd.png)
10888

@@ -192,10 +172,8 @@ Wifi网络先跳过
192172
选择默认主屏幕模式:
193173

194174
- 任务栏 - 基于浮窗的任务栏模式,类似桌面模式,但是使用体验很差。
195-
- Quickstep - 传统安卓桌面,鼠标模拟点击操作,还有抽屉式应用,用过安卓的会比较熟
196-
悉这个模式,按需选择。
197-
> 这里选了始终之后如果要切换默认模式在设置 -> 应用和通知 -> 默认应用里面改回来
198-
> 即可
175+
- Quickstep - 传统安卓桌面,鼠标模拟点击操作,还有抽屉式应用,用过安卓的会比较熟悉这个模式,按需选择。
176+
> 这里选了始终之后如果要切换默认模式在设置 -> 应用和通知 -> 默认应用里面改回来即可
199177
200178
![image.png](https://img.linkzz.eu.org/main/images/2023/11/2f1d74da66a65b2a38f184fbc5c298f9.png)
201179

@@ -205,9 +183,7 @@ Wifi网络先跳过
205183

206184
### 3.2 设置静态ip
207185

208-
设置 -> 网络和互联网 -> WLAN 点击 `VirtWifi` 连接,安卓会通过DHCP获取ip,一般获
209-
得的ip会显示无法访问互联网,这是因为我们的网络无法访问谷歌404网站,接下来我们修
210-
改这个网络的属性,改为固定ip,我还要修改一下魔法网关。
186+
设置 -> 网络和互联网 -> WLAN 点击 `VirtWifi` 连接,安卓会通过DHCP获取ip,一般获得的ip会显示无法访问互联网,这是因为我们的网络无法访问谷歌404网站,接下来我们修改这个网络的属性,改为固定ip,我还要修改一下魔法网关。
211187

212188
![image.png](https://img.linkzz.eu.org/main/images/2023/11/df90ae316d598b0178498e57cb6aa1a0.png)
213189

@@ -221,17 +197,11 @@ Wifi网络先跳过
221197

222198
按实际情况填好IP和网关、DNS之后保存。
223199

224-
> 保存好之后并不是立即生效的,可关开WLAN重新连接网络之后即可,如果你的网络环境可
225-
> 直接访问Google的话会弹出账号登录同步通讯录等谷歌服务,登录之后即可通过
226-
> `Google Play` 下载应用。
200+
> 保存好之后并不是立即生效的,可关开WLAN重新连接网络之后即可,如果你的网络环境可直接访问Google的话会弹出账号登录同步通讯录等谷歌服务,登录之后即可通过 `Google Play` 下载应用。
227201
228202
### 3.3 Scrcpy连接Android
229203

230-
[scrcpy](https://github.com/Genymobile/scrcpy) 是安卓远程连接的优秀开源项目,基
231-
于adb连接,可在PC端通过鼠标操作安卓,具有低时延,高帧率,可定制连接质量,可传输
232-
音频(需要Android 11以上版本)等一系列优点,具体可查看
233-
[文档](https://github.com/Genymobile/scrcpy) scrcpy支持
234-
`Linux``Mac``Windows` 三大平台,这里以 `Windows 11` 平台为例
204+
[scrcpy](https://github.com/Genymobile/scrcpy) 是安卓远程连接的优秀开源项目,基于adb连接,可在PC端通过鼠标操作安卓,具有低时延,高帧率,可定制连接质量,可传输音频(需要Android 11以上版本)等一系列优点,具体可查看其[文档](https://github.com/Genymobile/scrcpy) scrcpy支持 `Linux``Mac``Windows` 三大平台,这里以 `Windows 11` 平台为例
235205

236206
- 安装 `Scrcpy`
237207

@@ -267,17 +237,13 @@ scrcpy -e
267237

268238
-e 参数指定通过tcpip协议连接,如果你只有一个设备连接到adb可不用这个参数。
269239

270-
> Scrcpy 2.0 开始原生支持音频传输,但是需要 Android 11 以
271-
> 上。[sndcpy](https://github.com/rom1v/sndcpy) 需要Android 10以上,所以音频传输
272-
> 是无解的,因为Android 10才加入了音频分享的API,具体可查看这
273-
> [Issue](https://github.com/rom1v/sndcpy/issues/25)
240+
> Scrcpy 2.0 开始原生支持音频传输,但是需要 Android 11 以上。[sndcpy](https://github.com/rom1v/sndcpy) 需要Android 10以上,所以音频传输是无解的,因为Android 10才加入了音频分享的API,具体可查看这个[Issue](https://github.com/rom1v/sndcpy/issues/25)
274241
275242
![image.png](https://img.linkzz.eu.org/main/images/2023/11/33970cc11aea32f0fe9f127cd8758238.png)
276243

277244
### 3.4 开启arm兼容模式
278245

279-
默认只能运行兼容x86架构的app,运行arm架构的app需要开启arm兼容模式,开启arm转译。
280-
[foxi](https://foxi.buduanwang.vip/linux/1996.html/) 大佬的网盘下载库文件。
246+
默认只能运行兼容x86架构的app,运行arm架构的app需要开启arm兼容模式,开启arm转译。从[foxi](https://foxi.buduanwang.vip/linux/1996.html/) 大佬的网盘下载库文件。
281247

282248
```bash
283249
wget https://foxi.buduanwang.vip/pan/foxi/download/andriod/houdini9_y.zip
@@ -337,8 +303,7 @@ adb.exe -e install Downloads\aida64-v196.apk
337303

338304
![image.png](https://img.linkzz.eu.org/main/images/2023/11/a51cf0fb5076236da33861b4999df74c.png)
339305

340-
单核性能接近`Pixel 7 Pro`,多核甚至优于小米13,哈哈,当然这里就是图一乐,不同指
341-
令集的CPU肯定不能这么比。
306+
单核性能接近`Pixel 7 Pro`,多核甚至优于小米13,哈哈,当然这里就是图一乐,不同指令集的CPU肯定不能这么比。
342307

343308
![image.png](https://img.linkzz.eu.org/main/images/2023/11/1a040e9d25bb86bb3db5572c41d33faf.png)
344309

@@ -360,8 +325,4 @@ intel_gpu_top
360325

361326
## 5. 结语
362327

363-
`Android-x86` 在虚拟机上的表现可以说超出了我的预期,大部分的app均可流畅运行,且
364-
性能开销尚可,只是9.0 版本的Android不支持音频的传输,所以用来当作云手机的效果会
365-
大打折扣,只能用于一些挂机app或者游戏的运行,另外有一个类似的Android-x86 发行版
366-
[BlissOS](https://blissos.org/) 有基于Android 12的版本,下期可以尝试这个版本是否
367-
可解决音频传输的问题,让我拥有一个x86的安卓云手机。
328+
`Android-x86` 在虚拟机上的表现可以说超出了我的预期,大部分的app均可流畅运行,且性能开销尚可,只是9.0版本的Android不支持音频的传输,所以用来当作云手机的效果会大打折扣,只能用于一些挂机app或者游戏的运行,另外有一个类似的Android-x86发行版 [BlissOS](https://blissos.org/) 有基于Android 12的版本,下期可以尝试这个版本是否可解决音频传输的问题,让我拥有一个x86的安卓云手机。

content/posts/autohotkey-im-switch.md

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,30 +15,21 @@ toc:
1515
auto: true
1616
---
1717

18-
众所周知,在中文环境下使用 vim 一直会有中英文输入法切换的烦恼,社区也有一些方案
19-
解决,如 AutoHotKey 脚本 `im-select` 插件等,今天提供一种基于屏幕颜色的方案来实
20-
现按下 `ESC` 键切换输 入法的方案,下面是效果展示:
18+
众所周知,在中文环境下使用 vim 一直会有中英文输入法切换的烦恼,社区也有一些方案解决,如 AutoHotKey 脚本 `im-select` 插件等,今天提供一种基于屏幕颜色的方案来实现按下 `ESC` 键切换输 入法的方案,下面是效果展示:
2119

2220
![output.gif](https://img.linkzz.eu.org/main/images/2023/09/6521c2a2ace052053b9608ebea643f6f.gif)
2321

2422
## Window Spy
2523

26-
我目前安装的是[AutoHotKey v2.0.2](https://www.autohotkey.com/docs/v2/)版本,使用
27-
其提供的 Window Spy 功能,我们可以方便的查看各个窗口的信息,鼠标的信息等,今天我
28-
们要实现的版本思路就是基于判断屏幕指定坐标处的十六进制颜色来判断当前是处于什么输
29-
入法环境下。
24+
我目前安装的是[AutoHotKey v2.0.2](https://www.autohotkey.com/docs/v2/)版本,使用其提供的 Window Spy 功能,我们可以方便的查看各个窗口的信息,鼠标的信息等,今天我们要实现的版本思路就是基于判断屏幕指定坐标处的十六进制颜色来判断当前是处于什么输入法环境下。
3025

3126
![image.png](https://img.linkzz.eu.org/main/images/2023/09/48d21a2cade00018cbcec330defb00da.png)
3227

33-
如上图,因为截图无法截取鼠标位置,我的鼠标置于图中“中”字的下部分,切换到英文的时
34-
候为大写字母"A",屏幕相同的位置是没有“中”字下部分的颜色的,而 Windows 系统输入法
35-
状态指示的图标相对来说是比较固定的,故以此来判断当前输入法的环境是可行的,看官自
36-
己设置的时候使用 window spy 来获取这个坐标即可。
28+
如上图,因为截图无法截取鼠标位置,我的鼠标置于图中“中”字的下部分,切换到英文的时候为大写字母"A",屏幕相同的位置是没有“中”字下部分的颜色的,而 Windows 系统输入法状态指示的图标相对来说是比较固定的,故以此来判断当前输入法的环境是可行的,看官自己设置的时候使用 window spy 来获取这个坐标即可。
3729

3830
## AutoHotKey 脚本
3931

40-
既然有了方案就可以着手实现了,我们使用 V2 版本的语法来完成,并将键盘上不常用的
41-
`CapsLock` 键映射为 `ESC` 键,下面是完整的脚本:
32+
既然有了方案就可以着手实现了,我们使用 V2 版本的语法来完成,并将键盘上不常用的 `CapsLock` 键映射为 `ESC` 键,下面是完整的脚本:
4233

4334
```autohotkey
4435
#Requires AutoHotkey v2.0
@@ -66,8 +57,4 @@ CapsLock::VimEsc()
6657
#HotIf
6758
```
6859

69-
以上代码中将需要生效的应用添加到 `VimMode` 组,如果有更多需要应用 Vim 模式的应用
70-
,通过 window spy 获取其 ahk_exe,通过`GroupAdd "VimMode", "ahk_exe {name}"`
71-
其加入组中即可,十六进制颜色和坐标也根据需要修改为你自己的,Send 后面的内容也要
72-
修改你输入法的中英文切换的快捷键,在这里我的是 `Shift` 键,之后运行脚本即可实现“
73-
按下 `Esc` 或者`CapsLock` 自动切换为英文输入法” 的功能。
60+
以上代码中将需要生效的应用添加到 `VimMode` 组,如果有更多需要应用 Vim 模式的应用,通过 window spy 获取其 ahk_exe,通过`GroupAdd "VimMode", "ahk_exe {name}"` 将其加入组中即可,十六进制颜色和坐标也根据需要修改为你自己的,Send 后面的内容也要修改你输入法的中英文切换的快捷键,在这里我的是 `Shift` 键,之后运行脚本即可实现“按下 `Esc` 或者`CapsLock` 自动切换为英文输入法” 的功能。

content/posts/awesome-false.md

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,4 @@ validate : function(value, type){
2222
}
2323
```
2424

25-
       经过测试在 js
26-
`!null``!undefined``!''`输出结果都为`true`,而任意非空字符串取非均
27-
`false`。代码中巧妙的利用了这点,先用 jquery 把传入的参数去掉空格,同时转换成
28-
字符串,再进行二次取非操作,这样传入的空字符就会返回 boolean 型的`true`,这样函数
29-
的返回值也更容易理解,当传入的是空串时返回`true`
25+
       经过测试在 js中`!null``!undefined``!''`输出结果都为`true`,而任意非空字符串取非均为`false`。代码中巧妙的利用了这点,先用 jquery 把传入的参数去掉空格,同时转换成字符串,再进行二次取非操作,这样传入的空字符就会返回 boolean 型的`true`,这样函数的返回值也更容易理解,当传入的是空串时返回`true`

0 commit comments

Comments
 (0)