Reading view

There are new articles available, click to refresh the page.

我的 2023

关于工作

今年是全职维护 Halo 的第二年, 也是 Halo 快速成长的两年,这两年 Halo 的成长可以说比以前任何时间段都要快(虽然一共才 5 年),这如果要放在以前非全职的时候,当前 Halo 的状态我们可能花个三四年都达不到,虽然目前 Halo 依旧有很多可优化的空间。

关于 Halo 2023 年的一些总结

  1. 一共发布了 12 个版本,截止到当前编写此文,即将发布 2.12。

  2. Star 达到 30k。

  3. 终于上线了可用的应用市场,包括内置版,用户可以非常方便的下载和更新插件/主题。

  4. 应用市场支持付费应用,这为我们带来了一部分收益,但远远没有达到养活我们自己的地步。

  5. 插件和主题数量得到提升,也有了越来越多的社区开发者。

今年的一些规划

  1. 应用市场支持开发者入驻,包括发布付费应用。

  2. 通过第一点,继续推进 Halo 的生态发展。

  3. 尝试一些其他的商业模式,争取达到一个正向循环。

  4. 对 Halo 本身的功能和稳定性进行持续优化。

  5. 重视文档。

虽然 Halo 需要推进一些商业模式来得以存活,但我们最大的坚持就是保证 Halo 本身的纯净和优雅,可以从我们应用市场看出,即便是我们提供了服务的应用市场内置版本,也是通过插件的形式集成到 Halo 的,如果用户不喜欢,完全可以直接卸载,不会有任何影响。

一些反思,以下是我们需要一直反思的事情:

  1. Halo 的定位和面向群体。

  2. Halo 是否真的满足了建站的需求,还是仅仅是内容管理。

  3. 基于第二点,为什么 Slogan 是突出的建站,但我们直到 2.12 还是没有针对页面进行一些有用的功能开发,比如可视化编辑网页内容。

  4. 可持续的商业模式。

好了,以上是关于 Halo 的一些总结和反思,以下是我个人的一些工作终结,直接看图吧。

来年对我自己的期望:

  1. 继续深耕技术,需要对巩固很多基础知识。

  2. 改变对产品某些地方的思维方式,尝试一些新的东西。

  3. 提高效率,需要加强对工作优先级的判断。

  4. 开始了解一些运营和商业的知识,对于一个做技术的人来做,这一步真的很难迈出。

关于生活

依旧蓉飘中,这应该是是在成都的第 5 年了,成都虽然比不上北上广深那样的快节奏,但这主要还是分人吧,这两年基本上都投入到工作上了。

生活依旧很平淡,希望今年可以稍微改变一下。

今年最大的事应该就是结婚啦~

一些分享

在这里分享一下在 2023 年用过的一些好软件、好的日用产品等。

App

1. Raycast

https://www.raycast.com/

Raycast 其实已经用了很久了,从最开始发布的时候就一直在用,已经成为了日常必备,不管是用来启动 App,还是利用其中的插件来完成一些其他 App 的集成,都非常好用。尤其是这个产品的细节,非常打动我,这个产品是我学习的对象。

贴一张来自 Raycast 的年终使用报告吧。

2. OrbStack

https://orbstack.dev/

一个 Docker 以及 Linux 虚拟机的管理软件,非常轻量,没有官方 Docker Desktop 那样臃肿和那么多问题。这目前也是我的日常必备了,尤其是 Linux 虚拟机,如果我需要在 Linux 上测试一些东西,直接创建一个新的 Linux 实例即可,非常快速。

开源软件/库

1. TanStack Query

https://github.com/tanstack/query

一个非常好用的数据状态管理库,在此之前,我在页面上获取数据基本都只是通过 Axios 请求,然后手动管理数据的状态,一旦页面复杂一点,数据的获取和管理将会比较复杂,代码也不够简洁。用了这个库之后,可以非常容易的做到:

  1. 简化数据请求的逻辑,可以使用声明式(配置式)的写法完成数据的请求和管理。

  2. 数据缓存、数据共享(组件之间)、重复请求去重。

  3. 监听设备网络状态、窗口聚焦监听。

  4. 请求重试,支持自行编写逻辑。

  5. 定时请求,支持自行编写逻辑,这对异步接口(需要定时重新刷新数据)非常友好。

  6. 分页和滚动加载。

  7. 依赖请求。

