2023.12.14 更:mac 14.2 版本,已经完全解决了中文输入法的问题。
2023.10.03 更:采用 twitter 网友的办法,我又换回系统输入法了。详见:https://x.com/hai_lv_/status/1704597086346649778?s=20

Mac 上原生的双拼输入法,有时候间歇性的卡死。在网上找了不少办法,均不能很好的解决。
我对原生输入法还是有不少感情的。自从 Mac 和 iPhone 支持小鹤双拼后,就迁移到了原生输入法,到目前也有很多年了。

这次把 Mac 侧迁移到 Rime,也尽量和原生的体验保持一致。鉴于 Rime 本身配置较为复杂,这里把自己使用的精简版做下记录。

体验说明(和 原生 的输入方式保持一致,包括中英文切换方式):

  1. 使用 CapsLock 键作为 英文 和 中文 的切换键。
  2. Rime 仅仅有 小鹤双拼 的输入能力,其他输入法包括英文均做了阉割。
  3. 各种类型的符号输入,和原生保持一致。还有 半角、全角、生僻字、Shift 快捷键 等。

基本上,就是无感切换了。

配置,都已经处理好了。真要配置这些细节,还是挺花费时间的,我前后共计花了 4-5 小时。
如果你和我的输入法使用习惯一致,建议直接拿去用,不要想着二次配置了。毕竟这只是工具。浪费时间不值得。
预计 10 分钟以内,可以完成本文配制,顺利使用 Rime 的小鹤双拼。

最近难得休了一次长假,计划和家人出去旅游。近十几年来,基本没有什么旅游经历。如果公司团建也算旅游的话,那也可以算增加一些经验值。
老婆说一直想看海,于是趁着旺季,把山东的威海和青岛逛了一圈。

简单记录一下威海和青岛两座城市的备忘,给有缘人。
威海主打的就是海,政府也对旅游提供了较大的支持,建设了一个环海公路。
去威海旅游,一辆电瓶车就可以解决一大半行程。有很多租电瓶车的地方,60 元 / 天。
沿着环海公路,可以直接从国际沙滩骑到海上公园,6 小时可以玩完,整个旅途都适合小孩子。
住的话,一定要选择在韩乐坊附近,最好距离韩乐坊 500-1000 米以内。这个位置距离海边也近,晚上有比较多的活动选择,尤其吃喝方便。
华夏城那里有一个小孩子的户外娱乐场所,非常棒。玩累了可以带孩子去耍,只在白天开放。

对于生活的记录,很多人已经完全依靠照片了。这些年手机和移动互联网起来后,生活记录一个在照片,一个在社交互动平台。
但是这有很大的局限性,通过这些,是没法把一个过程给串起来的,会出现很大篇幅的上下文缺失。
这和学习中的知识体系很相似,学习不能想到哪学到哪,而应该成体系。书、专栏等有章节的知识学习,才能够对一个方向有较强的认识。

在视频、照片、文字三种传播属性中,文字的穿透力是最强的,所以洗脑一定得依赖软文。
文字,是最能够全面记录一段过程的。很多人到了一定年纪,会想着出书,以留下一些东西,而不是出一个摄影集或者其他。

现在也很少人写日记了,我本人也有七八年没写日记了。前老板说,离开老家出来工作后,就把日记都给锁在了小屋子里,现在也很多年没写了。
日记,最能记录一个人的一生。只是在匆忙的工作生活中还夹带隐私,都不方便写了。

最近学习回顾了几门高级语言和周边工具。这里做个小总结,学习暂时告一段落,以后会在需要的时候再捡起来。

Swift:

Swift 这门语言,真的是大杂烩。集合了不知道多少语言的混杂体。
Swift 语法都觉得似成相识,比如 范型、异步、多线程、函数编程、闭包、下标、嵌套、元组、虚函数。不过这些能力都是一门高级语言本该支持的,也无可厚非。
后起的语言,的确是有后天优势的。很多语言都有历史遗留问题,比如 python 为了解决作用域问题,弄出来 global、local、nolocal 这样反人类的设计。

值类型和引用类型 (struct /class) 借鉴的 C++,详见之前的文章:Swift struct (值类型) 与 class (引用类型) 区别及三种传参机制深刻关系和使用

元组,借鉴的 C++ 的 tuple。这是真好用,尤其在写算法的时候,可以省去不少逻辑复杂度。

