Range's Blog https://mycnau.lol Be light, be young and be kind! Wed, 17 Jun 2026 10:09:18 +0000 en-US hourly 1 https://wordpress.org/?v=7.1.4 /wp-content/uploads/2024/04/cropped-mmexport1711207725944-32x32.jpg Range's Blog https://mycnau.lol 32 32 appimage sandbox /appimage-sandbox/ /appimage-sandbox/#respond Wed, 17 Jun 2026 10:09:18 +0000 /?p=1471 https://www.randomds.com/2025/08/25/fixing-appimage-sandbox-errors-on-ubuntu-a-complete-system-wide-solution

Views: 1

]]>
/appimage-sandbox/feed/ 0
Protected: Dev Container Example /dev-container-example/ /dev-container-example/#respond Tue, 16 Jun 2026 02:44:07 +0000 /?p=1459

This content is password-protected. To view it, please enter the password below.

Views: 26

]]>
/dev-container-example/feed/ 0
Reading: The Missing Readme-00 /reading-the-missing-readme-00/ /reading-the-missing-readme-00/#respond Sun, 14 Jun 2026 15:14:41 +0000 /?p=1452 序

又是好久不主动写点什么了,接着期末考完,先感慨一下。

转眼过去我又在Curtin练习两年了,不知XMUM的同学怎样,估计现在快毕业了吧!我依然是那个普普通通忙忙碌碌的range。 经过目标大变之后,这一年我好像失去了一些东西,内心中的力量。现在再回头看,三年前我作为大一学生却在啃bomb lab,看csapp和它的回放,现在也依然记得作者讲课开头那句“Hello Everyoooone~”,那真是一段难忘的时光。那时候还不怎么算会写“软件”,也就是用小聪明写点好玩的程序(和kk同学排课表)和学习计算机(不是计算)理论。现在心里还真有点复杂,我似乎已经学不动c++/rust,也不继续刷力扣和算法了。我很高兴有现在的澳洲风格的经验(在curtin补习了软件导论,补了git之类的规范;学会了oop;入门的安卓开发;打黑客松;完成了冰箱警察,这也是我离开xmum前的心愿),又怀念过去那种国内cs的学习高难度语言,算法,理论和底层的奋斗风格。好在现在竞选上了校内的capstone实习,写了一个学期文档,倒也是见识到了企业内部的东西。

既然如此,那就继续软件吧!软件工程也是个大工程,并不是天才的技术能解决所有问题。相对的,好的进度,资源,代码管理和工具使用甚至社交技巧非常重要-没有几个人(除非你是一个人手搓qemu那种人)能完全独立完成大型项目,合作才是主流。因此一些看似无聊的软件工程的方法论依然非常重要。也是经过这一个季度也就是一个学期的实习,我感觉自己在软件工程上的技能(计划,沟通,英语写作)还是不够。早有听闻the missing readme 非常好,那就直接开始吧,读读书,记记单词,练习练习写作和表达。表达也包括中文呢!感觉长时间不写系统性的文字,中文都退化了。

The missing readme

Well, starting with a summary or intro of the book feels too formulaic. If you need more, just search it yourself!

Chapter 1: The journey ahead

Reflection:

I am posting the feelings and reflections here. So, most of the time, the reflection is personal and closely related to my experience.

The book told me I need to be competent in these four areas to go from an entry-level software engineer to reach an advanced level: Technical knowledge, Execution, Communication, and Leadership (I just got an internship for capstone, not an existing project, who knows). Well, the only area I’m qualified in is technical knowledge…

When I was working on my project Motionsense, I thought that software engineering is centred on code and a specific set of methodologies, such as using Git for version control and a Kanban Board to track progress. Of course it’s correct That’s true, or at least not wrong. But the critical problem is that what I used in my project was only personal(should use individual) skills, everything I relied on in that project was skills I could use entirely on my own. I do not need to show others what I have done last week or write code with others. I just need to write a post: hey guys, look at this, this is the result I made. That’s all. So when I began my internship, I felt painful I struggled, and I lacked skills.

I believed that Execution meant I should be able to take the question problems and write the code quickly. But I forgot and ignored the communications: technical talks, reading groups and presentations. I still remember that in the Introduction to Software Engineering unit, I was told that we needed to have weekly meetings aligned with agile software methodology. When I had in-person weekly meetings, that became my first barrier. Sometimes I am was stuck on the lower-level details and cannot couldn’t express what I am was thinking: I can talk about what I did, but not what I have done achieved.

Vocabulary:

You can safely deliver code changes and work seamlessly with your team.

