[{"authors":null,"categories":null,"content":"更新之后本来的配置没了，这里说明一下。Linux的输入候选横排看这里\nhttps://github.com/rime/ibus-rime/issues/42\n修改 ~/.config/ibus/rime/build/ibus_rime.yaml 文件，把里面的 horizontal: true 修改好，默认是false\n__build_info: rime_version: 1.13.1 timestamps: ibus_rime: 1735467225 ibus_rime.custom: 0 config_version: 1.0 style: cursor_type: insert horizontal: true inline_preedit: true preedit_style: composition 贴一下整体的文件咪\n","date":1779999431,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1779999572,"objectID":"5f15f362eb541cb080baa2feabd48fba","permalink":"https://acyanbird.github.io/BA-blog/post/rime%E8%BE%93%E5%85%A5%E6%B3%95%E6%A8%AA%E6%8E%92/","publishdate":"2026-05-28T21:17:11+01:00","relpermalink":"/BA-blog/post/rime%E8%BE%93%E5%85%A5%E6%B3%95%E6%A8%AA%E6%8E%92/","section":"post","summary":"Rime输入法横排","tags":null,"title":"Rime输入法横排","type":"post"},{"authors":null,"categories":null,"content":"看一下效果如何……之后就要折腾别的了 [ ] codex [ ] deepseek + cline + vscode [ ] 搞个服务器和域名？ [ ]\n","date":1779551663,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1779999572,"objectID":"5dab4cd3322cf13f2b57a96f45a5bc9f","permalink":"https://acyanbird.github.io/BA-blog/post/%E9%87%8D%E7%94%9F/","publishdate":"2026-05-23T16:54:23+01:00","relpermalink":"/BA-blog/post/%E9%87%8D%E7%94%9F/","section":"post","summary":"重生","tags":null,"title":"重生","type":"post"},{"authors":null,"categories":null,"content":"创建.sh文件 mkdir TestWild cd TestWild touch File1.txt touch File2.txt touch File3.txt touch File4.txt touch File1.csv touch File2.csv touch File3.csv touch File4.csv touch Anotherfile.csv touch Anotherfile.txt ls ls | wc -l 这个本来相用 for，不过有更好的办法 touch File{1..4}.txt\n","date":1759227248,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1779999572,"objectID":"ae7a5eed73b3f7345d5eb95be878cb82","permalink":"https://acyanbird.github.io/BA-blog/post/bash-intro/","publishdate":"2025-09-30T11:14:08+01:00","relpermalink":"/BA-blog/post/bash-intro/","section":"post","summary":"Bash Intro","tags":null,"title":"Bash Intro","type":"post"},{"authors":null,"categories":null,"content":"下劈下劈不下来，设置宏不要为难自己了…… autokey 下载\n然后看到有 blog介绍\n","date":1757493160,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1779999572,"objectID":"b9a4606331c3b10954cdd411191dbad6","permalink":"https://acyanbird.github.io/BA-blog/post/autokey-for-silk-song/","publishdate":"2025-09-10T16:32:40+08:00","relpermalink":"/BA-blog/post/autokey-for-silk-song/","section":"post","summary":"Autokey for Silk Song","tags":null,"title":"Autokey for Silk Song","type":"post"},{"authors":null,"categories":null,"content":"面试 150 题目 链接\n一些小tips 时间和空间复杂度 合并两个有序数组 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2，另有两个整数 m 和 n ，分别表示 nums1 和 nums2 中的元素数目。\n请你 合并 nums2 到 nums1 中，使合并后的数组同样按 非递减顺序 排列。\n注意：最终，合并后数组不应由函数返回，而是存储在数组 nums1 中。为了应对这种情况，nums1 的初始长度为 m + n，其中前 m 个元素表示应合并的元素，后 n 个元素为 0 ，应忽略。nums2 的长度为 n 。\n有三个解法，目前用 py 先写着吧比较简单\nclass Solution: def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -\u0026gt; None: \u0026#34;\u0026#34;\u0026#34; Do not return anything, modify nums1 in-place instead. \u0026#34;\u0026#34;\u0026#34; nums1[m:] = nums2 nums1.sort() 把 nums2 放到结尾，直接用快速排序\n或者直接建立一个 sorted 数组\nclass Solution: def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -\u0026gt; None: \u0026#34;\u0026#34;\u0026#34; Do not return anything, modify nums1 in-place instead. \u0026#34;\u0026#34;\u0026#34; sorted = [] p1, p2 = 0, 0 while p1 \u0026lt; m or p2 \u0026lt; n: if p1 == m: # put rest of p2 in sorted sorted.append(nums2[p2]) p2 += 1 elif p2 == n: sorted.append(nums1[p1]) p1 += 1 elif nums1[p1] \u0026lt; nums2[p2]:# smaller one into sorted sorted.append(nums1[p1]) p1 += 1 else: sorted.append(nums2[p2]) p2 += 1 nums1[:] = sorted 四种情况，在第一或者第二数组跑完之后把另一个数组直接往后加，下面的两个看哪个小就append\n27 移除元素 给你一个数组 nums 和一个值 val，你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。\n假设 nums 中不等于 val 的元素数量为 k，要通过此题，您需要执行以下操作：\n更改 nums 数组，使 nums 的前 k 个元素包含不等于 val 的元素。nums 的其余元素和 nums 的大小并不重要。 返回 k。 对于 Python3 使用双指针。说是删除，其实删除很费时间。\n双指针其实就是两个数，分别代表两个 index，表示数组中第几个数的意思。 比如这里，我们让 a 代表一个 index，b 代表一个index 然后我们让 a 一直往后移动，相当于 nums[a] 从数组第一个数遍历到最后一个数。 当且仅当我们发现 nums[a] != val 的时候，我们把这个数拷贝到 b 指向的位置，默认 b 是从 0 开始的，然后 b += 1 指向下一个位置。\n这样我们就保证了前 b 个数，就是我们要的结果。不重复的数。反正就是 a 不等于 val 就赋值到前面 b 指向的数字。然后计算 b 的大小就知道有不等于 val 的输出了\nclass Solution: def removeElement(self, nums: List[int], val: int) -\u0026gt; int: a = 0 b = 0 while a \u0026lt; len(nums): if nums[a] != val:# should move forward nums[b] = nums[a] b += 1 a += 1 return b 258 各位相加 给定一个非负整数 num，反复将各个位上的数字相加，直到结果为一位数。返回这个结果。\n示例 1:\n输入: num = 38 输出: 2 解释: 各位相加的过程为： 38 –\u0026gt; 3 + 8 –\u0026gt; 11 11 –\u0026gt; 1 + 1 –\u0026gt; 2 由于 2 是一位数，所以返回 2。\n这种题目总是不知道怎么做，其实先获得余数再一个个加回来就可以了\nclass Solution: def addDigits(self, num: int) -\u0026gt; int: while num \u0026gt;= 10:# 需要进入循环 sum = 0 while num:# until to 0 sum += num % 10 num //= 10 num = sum return num 当大于两位数进入循环，当 num 是 0 的时候跳出循环\n","date":1751257195,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1779999572,"objectID":"c2f586eb6337f135a31e9805af5bbe68","permalink":"https://acyanbird.github.io/BA-blog/post/leetcode%E5%88%B7%E9%A2%98/","publishdate":"2025-06-30T12:19:55+08:00","relpermalink":"/BA-blog/post/leetcode%E5%88%B7%E9%A2%98/","section":"post","summary":"LeetCode刷题","tags":null,"title":"LeetCode刷题","type":"post"},{"authors":null,"categories":null,"content":"大部分流程都是免面谈，记录一下需要面谈的。因为第一次签证是 \u0026lt; 14 周岁，需要去领事馆做生物信息记录啾。\nHOW TO 官方网站提供了一个整个流程图 首先要进行填表\n其中有几个错误我自己搞错了qwq，首先是\n","date":1749188639,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1779999572,"objectID":"d8267485ffa562995b8171cc1c41a231","permalink":"https://acyanbird.github.io/BA-blog/post/%E7%BE%8E%E5%9B%BD%E7%AD%BE%E8%AF%81%E9%9C%80%E9%9D%A2%E8%B0%88%E7%BB%AD%E7%AD%BE/","publishdate":"2025-06-06T13:43:59+08:00","relpermalink":"/BA-blog/post/%E7%BE%8E%E5%9B%BD%E7%AD%BE%E8%AF%81%E9%9C%80%E9%9D%A2%E8%B0%88%E7%BB%AD%E7%AD%BE/","section":"post","summary":"美国签证需面谈续签","tags":null,"title":"美国签证需面谈续签","type":"post"},{"authors":null,"categories":null,"content":"总之记录一下如果要求双色打印该如何建模。\n注意一下，因为使用 maker world（拓竹生态链）的话，Fusion 里的颜色是不会带走的。需要在 bamboo lab 重新上色一下。\n首先需要插入 - svg 图片，选择一个草图平面，可以把这个 svg拖上去。\n为了额外上色，需要把实体区分开来。我是放到草图之后先挖（推拉 - 切割），再推拉填充（新建实体而不是合并）\n然后右键，在选择外观。这里是拖拽上色，下面下载好了要拖动到上面的在此设计中。\n最后把其他的实体关闭显示，把设计拖动过去。\n之后导出为 3mf 和 Fusion 的 archive\n导入 3mf 之后用上面的颜料桶，上色不同的耗材丝。\n","date":1747732139,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1779999572,"objectID":"577bda9d81dd73878b27d59de6c6214f","permalink":"https://acyanbird.github.io/BA-blog/post/fusion%E5%8F%8C%E8%89%B2%E5%BB%BA%E6%A8%A1/","publishdate":"2025-05-20T17:08:59+08:00","relpermalink":"/BA-blog/post/fusion%E5%8F%8C%E8%89%B2%E5%BB%BA%E6%A8%A1/","section":"post","summary":"Fusion双色建模","tags":null,"title":"Fusion双色建模","type":"post"},{"authors":null,"categories":null,"content":"在 Debian 上安装和使用 Docker 在 Debian 上安装和使用 Docker 的步骤比较简单。以下是详细指南：\n安装 Docker 更新包索引：\nsudo apt update 安装必要的依赖包：\nsudo apt install apt-transport-https ca-certificates curl gnupg lsb-release 添加 Docker 官方 GPG 密钥：\ncurl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg 设置稳定版仓库：\necho \u0026#34;deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable\u0026#34; | sudo tee /etc/apt/sources.list.d/docker.list \u0026gt; /dev/null 更新包索引并安装 Docker：\nsudo apt update sudo apt install docker-ce docker-ce-cli containerd.io 验证安装：\nsudo docker run hello-world 配置用户权限（可选） 默认情况下，Docker 命令需要 root 权限。为了避免每次使用 sudo，可以将当前用户添加到 docker 组：\nsudo usermod -aG docker $USER 注销并重新登录，或运行以下命令应用组更改：\nnewgrp docker 基本 Docker 使用 查看 Docker 信息：\ndocker info 搜索镜像：\ndocker search ubuntu 拉取镜像：\ndocker pull ubuntu 查看所有镜像：\ndocker images 运行容器：\ndocker run -it ubuntu bash 查看正在运行的容器：\ndocker ps 查看所有容器（包括已停止的）：\ndocker ps -a 启动、停止、重启容器：\ndocker start 容器ID或名称 docker stop 容器ID或名称 docker restart 容器ID或名称 删除容器：\ndocker rm 容器ID或名称 删除镜像：\ndocker rmi 镜像ID或名称 使用 Docker Compose（可选） 如果需要管理多个容器，可以安装 Docker Compose：\nsudo apt install docker-compose 通过创建 docker-compose.yml 文件来定义和运行多容器应用程序。\n安装 ros2 docker run -itd \\ --name=ros_humble \\ --privileged \\ --network=host \\ --ipc=host \\ --pid=host \\ -e DISPLAY=$DISPLAY \\ -v /tmp/.X11-unix:/tmp/.X11-unix \\ -v /dev:/dev \\ -v $HOME/ros_ws:/root/ros_ws \\ osrf/ros:humble-desktop-full \\ bash v 的作用 数据双向同步：宿主机目录的修改会实时反映到容器内，反之亦然。\n路径映射：格式为 -v /宿主机路径:/容器内路径，例如：\n","date":1744125074,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1779999572,"objectID":"d0f4b00ec7ae1e23c02cd808403cf00f","permalink":"https://acyanbird.github.io/BA-blog/post/%E4%BD%BF%E7%94%A8docker/","publishdate":"2025-04-08T16:11:14+01:00","relpermalink":"/BA-blog/post/%E4%BD%BF%E7%94%A8docker/","section":"post","summary":"使用docker","tags":["docker"],"title":"使用docker","type":"post"},{"authors":null,"categories":null,"content":"","date":1743391944,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1779999572,"objectID":"0a062df1e485df38235ea8b67d9f2042","permalink":"https://acyanbird.github.io/BA-blog/post/bugg%E7%9B%B8%E5%85%B3%E8%AE%BA%E6%96%87%E9%98%85%E8%AF%BB/","publishdate":"2025-03-31T11:32:24+08:00","relpermalink":"/BA-blog/post/bugg%E7%9B%B8%E5%85%B3%E8%AE%BA%E6%96%87%E9%98%85%E8%AF%BB/","section":"post","summary":"Bugg相关论文阅读","tags":null,"title":"Bugg相关论文阅读","type":"post"},{"authors":null,"categories":null,"content":"打印 bamboo studio 然后 自走桌或者 soliwood 设计建模\n","date":1741847400,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1779999572,"objectID":"213b0ee058fbf0fa76f8ef3099756c1f","permalink":"https://acyanbird.github.io/BA-blog/post/3d%E6%89%93%E5%8D%B0/","publishdate":"2025-03-13T14:30:00+08:00","relpermalink":"/BA-blog/post/3d%E6%89%93%E5%8D%B0/","section":"post","summary":"3d打印","tags":null,"title":"3d打印","type":"post"},{"authors":null,"categories":null,"content":"跑通这里给的 example，注意一下 clone 需要 git-lfs 不然大文件无法下载，不知道 macos 和 window 是否有不同。 seeed也有不错的文档\n安装环境 安装之后记住默认安装路径，在默认 activate 上面选择 否 （不然每一次都会开启，会拖慢打开 Terminal 的速度） conda create -y -n lerobot python=3.10 之后需要 conda init 来起始。把之前的 conda init 的代码块的注释掉\nexport PATH=\u0026#34;/home/acy/miniconda3/bin:$PATH\u0026#34; alias lr=\u0026#34;source ~/miniconda3/bin/activate \u0026amp;\u0026amp; conda activate lerobot\u0026#34; 把 miniconda 的可执行文件放在 path 变量下，之后使用alias，每次在 lerobot 的文件夹下就可以activate这个环境。然后如果要退出的时候连续输入 conda deactivate\n进入到项目路径(比如 cd 到指定路径），然后安装依赖 pip install -e \u0026#34;.[feetech]\u0026#34;\n如果是linux发行版\nconda install -y -c conda-forge ffmpeg pip uninstall -y opencv-python conda install -y -c conda-forge \u0026#34;opencv\u0026gt;=4.10.0\u0026#34; 如果有遇到 ssl 认证问题，可以关闭 ssl 证书认证（虽然不安全但是work） conda install -y -c conda-forge \u0026#34;opencv\u0026gt;=4.10.0\u0026#34;\n寻找机械臂串口 首先按照example的视频里面的做法，把usb和电源线接上。 python lerobot/scripts/find_motors_bus_port.py 跑一次找到这次是什么串口，Linux大概是是 /dev/ttyACM0 可以通过 sudo chmod 666 /dev/ttyACM0 给予权限（如果权限不够的话。\n修改串口的 config file，在 robot 的configs.py 里面 lerobot/common/robot_devices/robots/configs.py\nleader_arms: dict[str, MotorsBusConfig] = field( default_factory=lambda: { \u0026#34;main\u0026#34;: FeetechMotorsBusConfig( # port=\u0026#34;/dev/tty.usbmodem58760431091\u0026#34;, 这个大概是Windows的？ port = \u0026#34;/dev/ttyACM0\u0026#34;, motors={ calibrate 这个应该是复位？一开始依赖库版本不对，额外安装 conda install -c conda-forge jpeg libtiff\n总是出问题咱还是从组装开始吧 总结一下软件，无论用什么方法设置好 miniconda （以及不要让他每次都自动启动），安装依赖，如果不行关闭 ssl 验证，Debian 12 可能需要额外安装 conda install -c conda-forge jpeg libtiff\n注意一下如果 mime 无法播放就关闭硬件加速。\n组装 这次测试了一下 follower arm 没有问题，组装一下 leader arm 在 Linux 系统里面为了不要每次 chmod 666，将当前用户加入 dialout sudo usermod -aG dialout $USER\n然后连接每一个 motor，我是\npython lerobot/scripts/configure_motor.py \\ --port /dev/ttyACM0 \\ --brand feetech \\ --model sts3215 \\ --baudrate 1000000 \\ --ID 1 注意不用扭上 horn，直接一个个标注好（记得标号）就可以开始拼装了。不过请拿个label，程序是按照 motor 上的 ID 控制的，如果装错了只能重来\n开始拼装 推荐先通读文字和视频，这两个都包含一部分重要信息。特别注意根据图片安装线的左右免得要重装\n先装从臂（因为不用修改电机，有钳子的那个）再改主臂，这样不用改电机\n除了使用 M2 * 5 的螺丝，注意不要把电机的螺丝拧下来装了（捂脸）\n在第五步使用两个螺丝从侧面打的时候，可以选用 M2 6 然后狠狠地打进去，需要打掉一点部件才能比较好的 fit in\n把 motor horn 先摁在电机上再打螺丝，注意孔洞位置。可以旋转一下arm把孔洞露出来，就能把螺丝打进去了。\n装3 号电机的时候记得先插线。\n装主臂 把已经标记好的 ID 1-6 电机打开四个螺丝，拆掉一个齿轮再还原 小 tips 有304纯色螺丝钉优先使用，黑色没有这个好，如果有内六角也优先使用，不容易滑丝。不过这个机子打印孔还是适合黑色的螺丝\n组装完毕测试 校准从臂\npython lerobot/scripts/control_robot.py \\ --robot.type=so100 \\ --robot.cameras=\u0026#39;{}\u0026#39; \\ --control.type=calibrate \\ --control.arms=\u0026#39;[\u0026#34;main_follower\u0026#34;]\u0026#39; 这个应该已经失效了不推荐使用，这个file来自 lerobot/common/robot_devices/robots/ 可以通过call 里面的 run_arm_auto_calibration_so100 先活动一下手臂（ 如果做到一半卡死了断电就可以了\n校准主臂\npython lerobot/scripts/control_robot.py \\ --robot.type=so100 \\ --robot.cameras=\u0026#39;{}\u0026#39; \\ --control.type=calibrate \\ --control.arms=\u0026#39;[\u0026#34;main_leader\u0026#34;]\u0026#39; .cache/calibration/so100 下面是校准文件，如果重新较重应该会直接覆写，或者你可以直接删除\n校准需要 校准的基本思维是做出相同的动作，readme 里的三张图片不是很明显，可以通过视频解决。不过也不用很严格按照标准动作，只用保证两个机械臂是一致动作的就可以。第一张闭嘴，第二张嘴，第三张闭嘴。如果没有校准正确再来就可以。\nteleoperate 的时候如果动作太猛可能会失去连接，请重启（卡住了记得断电），如果一致显示 lose connect，检查是不是有线松了或者被崩断了。\n","date":1741845965,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1779999572,"objectID":"46c107ed90ff6bd47a9257348eb3ccab","permalink":"https://acyanbird.github.io/BA-blog/post/lerobot-%E5%88%9D%E5%A7%8B%E5%8C%96/","publishdate":"2025-03-13T14:06:05+08:00","relpermalink":"/BA-blog/post/lerobot-%E5%88%9D%E5%A7%8B%E5%8C%96/","section":"post","summary":"Lerobot 初始化","tags":["清华实习","具身"],"title":"Lerobot 初始化","type":"post"},{"authors":null,"categories":null,"content":"官方下载确实没办法使用，因为 libflac8 无法使用。所以自己打包一下\n寻找了一下命令，如果不管 debian 那边的标准，直接用 ar r mypackage-42.deb debian-binary control.tar.gz data.tar.gz 就可，尝试一下？\n","date":1740709257,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1779999572,"objectID":"518be953b65578f6e59e9106162ae511","permalink":"https://acyanbird.github.io/BA-blog/post/%E6%89%93%E5%8C%85robrix/","publishdate":"2025-02-28T10:20:57+08:00","relpermalink":"/BA-blog/post/%E6%89%93%E5%8C%85robrix/","section":"post","summary":"打包robrix","tags":["rust","makepad"],"title":"打包robrix","type":"post"},{"authors":null,"categories":null,"content":"尝试用 react 和 vue 风格来制作一个小应用。确实大部分的 example 都没有什么注释呜呜……在这里先打草稿吧。\n","date":1739943696,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1779999572,"objectID":"6c16856fc5f29491c12f04ba4945fcc9","permalink":"https://acyanbird.github.io/BA-blog/post/makepad%E7%9A%84%E5%BF%AB%E9%80%9F%E5%90%AF%E5%8A%A8/","publishdate":"2025-02-19T13:41:36+08:00","relpermalink":"/BA-blog/post/makepad%E7%9A%84%E5%BF%AB%E9%80%9F%E5%90%AF%E5%8A%A8/","section":"post","summary":"Makepad的快速启动","tags":["rust","makepad"],"title":"Makepad的快速启动","type":"post"},{"authors":null,"categories":null,"content":"首先照抄一下开源社的啾叽\n先按 Windows logo 键 + X 打开快捷菜单，再按英文 I 键打开 Windows 命令行终端，最后输入两条命令即可完成 DeepSeek 安装、启动：\nwinget install Ollama.Ollama ollama run deepseek-r1:7b ollama 挺好的，开搞！\n","date":1739764354,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1779999572,"objectID":"32f0d7779a2ba108cf5f20f6fdec45e1","permalink":"https://acyanbird.github.io/BA-blog/post/%E6%9C%AC%E5%9C%B0%E5%AE%89%E8%A3%85deepseek/","publishdate":"2025-02-17T11:52:34+08:00","relpermalink":"/BA-blog/post/%E6%9C%AC%E5%9C%B0%E5%AE%89%E8%A3%85deepseek/","section":"post","summary":"本地安装deepseek","tags":null,"title":"本地安装deepseek","type":"post"},{"authors":null,"categories":null,"content":"贡献方式 项目地址\n贡献指南\nPR 标题遵循 Conventional Commits\n开发环境搭建 install pnpm, sudo npm install -g pnpm 之后 clone preview branch\npnpm install # 安装依赖 pnpm run dev # 启动项目 给个 example 比如说要 update 这里的 online example 那么fork到本地，添加 branch 比如\ngit checkout -b update/change-online-example-links #修改内容之后 git add git commit -m \u0026#34;update: change online example links\u0026#34; 当然也可以在 PR 的 description 里面加入内容 ","date":1739757308,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1779999572,"objectID":"7d861db3a3291822cba0226a1d7ea954","permalink":"https://acyanbird.github.io/BA-blog/post/%E8%B4%A1%E7%8C%AEmakepad%E6%96%87%E6%A1%A3/","publishdate":"2025-02-17T09:55:08+08:00","relpermalink":"/BA-blog/post/%E8%B4%A1%E7%8C%AEmakepad%E6%96%87%E6%A1%A3/","section":"post","summary":"贡献makepad文档","tags":null,"title":"贡献makepad文档","type":"post"},{"authors":null,"categories":null,"content":"目前来看他们是为了这个项目执行一个开源的解决方案，目前有三篇论文，最新的着力点在数据分析上面，使用声音辨识异常声响来报警。\nswift recorder 43KHz 3周或者更多，3个 D cell battery（那是啥）\n有了更简单的实现了，在 IEEE\n把这个和 raven 结合起来，然后直接做好接口给 ebird 进行 submit 不知道是否可行……\n给观鸟人特供的recorder，夜晚收音以观测夜鸟版？\n在此之前也有一个 solo d £120 (including a 5-day battery, memory card and a really good microphone). The cost without battery and memory card is £83 (for comparison with commercial systems) 5天电池续航？\nbugg 本身不提供供电选项，推荐亲亲购买额外电池或者太阳能板子（不要啊）（话说车载电池多少钱来着）\n所以 bugg 系统总体续航未声明，单价80美刀这样？\nbugg参数 开源声学网站集合 https://ecosound-web.de/ecosound_web/\n突破方向大概是可以deliver的低成本，并且有平台支持的处理？顺便可以在为标记地区比如中国使用？\n毕竟我之前写了希望开发观鸟工具，所以采取低成本的后院录音模块（可以对比一下康奈尔的照相喂鸟器？），用来采集叫声。然后通过拉通当地观鸟人，让他们帮助标记鸟叫来采集数据\nbird weather 希望帮助构建的是这个！\n先 focus on，低成本开源硬件的生态检测工具，有 live streaming 功能，可以自建后端或者使用其他的后端比如 birdweather，采集数据。可以接其他传感器记录温度，风速等气候数据\nesp8266或8285 rp2040 通讯模组 RedCap模组 RG255AA\n主控 sensor 气温，风速，power supply 一个。本地模型，挑选跟声音不一样的部分再上传，把后端替换成更加精确解析的AI，能够额外分类。\n降低成本，推广给观鸟人，收集更多有价值的数据。\n由于我有观鸟经验，方便的开源信息收集是缺失的。服务能够拓展到其他国家，给这个发展出力。\n可以把这篇文章提到的 AI 换成更加高级的AI（这个？），不过目前的可以在本地端跑，上传异常以及生物数据，开放给有需要的人标注。在线上服务器，结合其他的比如 birdnet（？）来进行更详细的输出。同时为了众包科学，可以开放这些有用的声音给感兴趣的人进行标注，提供更多信息。\n希望能够实现的是，能够24小时在线的 monitoring，但是不会所有的声音进行上传，通过pnas那篇文章使用的，进行噪音和物种分类的 AI 分析智能挑选声音上传，大部分声音应该是没什么用的，当然可以压缩存储起来。同时提供传感器接口，可以监测温度风速等其他数据。\n当然如果有实时监控需求也可以 fall back。\n查看一下树莓派车载电池能否运行更好的，好的mic更好的收音设备，前面是要进行硬件改良。\n在后端做对前端进行粗略打包的声音分析的AI，开放有意义的片段给大家打标记（particpatory science），用这个东西继续训练 AI。目前前端用的是 CNN，改进一下针对这个进行分类。\n改进方案 希望基于目前的方案进行改进，因为如果部署在野外传输的难度比较大，基于树莓派的过剩性能可以在本地端先跑一次上面提到的AI，首先剥离有用（比如噪音和生物活动声音）上传，剩下的可以本地压缩。之后在服务器端再用更好的AI方法实现进一步的分类，例如这是什么噪音和物种分类等。之后把生物叫声筛选出来之后，如果没有充足数据可以制作网站，让大家进行声音的标注区分，用来更好地训练模型！\n或者直接做 sound\n声学收音 MB sonics ambisonics，要多加麦克风，高保真收集声音，声音的指向性。麦克风阵列（计算机算法），能耗（！）。voice activity detection! 当前是人声还是不是人声。Knowles V2S200D\n麦克风更换成 DIGITAL VOICE VIBRATION SENSOR 下一个演示视频没有声孔，无惧防水！为了指向性问题。mems 麦克风。\n需要更换 麦克风以及收音（测试什么声音更好），可以把 MEMS sound wave pass through the hole, so ther is Acoustic membrane prevent water come in, but also decrease sensitivity. or increase robustness.\n传感器接口，都是树莓派了，多搞点也没啥 电池！储能以及光伏设备！看起来必须是要使用太阳能\n查看树莓派性能是否可以改进\n如何回答 1️⃣为什么申请这个项目\n我从初中开始喜欢\n2️⃣读完这个MSc项目后，打算干点儿啥\n中国观鸟市场的空白很大！如果可以的话希望ebird能够在境内使用，进行一些国内观鸟工具不足的补齐，或者对于康奈尔实验室提供的套件比如 ebird 什么的，进行本地化（去掉Google 服务，进行鸟种翻译什么的）。作为众包科学只有大家参与了才有足够的数据！所以我看到 bugg 之后觉得这是一个很有潜力的项目\n3️⃣最近看了什么research paper及追问\n4️⃣最近校外参加了哪些活动\n京东方的 嵌入式 Linux 驱动，deepin，基金公司以及 rust 开发。还有业余无线电\n5️⃣在MSc阶段，想着重做哪方面的研究\n我想要\n传统生态 使用红外摄像机进行分析，要进行全类型监测不太可能，可能就是上鸟类了（）compell，3G 是没问题的。自己假设无线网络（？）自动数据采集器。太阳能电池。\n","date":1737986390,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1779999572,"objectID":"539a64e1c66df6d3baa027733e58243f","permalink":"https://acyanbird.github.io/BA-blog/post/bugg%E9%A1%B9%E7%9B%AE%E4%BB%AA%E5%99%A8%E8%AE%B0%E5%BD%95%E4%BB%A5%E5%8F%8A%E6%94%B9%E8%BF%9B/","publishdate":"2025-01-27T21:59:50+08:00","relpermalink":"/BA-blog/post/bugg%E9%A1%B9%E7%9B%AE%E4%BB%AA%E5%99%A8%E8%AE%B0%E5%BD%95%E4%BB%A5%E5%8F%8A%E6%94%B9%E8%BF%9B/","section":"post","summary":"Bugg项目仪器记录以及改进","tags":null,"title":"Bugg项目仪器记录以及改进","type":"post"},{"authors":null,"categories":null,"content":"为了入职加油！\n安装 makepad clone 到 rik分支，直接按照 MacOS / PC 来安装就是了，下面的 Linux 是为了没有 X11 环境使用的……目前在 X11 可以使用，不知道wayland怎么样？\ncd ~/projects/makepad cargo run -p makepad-example-simple 然后就可以看到 running 了，不过一般来说 dock 那边没有出现图标……\n结论是其他 robius 的 sample 在 Debian 下都没法跑，回到 sample 下进行工作吧！\nhello world 使用 simple 改装一下？simple 的 lib 和 main 只是简单进行了声明\nfn main(){ makepad_example_simple::app::app_main() } // ...existing code... pub use makepad_widgets; pub mod app; 然后下面是主要的关节\nuse makepad_widgets::*; live_design!{ use link::theme::*; use link::shaders::*; use link::widgets::*; App = {{App}} { ui: \u0026lt;Root\u0026gt;{ // 这里的 ui 是 Root 组件的引用 main_window = \u0026lt;Window\u0026gt;{ body = \u0026lt;View\u0026gt;{ flow: Down, // 子组件按垂直方向排列 spacing: 10, // 子组件之间的间距为 10 像素 align: { x: 0.5, // 水平方向居中对齐 y: 0.5 // 垂直方向居中对齐 }, show_bg: true, draw_bg:{ fn pixel(self) -\u0026gt; vec4 { let center = vec2(0.5, 0.5); let uv = self.pos - center; let radius = length(uv); let angle = atan(uv.y, uv.x); let color1 = mix(#f00, #00f, 0.5 + 10.5 * cos(angle + self.time)); let color2 = mix(#0f0, #ff0, 0.5 + 0.5 * sin(angle + self.time)); return mix(color1, color2, radius); } } b0= \u0026lt;Button\u0026gt; { text: \u0026#34;Click me 2\u0026#34; draw_text:{color:#fff} } button1 = \u0026lt;Button\u0026gt; { text: \u0026#34;Click me 123\u0026#34; draw_text:{color:#fff} } button2 = \u0026lt;Button\u0026gt; { text: \u0026#34;Click me 345\u0026#34; draw_text:{color:#fff} } } } } } } app_main!(App); #[derive(Live, LiveHook)] pub struct App { #[live] ui: WidgetRef, // 引用用户界面组件的根部件 #[rust] counter: usize, // 计数器，用于记录按钮点击次数 } impl LiveRegister for App { fn live_register(cx: \u0026amp;mut Cx) { crate::makepad_widgets::live_design(cx); // 注册用户界面设计 } } impl MatchEvent for App{ fn handle_actions(\u0026amp;mut self, _cx: \u0026amp;mut Cx, actions:\u0026amp;Actions){ if self.ui.button(id!(button1)).clicked(\u0026amp;actions) { // 检查 button1 是否被点击 self.counter += 1; // 增加计数器的值 } } } impl AppMain for App { fn handle_event(\u0026amp;mut self, cx: \u0026amp;mut Cx, event: \u0026amp;Event) { self.match_event(cx, event); // 匹配和处理事件 self.ui.handle_event(cx, event, \u0026amp;mut Scope::empty()); // 处理用户界面事件，不匹配上下文 } } 结合中文文档来看的话，LiveRegister 和 AppMain 是必须要上来的，将 CX 这个核心进行注册，然后根据上下文处理事件。不过如果需要更新的话还得绑定其他的……这一次的话就直接在root下面写 Widget……这个是Widget吧？\n之后出来是这样的，同时也可以将控件拆开 Widget 进行操作，这里用 hello Widget （顺便说一下 makepad 能run 好像是因为他用内置的 Widget，自己用的话会因为 x11 不工作编译不了（还是我用错了啥））\n使用多个文件 然后这里也可以把 Widget 单独分开来使用，参考 hello widgets\nuse makepad_widgets::*; live_design!( use link::theme::*; use link::shaders::*; use link::widgets::*; pub Ui = {{Ui}} { // 使用双花括号引用和实例化 Ui 结构体 align: {x: 0.5, y: 0.5} // 水平和垂直方向居中对齐 flow: Down, // 子组件按垂直方向排列 spacing: 10, // 子组件之间的间距为 10 像素 body = \u0026lt;Label\u0026gt; { // 定义一个 Label 组件 text: \u0026#34;Hello, world!\u0026#34; // 标签文本 draw_text: { text_style: {font_size: 12.0}, // 文本样式，字体大小为 12.0 } } b0= \u0026lt;Button\u0026gt; { // 按钮组件 text: \u0026#34;Click me 2\u0026#34; draw_text:{color:#fff} } } ); #[derive(Live, LiveHook, Widget)] pub struct Ui { #[deref] deref: View, // 引用 View 组件 } impl Widget for Ui { fn handle_event(\u0026amp;mut self, cx: \u0026amp;mut Cx, event: \u0026amp;Event, scope: \u0026amp;mut Scope) { self.deref.handle_event(cx, event, scope); // 处理事件 } fn draw_walk(\u0026amp;mut self, cx: \u0026amp;mut Cx2d, scope: \u0026amp;mut Scope, walk: Walk) -\u0026gt; DrawStep { self.deref.draw_walk(cx, scope, walk) // 绘制组件 } } 我在里面添加了一些别的，然后在 app 里面直接引用 Ui\nuse makepad_widgets::*; live_design!( use link::theme::*; use link::shaders::*; use link::widgets::*; use crate::ui::*; // 引用 ui.rs 文件中的内容 App = {{App}} { // 使用双花括号引用和实例化 App 结构体 ui:\u0026lt;Root\u0026gt;{ // 定义 Root 组件 \u0026lt;Window\u0026gt;{ // 定义 Window 组件 body = \u0026lt;Ui\u0026gt; {} // 使用 Ui 组件 } } } ); #[derive(Live, LiveHook)] struct App { #[live] ui: WidgetRef, // 引用用户界面组件的根部件 } impl AppMain for App { fn handle_event(\u0026amp;mut self, cx: \u0026amp;mut Cx, event: \u0026amp;Event) { self.ui.handle_event(cx, event, \u0026amp;mut Scope::empty()); // 处理事件 } } impl LiveRegister for App { fn live_register(cx: \u0026amp;mut Cx) { makepad_widgets::live_design(cx); crate::ui::live_design(cx); // 注册 ui.rs 中的 live_design } } app_main!(App); // 定义应用程序的入口点 这样就可以，更加有条理的运行。看这两个例子都用了 root，然后是 Window 组件！\n分析 robrix 分割符们~\nDivider FillerX FillerY LineH 都在 helpers.rs 里面，尝试了 Divider，和 md 的分隔符类似？ 每一个组件都有 draw_bg login 是单独出来的可以先看看这个……但是没法退出了！RobrixTextInput 是自定义组件，继承自 TextInput（反正没法输入中文还是上游的锅）\nRobrixTextInput 对，上游的textinput也无法输入中文……来自 shared/styles.rs 稍微猜猜看，可能是没有 IME 支持？可惜以前没有研究过太多，总之是对于生成的，可以输入文字的框，颜色大小进行define RobrixIconButton 继承自 Button - IconButton shared/icon_button.rs 更改了一些颜色和布局，更适合 UI SsoButton 封装 SsoImage 的，可以点击，手势是爪子 SsoButton = \u0026lt;RoundedView\u0026gt; { width: Fit, height: Fit, cursor: Hand, visible: true, padding: 10,//按钮内容与按钮边框之间会有 10 像素的间距。 // margin: 10, margin: { left: 16.6, right: 16.6, top: 10, bottom: 10} draw_bg: { border_width: 0.5, border_color: (#6c6c6c), color: (COLOR_PRIMARY) } } SsoImage 继承 Image,也是限定了大小布局（应该换个更加高清的 png 图片的）和 SsoButton 一起结合起来使用 facebook_button = \u0026lt;SsoButton\u0026gt; { image = \u0026lt;SsoImage\u0026gt; { source: dep(\u0026#34;crate://self/resources/img/facebook.png\u0026#34;) } } 像这样\n然后是 welcome screen\nMessageHtml html_or_plaintext.rs 继承自 HTML 标签，对于 HTML 的行为进行了定义？ robrix bug 记录 一边学习一边找到bug\n首先是图标的分辨率不够，sso我记得有 svg 版本？就算没有也可以找清楚一点的。robrix logo应该可以做 svg，看看难度\n聊天的时候点击其他人图片可以显示，但是没法退出了，摁叉叉没用要 ESC 自己的图像变形了! 反正 cinny 那边是没问题的\n单独聊天可以关闭，集体聊天点击会直接蹦跶出 reply 没法关闭……应该是 reply 这个占据太多了！所以导致查看界面这里被遮盖了？\n是的，就是因为 reply 的逻辑优先（？）  …","date":1737545052,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1779999572,"objectID":"acd349d8d250cf25d8d51cca0b18b1f0","permalink":"https://acyanbird.github.io/BA-blog/post/makepad101/","publishdate":"2025-01-22T19:24:12+08:00","relpermalink":"/BA-blog/post/makepad101/","section":"post","summary":"Makepad101","tags":null,"title":"Makepad101","type":"post"},{"authors":null,"categories":null,"content":"放一下最新链接 guide\nummmm 看到 proposal 这里有关于 2048 游戏\n然后看到大概流程是这样\n$ tar -xzmf debhello-0.0.tar.gz $ cd debhello-0.0 $ debmake ... manual customization $ debuild ... 首先要保证这个包最后包含版本号（不允许下划线），然后制作 tar.gz 包（反正是展开的的压缩包都需要有啦），之后进入目录执行 debmake -x1\ndebuild dpkg-buildpackage -b 这是比较宽松的打包法则，不被Debian限制嗯……\n前后的script\n去提问的地方 在 help resources 这里\n查找依赖 生成了 deb 包之后，使用 dpkg -f 2048-in-terminal_0.0-1_amd64.deb pre-depends depends recommends conflicts breaks 这个命令查找，把 deb 换成对应的包名，在 control 的 depend 下更新一下\n更新 Copyright 这个可以先不管……\n好像 quilt 不知道怎么做？反正 install 是之前的，remove 应该也有 script postrm\n移除软件 除了 install 之后要进行 postrm，在 remove 之前进行的，反正我叫 ChatGPT 生成一下~\n#!/bin/sh set -e # Commands to run after the package is removed echo \u0026#34;Running postrm script for 2048-in-terminal\u0026#34; rm -f /usr/games/2048-in-terminal exit 0 update\n","date":1736781288,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1779999572,"objectID":"bfa497b528ab49f5c117b55b597a0927","permalink":"https://acyanbird.github.io/BA-blog/post/debian-%E6%89%93%E5%8C%85-2048%E6%B8%B8%E6%88%8F/","publishdate":"2025-01-13T23:14:48+08:00","relpermalink":"/BA-blog/post/debian-%E6%89%93%E5%8C%85-2048%E6%B8%B8%E6%88%8F/","section":"post","summary":"Debian 打包 2048游戏","tags":null,"title":"Debian 打包 2048游戏","type":"post"},{"authors":null,"categories":null,"content":"用的最久的输入法！雾凇~虽然但是，并没有很深入地进行过设置，在 deepin 上没有被打包过（或许因为是已经有了内置的搜狗输入罢），但是还是很怀念，于是安装一下。\n从源码编译 主流发行版都有打包好的，所以这次从源码编译看看——下载源码。直接 git clone：\nCheckout the repository: git clone https://github.com/rime/ibus-rime.git cd ibus-rime If you haven\u0026#39;t installed dependencies (librime, rime-data), install those first: git submodule update --init (cd librime; make \u0026amp;\u0026amp; sudo make install) (cd plum; make \u0026amp;\u0026amp; sudo make install) Finally: make sudo make install —— 然后子模块初始化失败，单独 clone 之后进行安装，分别是 librime 和 plum 后面那个是安装 recipe 的东西，进入目录执行 make \u0026amp;\u0026amp; sudo make install\n这俩都依赖 boost 啊…… 在这里是 libboost-all-dev, libgoogle-glog-dev, libgtest-dev, libyaml-cpp-dev, libleveldb-dev, libmarisa-dev, libopencc-dev\n","date":1736320055,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1779999572,"objectID":"53a01dbcad21a8c1ddd03951629b0ffb","permalink":"https://acyanbird.github.io/BA-blog/post/deepin%E5%AE%89%E8%A3%85ibus-rime%E4%BB%A5%E5%8F%8Arime-ice/","publishdate":"2025-01-08T15:07:35+08:00","relpermalink":"/BA-blog/post/deepin%E5%AE%89%E8%A3%85ibus-rime%E4%BB%A5%E5%8F%8Arime-ice/","section":"post","summary":"Deepin安装ibus Rime以及rime Ice","tags":null,"title":"Deepin安装ibus Rime以及rime Ice","type":"post"},{"authors":null,"categories":null,"content":"玲珑是统信软件自研的开源软件包格式，用于替代 deb、rpm等包管理工具，实现了应用包管理、分发、容器、集成开发工具等功能。总之来用用看怎么打包！\n打包的前提是进行构建……首先构建一遍 sample project bittorrent 吧\n构建qBittorrent 首先在GitHub仓库拿到他的源代码，然后查看INSTALL文件\n1) Install these dependencies: - Boost \u0026gt;= 1.76 - libtorrent-rasterbar 1.2.19 - 1.2.x || 2.0.10 - 2.0.x * By Arvid Norberg, https://www.libtorrent.org/ * Be careful: another library (the one used by rTorrent) uses a similar name - OpenSSL \u0026gt;= 3.0.2 - Qt 6.5.0 - 6.x - zlib \u0026gt;= 1.2.11 - CMake \u0026gt;= 3.16 * Compile-time only - Python \u0026gt;= 3.9.0 * Optional, run-time only * Used by the bundled search engine 可以通过 dpkg -l | grep \u0026lt;包名\u0026gt;检索一下是否安装（然后发现有一大堆没有安装）ummmm那先开始好了。先更新一下软件包罢……\n然后把 boost 装好就可以，我这里安装的是 libboost-all-dev 首先安装 libtorrent\ncmake -DCMAKE_BUILD_TYPE=Release\\ -DCMAKE_INSTALL_PREFIX=$PREFIX .. make -j$(nproc) sudo make install 这样就安装好了 libtorrent。\n之后构建 qBittorrent，安装 libssl-dev, qt6-base-dev, qt6-svg-dev,qt6-tools-dev, libxkbcommon-dev, qt6-base-private-dev\n","date":1736316780,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1779999572,"objectID":"1f3a831dbd0db21a3aa055eb2a545178","permalink":"https://acyanbird.github.io/BA-blog/post/%E4%BD%BF%E7%94%A8%E7%8E%B2%E7%8F%91%E6%9E%84%E5%BB%BAqbittorrent/","publishdate":"2025-01-08T14:13:00+08:00","relpermalink":"/BA-blog/post/%E4%BD%BF%E7%94%A8%E7%8E%B2%E7%8F%91%E6%9E%84%E5%BB%BAqbittorrent/","section":"post","summary":"使用玲珑构建qBittorrent","tags":null,"title":"使用玲珑构建qBittorrent","type":"post"},{"authors":null,"categories":null,"content":"这个和x64版本不太一样，installer 里面并没有自带 v2ray-core，所以要两个分别放\n首先下载 v2raya，然后是 xray ，之后使用 xray-install 脚本，在 xray 的 README 里面。\n使用 sudo bash install-release.sh help 查看一下，就有安装本地文件的选项 -l，当然你也可以顺手带上 geoip.dat 和 geosite.dat，大概在 /usr/local/share/xray 这里\n","date":1735873230,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1779999572,"objectID":"6b250c33b09d7ea327cd5a69ec2e9d35","permalink":"https://acyanbird.github.io/BA-blog/post/deepin-linux-riscv-v2raya-%E5%AE%89%E8%A3%85/","publishdate":"2025-01-03T11:00:30+08:00","relpermalink":"/BA-blog/post/deepin-linux-riscv-v2raya-%E5%AE%89%E8%A3%85/","section":"post","summary":"Deepin Linux Riscv V2raya 安装","tags":["v2ray"],"title":"Deepin Linux Riscv V2raya 安装","type":"post"},{"authors":null,"categories":null,"content":"每次新开都需要配置一下……在v2raya 的release界面 下载后面有 deb 和 rpm 包的那个…… 然后总是会找到 geoip.dat 和 geosite.site 之后在这里找一下？ text\nv2raya 每次首先安装的时候都找不到 v2ray……\n","date":1735637579,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1779999572,"objectID":"337d0a83677916221ec5f0516cae20b9","permalink":"https://acyanbird.github.io/BA-blog/post/v2raya%E7%9A%84%E9%85%8D%E7%BD%AE/","publishdate":"2024-12-31T17:32:59+08:00","relpermalink":"/BA-blog/post/v2raya%E7%9A%84%E9%85%8D%E7%BD%AE/","section":"post","summary":"V2raya的配置","tags":null,"title":"V2raya的配置","type":"post"},{"authors":null,"categories":null,"content":"开机前拼装 需要自备鼠标键盘显示器，然后连接风扇什么的\n嵌入式？ GitHub资源\n官网介绍\n首先放几张图吧！\n确保 Wi-Fi 天线连接是正常的，som 也好好在板子上连接了，然后装风扇 —— 覆盖住SOM上的三个芯片 一切没有问题插入键盘鼠标之后，就可以直接点亮看看它的预装系统了。然后就到了装镜像环节……\n安装第三方镜像 好吧无论是不是第三方，都需要用 fastboot 工具进行烧录(用 burn tool support big image 这个)。我们需要 uboot，root 分区和 boot 分区。官方给的uboot 比较老了，可以使用这个。\n把SOM拔下来查看在 emmc 模式 然后摁着boot，插入自带的 type c - USB 线，插入之后再松手！在Terminal 输入 lsusb 查看设备，如果有 Bus 003 Device 009: ID 2345:7654 T-HEAD USB download gadget 那就是成功了。\n把所有文件弄在一个文件夹里面 sudo ./fastboot flash ram ./u-boot-with-spl.bin sudo ./fastboot reboot sleep 1 sudo ./fastboot flash uboot ./u-boot-with-spl.bin sudo ./fastboot flash boot ./deepin-th1520-riscv64-v23-desktop-installer.boot.ext4 sudo ./fastboot flash root ./deepin-th1520-riscv64-v23-desktop-installer.root.ext4 但是出现问题了……让我们用串口看看\n不用串口！是 fastboot 版本的问题，上次放错了\n使用串口连接 购买一个串口转 USB 模块 嗯我买的是这个，还有母对母的杜邦线，之后按照这里的官方文档的提示组装\n结果用上了但是没有完全用上\ndebug 之前换了fastboot 之后上电工作了，但是安装到一半就崩溃……可以直接切换 tty 查看 log ctrl+alt+f\u0026lt;2-6\u0026gt; 反正多试几个，就能切换到能用 tty3 或者 4什么的……默认root 密码是 deepin，log 在 /var/log/deepin-installer/deepin-installer 找，里面的 deepin-installer-first-boot.log\n看到的问题是 /etc/apt/source.list 有 DI_APT_SOURCE_DEB 我把他更改成 deb 开头。然后记得删除曾经创建的用户 userdel -r testuser 之后\nsystemctl restart deepin-installer-first-boot.service systemctl restart lightdm.service 然而没用！改回来又会被改回去！需要更改 需要改 /etc/deepin-installer/ 下面的 conf，注释掉 apt_source_deb 这一行的东西，再次重启！\n进去了qwq\n配置系统 首先，没有中文输入法，然后软件源不对（）被解析到内网了，所以改一下host 在 /etc/hosts 里面加入一行 61.183.83.58 ci.deepin.com\n","date":1735451729,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1779999572,"objectID":"3c1cef64f2bf8659495f809458c16262","permalink":"https://acyanbird.github.io/BA-blog/post/%E8%8D%94%E6%9E%9D%E6%B4%BE4a%E6%9E%84%E5%BB%BAdeepin/","publishdate":"2024-12-29T13:55:29+08:00","relpermalink":"/BA-blog/post/%E8%8D%94%E6%9E%9D%E6%B4%BE4a%E6%9E%84%E5%BB%BAdeepin/","section":"post","summary":"在开发版上怎么跑系统？","tags":["risc-v"],"title":"荔枝派4A构建deepin","type":"post"},{"authors":null,"categories":null,"content":"自定义 debian/rules 文件 在创建 Debian 包时，你可能需要自定义 debian/rules 文件。以下是一个示例 debian/rules 文件：\n#!/usr/bin/make -f %: dh $@ override_dh_auto_configure: dh_auto_configure -- --with-kitchen-sink override_dh_auto_build: make world #!/usr/bin/make -f：指定使用 make 作为解释器来执行这个文件。 %:：通配符目标，表示所有目标。dh $@ 将调用 debhelper 工具链中的适当命令来处理目标。 override_dh_auto_configure:：覆盖目标，用于自定义 dh_auto_configure 的行为。 dh_auto_configure -- --with-kitchen-sink：传递 --with-kitchen-sink 选项给 dh_auto_configure，用于配置构建。 override_dh_auto_build:：覆盖目标，用于自定义 dh_auto_build 的行为。 make world：调用 make 工具，并执行 world 目标来构建软件包。 通过这些步骤，你可以自定义 debian/rules 文件，以满足特定的构建需求。\n","date":1735201845,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1779999572,"objectID":"453a5dc3c2adb4b8438fcf68bb5b37f0","permalink":"https://acyanbird.github.io/BA-blog/post/%E4%BD%BF%E7%94%A8%E5%AE%98%E6%96%B9%E6%95%99%E7%A8%8B%E7%9A%84%E6%BA%90%E7%A0%81%E6%89%93%E5%8C%85/","publishdate":"2024-12-26T16:30:45+08:00","relpermalink":"/BA-blog/post/%E4%BD%BF%E7%94%A8%E5%AE%98%E6%96%B9%E6%95%99%E7%A8%8B%E7%9A%84%E6%BA%90%E7%A0%81%E6%89%93%E5%8C%85/","section":"post","summary":"使用官方教程的源码打包","tags":null,"title":"使用官方教程的源码打包","type":"post"},{"authors":null,"categories":null,"content":"那么比起上次的空包，这次使用包含二进制的包，打包好之后能正常运行并且包含 desktop 文件。\n开始安装 这两个脚本文件分别是\nchrome-133.0.6917.0/ ├── dh_make_create.sh ├── dh_pak.sh ├── opt │ └── apps │ └── chrome │ └── files └── usr └── share ├── applications │ └── chrome.desktop └── icons └── hicolor 这里和 deepin 的标准不一样，需要将 Desktop 文件放到 usr 里面\n# dh_make_create.sh #!/bin/sh #build \u0026#34;debian\u0026#34; dh_make --createorig -s -n -y #rm unused files rm debian/*.ex debian/*.EX rm -rf debian/*.docs debian/README debian/README.* #make install file echo \u0026#34;opt/ /\u0026#34; \u0026gt; ./debian/install #dh_pak.sh #!/bin/sh #build deb debuild -b -us -uc -tc 在 opt-apps-\u0026lt;appid\u0026gt;-files-\u0026lt;appid\u0026gt; 里面放置二进制的文件\nopt └── apps └── chrome └── files └── chrome 然后把 desktop 和 icon 放在 usr 里面\nusr └── share ├── applications │ └── chrome.desktop └── icons └── hicolor └── 48x48 └── apps └── chrome.png 其中的 48x48 是尺寸，最后 icon 要改成包名 最后的 desktop 文件（用来显示在目录里）\n[Desktop Entry] Categories=Network;WebBrowser; Name=Chrome Name[zh_CN]=Chrome浏览器 Keywords=google;browser Keywords[zh_CN]=谷歌;浏览器 Comment=BAccess the Internet. Comment[zh_CN]=访问互联网。 Exec=/opt/apps/chrome/files/chrome/chrome Icon=chrome Type=Application Terminal=false StartupWMClass=chrome StartupNotify=true MimeType=audio/aac;application/aac; 之后执行 dh_make_create.sh，不过在 install 文件里要加上一行\nopt/ / usr/ / 这样在安装的时候 usr 文件夹里的文件会安装到继起的 /usr 文件夹下\n最后执行 dh_pak.sh，会出现两个包，不过安装 chrome_133.0.6917.0_amd64.deb 这个包就行\n安装效果 ","date":1735194549,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1779999572,"objectID":"583ace1209b8d8cb5206a8b431487844","permalink":"https://acyanbird.github.io/BA-blog/post/%E6%89%93%E4%B8%80%E4%B8%AAchrome%E5%8C%85/","publishdate":"2024-12-26T14:29:09+08:00","relpermalink":"/BA-blog/post/%E6%89%93%E4%B8%80%E4%B8%AAchrome%E5%8C%85/","section":"post","summary":"里面真的包含东西的二进制打包顺带 Desktop 和 icon 文件","tags":["打包"],"title":"打一个Chrome包","type":"post"},{"authors":null,"categories":null,"content":"前情提要 关于 /opt 目录 在Linux系统中，/opt目录是一个专门用于存放可选软件包的文件夹。/opt的名字来源于“optional”，表示该目录用于存放可选的软件包，将这些文件与核心文件分开。在/opt下安装的软件通常会将所有相关文件（如二进制文件、库文件和配置文件）集中在一个目录中，这使得管理和删除这些软件变得更加简单。例如，若要卸载某个应用程序，只需删除其对应的子目录即可。\n因此在我们安装二进制文件夹的时候选择安装在这个目录，删除的时候会方便点（喂）\n需要的工具 我们这次使用了 dh_make 和 debuild ，请根据系统需求进行安装。\n开始打包 首先我们创建需要的文件夹，因为只是尝试所以比较简单\ntest-0.0.1/ └── opt └── test 其中 test-0.0.1 是包名称（当然也有可能是域名），后面跟软件本身的版本号，当然发行版内部可能对于某个特定软件进行多次构建，但这个之后再说。这一次我们假定 opt 里的 test 是需要的二进制文件。可以在 opt 文件夹里创建：\ncd opt touch test 创建 debian 文件夹 之后进入 test-0.0.1 文件夹执行 dh_make --createorig -s -n -y 之后会生成一个 debian 目录，让我们看看里面有什么\ndebian/ ├── changelog ├── control ├── copyright ├── manpage.1.ex ├── manpage.md.ex ├── manpage.sgml.ex ├── manpage.xml.ex ├── postinst.ex ├── postrm.ex ├── preinst.ex ├── prerm.ex ├── README ├── README.Debian ├── README.source ├── rules ├── salsa-ci.yml.ex ├── source │ └── format ├── test.cron.d.ex ├── test.doc-base.ex └── test-docs.docs 在有 ex 和 docs 后缀名的文件，以及 README 文件在这一次里并不需要，所以可以删除这些文件减小体积，在 test-0.0.1 文件夹下\nrm debian/*.ex debian/*.EX rm -rf debian/*.docs debian/README debian/README.* echo \u0026#34;opt/ /\u0026#34; \u0026gt; ./debian/install 最后一行是在 debian 下创建 install 文件，意思是将 opt 文件夹，安装到执行 deb 文件电脑的根目录。这可以保证如果电脑里没有 opt 目录就会先创建目录，也不会动 opt 目录里的其他文件。\n目前最重要的是 control 文件，architecture 中的 any 会直接读取宿主机的架构，或者可以像 amd64 这样写死。\nSource: test Section: unknown Priority: optional Maintainer: acy \u0026lt;acy@unknown\u0026gt; Rules-Requires-Root: no Build-Depends: debhelper-compat (= 13), Standards-Version: 4.6.2 Homepage: \u0026lt;insert the upstream URL, if relevant\u0026gt; #Vcs-Browser: https://salsa.debian.org/debian/test #Vcs-Git: https://salsa.debian.org/debian/test.git Package: test Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, Description: \u0026lt;insert up to 60 chars description\u0026gt; \u0026lt;Insert long description, indented with spaces.\u0026gt; 创建 deb 文件 debuild -b -us -uc -tc 使用 debuild 创建 deb 文件，这会在 test-0.0.1 的同级生成文件 test_0.0.1_amd64.deb 可以尝试进行安装 sudo apt install ./test_0.0.1_amd64.deb\n之后可以在 /opt 文件夹里面找到 test 文件 ls /opt | grep test 就能看到里面的 test 文件啦\n","date":1735117005,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1779999572,"objectID":"d65df20ae9dcae34ad605ea0b9aa3d50","permalink":"https://acyanbird.github.io/BA-blog/post/%E8%A7%84%E8%8C%83%E6%97%A0%E6%89%80%E8%B0%93%E7%9A%84debian%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%89%93%E5%8C%85/","publishdate":"2024-12-25T16:56:45+08:00","relpermalink":"/BA-blog/post/%E8%A7%84%E8%8C%83%E6%97%A0%E6%89%80%E8%B0%93%E7%9A%84debian%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%89%93%E5%8C%85/","section":"post","summary":"如果有一个二进制，如何直接变成 deb 包呢？","tags":["打包"],"title":"规范无所谓的debian二进制打包","type":"post"},{"authors":null,"categories":null,"content":"关于配置 查看这个 repo来参考里面的 hugo.toml 进行配置。\n事先声明： 仅供参考 太长不看快速上手版 搭建站点 添加主题 添加 post 上线博客 私人域名\u0026amp;墙内访问 enable 评论 差不多这样了 事先声明： 作为 blog 搭建……大概5代目，自己搭建的WordPress，白嫖的hexo，CSDN，飞书，或者直接typora 本地存盘都有过。不过可持续性非常烂，导致那么多年基本上没什么存档下来 😭\n所以本人比较在意可持续性和存档性。个人搭建 VPS 的缺点在于，一段时间懒惰不续费之后，没有转移的资料丢了就是丢了（看向 WordPress\n如果太难编辑，比如需要自己手动上传图片到图床，再粘贴链接什么的……也不利于持续性的blog写作（一开始觉得没问题总有一天会咆哮很麻烦！）\n无法私有平台固然不错，但是限制太多，还是把资料掌握在自己手里最好！比如我的CSDN账号是什么来着？ 因此又跑回来折腾啦！这次有GitHub作为存档保底，自动集成，VSC 的 markdown 支持 主要是能够复制粘贴图片 顺便搞定一下墙内访问就完事大吉~\n仅供参考 可以查看这个示例配置，不过具体配置都在下面贴的很清楚啦！要是有什么结构问题再来看看这个示例站点吧~\n太长不看快速上手版 确保你安装了最新的 hugo with extended，配置好 git，新建了 \u0026lt;用户名\u0026gt;.github.io 仓库（比如我的是 acyanbird.github.io）在setting 里面配置 pages - source - github actions。点击进入仓库，请使用命令 git@github.com:acyanbird/acyanbird.github.io.git 不要使用 ZIP，这样无法加载 submodule 会导致错误 可以将进入这个目录（比如你重命名为了my-blog），那么在my-blog下面打开终端，输入\nrm -rf .git git init git add . git commit -m \u0026#34;init\u0026#34; git branch -M main git remote add origin 你的 URL git push -u origin main 之后应该能看到上线啦！ 如果因为忘记设置 source - github actions，也可以设置完后手动 re-run 失败的action，在主页点击叉叉，然后右上角 re-run 就好！之后请到添加 post 章节查看怎么写 blog！\n搭建站点 按照官方教程的 quickstart，首先确认安装了 git 和 hugo，hugo 的话最好在 GitHub release 安装最新的 with extended 版本，包管理器安装的也许会过老。\n我们先用官方教程确保站点被正常启动\nhugo new site example-blog cd example-blog git init git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke.git themes/ananke echo \u0026#34;theme = \u0026#39;ananke\u0026#39;\u0026#34; \u0026gt;\u0026gt; hugo.toml hugo server 嘛 ananke 主题是比较简单不需要很多配置的，所以可以用这个检测是否能跑通。 这个时候就可以用 VS Code 打开站点文件夹 —— 这里就是 example 文件夹，尝试创建一个 blog，在终端里使用 hugo new content content/posts/my-first-post.md 你可以在 content 里面看到创建的 post，这里使用了 archetype 的参数 还是 draft 的时候显示不出来，我们加点什么再把 draft 设置成 false 到此就算是测试完毕，接下来我们接入 GitHub 主题\n添加主题 大家不一定要使用我选择的主题，可以在官网搜索自己想要的主题进行添加，但注意每个主题的配置都各不相同，这一段只对 github-style 这个 theme 有效。直接添加主题 git submodule add git@github.com:MeiK2333/github-style.git themes/github-style 作者是给了一份配置参考，当然我也进行了一些修改，大家可以照抄我的配置，启用了本地搜索功能\nbaseURL = \u0026#34;/\u0026#34; languageCode = \u0026#34;zh-cn\u0026#34; title = \u0026#34;Nighthawk\u0026#39;s nest\u0026#34; theme = \u0026#34;github-style\u0026#34; pygmentsCodeFences = true # 启动代码高亮 pygmentsUseClasses = false buildDrafts = false PygmentsStyle = \u0026#34;tango\u0026#34; enableEmoji = true # 支持 emoji # 在 md 里面启用 HTML [markup] [markup.goldmark] [markup.goldmark.renderer] unsafe = true [params] author = \u0026#34;你的名字\u0026#34; description = \u0026#34;你的描述\u0026#34; github = \u0026#34;GitHub ID\u0026#34; email = \u0026#34;邮箱\u0026#34; url = \u0026#34;个人网站地址\u0026#34; # keywords = \u0026#34;blog, google analytics\u0026#34; # rss = true # userStatusEmoji = \u0026#34;😀\u0026#34; favicon = \u0026#34;/images/ava_c_trans.png\u0026#34; #标签页的那个小图标 avatar = \u0026#34;/images/ava_c.png\u0026#34; headerIcon = \u0026#34;/images/ava_c.png\u0026#34; location = \u0026#34;Shenzhen, China\u0026#34; enableGitalk = false # 支持本地搜索，这里与下面的 outputs enableSearch = true [outputs] home = [\u0026#34;html\u0026#34;, \u0026#34;json\u0026#34;] [outputFormats.json] mediaType = \u0026#34;application/json\u0026#34; baseName = \u0026#34;index\u0026#34; isPlainText = false # [params.gitalk] # clientID = \u0026#34;\u0026#34; # clientSecret = \u0026#34;\u0026#34; # repo = \u0026#34;存放评论的 repo 名\u0026#34; # owner = \u0026#34;你的GitHub ID\u0026#34; # admin = \u0026#34;你的GitHub ID\u0026#34; # id = \u0026#34;decodeURI(location.pathname)\u0026#34; # labels = \u0026#34;gitalk\u0026#34; # perPage = 15 # pagerDirection = \u0026#34;last\u0026#34; # createIssueManually = false # distractionFreeMode = false [[params.links]] title = \u0026#34;bilibili\u0026#34; href = \u0026#34;https://space.bilibili.com/205319947\u0026#34; icon = \u0026#34;/images/bilibili.svg\u0026#34; [[params.links]] title = \u0026#34;QQ Group\u0026#34; icon = \u0026#34;/images/qq.svg\u0026#34; href = \u0026#34;https://qm.qq.com/q/cXb0hh1uC\u0026#34; [[params.links]] title = \u0026#34;ebird\u0026#34; href = \u0026#34;https://ebird.org/profile/MjQ3NDIyOQ/world\u0026#34; icon = \u0026#34;/images/ebirdicon.png\u0026#34; lastmod = true [frontmatter] lastmod = [\u0026#34;lastmod\u0026#34;, \u0026#34;:fileModTime\u0026#34;, \u0026#34;:default\u0026#34;] # [services] # [services.googleAnalytics] # ID = \u0026#34;UA-123456-789\u0026#34; 将images放置在 static下，就像 static/images/image.png 这样，hugo 才能够索引到图片。这个主题接受 content 下的一个 readme.md 以及 content/post/ 文件夹下的 md 文件（所以之前创建的 posts 文件夹要重命名）。\n为了更整齐地归纳 post 里面的图片，我选择给每一个 post 创建一个文件夹。\n在 archetypes 文件夹下再建立模版文件 --- title: \u0026#34;{{ replace .Name \u0026#34;-\u0026#34; \u0026#34; \u0026#34; | title }}\u0026#34; date: {{ .Date }} draft: false author: \u0026#34;acyanbird\u0026#34; # 显示在首页的总结 summary: \u0026#34;{{ replace .Name \u0026#34;-\u0026#34; \u0026#34; \u0026#34; | title }}\u0026#34; # tags: [\u0026#34;\u0026#34;] --- 添加 post 由于我们使用了 archetype，所以可以用 hugo new post/[你的题目] --kind git 初始化一个blog，这样之后的图片放在这个文件夹下就可以啦~ 至于首页的显示也是md文档，请在 content 目录下面新建 readme.md 文档，在里面编辑就可以。\n在我个人感觉里，有一个能够方便进行写作的工具是很重要的，今天在这里推荐 VS Code 加上几个插件：\nMarkdown Shortcuts 此插件主要是提供了粗体、斜体、行内代码、代码块的快捷键。 Markdown All in One 哎呀看这个名字就知道，全家桶，装就完事了！\n要达成的效果就是可以直接截图粘贴到 blog 里面，不需要再传一次啦！\nctrl+k 再+v 可以分屏预览\nReadme 文档的写作格式网上有很多资料，也比较方便入门，在此就不赘述啦！\n写完之后直接一个 git add . \u0026amp;\u0026amp; git commit -m \u0026#34;更新笔记\u0026#34; \u0026amp;\u0026amp; git push 走起~\n目前问题：似乎 last mod 功能消失了，到时候找找是哪里出问题（）\n上线博客 我们使用 github Page 服务进行托管，这个主题目前（可能我会修咕咕咕）有个问题，不支持在有子目录的情况下显示头像图片。所以我们需要使用 \u0026lt;用户名\u0026gt;.github.io 的repo。创建这个名字的repo名称，添加这个 repo。就比如我的GitHub ID 是 acyanbird，所以我的 repo 名是 acyanbird.github.io\ngit init git add . git commit -m \u0026#34;first commit\u0026#34; git branch -M main git remote add origin 你的URL git push -u origin main 之后启动 GitHub Page，这里官方文档写的很清楚了，setting - pages 在根目录创建 .github/workflows 文件夹，创建 hugo.yaml\nmkdir -p .github/workflows touch hugo.yaml 照抄一下官方文档就好\n# Sample workflow for building and deploying a Hugo site to GitHub Pages name: Deploy Hugo site to Pages on: # Runs on pushes targeting the default branch push: branches: - main # Allows you to run this workflow manually from the Actions tab workflow_dispatch: …","date":1734877559,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1779999572,"objectID":"a74ec7b868030c340dc81480ea0a9b03","permalink":"https://acyanbird.github.io/BA-blog/post/%E7%99%BD%E5%AB%96blog/","publishdate":"2024-12-22T22:25:59+08:00","relpermalink":"/BA-blog/post/%E7%99%BD%E5%AB%96blog/","section":"post","summary":"如何搭建并使用 hugo with github style","tags":["blog"],"title":"Hugo with GitHub-style 主题的搭建并使用","type":"post"},{"authors":null,"categories":null,"content":"使用 git theme 主题链接\n找了很多 theme，最后决定直接使用GitHub版本了！\n安装 theme 首先跟着官方教程把 ananke 主题安装好，然后再下载 git theme\ngit submodule add git@github.com:MeiK2333/github-style.git themes/github-style\n官方给了配置文件，稍微进行更改就可以。注意这里\n#userStatusEmoji = \u0026#34;😀\u0026#34; 不需要这个emoji 就注释掉 favicon = \u0026#34;/images/github.png\u0026#34; avatar = \u0026#34;/images/ava_c.png\u0026#34; headerIcon = \u0026#34;/images/ava_c.png\u0026#34; location = \u0026#34;Shenzhen, China\u0026#34; enableGitalk = false #首先注释掉 enableSearch = true #添加本地搜索 [outputs] home = [\u0026#34;html\u0026#34;, \u0026#34;json\u0026#34;] 在根目录（和 content 一个目录下）创建static/images 把你的头像放在这个下面\n我在 arhcetype 下建立了模版，采用叶子包的方法，给每一个 post 单独建立文件夹，这样每个 post 的图片就不会混杂在一起啦\n//目录结构 archetypes ├── default.md └── git └── index.md --- title: \u0026#34;{{ replace .Name \u0026#34;-\u0026#34; \u0026#34; \u0026#34; | title }}\u0026#34; date: {{ .Date }} draft: false author: \u0026#34;acyanbird\u0026#34; summary: \u0026#34;{{ replace .Name \u0026#34;-\u0026#34; \u0026#34; \u0026#34; | title }}\u0026#34; #自动生成和标题一样的summary，免得显示太长内容，可以手动修改滴 # tags: [\u0026#34;\u0026#34;] --- 新建 post hugo new post/\u0026lt;post-name\u0026gt; --kind git\n编辑用的 VSC 插件 Markdown Shotcuts 此插件主要是提供了粗体、斜体、行内代码、代码块的快捷键。\nMarkdown Paste 此插件主要是提供了直接向 md文章里贴图的功能. ctrl+k 再+v 可以分屏预览\n或者右键tab直接预览 ctrl+shift+v\n托管到 GitHub Page 其实应该在 ananke 的时候尝试的……算了已经这样了，按照官方教程走一波！\n简简单单初始化……然后上传 blog，public 文件夹不用上传，在根目录 .gitignore 里加入 public/ 停止追踪\ngit rm -r --cached public git add .gitignore git commit -m \u0026#34;Stop tracking public folder\u0026#34; 注意主题最好按照 sub-module 的方式提交免得出现错误！其实有强制嵌套的办法，我之前还用过是啥我忘了（）\n然后按照官网的指示一路下行就没有什么问题。值得注意的是，如果你使用的有子目录（比如 example.org/aaa），那可以把 toml 的图片链接设置成相对路径\nfavicon = \u0026#34;images/ava_c_trans.png\u0026#34; #标签页的那个小图标，先不管 avatar = \u0026#34;images/ava_c.png\u0026#34; headerIcon = \u0026#34;images/ava_c.png\u0026#34; 在 根目录建立static/images，复制粘贴图片\n然后在 content/post 下面新建 images 文件夹，把用到的图片也复制粘贴一份\n但是这个问题无法被彻底解决！点进 post 仍然会显示失败！还是使用 \u0026lt;用户名\u0026gt;.github.io 最好！在此之后在 请更改回 /images/\u0026lt;图片名称\u0026gt;\n自定义域名 之前我的两个网站都使用了子域名，现在就用顶点域名吧！反正也是从 GitHub 学生包白嫖滴\n设置顶级域名需要使用 A （IPV4）或者 AAAA （IPV6）记录，之前用子域名好像只用个 CNAME 来着？\n记得在根目录创建 CNAME 文件夹，里面加上自己的域名比如 acyanbird.tech 毕竟是 action 创建的，需要我们手动添加 CNAME，如果 DNS 解析不成功记得取消掉强制 HTTPS 再尝试一次。www 开头的解析 CNAME 成\u0026lt;用户名\u0026gt;.github.io 我是使用的 Cloudflare 所以还有个坑，在配置的时候要把 proxy 取消掉\n然后才能认证成功。不过在头一次添加域名的时候也需要额外的配置\n这里也注意在认证的时候应该也要去除掉 proxy 状态？忘记惹……有问题找我！\n添加社交媒体 该说不说这个 icon 站 挺好的！我无论如何都要把 b 站弄上去嗷~\n使用 gitalk 这个 blog 推荐的评论系统，根据 gitalk 的官方教程走一下，申请 APP （之后在 setting - developer setting 里找）然后把参数填写到 hugo.toml 里面\n记得填写你的域名，这种时候本地测试 gitalk 是没法使用的，需要push到网页上才行！\n如果你开了别的仓库去储存 issue （是的这个评论基于 issue），那么在本站的config里面写上那个仓库的名称。因为可能在本体有些敏感信息要变为 private，所以使用另一个公开仓库存放 issue 是最好滴。\n如果使用了 gitalk 作为评论模块，在标题中文转码后会有因为label长度大于50，导致 validation 失败的问题，推荐把配置的 id 更改为 id = \u0026#34;decodeURI(location.pathname)\u0026#34; 这样能直接打中文作为标题，就不会超过限制啦\n代码高亮 好像代码高亮的程度不够啊……调整一下\n#把pygment给false掉，默认调用chroma效果更好 pygmentsCodeFences = true pygmentsUseClasses = false buildDrafts = false PygmentsStyle = \u0026#34;tango\u0026#34; 更多style可以在 官方文档上获取\n#include \u0026lt;stdio.h\u0026gt; int main() { // printf() displays the string inside quotation printf(\u0026#34;Hello, World!\u0026#34;); return 0; } print(\u0026#34;Hello, World!) fn main() { // Statements here are executed when the compiled binary is called. // Print text to the console. println!(\u0026#34;Hello World!\u0026#34;); } 嗯这样顺眼多了\n其他注意事项 如果要在 markdown 里面启用 HTML，在站点config也就是 hugo.toml 里加入\n[markup] [markup.goldmark] [markup.goldmark.renderer] unsafe = true 如果要使用自己修改的 github-style，可以先 fork 之后更改 .gitmodules 的 URL\n","date":1734658838,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1779999572,"objectID":"344e81083967ab3c3cb842e14511a8f0","permalink":"https://acyanbird.github.io/BA-blog/post/%E4%BD%BF%E7%94%A8git-theme/","publishdate":"2024-12-20T09:40:38+08:00","relpermalink":"/BA-blog/post/%E4%BD%BF%E7%94%A8git-theme/","section":"post","summary":"使用 github theme构建的方法","tags":["hugo","blog"],"title":"使用 github theme","type":"post"},{"authors":null,"categories":null,"content":"💫About Me : she / her / hers\n超级喜欢开源社区的夜鹰一只啊！Linux 桌面日常玩家（Debian），什么都折腾一点，目前在给 Deepin 打工啾啾啾。珍惜生命远离折腾（但还是在折腾）\n欢迎加入 COSSIG 社区来吹水！大家一起玩~\n我也是个观鸟人！欢迎查看我的 ebird 界面啾！（查看左下 organization）\nLicense 本博客所有内容，除了其他人贡献以及特殊标注之外均采用 WTFPL – Do What the Fuck You Want to Public License 当然如果你能给我署名一下我会更开心！！！\n友情链接 白鼠Cysnies 一粒 qaqland John Cage 地瓜先生集 💻Tech Stack 📊GitHub Stats : ✍️ Not Random Motto 🪶 Not Random Nighthawk Shouting ","date":1734589205,"expirydate":-62135596800,"kind":"page","lang":"en","lastmod":1779999572,"objectID":"0730bb7c2e8f9ea2438b52e419dd86c9","permalink":"https://acyanbird.github.io/BA-blog/readme/","publishdate":"2024-12-19T14:20:05+08:00","relpermalink":"/BA-blog/readme/","section":"","summary":"💫About Me : she / her / hers\n超级喜欢开源社区的夜鹰一只啊！Linux 桌面日常玩家（Debian），什么都折腾一点，目前在给 Deepin 打工啾啾啾。珍惜生命远离折腾（但还是在折腾）\n欢迎加入 COSSIG 社区来吹水！大家一起玩~\n我也是个观鸟人！欢迎查看我的 ebird 界面啾！（查看左下 organization）\nLicense 本博客所有内容，除了其他人贡献以及特殊标注之外均采用 WTFPL – Do What the Fuck You Want to Public License 当然如果你能给我署名一下我会更开心！！！\n友情链接 白鼠Cysnies 一粒 qaqland John Cage 地瓜先生集 💻Tech Stack 📊GitHub Stats : ✍️ Not Random Motto 🪶 Not Random Nighthawk Shouting ","tags":null,"title":"Readme","type":"page"}]