属性包装器 propertyWrapper 借鉴 Java 的注解。

函数调用中的虚函数,借鉴 C++ 的虚函数设计。不过在函数调用这个问题上,也没有那么多选择,要么静态编译直接派发,要么虚函数存储方法列表派发,要么像 OC 一样动态派发,要么就得和 Java 这类一样靠虚拟机动态解析 (JIT 是直接派发)。本质就是找函数指针的过程。

2023 高考过去了,这两天老家也开始农忙了。体验过农忙的学生,一般都想着靠读书改变命运,不愿面对面朝黄土背朝天的广袤天地。
农村,是一片复杂的土地,无数的人想要离开,最后还是回到了那里。高考,就是一个敲门砖,离开农村的那块垫脚的砖。

在这片困乏饥饿的神州大地上,学历不一定代表未来,但没学历,是真的没有未来。
有学历,依旧会承受疲劳工作、生儿育女、职场危机、生活一地鸡毛、老年浑噩。
没有学历,对有学历所要承受的一个都少不了,只会更刻骨和铭记。还要承受低能、工作学历卡口等歧视。
所以,还是考的好一点吧。很多人都能上大学,但 985/211 和普通本科,是完全不一样的,本科和学院也是不一样的。
如果考的不好,请复习 1 年甚至 2 年,不要失去耐心。
多年之后,会发现上学是好轻松的活儿。上学也是上班,工作的好点,省去了以后多少的精神崩溃。

2024.01.03 更:Vision Pro 已经在美国发售,很多国内的人也通过代购等方式拿到的设备。
2024.02.26 更:到目前为止,没看到 vision pro 爆出来亮眼的消息,这一个版本是完了,挺失落,科技滑铁卢。游戏和办公,都没亮点出来。比如游戏没有双人合作通关,办公也么看到啥惊喜。想着至少健身环大冒险、神庙或者网页浏览,都能出一些不一样的体验。目前看完全没有。

Apple WWDC 大会上,发布了 Vision 设备,24 年初向美国售卖,3499 美元。预计不久也会在国内市场透出,加上税应该在 2.5W 左右。
在大会没有开始前,有不少人已经从不少渠道了解到了这款设备的一些信息。在正式宣传和媒体体验后,其实大家都是很吃惊。
一来功能非常实用刚需,
二来完成度非常高,不是卖残缺品 PPT 的。

简要总结几个点:

  1. 视前屏幕是不透明的。即戴上 Vision 后,眼前就是一片黑。
  2. 内置的 M2&R1 芯片和 12 枚摄像头,可以将内外部的画面,在视前屏幕的内外屏上 10ms 延迟内实时展示。即内部看到的是外部建模后的投影,外部也能看到内部的眼睛区域,也是投影建模后的。
  3. Vision 能绘出非常大的视觉区域和 3D 视觉效果,突破了显示器等外接设备的物理限制。
  4. Vision 的摄像头和传感器,通过对眼部、手部、身体的感知,可以比用户更早一步的知道用户想要干嘛。已经能够通过 虚拟键盘 / 手势 / 眼势 做到输出和输出。
  5. Vision 有自己的操作系统,和 Apple 生态可以互通。即可以在 Vision 上自行开发应用,现有的 Mac/iOS 应用也可以在 Vision 上使用。
  6. Vision 覆盖了 游戏、办公、生活娱乐、出行 等多个方面,即年龄段、时间段,不受限制。

我对 Vision 非常满意的地方,在于它从另一个维度,实现了我的一个渴望。
我一直都希望有一个非常大的屏幕,可以用来浏览网络信息、办公。
但是这样的屏幕因为像素和空间尺寸等原因,对我来说其实无法满足。我还一直很有遗憾。
真没想到,Vision 在虚拟现实里面做到了。

左耳朵耗子,原名陈浩,很多人称呼耗子哥。
互联网布道者,骨灰级程序员。
因心梗离开了。

我受到不少耗子哥的影响,对其博客中的 VIM 教程尤其深刻。
他的很多观点,都具有过来人深刻的教诲。

早上看到消息,本以为是假消息,毕竟这是一个没有真消息的年代。
但是没过几分钟,查证了,也沉默了。
他生前影响了很多人,他的离开,让整个中文技术圈轰动。

致敬耗子哥。

