机械境

这里只是我的后花园,随性而写

A curated list of replacements for existing software written in Rust.

System Tools

  • zoxide - A smarter cd command, alternative to autojump/z
  • bat - A cat(1) clone with wings
  • tokei - Count your code, quickly (alternative to cloc)
  • xcp - An extended cp
  • fd - A simple, fast alternative to ‘find’
  • exa - A replacement for ‘ls’
  • procs - A modern replacement for ps
  • bottom - Yet another cross-platform graphical process/system monitor

Text Processing and Viewing

  • ripgrep - Fast alternative to grep
  • delta - A viewer for git and diff output
  • hexyl - A command-line hex viewer
  • sad - CLI search and replace | Space Age sed

Development Tools

  • starship - The minimal, blazing-fast, and customizable prompt for any shell
  • alacritty - A cross-platform, OpenGL terminal emulator
  • zellij - A terminal workspace with batteries included (tmux alternative)
  • gitui - Blazing fast terminal-ui for git
  • just - A command runner and partial replacement for make
  • dprint - Pluggable and configurable code formatting platform

Utilities

  • xh - Friendly and fast tool for sending HTTP requests (httpie alternative)
  • tealdeer - A very fast implementation of tldr
  • broot - A better way to navigate directories

Applications

  • youki - An experimental container runtime

These Rust-based alternatives often provide improved performance, more features, and better user experiences compared to their traditional counterparts, showcasing Rust’s capabilities in systems programming and application development.

---EOF---

介绍

mise 是一个现代化的开发工具版本管理器,可完美替代 asdf。它提供了更快的性能和更丰富的功能,用于管理多种编程语言、工具和框架的版本,包括但不限于:

  • Bun
  • Deno
  • Node.js
  • Go
  • Rust
  • Python

mise 的主要优点包括:

  • 高性能: 比 asdf 更快,使用 Rust 编写。
  • 兼容性: 与 asdf 插件和配置文件兼容,同时支持 cargo,go,npm 等生态。
  • 增强功能: 提供了更多高级功能,如任务运行器和环境变量管理。
  • 易于使用: 具有直观的命令行界面和配置文件格式,不需要单独安装 plugin。
Read more »

前提

需要一个域名,并且域名托管在 Cloudflare 上。

部署

  1. 克隆 https://github.com/gythialy/cloudflare-docker-proxy 到本地

  2. 替换 example.com 为自己的域名

    1
    2
    3
    4
    5
    sed -i 's/example.com/${your_domain}/g' src/index.js
    sed -i 's/example.com/${your_domain}/g' wrangler.toml
    # for macOS
    # sed -i '' 's/example.com/${your_domain}/g' src/index.js
    # sed -i '' 's/example.com/${your_domain}/g' wrangler.toml
  3. yarn 安装依赖

  4. npx wrangler deploy 部署

使用

  • 拉取 busybox:stable
    1
    2
    # docker pull busybox:stable
    docker pull docker.example.com/library/busybox:stable
  • 设置 docker registry 镜像
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    sudo mkdir -p /etc/docker
    sudo tee /etc/docker/daemon.json <<-EOF
    {
    "registry-mirrors": [
    "https://docker.example.com",
    ]
    }
    EOF
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    # 拉取镜像
    docker pull busybox:stable

    注:docker.example.com 都需要替换为自己的域名。

---EOF---

前言

OxygenOS 中没国产市场的 app,现在好多 app 并没有在 Google Play 发布。因此可以从 ColorOS 镜像中提取出来,方便安装。

准备

  • 根据 在 macOS 平台把一加 12 ColorOS 转换为国际版 中的方法,把 从 ColorOS 的 payload.bin 中提取 my_开头的 img 文件。
  • 安装 OrbStack,然后创建一个 Ubuntu 虚拟机
    1
    2
    orb create ubuntu my-ubuntu # 创建虚拟机
    orb -m my-ubuntu-u root # SSH 到虚拟机

提取

1
2
3
4
mkdir -p /mnt/my_heytap # 创建挂载点
mount -o loop -t erofs app/my_heytap.img /mnt/my_heytap #挂载 `img` 文件
find /mnt/my_heytap/ -name "*.apk" # 查找 apk 文件
cp /mnt/my_heytap/priv-app/KeKeMarket.apk $HOME/apk/ # 复制到本地

