MoreRSS

site iconCysime Moflu修改

重庆人,学土木,现居广州,擅长电子游戏、音乐与创作。非洲工作过 5 年。
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

Cysime Moflu的 RSS 预览

从Disqus迁移到Waline的踩坑笔记

2025-12-03 09:05:29

Featured image of post 从Disqus迁移到Waline的踩坑笔记

我的博客是2022年从Wordpress换成Hugo的,受制于Hugo这种纯静态框架的限制,必须要额外再配备评论系统。当时Waline等产品只能使用Leancloud作为数据库,所以为了省事直接用的Disqus,后者是可以直接接入Wordpress的,因此可以非常简单地转移到Hugo,并且使用DisqusJS这样的项目并配合反向代理的话体验还不错。但到了现在,即便使用了Vercel的反代,Disqus的体验也很难说好,且我还多次收到反馈说有用户根本没法加载Disqus评论区。为了能有个阳间一点的体验,是时候换个新的了。

评论系统的选择

我的Hugo主题是Stack,它内置支持了不少评论系统,所以直接在兼容列表里面选择是最方便的。

其实当前评论系统无非两类:

一是Giscus、Gitalk这类利用Github Discuss或者Issues的,很方便搭建且无需再配备数据库,使用GitHub登录也一定程度上避免了Spam,但缺点也是GitHub:它必须也只能使用GitHub(或类似平台)登录;另一类比如Twikoo、Waline就支持匿名评论,和WordPress的体验完全一致,但缺点是需要自行配备数据库存储评论。

我个人来讲还是更希望使用类似WordPress那样的匿名评论系统,无需登录,仅需留下邮箱和昵称即可直接评论;同时访客也并不一定有GitHub账号。当时使用Disqus其实也有这个原因,因为Disqus其实也是可以不用注册账号就能评论的。

基于上面的需求且比较适合国人的就只有Twikoo和Waline了。

Twikoo是个新一点的评论系统,使用MongoDB,我个人感觉相较于Waline来讲要更简约简单一点。但有一个问题:太简单了。它没有单独的后台,只能自己找一个使用了Twikoo的页面进入管理面板,且这个面板不能在新页面中打开而是就评论区里面原地启动,显而易见地这个面板的展开面积就很小了。虽然GUI可修改的各种自定义项目很多(但主题都已经适配好了,所以一般来讲是不需要动的),管理起来是真的有点麻烦。如果有个独立面板就更好了。

