Atlas OS

Install Atlas

前言 受够了 Windows 永无止境更新?受够了 Windows 乱七八糟的各种预装软件?受够了微软的套壳浏览器占用系统资源?只想要一个干净的系统打游戏?或者你的电脑比较老旧跑新版本的 Windows 有点卡顿?你需要 Atlas OS! 什么是 Atlas OS Atlas OS 是一个基于 Windows 10 定制的操作系统,旨在为游戏玩家提供更优秀的游戏性能和更低的延迟。它删除了许多非必要的系统组件和后台进程,从而节省了大量系统资源,使其更适合于专门的游戏 PC 或 Steam Deck 等游戏主机。Atlas OS 是一个开源、免费的项目,旨在优化性能、隐私和安全。 如何下载 不同于常规的操作系统,Atlos OS 没有提供 iso 选项,这是由于对 Windows 镜像进行修补并再分发违反了微软的协议,Atlos OS 官方无法直接提供修改过后的系统。相反,你需要下载如下文件: AME Wizard Atlas Playbook 上面的文件在 Atlas OS 官网 首页即可找到,请尽量前往官网下载更新版本的 Atlos OS。其中 AME Wizard 相当于是安装器,而 Atlas Playbook 相当于是安装脚本。 安装完 Windows 后,运行 AME Wizard,它会按照 Atlas Playbook 对系统进行一系列的魔改,以实现安装的目的,并规避版权问题。 Atlas OS 删除了很多系统的功能,它甚至删除了蓝牙和 WiFi 功能,可谓是极致极简。如果你对某些功能有需求,可以在安装完成后执行 Atlos OS 提供的脚本恢复你想要的功能。 安装步骤 按照正常流程安装 Windows 10 22H2 安装过程断网,不登陆微软账号 安装硬件驱动,确保电脑可以正常使用 打开 AME 工具 把 aptx 脚本拖入 按照软件指示下一步 重启后软件会自启动 安装完成后可以删除安装工具 执行桌面下 atlas 的脚本可以启用一些需要的功能 可能遇到的问题 在第 7 步可能会由于网络问题,程序会无限循环,这不是 Atlos OS 引发的问题,请使用畅通的国际网络。 ...

二月 6, 2024 · Aimer Neige

如何禁止电脑开机时自动连接蓝牙耳机

前言 由于电子设备比较多,蓝牙耳机配对的设备也比较多,这就引起了一个问题,本来连着手机听歌听的好好的,电脑开机之后就会自动抢占蓝牙耳机的信号,导致我还得重新在手机上连接耳机,严重影响听歌体验,于是就查询了如何禁用电脑自动连接的行为,希望这篇文章对你也有用。 如何操作 编辑 /etc/bluetooth/main.conf 这个文件: sudo vim /etc/bluetooth/main.conf 找到这些内容: # AutoEnable defines option to enable all controllers when they are found. # This includes adapters present on start as well as adapters that are plugged # in later on. Defaults to 'true'. # AutoEnable=true 修改配置文件,禁用自动连接: AutoEnable=false 重启设备,测试效果。

四月 17, 2023 · Aimer Neige
Friend Link

在 PaperMod 博客中添加友链

