阅读视图

发现新文章,点击刷新页面。

2024.11.27: 各种链接

  • 中文播客的前世今生
  • RSS 20年 小宇宙负责人 Kyth 在20年写的文章。
    • 播客客户端Overcast的开发者Marco Arment非常享受播客行业的现状,并对Spotify这些new money嗤之以鼻。他向来的观点就是:播客这个花园之所以实现了一定程度上的长尾、繁荣、大家自得其乐,就是因为苹果不作为。当最大的收听渠道在运营和行业发展上很“佛系”时,反而在内容层面促成了一定程度上的百花齐放。
  • 沟通金字塔:怎样才能跟别人好好说话?
    • 有效讨论 == 寻求共识 + 针对性反驳 + 建设性意见
  • 亲密关系公约
  • 幸福相伴到老的秘诀是什么?
    • “研究表明,神经质高的伴侣更容易离异,而且常常和不幸婚姻直接相连。还有一种人格是所谓的「猎奇型人格」(novelty-seeking),开放性高,责任心弱,这样的人更容易猎奇,被新鲜事物吸引,自控能力比较差,对酒、毒品容易上瘾,也容易在婚恋中出轨,因为常常在婚恋中感到无聊,不耐烦。”
    • 对长期稳定婚姻最可靠的预测指数是恋人之间的积极反应的程度,这又直接源于性格中的宜人性(agreeableness)。也就是说在个性特征中,不太猎奇、比较随和、神经质程度不太高的人,容易拥有稳定的婚姻。
    • 在这三种感情纽带联结方式的人群中,安全型的人更容易在成年之后建立很稳定的关系,关系中的戏剧性也比较少。具有安全联结的方式就更容易和伴侣感情交流,较少误解,也较少争斗,容易深入交流,婚姻当然也就更稳定。
  • 如何做好自我介绍?

来个技术的!

Fedora 41 下面安装 fcitx5 w/ RIME

每次都要折腾,这次记录一下。

0x01 安装 fcitx5

sudo dnf install fcitx5 fcitx5-qt fcitx5-chinese-addons fcitx5-lua fcitx5-configtool fcitx5-gtk

因为 Fedora 41 已经默认 Wayland,根据Fcitx 官方文档,Wayland 桌面环境下不能设置 GTK_IM_MODULEQT_IM_MODULE,只能设置 XMODIFIERS=@im=fcitx。这里先不设置,我们后面设置。

但如果你为了让 fcitx5 随系统启动而安装了 fcitx5-autostart 的话,那它会自动设置那两个参数,虽然能够在 Firefox、GIMP、gedit 等 GTK 软件下输入中文,但是无法在任何 QT 程序下输入中文。所以,不要安装 fcitx5-autostart

0x02 安装 rime

sudo dnf install fcitx5-rime

我之前虽然有配置文件,但懒得导入了,直接使用雾凇拼音吧。

rime_frontend=fcitx5-rime bash rime-install iDvel/rime-ice:others/recipes/full

最后,去设置 /etc/profile 环境以下参数,重启之后大功告成:

export XMODIFIERS=@im=fcitx
export QT_IM_MODULES="wayland;fcitx;ibus"

0x03 参考资料


如果喜欢本文,欢迎点击下方的「鼓掌」按钮!

如果上面没有加载出任何东西,可以点击这里

修改手机号码需要验证银行卡信息

在这个缺乏监管的互联网,真的是什么都可以有。今天想修改滴滴出行绑定的手机号码,打开小程序,一步步操作后,没想到要验证银行卡信息。又一次刷新认知了,我修改手机号码跟银行卡信息有啥关系,难道不是只要号码都可以收到验证短信就可以吗?真的是为你好。

滴滴出行修改手机号码需要验证银行卡

真的是服务到家,反正不给银行卡信息,就不给你修改手机号码。

肯定会有人说,为什么不弃用。其实,我都没使用滴滴很久了,最近是因为上下班通勤的车被滴滴干掉,所以逼得我要使用滴滴出行这个小程序,不然影响我上下班通勤,不得以要使用。

官方还给出冠冕堂皇的理由:

Q 为什么修改手机号需要验证我的信息?

A 为了核实您是用户本人操作,确保您的账号安全,需要您通过我们提供的验证方式进行验证。验证通过后可以继续修改已绑定的手机号。

Q 银行卡号和银行卡预留手机号是我在平台上绑定过的银行卡和手机号吗?

A 是您名下绑定的任一张银行卡号和您在该行预留的手机号,不需要和您在平台上提供的信息相同。

滴滴出行修改手机号码需要验证银行卡

如果真的觉得会有漏洞,找运营商实名认证不就可以吗?为何要通过银行卡号来验证???

健身新手指北

11月是我坚持健身的第七个月,相比其他运动而言健身是一种非常方便的锻炼方式,不需要预约场地、不需要协调时间,是“只要我想,就可以立刻去做”的事。它也是一项完全专注于自我的运动,不必考虑团队协作、极少对抗,只需要感受自己的力量,然后一次次突破,乐趣自在其中。

本文是一篇针对从未去过健身房的小白的经验帖,因为完全是我主观感受的缘故可能并不准确科学,只希望能够让看到它的人对健身产生一点点兴趣就好啦!

心态建设:长期主义

开始前首先需要建立的认知是,健身并不是一件能够立刻看到回报的事情。力量增长以月甚至以年为单位,身体线条更是急不来的成果。因此放长线钓大鱼,把目标订在三个月、半年乃至一年,把锻炼作为习惯而不是手段会让这件事本身更好坚持。

不过也恰恰是在很长一段时间后、在自己都快要忘记的某一天,会突然在镜子里看到手臂有了肌肉线条、被许久未见的朋友称赞体态变好,或者在训练时发现自己已经能cover三个月前还觉得困难的重量,这种时刻得到的惊喜和成就感也是加倍的!

