NDCTL 库简介
ndctl
Concepts
NVDIMM Devices
A generic DIMM device object, named /dev/nmemX, is registered for each physical memory device indicated in the ACPI NFIT table, or other platform NVDIMM resource discovery mechanism.
12$ ls /dev | grep nmnmem0 nmem1 nmem2 ... nmem7 # 这是字符设备
( ? Why nmem as char-dev while pmem as blk-dev (under fsdax mode) )
ACPI NFIT
Advanced Configuration and Power Interface (ACPI): 高级配置和电源管理接口
提供很多表用于 OS 对硬件配置进行管理。
ACPI 基础
ACPI NVDIMM Firmware Interface Table (NFIT): NVDIMM ...
SetupTools(二)
setup.py
Setup tools 打包生成二进制文件
1234567891011121314151617181920from setuptools,import,setup,find_packageswith open(README.md, r, encoding=utf-8) as fh: long_description = fh.read()setup( # Name # Version # Description # Long description = long_description # url # author # author_email = ... # Packages = find_packages # install_requires = [openpyxl,pandas] # example entry_points = [ "eyetool = trainingtools.bin.eyetool:cmd" ] python_requires = ">=3.9")
安装命令
生成 .whl
1pyth ...
Makefile 入门(一)
Makefile
常见问题
Shell 与工作目录
Makefile 的每一行都是一个 sub shell. 因此,不能在 Makefile 中配置环境变量 ( 单独编写 .sh 进行配置 )。如果需要切换工作目录,则使用 && 或 ; 进行连接。
一般地,忽略错误并执行连续命令
1234567891011phony: -cmd_1 -cmd_2 ; cmd_3````注意:在 .sh 中 export 环境变量的方式也是无效的,都在自己的独立 shell 中执行。只有通过 source 方式执行脚本才能让命令在当前 shell 中生效。```bash# set-env.shexport YOUR_PATH=$YOUR_PATH:<path># unset-env.shunset YOUR_PATH
SetupTools(三)
项目主体
基于 Streamlit 进行可视化,默认端口 8501.
基本运行
直接运行
采用了声明式的网页描述范式,所见即所得。
1streamlit run Index.py
脚本模式
脚本模式下便于 PyInstaller 封装。需要一个 .py 脚本作为项目入口。
说明如下。
.streamlit/config.toml
端口配置等,可加可不加,但为了避免打包后出现奇怪告警和subpages找不到等问题,建议加上
hooks/
用于打包的钩子文件
run_index.py
封装 index.py,作为 Streamlit 运行脚本和 PyInstaller 打包入口
run_index.spec
打包配置项
目录说明
config.toml
1234567[server]port=8531headless=true[browser]gatherUsageStats=false[global]developmentMode=false
不过也发现,打包为单文件后 .streamlit/ 目录找不到,即便在 __MEIPASS 下搜索也不行。所以在 run_inde ...
SetupTools(四)
将 Web 应用封装为桌面应用
Electron 简介
Electron 是基于 Node.js 的桌面应用框架,采用 Chromium / Node.js / Native API 架构,常用于封装 Vue / React 应用为桌面应用,也可直接对 url 进行封装。
本文采用 url 封装方式将 Streamlit Web 应用封装桌面应用。需要 Electron 中同时打包第三方 Web 应用,对 localhost:8501 进行封装,运行时首先拉起第三方应用,退出时一并结束。
安装
安装 Node.js / npm.
依赖库
axios 为主进程所依赖,不能放在 dev-dependcies 中,否则 Electron-Builder 不打包。
12npm install --save-dev electron electron-buildernpm install --save axios
Electron-Builder 依赖
可能需要添加 winCode 签名文件。
运行
项目结构见 §1. 将 Streamlit 无头应用置于 resources/ 目录 ...
Python 打包与分发
打包与分发
Setuptools
目录结构
与 setup.py 同级的包目录都会被默认的 find_packages()检索,所以最后安装的包名是 setup.py 的同级包名。
123456789$ tree.├── pkg1/ # pkg├── pkg2 # pkg│ ├── __init__.py| ├── pkg3/ # pkg│ └── moduleX.py├── setup.py└── test/ # not a pkg, discussed later
那么 pip install 执行后,使用 pip list 查到的包为 pkg1 和 pkg2. 子包 pkg3 不会被找到。为规范起见,可在 setup.py 同级目录只设顶层包。
开发
以下问题在 pip install 时不存在。顶层包可以找得到,直接导。
快速迭代时,为避免频繁 pip install,可使用 setup.py 的 develop 选项 ( 见快速迭代一章 ),此时只能在根目录下找到测试包 ...
ThinkBook 14p 整备记录
ThinkBook 14+ 配置记录
24.08.24
前言
¥5099 入手了 Thinkbook 14+,8845H + 32G DDR5 应该够用。以后便是这台机器陪我走南闯北了。
配置过程
代理
Clash 0.19.11
首先解决网络问题。Clash 虽死,但用惯了,一直懒得找下家。拷贝安装包和配置文件,这是唯一需要U盘的步骤。
Copilot
尝试启用 Copilot [1] [2] [3],如下:
更改日期和地区
ViveTool
修改并锁定注册表
几番尝试,Copilot 按钮是出来了,可惜仍是所在地区不可用。最后关掉了按钮,不用就不用吧。
压缩
时代变了!自带压缩-解压缩。这下 360 最后的价值也没有了。
Chrome
Edge 传统艺能,在必应搜索 Chrome 时弹出“Edge 是最好的浏览器”云云。
装好后同步配置,80% 的日常环境算是完成了。
Zerotier
Zerotier 1.14.0
Zerotier 是真的友好,join network 即完成配置,一气呵成。不过好像是默认开机启动的,即便关掉 UI 按钮也是如此。 ...
Docker Desktop 更改镜像位置
更改镜像位置
Docker Desktop 会创建如下目录
12345→ DockerDesktopWSL → data → ext4.vhdx → main → ext4.vhdx
可以尝试手动更改,更便捷的方法是一键移动。
1Settings → Resources → Advanecd → Disk_Image_Location
Docker Desktop 热更新
Docker Desktop 热更新问题
面向 Docker Desktop for Windows,MacOS 应该有类似的解决思路。
Backgrounds
希望在 Windows 进行 Docker 环境下的 Vue 开发,同时在 Windows 本地进行文件管理。
在 Linux 的原生支持下,这并不成为问题。而在 Windows 中,Docker Desktop 使用 WSL2 作为后端,此时热更新是失效的,因为 WSL2 无法监听到从 Windows 中 mount 到 Linux 的文件系统的改变。
Solutions
尝试了数种方案,如图所示。方框表示 Windows 到 WSL2 的映射,绿色表示 -v 挂载双方。
从 Windows 直接挂载
如图 (a) 所示,无法热更新。
从 WSL2 挂载
如图 (b) 所示,WSL2 对 Windows 文件系统的映射路径为 /mnt,尝试将映射目录作为源目录挂载到 Docker,同样无法热更新。
值得一提的是,以上两种挂载方式可能导致 D:\App 变成一个 bind mount 目录,即从该目录下打开 W ...
ThinkPad T490 环境清理
环境清理
Log
应用卸载
文件夹清理
ProgramFiles
PragramData
(TODO) Appdata/ [Local|Roaming]
重新分盘
文件清理及归档
Documents
QQ 文件专清 [FileRecv|Image|Video]
Downloads 目录时间久,内容混乱。再议
WSL 清理
注意在 Linux 环境下清理
清理后需要手动压盘*
(TODO) Docker Desktop 清理
(Optional) 开始菜单清理。见 misc/misc.
临时文件清理[1]
手动删除部分免安装应用目录。清理文件夹时注意留下 MS 相关,如某 inetpub/ 目录。
部分应用及文件仍留在原目录,不予修改。
一些感想
虽然容量基本不会成为问题,但装软件越多便不可逆地走向混乱。单是删除后不会清理的日志和配置文件,散落在角落,长此以往就象征着这电脑永远不复最初的清爽。
wsl: compress
清理文件后,WSL 所占虚拟磁盘空间并不会释放。手动压盘,操作过程如下。[2]
找到虚拟磁盘位置
备份
DiskPart 压盘
...