2024-11-21 21:08:00
新的 Android API 改变了应用全屏的方式,网上搜到的全屏代码都不管用了,甚至 谷歌自己的教程 都没有更新,看了 API 文档才研究明白最新代码怎么写。本篇讲述两种新的全屏方式,一种保留状态栏文字的全屏,一种隐藏状态栏的全屏。
默认情况下,应用界面不会延伸到系统状态栏、导航栏、导航条等区域,这会很丑,要想适配全面屏显示,在 Android 14 中,可以用一行代码简单实现。
1 |
// import androidx.activity.enableEdgeToEdg |
适配全面屏并不会隐藏系统状态栏、导航栏、导航条,如果想实现完全全屏,老办法一般是调用 setSystemUiVisibility()
,然而这个方法在 14 中已经弃用了,获取 InsetsController
的 ViewCompat.getWindowInsetsController()
方法也被弃用了,最新的写法是:
1 |
// import androidx.core.view.WindowCompat |
2024-09-19 19:00:00
许多 AI 相关的项目、游戏辅助工具都使用 Python 语言开发,迫使我开始接触 Python 的环境搭建。作为一个前端人,我已经对 Node.js、NVM、NPM 等工具再熟悉不过了,但搭建 Python 的过程中还是碰到了不少困难,在此记录一下,让和我一样的前端人能更快地理解 Python 的生态体系。
NPM 在安装项目依赖时,会安装在项目的 node_modules 目录下,也就是局部安装,各个项目之间互相不影响,而 Pip 则是默认装在全局,这和前端的思维不一致。装在全局会造成多个项目的管理不便,各个项目之间依赖冲突、相同依赖的不同版本无法同时存在。
为了解决这个问题,Conda 就出现了,它可以创建完全隔离的多个不同的 Python 环境,每个环境可以指定不同的 Python 版本,每个环境所安装的依赖也相互隔离。
为了搭建 Python 环境,新手往往会先想到安装 Python,但实际上 Conda 已经内置了 Python,我们 只需要安装一个 Conda,就完成环境安装了。
Conda 有三个发行的安装包,分别是 Anaconda、Miniconda、Miniforge,其中 Anaconda 最出名,它已经内置了数千个常用的科学计算依赖包,属于是开箱即用,但缺点是安装包体积达到了惊人的 912 MB。
Miniconda 就比较小巧了,它没有内置常用依赖,体积也降到了 85 MB,对于我这种需求不高的用户,显然更合适。
和 NPM 一样,默认的国外软件源在国内是无法流畅使用的。我们需要在用户根目录(C:\Users\你的用户名
)创建一个 .condarc
文件,输入以下内容来切换成国内源
1 |
channels: |
如果你不想让以后安装的依赖占用 C 盘的空间,还需要提前修改环境位置,在上一步的 .condarc
文件中增加两行
1 |
envs_dirs: |
在开始中搜索 “anaconda”,找到 “Anaconda Prompt (miniconda3)” 并打开,然后执行
1 |
conda create -n 环境名称 python=3.12 -y |
替换命令中的环境名称为你定义的环境名称,替换命令中的 3.12 为你需要的 Python 版本
这样就完成环境的创建了,执行 conda env list
可以查看环境列表
仍然是在 Anaconda Prompt 中执行
1 |
conda activate 环境名称 |
这样就切换到了对应的环境中
仍然是在 Anaconda Prompt 中执行
1 |
cd /d 项目目录 |
注意 -r
后跟项目依赖声明文件,有可能叫 requirements.txt
,也有可能叫 requirements-prod.txt
,之类的
安装好依赖后,就可以启动项目啦!具体如何启动可以参考项目的 README 文件。
有时候我们需要编写 bat 脚本来执行一些自动化任务(例如定时执行),这时我们会发现,由于脚本执行时没有切换到指定的 Conda 环境中,会报 Python 找不到的错误。怎样在 bat 脚本中切换 Conda 环境呢?
1 |
@echo off |
替换命令中的 D:\dev\anaconda3
为你的 Conda 安装路径,替换最后一行命令为项目的启动命令
如果你和我一样在用 PyCharm 开发工程,还需要在其中配置工程所使用的 Conda 环境
conda.exe
所在位置,然后选择刚才创建好的环境,然后确定2024-09-18 15:19:00
Parsec 一直是我用过的体验最好、最流畅的远程串流软件,它能实现几乎无感的远程体验,配置上也比 Sunshine + Moonlight + 内网穿透的方案要简单得多。Parsec 只需要一个软件就能实现点对点远程。同时它也是 macOS 上我用过的最好用的远程被控端。
但最近这个软件无法正常打开了,原因是国内无法访问 Parsec 的服务器。对此,我们可以寻找一台可以正常连接 Parsec 的代理服务器,这里以 127.0.0.1:7890
为例,让 Parsec 恢复正常使用。
为 Parsec 配置代理以后,Parsec 只会在启动、登录、刷新电脑列表、建立连接时使用代理服务器,实际串流仍然不经过代理服务器,而是使用点对点连接,所以不用担心代理服务器对串流性能造成影响!
如果是 Windows,配置文件可能在以下两个位置其中之一,按 Win + R 输入位置以后确定,找得到哪个就改哪个:
%APPDATA%\Parse\config.json
C:\ProgramData\Parsec\config.json
如果是 macOS,请打开
~/.parsec/config.json
(可以用open -e ~/.parsec/config.json
命令直接打开)
{
后面增加这 9 行代理配置,注意加完以后整个文件必须是一个合法的 JSON,否则 Parsec 会重置配置1 |
"app_proxy": { |
parsecd.exe
进程,然后再打开 Parsec,就可以正常使用了。2024-09-09 16:26:00
在 使用 HTTP API 从 WPS 在线表格中获取数据 中,我介绍了如何查询数据,本篇将介绍如何利用 AirScript 实现完整的增删改查。
首先还是在金山文档中创建一个智能表格,在智能表格中创建一个数据表,这里以 “汇率表” 为例。
点 “高级功能” - “高级开发” - “AirScript 脚本编辑器”,在文档共享脚本中,点击 + 号右边的下拉按钮,创建一个 AirScript 1.0 脚本。
AirScript 2.0 脚本暂时还不支持数据表
输入以下代码。
1 |
/** |
按 Ctrl + S 保存脚本,然后点击工具栏上的 “脚本令牌” 按钮,生成一个脚本令牌,复制这个令牌保存(以后将无法再次查看),令牌有效期是半年,但放心,令牌可以随时延期,延期后令牌不变。
点击脚本名称旁边的菜单,点击 “复制脚本 webhook” 并保存。
接下来只需 POST 这个 webhook 地址,在请求头中带上 AirScript-Token:
脚本令牌,即可实现增删改查功能。
查询美元的汇率
1 |
{ |
1 |
{ |
创建一条 “萌币” 的汇率记录
1 |
{ |
1 |
{ |
修改 “萌币” 的备注
1 |
{ |
1 |
{ |
删除 “萌币” 记录
1 |
{ |
1 |
{ |
2024-08-27 21:31:00
简单测评一下新买的幻隐 HV3000 GR 2TB 固态硬盘。