总结

通过挂载 img 文件系统到 Linux 系统,然后从中提取 apk 文件。这里是以 my_heytap 为例,其他分区也可以用同样的方法。

---EOF---

前言

一加 11 之前的版本是可以在氢氧 OS 之间互相刷的,后来合并到 ColorOS 后,莫名增加了很多门槛。在大多数教程中都是基于 Windows 平台。其实要线刷系统思路很简单,就是从 payload.bin 中解压出 img 文件,然后通过 fastboot 刷进去即可。

准备工作

  • 安装 adb
    1
    brew install android-platform-tools
  • 下载固件:从 XDA这篇文章中找到官方下载链,接,国内也有人做了分流。理论上来说都是安全的,如果有人修改了文件,签名验证应该过不了。
    • CPH2583 = US = 美版
    • CPH2573 = IN = 印度版
    • CPH2581 = EU&PU = 欧版

提取 img

这里以 CPH2581 为例,解压 zip 文件到文件夹 oneplus12 中。目录结构如下,FTH 为手动创建,用于存放提取出来的 img 文件,flash-all.sh 为刷机脚本。以下所有操作都是在 oneplus12 文件夹中。

1
2
3
4
5
6
➜ ll
.rwxr-xr-x@ 1.2k gythialy 22 May 11:16  flash-all.sh
drwxr-xr-x - gythialy 22 May 11:42  FTH
drwxr-xr-x@ - gythialy 22 May 10:04  META-INF
.rw-r--r--@ 6.6G gythialy 1 Jan 2009  payload.bin
.rw-r--r--@ 357 gythialy 1 Jan 2009  payload_properties.txt

提取工具为 payload-dumper-go,官方构建的二进制文件在 macOS ARM 平台会报错,所以下面基于 docker 镜像操作。镜像 latest tag 基于 d0b0efee72be 构建。

1
docker run -it --rm -v $PWD:/app/ -v $PWD/FTH:/FTH ghcr.io/gythialy/payload-dumper-go:latest -o /FTH /app/payload.bin
Read more »

Cloudflare Tunnel 是一种安全、可靠的内网穿透解决方案,允许您将内部网络中的应用程序和服务暴露到公共互联网。以下是使用 Cloudflare Tunnel 进行内网穿透的步骤:

1. 准备工作

  • Cloudflare 账号:需要一个 Cloudflare 账号,最好是绑定信用卡然后开通免费版本的服务。
  • Cloudflare Tunnel 应用程序:下载并安装 Cloudflare Tunnel 应用程序。您可以从 tunnel 获取最新版本。
  • 内网服务:确保您的内网服务正在运行,并且您知道服务的端口号。
  • 域名:您需要一个域名来访问您的内网服务。您可以使用您自己的域名,也可以使用 Cloudflare 提供的免费子域名。

2. 配置 Cloudflare Tunnel

  • 创建 Tunnel: 在 Cloudflare Tunnel 应用程序中,创建一个新的 Tunnel。
  • 配置 Tunnel: 在 Tunnel 配置中,您需要指定以下信息:
    • Tunnel 名称:为您的 Tunnel 命名。
    • 域名:指定您要使用的域名。
    • 服务端口:指定您内网服务的端口号。
    • 命令:指定启动您的内网服务的命令。
  • 生成证书: Cloudflare Tunnel 将自动生成一个证书,用于安全连接您的内网服务。

3. 示例:

假设您的内网服务是一个运行在端口 2001 上的 Web 服务器,您的域名是 example.com。以下是使用 Cloudflare Tunnel 进行内网穿透的步骤:

  1. 创建 Tunnel: 在 Cloudflare Tunnel 应用程序中,创建一个名为 HomeLab-tunnel 的 Tunnel,并获取 tunnel 的 token。

  2. 配置 Hostname: 在 Tunnel 配置中,指定以下信息:

    • 域名: whoaim.example.com
    • 服务: http://whoami:2001
  3. 部署 Tunnel: 在您的内网服务器上安装并启动 Cloudflare Tunnel 应用程序。

  4. 验证连接:使用 https://whoaim.example.com 访问您的 Web 服务器,确保连接正常。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    version: '3.9'

    services:
    whoami:
    image: traefik/whoami
    command:
    # It tells whoami to start listening on 2001 instead of 80
    - --port=2001
    - --name=iamfoo
    networks:
    - nginx-proxy

    tunnel:
    container_name: cloudflared-tunnel
    image: cloudflare/cloudflared:2024.5.0
    user: root
    restart: unless-stopped
    read_only: true
    volumes:
    - ./cloudflared:/root/.cloudflared/
    command: tunnel --no-autoupdate run --token ${TUNNEL_TOKEN}
    networks:
    - nginx-proxy

    networks:
    nginx-proxy:
    external: true

注: 这里是用的是在线配置的方式,也可以通过离线配置的方式,配置文件放到 cloudflared 目录即可。

4. 总结:

Cloudflare Tunnel 提供了一种安全、可靠的内网穿透解决方案,可以帮助您轻松地将内部网络中的应用程序和服务暴露到公共互联网。通过遵循上述步骤,您可以轻松地配置 Cloudflare Tunnel,并享受其带来的便利和安全性。

---EOF---

之前在 通过 GitHub Actions 自动部署 Hexo,通过创建两个不同的分支,raw 分支存储原始的 Hexo 项目,master 分支存储 hexo generate 编译出来的静态页面,通过 hexo deploy 来部署。由于使用了 hexo deploy 需要设置部署用的 SSH 密钥。

下面的办法更简单,不需要做额外的设置,Hexo 项目在 main 分支,不需要再添加其他分支。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
name: Hexo deploy

on:
push:
branches:
- raw
- main

jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- name: Use Node.js (.tool-versions)
uses: actions/setup-node@v4
with:
node-version-file: ".tool-versions"
- uses: pnpm/action-setup@v3
name: Install pnpm
with:
version: 8
run_install: false
- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- uses: actions/cache@v4
name: Setup pnpm cache
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Install Dependencies
run: pnpm install
- name: Build
run: pnpm run build
- name: Upload Pages artifact
uses: actions/upload-pages-artifact@v3
with:
path: ./public
deploy:
needs: build
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4

---EOF---

在折腾过 antigenantidotesheldon 等 Zsh 的包管理器之后,我发现我主要使用的还是 oh-my-zsh。那就回归本源,再加上现在 oh-my-zsh 也可以自定义 Plugin。

1
2
3
4
5
6
7
8
9
# install oh-my-zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# install oh-my-zsh custom plugins
git clone --depth=1 https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
git clone --depth=1 https://github.com/zsh-users/zsh-completions $ZSH_CUSTOM/plugins/zsh-completions
git clone --depth=1 https://github.com/zsh-users/zsh-syntax-highlighting $ZSH_CUSTOM/plugins/zsh-syntax-highlighting
# install spaceship
git clone --depth=1 https://github.com/spaceship-prompt/spaceship-prompt.git $ZSH_CUSTOM/themes/spaceship-prompt
ln -s "$ZSH_CUSTOM/themes/spaceship-prompt/spaceship.zsh-theme" "$ZSH_CUSTOM/themes/spaceship.zsh-theme"

.zshrc 中 通过 plugins 配置需要启用的插件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
export ZSH="$HOME/.oh-my-zsh"
DISABLE_MAGIC_FUNCTIONS=true
ZSH_THEME="spaceship"
plugins=(
command-not-found
common-aliases
docker
git
bun
npm
yarn
kubectl
asdf
thefuck
zsh-autosuggestions
zsh-syntax-highlighting
zsh-completions
)
source $ZSH/oh-my-zsh.sh
1
2
# 设置别名更新 omz 插件
alias update-omz-plugins='[ -n "$ZSH_CUSTOM" ] && [ -d "$ZSH_CUSTOM" ] && find "$ZSH_CUSTOM" -type d -name ".git" -exec sh -c "cd \"{}\"/../ && echo Updating {} && git pull --rebase" \;'

---EOF---

0%