summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEltrac <hi@guhub.cn>2025-06-06 09:00:36 +0800
committerEltrac <hi@guhub.cn>2025-06-06 09:00:36 +0800
commit430926459e4846549b1571c460e2596874663c1b (patch)
treea57dffcfc208ff85e2af1422f61f67f3d045dfb2
parent39888ad4d4cdc4649a5eed076aab07a1a514efc0 (diff)
parent871662725c287c73fcf55a1212f176679a690f04 (diff)
Merge branch 'master' of https://github.com/BigCoke233/geek-death-project
-rw-r--r--assets/css/aplayer.css1
-rw-r--r--content/cards/路灯效应.md21
-rw-r--r--content/library/2025/制造消费者.md97
-rw-r--r--content/library/2025/阈限思维.md2
-rw-r--r--content/posts/weekly/30.md4
-rw-r--r--content/posts/weekly/31.md118
-rw-r--r--content/posts/喝咖啡如何帮我开发自己的S属性.md122
-rw-r--r--content/posts/搬家如何帮我理解现代人与消费的关系.md89
-rw-r--r--content/sponsor.md16
-rw-r--r--content/图灵机和可计算性理论.md41
-rw-r--r--layouts/cards/single.html8
-rw-r--r--layouts/fictions/single.html9
-rw-r--r--layouts/library/section.html2
-rw-r--r--layouts/library/single.html7
-rw-r--r--layouts/partials/head/css.html7
-rw-r--r--layouts/partials/scripts.html51
-rw-r--r--layouts/posts/single.html7
-rw-r--r--layouts/shortcodes/aplayer.html9
-rw-r--r--pagefind.yml9
19 files changed, 594 insertions, 26 deletions
diff --git a/assets/css/aplayer.css b/assets/css/aplayer.css
new file mode 100644
index 00000000..344c4145
--- /dev/null
+++ b/assets/css/aplayer.css
@@ -0,0 +1 @@
+.aplayer{background:#fff;font-family:Arial,Helvetica,sans-serif;margin:5px;box-shadow:0 2px 2px 0 rgba(0,0,0,.07),0 1px 5px 0 rgba(0,0,0,.1);border-radius:2px;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;line-height:normal;position:relative}.aplayer *{box-sizing:content-box}.aplayer svg{width:100%;height:100%}.aplayer svg circle,.aplayer svg path{fill:#fff}.aplayer.aplayer-withlist .aplayer-info{border-bottom:1px solid #e9e9e9}.aplayer.aplayer-withlist .aplayer-list{display:block}.aplayer.aplayer-withlist .aplayer-icon-order,.aplayer.aplayer-withlist .aplayer-info .aplayer-controller .aplayer-time .aplayer-icon.aplayer-icon-menu{display:inline}.aplayer.aplayer-withlrc .aplayer-pic{height:90px;width:90px}.aplayer.aplayer-withlrc .aplayer-info{margin-left:90px;height:90px;padding:10px 7px 0}.aplayer.aplayer-withlrc .aplayer-lrc{display:block}.aplayer.aplayer-narrow{width:66px}.aplayer.aplayer-narrow .aplayer-info,.aplayer.aplayer-narrow .aplayer-list{display:none}.aplayer.aplayer-narrow .aplayer-body,.aplayer.aplayer-narrow .aplayer-pic{height:66px;width:66px}.aplayer.aplayer-fixed{position:fixed;bottom:0;left:0;right:0;margin:0;z-index:99;overflow:visible;max-width:400px;box-shadow:none}.aplayer.aplayer-fixed .aplayer-list{margin-bottom:65px;border:1px solid #eee;border-bottom:none}.aplayer.aplayer-fixed .aplayer-body{position:fixed;bottom:0;left:0;right:0;margin:0;z-index:99;background:#fff;padding-right:18px;transition:all .3s ease;max-width:400px}.aplayer.aplayer-fixed .aplayer-lrc{display:block;position:fixed;bottom:10px;left:0;right:0;margin:0;z-index:98;pointer-events:none;text-shadow:-1px -1px 0 #fff}.aplayer.aplayer-fixed .aplayer-lrc:after,.aplayer.aplayer-fixed .aplayer-lrc:before{display:none}.aplayer.aplayer-fixed .aplayer-info{-webkit-transform:scaleX(1);transform:scaleX(1);-webkit-transform-origin:0 0;transform-origin:0 0;transition:all .3s ease;border-bottom:none;border-top:1px solid #e9e9e9}.aplayer.aplayer-fixed .aplayer-info .aplayer-music{width:calc(100% - 105px)}.aplayer.aplayer-fixed .aplayer-miniswitcher{display:block}.aplayer.aplayer-fixed.aplayer-narrow .aplayer-info{display:block;-webkit-transform:scaleX(0);transform:scaleX(0)}.aplayer.aplayer-fixed.aplayer-narrow .aplayer-body{width:66px!important}.aplayer.aplayer-fixed.aplayer-narrow .aplayer-miniswitcher .aplayer-icon{-webkit-transform:rotateY(0);transform:rotateY(0)}.aplayer.aplayer-fixed .aplayer-icon-back,.aplayer.aplayer-fixed .aplayer-icon-forward,.aplayer.aplayer-fixed .aplayer-icon-lrc,.aplayer.aplayer-fixed .aplayer-icon-play{display:inline-block}.aplayer.aplayer-fixed .aplayer-icon-back,.aplayer.aplayer-fixed .aplayer-icon-forward,.aplayer.aplayer-fixed .aplayer-icon-menu,.aplayer.aplayer-fixed .aplayer-icon-play{position:absolute;bottom:27px;width:20px;height:20px}.aplayer.aplayer-fixed .aplayer-icon-back{right:75px}.aplayer.aplayer-fixed .aplayer-icon-play{right:50px}.aplayer.aplayer-fixed .aplayer-icon-forward{right:25px}.aplayer.aplayer-fixed .aplayer-icon-menu{right:0}.aplayer.aplayer-arrow .aplayer-icon-loop,.aplayer.aplayer-arrow .aplayer-icon-order,.aplayer.aplayer-mobile .aplayer-icon-volume-down{display:none}.aplayer.aplayer-loading .aplayer-info .aplayer-controller .aplayer-loading-icon{display:block}.aplayer.aplayer-loading .aplayer-info .aplayer-controller .aplayer-bar-wrap .aplayer-bar .aplayer-played .aplayer-thumb{-webkit-transform:scale(1);transform:scale(1)}.aplayer .aplayer-body{position:relative}.aplayer .aplayer-icon{width:15px;height:15px;border:none;background-color:transparent;outline:none;cursor:pointer;opacity:.8;vertical-align:middle;padding:0;font-size:12px;margin:0;display:inline-block}.aplayer .aplayer-icon path{transition:all .2s ease-in-out}.aplayer .aplayer-icon-back,.aplayer .aplayer-icon-forward,.aplayer .aplayer-icon-lrc,.aplayer .aplayer-icon-order,.aplayer .aplayer-icon-play{display:none}.aplayer .aplayer-icon-lrc-inactivity svg{opacity:.4}.aplayer .aplayer-icon-forward{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.aplayer .aplayer-lrc-content{display:none}.aplayer .aplayer-pic{position:relative;float:left;height:66px;width:66px;background-size:cover;background-position:50%;transition:all .3s ease;cursor:pointer}.aplayer .aplayer-pic:hover .aplayer-button{opacity:1}.aplayer .aplayer-pic .aplayer-button{position:absolute;border-radius:50%;opacity:.8;text-shadow:0 1px 1px rgba(0,0,0,.2);box-shadow:0 1px 1px rgba(0,0,0,.2);background:rgba(0,0,0,.2);transition:all .1s ease}.aplayer .aplayer-pic .aplayer-button path{fill:#fff}.aplayer .aplayer-pic .aplayer-hide{display:none}.aplayer .aplayer-pic .aplayer-play{width:26px;height:26px;border:2px solid #fff;bottom:50%;right:50%;margin:0 -15px -15px 0}.aplayer .aplayer-pic .aplayer-play svg{position:absolute;top:3px;left:4px;height:20px;width:20px}.aplayer .aplayer-pic .aplayer-pause{width:16px;height:16px;border:2px solid #fff;bottom:4px;right:4px}.aplayer .aplayer-pic .aplayer-pause svg{position:absolute;top:2px;left:2px;height:12px;width:12px}.aplayer .aplayer-info{margin-left:66px;padding:14px 7px 0 10px;height:66px;box-sizing:border-box}.aplayer .aplayer-info .aplayer-music{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin:0 0 13px 5px;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;cursor:default;padding-bottom:2px;height:20px}.aplayer .aplayer-info .aplayer-music .aplayer-title{font-size:14px}.aplayer .aplayer-info .aplayer-music .aplayer-author{font-size:12px;color:#666}.aplayer .aplayer-info .aplayer-controller{position:relative;display:flex}.aplayer .aplayer-info .aplayer-controller .aplayer-bar-wrap{margin:0 0 0 5px;padding:4px 0;cursor:pointer!important;flex:1}.aplayer .aplayer-info .aplayer-controller .aplayer-bar-wrap:hover .aplayer-bar .aplayer-played .aplayer-thumb{-webkit-transform:scale(1);transform:scale(1)}.aplayer .aplayer-info .aplayer-controller .aplayer-bar-wrap .aplayer-bar{position:relative;height:2px;width:100%;background:#cdcdcd}.aplayer .aplayer-info .aplayer-controller .aplayer-bar-wrap .aplayer-bar .aplayer-loaded{position:absolute;left:0;top:0;bottom:0;background:#aaa;height:2px;transition:all .5s ease}.aplayer .aplayer-info .aplayer-controller .aplayer-bar-wrap .aplayer-bar .aplayer-played{position:absolute;left:0;top:0;bottom:0;height:2px}.aplayer .aplayer-info .aplayer-controller .aplayer-bar-wrap .aplayer-bar .aplayer-played .aplayer-thumb{position:absolute;top:0;right:5px;margin-top:-4px;margin-right:-10px;height:10px;width:10px;border-radius:50%;cursor:pointer;transition:all .3s ease-in-out;-webkit-transform:scale(0);transform:scale(0)}.aplayer .aplayer-info .aplayer-controller .aplayer-time{position:relative;right:0;bottom:4px;height:17px;color:#999;font-size:11px;padding-left:7px}.aplayer .aplayer-info .aplayer-controller .aplayer-time .aplayer-time-inner{vertical-align:middle}.aplayer .aplayer-info .aplayer-controller .aplayer-time .aplayer-icon{cursor:pointer;transition:all .2s ease}.aplayer .aplayer-info .aplayer-controller .aplayer-time .aplayer-icon path{fill:#666}.aplayer .aplayer-info .aplayer-controller .aplayer-time .aplayer-icon.aplayer-icon-loop{margin-right:2px}.aplayer .aplayer-info .aplayer-controller .aplayer-time .aplayer-icon:hover path{fill:#000}.aplayer .aplayer-info .aplayer-controller .aplayer-time .aplayer-icon.aplayer-icon-menu,.aplayer .aplayer-info .aplayer-controller .aplayer-time.aplayer-time-narrow .aplayer-icon-menu,.aplayer .aplayer-info .aplayer-controller .aplayer-time.aplayer-time-narrow .aplayer-icon-mode{display:none}.aplayer .aplayer-info .aplayer-controller .aplayer-volume-wrap{position:relative;display:inline-block;margin-left:3px;cursor:pointer!important}.aplayer .aplayer-info .aplayer-controller .aplayer-volume-wrap:hover .aplayer-volume-bar-wrap{height:40px}.aplayer .aplayer-info .aplayer-controller .aplayer-volume-wrap .aplayer-volume-bar-wrap{position:absolute;bottom:15px;right:-3px;width:25px;height:0;z-index:99;overflow:hidden;transition:all .2s ease-in-out}.aplayer .aplayer-info .aplayer-controller .aplayer-volume-wrap .aplayer-volume-bar-wrap.aplayer-volume-bar-wrap-active{height:40px}.aplayer .aplayer-info .aplayer-controller .aplayer-volume-wrap .aplayer-volume-bar-wrap .aplayer-volume-bar{position:absolute;bottom:0;right:10px;width:5px;height:35px;background:#aaa;border-radius:2.5px;overflow:hidden}.aplayer .aplayer-info .aplayer-controller .aplayer-volume-wrap .aplayer-volume-bar-wrap .aplayer-volume-bar .aplayer-volume{position:absolute;bottom:0;right:0;width:5px;transition:all .1s ease}.aplayer .aplayer-info .aplayer-controller .aplayer-loading-icon{display:none}.aplayer .aplayer-info .aplayer-controller .aplayer-loading-icon svg{position:absolute;-webkit-animation:rotate 1s linear infinite;animation:rotate 1s linear infinite}.aplayer .aplayer-lrc{display:none;position:relative;height:30px;text-align:center;overflow:hidden;margin:-10px 0 7px}.aplayer .aplayer-lrc:before{top:0;height:10%;background:linear-gradient(180deg,#fff 0,hsla(0,0%,100%,0));filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffffff",endColorstr="#00ffffff",GradientType=0)}.aplayer .aplayer-lrc:after,.aplayer .aplayer-lrc:before{position:absolute;z-index:1;display:block;overflow:hidden;width:100%;content:" "}.aplayer .aplayer-lrc:after{bottom:0;height:33%;background:linear-gradient(180deg,hsla(0,0%,100%,0) 0,hsla(0,0%,100%,.8));filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#00ffffff",endColorstr="#ccffffff",GradientType=0)}.aplayer .aplayer-lrc p{font-size:12px;color:#666;line-height:16px!important;height:16px!important;padding:0!important;margin:0!important;transition:all .5s ease-out;opacity:.4;overflow:hidden}.aplayer .aplayer-lrc p.aplayer-lrc-current{opacity:1;overflow:visible;height:auto!important;min-height:16px}.aplayer .aplayer-lrc.aplayer-lrc-hide{display:none}.aplayer .aplayer-lrc .aplayer-lrc-contents{width:100%;transition:all .5s ease-out;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;cursor:default}.aplayer .aplayer-list{overflow:auto;transition:all .5s ease;will-change:height;display:none;overflow:hidden}.aplayer .aplayer-list.aplayer-list-hide{max-height:0!important}.aplayer .aplayer-list ol{list-style-type:none;margin:0;padding:0;overflow-y:auto}.aplayer .aplayer-list ol::-webkit-scrollbar{width:5px}.aplayer .aplayer-list ol::-webkit-scrollbar-thumb{border-radius:3px;background-color:#eee}.aplayer .aplayer-list ol::-webkit-scrollbar-thumb:hover{background-color:#ccc}.aplayer .aplayer-list ol li{position:relative;height:32px;line-height:32px;padding:0 15px;font-size:12px;border-top:1px solid #e9e9e9;cursor:pointer;transition:all .2s ease;overflow:hidden;margin:0}.aplayer .aplayer-list ol li:first-child{border-top:none}.aplayer .aplayer-list ol li:hover{background:#efefef}.aplayer .aplayer-list ol li.aplayer-list-light{background:#e9e9e9}.aplayer .aplayer-list ol li.aplayer-list-light .aplayer-list-cur{display:inline-block}.aplayer .aplayer-list ol li .aplayer-list-cur{display:none;width:3px;height:22px;position:absolute;left:0;top:5px;cursor:pointer}.aplayer .aplayer-list ol li .aplayer-list-index{color:#666;margin-right:12px;cursor:pointer}.aplayer .aplayer-list ol li .aplayer-list-author{color:#666;float:right;cursor:pointer}.aplayer .aplayer-notice{opacity:0;position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);font-size:12px;border-radius:4px;padding:5px 10px;transition:all .3s ease-in-out;overflow:hidden;color:#fff;pointer-events:none;background-color:#f4f4f5;color:#909399}.aplayer .aplayer-miniswitcher{display:none;position:absolute;top:0;right:0;bottom:0;height:100%;background:#e6e6e6;width:18px;border-radius:0 2px 2px 0}.aplayer .aplayer-miniswitcher .aplayer-icon{height:100%;width:100%;-webkit-transform:rotateY(180deg);transform:rotateY(180deg);transition:all .3s ease}.aplayer .aplayer-miniswitcher .aplayer-icon path{fill:#666}.aplayer .aplayer-miniswitcher .aplayer-icon:hover path{fill:#000}@-webkit-keyframes aplayer-roll{0%{left:0}to{left:-100%}}@keyframes aplayer-roll{0%{left:0}to{left:-100%}}@-webkit-keyframes rotate{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes rotate{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}
diff --git a/content/cards/路灯效应.md b/content/cards/路灯效应.md
new file mode 100644
index 00000000..59d40c01
--- /dev/null
+++ b/content/cards/路灯效应.md
@@ -0,0 +1,21 @@
+---
+title: 路灯效应
+tags:
+ - 心理学
+ - 逻辑
+date: 2025-06-02T12:16:00
+---
+
+路灯效应是一种观察偏差(observational bias),意思是说当事人只在最明显的地方搜索样本,忽略了更难找的地方也可能存在的样本,进而造成了偏差。
+
+路灯效应的名字出自一个笑话:
+
+> 警察看见一个醉汉在路灯下找东西,便问他丢了什么。醉汉说他的钥匙不见了,让警察帮他一起找。两个人找了半天都没有找到钥匙,警察问他:“你确定你的钥匙掉这了吗?”
+>
+> 醉汉说:“不是,我在公园丢的。”
+>
+> 警察说:“那你为什么在路灯下面找?”
+>
+> 醉汉说:“因为这里有光!”
+
+<span style="font-size:80%">Source: [Streetlight effect - Wikipedia](https://en.wikipedia.org/wiki/Streetlight_effect)</span> \ No newline at end of file
diff --git a/content/library/2025/制造消费者.md b/content/library/2025/制造消费者.md
new file mode 100644
index 00000000..0c7f8370
--- /dev/null
+++ b/content/library/2025/制造消费者.md
@@ -0,0 +1,97 @@
+---
+title: 制造消费者
+author: Anthony Galluzzo
+genre: 社科
+rating: 4
+cover: https://image.guhub.cn/uPic/s34236568.jpg
+date: 2025-06-05T12:29:00
+draft: false
+tags:
+ - 经济学
+ - 社会学
+ - 自我
+ - 消费主义
+ - 广告
+---
+
+一本讲商品经济和消费主义文化发展史的书,涉及经济学、社会学和心理学。这本书或不许不能帮助读者理解资本主义市场经济的运作方式,但可以帮助读者理解消费主义如何产生、如何被制造和利用,又是如何影响我们的。
+
+## 拜物:商品经济让人们对物品越来越陌生
+
+> 这种新的经济模式让人与市场紧紧相连,这张紧密结合的网络支持着人们的生计,也把生产与消费彻底分离了。在这张网中,人们生产着自己所不需要的东西,挣到钱再去购买一些不由他们生产的商品,最终导致的结果就是人们对日常物品越来越陌生。
+
+> 物品不再是劳动的直接产物,人们不再了解这些物品的生产环境、制作过程,展示在人们面前的商品愈发变得陌生而神奇了,这也是社会变得越来越拜物的过程。
+
+现代人与市场的关系让我们对物品感到越来越陌生,也因此觉得它们越来越「神秘」,并产生一种类似宗教信仰的崇拜。如今人们不再关心商店里售卖的清洁剂是不是白醋和小苏打的混合物,只关心商品的品牌,用品牌和品牌对商品的塑造判断清洁能力的高低。
+
+品牌解决了商品经济最初带来的信任问题。一开始人们对货架上销售的东西持怀疑态度,而且,商品的生产过程离自己很远,如果商品有问题,他们不能像以前一样直接找人解决,因为以前的商品生产者都是自己周围的、熟悉的人。品牌的出现,给企业生产的商品塑造了某种形象,通过宣传让人与之建立信任感。有了品牌的包装,消费者就更不在乎商品里究竟有什么、究竟是如何生产的了。
+
+消费主义改变了人们与物品的关系。
+
+## 符号:消费成为塑造自我的方式
+
+> 在人们眼中,商品显得那么神奇、那么梦幻,脱离了物质的具体性,所以消费者也更加容易相信煞有介事的营销话语带来的符号联想了。
+
+> 消费者要想成为那样的人,无须做出任何自我提升的努力,只需要通过抽象化的购买和占有就能让自己拥有这些特质。
+
+> 商品的繁多使得人人都可以通过购物来彰显自己的地位,人人都可以把自己的家填满装饰品和家具,并给妻子买些镀金首饰和漂亮衣服,无论哪种经济条件的资产阶级都可以借此肯定自己的阶级身份。
+
+> 看似是人们选择着商品、商品给人们带来愉悦,但实际上这一切都服从着一种集体的社会逻辑,人并不是真的因为内在需求而消费,他们是被符号牵着鼻子走。
+
+> 很多人认为反主流文化意识形态在广告辞藻中被滥用,其实从另一个角度看,是因为广告在个人主义和自由主义的传播中发挥了核心作用。
+
+> 与其他墨守成规的电脑用户不同,==苹果用户仿佛拥有艺术家、反叛者的身份,他们通过购买苹果电脑,彰显自己复杂而难以捉摸的个性,因为他们就像苹果的口号一样,有“不一样的想法”==。
+
+书中提到了一些特殊群体,例如波西米亚艺术家、丹迪主义者、嬉皮士、反叛主流文化的青年,他们是在上世纪消费主义文化兴起后出现的,他们都通过消费、符号来建立「自我」。就连更早一些的资产阶级,也通过购买收藏品来彰显自己的阶级身份,甚至比肩贵族。
+
+在后来的广告和宣传话语当中,「做自己」一类的口号也成了消费主义的教条。看似浪漫的自我宣言,其实是促进消费的手段,鼓励人们通过消费商品、获取符号来彰显自己的个性和与众不同。矛盾的是,一些特立独行的反叛者又觉得消费主义侵犯了他们的个性,因为彰显他们个性的商品被大量生产和售卖,几乎随处可见,然而,从一开始,这样的个性就是与消费密不可分的。
+
+现在的我在反思自己的消费决策时,发现自己的确是被符号牵着鼻子走了。我购买苹果产品,除了认可产品本身,也可能是想借其彰显自己的独特身份,或者至少是在某种程度上塑造了我的自我认同感。
+
+## 媒介:消费史就是商品和商品图像流通加速的历史
+
+> 消费意识形态就像水一样,把消费者浸泡在其中,如此显而易见,却经常不被发现、不被人们考虑到。媒体商业话语改变着事物之间的关系,并把人们塑造成“依赖于资本增值过程的因变量”。
+
+> 然而,技术的发展从来不会让人的欲望满足,恰恰相反,速度越增加、人们越不耐烦,市场流通的惊人进步对现在的人们来说也只是习以为常的事情了。
+
+图像媒介是消费主义发展的一个重要媒介。当石板画、杂志和电影的图像媒介相继出现,图像信息的流通变得越来越快,人们对消费也越来越习以为常。图像的直接感官刺激,让人们觉得图像中的人所使用的物是平常的,他们的生活方式也是主流的,而自己也应该通过消费获得那样的物、过那样的生活。
+
+图像媒介有三种功能:
+
+1. 培养消费习惯和消费文化。
+2. 植入社会想象。
+3. 将商品平常化。
+
+我认为短视频也是图像传播的加速,再加上物流和网购的发展,消费变得前所未有地快速。图像媒介的加速传播让新的概念、新的焦虑、新的商品快速涌现,同时也快速淘汰旧的商品。商品的不断新陈代谢,让消费也没有止境。
+
+## 其他有意思的观点
+
+### 资产阶级与群体心理学的产生
+
+> 在群体的灵魂中占上风的,并不是对自由的要求,而是当奴才的欲望。
+
+作者指出,以《[乌合之众](/library/2024/乌合之众/)》为代表的群体心理学(人群心理学)研究,其实源自于资产阶级对民众的恐惧。他们害怕群体展现出来的巨大力量,所以将他们塑造成一种由本能驱使的、无法理性思考的、完全听从于领袖的存在。
+
+不过,某种程度上,他们说对了。公关人员这一职业的出现,其实就是对《乌合之众》中理论的应用。因为他们发现群众是可以被引导和驱动的,所以可以通过操纵民众的观点来操纵消费。如今社交媒体上的关键意见领袖(KOL)也是类似的存在。
+
+### 广告的作用
+
+广告对对商品来说似乎是必不可少的,尤其是在消费主义的背景下,广告为原本只有物理属性的商品附加了象征意义,成为了一种符号。
+
+> 广告让商品得以象征个性、价值、属性、品质、社会地位等,广告可以告诉观众一件商品象征着什么,或者更确切地说,是商家希望这件商品能象征着什么。
+
+> 如何区分某种肥皂,让它显得与众不同?第一个策略是为产品增加与奢侈相关的联想,让肥皂不仅代表肥皂,而更重要的是代表它的“用户”。
+
+> 另一个常见的联想是诱惑。伍德伯里就在1910年代初期大量运用了这一策略,该品牌摒弃了一贯以来琐碎的医疗卫生话题,反而描绘了一对来自中上层阶级的年轻夫妇狂热的拥抱,伴随着这样一句口号——“这样的皮肤让人喜欢触摸”(A skin you love to touch)。由此可见,广告不仅贩卖奢华和尊贵,还贩卖浪漫。
+
+> 从此,广告的话术在本质上发生了变化。它不再专注于描述产品功能,而是要去赞美产品的“心理效用”,也就是产品能为社会和人们带来什么好处。广告开始表现出其象征性的特点,它们彰显汽车为人带来的地位和声望,而不介绍汽车本身,它们着重强调肥皂的性暗示,而不专门去讲肥皂本身。
+
+> 给小孩看汽车广告并没有什么可笑的,这除了可以影响他们父母的购买倾向之外,也可以对小孩成年后选购汽车的品牌偏好产生影响。
+
+不过作者也指出广告的影响其实被高估了,因为一则广告其实很难改变人们习以为常的生活方式,营销还需要广告以外的其他手段。
+
+---
+
+这本书带给我的收获是:我会有意识地在我发觉自己「很想买一件商品」的时候分析自己想买的原因,我的需求和焦虑是否是图像媒介和广告植入的,我是否被符号牵着鼻子走了?
+
+认识消费主义的发展过程,其实也能帮助个体分析自己的消费行为。从一个第三方的、抽离的视角看待世界,也是在总结规律,帮助反思自己。
diff --git a/content/library/2025/阈限思维.md b/content/library/2025/阈限思维.md
index b2190bb2..6339918f 100644
--- a/content/library/2025/阈限思维.md
+++ b/content/library/2025/阈限思维.md
@@ -1,5 +1,5 @@
---
-title: 阈限空间
+title: 阈限思维
author: 戴夫·格雷
rating: 3
date: 2025-01-21
diff --git a/content/posts/weekly/30.md b/content/posts/weekly/30.md
index 396f1f63..be7dbe16 100644
--- a/content/posts/weekly/30.md
+++ b/content/posts/weekly/30.md
@@ -18,6 +18,8 @@ draft: false
toc: true
endnotes:
- 封面图自摄,设备为 iPhone 15 Pro
+mentioned_books:
+ - The-Subtle-Art-of-Not-Giving-A-Fuck
---
The Black Dog 是专辑《The Tortured Poets' Department》里我第二喜欢的一首歌,搬家之后不用考虑室友的感受也没有羞耻感打扰过后,我就用尤克里里弹唱了这首歌。唱得一般还请见谅。
@@ -229,7 +231,7 @@ for walrus in walruses {
- 为什么周刊写到第 30 期会有一种自己奔三了的感觉呢?
- 看到有人突然在朋友圈或者群聊里发读书打卡,其实就能说明对方是一个平常不读书的人。如果读书本身就能满足自己,为什么还需要被看到呢?
- 我在某个晚上突然意识到了一个关于自己的、阴暗的事实:他妈的我居然没有为别人感到高兴的能力……
-- 当我忙到没有时间处理自己的情绪时,我会在心里咒骂每一个浪费我时间的人。最近读《The Subtle Art of Not Giving a Fuck》的时候才意识到,我是把自己当做了受害者而逃避了责任,没能处理好自己的情绪本身就是自己的个人问题,虽然应该被理解,但不应该怪别人。
+- 当我忙到没有时间处理自己的情绪时,我会在心里咒骂每一个浪费我时间的人。最近读《[The Subtle Art of Not Giving a Fuck](/library/2025/the-subtle-art-of-not-giving-a-fuck/)》的时候才意识到,我是把自己当做了受害者而逃避了责任,没能处理好自己的情绪本身就是自己的个人问题,虽然应该被理解,但不应该怪别人。
[^1]: 自我审查和舆论审查,没有平台审查;如果足够特立独行,舆论审查也可以毫不在意。
diff --git a/content/posts/weekly/31.md b/content/posts/weekly/31.md
index a97de53b..66a6c8c8 100644
--- a/content/posts/weekly/31.md
+++ b/content/posts/weekly/31.md
@@ -1,33 +1,135 @@
---
title: 稻草人周刊 Vol.31
-subtitle:
+subtitle: 找到志同道合的人
tags:
- -
-date: 2025-05-27 11:54:08
+ - 软件
+ - 设计
+ - 群体
+ - 职业
+ - 种族
+ - 文化
+date: 2025-06-02T12:37:00
categories: 稻草人周刊
-banner:
-draft: true
+banner: https://image.guhub.cn//uPic/20250602-weeklybanner.jpeg
+draft: false
toc: true
+hasAplayer: true
+related_cards:
+ - 友情链接的翻译
+ - 路灯效应
+endnotes:
+ - 封面图自摄,设备为 iPhone 15 Pro
+ - 封面图摄于清晨五点半
+ - 封面图上的摄像头,像不像停在电线杆上的鸟呢?
+aplayer: true
---
-<iframe allow="autoplay *; encrypted-media *;" frameborder="0" height="150" style="width:100%;max-width:660px;overflow:hidden;background:transparent;" sandbox="allow-forms allow-popups allow-same-origin allow-scripts allow-storage-access-by-user-activation allow-top-navigation-by-user-activation" src="https://embed.music.apple.com/cn/album/hemingway/1814918947?i=1814918949"></iframe>
+这周的某一天突然想起了以前很喜欢的一个小众歌手,一首歌的旋律在脑中浮现出来,回家就找到谱子用尤克里里弹了这首歌,希望你也喜欢。
+{{< aplayer name="Waves" artist="Chloe Moriondo, Eltrac" url="https://image.guhub.cn/uPic/20250602-waves.mp3" cover="https://image.guhub.cn//uPic/waves-cover.png" >}}
+
+> I want you to help keep me from growing older.
+>
+> Just let me snot on your shoulder,
+>
+> when all that I'm thinking about is him.
+<!--more-->
## 🙋 在做什么
+虽然淘宝和京东在跟美团打商战,每天都能点到 10 块钱甚至更低价格的外卖,但长期吃外卖总归还是不太好,于是就决定自己在家做饭了。
+
+{{< gallery >}}
+![20250602-dumplings](https://image.guhub.cn//uPic/20250602-dumplings.jpeg "吃饺子必须蘸辣子!")
+![20250602-spaghetti](https://image.guhub.cn//uPic/20250602-spaghetti.jpeg "速冻意大利面,性价比还不如点外卖")
+![20250602-tomato-pot](https://image.guhub.cn//uPic/20250602-tomato-pot.jpeg "番茄锅 🤤")
+{{</ gallery >}}
+
+之前买的 iPad 支架因为宿舍太狭窄了没地方放,现在终于派上用场了,一抬手解锁就能看到今天的计划还是很不错的(就算不打开也能起到一个装饰的作用)。
+
+![](https://image.guhub.cn/uPic/20250602-ipad-holder.jpeg)
+
+## ✍️ 本月令我满意的作品
+
+还记得我在[第 26 期周刊](/posts/weekly/26)里写了什么吗?
+
+> 你正在阅读一期特别的周刊,以后每个月的最后一期周刊都会如此,除了一般的信息聚合,还充当本博客的每月回顾
+
+显然,五月的最后一期周刊应该是[第 30 期](/posts/weekly/30/),然而上周我把这件事情忘记了,那么**五月的文章回顾**就写在六月的第一期周刊里吧!
+
+1. [被世界抛弃的错失恐惧](/posts/被世界抛弃的错失恐惧/)<br/>
+ 这篇文章拆解了 FOMO(措施恐惧症)和 FOBO(更好选择恐惧症)这两种对立的情绪,指出这两种情绪的内核是一致的,都是「不能正确应对新事物」导致的。我在这篇文章中写道,可以通过分析事物给自己带来的熟悉感和新鲜感,应用「N+1」原则,处理 FOMO 和 FOBO 这两种情绪。
+2. [思考是碳基生物的特权吗?](/posts/thinking-privilege/)<br/>
+ 这篇文章讨论了「人工智能哲学」这一主题,从结构和表现两种视角定义了「智能」,引用和设计了一些假想的实验尝试解答了「思考可以被机器模拟吗?」这一问题,并剖析了目前的机器智能和自然的生物智能的本质区别。
+3. [愤怒是一种正当的情绪](/posts/愤怒是一种正当的情绪/)<br />
+ 指责一个人无能狂怒或者太过傲慢,其实是在逃避真正的观点冲突:「只有你害怕观点之间的战斗,害怕对面那个人真的有可能是英雄、有可能是对的,害怕观点和观点之间有可能有高低之分,所以才会干脆在道德层面、世俗层面“立法”禁止战斗。」本文还浅谈了现代人对「美德」的迷思:人们鄙夷品德低下的人,但「鄙夷」本身却也是品德低下的体现。
+4. [厌女男为何只会满嘴喷粪?](/posts/厌女男为何只会满嘴喷粪/)<br/>
+ 五一回家的时候,我通过观察我父亲和与他同龄的游戏玩家的互动发现,一些厌女气质很重且对自身男子气概不自信的的男性,往往会通过「吹嘘雄风」和「女化对手」的方式来贬低对方,让自己显得高高在上,这其实是一种投射现象。此外,这类人嘴里吐出来的字往往涉及「性」和「生育」,思维十分接近原始人。
+5. [阅读应当是一种体验](/posts/reading-as-an-experience/)<br/>
+ 本文浅析了[信息的组织结构](/cards/信息的组织结构/),指出阅读应当是完整的体验,而不是碎片的,即使是网状结构,也要通过路径建立起线性体验。我认为获取足够的体验是形成理解的基础。
+
+接下来是周刊的常规栏目。
+
+---
+
## 💬 本期杂谈
### 涂鸦式日历
{{< callout "文章链接:[Sketchy Calendar](https://www.inkandswitch.com/ink/notes/sketchy-calendar/)" "📜" >}}
+作者发现电子日历的弊端在于不够灵活,只能设置固定时刻的起始日期,而且格式单一,相反,纸面的日历就很灵活,可以随意涂鸦,但缺点在于不能数字化。
+
+我自己也有过类似的纠结,经常在苹果日历和日程本之间来回切换。除了不够灵活,电子日历的操作流程缺乏「把东西写下来」的动作,我认为手写的过程其实能够增强确认感,自己写过的东西也更容易记住。然而,对我来说,使用纸质的日程本则需要更多的自驱力,因为要多带一个本子出门,拿出本子再打开本子写东西的过程,明显不如掏出手机打开 App 的过程方便。
+
+作者提出了一种新的软件形式,叫做 Sketchy Calendar,把电子日历和手写日历结合了起来。一开始我觉得一些笔记软件的自定义纸页也可以实现这种功能,但日历显然也需要消息通知来提醒用户日程即将到来,这样的软件兴许真的能解决不少真实的需求。
+
+![sketchy-calendar](https://image.guhub.cn//uPic/sketchy-calendar.png)
+
+这目前还是个想法,但我很期待未来的产品。
+
[#软件](/tags/软件/) [#设计](/tags/设计/)
-### Find Your People
+### 找到志同道合的人
{{< callout "文章链接:[Find Your People](https://foundersatwork.posthaven.com/find-your-people)" "📜" >}}
+这是一篇演讲稿,演讲人是 Y Combinator 的联合创始人之一,演讲内容主要是为毕业生的未来职业规划提出一些建议。
+
+其中包含一些「当我们刚刚开始的时候,大家都笑话我们……」这样的陈词滥调,但有一条建议很值得思考:如果你有野心,但却没有什么实际的计划,不妨先找到与你志同道合的人。
+
+> There’re a huge number of options, and you have to actively figure out which is the best for you. And the best way to do that is people. Find the interesting people.
+>
+> 选择很多,你必须主动去搞明白哪一个最适合你,最好的方式就是通过人。找到那些有趣的人。
+
+[#群体](/tags/群体/) [#职业](/tags/职业/)
+
+### 美国影视作品里的亚洲人
+
+{{< callout "文章链接:[Asian Misrepresentation](https://pudding.cool/2025/05/aapi-casting/)" "📜" >}}
+
+一个有趣的现象是,在一些美国的影视作品里,剧中的中国人普通话说得很烂,查询之后才发现这个中国人的演员其实是个韩国人;同时,在另一部电影里,一个中国演员扮演了一个韩国人。对于美国的制片团队来说,「亚洲人」似乎是一个没有区别的群体,然而更具体的国家和民族文化的体现,才能人亚洲观众产生认同感。
+
+作者收集了 1982 年到 2023 年亚洲人角色较多的电影,并通过剧情、角色设计和选角的方面评判这部电影对亚洲人角色的呈现是否「准确」。他们惊讶地发现,准确度其实超过了 80%。尽管得到了乐观的结果,文章最后还指出,好莱坞对文化多样性(diversity)的重视度似乎正在开倒车,在近年来开始下滑。
+
+不过,即便作者站在种族歧视的反面,我仍然觉得这篇文章写得非常「白人中心主义」。多样性(diversity)这个概念就是建立在「一个场合里有多少非白人个体」这一评判标准之上的,本质上还是在以白人的视角看待问题。
+
+此外,我不认为这篇文章的数据有多准确,因为他们只收集了「主要由亚洲演员参演」和「旨在描绘美裔亚洲人生活」的电影,这类电影本身就会更在意文化准确性,而在其他电影里作为配角登场的亚洲人是否被准确地呈现了,并没有纳入统计范围。这就是典型的路灯效应嘛。
+
+[#文化](/tags/文化/) [#种族](/tags/种族/)
+
+## 💡 新知复盘
+
+{{< card "友情链接的翻译" >}}
+{{< card "路灯效应" >}}
## 🗣️ 碎碎念
--
+- 鸭子好像是个很奇怪、意思很多、反差很大的文化符号:
+ - 鸭子可以是卖淫的男人
+ - 软件测试中有个概念叫 Rubber Duck Debugging,意思是拿一个橡皮鸭之类的东西放在电脑旁边,代码出问题的时候,就对着这个鸭子一行一行地讲解自己的代码,直到发现问题
+ - 逻辑学中有个概念叫「鸭子测试」,也就是熟悉的:「如果一个东西看起来像鸭子,叫起来像鸭子,走起路来也像鸭子,那它就是只鸭子」。
+ - 为什么一定是鸭子呢?🤔
+- 第一次知道除湿袋这种东西里面居然会结晶的啊 😱 <br/>![20250602-crystal-in-a-bag](https://image.guhub.cn//uPic/20250602-crystal-in-a-bag.jpeg)
+- 虽说家住的离商场近是件好事,下楼走五分钟就能到超市买菜,但人未免也太多了,就算是自助收银也要排队十分钟了……
+- 如果用 Apple Notes 的话,用英文记笔记会有一个优势,就是可以用到手写修正功能,备忘录会矫正笔画的形状,让英文文字更易读。不过,实际体验没有很美好,如果写得太乱,字母就会绞在一起;如果 y 和 g 这两个字母写得太飘逸(其实也就是尾巴稍微长了一点),修正之后也会很奇怪。如果书写习惯和 Apple Notes 识别模式比较相似,用起来应该会舒服很多吧。
diff --git a/content/posts/喝咖啡如何帮我开发自己的S属性.md b/content/posts/喝咖啡如何帮我开发自己的S属性.md
new file mode 100644
index 00000000..b6dfae7b
--- /dev/null
+++ b/content/posts/喝咖啡如何帮我开发自己的S属性.md
@@ -0,0 +1,122 @@
+---
+title: 喝咖啡如何帮我开发自己的 S 属性?
+tags:
+ - 咖啡
+ - MBTI
+ - 互联网文化
+related_cards:
+ - 荣格-心理类型
+mentioned_books:
+ - 天生不同
+date: 2025-06-04T21:52:00
+draft: false
+toc: true
+endnotes:
+ - 相关阅读:《[从焦虑和自卑谈感受与体验的重要性](/posts/从焦虑和自卑谈感受与体验的重要性/)》、《[既然感受是真实的](/posts/既然感受是真实的/)》、《[重新认识风味](/posts/重新认识风味/)》、《[尽情在舒适区里狂奔](/posts/尽情在舒适区里狂奔/)》
+---
+
+开头先道个歉,起了个误导性的标题。这里的 S 其实是指[荣格心理类型](/cards/荣格-心理类型/)中的 S 功能,也就是感觉(Sense)。 这个概念和 MBTI 的 N-S 维度中的 S 是同一个。今天这篇文章偏闲聊,来谈谈我作为一个 N 人是如何通过喝咖啡这件事情发展自己的 S 功能的,以及为什么我认为脑力工作者应该有意识地锻炼自己的感觉能力。<!--more-->
+
+{{< card "荣格-心理类型" >}}
+
+---
+
+## N 和 S 人可能是最难相互理解的两类
+
+N 指 iNtuition(直觉),S 指 Sense(感觉),两者都是荣格心理类型中的「感知功能」(Perception)。一般来说,偏好使用 N 功能的人更擅长处理抽象概念,而偏好使用 S 功能的人更注重事实,更擅长观察现实中实际存在的东西。
+
+按照社会主流价值观来说,N 人更容易被重视,因为大部分被认为更需要智力的工作,都涉及大量的抽象概念,比如数学、哲学、计算机相关的职业。《[天生不同](/library/2025/天生不同)》这本书中的提到的数据显示,有意愿考大学的美国高中生、考上大学的人群和考上顶尖大学的人群中,N 人的比例在不断上升。尽管选取的样本有一定局限性,但也是有参考价值的。
+
+我在一家教培机构做兼职,平日里能观察到各种类型的人类样本,他们来自不同的院校、不同的专业,我也了解其中一些人的 MBTI 人格类型,能从中发现一些很有意思的差异。
+
+我发现有一个 ESFP 学生[^2]很容易观察到我身上配饰的一些变化,我有的时候会戴一串水晶手串、在右手上戴戒指,有的时候还会在脖子上挂一个驼色的卡包用来搭一些偏日系的服装,她一看到我就能指出我今天的穿搭有何不同。相比之下,我的一个 INFJ 朋友则更偏好对我穿着的整体印象做出评价,比如「慵懒」「干练」。
+
+另一个有趣的现象是,这个 ESFP 学生的基础其实比较差,对于语言学习感到有些吃力,常常需要比别人花更多的时间来练习。我也观察到身边的 N 人,尤其是 NF 人格,往往是比较有语言天赋的。
+
+内倾(I)和外倾(E)的天然差别其实很容易通过社交能力的锻炼来弥补,并且继续保持让自己感到舒适的生活方式。即使是思维型(T)的个体,其实能通过改变认知,将他人的感受纳入理性分析的考量范围;对于情感型(F)的个体,也能在做出「逻辑的连贯性对 T 人来说很重要」这一价值判断之后,理解 T 人的思维方式。
+
+然而,N 和 S 作为感知功能,区分的是个体输入信息、过滤信息和理解信息的偏好。S 人很难理解 N 人跳脱的想象力和说话的言外之意,而 N 人则对 S 人关注的具体的细节不怎么在意。由于两类个体关注的信息不同,在沟通和表达时的侧重点也不同,就容易引发误解。==S 人可能会觉得 N 人喜欢闪烁其词,甚至不遵循语法规则,乱用词语,时常让人误解;而 N 人可能觉得 S 人太肤浅,抓住不事物的内核,只能看到表面==。
+
+我观察到,很多时候 N 和 S 的差异被归结为「智力的高低之分」,这可能是因为偏好使用 N 功能的人群往往有着更高的话语权,他们可以定义「智力」;而不太能理解「定义」是什么的 S 人,则在推崇抽象概念的社会中受到了排挤。
+
+不过,就像那本书的标题一样,这其实并没有什么好坏和高低之分,只是「天生不同」而已。
+
+## 全然地感知世界
+
+既然感觉(S)和直觉(N)作为两种感知功能,并没有高低之分,那要如何评价社会主流价值观对于 N 人的偏好呢?
+
+S 人的确是比较吃亏的,他们需要刻意地发展自己的 N 功能才能得到智力方面的认可,但这不代表 N 人无需发展自己的 S 功能。MBTI 类型反映的是与生俱来的(或者至少是在早年建立起来的)认知偏好。一部分年长者之所以更有智慧,可能是因为他们通过更多的经历发展了自己偏好以外的心理功能,F 人也能进行理性的分析,S 人也能较轻松地处理抽象概念。我认为 MBTI 虽然是非专业的心理学理论,但其价值在于,它能够帮助个体认识自己,找到应该刻意发展和补足的方向。
+
+S 人若是不发展较弱的 N 功能,可能就永远无法理解人类文明中最宝贵的智慧财富;N 人若是不发展较弱的 S 功能,则很有可能陷入虚无主义或者某种存在主义危机,因为抽象的概念终究是抽象的。
+
+==如今不少脑力工作者推崇冥想,其实是因为冥想是「纯粹的感受」==——感受自己的呼吸、感受周围的温度、感受远方的声音——并且在这种纯粹的感受过程中,要摒弃杂念,感受脑中浮现的想法,而不去评价。在冥想的过程中,既不动用任何一种判断功能,也减少动用直觉功能,全然地投入到感受当中。我认为,冥想就是锻炼感受功能的过程。冥想能帮助个体更好地专注于当下,而不让思绪乱飞。
+
+一个大部分人都能感同身受的例子是做题。一些人做题很快,自信满满地写满了半张纸,结果题目看错了;一些人做题很慢,题目读了几遍都读不懂题目想要问什么。前者是直觉功能强,但没有主动使用感觉功能的体现,没看清题目上都写了哪些字;后者是感觉功能强,但不知道如何使用直觉功能的体现,读不出字句的言外之意。
+
+在这个例子中,直觉和感觉显然没有高低之分,两者应该要协同使用才能较为准确地认识世界,也就是这一小节的标题——全然地感知世界。
+
+## 需要用力感受的存在
+
+所以,说了这么多,标题里的「咖啡」呢?
+
+我是个手冲咖啡爱好者,经常购买不同产区的单品咖啡豆,尝试不同风味的咖啡。与苦味为主、强调烘焙的商业咖啡不同,手冲咖啡通常是浅度烘焙的,强调咖啡豆本来的味道。浅洪咖啡给人的第一印象是「酸」,加上咖啡都有的苦味,不爱喝咖啡的人会觉得浅洪咖啡跟「喝中药」一样。至少,我在尝试第一支浅洪咖啡豆的时候,我的反应是「世界上怎么会有这么难喝的东西?」。
+
+当然,难喝的体验可能也来自于我当时使用的磨豆机研磨不均匀,还有萃取水温、冲煮手法的影响,但不可否认,浅洪咖啡,准确来说是所有的精品咖啡(与烘焙度无关),基本上都需要饮用者有意识、更**用力**地调动味觉和嗅觉来感受一杯咖啡的风味。
+
+我记得我给我的一个不喝浅洪咖啡的 INFJ 朋友喝我冲的咖啡的时候,在我嘴里很顺滑、酸甜、水果糖风味明显的咖啡,他却皱着眉说「好酸」;那杯咖啡在低温段显现出来的甜感,他似乎也觉得很怪,问我「怎么会这么甜啊?」。之后一次他来我这喝咖啡的时候,他居然直接把一杯克价四五毛[^4]的咖啡一口闷了。[^3]
+
+除了使用的器具和研磨度以及水温等参数,饮用的方式也会影响一杯咖啡给人的感觉。一般来说,喝手冲咖啡的时候会有两个容器,一个是饮用的杯子,另一个是在冲煮咖啡时盛接咖啡液的壶。为了让咖啡的温度下降得更快,更好地体验手冲咖啡在不同温度下变化的风味,一次只会往杯子里倒入一部分咖啡,从杯子里喝咖啡也要小口啜饮,让咖啡液和空气一起进入口腔,这个过程往往会发出一些声音。[^5]
+
+此外,味蕾其实只能感受到酸、甜、苦、咸、鲜的味道。虽说酸除了程度,还有质感上的区别,但那样其实需要依靠「联想」来感受更具像化的风味,比如肯尼亚产区的咖啡豆特色的番茄酸和乌梅酸,与云南咖啡豆的莓果酸,是有很大区别的。如果不刻意感受的话,其实就只能尝到有点酸和很酸的区别。
+
+咖啡风味还有一个很重要的组成部分,就是气味的部分。在磨豆的时候需要闻刚磨好的咖啡粉散发出来的「干香」;在冲煮咖啡的时候,可以闻到「湿香」;在喝咖啡的时候,除了感受口腔中的触感和刺激味蕾的味道,还要刻意地呼吸或说话,在气体从鼻腔呼出时,用鼻喉嗅觉感受咖啡的风味。
+
+余韵也是咖啡风味的一部分。我记得我喝过的有两支豆子令我印象深刻:一支是 IRIS 的「淡雪白桃」,复购了两次,记得有一次冲出来的咖啡,余韵让我甜了一下午[^8];另一支是今年五月买的菠萝咖啡成子的「东非霓虹」,当时喝完就出门了,走在路上能感到明显的番茄味余韵,香了一路。[^6]
+
+这么看来,一口闷简直是暴殄天物的行为,就像用喝啤酒的方式喝红酒一样。
+
+## 毫无干扰地感受
+
+提到咖啡,很多人可能会想到在咖啡店点了一杯咖啡和一些甜品,度过悠闲下午的人,或者是抱着 MacBook 坐在星巴克,一边喝咖啡一边办公的都市丽人;不少书店为了增加营收也会做咖啡这样的饮品[^7],一边喝咖啡一边读书也毫无违和感。
+
+商业咖啡大概可以这样喝,手冲咖啡还这样喝可能就不太行了。我的意思是,你付了钱当然怎么喝都可以,但既然支付了更高的价格品尝手冲咖啡,还不好好品尝咖啡风味,~~甚至提出要往手冲咖啡里加糖这样想让人把你头拧下来的请求~~,其实是不太明智的消费决策。
+
+前文提到,品尝一杯手冲咖啡时,要感受咖啡在口腔中的触感,要感受咖啡在味蕾上激发的感官体验,要刻意地呼吸感受咖啡的风味,这一过程是非常需要免除干扰和集中注意力的。
+
+喝这样一杯咖啡之前,如果吃过甜的或者其他味道明显的食物,喝过其他饮料,喝咖啡的体验必然会受到影响。如果还把注意力分给手头的工作、桌上的书,或者别的什么东西,面前这杯咖啡的风味自然也不明显了。事实上,我之所以能在喝完咖啡出门的路上感受到口腔中残留的香气,是因为我当时没有戴耳机听任何东西,路上也没有什么需要注意避让的障碍,最小程度的干扰才能让我集中注意感受咖啡风味。某种程度上,喝咖啡其实就是我的冥想。
+
+这并不是矫情,专业的咖啡师在进行杯测时,往往会在桌子上摆上一圈待测的咖啡,由几个咖啡时轮流品尝每一杯咖啡,然后记录自己的感受和体验。在此期间,所有人都必须保持安静,不能干扰其他人的判断。杯测往往要求在比较安静,没有明显气味的地方进行,为的就是减少干扰。
+
+## 或许应该放下对感官刺激的无尽追求
+
+[Neal](https://neal.fun) 做了一个很有趣的 [Web 游戏](https://neal.fun/stimulation-clicker/),不久前在 Hacker News 上小火了一段时间。游戏的玩法是不停地点进按钮获取点数,之后可以用点数兑换一些道具来让自己更快的获取点数。如果一直点击按钮并升级,屏幕上就会出现各种乱七八糟的东西,这些都是互联网上常见的视频和各种带来感官刺激的东西,比如 AMSR、地铁跑酷视频、吃播和捏史莱姆的解压视频。
+
+{{< gallery >}}
+![空白的页面中有一个写着“Click me”的按钮](https://image.guhub.cn/uPic/PixPin_2025-06-04_21-05-36%20Large.jpeg)
+
+![](https://image.guhub.cn/uPic/20250604-stimulation-clicker-.jpeg)
+{{</ gallery >}}
+
+如果把其中任何一个元素拿出来,其实都是很正常的内容。这个游戏反映了一个现实问题:如今互联网已经完全占据了我们的娱乐方式,让娱乐和感官刺激变得无处不在。单是看吃播视频似乎已经满足不了观众了,==由于消解无聊的方式触手可及,人们对多巴胺的需求越来越大,必须要在看一期视频的同时翻翻看评论,然后用小窗模式继续播放,与此同时打开通信类 App 查看信息或者刷刷新闻,随后又很快打开 Duolingo 做几道练习题续连胜,自己的另一只手还在往嘴里喂东西吃,身旁还有另一个人在尝试跟你说话……==
+
+结果是,人们不再能够静下心来感受和体验当下了。
+
+我想要主张的是,不要继续以追求感官刺激为目的消费信息,**在消费信息的同时却又游离在物理世界之外,精神世界也没有得到一点满足,沉浸在榨取多巴胺的恍惚状态中不能自拔**。
+
+无论是 N 人还是 S 人,都应该**全然地、专注地**感受当下。「全然」指在使用偏好的感知功能时,充分发展另一种感知功能——使用 S 功能感知具体的当下,使用 N 功能建立抽象的理解和联想;「专注」指减少干扰,在感知当下的时候,只专注于来自一个方面的刺激——跑步的时候就只感受身体的运动,喝咖啡的时候就只感受饮品带来的感官体验,淋浴的时候就只感受温热的水在皮肤上的触感……
+
+至于方法,可以是==找到一个需要自己用力感受的爱好==,比如喝咖啡,或者是像看电影一样,用一个小时的时间坐下来完整地听完一张专辑,又或者是在看书的时候不再追求速度跳读,在理解作者观点的同时,一词一句地琢磨作者的措辞。
+
+[^2]: 人称「锤子姐」的人格类型
+
+[^3]: 我发誓他下次来的时候再这么喝我就把他的脑袋拧下来
+
+[^4]: 克价指一克咖啡豆的价格,冲一杯手冲咖啡一般要用到 15-20 克咖啡豆
+
+[^5]: 就是会被家里的大人一巴掌糊脸上的声音
+
+[^6]: 不过这款豆子瑕疵风味太明显了,还贵,不推荐买
+
+[^7]: 饮品的利润很高,我了解到不少实体书店,尤其是独立的、非连锁的书店,都要依靠饮品的营收苟延残喘;愿意读实体书的人本来就少了,愿意为实体书付费(甚至在书店买更贵的书)的人就更少了。
+
+[^8]: 可惜当时没有记录参数,之后一直没能冲出来当时的味道。 \ No newline at end of file
diff --git a/content/posts/搬家如何帮我理解现代人与消费的关系.md b/content/posts/搬家如何帮我理解现代人与消费的关系.md
new file mode 100644
index 00000000..970c60df
--- /dev/null
+++ b/content/posts/搬家如何帮我理解现代人与消费的关系.md
@@ -0,0 +1,89 @@
+---
+title: 搬家如何帮我理解现代人与消费的关系?
+tags:
+ - 消费主义
+ - 社会学
+ - 心理学
+mentioned_books:
+ - 数字极简
+ - 制造消费者
+date: 2025-06-03T23:39:00
+draft: false
+toc: true
+---
+
+在[脱离群居生活](/posts/逃离群居生活)之前,我特别热衷于购置各种小物件,包括手办、收纳盒、收纳架、贴纸、海报等等,并且几乎每天都在想着要怎么把书桌布置得更有个性,更像「自己的家」。在我翻阅 [2024 年年终总结](/posts/almanac/写在2025的开头/)时,我发现半年前自己的桌面和我搬离寝室时的桌面简直是天差地别。在这期间我为布置书桌花费了不少金钱和精力,消费似乎没有尽头。
+
+搬家之后,我的消费行为变得更克制了,这并不是因为房租的压力迫使我更节省,而是有更深层次的原因——我清楚地意识到,我现在每天晚上睡觉的这个地方就是「我的」,我不需要通过改变布局来获得掌控感,不需要在各个地方留下自己的印记「撒尿标记领地」,这个空间本身的属性就足够让我安心。
+
+其他不理性的消费行为,是否也与这种类似的心理需求有关呢?<!--more-->
+
+## 消费行为的抗焦虑效果
+
+搬家的时候我很焦虑,一方面是担心自己一个人难以应付搬家的工作量(毕竟我的实体书和各种小玩意真的是太多了),另一方面是害怕搬运的时候引起不必要的注意,或者给别人带来麻烦。
+
+在这期间,我注意到自己产生了两种消费行为:
+
+1. 消费实用信息。
+ - 我记得我在小红书上反复搜索「货拉拉价格」「货拉拉能进学校吗?」和「怎么在菜鸟驿站借小推车」等问题。
+ - 我找了好几个有租房经验的朋友,试图让他们打消我的各种顾虑。
+ - 我在 Bilibili 上搜索「大学生校外租房」,找了各种视频看,哪怕那些内容其实与我的情况有较大差异,帮助并不大。
+2. 消费实用工具。<br />
+ 我在搬家的第一天在美团花费八十多块钱下单了小推车和纸箱,选购的时候我非常焦躁,买完我就安心了;之后,我甚至一点也不着急去取它,**消费行为本身似乎就提供了某种心理安慰**;实际上,搬家的时候我根本没有用到我买的这些东西。
+
+消费的重点不在消费的代价(也就是支付的金钱或时间),而是在消费的结果。
+
+浪费了多少时间刷让大脑感觉有用但实则无用的信息并不重要,自己似乎掌握了一些知识的结果是关键;花了多少钱买了实用性存疑的东西并不重要,自己得到了似乎可以帮助自己的工具的结果是关键。
+
+结果可以是完全的幻觉,或者是个体自身能够合理化,但现实中并不存在的东西。一些家长喜欢给孩子报课外补习班,甚至形成了一种育儿能力的竞争,产生「你要是不去上补习班,你的学习就毁了!」或「你上了补习班,我就可以**放心**了!」这样的迷思。==这类行为的重点就在于,由消费行为产生的幻觉和合理化的想象,可以提供安心、放心的感觉==。
+
+对教育孩子这件事情感到焦虑?给孩子报个班吧!对考研这件事情感到没把握?那给自己报个班吧!感觉自己视野太狭隘?那就买一堆书放家里吧!担心自己照片太多手机放不下?那就多花一两千买储存更大的……
+
+曾经听过一个说法,叫做「一切都需要支付两次」。报了班,除了支付金钱,还需要真的投入时间;买了书过后,也要支付时间,真的打开读才行。然而,人们在消费的当下,并不会想到尚未到来的第二次支付,更多地,==人们在考虑哪种消费决策能够更好地帮助自己缓解目前感受到的焦虑==。
+
+## 制造焦虑
+
+在用消费缓解焦虑之前,焦虑需要先产生。
+
+焦虑可以是自然的,完全由个体的自主行为和周边的非商业环境产生,比如自己口渴了,但家里没有纯净水也没有热水壶,生存的需求会产生一定的焦虑,进而推动个体进行合理的消费。不过,这种自然的需求其实很少通过焦虑的形式表现出来,需求就只是需求而已。
+
+焦虑也可以是人造的,由广告和各种由宣传效果的图像媒体所渲染,比如别人都在用平板电脑上课,在社交媒体上也经常刷到有关「无纸化学习」的内容,久而久之就可能产生购买一台平板电脑的想法,甚至产生如果没有一台平板电脑就会被同龄人超越的焦虑情绪。社交媒体造出的类似「无纸化学习」的概念,其实就是一种消费的教育,是制造的一种新焦虑。
+
+《[制造消费者](/library/2025/制造消费者/)》一书中提到,社会中图像的加速流通助长了消费行为。杂志、电影等图像媒介对与消费主义来说,有三种功能:
+
+1. 培养消费习惯和消费文化<br />
+ 以前的人很少更换生活用具,不消费,甚至认为消费是一种罪。消费主义创造了新的语言,也带来的新标准、新词汇、新焦虑,甚至是在「教育消费」。
+2. 植入社会想象<br />
+ 消费主义将脱离现实的生活方式植入给人们。比如,以前的电影中常常描绘的是资产阶级的生活方式,工人等占人口总数更高的群体结构性地缺席了。图像媒介试图将资产阶级生活方式描绘为一种主流的生活方式。
+3. 将商品平常化<br />
+ 在夏季的室外,用扇子降温其实已经是很好的做法,但现在电风扇已经随处可见,消费主义将其渲染为夏季必备品,而且,还试图引导人们追求功率更大、功能更多、风速更快的电扇。
+
+短视频也是一种图像媒介,并且,短视频促进消费的功能非常强大,以上的三种功能也都能在短视频中观察到。
+
+这一小节开头提到的自然的焦虑,其实也可能参杂人造的部分。比如,商家、媒体或部分自媒体将自来水渲染成非常肮脏的存在,进而制造了净水器的需求,制造了新的焦虑。尽管个体在净水器这种产品出现之前,从未担忧过自来水中的某些物质会危害健康,但当个体接收到零碎的、义正严辞的、煽动性的相关信息之后,就联动生存焦虑产生了净水器的消费需求。
+
+## 信息作为一种商品
+
+前文对消费的定义似乎有些宽泛。一般来说,消费是指通过金钱换取某种物品或服务,但我把信息也定义为了消费的对象。信息其实经常作为消费(consume)这个词的宾语出现。尤其是在当今,有些内容就是被用来消费的。
+
+[有人发现](https://www.theatlantic.com/technology/archive/2025/05/ai-written-newspaper-chicago-sun-times/682861/),Chicago Sun-Times 和 The Philadelphia Inquirer 这两家报纸在自己的内容里参杂了大量 AI 生成的垃圾。其中的「夏日导读」(summer-reading guide)提到了 15 本书,其中有 10 本是 AI 编造的,作者和书根本就不存在。然而,在报纸发布的两天内,没有人指出这个问题,大部分的读者显然根本不在意自己独到的内容是否真实。不只如此,写作者不在乎内容的真实性,编辑也是,相关的商业和销售人员也更是不在乎。**有些内容就是为了被消费而生的**。
+
+消费这个词在中文里似乎没有英文的 consume 形象,因为本身就是翻译过来的概念。Consume 这个词也有吃完、喝完的意思,也可以表示消耗。在现代语境里,消费是有代价的,常见的代价就是金钱和时间。
+
+媒体发布内容,起一个吸睛的标题,再加上一个醒目的封面,这个过程就类似于商家给商品裹上亮眼的包装,并用图像塑造品牌形象。一些作者和编辑吸引读者的行为,就像是商家吸引顾客的行为。互联网上的大部分读者,也更偏好速读、扫视、只看标题和重点的阅读方式,或者干脆用大语言模型帮自己读。除了作者,似乎就没人在意文章里到底写了什么了;然而现在一些媒体用 AI 把作者踢了出去,唯一在乎的人也消失了。==我认为这是消费主义文化入侵现代人文娱生活的体现==。
+
+既然读者和其他类型内容的消费者并不在意内容本身,那他们在意的是什么呢?可能是内容缓解焦虑的功效,**因为「知道某些东西」和「拥有某些东西」能带来相似的安全感**。
+
+内容缓解的焦虑是多种多样的,比如前文提到的,我在消费实用信息时对抗的未知和不确定性带来的恐惧。另一种焦虑是独处带来的焦虑,《[数字极简](/library/2024/数字极简/)》这本书指出,由于人们每时每刻都可以打开社交媒体和内容媒体与人聊天或者消费信息,人们似乎消灭了「独处」;为了不感到空虚、寂寞,人们可以一直在电子设备上播放电视剧,看着画面闪动,听着音响发出声音——剧情对他们而言不重要,因为很多时候这些内容只是被当作背景音。
+
+## 结语:停止下意识用消费抑制焦虑
+
+其实仔细思考就会发现,消费并没有从根本上解决任何一种焦虑背后的问题,而且很多时候还会带来新的问题。
+
+花了钱给孩子报班并不能保证一定会达到效果,相反,这可能会降低孩子自主学习的能力,长远来看并不是件好事;我买了小推车和纸箱准备搬家,可如何装箱、如何保证物品不受损坏、如何拉着巨重无比的行李下楼并通过园区门口的闸门,就成了新的问题;晚上无人陪伴时打开播客或电视剧听听人的声音并不会让自己真的不孤独,反而正是因为无法消解孤独,才会用这种方式逃避,让自己不用面对真正的问题。
+
+这个小节的标题还有「下意识」这个词,我想表达的是,不要让消费变成一种平常的、条件反射的行为,此外,理性分析后决定用消费缓解焦虑的行为,在我看来是可行的。
+
+比如,因为觉得配置博客程序、自己做运维、学 SEO 等知识很麻烦,面对海量的信息感到无所适从,进而产生了焦虑,理性分析之后,发现自己的写博客的目的只是为了表达而不是学习计算机知识,逃避这种焦虑对自己来说是有益的,能让自己专注在更重要的事情上。这个时候,选择 Typlog、Gridea、Wordpress 等开箱即用的建站服务,就是一个很好的选择。
+
+简而言之,在消费决策之前,不妨先想想:这次消费真的是合乎理性的吗,还是说,我只是在通过消费缓解焦虑,逃避真正的问题?
diff --git a/content/sponsor.md b/content/sponsor.md
index 9013dbfa..20758cfe 100644
--- a/content/sponsor.md
+++ b/content/sponsor.md
@@ -12,13 +12,15 @@ draft: false
#### 赞助者名单
-| 日期 | 昵称 | 金额 | 留言 |
-| --------- | -------- | ----- | ------------------------- |
-| 2025/4/13 | Tagtax | ¥7.77 | 无意间找到此博客,对内容和文风深感兴趣,感谢创作! |
-| 2025/4/14 | 折叠 Timer | ¥5.0 | 能持续写作很厉害,希望以后能看到博主的成书。 |
-| 2025/4/28 | [^1] | ¥100 | 感谢你的文字 |
-| 2025/4/29 | Josh | ¥6.66 | 高认知,好文采👍收获良多 |
-| 2025/5/6 | Tagtax | ¥7.77 | 感谢创作 |
+| 日期 | 昵称 | 金额 | 留言 |
+| --------- | -------- | ------ | ------------------------- |
+| 2025/4/13 | Tagtax | ¥7.77 | 无意间找到此博客,对内容和文风深感兴趣,感谢创作! |
+| 2025/4/14 | 折叠 Timer | ¥5.0 | 能持续写作很厉害,希望以后能看到博主的成书。 |
+| 2025/4/28 | [^1] | ¥100 | 感谢你的文字 |
+| 2025/4/29 | Josh | ¥6.66 | 高认知,好文采👍收获良多 |
+| 2025/5/6 | Tagtax | ¥7.77 | 感谢创作 |
+| 2025/6/2 | Tagtax | ¥77.77 | 感谢创作:) |
+
[^1]: 这位赞助者的微信显示的似乎是真名,为了隐私考虑,这里隐去了姓名。如果赞助者看到这条消息,请联系我是想要在这里展示的名称。
[^2]: 如果你不希望在这里展示你的微信名,可以在留言时标出你希望展示的名称。例如:「留言内容 —— 赞助者名称」
diff --git a/content/图灵机和可计算性理论.md b/content/图灵机和可计算性理论.md
new file mode 100644
index 00000000..86bf99a0
--- /dev/null
+++ b/content/图灵机和可计算性理论.md
@@ -0,0 +1,41 @@
+---
+title: 图灵机和可计算性理论
+tags:
+ - 计算机
+date: 2025-06-04T22:53:00
+---
+
+图灵机(Turing machine)是一种理想的计算模型,是一种假想的由纸带、读写头和一定计算规则组成的机器,可以用来模拟任何可以计算的问题。你可以把图灵机理解为一种抽象的、通用的计算机。
+
+#### 图灵可计算性
+
+如果一个函数可以被图灵机计算并得出答案,这个函数就具有图灵可计算性(Turing-computability)。从现实层面来讲,任何可以在计算机上模拟的问题都是图灵可计算的,只要这个问题可以由计算机程序给出答案而不会陷入死循环。
+
+停机问题(Halting Problem)不是图灵可计算的,它要求计算机判断一个程序在给定的输入下会停机还是会陷入死循环。图灵机和任何计算机都不能解决它。
+
+```C
+// 停机问题的伪代码表示
+int H(procedure,Input);
+int U(P)
+{
+ while(H(P,P)){}
+ return 0;
+}
+```
+
+#### 图灵完备
+
+如果一个系统(一系列操作数据的规则)可以模拟图灵机(Turing machine),就说它是**图灵完备**的(Turing-complete)。简单来说,具有图灵完备性的系统可以识别另一个系统的数据操作规则,图灵完备的计算机或计算机语言可以模拟另一种计算机或计算机语言的行为和用途。
+
+- 几乎所有编程语言都是图灵完备的,这表示几乎所有编程语言都可以被用来重新编写由另一种编程语言实现的计算机程序,能实现其他语言也能实现的功能。如果一个编程语言能实现条件判断、循环和变量,它基本上就是图灵完备的。
+- 标记语言(数据语言)不是图灵完备的,比如 JSON、XML、HTML 和 Markdown,因为他们只能描述数据而不能描述行为。
+
+如果一个系统是图灵完备的,那它就可以被用来模拟另一个图灵完备的系统。也就是说,这两个系统是图灵等价的。
+
+### 图灵等价
+
+如果系统 A 可以模拟系统 B,而系统 B 也可以模拟系统 A,那么系统 A 和系统 B 就是**图灵等价**的。
+
+所有图灵完备的系统都是图灵等价于图灵机的。
+
+<span style="font-size:80%">Source: [图灵完备性 - 维基百科,自由的百科全书](https://zh.wikipedia.org/zh-cn/圖靈完備性)、[可计算性理论 - 维基百科,自由的百科全书](https://zh.wikipedia.org/zh-cn/可计算性理论)</span> \ No newline at end of file
diff --git a/layouts/cards/single.html b/layouts/cards/single.html
index a4d2a9f1..d75d1ffa 100644
--- a/layouts/cards/single.html
+++ b/layouts/cards/single.html
@@ -10,7 +10,13 @@
<div class="card markdown-body post-content"
style="view-transition-name: card-{{ .File.UniqueID }}">
<div class="card-header">
- <h3 class="card-title">{{ .Title }}</h3>
+ <h3 class="card-title"
+ data-pagefind-meta="title"
+ data-pagefind-sort="date[data-date], weight[data-weight]"
+ data-date="{{ .Date.Format "2006-01-02" }}"
+ data-weight="5">
+ {{ .Title }}
+ </h3>
{{- if .Params.tags }}
<p class="card-tags">
{{- range .Params.tags }}
diff --git a/layouts/fictions/single.html b/layouts/fictions/single.html
index 85ab59de..e16dd4c7 100644
--- a/layouts/fictions/single.html
+++ b/layouts/fictions/single.html
@@ -10,11 +10,14 @@
class="post-header fiction-header"
>
{{ partial "components/banner.html" . }}
- <h1 class="post-title">{{ .Title }}</h1>
+ <h1 class="post-title" data-pagefind-meta="title">{{ .Title }}</h1>
<div class="post-meta">
{{ if .Date }}
- <time class="post-date" datetime="{{ .Date.Format "2006-01-02 15:04:05 MST" }}">
- {{ .Date.Format "2006-1-2" }}
+ <time class="post-date"
+ datetime="{{ .Date.Format "2006-01-02 15:04:05 MST" }}"
+ data-pagefind-sort="date[datetime], weight[data-weight]"
+ data-weight="15">
+ {{ .Date.Format "2006年1月2日" }}
</time>
{{ end }}
</div>
diff --git a/layouts/library/section.html b/layouts/library/section.html
index 3b4e0199..221cc005 100644
--- a/layouts/library/section.html
+++ b/layouts/library/section.html
@@ -10,7 +10,7 @@
<div class="book{{ if eq .Params.rating 1 }} badbook{{ end }}{{ if eq .Params.rating 5 }} goodbook{{ end }}">
<a href="{{ .Permalink }}" class="book-cover" style="view-transition-name: book-{{ .Title }}">
<img
- class="lazy" src="{{ .Params.cover }}"
+ class="lazy" src="{{ .Params.cover }}!small"
style="view-transition-name: book-{{ .File.UniqueID }}" />
</a>
</div>
diff --git a/layouts/library/single.html b/layouts/library/single.html
index 3bd00ca3..fa53149b 100644
--- a/layouts/library/single.html
+++ b/layouts/library/single.html
@@ -8,7 +8,7 @@
src="{{ .Params.cover }}"
/>
</div>
- <h1 class="book-title">{{ .Title }}</h1>
+ <h1 class="book-title" data-pagefind-meta="title">{{ .Title }}</h1>
{{- $rating := .Params.rating -}}
{{- $fullStars := math.Floor $rating -}}
<p class="book-author">
@@ -35,7 +35,10 @@
{{ .Content }}
</div>
<div class="book-footer">
- <p>于 {{ .Date.Format "2006-01-02" }} 读完</p>
+ <p>于 <time
+ data-pagefind-sort="date[data-date], weight[data-weight]"
+ data-date="{{ .Date.Format "2006-01-02" }}"
+ data-weight="10">{{ .Date.Format "2006-01-02" }}</time> 读完</p>
</div>
</div>
{{ partial "components/comment.html" . }}
diff --git a/layouts/partials/head/css.html b/layouts/partials/head/css.html
index 63a2aa03..bf041938 100644
--- a/layouts/partials/head/css.html
+++ b/layouts/partials/head/css.html
@@ -7,6 +7,13 @@
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400..900;1,400..900&display=swap" rel="stylesheet">
{{ end }}
+<!-- Aplayer -->
+{{ if .Params.aplayer }}
+{{ with resources.Get "css/aplayer.css" }}
+<style>{{ .Content | safeCSS }}</style>
+{{ end }}
+{{ end }}
+
<!-- Extra -->
{{ range .Site.Params.extraCSSFiles -}}
<link
diff --git a/layouts/partials/scripts.html b/layouts/partials/scripts.html
index 308038ff..12beca10 100644
--- a/layouts/partials/scripts.html
+++ b/layouts/partials/scripts.html
@@ -8,6 +8,57 @@
<script>Fancybox.bind("[data-fancybox]");</script>
{{- end }}
+{{ if .Params.aplayer }}
+<script>
+document.addEventListener("DOMContentLoaded", function () {
+ const lazyPlayers = document.querySelectorAll(".lazy-aplayer");
+ if (!lazyPlayers.length) return;
+
+ const loadAPlayer = () => {
+ if (window.APlayer) return Promise.resolve();
+ return new Promise((resolve, reject) => {
+ const script = document.createElement('script');
+ script.src = "https://unpkg.com/aplayer@1.10.1/dist/APlayer.min.js";
+ script.onload = resolve;
+ script.onerror = reject;
+ document.body.appendChild(script);
+ });
+ };
+
+ const observer = new IntersectionObserver((entries, obs) => {
+ entries.forEach(entry => {
+ if (entry.isIntersecting) {
+ loadAPlayer().then(() => {
+ const el = entry.target;
+ const id = el.dataset.id ? `-` + el.dataset.id : ``;
+ const container = document.createElement('div');
+ container.id = `aplayer${id}`;
+ el.appendChild(container);
+
+ const ap = new APlayer({
+ container: container,
+ audio: [{
+ name: el.dataset.name,
+ artist: el.dataset.artist,
+ url: el.dataset.url,
+ cover: el.dataset.cover
+ }]
+ });
+
+ ap.on('play', () => umami?.track?.('🎵 Play music with aPlayer'));
+ ap.on('ended', () => umami?.track?.('🎵 Played entiresong with aPlayer'));
+
+ obs.unobserve(el);
+ });
+ }
+ });
+ });
+
+ lazyPlayers.forEach(player => observer.observe(player));
+});
+</script>
+{{ end }}
+
<script>
littlefoot.littlefoot({
dismissOnUnhover: true,
diff --git a/layouts/posts/single.html b/layouts/posts/single.html
index ced18720..dd6d4b8b 100644
--- a/layouts/posts/single.html
+++ b/layouts/posts/single.html
@@ -9,7 +9,7 @@
{{ partial "components/banner.html" . }}
<!-- Title and Subtitle -->
<h1 class="post-title">
- {{ .Title }}
+ <span data-pagefind-meta="title">{{ .Title }}</span>
{{ with .Params.subtitle }}
<small class="post-subtitle">{{ . }}</small>
{{ end }}
@@ -37,7 +37,10 @@
{{ $fuzzyTime = "深夜" }}
{{ end }}
- <time class="post-date" datetime="{{ .Date.Format "2006-01-02 15:04:05 MST" }}">
+ <time class="post-date"
+ datetime="{{ .Date.Format "2006-01-02 15:04:05 MST" }}"
+ data-pagefind-sort="date[datetime], weight[data-weight]"
+ data-weight="{{ if .Params.featured }}30{{ else }}20{{ end }}">
{{ .Date.Format "2006年1月2日" }} {{ $fuzzyTime }}
</time>
{{ end }}
diff --git a/layouts/shortcodes/aplayer.html b/layouts/shortcodes/aplayer.html
new file mode 100644
index 00000000..84c83002
--- /dev/null
+++ b/layouts/shortcodes/aplayer.html
@@ -0,0 +1,9 @@
+<div
+ class="lazy-aplayer"
+ data-name="{{ .Get "name" }}"
+ data-artist="{{ .Get "artist" }}"
+ data-url="{{ .Get "url" }}"
+ data-cover="{{ .Get "cover" }}"
+ {{ with .Get "id" }}data-id="{{ . }}"{{ end }}
+ style="margin: 1rem 0;"
+></div>
diff --git a/pagefind.yml b/pagefind.yml
new file mode 100644
index 00000000..e3c2c723
--- /dev/null
+++ b/pagefind.yml
@@ -0,0 +1,9 @@
+site: public
+exclude_selectors:
+ - "#footer"
+ - "#site-header"
+ - "#latest-posts"
+ - "#posts-archive"
+ - ".cards-section"
+ - "#fiction-section"
+ - "#library"