Swift 数据类型

Swift 的数据类型很有意思,即便是基本类型其实也是结构体。

值类型 枚举(enum) Optional
值类型 结构体(struct) Bool、Int、Float、Double、character、
String、Array、Dictionary、Set
引用类型(reference type) 类(class)
常见数据类型
  • 整数类型:Int8、Int16、Int32、Int64、UInt8、UInt16、UInt32、UInt64
  • 在32bit平台:Int 等价于 Int32;在 64bit 平台,Int 等价于 Int64
  • 整数的最值:UInt8.max、Int16.min
  • 一般情况下,建议直接使用 Int
  • 浮点类型:Float,32 位,精度只有 6 位;Double,64 位,精度至少 15 位

Ulysses 添加图片

今天在写文章的过程中,想插入两个 PDF 文件,其实是两个 PDF 格式的图片。

结果尝试了好几次都不成功,最后先将图片上传到 WordPress 后台,然后将图片的链接添加进本地的 Ulysses 编辑器才成功。

其实,WordPress 的上传图片大小的限制已经放开了,想不通为什么 Ulysses 却没法儿跟文章一起上传。

Swift 语言编译流程

Swift 这门语言编译器的后端是基于 LLVM 的,编译器的前端是 SwiftC,也就是指 Swift 的编译器。

Swift 编译器

Swift 编译器将 Swift 语言编译成 LLVM IR,也就是 LLVM 的中间语言,LLVM
的编译器后端编译成相应的 CPU 可执行文件。

关于 Swift 编译器的相关文档,详情可参考 Swift Compiler 官方文档。

通常,SwiftC 存放在 Xcode 内部:

Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc

一些常见的操作如下:

  • 生成语法树:swiftc -dump-ast main.swift
  • 生成最简洁的 SIL 代码:swiftc -emit-sil main.swift
  • 生成 LLVM IR 代码:swiftc -emit-ir main.swift -o maiin.ll
  • 生成汇编代码:swiftc -emit-assembly main.swift -o main.s

Swift 的编译流程如下所示:

让 App 闭嘴

下载完 App,第一次启动的时候,除了授权网络权限以外,其他的权限基本上都是关闭状态,特别是国内的 App,无论是什么类型,什么用途,除非是必须的功能,否则都是不授权。

这个习惯应该是从十几年前就开始了,主要是针对 App 的乱弹窗行为,特别是对于购物网站以及娱乐类网站的 App。在这一点上,可以说国外的 App 要比国内的强太多。当然,话不能说太满,毕竟没有生活在国外,所以使用的海外 App 还是有限。

仅从使用的 App 来看,像新闻类的 App,一天弹个一两次基本也就差不多了,主要是弹的都是正经内容,不会动不动就弹营销、广告消息或各种诱骗你打开 App 的消息。不过,说到这,Meta 的社交 App 确实会这么干,而且不止 App,还会利用 Email 给你发各种诱骗你登录的邮件。所以,我也基本退出了 Meta 的各种社交软件,比如删除了 Facebook,对于 Instagram 的消息提醒也是关闭的,最新的 Threads 的消息提醒也是关闭的。

又开始收藏网站书签了

差不多有将近十年时间没有用过类似收藏网站书签的功能了,最多也就是 Safari 或者 Chrome 上点击一下收藏。

近些年,除了工作开发会用到 Chrome 以外,Safari 对于日常使用来说已经足够了。所以过往的十年间,如果说仅仅保存网站链接,或者收藏文章链接,直接就用 Safari 就够了。而且,基于 iCloud 还可以做到三端同步。

这期间也尝试过 Pocket App,但还是没有使用起来,具体的原因嘛,没有功能上特别客观的原因,比如某某功能不支持之类的。但每次使用的时候,总是感觉这个 App 太「笨重」了,很多功能对我来说没有用,每次启动找个链接也不是很方便。所以日常使用过程中,打开的频率就很低,直至最后被系统自动「卸载」。

