自由、荒诞与虚无

2022年,我们的生活有很多变化。比如城市里消失了多年的爆竹声,今年终于又回来了。尽管官方一再严令禁止,但不管是人们心中压抑已久的情绪,还是这片土地绵延千年的古老传统,都是无法抹销的。 2022年,我们见证了文明的低谷。黄钟毁弃,瓦釜雷鸣,无数人在权力的倾轧中痛苦煎熬。但好在无声处总有惊雷,文明衰落的曲线总有暂时的反弹。可能不会有人料到,乌鲁木齐的大火会蔓延全国,而人们与久违的勇气之间,只差一张白纸。 2022年,我们终于窥见了正常生活,而代价却是爆满的药店、医院、殡仪馆……1月18号下午,我走进了有些陌生的出入境大厅,看到里面人头攒动,护照办理窗口前排着长长的队伍。人们似乎已经已经做好了奔向世界的准备,但谁知道呢?没准过不了多久,开放的大门又要适时地关上。 面对荒诞的世界,我也思考过人生的目的。尤其在辛苦耕耘的土地无法开花结果、找寻良久的彼岸无法拨云见日的时候,我也感到遗憾哀伤。但世界不会给我答案,它就像钟表上不知停歇的单摆,永远重复着毫无目的的寻回。后来我读到加缪,才知道世界本就荒诞、人生本无目的,或者说,存在本身就是目的。我们无需绞尽脑汁思考人生的目的,因为带有目的的人生是可悲的,也与世界的荒诞性背道而驰。我们能做的,只是认识荒诞、拥抱虚无。 2022年,我用自己的方式拥抱虚无。前年,我在三线老家买了一套不大的房子,以作为结婚的物质条件之一。而这一买,就踩在了房价和利率的最高点上。如果非要计算损益,我已经在一年之内领取了近20万的亏损。我的心态一度是很不好的,尤其是买房的目的本身也似乎离我远去的时候。后来,我终于找回了存在主义的真谛。我就是那个不停将石头推向山顶的西西弗斯,而我的生活就是那块不停落回山下的石头。我告诉自己,我的房子并不是实现某种目的的手段,而是目的本身。它是我一个人独处时的安静空间,也是我在海上航行时的锚点,更是我一切灵魂自由的基础。 没错,追求灵魂的自由、认识世界的荒诞、拥抱人生的虚无——这就是2022年带给我的最大收获。2023年,我会努力不再执着于所谓的目的性,不再纠结于世界的荒诞性,用心地生活、自由地生活。 最后,在这壬寅年的最后一刻,祝各位都能走出旧年的低谷,过上自己想要的生活。

2023-01-21 · Mason

如何配置路由器的 DHCP ?

开场 经常折腾家里网络的你,一定经常遇到这些问题: 为什么明明插上了网线,却打不开路由器的后台? 为什么 NAS 的 IP 地址经常变化? 为什么用上了高价的软路由,打开网页的速度反而变慢? 为什么跟着大佬的视频一通配置,却还是玩不转旁路由? 以上这些问题其实都和 DHCP 有关。 什么是 DHCP? DHCP 是 Dynamic Host Configuration Protocol 的缩写,意思是动态主机配置协议。它的作用,是为每一个接入局域网的设备自动分配一个 IP 地址,并为这些设备自动配置默认网关和 DNS 服务器。 名词解释 如果你不理解网关和 DNS 是什么意思,也不要紧。你可以把网关理解成一个中转站,局域网内的所有设备都要通过这个中转站来与外界联系,而家用网络的网关通常只有一个,那就是路由器。DNS 则要更加复杂一点,我后面会单独制作一期视频来讲解。这里你只要把它理解成一个“电话簿”就可以了。 DHCP 的工作原理 DHCP 协议由一个服务端,和多个客户端组成。服务端一般就是你的路由器,而客户端就是你用来上网的设备。 Discoer 每当一个新设备初次连入局域网,它就会向整个网络广播自己的 MAC 地址。所谓的 MAC 地址,是每个设备的硬件地址,它被写在设备的网卡上,一般情况下无法更改,相当于设备的“身份证号码”。当新设备初次连入,它会向局域网广播自己的 MAC 地址,相当于新员工的自我介绍。这段自我介绍有一个很洋气的名字,叫做 Discover。 Offer 当路由器接收到新设备的广播,就会在现有的 IP 地址中,挑选一个还没有被其他设备占用的空缺地址,并将这个地址和其他配置信息(比如默认网关和 DNS)打包发给这个设备,相当于领导给新员工安排工位。这段安排也有一个非常洋气的名字,叫做 Offer。 Request 接下来的事情就非常简单了,当设备收到路由器发出的配置信息,并且决定套用这些配置,会再次答复路由器,相当于接受领导的安排。这段答复同样有一个很洋气的名字,叫做 Request。 这里要注意一点,如果局域网内有两个以上路由器,并且这些路由都开启了 DHCP 服务,那么它们在收到新设备的广播后,会同时给这个设备发送配置信息。当设备同时收到多个配置信息,会优先回复最先收到的那个。因此,为了避免网络混乱,即使你家里有多个路由器,也最好只开启一个 DHCP 服务。 ACK 回到正题,当路由器收到设备的肯定答复后,就会再给设备回个话,表示占位成功。这时,设备会根据路由器下发的 IP 地址、默认网关和 DNS 服务器,自动配置自己的网络,实现成功联网。路由器的这个回话,叫做 ACK。 解答问题一 说到这里,我们就解决了视频开头提到的第一个问题: 为什么明明插上了网线,却打不开路由器的后台? 这里有两种可能: 1. 你的路由器没有开启 DHCP 服务,你的电脑没有收到路由器下发的 IP 地址。 2. 你的路由器开启了 DHCP 服务,但你的电脑之前设置了静态 IP 地址,而这个静态地址和路由器的地址,不在同一个网段。 ...