练什么/怎么练?

训练计划

推荐二分化训练法,即一天上肢综合一天下肢综合,每次训练1-1.5小时,两天为一循环。练二休一,一周循环两次就是六天,第七天根据自己的状态可以加练/做有氧/休息,如果周内哪天没有训练也可以在这天补上。

如果有降体脂的需求,推荐在每次练后再加20-30min的有氧(爬坡、跑步机、椭圆机等等)。小红书和b站有很多二分化的训练计划,这里贴一下我自己的:

· 上肢日(肩·背·手臂):

热身:弹力带肩绕环20次/2.5kg哑铃站姿旋转划船15个

1) 宽距下拉 12个*4组

2) 窄距下拉 & v-bar下拉二选一 12个*4组

3) 坐姿划船 12个*4组

4) t杆划船(窄握)& 辅助引体向上二选一 12个*4组

5) 哑铃推肩 12个*4组

6) 侧平举 12个*4组

7) 前平举 12个*4组

8) 俯身飞鸟 & 蝴蝶机反向飞鸟二选一 12个*4组

9) 哑铃过头臂屈伸 12个*3组

(因为我不喜欢练胸/肱二头肌所以没有加入相关动作ovo)

· 下肢日(臀腿):

热身:膝关节/踝关节活动,高抬腿1-2组

1) 哑铃直腿硬拉 & 地雷杆罗马尼亚硬拉二选一 12个*4组

2) 哑铃酒杯深蹲 & 器械倒蹬二选一 12个*4组

3) 杠铃臀冲 12个*5组

4) 哑铃保加利亚蹲 单边12个*4组

5) 坐姿髋外展 & 山羊挺身二选一 12个*4组

(也是因为我膝盖容易弹响所以没有加很多深蹲,总之训练动作还是根据个人身体情况来安排是最好的!)

针对同一肌群会有很多个不同动作,慢慢尝试和探索自己发力感更好、做起来更流畅的动作也是一种乐趣。以及不同的健身房有不同的器材,因地制宜保证自己想练的目标肌群都有练到就可以!

以女生为例,如果对肌群还没有概念可以参考这个链接:一张图带你看遍全身如何练

训练动作

仍然推荐新手一开始报10-15节的私教课,有教练带着学习规范动作+发力模式能避免很多弯路和受伤风险。在掌握基本动作和发力感之后就可以自由发挥了,b站和小红书其实已经有非常完备的动作教学视频可以参考,推荐以下up主:

b站:@好人松松、@凯胜王

小红书:@ifbb pro周红梅(她的教学更针对女生)

另外虽然之前安利过了,但训记真的是一个非常好用的app……能方便地储存训练计划、记录饮食,也内置很多动作教学视频。88r买断制,如果确定对健身感兴趣可以买来试一下!

饮食结构

如果希望能稳扎稳打地看到健身效果,控制饮食+改变饮食结构必不可少(但对我来说这部分才是最难的……毕竟美食的诱惑力太强了!)

不过中国人三餐大多以碳水为主,在健身的同时构建起对营养素的认识,慢慢把饮食结构转变为摄入更多蛋白质、更少脂肪和碳水,改变碳水组成里粗粮&细粮的比例等等其实对身体健康也会有很多好处。减脂就需要更严格地关注热量了。

推荐@好人松松的健身新手的饮食完全手册健身新手的减肥减脂完全手册,网络上关于健身饮食的说法五花八门,但看这两个视频其实就足够了。不过还是需要结合自身情况,比如对我来说只吃两倍体重甚至更少的碳水就会饥饿感特别强……因此拉高一点碳水比例降一点脂肪比例反而会更好坚持。规矩是死的人是活的,健身饮食之所以难就在于需要用一段时间去尝试和观察不同营养素比例下自己的身体状态,找到能够长期实践的那种才是最好的。(如果发现自己对食物的欲望特别强烈或者过于在意摄入量的时候也一定要及时停下热量计算!虽然是小概率事件但减脂确实是ED的诱因之一)生活就是吃吃减减增肌减脂的循环,健康永远是第一位。

写在最后

其实健身到现在,发现抱着“要收获好身材”的想法去训练对我来说反而是一种负担,就像打篮球或者其他运动形式一样,把它单纯作为生活调剂、锻炼的方式,不去刻意追求结果似乎才更可持续。虽然起初很难调整心态,但一旦接受了长期主义、接受把努力交给时间,好像对自己也宽容很多。中间有一阵会因为生病打乱了训练节奏而焦虑,也有过例假第二天就继续去健身房的危险行为,现在想想确实不值得。我还会坚持锻炼很多年、和自己的身体相处很多年,既然如此,只要我还在实践这件事,少一天多一天也无所谓啦。

总之!希望这篇文章能够帮助对健身感兴趣的朋友们找到一点入门的头绪,如果有也在用训记的uu请加我好友一起云锻炼——

我在steemit平台上写文章的原因


过去几年里,我除了维护几个 WordPress 博客外,还经常在 Steemit 上写博客。我更喜欢在 Steemit 上写作,因为它有以下几个独特的优势:

区块链存储内容

在 Steemit 上,所有的帖子和评论都会被永久存储在区块链上。这意味着内容不仅持久存在,还能抵抗丢失或审查。与传统平台不同,这些平台的内容可能因人为删除或服务器故障而丢失,而区块链的去中心化特性确保了我的作品始终可以访问。

图片上传便捷

Steemit 的编辑器大大简化了图片上传的过程。我只需将图片直接粘贴到编辑器中,它就能无缝地嵌入到文章中。这种无阻碍的操作比需要手动上传或依赖外部图床的方式更加省时省力。

搜索引擎可见性更高

在 Steemit 上发布的文章通常在搜索引擎中排名更高。这可能得益于 Steemit 的域名权重和区块链存储内容的公开可见性,这让我的作品能够触及更广泛的受众,提升了内容的曝光率。