另一个大问题就是,我们都知道这些评论系统是通过文章URL来判断并输出对应文章的评论的,Twikoo配置的文章URL是使用的绝对路径而非相对路径,但我这个博客现在绑定了2个域名,且后续我想把cysi.me这个顶级域名也改成博客本体,如果评论对应的文章URL全是绝对路径(如https://example.com/post/1)而非相对路径(如/post/1),一旦域名更换就必然无法识别。

至于Waline,已经存在挺久了,且现在还在活跃更新,用户群也不少。早年它只能用Leancloud数据库,当时因为这个也走了点弯路去用了Disqus,但现在它还支持MongoDB等多种数据库了。我最终也选择使用Waline。

搭建和配置Waline

使用MongoDB+Vercel搭建

我使用的是Vercel+MongoDB的组合,其中Vercel的部分可以参考官方文档。需要注意的是,官方文档的“快速上手”是基于Leancloud数据库的,如果不想使用Leancloud(比如我这种使用MongoDB的)则需要修改Vercel那边对应的环境变量,具体可以查阅这里

总体来讲搭建并不算难,但MongoDB这边会有个坑,MongoDB默认给的URI是mongodb+srv://格式的,可以让客户端自动从DNS获取Seedlist服务器列表,但Waline的MongoDB实现比较老,并不支持+srv自动获取完整服务器列表(如果直接使用新版URI,Waline会出现500错误),必须获取旧版的mongodb://格式链接从而提取出服务器地址。

MongoDB

因此,我们需要在MongoDB面板中,点击Connect,并选择Compass,如上图一样选择“I have MongoDB Compass installed”,版本选择“1.11 or earlier”,你会得到类似这样的URI。

1
mongodb://<username>:<db_password>@ac-vm0ftwk-shard-00-00.9cdzdlb.mongodb.net:27017,ac-vm0ftwk-shard-00-01.9cdzdlb.mongodb.net:27017,ac-vm0ftwk-shard-00-02.9cdzdlb.mongodb.net:27017/?replicaSet=atlas-opg9fs-shard-0&ssl=true&authSource=admin

可以看到这上面有3个服务器地址,我们提取出来。然后缝合进Waline官方已经整理好的环境变量里面,并将其设置进Vercel项目内即可。Waline部署完成后,访问https://<your-site-url>/ui即可进入后台并创建用户即可。

1
2
3
4
5
6
7
8
9
// 服务器列表,记得换上上面提取出来的地址
MONGO_HOST=["cluster0-shard-00-00.p4edw.mongodb.net","cluster0-shard-00-01.p4edw.mongodb.net","cluster0-shard-00-02.p4edw.mongodb.net"]
MONGO_PORT=[27017,27017,27017,27017]
MONGO_DB=waline
MONGO_USER=admin //修改为你设置的username
MONGO_PASSWORD=xxxx
MONGO_REPLICASET=atlas-12cebf-shard-0
MONGO_AUTHSOURCE=admin
MONGO_OPT_SSL=true

评论迁移

迁移也并不困难,先去Disqus的导出数据页面导出并下载数据,再在Waline官方提供的迁移助手转换即可,记得要选对Waline的数据库格式。如果是MongoDB,导出的数据是CSV格式。

正常情况下,直接在MongoDB那边导入这个CSV数据到Comment数据表里面就行了,MongoDB官方有一个GUI管理工具Compass,可以直接导入CSV文件, 官方也同样提供了相应教程。如果不需要修改数据,导入CSV到指定数据库里面就算完成了,这时候评论系统也可以正常使用且旧评论都会正常迁移过去。

整理文章

但我这里情况比较特殊,我的博客已经跑了10多年了而且期间变过很多次永久链接格式(Permalink),而且还变过网站架构(Wordpress变成Hugo),这一系列操作下来,结果就是我的博客的链接格式是很混乱的,比如有的链接末尾带了/而有的没有。另一个问题是,我之前启用了Hugo的uglyURL功能,它会在博客内所有页面添加.html的后缀,致敬早年SEO的伪装静态文件的做法(实际上是因为我当时WordPress链接就是这样子的格式,为了保留后缀所以启用了这个功能),但这个uglyURL功能仅对Hugo设置中的baseURL对应域名才有效,且baseURL仅能设置一个——但我的博客有多个域名,也就是说,我现在只有https://blog.cysi.me这一个域名底下的URL后缀会带有.html而其他任何域名都不会有,除非我在每个Markdown文件的slug或者url字段都添加该后缀。

而Waline这些评论系统是靠文章URL来输出对应URL下的评论内容的,即便它使用的是相对路径,理论上不同域名只要URL结构一样也不会出问题,评论都可以正常在各个域名中正常共享,但基于我上面的情况,还是引发了两个坑:

  1. Waline会把同URL但末尾带或者不带/的链接认为是2个不同文章,同理,带或者不带.html后缀也是会被识别成不同的文章的。Waline实际上提供了一个解决方案,就是在客户端处增加一个path属性,但我添加了这个字段没有起作用,所以我就开始考虑直接修改数据库的内容,此举顺便也是为了整理和梳理我博客混乱的永久链接的格式,将所有文章URL的格式统一。
  2. 要完全统一URL格式,就必须关闭uglyURL功能,也就说所有的.html后缀都将会被移除,但此时访问带有.html后缀的URL都不会正常跳转并直接报错404。

好在这两个问题解决起来不难,第1个问题,上一步里面使用迁移助手转换得到的CSV文件,可以直接使用编辑器进行编辑,具体步骤就不必赘述了,毕竟现在让AI帮忙也很简单,然后再导入进MongoDB,会比直接在MongoDB上面使用数据库语句要方便点。Hugo默认情况下,文章URL末尾均带有/后缀,因此,我就要使用编辑器将CSV里面的评论URL字段,去除所有不必要的后缀(比如.html)并再在末尾都统一添加上/

接下来处理问题2,关闭了uglyURL之后,实质上我现在的URL格式已经得到统一,但还是得做一个跳转(至少是旧的文章需要做跳转),避免出现404问题。其实Vercel等平台是可以直接跳转的,只需要在vercel.json内设置跳转即可,但我碰巧使用了多个平台(不同域名使用了不同的部署平台),经过考量我决定直接在Markdown的Frontmatter元数据里面设定aliases字段(也就是别名),我们可以在别名中添加.html后缀,这样就可以自动跳转了。这种办法的好处是完全不挑平台支持跳转与否,完全通用。直接让Gemini生成了个Python脚本,这个脚本会递归扫描指定目录,处理所有 .md 文件,并按照此逻辑优先级执行:

  1. 有 aliases -> 跳过。
  2. 无 aliases 但有 url -> 新增 aliases 为 url内容.html。
  3. 无 aliases 且无 url,但有 slug -> 新增 aliases 为 slug内容.html。

运行该脚本后,我所有文章都会添加一个带有.html后缀的别名,访问后会自动跳转Hugo的标准无后缀的URL上,避免出现404错误。

 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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import os
import re

def process_markdown_files(root_dir):
 # 遍历目录及其子目录
 for root, dirs, files in os.walk(root_dir):
 for file in files:
 if file.endswith(".md"):
 file_path = os.path.join(root, file)
 process_single_file(file_path)

def process_single_file(file_path):
 try:
 with open(file_path, 'r', encoding='utf-8') as f:
 content = f.read()
 except Exception as e:
 print(f"❌ 读取错误: {file_path} - {e}")
 return

 # 正则表达式:匹配 Frontmatter (位于文件开头的两个 --- 之间)
 # re.DOTALL 让 . 也能匹配换行符
 fm_pattern = re.compile(r'^---\s*\n(.*?)\n---\s*\n', re.DOTALL)
 match = fm_pattern.match(content)

 if not match:
 # print(f"⚠️ 跳过 (无 Frontmatter): {file_path}")
 return

 frontmatter_content = match.group(1)

 # 1. 检查是否已经存在 aliases
 if re.search(r'^aliases:', frontmatter_content, re.MULTILINE):
 # print(f"⏭️ 跳过 (已有 aliases): {file_path}")
 return

 # 寻找 url 或 slug
 # 匹配 key: value 格式,并捕获 value 部分(去除首尾空格和引号)
 url_match = re.search(r'^url:\s*(.+)$', frontmatter_content, re.MULTILINE)
 slug_match = re.search(r'^slug:\s*(.+)$', frontmatter_content, re.MULTILINE)

 target_value = None
 source_field = ""

 # 2. 逻辑优先级:先找 url,没有再找 slug
 if url_match:
 raw_value = url_match.group(1).strip()
 # 去除可能存在的引号
 target_value = raw_value.strip('"\'')
 source_field = "url"
 elif slug_match:
 raw_value = slug_match.group(1).strip()
 target_value = raw_value.strip('"\'')
 source_field = "slug"

 if target_value:
 # 3. 构造新的 aliases 字段
 # 注意:通常 aliases 是一个数组,为了兼容性,这里写成 aliases: ["value.html"]
 # 如果你的内容里已经有.html后缀,这里会重复添加吗?
 # 根据你的要求:“内容并在其末尾添加.html”,这里不做去重检查,直接添加。

 new_alias_line = f'aliases: ["{target_value}.html"]'

 # 将新字段插入到 frontmatter 的末尾(但在第二个 --- 之前)
 new_frontmatter = frontmatter_content + "\n" + new_alias_line

 # 替换原文中的 Frontmatter 部分
 # 只替换第一个匹配项
 new_content = content.replace(frontmatter_content, new_frontmatter, 1)

 try:
 with open(file_path, 'w', encoding='utf-8') as f:
 f.write(new_content)
 print(f"✅ 已修改 ({source_field} -> aliases): {file_path}")
 except Exception as e:
 print(f"❌ 写入错误: {file_path} - {e}")
 else:
 # print(f"⚪ 跳过 (无 url 也无 slug): {file_path}")
 pass

if __name__ == "__main__":
 # --- 配置区域 ---
 # 将下面的路径改为你的文件夹路径
 # Windows 示例: r"C:\Users\Name\Documents\Notes"
 # Mac/Linux 示例: "/Users/name/notes"
 TARGET_DIR = r"./my_markdown_files"

 print(f"🚀 开始扫描目录: {TARGET_DIR}")
 if os.path.exists(TARGET_DIR):
 process_markdown_files(TARGET_DIR)
 print("🎉 处理完成!")
 else:
 print("❌ 错误: 找不到指定的目录,请检查路径配置。")

完成

至此,整理工作终于完成,文章URL得到了整理和统一,评论系统也正常工作,旧的评论也正常显示。唯一问题是所有评论者的头像(即邮箱)、网站链接都会被抹掉,但可惜的是这个无法解决,因为Disqus的原始数据里面根本就不提供这些信息,且为了隐私保护,Disqus的后台是无法看到用户的邮箱的。

其实这次折腾更多是整理博客的结构,当初迁移到Hugo的时候太匆忙,细节上没有做好,现在再擦屁股考虑的事情就多了,不过趁此机会把之前遗留问题都清理了一下,整个Hugo的结构也看起来更干净了,还是不错的。

天使吉米/Tanchjim Force双动圈耳塞个人听感报告

2025-11-26 14:00:37

Featured image of post 天使吉米/Tanchjim Force双动圈耳塞个人听感报告

Force是一款比较有意思的耳机,双动圈并做了开放式架构,在当前国产耳塞里,尤其是各种动圈、动铁乃至平板、静电多单元如同叠Buff一样并大行其道的环境下,应该不算多见,我愿称之为“比较克制地单元叠加”。

在一次试听之后我觉得它还不错,且我对手上已经用了多年的耳塞,尤其是达音科DK3001Pro已经不甚满意(毕竟这已经是2019年的耳塞了,连原线都已经被磨破了的那种),换耳塞的日程便提了上来。卖掉手里的3001Pro和水月雨的Kato后,趁京东24期免息加折扣直接拿下Tanchjim Force。

外观

外观一直以来都是Tanchjim产品值得称道的一点,家族化风格较为统一的设计语言、非常克制且简约又简单的外观,相较于国内一些喜欢在单元外观上搞点花里胡哨东西的厂家显得非常…“正常”(虽然它是非常正统的二次元品牌且Force的包装封面也真印了看板娘)。

Force有一个我来说非常重要的优点,这幅耳塞不是全金属单元而使用树脂+单片铝合金盖板的组合,大幅度降低了单元重量,以至于拿在手上甚至都没有什么坠手感。

将这一点单独拿出来是因为我实在是深受全金属单元耳塞其害多年,不管是达音科DK3001Pro还是水月雨Kato,单元外壳都是金属且还是选用的铸铁和不锈钢这种非常重且导热效果极好的材料。重量让佩戴体验和佩戴时间大打折扣(尤其是3001Pro,一直以来对佩戴舒适度的问题就没停过),而导热太好的金属让冬季使用耳塞的时候必定能来一次透心凉。

基于上面的问题,我尤其想点名批评水月雨Kato(以及它的继承者Kadenz),作为一个单动圈耳塞,本应极度轻便,但使用了不锈钢单元外壳后重量竟然比一些一圈多铁的耳塞还要重,佩戴感受更是不必多提。

配件

Force总算是配上了可换插头的线材(本家的Origin是没有的),虽说我现在已经对4.4mm平衡不太在乎,但配备一个TypeC小型解码插头还是很不错且方便的。但插头非常紧,更换的时候还是有点费力。现目前的可换插头还是没见过一个比达音科的Q-Lock Plus系列更好用的,且那还是2019年就有的东西了。

Tanchjim稍微贵一点的耳塞应该都配备的是同样的耳机包,会比其他品牌的收纳包容量会更大一点,足够塞下耳机和所有的插头,并再加一个小尾巴进去,实用性会更高一点。

线材方面,我对Effect Audio联名不感冒,但材质确实比较舒服,Force的单元本体非常轻,但好在耳挂平衡了重量,佩戴上不至于出现不稳的情况。

听感

接下来是重点听感了,通常来讲耳塞是没必要跟头戴对比的,但这副耳机某些KOL吹得很High,什么声场开阔好似开放大耳,本着娱乐Hufi精神且我正好手里有封闭和开放头戴各一个,所以拜亚DT900PX和天龙D5200也纳入本次对比。

同时,除了数字媒介之外,还将使用配备了电子管(胆机)唱放的黑胶唱片机来测试,因为我也很好奇这种一暖到底的配置能出什么声音。

调音趋势

先放一个简易的频响曲线对比,选取了价格相近的、当前天使吉米的主推单动圈产品Origin(Origin和隔壁水月雨Kadenz的调音比较相似,因此这里就只放Origin了),以及水月雨家的三动圈产品Harmon,后者同样也是被称为“流行神塞”。

同样地,作为参考,也贴出Force和水月雨的VSDF Target的对比。因为这两家二次元厂都比较热衷于做科-Hi产品以至于两家的调音Target经常会很一致,甚至可能Tanchjim家的产品会更贴合VSDF Target…

Origin / Harmon / Force 频响曲线对比(来源:huihifi.com)

Force与水月雨VSDF Target频响曲线对比(来源:huihifi.com

可以从上述曲线大致看到Froce的调音趋势。作为一个双动圈耳塞来讲其低频可谓非常克制,1k以下的低频/中低频区间竟然量是比Origin还少的,高频部分也很平滑,而极高频又比较克制。

需要提的是Force甚至可以看到它除了3k、9k区间的两个峰外,整个10k区间之内跟VSDF Target曲线非常贴合,水和鸡这两家背后果然是有些不可告人的秘密的。

实听测试

接下来是实听环节,我使用的数字回放设备是:

  • 前端:Macbook Pro M2 Pro
  • 解码&耳放:Macbook Pro (3.5mm) / Tanchjim Space (3.5+4.4) / ifi Go Link Max (3.5+4.4)
  • 音频平台:Apple Music,使用工具保持Bit-perfect状态
  • 耳机配置:原线,T-APB高频增强耳套

既然是一副偏向于中低频,适合流行乐的耳塞,也正好是我主要听的类型,那么要试听的曲目必然都是欧美流行。

Charli xcx & Billie Eilish - Guess (2024)

Charli xcx在2024年带来了她现象级专辑《Brat》席卷了整个夏天,和大量优秀艺人的remix专辑也随之推出,我挑选的是与Billie Eilish的Remix版《Guess》。这是一首非常偏下盘的电子舞曲(尽管两位演唱者都是女性)。开头的首段beat的低频非常有力量感,也收得很快,人声开始切入,本曲以低音说唱为主因此可以听到人声距离也会较近,但保持了与伴奏的较好的分离度。

Ariana Grande - imagine (2019)

作为一个真的在百老汇和尼克频道摸爬滚打过的艺人,Ariana Grande拥有比很多流行艺人更好的vocal功底。这首歌是《thank you, next》的Track.01,伴奏旋律非常简单,只有不快的鼓点和少量效果器,人声(及其和声)为绝对主体,人声主体有该有的厚度,此时人声距离并不算贴耳,稍微有一点距离。Ariana Grade在这首曲子的bridge后面直接开始飙海豚音,此时高频不是“女毒”塞的那种可以把高频显得非常具有“穿透感”、明亮的感觉,但好在高频厚度是有的,总体来讲高音表现不差,虽然我会更乐意听到更有穿透感的极高音。

Chappell Roan - Pink Pony Club (2023)

来自中西部红脖子州的女同性恋歌手,2023年的首张录音室专辑《The Rise and Fall of a Midwest Princess》让她荣登年度最佳新人。她在此专辑每场的巡回演出邀请变装皇后表演。这首单曲《Pink Pony Club》放在这里异常合适,同时也是我个人比较喜欢的一首。开场只有钢琴和人声演唱,此时人声会显得靠前,钢琴在左右稍微靠后一点的位置,伴奏位置合适且由于是开放式设计,此时较为扩展的声场使钢琴声左右延展得较好。随后进入副歌,开始切入合成器效果,同时vocal会使用中高音演唱,副歌后半部分使用了更多合成器效果,人声显得比较柔和,但不算很凸显,但也没被合成器效果淹没。

听感总结

Tanchjim Force是一个很有意思的耳机,毫不意外地它是一个偏向于暖声的耳塞并偏向于中下盘,同时人声又有一定厚度但不算很贴耳,有少量音染,对于流行歌曲来讲会更耐听,尽管低频量感不错但实际上低频给的比较克制,我认为不算坏事,一耳朵听感不会觉得太糊(多年前的达音科DK3001Pro比起来就会觉得糊了,哪怕它实际上是圈铁耳机有动铁单元负责高频),在尽量不会太偏离相对中正的调音(见他跟VSDF Target的重合度)的基础上有一定的流行调音取向。它不是所谓暖糊或者氛围感很强烈的耳塞,但我认为恰到好处。同时两个动圈单元也没有发现有任何分频衔接的问题,即便是现在国内多单元系统耳塞大行其道,但不少厂商仍然不会好好调音甚至分频都做不好,只知道拿多单元像叠buff一样丢进耳塞,且大量单元丢进去之后还导致耳塞完全没法被低功率设备推动,耳塞还如果需要上高端播放器甚至台机是极度抽象和本末倒置的。

影像记录:2024年我拍的毛毛(兽装)

2025-01-15 22:40:58

Featured image of post 影像记录:2024年我拍的毛毛(兽装)

23 年下半年我在广州找了个工作,再加上 24 年开始越来越多的(商业)兽聚开始将门票提到了接近 400 元,但内容不能说很丰富吧,也只能说几乎没有。除非有朋友会去,否则我更情愿宅家打电动或者出去抽象街拍。

总之,24 年一整年我只去了 2 个展子,五一期间在佛山希尔顿(下次绝不去了)的 Hi Furry;以及七月底在科学城希尔顿的兽界(纯属临时起意,主要是住的近)。

Hi Furry

Hi Furry 这几届的场地都定在佛山而不是广州,且彼时我还住在增城,从广州最东边跑到最西边属实是比较抽象和折磨。

这回也有朋友从成都远到而来,除了展子之前一起去城里逛了圈外,顺便把我 S5 祖传的 50mm 镜头给他了,省下来的钱当然是拿去买松下原厂 35mm(后来发现我并不喜欢用 35mm,就像我的人生一样,既不宽广,也不紧凑)和适马 65mm(后来证明,我真的很喜欢这个焦段)。这两颗镜头也在 Hi Furry 上第一次使用。

——可惜都被会场凌乱无规律且非常丑的灯光毁了大半。下次绝对不会去了。

总之凑合看吧:

兽界

去兽界纯属临时起意,但意外地内容很多,甚至还有独游参展,并难得交到了些新朋友。 ——和兔兔设定组织(我 Fursona 倒也能算兔子,是吧)

P.S. 下面有一些看起来白平衡飘的很厉害的,是使用 GR3 拍摄的,我很喜欢这台小机器,28mm 焦段用起来也很有意思(比 35mm 更有意思!),但自动对焦和自动白平衡非常感人,但受制于机身手动调整也比较麻烦。尤其是我还给自己定了个规矩:在 GR3 绝不拍 RAW。

逃离非洲

2023-09-03 23:30:00

Featured image of post 逃离非洲

2018年8月3日,刚毕业的我还有其他几位同为应届生的同事,一同从成都辗转飞往了位于非洲南部的内陆小国马拉维。接近五年的、远在地球另一端的工作生活就此开始。

起始

第一年时我在马拉维的一个世界银行投资的援建项目工作。这是全世界最贫困的国家之一。项目所在地因海拔极低所以常年炎热,一到雨季又会被洪水蹂躏,但大多数人的家都只是土墙草顶,几片硬纸当作窗户;当然了,大多数家庭也没有通电,更没有自来水;来自中国的二手衣物在这里以极低的价格销售,但实际上当地人大多甚至连鞋都穿不起。即便是偏僻到如此程度的地方,这些几乎没有受过多少教育的当地人却非常精通侮辱中国人的动作(拉眼皮)和词汇(Ching-Chong)。

很快,我和我的其他应届生同事的新鲜感、希望对非洲发展做一点贡献的心态全都消散殆尽。再加上项目条件本来就很差——哪怕我们营地的住宿条件已然在镇上属于豪华型(彩钢瓦,水泥砖墙,空调),而早六晚六无休的超长工作时间令人没有多少时间休整,没过半年,就有2位应届生同事离职。

哦对了,我的第一笔工资是在2019年春节前才收到的,在那之前我几乎没有一点储蓄了,甚至只能找朋友暂时借1000块买东西。

就有这么大的雨每周固定的村超

“所幸”的是,因为某些原因,马拉维的项目无法继续开展,我回国休假过后就不用再去那里了。而休假的那两个月,我才觉得自己回归了文明社会。同时,我也被调到了位于西非的加纳。

艰难的两年

加纳作为西非较为发达的国家之一,工作条件也理所当然地好了很多,且项目也位于首都,闲暇(如果有的话)之时还能去吃点好的(指肯德基、汉堡王、必胜客)或者买买东西。此外,片区领导看重了我的交流能力让我转到了采购和后勤岗位,终于不再需要下工地吃灰了…一切看起来都在朝着比较好的方向走——直到2020年初新冠病毒爆发。

加纳首都阿克拉

2020年中,新冠病毒开始在西非流行,当时加纳政府也开始要求停课停工,但受制于自身条件和统筹能力问题,这个停工政策仅保持了一个月便迫于经济和民众压力而取消。

但就算是在这要求停工的一个月里,我们也依旧被要求要正常工作。当时某个项目有数名中外员工确诊,不仅没有得到重视(要知道,这是2020年),在不久后的新冠专题会上,还被公司总部告知就算如此也必须到岗正常工作,要对感染者追责,同时还规定员工不得私自做新冠病毒检测…却哪怕是口头上的慰问也一句没有。

“如果担心感染,出门就穿防护服啊”,会上这么说。

更令人无奈的是,新冠流行期间受制于“五个一”和航班熔断政策,回国航班锐减、价格飞涨。公司自然不愿意承担过于高昂的票价,并将员工回国休假的审批流程延长到了1~2个月并层层设卡。原本的一年一休、有盼头的时日瞬间就变成无底洞,大家都在等政策松口、票价回落和公司政策正常化。

因为新冠病毒大流行,我第二次出国就不得不在非洲呆了接近2年。此时回国不仅手续繁杂,风险也非常高,尤其是没有直飞航班必须要在第三国转机的情况,如果转机途中的双检测呈阳性,就不得不面对长期滞留和高额花费的情况,而这些费用都只能自己承担,这些案例当时在小红书上比比皆是。

但同时,我的心态又随着时间的流逝逐渐崩溃——直到2021年4月,因为当地政府资金问题,项目工作不饱和,公司这时候突然希望在加纳的员工应休尽休以节约成本。在经历了极为繁琐的回国准备后,我终于在5月中旬登上了回国的航班。同期的不少同事也在此时提出离职。这时候,当年和我一起去马拉维入职的应届生还在这个公司干活的也就只剩下我了。

不过当时我还并没有想过也一起跟着离职,原因现在回想起来可能有点欠考虑:我最初的计划就是至少在非洲做五年,存上一笔钱后再回国考虑别的工作机会;更何况彼时国内就业环境并不是很理想,因为我打算暂时不离职,观望一下。总之,我在2021年确实没有考虑过离开,休假完后带着非常纠结忐忑的心又回到了非洲。

遗憾的是,这次回到非洲,因为种种原因,我的心态从一开始就没有好过。

不过好在,这段时间有朋友向我安利了《最终幻想14》,很快我就被它宏大的世界观和冒险故事吸引,即便是有着400甚至500ms的延迟也抵挡不了我的热情。那段时间只要是工作之余都会打开FF14过主线、打日随——2022年春节那短短几天假期,我几乎把所有的时间都花在了解放多玛上(FF14的4.0版本剧情)。睡眠不足怎么办?也是那个时候我买了一台Nespresso咖啡机,没有条件加奶直接每天两杯意式浓缩,一口闷。

逃离

2022年3月,事情又有了积极的一面,我认识了现在的女朋友,同时也是我决心一定要尽早回国之时。

遗憾的是,2022年也是国内限制入境政策收缩得最严格的一年,同年春节、2月和3月,回国检测一而再再而三地变更:单检变双检,间隔从24小时缩短到非常极限的12小时。这样的高压环境下回国甚至比2021年还要艰难且不可控,更不用提已经涨价到五六万还不能带行李的机票价格。

工作上,因为新冠疫情和俄乌战争带来的一连串后果也没有让我们喘口气。仅2022年,加纳的货币塞地贬值了接近200%,成为了世界上最不保值的货币之一(有卧龙必有凤雏,加纳邻国尼日利亚就是那个凤雏。),而俄乌战争导致乌克兰粮食减产,非洲多数国家粮油暴涨,一袋25kg的大米一度涨到了约600元人民币——一个普通工人一个月工资。项目需要用到的建筑材料也必然未能幸免,供应商开始一日一价。但同时,公司却多次将流程手续复杂化,缓慢且不可控的付款速度加上飞速贬值的货币,给我的工作带来了巨大的压力,高度繁琐的流程还让我经常不得不晚上11、12点还在处理工作——但和996不一样的是,我第二天7点前就需要到岗,而且没有休息日。

但在这样的环境下,我只能静静等待回国的时机。

一直到2022年末,情况才终于有了好转:国内防疫政策松口,随之而来的就是逐步开放入境,第三国转机也不再需要检测,机票也回落到了稍微正常的水平。最适合的时候就要到来了!我提前告知离职的消息、和接手的新同事交接。2023年1月10日,我踏上了逃离非洲的航班,决心不再回来了,也不用每天给自己灌两杯意式浓缩了。我家里也非常支持我离开这个所谓国企铁饭碗,去别的地方找机会发展。

同月月底,我去到了广州和女朋友一起生活。这段时间里,我终于得到了自己梦寐以求而又难得的自由时间:旅游、拍照、看想看的电影和书、逛展子,亦或是什么都不做,没有工地上漫天尘土,真的很开心。

5月的时候,我大学舍友结婚,正好趁此机会再去一趟北方旅行一趟。见到同学交谈时得知,这两年本就是夕阳行业的土木形势又雪上加霜,不少单位还出现了降薪的情况(也包括我之前所在的单位,只不过我提前跑路了而已)。巧的是,这段时间,在非洲那边接我班的同事也告诉我现在项目管理越发混乱、工作必要的流程手续还在不断复杂化、工作时间不断加长,但仍要被降薪。同时,加纳这个国家也因为经济原因几乎破产,公司在加纳全都是政府资金项目,政府破产势必会导致工程款拖欠和工资的进一步的拖欠——已经完全没有必要再回去了,这也坚定了我不再回头干土木的决心。

那接下来呢…?

不再想要继续干土木的想法固然很好,但就算是现在的2023年,国内的就业情况绝对算不上多理想,尤其是还需要考虑到要转行的决定。但好在我在加纳那段时间开始就没有正经的做自己本专业的事情,而是做的采购,这也成了我寻找新工作的切入点。

在这Gap的这半年里,我内心里其实还是有一些焦虑的——确实是因为心里没底,但又不想那么早就开始去找工作,而草草看一下招聘软件反正只能觉得自己什么都不合适,毕竟我决定转行,虽不能说前几年的工作经验全都归零,但确实很多地方仍然需要从头开始。

不过还好,真到自己决心开始找工作的时候(也就是今年7月),我只花了一周就拿到了Offer,虽然工资不能算很高但也说得过去,有双休且公积金缴纳基数很高,除了黄埔这边地方确实很偏,中午实在是没什么好吃的外卖不得不自己每天带饭之外,总体上还是比较满意的。

既然已经来广州做广漂了,工作也找到了,那接下来…就好好打工吧,以后再怎样,也不会比我在非洲,尤其是前两年那样糟糕了——至少是心态上。毕竟,哪的黄土不埋人嘛~

碰巧,我新工作入职也是八月,正好是自己第一份工作的五年后。飞往马拉维之前、在埃塞俄比亚转机时,我在机场拍了一张自己带着的伊布毛绒做纪念,并把这张照片作为了自己群的头像。五年后,我换了新工作,于是我在新家里,换了地方、换了背景里的背包、换了另一只毛绒,又拍了一张新的照片,作为自己逃离非洲后的、新的开始的纪念——当然也就是新的群头像啦!

2018年,亚的斯亚贝巴2023年,广州

影像记录:美长小猫⌈毛毛⌋

2023-06-24 12:06:00

Featured image of post 影像记录:美长小猫⌈毛毛⌋

毛毛是一只美短,但是是长毛。不管是人类还是AI都经常把它当成缅因或者西森。它很乖,是相机在家里最好的模特儿。

逗猫棒~…看起来不吃这套不如开个罐罐

毛毛和阿弗雷春天的尾巴镜中小猫

小眼神困…喵!!

坐在硬盘盒旁边不觉得脑子嗡嗡的吗理线员小猫

盒子里面舒服吗猛虎咆哮

影像记录:2023年OUFC(Furry·兽展)

2023-06-21 11:06:00

Featured image of post 影像记录:2023年OUFC(Furry·兽展)

去年双十一,我入手了自己人生中的第一台全画幅微单 松下S5 的双镜头套装,如果到处拍拍都不发的话实在是太浪费了!所以我决定在我的博客上发一些我自己精挑细选的照片,并专门开了相册分类作为记录。那么相册里的第一篇就由OUFC兽聚开始吧。

今年年初OUFC在广州的洲际酒店办了一场,主题为《醒狮夺魁》,可能是因为上一次的酒店合作很糟糕,这次直接办在了洲际,大概是目前国内办Only的场地里最豪华的一次?因为洲际的客房单价很高,所以很难得地,这一次展子的酒店套票反而比较划算,毕竟最低档门票就需要300多。

这只原创的埃及猫与背景的网红果糖(买的设定)及其的粉丝们形成鲜明对比西装写实毛,非常的elegant!

今年开始身边也有一些朋友开始吐槽兽聚的门票越来越贵,但展子内容却很空洞,创作型摊位极少甚至几乎没有(是的,这些摊位绝大部分都是兽装工作室),不算这些兽聚兽展的正向发展方向,而是在变成纯纯的社交聚会。

不过转变也是有的,OUFC在4月底的这次展子开始转型成为更大众的Only展的形式,没有酒店套票且普通票定价只有90多、场地开在越秀会展、有更多种类的摊位甚至还有签售商摊,虽然还不尽完美,但有个这样的开头总归是极好的。

今年7月还会有一场绿洲展,从上一届的repo和这一届的安排来讲应该是很偏向于创作性的展子,应该可以期待一下!