白荼日记 - DelLevin https://blog.iletter.top/author/1/ zh-CN DelLevin Tue, 27 Oct 2026 13:48:00 +0800 Tue, 27 Oct 2026 13:48:00 +0800 硬盘为什么要分盘?(血与泪的教训) https://blog.iletter.top/archives/550/ https://blog.iletter.top/archives/550/ Tue, 27 Oct 2026 13:48:00 +0800 DelLevin 昨天工作的时候,突然公司的电脑e盘掉了,里面全是未提交的代码,心里慌透了。e和f在一个机械上面,e盘的扇区坏了一块(逻辑坏道),导致文件没办法正常读取了。。。。此时我才明白为什么要进行逻辑分区的重要性。。。

分区虽然没办法让物理隔离损坏,但是可以提供一定程度的逻辑隔离。以后装系统还是分区吧。。。现在几台电脑,都没分区。。。心慌了。。。

]]>
1 https://blog.iletter.top/archives/550/#comments https://blog.iletter.top/feed/author/1/
AI时代,我们失去了搜集知识的能力了么? https://blog.iletter.top/archives/549/ https://blog.iletter.top/archives/549/ Sun, 25 Oct 2026 14:11:00 +0800 DelLevin 看着自己的收藏的问题,从18~23年几千条,到24年的几百条,25年的几十条,26年已经寥寥无几了。

我的搜索模式也从一点点google到直接问ai。虽然ai有的时候给我的答案会打分所闻,但是我还是会义无反顾的相信。可ai真的是可以相信的吗?他也可能会被污染,也可能判断错误,就像我们走过的路一样,也会走错。

之前一点点收集起来的书签,也可以说是自己的“错题本”放到现在的视角就像一个笑话。我不止一次又一次的问自己,难道我真的失去了收集知识的能力了么?

有!但是不全面。

能力只是一种手段,判断也是一种手段,搜集知识的最终结果还是要去自己判断,工具的出现只是让搜集知识变得简单,但是它没办法替换你如何去吸收知识的方法。这也是为什么强调“方法论”的重要性。

遇到问题,先去求知,再去判断,实践验证,最后得出一个属于我自己的结果。这是我的笨法子。或许这种办法会让我限于“眼见为实”的困境,但是我还是应该要去想办法完善它。

这个问题的提出我想起了小时候做的一个题目。两个孩子在争论市长官大还是市委书记官大,一个小孩问了身边很多人,一个小孩网上搜索得出结果。现在看来,我提出的这个思考,和小时候的问题并无二至了。

]]>
1 https://blog.iletter.top/archives/549/#comments https://blog.iletter.top/feed/author/1/
红米k20刷入ubuntu https://blog.iletter.top/archives/526/ https://blog.iletter.top/archives/526/ Wed, 03 Jun 2026 01:00:00 +0800 DelLevin 建议刷机前将设备使用官方线刷包线刷为 安卓 10 底层。

一、前置准备
1.设备已完成 Bootloader 解锁。
2.电脑端配置好 adb/fastboot 环境变量。
3.解压 rootfs-ubuntu-gnome-7.0-resolute.zip,获取 rootfs.img 和内核驱动镜像。

二、刷机指令

1. 进入 Fastboot 模式

adb reboot bootloader

2. 清空分区(清除旧数据冲突)

fastboot erase dtbo
fastboot erase boot
fastboot erase cache
fastboot erase userdata

3. 刷入底层引导

fastboot flash boot u-boot.img

4. 刷入系统主镜像 (压缩包内解压获取)

fastboot flash userdata rootfs.img

如果报错

libc++abi: terminating due to uncaught exception of type std::bad_alloc: std::bad_alloc:

使用转换

.\img2simg rootfs.img rootfs_sparse.img

在进行

fastboot flash userdata rootfs_sparse.img

下载地址:
https://github.com/thka2016/lpunpack_and_lpmake_cmake/releases

5. 刷入内核和驱动 (压缩包内解压获取)

fastboot flash cache xiaomi-k20pro-boot.img

6. 重启设备

fastboot reboot

user用户默认密码:1234
设置root用户密码:

sudo passwd

f4576f01bb569aea2c335ec3879d4d9f.jpg

dcc43c670b77167edc3dea5a393dba31.png

]]>
5 https://blog.iletter.top/archives/526/#comments https://blog.iletter.top/feed/author/1/
南京 · 故地重游 https://blog.iletter.top/archives/548/ https://blog.iletter.top/archives/548/ Thu, 07 May 2026 22:36:00 +0800 DelLevin

]]>
0 https://blog.iletter.top/archives/548/#comments https://blog.iletter.top/feed/author/1/
人生就是一场硬着头皮上的演出。 https://blog.iletter.top/archives/525/ https://blog.iletter.top/archives/525/ Wed, 01 Apr 2026 21:21:00 +0800 DelLevin 公司的业务被砍了一大半,昨天老板还说“你合同还有一个月要到期了,要不还是仔细考虑一下,是否续签吧。”话里过了很多的无奈。