获取创作和点赞奖励

Steemit 独特的奖励机制让我通过社区点赞赚取 STEEM 代币和 STEEM Power。这些奖励为我的内容带来了实际价值,使得在 Steemit 上写博客不仅在创作上令人满足,也在经济上具有回报。这种激励机制鼓励优质内容的产生,同时也促进了志趣相投的社区之间的互动。

英文:Why I like to Blog on Steemit?

whale-300x200 我在steemit平台上写文章的原因 STEEM 区块链 SteemIt 区块链 资讯

Steem 坐火箭🚀!

本文一共 443 个汉字, 你数一下对不对.
我在steemit平台上写文章的原因. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 我在steemit平台上写文章的原因 STEEM 区块链 SteemIt 区块链 资讯
The post 我在steemit平台上写文章的原因 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  2. LOGO 海龟作画 系列三 递归画一个国际象棋棋盘 今天我们要来讲一讲递归. 递归就是函数自己调用自己, 我们可以定义一个过程, 然后这只海龟不停的画, 结束的时候再调用自身再继续画. 再次调用的时候参数变化了, 至到参数满足一定的条件则停止. 比如 下面定义的这个过程可以用来画一个实现的正方形. TO FK :B IF :B>15 ;...
  3. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  4. 有个兄弟姐妹是件很好的事情 越来越觉得两男孩子真心好. 好处有: 两孩子年纪相仿: 我家老大6个月的时候 媳妇一不小心意外怀孕了, 这才有了老二. 最开始两人一起带很累, 但是并快乐着, 现在两娃可以兴趣一样 可以玩到一起, 一起成长. 老大的衣服鞋子可以给老二穿哈, 不浪费. 玩具可以一起玩, 但是.....
  5. STEEMIT 简易SP代理工具 当前, 加入STEEMIT CN区低保银行的一共有40个人, 一共代理给 @justyy 银行大约 6400 SP. 好处是每天能收利息 (14.6% 年化率) 并且能获得至少一次的双倍点赞. 代理的方式是通过 steemlogin.com 但是很多人都搞错,...
  6. 《Steem 指南》之 justyy 在线工具与 API 系列 – 查看被删除的帖子或评论 前言 大家都知道, STEEM上的一言一行都是会被记录在STEEM区块链上的, 哪怕是7天内可以修改(或者删除)文章或者评论, 修改的记录也都是会被忠实的记录的. 不相信? 这个在线工具就可以做到把删除过的评论给列出来. 工具地址 中文: Steemit 查看被删除的评论 英文: Steemit Deleted-Comments Checker...
  7. 你给SteemIt中文微信群拖后腿了么? 这年头不缺算法, 就缺数据. 这两天花了很多时间在整API上, 整完之后自己用了一下还觉得真是挺方便的. 今天就突然想看一看自己是否给大家拖后腿了, 于是调用每日中文区微信群排行榜单的API, 刷刷拿着 NodeJs 练手: 1 2 3 4 5 6...
  8. 在英国的第13个圣诞节 Merry Christmas 2017! 2017, 这是我在英国的第13年. 从2004年来, 每年圣诞节都是在英国渡过的. 最开始几年担心过节了商店没开门在家饿死所以早早屯了年货过年. 在英国感觉时间过得特别快, 也许和冬天天黑得早有关吧, 一天黑, 除了大伦敦和其它几个大城市, 其它小城镇几乎没有夜生活, 岁月静好. 这几年日子稍微好过些, 圣诞节总是要吃火鸡肉. 媳妇做了西式的晚餐, 烤箱烤熟了然后放上卤肉酱,...

再谈孩子教育

关于孩子教育的话题说了很多次,大多都是基于具体事件的有感而发,这篇也不例外。 儿子上初一,从小学开始我们一直管 […]

接反了?

当年今日

据说周六单位的停电保安在凌晨3、4点的时候就发现了。保安是24小时值守的,他们发现是理所当然的,所以我估计是那个不值守,但却最早发现的人,我发现的时候差两分钟凌晨5点。

花了一整个上午,到接近中午12点的时候才开始用发电机给生活区这边发电。为什么要给生活区发电呢?没有电就没有水,就没办法煮饭。市政的水接进来,只有少数几个水龙头能直接使用,其它地方要用水都需要水泵加压。楼顶水箱的水估计在早上8点前就已经被大家用光。饭堂厨房设置在离市政水比较远的地方,所以不进行水泵加压,饭堂没有水,就无法做任何清洗,当然也就没办法做饭了,哪怕饭堂可以用液化石油气加热。我不知道大家的早餐吃的是什么,反正我中午接近一点的时候过饭堂的时候,午餐的那个样子跟平时的早餐没区别,一个西红柿鸡蛋汤面,另外一个是肉丝蒸陈村粉。如果没猜错的话,估计这是那天早上的早餐,早餐最终不知道他们做了什么。虽然早上送菜的把东西都送到了,但是无论是肉还是菜都需要清洗,没有水什么都做不了,所以要吃饭也就只能什么简单做什么。接近中午12点才开始有电,所以我猜最早那顿饭也到一点才会有结果,但好像在中午12点30的时候,群里就宣布可以去吃饭了,但那个时候我没看到,有电以后,我给自己冲了一杯手冲咖啡。

