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 环境清理
环境清理
手动清理文件
不常用应用卸载
重点目录清理
ProgramFiles
PragramData
Appdata/ [Local|Roaming]
重新分盘
文件清理及归档
Documents
QQ 文件专清 [FileRecv|Image|Video]
Downloads 目录时间久,内容混乱。再议
WSL 清理
注意在 Linux 环境下清理
清理后需要手动压盘*
(TODO) Docker Desktop 清理
(TODO) 开始菜单清理。见 misc/misc.
临时文件清理[1]
最后,删除部分免安装应用目录。清理文件夹时注意留下 MicroSoft 相关,如某 inetpub/ 目录。
部分应用及文件占用不大,仍留在原目录,不予整理。
一些感想
虽然容量基本不会成为问题,但装软件越多便不可逆地走向混乱。单是各种日志和配置文件,虽只有 MB 甚至 KB 大小,却不会自动清理,散碎不堪,如灰尘积于角落。长此以往,象征着这电脑永远不复最初的清爽。有强迫症的话,用些专业工具好好清理一下吧。
wsl: compress
清理文件后,WSL 所 ...
DDR3 初始化与训练
DDR3 初始化与训练
Initialization
graph LR
A[上电] --> B[复位] --> C[CKE 使能] --> D[MR 配置]
D --> E[ZQ 校准] --> F[写 Training] --> G[读 Training]
G --> H((END))
Data Eye Training (DET)
Eye Open
LB Search
DeSkew
RB Search
DQS Centering // 中心对齐,最佳时序
Write Leveling
写调平技术。CK / DQS 调平意义是减小 tDQSCK,简化 PHY 侧 DQS 设计。
DDR3 命令与时序
DDR3 命令与时序
命令
ACTIVATE
执行激活命令时
Signal
Description
BA2..0
指定 Bank 地址
A11, 9..0
指定 Row
对某一行激活后,该行将一直处于激活状态,直到下一次 PRECHARGE. 打开新行前必须对旧行执行 PRECHARGE.
PRECHARGE
预充电命令用于关闭一个已经打开的工作行。当 PRECHARGE 命令执行后需等待 tRP 才能执行下一个工作行的激活操作。PRECHARGE 后的行处于 Idle 状态,必须 ACTIVATE 才能进行读写操作。
预充电与刷新
PRECHARGE
预充电时对数据线上的分布电容 Cb 进行充电。刷新则是对存储体的电容 C 进行重写。
动作
预充电
充电
时序
不定期
定期
预充电是一种 Idle 状态,不能保证存储电容不丢失。只有 REFRESH 才能保证存储电容不丢失。
读操作是对存储电容的破坏性读取。原本逻辑状态为 1 的电容在读取操作后,会因放电而变成逻辑 0,因此,读操作都伴有数据刷新动作。该动作由刷新放大器 (现合并 ...
ThinkBook 14p 加装固态
DIY
加装固态
Brief
说明:SSD 2 最多装 2TB
选品:长城 GW7000 2TB | PCIE 4.0 | m.2 | 2280
螺丝规格为尝试后得出
D 壳
久闻 Thinkbook 后盖及硬盘螺丝难拆,今日一见,名副其实。
24 款的 Thinkpad 14+ 结构有修改,与拆机视频不一样。六角螺丝规格 T5,六个螺丝有四个是不能完全拆卸的,剩下两个不知为什么也没拆下来,但不影响。缝隙实紧,塑料划片磨掉几层屑,最后还是靠着吸盘卸了一个极紧的角。余下缝隙,总结经验便是不要心疼后盖,划片用力划,加之掰一掰。
耗时很久,终于无伤拆卸。
加装固态
看视频拔电池,开机放静电。然后尝试拆硬盘螺丝,规格十字 PH00,几欲滑丝,而纹丝不动。便停止较劲,看搜索知是通病,内有螺丝胶,一般用指甲刀解决。尝试,果然有效。
约 15° 倾斜插入。
识盘
开机 → 此电脑 / 管理 → 对磁盘 1 新建简单卷,逐步默认。识盘成功。
Timeline
见 D:\misc\故障检测
计网小白の打洞日记
关于 NAT
引
之前对于 NAT 有一个错误认识,认为所有 NAT 都为 Full-Cone ( 全锥 ) 类型。后来学习了 NAT 分类,才知道打洞能否成功与打洞双方 NAT 类型有关。此外,使用 zerotier 组网时,通过 peers 命令查得的连接方式始终与传输大文件时带宽的直观感受不相匹配,也是一直疑惑的问题之一。
本文对以上问题进行大致梳理。
NAT 分类
根据形状和防火墙策略,将 NAT 分类如下。
表格
其中,NAT3-NAT4 / NAT4-NAT4 一般不能打洞[1]。遗憾的是,国内光猫多数使用 NAT4,一些路由器 ( 如华为 WS5200 ) 也为 NAT4 且不提供修改选项。光猫 NAT 和防火墙策略的修改需要进超级后台,可行性较低。对于 WS5200 这种路由器,可配置性有限[2] [3],比如光猫桥接后在路由器中设一台 DMZ 主机,则通过这种方式实现 NAT0。
端口映射
防火墙可以配置端口映射规则,将特定外部端口的流量映射到内部网络中的某个特定端口上。映射规则可以优先于防火墙对端口的限制而生效。因此,即便对于两个 NAT4 LAN,通过 ...
论文阅读 - Nomad
Nomad
Intro & Backgrounds
Multi-Tier Memory
Management
多级内存:时延、容量、功耗、成本。
Central to tiered memory management is page management within operating systems (OS), including page allocation, placement, and migration.
强调 OS-Managed 是多级内存管理的核心。相比于专用硬件架构,其灵活性更高 ( e.g., K-V-Separated Storage ),同时可保持对用户程序透明。
Assumption
传统内存层次结构由性能相差一个数量级以上的存储介质组成。DRAM-Disk 下,延迟、带宽、容量均相差 2 ~ 3 个数量级,页面管理系统只需专注于将热页面移至 DRAM。而新兴内存介质 ( e.g., Optane PMem, CXL Memory ) 与 DRAM 的性能差距已经缩小到数倍。因此,过去的页面管理假设可能不再成立,如果迁移成本太高,则将热页 ...