PaperMod 是一个非常棒的博客主题,但是它不支持友链,所以你要自己写一些代码。 完整代码 把下面的代码存储在 layouts/shortcodes/friends.html <style type="text/css"> .friends { --link-count-per-row: 1; } @media screen and (min-width: 576px) { .friends { --link-count-per-row: 2; } } @media screen and (min-width: 768px) { .friends { --link-count-per-row: 3; } } .friends { display: grid; grid-template-columns: repeat(var(--link-count-per-row), 1fr); grid-gap: 16px; } /* 空间占位 */ .friend-skeleton { height: 280px; display: inline-block; position: relative; } .friend { height: 100%; width: 100%; position: absolute; top: 0; left: 0; transition: 0.67s cubic-bezier(0.19, 1, 0.22, 1); border-radius: var(--radius); box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12) !important; overflow: hidden; display: flex; flex-direction: column; justify-content: flex-start; align-items: center; } .friend:hover { transform: translateY(-8px); box-shadow: 0 3px 5px -1px rgba(0, 0, 0, 0.2), 0 5px 8px 0 rgba(0, 0, 0, 0.14), 0 1px 14px 0 rgba(0, 0, 0, 0.12) !important; } .friend-avatar { object-fit: cover; width: 100%; height: 180px; margin: 0 !important; border-radius: 0 !important; } .friend-content { text-align: center; flex: 1; width: 100%; padding: 16px; background: var(--entry); transform: translate3d(0, 0, 0); } .friend-name { font-size: 1.2rem; font-weight: bold; transform: inherit; } .friend-description { font-size: 0.8rem; color: var(--secondary); transform: translate3d(0, 0, 0); } </style> <div class="friends"> {{ range .Site.Data.friends }} <div class="friend-skeleton"> <a href="{{ .link }}" target="_blank"> <div class="friend"> <img class="friend-avatar" src="{{ .image }}" /> <div class="friend-content"> <div class="friend-name">{{ .title }}</div> <div class="friend-description">{{ .intro }}</div> </div> </div> </a> </div> {{ end }} </div> <!-- style code by https://github.com/fissssssh --> <!-- view https://github.com/fissssssh/fissssssh.github.io for more detail --> 用法 在 data/friends.yml 中添加你的友链数据,示例: - title: "伞" intro: "一只咸鱼的学习记录" link: "https://umb.ink/" image: "https://avatars.githubusercontent.com/u/53655863?v=4" - title: "HelloWorld的小博客" intro: "这里是一个小白的博客" link: "https://mzdluo123.github.io/" image: "https://avatars.githubusercontent.com/u/23146087?v=4" 在 Post 中按如下方式引用即可: {{< friends >}} ...

三月 12, 2023 · Aimer Neige
lxgw

在 PaperMod 博客中设置自定义字体

下载字体 下载你需要的字体,并存储在 static/fonts 导入字体 @font-face { font-family: "LXGWWenKai-Regular"; src: url("/fonts/lxgw-wenkai/LXGWWenKai-Regular.ttf") format("truetype"); } 应用字体 body { font-family: LXGWWenKai-Regular; } 在 PaperMod 中应用 把你自己的 css 文件文件放在 assets/css/extended/custom_fonts.css 导入多字重的字体文件 @font-face { font-family: "LXGWWenKai"; src: url("/fonts/lxgw-wenkai/LXGWWenKai-Light.ttf") format("truetype"); font-weight: lighter; font-style: normal; } @font-face { font-family: "LXGWWenKai"; src: url("/fonts/lxgw-wenkai/LXGWWenKai-Regular.ttf") format("truetype"); font-weight: normal; font-style: normal; } @font-face { font-family: "LXGWWenKai"; src: url("/fonts/lxgw-wenkai/LXGWWenKai-Bold.ttf") format("truetype"); font-weight: bold; font-style: normal; } 使用 CDN @import url('https://cdn.jsdelivr.net/npm/jetbrains-mono@1.0.6/css/jetbrains-mono.min.css'); code { font-family: 'JetBrains Mono'; } 参考链接 Sulv’s Blog - Hugo博客自定义字体 PaperMod - FAQs StackOverflow - Using custom fonts using CSS? StackOverflow - Multiple font-weights, one @font-face query GitHub - lxgw/LxgwWenKai

三月 2, 2023 · Aimer Neige
go banner

如何给 Go 的结构体添加多个 tag

本来很简单的东西,但是老忘,干脆写个博客吧 错误写法 type Page struct { PageId string `bson:"pageId",json:"pageId"` Meta map[string]interface{} `bson:"meta",json:"pageId"` } 正确写法 type Page struct { PageId string `bson:"pageId" json:"pageId"` Meta map[string]interface{} `bson:"meta" json:"pageId"` } 很多 Tag Items []Item `gorm:"column:items,type:varchar(255);comment:'sample column'" json:"items"` 参考链接 StackOverflow - How to define multiple name tags in a struct

二月 26, 2023 · Aimer Neige
Golang Context

Golang Context