吃完饭以后回到办公室,看到旁边的机房开门了,于是我就进去打听到底什么情况。因为理论上有电了,服务器转起来了就应该有网了,但实际上没有网,所有WiFi都处在工作状态,但是全部都无法连接互联网。步入机房的那一刻,我就感觉到热气扑面,为什么会这样呢?机房的空调向来都是很猛的,停了几个小时电,热是正常的,但是我进去的那个感受是空调根本没有转起来。询问之后才知道,原来空调开不起来。最重要的原因是那个总控没办法从UPS转为市电。UPS在过去大半天的时间里已经耗尽,所以我进去机房的时候,那些UPS蓄电池正在充电中。充电中的蓄电池为什么就不会不可以切到市电的那条线路上呢?想想都觉得这非常不可能,总不能等到那些蓄电池都充满电了,才能切过去吧,完全不符合逻辑。同事在那里折腾了半天,然后他又打电话给另外一个同事,电话指导操作下又折腾了半天,毫无结果,最后电话里的那个同事让他打电话给总控的客服。客服听了他说的情况以后,迅速敏捷地把那个原因锁定下来,是我们接入总控的那条线接反了,火线跟零线接反了,所以在手动切换UPS的那个界面会出现神奇的返回首页、没有任何效果。同事折腾总控的时候,生活区用的是发电机发的电,打那个客服电话之前,机房的空调按重启之后,机上显示的是“反向供电”,所以也验证了那个客服线路接反的说法。不就是接个发电机,临时自己发电,这怎么也可以接反呢?同事给总控客服打电话的时候,单位的群里说,马上要从发电机重新切回市电。切回市电以后,机房里所有东西都正常了。光管亮起来的那一刻,我已经感觉到空调正常运转起来,机房里那一片没有亮起的服务器灯也终于亮起来了,虽然不是全部都亮了,但起码有一些亮起来了,意味着它们通电了。在这件事之前,我还真的不知道,原来火线跟零线反过来接部分用电器还是能运转的,而另外一些用电器,他们会对线路进行检测,比如机房的那个空调和总控。

我以为切回市电以后会一切正常,但是下午16点多的时候,又进行了连续多次的停电,17点的时候也一样,所以办公室的电脑被开了又关、关了又开。最后,我甚至有点不敢打开那个机子了,因为我好怕电源按下去,几秒之后又停电,这种事情不是我的过分担忧,而是真的就这么发生过。

没有刮大风,没有下大雨,一切都很平常,但突然就发生了这么一件不知道为什么停电的事。

2025杂想

日常杂想,特朗普上台让我们对2025年无法乐观,瞎想待2025年验证。 失业 失去流量红利和消费下降的互联网大 […]

独立博客自省问卷15题

前言:好久没有更新博客了,其实有很多事情想和大家分享,真的是精力有限现在的生活一团乱麻,也正好在我的博友(陈仓颉 imzm.im)的博客看到了这篇文章,虽然没有艾特我,可是这么久没有更新了,我就厚脸皮来借这个问卷更新一下吧。
记得刚刚接触博客的时候,好像也曾有过类似的小活动,题目是(说说自己博客的发展历程)。我也有参与过,只是因为以前折腾博客太频繁数据丢失了。好啦,正文开始~

1. 你的博客更新频率是多少?

刚刚接触博客的时候是学生,时间也比较充裕每天都会有有趣的事情发生,一般是一周更新一次,然后慢慢变成了一个月一次,直到现在已经是随缘更新了。

2. 你的博客上次更新是什么时候?

上次更新博客是2023年12月25号,已经快接近一年了。当时更新还是因为集齐了苹果的全家桶,很开心的想和大家分享一下体验。

3. 你的博客文章是原创的吗?

是原创的,一般都是自己的生活记录和学习记录,不过也有转载的博文,通常都是一些情感文章或者某些大佬分享的工具或者教程。

4. 你觉得自己的文章对他人有帮助吗?

有几篇文章还是能对其他博友起到一些帮助的,更多的还是博友们帮助我。

5. 你上次换博客主题/程序是什么时候?

没记错应该是2021年7月3号的时候,用上了自己伪原创的定制主题(Memory)现在我叫它(feather)此后就在也没有更换过程序和主题。

6. 你上一次倒腾博客主题代码是什么时候?

忘记了,我一般都是付费找大佬帮助我解决问题或者修改主题。

7. 你会对博客主题进行二次开发?

目前不会,现在主题的样式个功能对我来说已经非常完美了。

8. 你多久打开自己博客自我陶醉一次?

没事就打开看看,陶醉算不上就是已经习惯了。

9. 你近期对自己博客域名有什么感受?

非常满意当前域名,长期都不会更改。yyjn.org 是我博客名字的首字母,原本有想过换成 yyjn.me 打出来感觉没有 org 好看就放弃了。

10. 你每天都会看网站的流量统计吗?

以前会,而且是一天查看多次,现在已经把所有的统计和跟踪代码去掉了。

11. 你通过博客的广告赚到钱了吗?

赚到过,是一次软文推广,以前想在博客悬挂谷歌广告来获取收益,因为主题样式等原因没有悬挂,现在以后也不会悬挂任何广告。

12. 你去浏览别人的博客/网站主要为什么?

阅读别他博友的博客,就像读书一样,可以学习到好多知识,不仅可以增加见识,解决技术问题还可以让我更热爱生活。

13. 看到别人分享了一篇文章,你打开第一反应是什么?

读完文章的内容,观察并思考,查看博主其他文章或页面/网站。如果于自己可以产生共鸣,我会进行订阅并分享给其他朋友。

14. 你觉得博客哪方面更重要?

当然是内容咯。

15. 近期通过写博客有哪些新收获?

好开心,我又更新啦~

最后交由:森木志 泽泽社长 林海草原 梦幻辰风

回答一则有趣的私信 II

我怎么没想到,这个内容可以做成一个系列的。自年初挑战了中文博客圈“大佬”们的价值观之后,时常会有人通过私信辱骂我,但是骂归骂,多少没创意,骂来骂去都是介绍他们自己是傻逼,或者自己的妈要死了。今天倒是收到一条比较有趣的“辩护”。

有可能是@白熊阿丸 最近两篇文章,都提到了我博客上比较有争议性的文章,例如讨论中文博客圈无聊的原因,还有将友情链接类比成“小学生”行为。以至于我阴魂不散地出现在了别人的博客,所以对方顺藤摸瓜找到了我,并找到了私信入口。(我个人觉得是一种真爱黑粉)

