Blog logo

Blog logoJustZht

2021.3.17

 • 

好莱坞电影里老是有那种觉得人类罪恶深重需要自我毁灭来达成和平的反派,或者这种哲学的变种,离奇的是我还挺吃这一套(好像是个很危险的想法),虽然电影里的反派的理由都很 cringy,充满着极端环境组织那种何不食肉糜的自我欺骗,但在某种程度上,我是能接受这种离奇的学说的,也能理解类似于三体里降临派的想法,只不过三体已经太出圈被过度解读了,就不提了。
当然自我厌世和想要灭绝人类还是两码事,只是我越发觉得这个世界越来越无聊,超音速客机和登月都是很久以前的事情,计算机倒是发展的挺好,但作为一个学计算机的我看到的还是转码和内卷。我也不关心国家和种族,也无法理解因为这种诞生时无法决定的属性而聚成群互相讨伐的行为,但作为个人又总是卷入宏大叙事里没办法逃离,如果可以的话我宁愿去月球活在真空里,至少地球人不会说我吃着地球的饭砸地球的锅。

2021.3.11

 • 

上次说三月份要去理发店来着,结果前几天又自己剪了下,这次就理的有点劳改犯的感觉,估计短时间内也不会出门,就先这样好了。
夏季实习算是确定了,会去苹果当 Bluetooth Software Intern,不过流程还没走完,所以我也没有很能放下心来。
上学的一个好处就是可以忙着学东西而不用关心到底业界在搞什么幺蛾子,也不用天天担忧自己被什么奇怪的 hype 落下。因此虽然总是觉得躁动,但目前的状态也算安稳。

2021.2.25

 • 

明天考试,下周一考试,下周四考试,可见的两周内博客可能更新更少了。
面试有一家进展不错,其他的要么是面完无消息要么是简历就拒绝了,还有几个要 OA 的我现在也没时间做。不管如何暂时有家靠谱的在走进度,心态稍微好了点。
听了 Soulection 491 和 492,质量都很高。看了会 Mr Robot。
给自己剪了头发,脑门后面剪的很草率,不过 Zoom 上看起来还算正常,只是有中分的倾向。等三月份去理发店打理下好了。

2021.1.30

 • 

在匹兹堡也算是呆了两周了,下周一就要开学,还有很多事情没办,不过总算是安顿下来了,最近还去学校测了核酸,一切也都正常。

2021.1.16

 • 

到匹兹堡了。
从新加坡到东京再到休斯敦,天都是晴的也都挺暖和,因此心情也一直挺好,直到飞机降落到阴天的匹兹堡,推着一个大箱子在冷风里等机场线 28X 等了二十分钟,顿时觉得自己是个傻逼。之后又淋雨推着箱子走了五分钟住下了 Airbnb。休整下后跑去看了一个长租公寓,在那里要退租的学长也很友好,没什么问题也敲定了搬入的时间,之后因为一直坐飞机头晕晕的,就回到了 Airbnb 补觉。
入境的时候海关的 Officer 看到 i20 说 wow carnegie mellon you are so lucky,觉得还挺开心,大家也都挺友好,想着到学校后把该做的事情都赶紧办了。只是有的时候自己很容易就低落或者暴躁起来,然后就什么也不想办,还是要多勇敢起来。


在羽田机场的时候看到有白色恋人的手推车孤零零地停在转机口边,还挺好玩的,所以拍了一张。
IMG_1973

2021.1.13

 • 

上周去面签美签,结果一下子就过了,第二天就让我去取护照。之前在日本比赛时认识的新加坡一对夫妇知道我在新加坡后也很好客地带我去吃东西看灯光展,期间还聊到新加坡哪里有电子小商品卖,之后去 Sim Lim Square 买了几个 NFC 贴纸测试新功能。之后还很幸运地见到了 Jaskni,聊了些天南地北的东西。然后这几天一直在下雨,学校事情也开始多起来,所以大部分时间就窝在宾馆,饿了就 Grab 叫外卖吃。昨天倒是晴天,去优衣库买了用来换洗的短袖,然后到 FairPrice 买了两大瓶牛奶,今天才想起来根本喝不完。机票也定了,中转日本,周末就会到美国。
在新加坡这么长时间,觉得要是在这里工作的话倒是个很好的选择,中英文环境都有,治安和景观都很好,烟火气和商业区并存,比如在 Lau Pa Sat 吃小摊的时候周围全是高楼大厦,想来也很有趣。

2020

 • 

想看看 2019 年是怎么写年度总结的,结果发现并没有那篇文章,可能是当时在忙着投递留学申请。再往前就是 20182016 了,两年两年地跳,里面的内容也时过境迁。2016 的我,是一个现在看来幸运又有光明前途的人,对大学教育毫无信心但对自己信心满满,可能万万料不到四年后的我要去读研究生,也料不到全球疫情,料不到我会跑到新加坡中转,在 12 月还 30 度的天气中窝在小旅馆里看着窗外突然开始下雷雨,而我去洗衣房的计划也因此作罢,于是在这里回想 2020 究竟做了什么。