2022-05-18 · Mason

利用 Home Assistant 搭建智能家居中枢

背景 随着智能家居的日益普及,各大互联网巨头纷纷进场,导致智能家居的平台和品牌越来越多,且各个平台和品牌间的产品无法互通。例如,你无法用米家的智能开关来控制 homekit 的智能灯,除非你的产品支持双平台,但目前同时支持两个以上平台的智能家居少之又少。 Home Assistant(以下简称 HA)很好地解决了智能家居平台不互通的问题,它是一个开源的智能家居集成平台,可将各个常见平台的产品接入,并通过网页、手机app等多种客户端统一操控,实现真正的「万物互联」。并且最重要的是,这么好用的工具不仅支持 Windows、MacOS、Linux 等多种操作系统,其本身也是开源免费的,并且其极高的扩展性也为爱折腾的数码爱好者提供了全新的研究对象。 通过 Docker 部署 HA 容器 正如前文所述,HA 支持多种操作系统,但如果我们打算将其作为 7x24 小时待机的智能家庭中枢,那么最好的选择就是 Linux 系统,因为它可以运行在诸如树莓派这类低功耗的设备上,随时准备着为我们提供服务。 提到 Linux,我们就不得不提 Docker,它是一种兼容性极高的容器系统,可以适应几乎所有 Linux 环境,做到即装即用。今天,我们将着重介绍通过 Docker 容器部署 HA 的方法。 我的这篇文章详细介绍了 Portainer 这个非常好用的 Docker 管理容器,由于每位读者的系统环境不尽相同,因此本博客往后介绍的所有 Docker 容器安装,不再拘泥于群晖、威联通或者 Unraid,而是统一通过 Portainer 进行。 Portainer 本身的安装可以参考上面提到的文章,本文不再赘述。要安装 HA,我们首先需要登录 Portainer 后台,然后进入本地终端界面,也就是 Local,接着点击左侧的 Containers,进入本地容器管理界面。 点击 Add container,创建一个新容器,Name 随便填,Image 写 HA 官方提供的映像索引 homeassistant/home-assistant:latest,Always pull the image 可以打开,这样以后每次修改容器配置,都会从服务器重新拉取最新的映像。 接着点击下方 Advanced container settings 中的 Volumes,进入目录映射选项卡,点击 map additional volume 按钮新增一个目录映射,右侧的映射方式选 bind,container 里的目录只能写 /config,这是 HA 配置文件的所在目录,host 上的目录可以根据自己需要填写。 ...

2022-04-09 · Mason

与苦难共存,与希望共生