我爱怎么写博客怎么写,我爱怎么交换友情链接怎么交换,你算什么东西来质疑我,关你屁事!傻逼死妈玩意!

傻逼莫比乌斯

你看,你不留下你的博客网址,我怎么来质疑你的动机呢?

我觉得我有必要集中聊聊了,我们在这里讨论什么:

  • 这个博客的任何一个观点,都没有在阐述对与错。我的观点不和你一致、没有赞同你的观点、甚至没有顺着你得意思说,都不代表我在否定你;
  • 当然,也有可能,你连“事实”和“观点”都分不清楚,那么请看《油漆未干是事实还是观点》
  • 我很欢迎你在这里进行观点的交流,但不是为了反驳而反驳。比如私信里的这位朋友,他觉得切断了我的观点,就可以证明自己的行为是正确的。如果你习惯性地通过否定他人来证明自己的正确性,那么请看《中国人的A与B》
  • 如果你非常不爽我,希望通过召集一群乌合之众对我进行讨伐,甚至是联名要求各大中文博客圈网站将我除名,我也可以教大家一些具体的“挂人”方法,那么请看《捧臭脚的真谛是说它香还是夸它臭 II》
  • 如果你想给我扣帽子,那么你可以学习一下阴谋论的内部结构,好让我陷入到无法自拔的自证陷阱。那么请看《阴谋论是非黑即白的最后一层遮羞布》《让别人跳进他为你亲手挖的自证陷阱》

被骂我倒不介意,我比较介意的是我们能不能保持同频去聊彼此的观点,而不是一上来就咒骂对方,甚至是评价对方“走火入魔”而切断了所有的交流,你看,我这不“走火入魔”得有理有据,甚至还有方法论。

最不自量力的,是打算通过诋毁我的道德水准(我当然也没有)的方式,否定我所有的创作内容,认为是我心术不正在先,所以我的作品也没有必要阅读。那这我就不乐意了,这是核武器级别的对抗,甚至不给我任何发言的机会,那么与之相对应的核武器反制手段也有:

  • 要怀疑我的创作动机?那你先坚持五百日写作之后我们再平等讨论。总不可能你拿着五篇无人问津的文章,来讽刺我写的超过五百篇引发过他人思考的文章吧。

另外,值得称赞的是,这位私信的陌生朋友,在称谓一栏填写的是“傻逼莫比乌斯”,而不是“傻逼”,此前我已经收到过太多自己称自己“傻逼”的私信了。

下一期再见。

油漆未干是事实还是观点?

之前在Instagram上刷到过一个视频,显然是从简体中文的短视频平台出来的,被翻译成了英文反向输送了文化。视频内容,是一个妈妈跟自己的女儿互动,在一问一答地呈现“事实”和“观点”的区别。

“你手里拿的是苹果”这是事实,“我不喜欢吃苹果。”这是观点。“妈妈手中拿的是香蕉。”这是事实,“妈妈手中的香蕉比你的苹果更好吃。”这是观点。事实是观点的基础,我们需要证伪脱离事实的观点;事实是客观存在的,观点是主观存在的。因此我们不能用(主观)观点去覆盖(客观)事实——“如果其他小朋友觉得你不漂亮,这不代表是事实。”

说实话,这个视频不是给“小朋友”看的,它值得面向全人类。

不得不说,现在还有很多成年人都无法区分“事实”和“观点”,还会用自己所坚持的“观点”去覆盖他人的“观点”、甚至是客观“事实”。之所以会发生这样的覆盖行为,今天的文章需要掉一下书袋子。


美国心理学家埃利斯提出的情绪ABC理论,认为激发事件A(activating event)只是引发情绪和行为后果C(Consequence)的间接原因,而引起C的直接原因则是个体对激发事件A的认知和评价而产生的信念B(Belief)。

节选自《认知束缚》——全部内容我之后会发布在莫比乌斯的Telegram频道

举个例子,一个人走在人行道上,这时马路上来了一个对向行驶的汽车(事件A)。看上去这是一个极其正常的画面,但是这个行人突然做出了一个夸张的行为——他背对着汽车疯狂逃走(后果C),为什么?我们作为一个第三视角,看到的全都是“事实”,汽车行驶、行人逃走,这时我们可能会加入一个“观点”:是这辆车想要撞这个行人。

但是这个“观点”并不代表事实,因为这辆车还在正常行驶,只是那个路人发了疯地逃走。如果我们弄清楚这个路人对这辆对向而驰的汽车有什么特定的认知(信念B)——因为这个路人觉得这辆车要撞向自己,所以作出了逃跑的行为。那这个路人认为汽车要撞向自己是“事实”吗?显然不是,但如果事情没有结束,我们都很难说这辆车是不是要撞人。


在这个举例里,从路人的角度来看:对向而驰的汽车是“事实”,他认为车要撞自己是“观点”,然后发生了他逃走、但车其实没有撞向他的“事实”。于是,从第三方的角度来看:人们就会用前后的“事实”去评价当事人的“观点”是错误的——“你是不是有被害妄想症?人家压根不是来撞你的!”而认为车要撞自己的人,则坚持自己的“观点”——“要不是因为我逃走了,他一定撞上我了!”就算“事实”不是如此,他仍坚持自己的“观点”。这时有人提出了理性思考,分析事实的角度,但因为自己的“观点”没有得到肯定,他跳脚说大家都在否定自己。

这件事情很绕,但几乎涵盖了如今互联网上、甚至前段时间因为《无聊的中文博客圈》掀起的“我不需要你认同我”讨论的底层逻辑——人们在观点之争几乎都是因为想要争论这个“观点”的对与错。观点并不是非黑即白的存在,但一些人为了证明自己的观点是“正确的”,才会如此在意对不同观点进行讨伐。这件事,在乌合之众的群体行为之中更加明显,他们试图通过挞伐一切与其观点违背、否定、甚至是不同的观点,来证明群体意志优越于个人、或其他群体的意志,从而获得更强烈的集体-个体荣誉感。