今天就把之前长期合作的技术公司解约了,准备自己干了。然后找外援,更加疯了一样的拓展业务。我的内心从未有如此的焦急感,不管是被辞退找工作,还是继续干加班熬夜。

这次让我想到了之前我同学不和我一起租房子的事情。原来所有的事情都不是让你做好准备去做的,也许是平平淡淡的一纸空文,也许是幽幽的叹息。人生的命运就被社会的大浪下拍在了沙滩。

我好像什么都没有做,人生就被判下了死刑。

慢慢来吧,人生的路还很长,这一辈子,没有什么让你准备充足去做的,硬着头皮上就行了,能干多少算多少。跌跌撞撞的走下去总比烂在荒野里要好吧。

平芜尽处是春山,与君共勉

]]>
1 https://blog.iletter.top/archives/525/#comments https://blog.iletter.top/feed/author/1/
在“终端”中设置 Mac 定时开关机 https://blog.iletter.top/archives/524/ https://blog.iletter.top/archives/524/ Wed, 01 Apr 2026 20:46:58 +0800 DelLevin 设置每日定时开关机

在您的Mac上打开"终端"(Terminal)应用,然后输入以下命令:

  1. 查看当前设置

    pmset -g sched
  2. 设置每天定时开关机
    要设置每天早上8点开机,晚上12点(24:00)关机,请运行以下命令:

    sudo pmset repeat poweron MTWRFSU 08:00:00 shutdown MTWRFSU 00:00:00

这里参数的含义:
poweron 表示开机
shutdown 表示关机
MTWRFSU 代表每天(Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)
08:00:00 表示早上8点整
00:00:00 表示午夜12点整

  1. 输入密码
    执行上述命令后,系统会要求您输入管理员密码,输入完成后按回车确认。
  2. 验证设置
    再次运行以下命令来确认设置是否成功:
pmset -g sched

如何取消定时任务
如果您以后想取消这些定时任务,可以运行:

sudo pmset repeat cancel

注意事项
M1芯片兼容性:M1芯片的Mac电脑支持pmset的定时功能,但某些旧的参数可能不适用。上面提供的命令适用于M1芯片Mac。
电源要求:为了确保定时开机功能正常工作,建议将Mac连接到电源适配器。

系统版本:在较新的macOS版本中,您也可以通过"系统设置" > "电池" > "调度"来设置定时开关机,但使用终端命令提供了更多灵活性。

]]>
0 https://blog.iletter.top/archives/524/#comments https://blog.iletter.top/feed/author/1/
MookNote:为记录而生 https://blog.iletter.top/archives/522/ https://blog.iletter.top/archives/522/ Mon, 09 Mar 2026 22:06:00 +0800 DelLevin 一款专注于个人记录的极简工具,让每一份感动与思考都有迹可循。

在这个信息爆炸的时代,我们每天都在消费大量的内容——看一部电影、读一本书、产生一个灵感。然而,这些内容往往如流水般逝去,留下的只有模糊的记忆。

MookNote 诞生于对简洁工具的追求。

我相信,好的工具应该像纸笔一样自然,不打扰思考,只记录生活。它不应该有繁琐的注册流程,不应该将你的数据存储在陌生的服务器上,更不应该用花哨的功能分散你的注意力。

我厌烦了一款软件让用户不断地注册来注册去,使用手机号验证来验证去,数据部不于自己,甚至自己写的笔记也不属于自己,我不喜欢这样,我想一款优秀的软件应该抛去繁杂的设计,就像太极一般的黑白两色。就像专业的人做专业的事情一样,MookNote主打记录生活一切有迹可循的影视娱乐,想法笔记。

MookNote名字的由来也是让我冥思苦想,Mo取自Movie的前两个字母ok取自book的后两个字母,Note则名为笔记,名字就这么来了。影视,书籍,笔记的三项生活记录,因为热爱,所以记录,因为想法,所以书写。

目前笔记还处于基础功能的版本,希望各位能多给我提提建议,我也会在其中做一些取舍,能与不能我都会一一记录下来的。在此,希望大家能多多帮助我这一个不知名的小开发者。

最后的最后,感谢阿里千问的通义灵码,让我一个小小的java开发者接触到Android开发,帮了我的大忙,帮了我最纯真的梦想。

下载地址:https://mooknote.iletter.top/#/

]]>
4 https://blog.iletter.top/archives/522/#comments https://blog.iletter.top/feed/author/1/
安卓模拟器无法连接网络问题 https://blog.iletter.top/archives/521/ https://blog.iletter.top/archives/521/ Sun, 08 Mar 2026 12:11:00 +0800 DelLevin 简短解释
  1. 打开你安卓SDK的存放目录,然后找到emulator文件夹并进入
  2. 打开终端调用emulator程序修改模拟器DNS配置 , 命令如下
    emulator -avd 模拟器名称 -dns-server 8.8.8.8 114.114.114.114
  3. 如果你不知道模拟器名称可以使用下面命令
    emulator -list-avds

