2026-07-15 16:48:00
在 macOS 上用 CrossOver 玩一些 Steam 游戏,比如激战2(Guild Wars 2 ),界面能够正常显示中文,但输入聊天框里输入中文,只能显示问号。
网上相关教程都是装中文字体文件或改注册表,但这些解决的是字形问题,容器缺少中文字体。
中文显示为问号的真正原因是:容器(Bottle)的系统区域设置不是中文,而默认是西欧编码(1252),中文字符编不进去,转换失败的字符就统一被替换成了问号。
CrossOver 的每个容器都有一个独立的配置文件 cxbottle.conf,可以单独指定该容器的语言区域,不会影响其他容器。
步骤:
打开 CrossOver,选中运行 GW2 的容器,在右侧栏里点击:Open C: Drive
在弹出的 Finder 窗口里往上退一层——cxbottle.conf 和 drive_c 文件夹是同级的,不在 drive_c 里面。
用纯文本编辑器打开 cxbottle.conf (推荐BBEdit)
找到 [EnvironmentVariables] 这一节(没有就新建),加入一行:
[EnvironmentVariables]
"LANG" = "zh_CN.UTF-8"
如果这一节已有其他变量,直接在下面追加即可,不要删掉原有内容。
保存文件。
完全退出该容器(右键容器选"退出",不是只关掉 Steam 窗口),再重新从 CrossOver 启动 Steam 进游戏。
改完之后再进聊天框打字,中文就能正常发送了。
2026-07-07 03:57:00
过去几十年,我大概只凑热闹看过个位数场次球赛,但最近天天看赛程,期待着晚上看球。
时差是一个很重要的原因。在欧洲看世界杯,大多数比赛都在下班后,偶尔才需要熬夜。
最初的是苏格兰闯入世界杯,想支持一下。对来自格拉斯哥的罗伯逊印象很深,看了很多他和利物浦的故事。
后来又想,既然自己人在英格兰,那也看看英格兰吧。于是看了两场英格兰的比赛,开始留意哈利·凯恩和赖斯。
小红书也算是一个契机。今年它买了世界杯转播权,所以一直给我推送相关视频。那段时间,我刷到了很多哈兰德的表情包和集锦,自然而然地开始看挪威队的比赛。
就这样,看的比赛慢慢多了起来。
看葡萄牙对克罗地亚的时候,我开始了解莫德里奇,那个从战火中走出来的中场大师。
看法国队比赛的时候,我认识了坎特。那个和球队气质有些格格不入的人。务实、低调,却在球场上无处不在。也是从他开始,我才慢慢注意到,足球并不只是前锋和进球,还有中场、后腰、防守、覆盖和拦截。
看佛得角和阿根廷的时候,和朋友们不由自主的鼓掌恍惚,感觉隔壁邻居都能听到。难得熬夜看球,看的热血沸腾,真精彩啊。
佛得角其实不只是门将出色,只是他比较显眼。佛得角的阵型布置和高效的回防效率,压缩了对手的进攻空间,但他们也从不放弃进攻的可能性。这种教练和球员的决心和执行力才是这个球队最大的魅力
追着这些球员和球队的轨迹,我又看了很多纪录片和集锦。慢慢意识到,自己也许并不是单纯喜欢看球,而是喜欢故事。
而绿茵场上,最不缺的就是故事和传奇。
在现场见证故事发生,是一种无以伦比的诱惑和乐趣。
很多平时不看球的人会看世界杯,除了比赛本身好看,可能还有一个原因:它让人短暂地进入一种全球共同关注、共同记忆、共同感动的氛围里。
在同一个夜晚,世界上许多陌生人一起等待、紧张、欢呼、遗憾。哪怕我并不是一个真正懂球的人,也会被这种共同经历打动。
也许这就是世界杯的魅力,一种独特的浪漫。
2026-07-06 03:45:00
英国的盛夏,热的睡不着,结果隔壁养老院着火了…

好久没去动物园,还挺开心的。

Cotswolds 的微缩小镇,在 Bourton-on-the-Water 闲逛是真的很舒服,不愧为英国最美乡村。

玛莎和 Kew Garden 联名的饮料,好喝!

第一次看到这么小的南瓜。

意料之外好吃的薯片,特别上头!

落日的美好,照片拍不出。

划了次船,一直在转圈圈,最后腰酸背痛。

一直想玩一次万智牌,看到有降世神通版的新手套装,忍不住入手了。
御三家(万智牌、游戏王、宝可梦)里,我会喜欢万智牌的美术和质感。但宝可梦卡牌买的最多,对战视频游戏王看的最多,日常炉石玩的最久。
呵,男人!
真杂啊,忍不住吐槽自己。