类似的库还有 https://github.com/vercel/swr ,知道这个库是看了《为什么你不应该在 React 中直接使用 useEffect 从 API 获取数据》,非常好的一篇文章,有兴趣的话,建议详细阅读一遍。此外,我也在公司技术分享上浅浅的介绍了一下这个库,反响还不错。

2. VueUse

https://github.com/vueuse/vueuse

来自 Vue 和 Vite 的核心开发人员 https://github.com/antfu 的库,这个库利用 Vue 3 的 Composition API 封装了一系列的工具,非常好用。在 Halo 中我们用的比较多的:

  1. useLocalStorage:通常用于在浏览器临时保存一些用户偏好设置。

  2. useRouteQuery:通常用于在地址栏保存数据列表的筛选项,方便在用户切换路由或者刷新页面之后可以回到之前的查询状态。

  3. useFileDialog:用于简化上传文件的逻辑。

  4. useEventListener:再也不用担心在组件 unmounted 的时候取消注册事件。

非常钦佩 Anthony Fu 在开源社区做出的贡献,尤其是 Vue 和 Vite 生态。

3. unplugin-icons

https://github.com/unplugin/unplugin-icons

同样来自 https://github.com/antfu ,这是一个图标库,可以通过组件的方式引入,可以通过非常简单的配置上手。底层依赖于 https://iconify.design/ 作为图标集,基本涵盖了开源的常见图标集。除此之外,也可以通过配置来加载项目内的图标。

如果你使用 Tailwindcss,也可以尝试使用 tailwindcss-plugin-icons,同样依赖于 Iconify,这个库可以将 SVG 编译到最终的 CSS 产物中。这个库会在我写 Halo 主题的时候用到。

好物

1. Huadn 荞麦舒颈枕

近两年饱受颈椎问题困扰,经常会感到颈椎痛和甚至头晕,严重的时候早上起床之后都无法低头,一低头就非常刺痛。已经记不清去了多少次医院了,中医和西医都去过,还做了好几次针灸,但都没有根本解决问题,一段时间之后又会复发。于是开始怀疑是枕头的问题,于是在京东上东找西找发现了这个枕头,已经使用了大概五个月了,已经完全没有再颈椎痛过,只是偶尔会在久坐之后感到颈椎稍微有点僵硬。

原来这么久的颈椎问题是因为睡眠!可能是因为之前的枕头睡着会让颈部悬空,而这个枕头会刚好拖住我的颈椎。

如果你也有颈椎问题,不妨试着换个枕头。

2. 佳能 EOS RP 相机

在此之前,我一直以为我的 iPhone 拍照已经足够好,完全不需要相机,但购买之后发现相机拍出的质感是手机不能比的。不过 23 年没有太多机会出去玩,希望今年可以有空多出去走走。

3. 徕芬吹风机

非常佩服这家公司的产品,这个吹风机颜值高,转速快,可以让我早上早出门两分钟。

以上就是我 2023 的一些总结,希望 2024 更好!

从沙州中学到家

周四这一天过得飞快,20:30 晚自习结束的铃声准时响起,我们开始往住宿的地方走。回去还有约 2 公里的行程,大概需要步行半个多小时,此时,天已经完全黑了。我们一行人沿着白龙路一直往南走,很快走到了白水大桥。白水大桥坐落于国道 212 上, 是于 2008 年大地震后修的。从白水大桥上,可以看到两侧的白龙江。我所住的家庭的孩子告诉我,这里的水质曾经是出了名的好,鱼类也异常的丰富,因为人们过度捕捞和饲养,以及附近的工厂直接将未处理的污水直接排放,这里的水质逐年变差。现在,整个湖都已变成深绿色,谁能想象到这里的水曾经能一眼望到底……不过,今天不知道为什么,我还是多看了几眼,大概是因为我很快就要离开这里了吧。不知不觉已经过去了六天,再有一天我就要离开这里了。

虽然桥上有路灯,但是已经有一半都坏了。当地的孩子说,这些灯很久以前就坏掉了,也从来没人修过。走着走着,路灯彻底没有了,月光映出我们的影子。把我们的影子拉得长长的,说不出的孤寂,好像也在和我们告别着。