可能并不存在颠簸不破的传统。早在五年前,老家的除夕夜还得在持续不断、直至破晓的爆竹声中度过,但在政府的“大力倡导”下,短短几年间,这一延续了上千年的古老传统,便已经烟消云散了。而此时的我,就在这寂静的除夕夜里,独自回忆业已过去的2021,带着一如往常的“辞旧迎新”的仪式感。 过去的一年,我与世界都活在新冠疫情的余波中,逐渐放弃了“战胜”疫情的幻想,转而思考如何与病毒共生共存。4月中旬,我结束了漂泊于深圳、重庆和南京三点之间的律所实习,并在急性中耳炎的痛苦中享受了一个月的闲暇时光。6月的毕业季随风而逝,而我又辗转来到杭州,正式开启了职场社畜的生涯。 作为一个处处与北上广对标的“新一线”城市,杭州早已失去了昔日的中古风情,转而成为一个充斥着铜臭味的暴发户聚集地,在高歌猛进的基建开发与乌烟瘴气的互联网风潮中寻找着自己的方向。在这样一种“淘金热”似的奇特氛围中,就连那些“中”字头的所谓央企,也不得不开始鼓吹“创业精神”。 我向来不喜欢这样的风气,因为一切看似蓬勃发展的景象背后,都是对个体身心的极致剥削,何况高楼之下,衰败的基础早已奠定。对于像我这样初尝过开放与自由滋味的90年代人来说,文明的衰退是肉眼可见的。而与文明衰退相伴而生的,则是深深的不适与悲观。 好在不景气的大背景下总会存在个体的逆势好转。2021年,我终于在父母的帮助下买到了人生的第一套房,并努力用自己的劳动所得支付了装修费用。在不久的将来,我也将与张老师步入婚姻殿堂,努力承担起家庭责任。这可能是在普遍猥琐的大时代里,所谓“天生骄傲”者的最后一丝倔强的念想,即“通过干干净净地挣钱,让人相信干干净净地挣钱是可能的”,尽管当初说这句话的人,现在成了抖音带货主播前三。 我始终相信,对于人类而言,受苦是必修课、幸福是选修课,这就是为什么我会对他人遭受的人生无常缺乏同情,因为从广义来讲,每个人都苟活在无常之中。但我同时又相信,人是可以通过后天努力,将无常之外的苦难消灭殆尽,例如通过个体的团结与努力,排除体制的恶,让暴力与特权无处容身,在无常的世界里创造有限的公平。 壬寅年伊始,冬天确实已经过去,春风也确实即将吹拂。纵然2021充满转机,但请不要忘记这片土地上正在发生的种种苦难,不要忘记那一度令人愤怒、令人愤懑、令人作呕的罪恶与不公。我还是我,还带着是非观、带着常识与敬畏心过着自己的人生,只是因为无处不在的权力倾轧,大声疾呼变成了阴阳怪气。但愿只要荧光不散,世界就还有救。

2022-02-01 · Mason

利用 Portainer 实现 Docker 端 Jellyfin 硬件解码

原理及环境检测 随着版本的不断迭代,Jellyfin 已经逐渐超过 Plex 和自家兄弟 Emby,成为用户数量最所的个人媒体管理方案,这不仅因为它的所有功能均为免费,更是因为它的源代码完全开源,具有极高的维护与拓展空间。 不论用于运行 Jellyfin 的具体是哪款操作系统,只要该系统是基于 Linux,我们就可以通过 Docker 容器来实现极为简单且方式一致的部署。但相比于原生套件,Docker 有一个显而易见的缺点,即无法直接调用各类系统资源,核显驱动就是其中之一。 要让 Jellyfin 的 Docker 容器实时调用核显驱动(也就是人们常说的开启硬解),要满足两个条件: 拥有支持视频解码的核心显卡,且核心显卡的驱动程序运行正常; 将核显驱动直通给 Docker 容器,并赋予 Docker 容器调用该驱动的权限。 对于系统是否满足上述第一个条件,可以通过以下方式进行检验:首先用 ssh 工具连接到服务器,确保登陆 ssh 的账户拥有系统管理权限,再输入以下命令: ls /dev/dri 如果返回的结果为 card0 renderD128 ,那么恭喜,核显驱动运行正常,硬件系统满足视频解码的基本条件。接下来便是将 renderD128 这个核显驱动直通给 Docker 容器的方法。 为什么必须用 Portainer? 无论是群辉、威联通还是 Unraid,市场上绝大多数 NAS 系统都提供了图形化的 Docker 容器管理工具。但无论上述哪一个,都不支持核显驱动的直通功能。群辉的 Docker 套件无法编辑容器的系统资源参数,威联通的 Container Station 干脆无法编辑已经创建好的容器。 这里所说的“直通”,其实是将 /dev/dri/renderD128 这个驱动文件映射到 Docker 容器的相同位置。这一点利用命令行可以非常轻松地实现,即在 Jellyfin 容器的拉取命令中加入下列参数: --device=/dev/dri/renderD128 \ 因此,要快速拉取并创建一个开启硬件解码的 Jellyfin 容器,只要在 NAS 的命令行界面输入以下命令即可: sudo docker run -d --name jellyfin \ -v /share/Container/Jellyfin/config:/config \ #冒号左边为存放配置文件的目录 -v /share/Container/Jellyfin/cache:/cache \ #冒号左边为存放媒体缓存的目录 -v /share/Media/:/media \ #冒号左边为存放电影文件的目录 -p 8096:8096 \ #web界面访问端口(http) -p 8920:8920 \ #web界面访问端口(https) --device=/dev/dri/renderD128 \ #映射核显驱动 --restart=always \ #重启策略 jellyfin/jellyfin 但对许多轻度用户来说,命令行不仅不便理解,也断绝了后续对容器进行修改和自定义的空间。因此对于绝大多数日常用户来说,我个人强烈推荐使用 Portainer。它本身也是一个运行在 Docker 容器里的程序,但它拥有强大的 Docker 管理功能,是目前市面上功能最完善的网页端 Docker 容器管理界面。 ...

2021-09-09 · Mason