Skip to main content

5 posts tagged with "Others"

View All Tags

C 语言的高阶函数

· 16 min read

什么是高阶函数?

这个概念来自于函数式编程,高阶函数是指至少支持以下特定之一的函数:

  • 将一个或多个函数作为参数
  • 返回函数作为其结果

现代的高级语言几乎都支持这一特性,如 Go、JavaScript、Swift、Kotlin 等。

C 语言本身不支持高阶函数,但是可以通过函数指针来达到这一效果。

Docker部署 Ghost 博客

· 7 min read

Ghost 官方并没有提供 docker 镜像,是社区制作的。

本次实验环境为:

  • VPS: 2 核 CPU,4G 内存,8M 宽带

  • Linux: Ubuntu Server 20.04

  • Docker: v20.x

  • Ghost: 5.x

Docker Compose 配置

Ghost 支持两种数据库,本地开发默认 SQLite,Release 默认是 MariaDB。MariaDB 是 MySQL 的一个分支,完全兼容 MySQL。

本次部署采用 MariaDB,先创建一个空目录/home/ghost-blog,然后在ghost-blog创建一个docker-compose.yml文件。

【译】Swift/OC/C++/Rust/Vale 等编程语言的弱引用实现

· 18 min read

本文翻译自 Vale 核心团队的 Blog,Vale 是一门全新的编程语言,特点是快速、安全、简单。

弱引用本身就很奇怪,本文是收集了一些常见的编程语言对弱引用的实现方法。我们的目标是找到最佳方法用于 Vale,以符合其快速、内存安全和易于使用的目标。最后,我们制定了一个全新方法。

弱引用有什么用?

大部分共享所有权的编程语言中,如 Python、Swift、Obj-C、C#,正常的引用是"strong"的,即我们常说的强引用。只要还有一个强引用指向对象,那么对象就不能被释放。当最后一个强引用消失之后,对象被释放。

在引用计数的语言里,如 Swift,当不再有强引用指向对象时,能够立即通知删除对象。在跟踪垃圾回收的语言里,如 Java,解释器会通过事件的方式通知删除对象。

相对于强引用,我们还有弱引用,类似于一个快捷方式或者软链接一样,不会对对象进行保活。目标对象被释放时,他们会变成 null。

我们知道强引用容易触发“循环引用”的问题,导致对象无法被释放,最终内存泄漏。这时我们可以引入弱引用打破这个循环,例如 Swift 里面的[weak self]。我们还可以通过弱引用来判断一个变量是否还存在,如果存在还可以继续后面的逻辑。

SIP协议入门指南

· 59 min read

前置声明:本文是本人关于 SIP 资料的一个梳理结果,80%的内容都是摘自各个参考资料的一部分,20%是自己在 12-14 年间 SIP 相关工作的理解感悟,然后根据自己拟定的目录大纲进行整合。本文所有版权不归我,如有侵权,请告知,必删。

为什么要写这么一篇文章?

我司(Legrand)核心产品是楼宇视频对讲设备,在业界的名气还不错。

视频通话或者视频会议技术栈通常是 SIP 标准协议,我们当然也不例外。

自从我专做 iOS 开发之后,我就很久不玩 SIP 了,但是这些 SIP 的东西还是没有完全忘记。最近领导给我们开了 Q2 业绩会,提出老旧系统改造,包括 SIP Server 升级,NAT 打洞啊,目的是为了提高系统的稳定性,节省服务器的资源开销。

这些工作跟我没啥关系,因为我不做服务器,但是勾起了我多年的回忆。随即产生一个想法,就是给当年完全不懂 SIP 的自己写一篇入门文章,当做是对自己过去工作、技术的一个总结。

OK,废话不多数,正文开始。

我关注的技术大会

· 7 min read

最近年终总结需要写一些外训的项目,实在不知道咋写,就把我这几年都会一直保持关注的技术大会罗列了出来。

WWDC

苹果开发者大会,我已经连续关注 8 年了。按照惯例,苹果会在加州选择一个地方来举办直播,但这两年因为新冠疫情,改为线上发布会了。

有时候会在大会上发布一些硬件产品,但软件才是主角。

大会分为几天进行,第一天会有一个 Keynote 演讲,大概 2 小时左右,这个演讲里会介绍 macOS、iOS、watchOS、tvOS 等系统更新内容。

之后今天会连续发布各种开发类主题演讲,当然,我个人比较关注的是偏向 iOS 方向,比如新增的 Framework、API 变化、Swift 更新内容、Xcode 更内容等等。最重要的是会讲解一些开发实践,比如 2021 年的“Use async/await with URLSession”等。

另外,最近 3 年,苹果对视频增加了中文字幕,这对很多英文不是很好的同学来说就很给力了。