无论是白天还是夜晚,这里都非常安静。路上很难看到汽车,人们也普遍不走人行道而走马路上。红绿灯?这里一个都没有。夜空中的星星非常多,足以百计,当地的孩子不屑地告诉我:“这算什么!要是赶上晴天,星星要多好几倍!”

这里的景确实很美,据说即将也会开发成旅游景区,人们可以在这里享受清新的空气、享受钓鱼的乐趣、在湖中划船。从好的方面说,这的确能迅速发展这里的经济,但是也会吞噬这个沙州镇这一片净土。

不知不觉,我们已经走回住宿的地方,今天的情景还是挥之不去。明天,将是最后一个完整的日子了。晚自习的时候,我们组的三个人都留下了联系方式,也说了一些惜别的话,同学们都表达了自己不忍分别的情感,我们都非常感动。

再见!沙州镇!我会想念这个地方!想念这里的学生!还有那些留给我的珍贵回忆!

写下此文留作纪念。

从家到沙州中学

背景介绍:2016 年 4 月 9 日(周六),我所在的学校开展了青川社会实践活动,经历 1 天多的路途,来到了青川。这次活动共要教授 4 个课时的课程。我们班级所被分配到的是沙州初等中学。青川位于四川,是 2008 年四川地震的重灾区之一。

每天早上,我一般会在 05:45 时起床,在简单的准备后,就出发了。此时,虽然太阳还没有升起(日出时间大约为 06:30),却已经有微微曙光了。大多数星星已经变得不再可见,但是此时的路仍然很

难看清。路上可以听见鸟鸣和鸡叫,我们就一直向北走着。路过桥时,右侧已经可以看到金黄色的曙光,天就逐渐亮了起来,直到到了学校后,就开始准备跑步了,跑步之前也不需要什么准备活动,直接开始沿着操场跑。

操场虽不算很大,却足以容得下这个学校所有的班级。第一天(周一),我所任教的八年级二班由于多数同学都去县里踢足球赛了,直到周二才能回来。所以在这期间,这个班级只有自习课,我便只能到其他班级里听课。这里的老师讲课注重基础(文科),一堂课所涉及到的知识点不会很多,老师课堂提问和学生回答占据了课程中很大的比例。

在这一天的下午,我成功要到了一节数学课。在这一节课的前半部分,我讲了二元一次方程组(的第一课时),后半部分我给他们上习题课。上习题课的时候,我注意到他们其实并没有真正理解数学中的一些概念。比如我在课上复习实数的分类的时候,我把其中的有理数分成了整数和分数,还特意强调了零是包含在整数里面的,然后同学们就说我讲的不对,要有零,因为书中把有理数分为了正有理数、零和负有理数(在此就不吐糟人教版奇葩的分类了)……所以我得重复很多遍这之间的区别他们才能够理解。后面的题我还是讲得比较细致,最终我在下课铃响后 40 秒才完成讲课,我们的学校老师告诉我这是严重的教学事故。(由于学校的表比我的表快了 2 分钟,在此之后这样的 “严重教学事故” 依然频频发生……)

上完这一次的数学课后,老师所给我的反馈是:讲二元一次方程组的时候比较快。课后我想到,确实是这样。这是他们第一次见到这样的方程,理解其中的含义还是需要一段时间的,我讲得确实比较快。但是从各方面反映的结果来看,我的习题部分讲的还是非常好的。

一天的教学任务就这样结束了,我对自己所做的还算比较满意。

Manjaro Gnome 安装和配置记录

╭─ryanwang at ryanwang-linux in ~
╰─○ neofetch
██████████████████  ████████   ryanwang@ryanwang-linux 
██████████████████  ████████   ----------------------- 
██████████████████  ████████   OS: Manjaro Linux x86_64 
██████████████████  ████████   Kernel: 5.10.70-1-MANJARO 
████████            ████████   Uptime: 10 hours, 29 mins 
████████  ████████  ████████   Packages: 1394 (pacman) 
████████  ████████  ████████   Shell: zsh 5.8 
████████  ████████  ████████   Resolution: 2560x1440 
████████  ████████  ████████   DE: GNOME 40.5 
████████  ████████  ████████   WM: Mutter 
████████  ████████  ████████   WM Theme: Adwaita-maia-compact-dark 
████████  ████████  ████████   Theme: Adwaita-maia-compact-dark [GTK2/3] 
████████  ████████  ████████   Icons: Papirus-Dark-Maia [GTK2/3] 
████████  ████████  ████████   Terminal: gnome-terminal 
                               CPU: Intel i5-10400 (12) @ 4.300GHz 
                               GPU: Intel CometLake-S GT2 [UHD Graphics 630] 
                               Memory: 12983MiB / 15424MiB