Seamlessly: 丝滑无缝的

The information you need is scattered across the internet, or worse, tucked away in someone’s head.

scatter across:在xx零星分布。散点图的散点就是这个

tucked away:藏在哪里,truk 是塞进

This book consolidates key information that …

Consolidate: 巩固

To advance, you will need to be competent in several core areas.

competent: 胜任的(可见我词汇退化成啥了。。。)

You proactively create and improve the test code.

Proactively: 主动的

Views: 17

]]>
/reading-the-missing-readme-00/feed/ 0
2025 OpenCamp-Docker 01 /2025-opencamp-docker-01/ /2025-opencamp-docker-01/#respond Mon, 01 Jun 2026 07:15:39 +0000 /?p=1439 基础阶段很简单,就是入门Dockerfile和基本使用,不过感觉给出的场景很不错。

(外加几句话,参加这种训练营更多是给自己一个训练的并且主动解决问题的机会,针对我这种有一些经验的人,单纯完成任务应该是不够的,可以通过经验,社区的比对和博客让我的技术更规范化)

Q1 Simple NG Service

基础知识点:

  1. docker 编译,打包,运行镜像
  2. 基础的FROM选择底包, RUN 执行命令,EXPOSE 暴露端口, CMD 作为入口执行程序。

实践知识点:

  1. 打包顺序和流程:
    • 选择合适的FROM 作为基础镜像
      • 精简,最小化提高安全性
      • 直接使用已经有的官方镜像,比如python:3.11-slim
    • 处理软件包环境和依赖
      • 模板 (更新软件源,无推荐安装,删除apt缓存)
        • apt-get update && \
        • apt-get install -y –no-install-recommends \
        • curl \
        • && rm -rf /var/lib/apt/lists/*
    • 处理端口
    • 运行入口
  2. 端口转发
    • 虽然是云原生但是因为在线开发消耗算力时长而且不如原生vscode流畅丝滑,我还是把项目复制到本地,本地vscode远程ssh打开项目编译的dockerfile,然后才明白这个端口转发是什么东西有多好用
    • 大多数运行网络服务的docker镜像会在docker本机(运行docker的物理机器)开端口,但是显然如果我们ssh到远程机器,很多测试程序大概率跑在客户机并且已经写死(尤其是开发和测试过程中)127.0.0.1本级测试,只在远程机器上开端口不方便
      • 于是vscode就可以自动进行端口转发,这意味着你不需要端口映射,远程的端口就可以通过ssh协议被VScode Server转发到本地然后被直接访问
      • 以上将远程服务器端口转发到本地是端口转发,同理还有反向端口转发,就是把本地的端口转发到远程服务器上
    • 根据ChatGPT的提醒,端口转发作为强大的工具可以自己用,但是在生产环境要小心,主要原因是扩大了攻击面导致有潜在风险。
  3. 守护进程前台化
    • Docker容器只给前台程序生存空间,所以像ng这样的守护进程+客户端的程序需要用纯客户端模式启动,防止docker容器找不到活动程序直接被杀掉,这也是为啥本次程序的入口为CMD [“nginx”, “-g”, “daemon off;”]

测试命令和技巧:

# 测试命令:
# docker build -t exercise1 .
# docker run -d -p 8080:80 exercise1 
# curl http://127.0.0.1:8080 | grep -q "Hello Docker"

Q1 Simple Python Flask Service

基础知识点:

同上,但是添加了

  1. WORKDIR确定工作文件夹
  2. COPY来拷贝应用程序和程序的非系统包管理依赖目录
  3. 添加用户和USER 选择用户
  4. ENV 添加环境变量

从这里也可以看出来这是一个比较完整的需要处理多方依赖(pip)和安全层级(非root用户)的场景。

实践知识点:

  1. COPY 命令的技巧
    • 单个文件直接copy文件到目录就行(别忘了下划线)
    • 多个文件的shell模式
      • 用空格隔开,比如COPY requirements.txt app.py /app/
    • 多个文件的json格式(ChatGPT在我复盘时候提醒的,没有试过)
      • COPY [“file1”, “file2”, “file3”, “/dest/”]
  2. Python项目的docker目录结构
    • Dockerfile
    • app.py作为入口
    • requirements.txt作为依赖表
  3. 添加和使用用户
    • 这是个很大的话题,见下文

先这样,不管了,实习再说吧

Views: 3

]]>
/2025-opencamp-docker-01/feed/ 0
go install 后找不到二进制文件 /go-install-%e5%90%8e%e6%89%be%e4%b8%8d%e5%88%b0%e4%ba%8c%e8%bf%9b%e5%88%b6%e6%96%87%e4%bb%b6/ /go-install-%e5%90%8e%e6%89%be%e4%b8%8d%e5%88%b0%e4%ba%8c%e8%bf%9b%e5%88%b6%e6%96%87%e4%bb%b6/#respond Tue, 24 Feb 2026 06:03:09 +0000 /?p=1445 官网:

You can do this by adding the following line to your $HOME/.profile or /etc/profile (for a system-wide installation):

export PATH=$PATH:/usr/local/go/bin

这是go本身的bin file,还需要添加go install的bin。 install的目的在用户文件夹,可以这样获取:

go env GOPATH

所以在用户文件夹的shell配置文件比如.bashrc添加这行

export PATH="$PATH:$(go env GOPATH)/bin

问题就解决了

Views: 3

]]>
/go-install-%e5%90%8e%e6%89%be%e4%b8%8d%e5%88%b0%e4%ba%8c%e8%bf%9b%e5%88%b6%e6%96%87%e4%bb%b6/feed/ 0
2025 OpenCamp-Docker 00 /1435-2/ /1435-2/#respond Sun, 21 Dec 2025 02:26:08 +0000 /?p=1435 本来报名了报名2025年OpenCamp的QEMU训练营,但是因为刚好卡在学期末区忙着oose大作业外加道心破碎,没有跟上深觉遗憾,就又参加了的Docker训练营,准备跟一跟,在这里记录一些学到的东西。

也是方便也算指明出处,给出训练营的链接。

训练营官网:https://opencamp.cn/Docker/camp/202502
Docker 训练营组织: https://cnb.cool/opencamp/learning-docker
CNB 平台帮助文档: https://docs.cnb.cool/zh/
课程大纲仓库: https://cnb.cool/opencamp/learning-docker/docker-exercises
基础部分作业仓库:
https://cnb.cool/opencamp/learning-docker/docker-training-basic-2
专业部分作业仓库:
https://cnb.cool/opencamp/learning-docker/docker-training-advanced-2

为了尊重版权(Open source != Free)和简练,相关博客尽量不出现重复训练营仓库的内容。

00 CNB平台直观感受

CNB这个平台有点意思,根据使用体验,这是个云版本而且强远端的github,帮助开发者免去初始化仓库(有模板和一键初始化)和配置开发环境(浏览器直接开vscode)。目前对我来说就是一个只有vscode界面的Linux Server(跑在容器中)。目前还没有去作为主力开发的要求,就对本地的同步,pull,push没有研究,似乎不太一样。

01 CNB 自动化

fork 仓库 -> 编辑 -> 在线pull/push提交 ->根据用户绑定信息自动打分和上传。

Views: 6

]]>
/1435-2/feed/ 0
Passwall 不能访问谷歌(证书,timeout)和discord等 /passwall-%e4%b8%8d%e8%83%bd%e8%ae%bf%e9%97%ae%e8%b0%b7%e6%ad%8c%e8%af%81%e4%b9%a6timeout%e5%92%8cdiscord%e7%ad%89/ /passwall-%e4%b8%8d%e8%83%bd%e8%ae%bf%e9%97%ae%e8%b0%b7%e6%ad%8c%e8%af%81%e4%b9%a6timeout%e5%92%8cdiscord%e7%ad%89/#respond Sun, 21 Dec 2025 01:41:15 +0000 /?p=1432 其实很简单,需要检查当前的软路由的版本是不是太高,一些较新的openwrt(比如笔者友善派R3S带的是OpenWrt 24.10.2,2025/12/21)已经把iptables迁移到NFtables,如果一部分应用再使用iptables会导致部分连接的代理失效,即使iptables依然可以存在和配置。所以需要在passwall的高级设置里面把防火墙设置为NFtables。

当然在没有切换到nftables之前,我发现passwall就有错误弹出,提示一些iptable的组建缺失,消除这个提示可以安装这些包重启,不过还是得换到nftables。

opkg install kmod-ipt-tproxy kmod-ipt-iprange kmod-ipt-conntrack-extra kmod-ipt-socket

因为笔者又刷了docker版本的镜像,观察到似乎docker在使用iptables,于是就没有完全删除iptables的所有规则。

Views: 4

]]>
/passwall-%e4%b8%8d%e8%83%bd%e8%ae%bf%e9%97%ae%e8%b0%b7%e6%ad%8c%e8%af%81%e4%b9%a6timeout%e5%92%8cdiscord%e7%ad%89/feed/ 0
Turn off the display of Ubuntu server /turn-off-the-display-of-ubuntu-server/ /turn-off-the-display-of-ubuntu-server/#respond Sat, 20 Dec 2025 15:29:31 +0000 /?p=1428 Really simple and easy way, necessary for laptop users!

  1. Edit the file /etc/default/grub
  2. Find the line ‘GRUB_CMDLINE_LINUX_DEFAULT=’
  3. Append ‘consoleblank=60’
  4. Run sudo update-grub
  5. Reboot

Remember, press enter after the first boot in the login page. I found that the screen will not dim if there is no ‘blank’ key.

Views: 3

]]>
/turn-off-the-display-of-ubuntu-server/feed/ 0
Ubtunu下的Qemu/KVM客户机获取主机网段地址 /ubtunu%e4%b8%8b%e7%9a%84qemu-kvm%e5%ae%a2%e6%88%b7%e6%9c%ba%e8%8e%b7%e5%8f%96%e4%b8%bb%e6%9c%ba%e7%bd%91%e6%ae%b5%e5%9c%b0%e5%9d%80/ /ubtunu%e4%b8%8b%e7%9a%84qemu-kvm%e5%ae%a2%e6%88%b7%e6%9c%ba%e8%8e%b7%e5%8f%96%e4%b8%bb%e6%9c%ba%e7%bd%91%e6%ae%b5%e5%9c%b0%e5%9d%80/#respond Sun, 14 Dec 2025 05:07:04 +0000 /?p=1425 懒得看,直接上命令

bridge link
nmcli con show | egrep 'br0|bridge-slave'
ip -br addr
sudo nano /etc/netplan/*.yaml # should be 01-network-manager-all.yaml
sudo chmod 600 /etc/netplan/01-network-manager-all.yaml
sudo chown root:root /etc/netplan/01-network-manager-all.yaml
sudo netplan generate
sudo netplan apply
nmcli dev status
ip link show br0
/etc/netplan/01-network-manager-all.yaml
network:
  version: 2
  renderer: NetworkManager

  ethernets:
    enp2s0:
      dhcp4: no
      dhcp6: no

  bridges:
    br0:
      interfaces: [enp2s0]
      dhcp4: yes
      dhcp6: yes

最后得到br0塞进去就行了

Views: 12

]]>
/ubtunu%e4%b8%8b%e7%9a%84qemu-kvm%e5%ae%a2%e6%88%b7%e6%9c%ba%e8%8e%b7%e5%8f%96%e4%b8%bb%e6%9c%ba%e7%bd%91%e6%ae%b5%e5%9c%b0%e5%9d%80/feed/ 0
小记2025-10-1 /%e5%b0%8f%e8%ae%b02025-10-1/ /%e5%b0%8f%e8%ae%b02025-10-1/#respond Thu, 02 Oct 2025 14:47:40 +0000 /?p=1413

记录一下这个混沌又紧张的学期。

学习氛围丢失,求职不利,未来规划和家里冲突,卧病十几天,作业和学习现在还跟不上,然后运气爆棚黑客马拉松胜利,这个学期剩下的部分估计就是做不完的大作业,几乎没有期末考试,假期就能解放了。

感觉这个学期一直疲于应付生活,无论是生理还是心理都跌入谷底,虽然想了很多,思绪纷飞,但是最终如云烟一般,在情绪波动结束之后就无影无踪。直到上周末运气爆棚,黑客马拉松胜利,今天才又拿起键盘,遵循内心纯粹的想法,继续把丢掉的博客拾起来。既然这样,就从眼前的黑客马拉松开始吧。

先说下过程,基本就是不抱希望,被中国兄弟邀请参加,随机到了俩本地技术大佬,又有一个本地女生加入,这样五个人的梦之队就成型了。然后第一天晚上讨论选题(这里我就很抑郁没啥想法,再加上本来就没有希望和激情)之后,有个哥们当天晚上用python弄出来个demo,第二天我看到之后有了概念,想到移动端的用户需求,就拿着cursor和gpt互相辅助开发,配合他们的api一天搓出来了一个安卓app,然后我又想到我还有个安卓86盒开发板,第三天也就是demo那天就拿去适配手机app了。期间也很紧张,别展示的时候出问题,对我来说,特别是手机热点(会自动关闭)和安卓盒子(系统太老,ui有bug,还没有电池)千万别出问题,还得好好看着电源,手心冒汗啊!

这次比赛有一说一听到自己被拼错的组名(世界就是个草台班子,后来主持人直接跑到我领英帖子下面认错笑死了),感觉赢的很突然,我们组员也是顿了几秒钟,才走上台领奖。我特别想点名这俩本地哥们是真的猛,有想法和技术和经验,能这么快搓出来两版(py和ts)的后端。于是加了领英看到了他们的经历和简历,都是有想法有实习经验而且纯粹积极自主学习的技术人,这就不奇怪了。

主观上来说,这次胜利简直就是一束光让我抑郁甚至绝望的灵魂一点鼓励。当然,我也心安理得接受,因为我的安卓开发移动开发确实是外表最光鲜(好直接跑手机上给评委展示,开发板直接蜂鸣器增强感官冲击)的部分,而且平台广泛,最后付出占比当然也不低。

然后就可以回到这个黑暗的学期谈谈故事和思考了。这个学期最挣扎和转折的地方莫过于第一次黑客松引出的留澳洲问题(并不是没有偏向甚至拒绝,而是改变模式和精神状态)。如果以留在澳洲为究极目标,就没法遵循(我作为学生的)内心,需要去刻意社交,找实习,参加会议,追逐政策,封锁学历上限,再砸时间,才可能会让后半生生活在压力更小的环境当中。如果不留,那就做好一个学生光明磊落在学校好好努力。思考这个问题的背景是学期前半部分,我花费了太多精力在实习社交和黑客马拉松上面,导致没有了学习的状态,不会听课不会做作业分数是一落千丈,然后状态就一直没有回来。举个例子,这么算,我这个学期就参加了两个黑客马拉松,算上喘口气的一天基本也就完全一个星期没有了,再找实习光IGP这一个项目就占用完整的三天,更别说加上自己写简历,翻译博客,等老师的推荐。

虽然这个学期第一次黑客马拉松没拿奖,但是让我观察了一个公司从打工的到基层员工到技术到管理到本地的资本家这一个社会等级链,再加上社会礼节/文化。说实话,这样强烈的对比让我感觉很无所适从,其实这也是我第一次如此近距离观察西方社会,给我的冲击也是很大的。注意这里我并不是说哪个人群不好或者哪个文化就不好,只是说不一样就会让我自己思考。回去之后我就问自己我真正的想法是什么,我能接受什么不能接受什么,一直再后面观察和推动我的家长看的到吗?他们能理解吗?他们的决定和信息到底有没有价值?我是感觉如果一个人开始对社会和人际关系进行思考和怀疑的时候,也是最需要心平气和去发掘内心加上理性讨论的,尤其是对我这种大学生,新兵蛋子。我最想干的事情就是作为他们的眼睛给他们信息,反馈,内心最真实的感受,然后去获取和比较他们比我多二三十年的人生经验。然后冲突就开始了。设想一下,虽然我没拿奖,但是好歹也是没拿奖的第一名,真的就差一点。而且这次黑客马拉松我也用尽了浑身解数,三天高强度运转熬夜也没怎么休息,和新的小伙伴发挥配合的很好!打完架之后接着乙流高烧,直接躺床上一个星期,严重的时候一个字都说不出来,还是宿管帮我找的GP(宿管姐姐人真好!这也是住校内宿舍的福利之一吧!谢谢你!),给我提醒怎么申请作业延期。这样看就是急火功心,道心破碎直接人垮掉了。当然,现在不论是从结果还是逻辑来看,我是正确的,只不过也是被窝囊恶心加上气了个半死,然后又浪费一周,学习状态更差罢了。

回到学校来,课程也不容乐观,要么是数据库这种玄学玩意儿(而且老师讲的一般),要么就是面向对象(非常好的课就是需要用心体会设计模式和编码规范),还有安卓开发(老师的风格和上课信息密度分布很奇怪),最后再来个本来就难的要死的计算机理论,系主任上课还完全不讲课程内容而且作业形式是小组。这套组合拳下来,我直接不会学习了。回想上个学期的算法分析,操作系统,数据结构,计算机网络虽然也很难但是我的心思在上面,其实还是比较幸福的。不过就像上段说的,现在摆正自己的心态,相信自己的判断,定位和特长,并非没有机会收尾这个学期。

紧接着就是奖学金吧,还是奖学金在第一次黑客松在前面,忘记了,也不重要。回想起来这也算我心理的慰藉,刚好把我这个学期买工作站的钱填上了,有了这个24h都能稳定跑的工作站台式机,开发尤其是安卓开发+嵌入式linux都省事了不少,甚至如果有钱可以搞个计算卡炼丹。

先这样吧,时间到了,第二天就不继续写啥内容了。

Views: 13

]]>
/%e5%b0%8f%e8%ae%b02025-10-1/feed/ 0