关于网络相关的历史文章中,很多次提到 Socket 套接字的重要性。最近看到 ICMP 的一些知识,发现和 Socket 有非常强的依赖。于是对 Socket 和周边,再做一次逻辑的梳理。
本文会对 ICMP 查询 / 差错报文 如何 NAT 网关写入 Socket 接收缓冲区进行具体阐释。

Socket、文件描述符、API、套接字

Socket 在系统内部创建后是唯一的。和 源 ip (本机 ip)、目标 ip (服务端 ip)、源端口、目标端口 有一定的绑定关系,根据具体协议而定。
通过这种绑定关系,可以将对应的数据包写入到对应的 Socket 接收缓冲区中供上层读取。
如果绑定关系出现 1-N,即一个数据包找到了多个 Socket,那么数据包就会往多个 Socket 中都写入一份,在后面 ICMP 中做分析。

Socket api,各个语言都有上层实现,底层都是对 Socket C Api 的封装。就是大家知道的 gethostbynamebind/connect/write/sendto 这些。

Socket 文件描述符,不是真的文件。在 Unix 下习惯对资源进行抽象,即一切接文件,包括内存数据。Socket 文件描述符是内核内存区域的指针。

套接字,就是指 Socket。一般也就是指 api 或者 文件描述符 其中的一种,看具体场景。

Socket api 可以直接操作传输层 (TCP/UDP) 或者网络层 (ICMP),从 Socket 往下 (传输层 / 网络层…) 开始,都属于操作系统管辖。
所以 HTTP 经历很多版本的优化,依旧差强人意,就是因为核心层 TCP 不好改动,需要系统升级。最后通过 UDP 做上层改造来实现 QUIC。

人们都对个人隐私比较在乎,但是对个人互联网隐私比较忽视。
前些年还流行一句话:在互联网上,没人知道你是一条狗,还有那幅经典的狗在屏幕前的画。
这句话旨在强调 “用户能够在互联网上以一种不透漏个人信息的方式发送和接收信息”。但是很多人却理解为:在互联网上很难留下踪迹,没人知道狗是我,或者我是狗。

只要在网络上行动,就一定会留下痕迹。只是痕迹留下的多少,以及持有痕迹的一方愿不愿意向外透露而已。
说网络是虚拟的,是从产品形态上来描述的。但网络本身并不是虚拟的,每一个网页、消息、短视频,都是要通过数据包进行电信号传输的,是真实存在的实体。
因为数据包是实体的,所以在互联网行走,一定会有痕迹。

最近本网站的 HTTPS SSL 证书过期了,于是去域名管理平台重新申请了一下。
无意中通过 dig 发现,网站的 DNS 解析 IP 一直是 198.18.1.xxx 这些。因为域名是 CNAME 映射到 github 的,所以又 dig 了一下 github 对应的 ip,发现也是 198.18.1.xxx
从哪个角度来看,至少都有些问题。使用的 DNSPod 域名解析平台,dig 自定义域名和 github page 域名,怎么也不能在同一个网段里。
搜索了一下才知道,原来 ip 198 不是公网 ip,之前以为内网 ip 是 10/192 这些,知识还是有局限。

198.18.0.0/15 198.18.0.0 – 198.19.255.255 131,072 专用网络 用于测试两个不同的子网的网间通信。
https://zh.wikipedia.org/wiki/ 保留 IP 地址

在家庭网络中 dig 互联网的域名,为什么 dns 解析成了 198.x 呢?最后发现是最常使用的网络软件 Surge 引起的。
Surge 这些年给了我很多帮助,很感谢。特意开此文,讲解 Surge 工作原理,以致敬 Surge。
本文会对 Socket、Wireshark、网络系统代理 (http/s、socket5、POSIX)、网络网卡代理 (VIF)、VPN、DNS、DOH (SNI) 等知识点进行描述,以更加全面的讲解 Surge 的工作原理。

致敬 Surge

Surge 是一款非常强大的网络调试工具,很多人都对它极为陌生,主要原因是它的售价过高,宣传和使用的人也不多。
每一个 ITer 都应该使用它。网络在 IT 工作中时刻都需要关注,如 DNS 解析、网络流量查看和 hook、网络代理等等,这些 Surge 都可以做到。是发现和排查网络问题的神器,也可以协助工作。
这里会先介绍下 Surge 的使用,或许你会感兴趣。如果以后 Surge 帮助到了你,那也是一件幸事。

0%