附近公园里一颗奇怪的树。

买了 Meta 和雷朋联名的智能眼镜,挺有趣的,但日常佩戴还是略重。等体验几个月之后,应该也会写一篇博客。

卡卡颂可能是我这两年最喜欢的桌游之一。美术做的很舒服,喜欢这种拼图类的。
玩法没有很强的对抗性,但又有足够的策略性,很有趣。

这套西游记的侧封真漂亮。

新买的杯子,喜欢!
这一年弄碎了两个喜欢的杯子,不知道这个能坚持多久…

闪现巴黎!
Flan 应该是我在法国最喜欢的甜点,焦糖表层,内馅大量的香草籽,配上解腻的饼皮,真好呀。

人群之中的那抹微笑。

巴塞罗那的圣家堂是真的震撼呀。

卢浮宫JoJo周边,太酷啦!

格鲁吉亚美食卡里饺。
还是更喜欢小笼包,想回国了。

家里的新成员 Henry!

没想到第一次看万青是在伦敦。

喜欢这件短袖,求链接!

预约半年之后,Analogue Pocket 终于到了。
来的有些突然,还没把配件和卡带买好,希望下半年能腾出空来。

试着留了次胡子。

2026-07-05 05:47:00
最近给博客换了一套适配 Bear Blog 的自制主题,取名 Vermilion(朱砂)。
正文用衬线字体窄栏排版,行距放宽,适合中英文混排阅读,背景模拟了泛黄旧书的质感。
截图留念:

完整 CSS:
/* ============================================================
Vermilion — Bear Blog theme from https://anotherdayu.com/
Eggshell-gray paper / ink text / cinnabar seal accents / narrow airy column
Usage: paste into Dashboard → Themes → Edit theme CSS
============================================================ */
:root {
--paper: #f4f3ef; /* Sketch paper: cool-toned eggshell gray */
--ink: #2d2b28; /* Ink: warm gray-black, not pure black */
--ink-soft: #6e6a63; /* Secondary text: dates, footer */
--cinnabar: #a6392e; /* Cinnabar: seal red */
--hairline: #dcd8d0; /* Thin divider lines */
--code-bg: #eceae4; /* Code blocks: half a shade darker than the paper */
/* Paper grain: SVG noise, faint dark speckle in light mode */
--grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05 0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23g)'/%3E%3C/svg%3E");
}
@media (prefers-color-scheme: dark) {
:root {
--paper: #242220; /* Night paper: warm gray-black */
--ink: #d8d4cb;
--ink-soft: #8f8a80;
--cinnabar: #cf6a58; /* Cinnabar brightened one step */
--hairline: #3b3833;
--code-bg: #2e2b28;
/* Switch to faint light speckle so grain stays visible on a dark base */
--grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.04 0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23g)'/%3E%3C/svg%3E");
}
}
/* ---------- Base typography: narrow, airy column ---------- */
body {
background-color: var(--paper);
background-image: var(--grain); /* Overlay the paper grain texture */
color: var(--ink);
font-family: Georgia, "Iowan Old Style", "Noto Serif SC",
"Source Han Serif SC", "Songti SC", SimSun, serif;
font-size: 1.125rem;
line-height: 1.9;
max-width: 650px;
margin: 0 auto;
padding: 2.5rem 1.5rem;
-webkit-font-smoothing: antialiased;
overflow-wrap: break-word; /* Long URLs / words won't break the narrow layout */
-webkit-text-size-adjust: 100%; /* Prevent font inflation on mobile landscape */
}
p {
margin: 1.4em 0;
}
/* ---------- Blog title: a cinnabar seal as the signature ---------- */
.title h1 {
font-size: 1.5rem;
font-weight: 600;
letter-spacing: 0.04em;
color: var(--ink);
display: inline-block;
}
/* Signature element: small cinnabar seal square after the title */
.title h1::after {
content: "";
display: inline-block;
width: 0.55em;
height: 0.55em;
margin-left: 0.45em;
background: var(--cinnabar);
border-radius: 1px;
vertical-align: baseline;
}
.title h1 a,
.title h1 a:visited {
color: inherit;
text-decoration: none;
}
/* ---------- Nav: small quiet text, no divider ---------- */
nav {
font-size: 0.9rem;
letter-spacing: 0.05em;
margin-bottom: 2.5rem;
}
nav a {
color: var(--ink-soft);
text-decoration: none;
margin-right: 1.2em;
}
nav a:hover {
color: var(--cinnabar);
}
/* ---------- Heading hierarchy: distinguished by size and weight ---------- */
h1, h2, h3, h4 {
line-height: 1.5;
letter-spacing: 0.02em;
margin-top: 2.2em;
margin-bottom: 0.6em;
}
h1 {
font-size: 1.6rem;
font-weight: 700;
}
h2 {
font-size: 1.3rem;
font-weight: 600;
}
h3 {
font-size: 1.05rem;
font-weight: 600;
}
/* ---------- Links: thin cinnabar underline ---------- */
a {
color: var(--ink);
text-decoration: underline;
text-decoration-color: var(--cinnabar);
text-decoration-thickness: 1px;
text-underline-offset: 3px;
}
a:hover {
color: var(--cinnabar);
}
/* ---------- Post list: alignment as separation — two columns and whitespace, no divider lines ---------- */
.blog-posts {
list-style: none;
padding: 0;
}
.blog-posts li {
display: flex;
align-items: baseline;
gap: 1.2em;
padding: 0.3em 0;
}
/* Fixed-width dates form a tidy left column; titles align into the right column */
.blog-posts li span {
flex-shrink: 0;
min-width: 6.5em;
font-size: 0.85rem;
color: var(--ink-soft);
font-variant-numeric: tabular-nums;
}
.blog-posts li a {
text-decoration: none;
}
.blog-posts li a:hover {
color: var(--cinnabar);
}
/* ---------- Tags: no underline, quiet gray text ---------- */
.tags a {
text-decoration: none;
color: var(--ink-soft);
font-size: 0.85rem;
}
.tags a:hover {
color: var(--cinnabar);
}
/* ---------- Blockquote: cinnabar left rule ---------- */
blockquote {
margin: 1.6em 0;
padding: 0.2em 0 0.2em 1.2em;
border-left: 2px solid var(--cinnabar);
color: var(--ink-soft);
}
/* ---------- Horizontal rule ---------- */
hr {
border: none;
border-top: 1px solid var(--hairline);
margin: 2.5em auto;
width: 60%;
}
/* ---------- Code ---------- */
.highlight, .code, pre, code {
font-family: "SF Mono", Menlo, Consolas, "Sarasa Mono SC", monospace;
font-size: 0.88em;
background: var(--code-bg);
border-radius: 3px;
}
code {
padding: 0.15em 0.4em;
}
pre {
padding: 1em 1.2em;
overflow-x: auto;
line-height: 1.7;
border: 1px solid var(--hairline);
}
pre code {
padding: 0;
background: none;
}
/* ---------- Images and tables ---------- */
img {
max-width: 100%;
border-radius: 2px;
}
table {
border-collapse: collapse;
width: 100%;
font-size: 0.95em;
}
th, td {
padding: 0.5em 0.8em;
border-bottom: 1px solid var(--hairline);
text-align: left;
}
th {
font-weight: 600;
border-bottom-width: 2px;
}
/* ---------- Sub-headings (h2/h3): gray # prefix; h1 and blog title stay clean ---------- */
.post h2::before,
.page h2::before,
.post h3::before,
.page h3::before {
content: "# ";
color: var(--ink-soft);
opacity: 0.6;
font-weight: 400;
}
/* ---------- Post page: date under the title ---------- */
.post time,
time {
font-size: 0.85rem;
color: var(--ink-soft);
letter-spacing: 0.03em;
}
/* ---------- Inputs and buttons: search box, subscribe form ---------- */
/* Covers the common #searchInput search plugin, native search/text inputs,
and the email field on the subscribe page */
input[type="text"],
input[type="search"],
input[type="email"],
#searchInput {
font-family: inherit;
font-size: 0.95rem;
color: var(--ink);
background: transparent;
border: 1px solid var(--hairline);
border-radius: 3px;
padding: 0.5em 0.9em;
width: 100%;
max-width: 100%;
box-sizing: border-box;
outline: none;
transition: border-color 0.15s ease;
-webkit-appearance: none; /* Strip default iOS input chrome */
}
#searchInput {
margin-bottom: 1.5em;
}
input::placeholder {
color: var(--ink-soft);
opacity: 0.7;
}
/* Focus: the border wakes up in cinnabar, echoing the link underlines */
input[type="text"]:focus,
input[type="search"]:focus,
input[type="email"]:focus,
#searchInput:focus {
border-color: var(--cinnabar);
}
/* Remove the default clear (x) button so the field stays quiet */
input[type="search"]::-webkit-search-decoration,
input[type="search"]::-webkit-search-cancel-button {
-webkit-appearance: none;
}
button:not(.upvote-button),
input[type="submit"] {
font-family: inherit;
font-size: 0.9rem;
letter-spacing: 0.03em;
color: var(--ink-soft);
background: transparent;
border: 1px solid var(--hairline);
border-radius: 3px;
padding: 0.45em 1.2em;
cursor: pointer;
transition: color 0.15s ease, border-color 0.15s ease;
}
button:not(.upvote-button):hover,
input[type="submit"]:hover {
color: var(--cinnabar);
border-color: var(--cinnabar);
}
/* ---------- Footer ---------- */
footer {
margin-top: 3.5rem;
padding-top: 1.2rem;
border-top: 1px solid var(--hairline);
font-size: 0.85rem;
color: var(--ink-soft);
}
footer a {
color: var(--ink-soft);
}
/* Hide the "Made with Bear" attribution (the last span in the footer).
Note: only allowed for paid Bear accounts or contributors —
free accounts hiding it will get their styles reset by the platform. */
footer span:last-child {
display: none;
}
/* ---------- Mobile ---------- */
@media (max-width: 600px) {
body {
padding: 1.4rem 1.1rem;
font-size: 1.05rem;
line-height: 1.85;
}
/* Scale the heading hierarchy down one step so narrow screens don't feel crowded */
.title h1 { font-size: 1.3rem; }
h1 { font-size: 1.35rem; }
h2 { font-size: 1.15rem; }
h3 { font-size: 1.05rem; }
h1, h2, h3 { margin-top: 1.8em; }
/* Enlarge nav tap targets for thumbs */
nav {
margin-bottom: 1.8rem;
}
nav a {
display: inline-block;
padding: 0.4em 0;
margin-right: 1.4em;
}
/* Post list: date wraps above the title, row spacing increases */
.blog-posts li {
flex-direction: column;
gap: 0.1em;
padding: 0.6em 0;
}
/* Tighter code-block padding, smoother horizontal scrolling */
pre {
padding: 0.8em 1em;
font-size: 0.85em;
-webkit-overflow-scrolling: touch;
}
/* Wide tables scroll horizontally instead of breaking the page */
table {
display: block;
overflow-x: auto;
white-space: nowrap;
}
hr { width: 100%; }
}
.upvote-count {
display: none;
}
.upvote-button:disabled::after {
content: 'liked!';
}
2026-06-25 05:06:00
背包可能是除了电脑之外,我最看重的通勤装备。过去用的是 Bellroy,起了换包的念头,是因为几次大雨把包淋透之后,开始有点担心里面的电子产品。英国的雨来的太不讲道理。
新背包现在用了 10 个月,非常满意,是 21L 的 Able Carry Daily Plus。这个容量很适合通勤,不会显得臃肿,也足够放下日常所需。
它的外观比较内敛,但又与常规电脑包不同,没那么中规中矩,保留了一些辨识度。
我比较喜欢它的几个地方:

