Swift 的 Future 和 Promise

Future&Promise 来源于函数式语言,概念早在 1977 年就已经提出来了。其目的是分离一个值和产生值的方法,从而简化异步代码的处理。
Future 是一个只读的值的容器,它的值在未来某个时刻会被计算出来(产生这个值的行为是异步操作)。
Promise 是一个可写的容器,可以设置 Future 的值。

A Promise is something you make to someone else.(承诺是你对别人的承诺)
In the Future you may choose to honor (resolve) that promise, or reject it.(在未来,您可以选择兑现(解决)该承诺,或拒绝承诺。)

Read more   2020/9/13 posted in  SwiftUI

群辉NAS [时间返回舱] Mac Time Machine

2020/9/12 posted in  硬件折腾

【转】交叉网线和直连网线

双绞线的制作方式有两种国际标准,分别为EIA/TIA568A以及EIA/TIA568B。而双绞线的连接方法也主要有两种,分别为直通线缆以及交叉线缆。简单地说,直通线缆就是水晶头两端都同时采用T568A标准或者T568B的接法,而交叉线缆则是水晶头一端采用T586A的标准制作,而另一端则采用T568B标准制作,即A水晶头的1、2对应B水晶头的3、6,而A水晶头的3、6对应B水晶头的1、2。

Read more   2020/9/12 posted in  硬件折腾

【转】NSPredicate

2020/9/12 posted in  iOS

千兆级别网线

写这篇文章的原因是,我在使用AirDrop 传输Xcode(almost 12G)到另外一台电脑上,发现时间竟然要六七个小时。传输速率也就大概只有 2~3M每秒,这..不就是原始的USB2.0的传输速率了吗?!这让我无法接受。我能想到的比较经济又通用的方法是给我的笔记本增加一个千兆网卡拓展坞,然后使用网线连接到我的台式电脑上(查询过电脑网卡支持千兆网络),如此理论的峰值传输就有 1Gbps。

Read more   2020/9/8 posted in  硬件折腾

Wireshark 抓包 iPhone 数据包

连接手机

想抓iphone的数据,首先需要让iphone数据通过mac才行。看到网上很多设代理什么的方法,比较复杂,有的还要越狱。其实没必要。只要链上数据线,然后在mac的终端执行:

rvictl -s iphone设备id  

断开链接执行

rvictl -x iphone设备id  
Read more   2020/9/1 posted in  iOS

【转】Socket 缓冲区以及阻塞模式

socket缓冲区

每个 socket 被创建后,都会分配两个缓冲区,输入缓冲区和输出缓冲区。

write()/send() 并不立即向网络中传输数据,而是先将数据写入缓冲区中,再由TCP协议将数据从缓冲区发送到目标机器。一旦将数据写入到缓冲区,函数就可以成功返回,不管它们有没有到达目标机器,也不管它们何时被发送到网络,这些都是TCP协议负责的事情。

Read more   2020/9/1 posted in  网络基础

【转】 CocoaPods 多版本共存

在我工作的一个团队中,我们有很多关于安装 CocoaPods 的问题。团队成员拥有不同的 cocoapods gem 的安装版本,并且当有人运行 pod install 时,会将事情搞得一团糟。

我们最终不得不委托一人安装 CocoaPods,并且把工程推到 GitHub 上以供我们使用。这显然是不够灵活的,并且对于我们团队或者是委托人来说都不是一个很满意的解决方式。

Read more   2020/9/1 posted in  iOS

Publisher 的使用

2020/8/26 posted in  SwiftUI

Combine处理异步编程

“响应式异步编程的抽象和特点:异步操作在合适的时机发布事件,这些事件带有数据,使用一个或多个操作来处理这些事件以及内部的数据。在末端,使用一个订阅者来“消化”这个事件和数据,并进一步驱动程序的其他部分 (比如 UI 界面) 的运行。上面这些对于事件和数据的操作,以及末端的订阅,都是在事件发生之前完成的。一开始我们就将这些设定好,之后它可以以预设的方式响应源源不断发生的事件流。”

摘录来自: 王 巍. “SwiftUI 和 Combine 编程。” Apple Books.

Combine

Combine中最重要的角色有三种: 负责发布事件的 Publisher,负责订阅事件的 Subscriber,以及负责转换事件和数据的 Operator。

Read more   2020/8/23 posted in  SwiftUI

SwiftUI 数据流

“纯函数指的是,返回值只由调用时的参数决定,而不依赖于任何系统状态,也不改变其作用域之外的变量状态的函数”

摘录来自: 王 巍. “SwiftUI 和 Combine 编程。” Apple Books.

Read more   2020/8/23 posted in  SwiftUI

NFC 门禁卡扫盲

最近刚搬家到了一个新的小区,小区物业只给了一张门禁卡,但是物业说可以给华为手机开通门禁,其他的手机都还不支持。这我就比较纳闷了,基于这种对生活便捷性有提升的技术,我格外有兴趣。于是一顿翻查资料了解一波 NFC 门禁卡的知识。

Read more   2020/8/20 posted in  技术杂谈

【转】知乎大神对IAAS,SAAS,PAAS区别的理解

你一定听说过云计算中的三个“高大上”的你一定听说过云计算中的三个“高大上”的概念:IaaS、PaaS和SaaS,这几个术语并不好理解。不过,如果你是个吃货,还喜欢披萨,这个问题就好解决了!好吧,其实你根本不是一个吃货,之所以自我标榜为吃货,其实是为了收获赞叹式的夸奖,“吃货还这么瘦,好羡慕啊!”或者,总得给伦家的微丰找个像样的理由。

Read more   2020/8/13 posted in  技术杂谈

SwiftUI基础知识以及Xcode功能

Modifier

view modifier 分为两种类别:

  • 像是 font,foregroundColor 这样定义在具体类型 (比如例中的 Text) 上,然后返回同样类型 (Text) 的原地 modifier。

  • 像是 padding,background 这样定义在 View extension 中,将原来的 View 进行包装并返回新的 View 的封装类 modifier。”

摘录来自: 王 巍. “SwiftUI 和 Combine 编程。” Apple Books.

Read more   2020/8/5 posted in  SwiftUI

实践利用FRP实现内网穿透

2020/8/3 posted in  Linux_UNIX

使用 Gorm 创建数据库表的外键

使用约束创建数据库表的时候遇到了一个坑,先来看下文档上推荐的创建表之间关系的示例:

Read more   2020/8/2 posted in  Go

家庭NAS组网

2020/7/31 posted in  硬件折腾

链路聚合

2020/7/31 posted in  嵌入式

【转】殊途同归的iOS终端与Linux后台开发技术

前言

因为作者是从后台岗位转通道到移动开发岗位,所以深知作为一个后台开发人员对想了解终端开发技术的渴望,也明白作为一个终端开发者对后台开发技术的好奇。通过阅读本文,你会发现前后台技术之间的本质都是殊途同归的。文章重点还是侧重于讲解终端技术,后台技术没有细讲,只是涉及了对应概念。

注:本文中提到的终端都统指iOS终端

Read more   2020/7/31 posted in  技术杂谈

OC 创建对象的奇葩方式

使用OC开发了几年,看到过有人用了下面这样的方式初始化对象,当时觉得 woc !好6啊,高手啊!这什么骚操作,但是也没有问出个原理来,这次带各位一起来探索一下。

Read more   2020/7/31 posted in  iOS