步骤及命令

1.打开终端

键盘win+R,输入cmd

2.切换到Android SDK目录下的emulator文件夹下

cd 盘符:存放路径/sdk/emulator

3.获取模拟器名称

emulator -list-avds

4.设置模拟器DNS

emulator -avd 模拟器名称 -dns-server 8.8.8.8 114.114.114.114
]]>
1 https://blog.iletter.top/archives/521/#comments https://blog.iletter.top/feed/author/1/
immich搭建随笔docker-compose版 https://blog.iletter.top/archives/520/ https://blog.iletter.top/archives/520/ Mon, 23 Feb 2026 19:12:00 +0800 DelLevin 家里有一个二十年前的主机,自从改成服务器之后加装了好几块硬盘使用。今天心血来潮想装一下immich相册服务,结果抛弃了cpu满载了,更别说immich的机器学习了。所以改用了自己的macmini主机作为一个服务器使用。折腾了一天,也算是折腾好了,因为好多地方需要运行的时候下载模型文件,所以我选择下载好了,通过映射的方式挂载进去。

docker-compose.yml

name: immich_server
services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:v2
    volumes:
      - /Users/mac/Documents/docker/dockge/docker/stacks/immich/data:/data
      - /Users/mac/Documents/docker/dockge/docker/stacks/immich/img:/img
      - /etc/localtime:/etc/localtime:ro
    environment:
      - REDIS_HOSTNAME=
      - REDIS_PORT=
      - REDIS_PASSWORD=
      - REDIS_DBINDEX=2
      # 如果 Immich Server 本身还需要数据库连接信息(通常需要),请添加
      - DB_HOSTNAME=database # 使用内部服务名
      - DB_PORT=5432
      - DB_USERNAME=
      - DB_PASSWORD=
      - DB_DATABASE_NAME=
    ports:
      - 2283:2283
    depends_on:
      - database
    restart: always
    healthcheck:
      disable: false
  immich-machine-learning:
    container_name: immich_machine_learning
    image: ghcr.io/immich-app/immich-machine-learning:v2
    volumes:
      - model-cache:/cache
      # 将你存放模型的目录挂载到容器的 /cache/clip
      - /Users/mac/Documents/docker/dockge/docker/stacks/immich/ViT-B-32__openai:/cache/clip/ViT-B-32__openai
      - /Users/mac/Documents/docker/dockge/docker/stacks/immich/XLM-Roberta-Large-Vit-B-16Plus:/cache/clip/XLM-Roberta-Large-Vit-B-16Plus
      - /Users/mac/Documents/docker/dockge/docker/stacks/immich/facial-recognition:/cache/facial-recognition
    environment:
      - REDIS_HOSTNAME=
      - REDIS_PORT=
      - REDIS_PASSWORD=
      - REDIS_DBINDEX=2
      # 如果 ML 服务也需要数据库连接信息,请添加
      - DB_HOSTNAME=database
      - DB_PORT=5432
      - DB_USERNAME=
      - DB_PASSWORD=
      - DB_DATABASE_NAME=
    restart: always
    healthcheck:
      disable: false
  database:
    container_name: immich_postgres
    image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:bcf63357191b76a916ae5eb93464d65c07511da41e3bf7a8416db519b40b1c23
    environment:
      POSTGRES_PASSWORD: 
      POSTGRES_USER: 
      POSTGRES_DB: 
      POSTGRES_INITDB_ARGS: --data-checksums
    volumes:
      - /Users/mac/Documents/docker/dockge/docker/stacks/immich/db:/var/lib/postgresql/data
    shm_size: 128mb
    restart: always
    healthcheck:
      disable: false
volumes:
  model-cache: null
networks: {}