前些日子,在 Fediverse 上看到有人在用 Raindrop,出于好奇,下载下来试了一下,使用下来,还蛮契合我当前需求的,所以就用了一段时间,功能刚刚好。

这款 App 的核心功能就是书签管理,Apple 生态下可以做到三端同步,还可以备份到 Dropbox 或 Google Drive。对于个人来说,免费功能就够用了。App 启动很快,找链接很方便,不启动的时候也不会乱弹窗。不过呢,弹窗功能日常也是被关掉的,所以日常也不太感受到。

Raindrop 可以跟很多第三方 App 集成,而且还有官方开放的 API,整个生态做的很 open。

这么多年了,书签管理这个需求照理说应该很成熟了,但是到现在还在有人尝试埋坑,🤔

简单的 HTML 页面

以前的很长时间里,一直不是很喜欢那种近乎只用 HTML 搭建的静态网页,并且认为那是不愿意好好整理自己网站的表现。

最近这几个月,对此有了很大的转变,并且开始喜欢上了那种风格的页面,因为从简单的 HTML 页面看到了「返璞归真」,而不是因为缺乏审美。

不知道是什么改变了我的观点,总之很神奇。

(о´∀`о)💡

大自然的诱惑以及摄影带来的内心平静

或许是前年的某一天,在 YouTube 上关注了 Links 的频道。

自从关注之后,几乎每一期的视频都会从头看到尾,一期都没有跳过,甚至还会往前翻一翻,看看哪一期感兴趣,然后进行观看。甚至一些视频都会看两遍。

因为每次看完之后,都会让内心很平静,用视觉和听觉感受自然的魅力。不管是拍摄还是独白,都能引导我跳出喧闹的都市生活,短暂逃离世俗的烦恼,尽情体会大自然的美。

高质量的视频制作周期都不会太短,所以最近一段时间都留着没怎么看,攒了两期,希望烦闷的时候拿出来看。

希望以后有机会出去看看。相信亲眼所见和在屏幕里看还是不一样的。

修了一百多篇文章链接的感悟

感叹为什么多年前写的文章里加了那么多的链接,总共有两百多篇文章需要修。

吐个槽而已,其实有链接蛮好的,多年之后回看,可以追溯很多东西。

除了修改链接,顺便把文章的一些格式也优化了一下,比如字母和汉字之间的空格,数字和汉字之间的空格。改完之后,看着舒服多了。

改的过程中不可避免的会看之前写的内容。比如,一些曾经的朋友,随着时间的推移,很多都逐渐不再联系。人生可能就是这样,不同时期遇到的人,来来往往。

对于之前为啥「标题」不好起的原因,脑袋里又冒出一个可能的原因。之前的文章通常写的都很长,所以覆盖的内容就很杂,哪些内容可以当成标题,这其实是一个很纠结的问题。但如果把一篇长长的文章拆得很短,比如说,讲清一个问题的两三个段落为一篇小作文,那文章的标题就很容易起。

其实,最近这两个多月以来写的小作文,标题就很容易起,而且也不会花费太久的时间。

修复 md 文件链接

今天下午修复了五十来篇之前导入的 Markdown 文章。主要包括了里边的链接,还有一些没办法正常渲染的符号。比如列表符号,以及一级二级三级标题等。

还剩一百五十多篇文章没有修复,接下来会陆陆续续进行修复。

另外,虽然导入了 2012 年到 2018 年的文章,但 2018 年到 2023 年的文章还没有全部导入,只是暂时放在了 Ulysses 里。虽然我想将全部有意义但又脱敏的文章导进来,但估计又要花不少时间。

我想导进来的主要目的,第一肯定是想把自己写的东西放在网上,从时间上来看可以更连贯一些。第二呢,就是借这个机会整理一下写的内容,而且最重要的是想长期写下去,这一次,我想踏踏实实地记录下去。

其实,回头看自己的日记是一件蛮有趣的事情,特别是年头越久越有趣。那一刻的会心一笑,还有那么一点点幸福感。文章里的这个傻子竟然还没干过这事儿。

这是一个长期的工程。