要解决这件事并不难,回到“事实”层面重新讨论即可。但问题在于,很多“事实”早就被相互争论的“观点”给覆盖了,甚至不允许讨论“事实”,因为谁赢了,谁就可以用他们的“观点”覆盖“事实”。

或许有人会说,事实讨不讨论就在那里,讨论“观点”才有意义。然而正是因为脱离事实去讨论观点,很容易发生最开始的那个母女的对话:“其他小朋友觉得你不漂亮。”支持这个观点的人,还真会当成事实去攻击别人。

回到标题,那“油漆未干”是“观点”还是“事实”?

别忘了,在“事实”和“观点”以外,还有一个被人们忽视的模块,叫做“实践”——你他妈摸一下不就知道了?

终不似,少年游

时间很快,快到眨眼之间啊,便已入冬了。在清早看向窗外的时候,远方的山终于染上了白发,让岁月又留上了一年的痕迹。看着时间,成家在小呆瓜的陪伴下已经达成结婚一周年的成就,立业在贵人的帮持下已经开始了一年的新征途。至此,倘若没有体重脱发的困扰,一切都在向好向上前行。

生活与工作,终于都有了新的色彩。而在新的岗位之中,秉持本心,一路向前。

重新打开梦幻辰风,发觉在几次搬迁之中,丢失了一些评论。但是随着自己在折腾代码的路上,将以往的所有交流都选择在首页隐藏。于是在不断的折腾与改变之中,梦幻辰风逐渐成为了记录时间的厚簿。


前些日子JCS.MOE域名自动续费了一年,看着信用卡13.99 美元的账单,方才发觉已经很久没有好好看过自己的一隅世界。终于,让电脑开机,看了看梦幻辰风的现状,又默默移除了一些没有什么用途的功能,让它回归到记录生活与寄居情感的使命之中。而后打开日历看看,几年前买的小服务器在下个月终于要过期了,看了看现在服务器的价格与折腾的麻烦,想着下一步离开服务器的豪宅回到虚拟主机这个廉租房的行列中。至少,省去了折腾,只留下时间与岁月的痕迹,就仿佛在瞬间回头,看到的是2014年的那个凌晨。

可惜,一切都不会再回去了。但好玩的在于整个世界仿佛是一个轮回。华农兄弟又一次身着蓝色战衣手持打野刀提溜着竹鼠,李子柒在田园牧歌中继续吟唱着岁月静好的温馨,特朗普当上了总统入住了白宫,美国丢了43只实验室的猴子……差点,又恍若昨日了。可惜对于石破茂来说,轮回就是上午辞职首相,下午继续当选,只有一个午觉的间隔。

时间很快,快到自己已经不再是少年了。于是在接近三十岁的日子里,想为自己写点什么。可惜每当周末,要么是开着车带着老婆出门,要么是老婆要坚守在岗位上不能回家,要么是自己在岗位上忙碌着新的工作,要么是躺在沙发上打开了王者荣耀研究用芈月在保证赢的同时降低自己评分……

也就因为如此,默默停笔了三个多月。但是回归工作,每天都在敲击着键盘,在不同的文字之中徘徊,让自己慢慢去学习、去领会、去探索这个小县城的一切。也终于了解,这个小县城所有的改变,不是在眨眼之间一蹴而就,而是在一个又一个接力棒的传递,在一个又一个坚守与建设之中,有了新的光亮。


封面图

离开工作与生活,在家最多的便是陪伴了。是老婆陪伴着我,是狗蛋在我敲击键盘时趴在电脑桌旁舔舐着毛,是在相伴与成长之中,任凭岁月自行记录着历史。在深夜之中,我看着星空璀璨,仿佛又见到了十年前的自己。

那时,穿梭于互联网的世界里畅想着自己去空阔又拥挤世界打拼。可惜,刚出象牙塔便进入了幼稚园,在相同又不同的校园生活里留着一颗赤子之心去成长、成熟,在离别与新的征途之中继续前行,在技术与文字的选择中遵循大哥的指示去锤炼自己青涩又单薄的文笔……终于,十年已是过往。

索性,在属于自己的房子中为自己斟上了一杯十年前的老窖,在一饮而尽中,十年里愈发浓郁的酒精变得辛辣与苦涩,在这一瞬间,仿佛那个少年又走向我,摇摇头,几分戏谑的看着十年后的自己,说,“这十年,你的酒量还是这么差。”

嘿,他妈的。

叶满汀洲,寒沙带浅流。二十年重过南楼。柳下系船犹未稳,能几日,又中秋。

黄鹤断矶头,故人今在否?旧江山浑是新愁。欲买桂花同载酒,终不似,少年游。

——《唐多令·芦叶满汀洲》刘过

NoMoreRestrict Settings / 设置

为什么选择《魔兽世界》经典怀旧服

最近两天,我重新踏上了《魔兽世界》经典怀旧服的冒险之旅。虽然这款游戏在我的游戏生涯中并不陌生,我很多年前就曾经深入体验过这个神奇的艾泽拉斯世界,这次重新选择回归怀旧服我想可能有两方面的原因:

一、怀旧

“怀旧”这两个字深深吸引了我,它就像一个温暖的邀请。在重返艾泽拉斯香草时代的过程中,我不断回忆起那些曾经难忘的游戏瞬间和珍贵的游戏经历,每一次登录都仿佛是一次时光旅行,让我重温那些令人怀念的冒险时光。上次经典怀旧服开服我是错过的,这次算是补上了一个小小的一环。这样的机会可能不常有。趁着这段时间还有热度,一起热热闹闹的再怀旧一番。

二、社交玩法