服务详解 (Services)

  1. immich-server (主服务器)
    作用: 这是 Immich 的核心应用服务器,处理所有主要逻辑,如 API 请求、用户界面、照片上传/下载等。
    镜像: ghcr.io/immich-app/immich-server:v2 - 拉取并使用 Immich 官方 v2 版本的服务器镜像。
    卷 (Volumes):
  2. /Users/mac/.../data:/data: 将宿主机上的 /Users/mac/.../data 目录挂载到容器内的 /data 路径,用于存储用户上传的原始媒体文件。
  3. /Users/mac/.../img:/img: 将宿主机上的 /Users/mac/.../img 目录挂载到容器内的 /img 路径,这里是用于机器学习使用的(如缩略图)。
  4. /etc/localtime:/etc/localtime:ro: 将宿主机的本地时间文件挂载到容器内,并设置为只读 (ro),确保容器内的时间与宿主机同步。
    环境变量 (Environment):
    REDIS_*: 配置服务器如何连接到外部的 Redis 服务
    DB_*: 配置服务器如何连接到内部的 PostgreSQL 数据库(服务名为 database,端口 5432,用户名/密码/数据库名均为 postgres/postgres/immich)。数据库存储元数据、用户信息等。
    端口 (Ports): - 2283:2283 - 将宿主机的 2283 端口映射到容器的 2283 端口。这意味着您可以通过 http://localhost:2283 访问 Immich 的 Web 界面。
    依赖 (depends_on): depends_on: [database] - 确保在启动 immich-server 之前,database 服务必须先启动并运行。
    重启策略 (restart): always - 无论退出状态如何,Docker 总是尝试重启该容器。
    健康检查 (healthcheck): disable: false - 启用默认的健康检查机制,以监控容器是否正常运行。
  5. immich-machine-learning (机器学习服务)
    作用: 负责执行图像分析任务,如人脸识别、物体识别、场景分类等。这些任务基于预先训练好的 AI 模型。
    镜像: ghcr.io/immich-app/immich-machine-learning:v2 - Immich 官方的 v2 版本机器学习服务镜像。
    卷 (Volumes):
  6. model-cache:/cache: 挂载一个名为 model-cache 的命名卷到容器的 /cache 路径,用于存放模型文件。
    接下来的三行将宿主机上特定的模型文件夹直接挂载到容器内的对应路径:
    ViT-B-32__openai: CLIP 模型,用于图像和文本匹配。
    XLM-Roberta-Large-Vit-B-16Plus: 另一个 CLIP 模型,支持多语言。
    facial-recognition: 人脸识别模型。
    环境变量 (Environment): 与 immich-server 类似,配置了相同的 Redis 和数据库连接信息,以便它能与主服务和数据库交互。
  7. database (PostgreSQL 数据库)
    作用: 存储 Immich 的所有非媒体数据,如用户账户、相册信息、文件元数据、人脸识别结果等。
    镜像: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:... - 这是一个经过特殊定制的 PostgreSQL 14 镜像,内置了 vectorchord 和 pgvectors 扩展,专门用于高效处理向量相似性搜索(这是 AI 图像分析功能的关键)。
    环境变量 (Environment): 设置了数据库的超级用户密码、用户名和默认数据库名。
    卷 (Volumes): - /Users/mac/.../db:/var/lib/postgresql/data - 持久化数据库文件到宿主机,防止容器删除后数据丢失。
    共享内存 (shm_size): 设置为 128mb,为数据库提供必要的共享内存空间,提升性能。
    重启策略 & 健康检查: 同样设置了 always 重启和启用健康检查。
    卷 (Volumes)
    model-cache: 这是一个命名卷 (named volume)。它不直接映射到宿主机的特定路径,而是由 Docker 在其管理的目录下创建和维护。在这里,它主要用于给机器学习服务提供一个持久化的空间来缓存模型或中间计算结果,保证容器重启后模型数据依然可用。
    网络 (Networks)
    networks: {}: 这里没有显式定义任何网络。Docker 会自动为这个 immich_server 项目创建一个默认的桥接网络 (bridge network)。immich-server 和 immich-machine-learning 通过 DB_HOSTNAME=database 这个环境变量,利用 Docker 的内部 DNS 功能,可以直接通过服务名 database 在这个默认网络上找到并连接到 immich_postgres 容器。
    总结: 这个 docker-compose.yml 文件定义了一个完整的 Immich 运行环境,包含一个 Web 服务器、一个机器学习分析服务和一个专用的 PostgreSQL 数据库。它通过卷实现了数据持久化,并通过环境变量配置了各组件间的连接信息。
]]>
0 https://blog.iletter.top/archives/520/#comments https://blog.iletter.top/feed/author/1/
Win11打开文件夹显示找不到应用程序 https://blog.iletter.top/archives/519/ https://blog.iletter.top/archives/519/ Sun, 04 Jan 2026 14:05:00 +0800 DelLevin
  • 按【 Win + R 】组合键,打开运行,输入【regedit】命令,按【确定或回车】打开注册表编辑器;
  • 注册表编辑器窗口,依次展开到以下路径:
    HKEY_CLASSES_ROOT\Folder\shell
  • 在【Shell】下通常默认有下图几项,如果有其它第三方软件命名项,我们可以【右键删除】;
  • 左侧列表中,点击【shell】,在右侧双击名称为【默认】的项;
  • 将数值数据【清空】,最后点击【确定】;
  • 以上设置完成后,重启电脑再看是否正常。
  • ]]>
    0 https://blog.iletter.top/archives/519/#comments https://blog.iletter.top/feed/author/1/