今年大部分时间都在等待,等待新闻,等待通知,等待变数,因此实际上没给我自己留什么真正做决定的时间,在等待的时间里也不好再去冒进做其他事情,因此只好做了几个独立 app,包括以为能火但没成功的 Metropolis,随心之作但反而命中市场需求的 Diffuse,玩票心态的 Diorama,更新到全 SwiftUI + Catalyst 的 Age Clock,以及原型性质的 Mapaper。这些 App 目前能较为稳定地一个月给我带来 500 - 1000 美元的被动收入,有些 App 的技术后面也被汇总成了 Framework,比如 UniLWP.Droid,让我可以批量生产垃圾 App 了(如果想的话)。

然而独立开发的问题之一就是需要持续投入,之二就是心理上的压力要大一些,因此我总会想要找工作,年中的时候这么想结果因为要上暑课就放弃了,年底的时候又开始慌张第一年的 CPT 实习,但因为要准备新加坡和美国的材料也没再继续。我其实对自己已经有两年没在公司干活还是很慌的,生怕别人问我这两年在哪里工作,或是后面找实习的时候发现自己已经脱节。

但好处也在这里,通过或主动或被动地失业两年,我也算是治好了自己一直想要超过自己的强迫症。我总是觉得时间紧迫,要在很早的时候就做出一番事情。但今年总算是让我明白了,有些事情只能等,没准备好就上最终只会出问题。我花了两年,以放弃大厂 offer 加入创业公司,在创业公司里又因钱的事情忿忿离职,离职后没有目标只能准备留学,拿到 offer 后因为疫情又 defer 重新申请的代价终于让自己开始接受自己其实时候未到,在那之前只用安心做自己该做的就行。

2020.12.23

 • 

到新加坡了。做了核酸阴性,因此可以自由活动。中午醒来跑去 711 办了手机卡和地铁卡,下午在电影院看了神奇女侠 1984,吃了乌冬面,又买了很甜的葡萄吃。新加坡天黑的很晚,天气又热又潮湿,让我这种从华北平原飞过去的人有种奇妙的错位感,也可能因此有些水土不服一直拉肚子。
新加坡官方的接触通知客户端 TraceTogether 目前对短期游客还不支持扫码签到,因此有的时候进商店还挺麻烦。路上说中文的人不多也不少,经常出现先说英文然后发现对方可以说中文的情况,对于我来说也挺神奇的。昨天从飞机场打车的时候大哥问我来干嘛,我说来签美国 F1,他说你是我这几天接机的第三个美国学生了,美国疫情那么严重你们怎么还要去,我只能耸耸肩,因为一时半会也没办法解释我急着春季入学是为了所谓能够实习的 CPT,而这 CPT 只是个实习许可,真正的实习我还没找仍旧虚无缥缈,更别说因为实习而可能收益的正式工作招聘。套着层层可能这个语境下的所谓在美国找工作,不管我多么奋不顾身连牙的手术都来不及做就为了赶时间来面签,在外人甚至是亲近的父母看来都只能是荒诞罢了。
个人 App 依旧没有完工。和猫猫组团开发的 Live2D 桌面也没完工。刷题也还没来得及。
感觉有的时候自己要学会收心,不管是开发计划也好,人生规划也罢,有的时候甚至连人和人之间的互相理解都不是单靠心意就能有的,人总会被推着往前走,然后不由衷地舍弃掉一部分,和想要的事情擦肩而过。
听了 何もきかないで

SwiftUI Map 获取当前地图位置

 • 

SwiftUI 在 WWDC 2020 新加的 Map 组件虽然没有 UIViewRepresentable 自定义包的功能丰富,但也可以做一些复杂的需求了,比如获取当前位置。
Map 的参数里 coordinateRegion 是一个 MKCoordinateRegion 的 Binding,地图移动的时候会反馈到 Binding 里面,不用再去想办法做类似于 WKMapView.Appearance.delegate 之类的全局 hack 了,只用声明一个 ObservableObject 然后在里面写 didSet:

final class MapConfig: ObservableObject
{
    var region: MKCoordinateRegion = MKCoordinateRegion(...)
    {
        didSet {
            print("\(region)")
        }
    }
}

有 didSet 后就可以做一些跟随功能,比如放一个 Pin 一直跟随用户拖动:

import SwiftUI
import MapKit

struct MapAnnotationModel: Identifiable {
    var coordinate: CLLocationCoordinate2D
    let id = UUID()
}

final class MapConfig: ObservableObject
{
    var region: MKCoordinateRegion = MKCoordinateRegion(center: CLLocationCoordinate2DMake(37.8, -122.5), latitudinalMeters: 5000, longitudinalMeters: 5000)
    {
        didSet {
            annotationItems = [MapAnnotationModel(coordinate: region.center)] // 替换 annotationItems 为新的带有 region center 的数组
            self.objectWillChange.send() // 提醒 UI 更新
        }
    }
    
    @Published var annotationItems: [MapAnnotationModel] = [] // 默认空
}

struct ChooseLocationView: View {
    @ObservedObject var config = MapConfig()
    
    var body: some View {
        Map(coordinateRegion: $config.region,
            interactionModes: .all,
            showsUserLocation: true,
            userTrackingMode: nil,
            annotationItems: config.annotationItems)
            { item in
                MapPin(coordinate: item.coordinate)
            }
        .edgesIgnoringSafeArea(.all)
        .navigationTitle("Choose Location")
    }
}