主力设备是 MacBook Pro M2 Pro,偶尔会带上 iPad mini 看书。
因为更看重电脑防护,所以我没有选择轻量化背包,而是把减重放在内部收纳上。现在会尽量使用 Cuben Fiber 材料的小物件,既轻,也不太吸水,清理起来比较方便,还能多一道防水层保护电子产品。

一些小物件:
以前总想一包多用,既希望它能完美应对高频的日常通勤,又希望它能兼顾偶尔一次的短途旅行。为此我买过大包、小包,甚至还尝试过背着徒步包通勤。
后来才明白,我总是把低频需求想得太重要。一个包当然可以尽量多用,但它首先应该服务于最高频的需求,而不是偶尔出现的那一次旅行。
2026-06-24 01:08:00
韩炳哲在《爱欲之死》里聊到:如果说有一样东西需要对当今社会日益频繁发生的「失望」负责,那么它不是不断升华的想象力,而是不断提高的期望值。
过去,人们先经历,再留下记忆和图像。现在,我们还没有真正进入一个地方,就已经在观看它最漂亮的样子:最好的光线,最干净的构图,最适合发布的角度。
经验反过来变成照片的生产过程。
现实从来不是这样。
天气可能不好,街道可能杂乱,行人可能很多,展览可能普通,餐厅可能拥挤,人可能疲惫,关系也可能尴尬。这些并不是现实的瑕疵,而是现实原本的质地。
图像世界和网络会把这些东西过滤掉,留下「最好」的瞬间,传播那些易于展示和观看的一面。
所以我们真正拿来比较的,并不是现实和想象,而是现实的完整经验,和图像筛选之后的理想片段。
当现实的粗糙感被抹平,世界就像是说明书,不再体验,而是在核对;不再认真相处磨合,而是确认对方是否符合某个清单。
摄影和其他艺术不同的地方也在于此。照片看起来最接近现实,却也最容易暴露现实的不可抵达。
摄影用最接近现实的方式,提醒我们现实无法被真正占有。
既像证据,又像告别。