前言 有时我们要通过第三方服务获取数据,它可以是外部提供的 API,也可以是微服务的接口等等,总之,它们有相同的问题:“获取数据可能需要大量时间”。如果在代码中同步地获取这些数据,程序就会花时间等待这些服务响应,而这些等待会严重影响程序的运行效率,而且一旦这些服务崩溃,我们的程序就会陷入无休止的等待中,那么如何解决这个问题呢?可以使用 Go 的 context 包。 问题 我们用这个函数来替代那些第三方服务。我们直接使用 time.Sleep() 函数来模拟一个耗时过程,在现实场景中,它可能是在执行一个非常复杂的 SQL 查询,也可以是调用一个人工智能服务接口。当然,这个耗时是不确定的,甚至有可能是无穷大(卡死)。 func fetchThirdPartyStuffWhichCanBeSlow() (int, error) { time.Sleep(time.Millisecond * 500) return 64, nil } 如果我们不做任何处理,直接调用这个函数,就像这样: func foo() { // some code here ... val, err := fetchThirdPartyStuffWhichCanBeSlow() if err != nil { log.Fatal(err) } // some code here ... } 上面的代码如果用在一些只执行一次的脚本、工具中,并不会带来严重后果,无非多等一下就好了,即使有问题也可以关掉程序检查一下第三方服务。但是如果上面的代码用在一个承载大流量的 web 服务中,程序在执行完耗时代码后还要继续执行一些重要的业务功能,那么这样直接调用而不加考虑的代码很可能是致命的。一旦第三方服务出现问题,程序没有任何机制检查和处理,而是直接陷入无休止的等待。这显然是不合理的。 解决方案 要解决上述的问题,比较常见的思路是引入一个主动停止耗时服务的功能,这样如果耗时函数花了太多时间执行,程序就可以感知到,并主动干预。 在后文中,我们假设我们要使用用户的 ID 访问用户的数据,且调用三方服务的代码被单独封装为 fetchUserData()。 使用 Channel 如果不使用本文要介绍的 Context,传统的思路是使用 Channel + Select 来处理: type Response struct { value int err error } func fetchUserData(userID int) (int, error) { stop := make(chan bool) respch := make(chan Response) go func() { val, err := fetchThirdPartyStuffWhichCanBeSlow() respch <- Response{ value: val, err: err, } }() go func() { time.Sleep(time.Millisecond * 200) stop <- true }() for { select { case <-stop: return 0, fmt.Errorf("fetching data from third party took to long") case resp := <-respch: return resp.value, resp.err } } } 这里我们使用 stop 这个 Channel 来发送停止信号,在程序执行超过指定时间时关掉终止等待并报错,而 respch 用来接受返回值。在程序的最后,使用 select 来接受 Channel 的信号,当检测到超时或执行完成时返回结果。 ...

二月 3, 2023 · Aimer Neige
Minecraft Java Edtion

如何搭建 Minecraft Mod 服务器

使用 PaperMC 安装 PaperMC 下载 PaperMC 提供的 jar 包,存储在恰当位置即可。 启动 PaperMC java -Xms2G -Xmx2G -jar paper.jar --nogui 下面是官方提供的优化后的启动脚本: java -Xms10G -Xmx10G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar paper.jar --nogui 安装 datapack 关掉已启动的服务器,将 datapack 存储在 papermc/world/datapacks 文件夹下,重启服务器即可。(如果不存在就新建一个) 安装插件 关掉已启动的服务器,将下载好的插件存储在 papermc/plugins 文件夹下,重启服务器即可。(如果不存在就新建一个) 配置服务器 PaperMC 提供了非常多的服务器修改配置,具体请查阅 官方文档。 对于 mod 的说明 PaperMC 并不兼容 Fabric 的 mod。如果需要使用 Fabric 的 mod,请参考下面的内容使用 Fabric 服务器。 ...

一月 26, 2023 · Aimer Neige
Desktop File

如何编写 .desktop 文件

前言 在 Linux 系统中,经常会遇到一些软件只提供了可执行文件,而并没有提供可以通过包管理安装的途径,常见于 AppImage 封装的软件,这时候每次需要运行软件都需要通过终端来执行,非常麻烦。不过这个问题可以通过手动编写 .desktop 文件来解决,这样这些可执行文件就可以和其他软件一样拥有桌面图标。 用法 使用 vim 或其他文本编辑器直接编写 .desktop 文件后将其置于如下路径之一即可: /usr/share/applications/ /usr/local/share/applications/ ~/.local/share/applications/ 示例 来自 Arch Linux Wiki 的示例 [Desktop Entry] # The type as listed above Type=Application # The version of the desktop entry specification to which this file complies Version=1.0 # The name of the application Name=jMemorize # A comment which can/will be used as a tooltip Comment=Flash card based learning tool # The path to the folder in which the executable is run Path=/opt/jmemorise # The executable of the application, possibly with arguments. Exec=jmemorize # The name of the icon that will be used to display this entry Icon=jmemorize # Describes whether this application needs to be run in a terminal or not Terminal=false # Describes the categories in which this entry should be shown Categories=Education;Languages;Java; 其中,Type 和 Name 是必须的,其他都是可选项。 ...

一月 25, 2023 · Aimer Neige
Minecraft Java Edtion

如何搭建你自己的 Minecraft 服务器

阅前须知 本文章面向具有一定运维经验的用户,不面向小白 本文章介绍的 Minecraft 是 Java 版本的 Minecraft 本文章只介绍纯净服的搭建,不会说明如何安装 mod 如非特殊说明,本文中出现的 “我的世界” 均指代 Minecraft 的中文翻译,而不是由网易代理的 “我的世界” 准备 可供外部连接的服务器 基础 Linux 知识 安装 首先要确定你的服务器是否可以被外部连接 有公网 IP 如果你有公网 IP,可以直接使用你的主机作为服务器,相当于你有一台私有的云服务器。 没有公网 IP 如果你没有公网 IP,你需要购买一台云服务器,这样,你就拥有了一个可供外部连接的公网 IP。 如果你对服务器配置要求较高,本地也有闲置主机可以用来跑 Minecraft 服务器,可以通过 frp 将本地的主机穿透出去,以供外部连接。这样云服务器的配置就可以很低,只负责转发网络数据。 如果你对服务器的配置要求不高,也不想本地 24 小时开着一台机器,可以直接使用云服务器来跑 Minecraft 服务器。 至于你需要多高的配置来运行 Minecraft 服务器,可以参考 Wiki 的内容: 确保服务器可以被外部连接后,安装 Minecraft 下载服务器文件 在 官网 下载服务器运行所需的 jar 文件。 官方只提供最新版的文件,如果你需要历史版本,使用官方启动器下载。 运行服务器 直接使用官网的示例指令运行 jar 文件: java -Xmx1024M -Xms1024M -jar minecraft_server.1.19.3.jar nogui 如果你有更高的内存,可以修改 -Xmx1024M -Xms1024M 这一部分。 第一次执行后,需要同意用户协议才可以继续执行,修改 eula.txt 这个文件,将 eula=false 改为 eula=true。 ...

一月 12, 2023 · Aimer Neige
Ubuntu qBittorrent-nox

在 Ubuntu 服务器上安装 qBittorrent-nox

在 Ubuntu 服务器上安装 qBittorrent-nox 更新系统 sudo apt update && sudo apt upgrade -y 导入 qBittorrent-nox 稳定版本的源 sudo add-apt-repository ppa:qbittorrent-team/qbittorrent-stable -y 导入 qBittorrent-nox 非稳定版本的源(每夜版) sudo add-apt-repository ppa:qbittorrent-team/qbittorrent-unstable -y 更新源 sudo apt update 安装 qBittorrent-nox sudo apt install qbittorrent-nox -y 创建用户和用户组 sudo adduser --system --group qbittorrent-nox # on fedora sudo groupadd qbittorrent-nox 将你添加到用户组中 sudo adduser your-username qbittorrent-nox # on fedora sudo usermod -aG qbittorrent-nox your-username 创建 service 文件 sudo vim /etc/systemd/system/qbittorrent-nox.service [Unit] Description=qBittorrent Command Line Client After=network.target [Service] Type=forking User=qbittorrent-nox Group=qbittorrent-nox UMask=022 ExecStart=/usr/bin/qbittorrent-nox -d --webui-port=8080 Restart=on-failure [Install] WantedBy=multi-user.target 重载 systemctl sudo systemctl daemon-reload 启动 qBittorrent-nox sudo systemctl start qbittorrent-nox 开启开机自启动 qBittorrent-nox sudo systemctl enable qbittorrent-nox 检查 qBittorrent-nox 是否启动 systemctl status qbittorrent-nox 登录到 qBittorrent-nox Item Value username admin password adminadmin 如何删除 qBittorrent-nox # Remove qBittorrent Stable sudo add-apt-repository --remove ppa:qbittorrent-team/qbittorrent-stable # Remove qBittorrent Unstable (Nightly) sudo add-apt-repository --remove ppa:qbittorrent-team/qbittorrent-unstable -y # Remove qBittorrent sudo apt autoremove qbittorrent-nox

十一月 11, 2022 · Aimer Neige