基础设定

检测并更换软件源:

sudo pacman-mirrors -i -c China -m rank

添加 archlinuxcn 的源:

sudo vim /etc/pacman.conf

追加如下配置:

[archlinuxcn]
SigLevel = Optional TrustedOnly
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch
sudo pacman -S archlinuxcn-keyring

检查软件包更新:

sudo pacman -Syyu

常用开发工具包:

sudo pacman -S base-devel

常用软件包

常用终端工具:

sudo pacman -S htop vim tree neofetch

社区应用:

yay -S bitwarden spotify visual-studio-code-bin google-chrome github-desktop-bin com.qq.weixin.work.deepin com.qq.weixin.deepin typora telegram-desktop

输入法

最开始使用的是 fcitx5 + fcitx5-rime ,安装下来一切顺利。但是在某些场景下始终无法切换到中文输入法,不知道如何解决,然后换成了 ibus-rime。

sudo pacman -S ibus-rime
sudo vim /etc/profile.d/ibus.sh

写入:

export GTK_IM_MODULE="ibus"
export QT_IM_MODULE="ibus"
export XMODIFIERS="@im=ibus"

export XIM="ibus"
export XIM_PROGRAM="ibus"

按理来说,这时候重启或者重新登录即可生效,但是并没有,不仅无法通过快捷键(Super+Space)切换到中文输入法,而且菜单栏右侧也没有切换输入法的菜单项。后来在 @JohnNiang 的帮助下解决了此问题。解决方法:在系统设置里面添加 rime 输入法。如下图:

manjaro-keyboard-settings

rime 的配置目录位置:~/.config/ibus/rime/build

可根据自己的需求对 rime 进行定制化配置。

Terminal 配置

目前最新的 Manjaro 发行版已经默认配置了 zsh,但个人还是希望使用 ohmyzsh。和家里的 macOS 保持一致。

安装 ohmyzsh:

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

安装所需插件:

cd ~/.oh-my-zsh/plugins

git clone https://github.com/zsh-users/zsh-syntax-highlighting

git clone https://github.com/zsh-users/zsh-autosuggestions

修改 .zshrc

ZSH_THEME="fino"

...

plugins=(
	git
	zsh-autosuggestions
	zsh-syntax-highlighting
)

Node.js 环境配置

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash

追加下面的配置到 .zshrc

export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

安装一个 Node.js 版本

nvm install v14.17.3

Clash

yay -S clash

配置目录位置:~/.config/clash

将 clash 配置文件(config.yaml)放置到此目录,然后启动即可:

nohup clash &

Gnome 插件

https://extensions.gnome.org/extension/2890/tray-icons-reloaded/ https://extensions.gnome.org/extension/1460/vitals/

总结

使用了两三天下来整体还是不错的,暂时还没遇到什么痛点,可能问题最大的还是在中文输入法的体验上吧。之前一直在开发环境使用 Deepin,在使用上没有什么大的问题,但感觉系统整体在 UI 和交互上对于我来说存在较大问题。Deepin 就是属于那种远看界面还不错,但是近看却经不起推敲。个人不是特别建议。而且对于一个小前端开发来说,目前所需要的软件包都可以在官方源或者社区源(aur)找到。所以目前来说,Manjaro 应该是除了 macOS,我最佳的选择。

参考

中国移动,你太坏了。

起因

本人于今年五月份左右办理了 中国移动 的电话卡,至于为啥要办移动的卡呢?是因为我一直都想逃离 中国联通 这个坑。你能想象去商店里买东西付款的时候木有信号吗?所以,我就办了张移动卡以作为备用,然后慢慢从联通切过去。毕竟我联通卡用了好长一段时间了,什么都绑定的这张卡。要先换绑,然后在换卡,这是常识。

经过