魔兽世界-经典旧世-20周年纪念版

游戏独特的社交性是促使我选择回归的重要原因。在怀旧服中,游戏机制的精心设计让玩家们不得不更多地进行组队合作,通过加入工会、参与团队活动和各种社交方式来更好地体验游戏内容。前段时间玩巫妖王之怒的怀旧服已经有一些这样的感觉了。这种深度的社交互动不仅丰富了游戏体验,更成为了我持续投入游戏的重要动力。

三、相对简单的玩法

《魔兽世界》的正式服和怀旧服为玩家带来了截然不同的游戏体验。更现代的正式服对新手玩家当然更加友好,特别适合像我这样偏好独自探索的玩家。它的界面更加现代化,功能更加完善,更能满足当前玩家的各种需求。然而,它也不可避免地面临着两个显著的问题:经过二十多年的持续发展和更新,游戏系统变得过于复杂,玩法选择太过繁多,常常让玩家感到无所适从,难以找到真正的游戏乐趣。相比之下,功能和玩法相对简单的六十级的经典怀旧服则显得更加简单纯粹,让玩家能够更专注于游戏的核心玩法和本质乐趣。

而我之前特别提到的社交属性,在当前追求效率和便利的正式服中已经被大大弱化,这让游戏失去了很多原本珍贵的互动体验,不得不说也是一个鱼与熊掌不可兼得的遗憾。

魔兽世界-经典旧世-20周年纪念版
魔兽世界-经典旧世-20周年纪念版
魔兽世界-经典旧世-20周年纪念版

自制 iOS 小组件,随机显示一条 Memos

借助古早 Scriptable 玩了玩自制 iOS 小组件,实现随机显示一条 Memos。

更多预览

简要步骤

iPhone 上下载 Scriptable App(需 iOS14+).

打开App,点击右上角 + 号,复制代码,修改个人信息,保存。

长按桌面,添加组件,选择 Scriptable,然后点击组件配置,选择刚刚保存的脚本即可.

注意事项

注意:基于 Memos v0.18 api v1 借口.

自行测试如下链接是否有数据返回,再使用。

https://me.edui.fun/api/v1/memo/stats?creatorId=101
https://me.edui.fun/api/v1/memo?creatorId=101&limit=1&offset=3

代码如下

修改前两行的个人信息。

//v2024.11.27 更新图片显示

let memosUrl = "https://me.edui.fun"
let memosUserID = "101"

const widget = await createWidget()
widget.setPadding(5, 5, 5, 5)

Script.setWidget(widget)
Script.complete()

async function createWidget() {
  let widget = new ListWidget()
  const memosData = await getData()
  let memoOne = memosData[0];
  const wrap = widget.addStack()
  wrap.layoutHorizontally()
  wrap.topAlignContent()

  if (memoOne.resourceList && memoOne.resourceList.length > 0 && 
config.widgetFamily != 'small') {
    wrap.spacing = 5

    const gradient = new LinearGradient();
    gradient.locations = [0, 1];
    gradient.colors = [new Color("#121212", 0.7), new Color("#212A37", 0.8)];
    widget.backgroundGradient = gradient;
    const column0 = wrap.addStack()
    column0.layoutVertically()

      let resourceList = memoOne.resourceList;
      let imgUrl = '',imgLink = '', fileId = '';
      let restype = resourceList[0].type.slice(0, 5);
      let resexlink = resourceList[0].externalLink;
      if (resexlink) {
        imgLink = resexlink
      } else {
        fileId = resourceList[0].id;
        if(resourceList[0].uid !== undefined){
          fileId = resourceList[0].uid
        }else if(resourceList[0].name !== undefined){
          fileId = resourceList[0].name+"?thumbnail=1"
        }
        imgLink = `${memosUrl}o/r/${fileId}`;
      }
      if (restype == 'image') {
          imgUrl = imgLink;
      }
      if (imgUrl) {
        let ImgStack = column0.addStack()
        const memoIMG = await new Request(imgUrl).loadImage();
        let imgCover = ImgStack.addImage(memoIMG)
        imgCover.leftAlignImage()
        imgCover.containerRelativeShape = true
        imgCover.applyFittingContentMode()
      }
  }else{
    wrap.setPadding(10, 10, 10, 10)
    wrap.spacing = 15

    const img = await new Request('https://api.dujin.org/bing/1366.php').loadImage();
    widget.backgroundImage = await shadowImage(img)
    
  }

  const column1 = wrap.addStack()
  column1.layoutVertically()

  let TimeStack = column1.addStack()
  TimeStack.layoutVertically()

  let memoTime = new Date(memosData[0].createdTs * 1000 - 5 ).toLocaleString()
  let time = TimeStack.addText(memoTime)
  time.textColor = new Color("#ffffff")
  time.textOpacity = 0.7
  time.font = Font.lightSystemFont(14);
  time.font = Font.italicSystemFont(14);

  column1.addSpacer(5)

  let TAG_REG = /#([^#\s!.,;:?"'()]+)(?= )/g, 
    IMG_REG = /\!\[(.*?)\]\((.*?)\)/g,
    LINK_REG = /(?<!!)\[(.*?)\]\((.*?)\)/g,
    LINE_REG = /\n/g;

  let addContent = memosData[0].content
    .replace(TAG_REG, "")
    .replace(IMG_REG, "");

  if(addContent.length > 140){
    addContent = addContent.slice(0,140)+"..."
  }

  let ContentStack = column1.addStack()
  ContentStack.layoutVertically()

  let content = ContentStack.addText(addContent);
  content.font = Font.lightSystemFont(18)
  content.textColor = new Color("#ffffff")
  content.leftAlignText()
  //content.textOpacity = 0.88
  content.minimumScaleFactor = 0.8

  column1.addSpacer(5)

  let TagsStack = column1.addStack()
  TagsStack.layoutVertically()
  TagsStack.bottomAlignContent()

  let tagArr = memosData[0].content.match(TAG_REG);
  let memosTag = '';
  if (tagArr) {
      memosTag = tagArr.map(t=>{
        return `${String(t)}`;
      }).join('');
  }else{
      memosTag = `#动态`;
  }

  let memostag = TagsStack.addText(memosTag)
  memostag.textColor = new Color("#ffffff")
  memostag.textOpacity = 0.7
  memostag.font = Font.lightSystemFont(14);
  memostag.lineLimit = 1

  return widget
}

