Hi,好久不见。本期间隔时间稍微长了一些呀,因为最近都比较忙,工作也比较忙,自己的小项目也遇到了些困难。不过好在方向都是好的,做自己愿意做的事情,总是快乐的。
这段时间我听了几期感觉还不错的播客,推荐给大家:
说起来,大家最早是什么时候开始听播客节目的?我印象中自己听播客的顺序大概是《科学脱口秀》、《友的聊》再到 李如一老师 及 [IPN] 的节目。
macOS 因为命令行友好,Unix 环境,以及相当不错的 GUI 体验而被广大开发者推崇。反观 Windows,无论是 CMD 还是 PowerShell 对于开发者来说都算不上优秀。不过随着 WSL (Windows Subsystem for Linux )的推出,微软通过子系统的方式,为 Windows 开发者带来了完整的 Linux 的体验。
Windows Subsystem for Linux 是一个非常有趣的产品。对于开发者而言,通过 WSL,可以很方面的调用 Linux 上的各种命令,无需在额外安装 [Cygwin] 之类的为 Windows 提供类 Linux 环境的软件,抑或维护单独的虚拟机环境。只需开启 WSL 功能,再选择自己喜欢的发行版本即可。
在 2001 年,[时任微软 CEO 的鲍尔默称 Linux 是癌症]。那时的微软主要业务是 Windows 和 Office,这些商业软件与免费的开源软件是直接的竞争对手。
在微软现任 CEO 纳德拉上台后,「云为先」的战略指导下,微软逐渐转型为云计算公司,Azure 的 CTO [Mark Russinovich] 曾表示,Azure上运行的虚拟机有四分之一是 Linux 操作系统,在云计算这个领域,开源和 Linux 几乎是唯一选择。时间拨回到2015年,微软将自家的 .NET Core 带进 Linux 家庭,[纳德拉喊了那句 「Microsoft loves Linux.」,并且之后微软真的发布了自己的 Linux 发行版。]
从2001年到2015年,微软将 Linux 称为小偷转变为公开示爱,这中间是移动互联高速发展的十年,也是微软迷失在移动浪潮的十年。 Windows CE 到 Windows Mobile,再到 WIndows Phone,微软在用互联网几乎没有胜战。而这十年, Google 却凭借基于 Linux 的 Android 系统成为了与 iOS 分庭抗礼的操作系统。免费开源,占领市场的行为从 Linux 之于云服务到 Android 之于移动互联网都得到验证,很难说这些事实没有启发到微软。得益于 Windows Subsystem 的支持,最新推出的 Windows 11 也能够支持 Linux 的特别版本 — Android 软件在其中运行。
(img)
本期设计想聊聊这位艺术家,Hopper 最著名的画作当属于 1942年 创作的《夜游者》,最近上映的[《新蝙蝠侠》]这最后找到谜语人的一幕,在构图上就能明显感觉到致敬这幅名作。
(img)
“最切中要害的辛酸,不停重演的美国孤独感的浪漫形象。”
《夜游者》油画作于1942年,这一年日本偷袭珍珠港,美国向日本宣战。城市中的人们所能感受到的就像画中被夜晚放大的情绪 —— 不安与不确定。繁华的都市生活似乎就在身边,街道与室内的灯光的强烈对比,画中人眼神都自顾自的看着各处,没有喧闹没有嘈杂有的只是能够感同身受的不安。
Hopper 的画作以描绘寂寥的美国当代生活风景闻名,建筑、人与光影是 Hopper 绘画的重要主题。就像中国的写意山水一样,Hopper 的画作强在构建一种「氛围」,这种氛围是能够让人沉浸其中。
一些关于 Hopper 的事实:
更多关于 Hopper 的信息:
之前团队的 [CI/CD] 都是在 GitLab 上跑的,最近因为种种方面考虑,我们把主要的代码仓库迁移到了 GitHub 上,自然的 CI/CD 也是要做迁移的。前后端部分,因为都是 Typescript 大家都比较熟练,没有遇到什么问题。这里可以展开介绍一下 Flutter 部分的。
CI/CD 就是通过命令行工具,完成项目的构建的自动化流水线。在这里我们会用到的命令行工具主要是:
如果对上述工具不熟悉,可以参考给出的链接文档。
GitHub Action 提供了 Ubuntu、macOS、Windows 等系统的虚拟机运行环境,最需要在 runs-on
中注明即可,在费用上,GitHub 保持一贯的大度,开源项目是免费构建,私有仓库提供 2000 分钟的免费时长,超出部分将收费。收费标准根据不同类型的虚拟机[收费不同],其中,macOS 是 ubuntu 的 10 倍收费…
在这个流程实现上,主要参考是:
并没有通过 Fastlane、Jenkins 之类的第三方 CI\CD 工具。所有过程都只需要 GitHub Action 即可完成。
具体代码部分可以参考这个项目:👉 [https://github.com/damienaicheh/demo_flutter_github_actions]
当然也可以参考我的项目:👉[https://github.com/hwangdev97/flutter-github-action-build-to-testflight]
其中,相对而言比较复杂的其实是证书相关的知识。其中包括:
.P12
证书:从 keychain (钥匙串)中导出的文件provisoning_profile
,从 Apple Develop 后台到处的文件APPSTORE_API_KEY_ID
、APPSTORE_API_PRIVATE_KEY
、APPSTORE_ISSUER_ID
除了证书文件,这里还有一件事就是自动升级构建版本。
同样可以参考:[Manage your mobile application version automatically with GitHub Actions]
使用 extract-version-from-tag-action
这个的Action,既可以在 git tags 中获得MAJOR \ MINOR \ PATCH
等变量,以及 NUMBER_OF_COMMITS
( commits 的次数)NUMBER_OF_COMMITS_SINCE_TAG
(上一个 tag 到目前的次数)这几个变量信息,就可以用于设定版本提升了。(该项目代码里我们采用了修改 info.plist
的方案,而非直接读取 flutter 的版本号,这里大家可以自行斟酌)
最后,发送到 TestFlight 之后,还会发送一条通知消息到飞书。
题外话,最近一直在招聘 Flutter 开发,明显感觉原生开发很多都开始往跨平台方向转,并且新人很少,反之前端开发还是挺多的。
Hwang 📝 12月18日 📍 杭州