使用过程中,一直好好的,话费我也有好好地交,尽管不常用。而且一直是放在备用机上面的,偶尔开机使用一下。结果到了九月份的时候,突然就给我停机了,拨打电话提示“您已停机,请续交话费”,我开始天真的以为是没有话费了,然后我分几次差不多冲了100左右的话费。结果还是“您已停机,请续交话费”。然后我就拨打 10086 查询了一次话费,提示还有余额。这就奇怪了,为啥有余额还是停机呢?于是上网搜了搜,大部分都说是“停机保号”,一般一天左右就恢复。就这样我等了几天,还是木有恢复。

然后在某个风和日丽的早上我打了 10086 人工客服,对方称并不是所谓的“停机保号”,而是我在试用期间违规发送大量短信和拨打了违规电话。于是乎,我就要求提供详细的通话记录以及短信记录。对方说不能提供。也就是说,说我作恶,又不提供证据?就像是我说你在外面有几个私生子,你问我证据,我说不能提供。一个意思是吗?

客服给我的解决方案是叫我去当地的营业厅提交一张免冠照,然后就给我开通。我说我没在号码归属地,他让我把我免冠照发送到他们邮箱。WTF,凭啥?店大欺客是吧。

结果

我去黑猫投诉查询了一下 10086 栏目下的投诉记录,发现不少和我类似的经历,于是乎我也投诉了一遍。希望能快些处理。

后话

这到底是 中国移动 的系统错误还是他们故意作恶?如果是系统错误,为什么还不修复?你可是三大运营商之首啊,技术这么垃圾?如果是故意作恶,那我倒是能理解了。不作恶怎么赚钱嘛,是吧?

黑猫投诉中国移动栏目链接:https://tousu.sina.com.cn/company/view/?couid=1991428685

记一次拯救我的博客

事情的缘由是我服务器到期了,又没来得及续费,导致无法上服务器备份数据(使用的腾讯云老版本的学生机,每月一块钱的那种,这个月刚好到期,所以不想再用原价续费了,而且 1g 内存可能满足不了以后的需求,所以索性重新买了一台…)

数据咋办?

既然不想续费了,所以是无法上服务器备份数据的,正当我想去咬牙续费的时候,突然想起来曾经把数据备份到 Github 上过… 那么这就相当好办了。

重装博客

晒一张我在 Github 上的备份,虽然是五天前备份的了,但是影响不大,好在我这几天都没怎么操作。
image.png

嗯,得益于我用的 Halo 博客系统,所以只需要备份这一个目录就完全 OK,所有数据都不会丢失。因为这个系统他的用户数据和程序本身是完全分开的(数据库 db,上传的附件 upload,配置文件 application.yaml),当然,所有主题也是在这个目录的,但是因为主题是可以另外下载的,而且主题的配置数据也在数据库,所以我没有备份。

接下来我只需要把这个仓库克隆到服务器就好了。

git clone https://github.com/ruibaby/blog-data.git .halo

然后配置个 Java 环境,下载个 Halo 运行包。启动就完事。

配置服务器

这个环节没啥做的,配置个 Java 环境就好了,一行命令的事。

然后我跟着这个教程就完成了所有事情。https://halo.run/guide/install/install-with-linux.html

当然,我并没有配置反向代理,因为我是使用的又拍云的 cdn 全站加速,去控制台改改服务器 ip (源站地址)就好了。

自动备份脚本

考虑到后面可能会忘记备份数据,所以写了个自动提交的脚本。

#! /bin/bash

message=`date -u +"%Y_%m_%d_%H_%M"`

cd /root/.halo

rm -rf .git

git init

git remote add origin repo_url

git add application.yaml upload/ db/

git commit -m $message

git push -f origin master
  1. 将其写入到一个 sh 文件里面。

  2. 赋予执行权限 chmod +x {NAME}.sh

  3. 初始化 ~/.halo 仓库,cd ~/.halo & git init

  4. 去 Github 配置 ssh key。这一步不详细讲,自行百度。目的是在 push 的时候不需要输入用户名和密码。

  5. 执行 crontab -e 添加 00 03 * * * /bin/sh {NAME}.sh 的绝对路径。(00 03 * * * 表示每天三点执行)。

  6. 执行 service crond restart 使配置的定时任务生效。

结尾

数据无价,还好这次有备份数据。

❌