async function getData(source) {
  var memosData
  let memosLength = `${memosUrl}/api/v1/memo/stats?creatorId=${memosUserID}`
  let memosDataLength = await new Request(memosLength).loadJSON()
  let randomNum = Math.floor(Math.random() * (memosDataLength.length - 1 ) )
  let memosapi = `${memosUrl}/api/v1/memo?creatorId=${memosUserID}&limit=1&offset=${randomNum}`
  try {
      memosData = await new Request(memosapi).loadJSON()
  } catch (error) {
      console.error(error);
  }
  return memosData
}


async function shadowImage (img) {
  let ctx = new DrawContext()
  ctx.size = img.size
  ctx.drawImageInRect(img, new Rect(0, 0, img.size['width'], img.size['height']))
  ctx.setFillColor(new Color('#212A37', 0.8))
  ctx.fillRect(new Rect(0, 0, img.size['width'], img.size['height']))
  return await ctx.getImage()
}

Raycast Hoarder: 开源 AI 书签管理插件

上周我开发了一个基于 Sink 的短链管理插件《我开发了一个短链管理插件: Raycast Sink》,上架官方插件商店后,看到已经有几十个用户在使用。

昨天又开发了一个基于 Hoarder 的书签管理插件,有了上次的开发经验,这次从初始化项目到最后提交上架,只花了一天时间。同样开源到了我的 Github 上。

Hoarder 简介 &ZeroWidthSpace;

Hoarder 是一个基于 AI 的书签管理工具,可以自动摘录、识别网页,通过 AI 分析内容、生成标签和摘要

有关这个项目的介绍,大家可以直接看官网和官方文档,官方的文档写得很详细。

优点 &ZeroWidthSpace;

  • Self-Hosting,支持自部署,数据自主可控
  • 支持 Web、iOS、安卓多端,也有浏览器插件
  • 通过 AI 自动给内容打标签,理解网页和图片内容
  • 自动保存网页和截图
  • Docker 一键部署,建议用境外服务器,抓取和分析更快。
  • 开放 API 支持拓展

Raycast Hoarder &ZeroWidthSpace;

我部署完 Hoarder 之后,也安装了浏览器插件和 iOS 应用,感觉整个产品的完成度很高,加上有 API 支持,所以就顺手开发了一个 Raycast 插件,方便管理和使用 Hoarder。

列表直接查看书签,支持网址、图片、文本三种格式的预览。

增强了搜索功能,支持本地权重搜索和在线搜索。

书签详情页支持查看、编辑、删除、打开链接等操作。

支持列表和标签列表。

由于 Hoarder API有点问题,暂时支持快捷增加文本和链接的书签。

为什么要自部署 &ZeroWidthSpace;

在上面的优点中,我特意提到了 Self-Hosting,自部署是我最关注的一个点。

去年我曾经写过一篇文章《脱钩: 我的个人网络安全策略》,由于工作原因,我已经将很多数据都下云或者放到境外服务器。

其实市面上有许多书签管理和笔记管理工具及服务。但是,出于众所周知的原因,在国内的所有内容平台服务都需要进行内容审查。国外也有很多优秀服务,但价格高昂或速度慢。

Hoarder这种完全开源、可以自行部署、数据可控性强的工具对于像我这样有技术背景的人来说是一个好选择。

Calibre-web 数据库路径和下载权限 500 Internal Server Error 问题

最近用 Docker 搭建了 Calibre-Web(书籍管理阅读平台),出现了一些问题,以下是解决方案。

Calibre 数据库路径

先是进入网页界面中,需要填写 Calibre 数据库路径,该路径需要进入 Docker 容器内部,创建数据库,并添加写入权限。

先查看容器内目录结构,并进入 bin。

docker exec -it calibre-web sh

ls /

cd bin

创建一个空的数据库。

calibredb add --empty --with-library /books

如果上面的命令成功,则设置正确的权限。

chmod -R 777 /books

初始化数据库。

calibredb add --empty --with-library /books

退出容器。

exit

OPDS

支持 OPDS 的阅读器,能更方便的下载和阅读 Calibre-web 中的书籍。

OPDS link 的正确格式是:http(s)://username:password@ip/hostname:port/opds

ip/hostname:port,也可以是网站域名。

iOS 中推荐 Cantook

CleanShot 2024-11-25 at 14.15.29@2x.png

下载权限问题

在绑定 OPDS 阅读器的时候,我发现无法正常下载书籍,网页版也有相同问题,但仍可以阅读。报错:500 Internal Server Error。

这部分报错是比较新的问题,在 Github issue 中找到了解决方案。与 PUID/PGID 相关,应使用运行 Docker 的用户的 ID,这样可以确保容器内外的权限一致。

重新回到 docker-compose.yml 中,将这两者都设为 1000,再重启 docker 即可解决。

services:  
  calibre-web:    
    environment:      
      - PUID=1000      
      - PGID=1000

2024年的付费墙

免责声明:本文仅用于教育目的。作者不认可或鼓励任何不道德或非法活动。使用此工具的风险由您自行承担。

12ft 是一个帮助用户绕过在线付费墙的插件,2023年被投诉下线之后,这些可以作为替代品:

考虑到工具的稳定性和长期性,我日常使用的是 Webpage archive 、自托管的 Ladder 和 Ublock origin(Firefox版)。

❌