GitHub Actions 是 GitHub 推出的持续集成和持续交付平台(CI/CD 平台),允许开发者实现自动化的编译、测试、部署,于 2019 年 11 月全面可用,今天就来深入拆解下 GitHub Actions 解决了什么问题? CI/CD 平台(流水线引擎)发展历史中大概有 3 波浪潮 第一波浪潮以 Jenkins 为代表,让大家广泛的接受了持续集成和持续交付...
如何建设一个用于编译 iOS App 的 macOS 云服务器集群?
现代软件开发一般会借助 CI/CD 来提升代码质量、加快发版速度、自动化重复的事情,iOS App 只能在 mac 机器上编译,CI/CD 工具因此需要有一个 macOS 云服务器集群来执行 iOS App 的编译。 今天就来谈谈如何建设 macOS 云服务器集群 购买 mac mini / Mac Studio 机器 最简单的方式就是购买一批 mac 机器,买它个 1000 台,买回...
使用第一性原理思维思考如何打造提高生产力的平台
引言 现在全社会都在搞数字化转型,从政府到企业,那么为什么要进行数字化转型呢?本质上还是社会治理和企业经营难度变得更大了。 以企业来说,转型的目标是为了实现有质量的活着,比如能赚更多的钱或者持续保持稳健运营,转型的核心是期望借助数字化技术构建一个管理体系,以应对外部环境动荡、企业竞争变化和技术更新发展带来的不确定性。 数字化转型会带来大量的研发需求,如何更好更快的交付这些需求成为一个突...
IPV6 环境下用 iPhone 访问 windows 10 远程桌面
前言 最近意外发现家里用的移动宽带已经获取到了 IPV6 地址,然后又意外发现移动 4G 也是可以访问 IPV6 的 Windows 网络情况 iOS 网络情况 2010 年开始在校园网用 IPV6, 到现在已经过去 9 年了,现在终于开始普及了 需求 我们有时候需要访问家中的电脑,如果没有公网 IP 的话,实现起来就比较麻烦 在 IPV4 环境下,IP 数量比较少,很多运...
如何安装托管在私有 GitLab 实例上的 composer 包?
composer 包安装方式有哪几种? 一般来说开源的 PHP 包都会放在 packagist.org, Composer 直接安装就行 私有包有以下几种安装方式 在 packagist.com 购买付费服务, 不用自己维护, 省心 搭建 Satis 实例, 相当于搭建了私有的 packagist.org, 需要自己维护服务器 购买了 GitHub 企业版, 将包托管在企业版...
如何使用 Markdown 写 PPT?
为啥要用 Markdown 去写 PPT? 相比 PowerPoint 更轻量, 更灵活 能够高亮代码 专注文字内容, 节省排版和制作动画的时间 用什么工具去生成 PPT? 有以下几个工具可供选择 reveal.js Hakim El Hattab 创造了 reveal.js, 他随后创建了 Slides, 这是一个使用 reveal.js 创建幻灯片的网站 clea...
Android NDK 介绍与使用示例
简单介绍 NDK 是干啥的? 全称 Native Development Kit, 允许你在 Android 应用中使用 C 或 C++ 代码 NDK 的好处 NDK 可以生成 .so 文件, 方便代码共享 增加反编译的难度 提高性能 使用示例 版本说明 Android Studio: 2.2 Android Plugin for Gradle: com.an...
用 Git 和 Git hooks 解决多地开发时 MySQL 同步问题
需求 我经常在家和公司的不同电脑上开发一个Web项目, 代码托管可以用GitLab或者GitHub, 这解决了代码的多地同步问题, 但是MySQL一直没发现一个好的方式来同步。 目前MySQL多地同步的方案主要有以下几种 使用可远程连接的MySQL, 多地开发时直接连接这个数据库, 这个方案如果网速不好的话,就不合适 A 地使用mysqldump导出sql文件,发送给 B 地,B...
让 iTerm2 支持拖拽上传文件和右键下载文件
条件准备 iTerm2 version 3 nightly builds 动手 需要在你自己的机器和想通过ssh远程连接的机器上都安装shell integration 自动安装 curl -L https://iterm2.com/misc/install_shell_integration.sh | bash 手动安装 下载这个脚本 curl -L https:...
实现 DownloadManager 下载完 apk 自动提示安装的功能
运行环境 Android 5.1.1, API 22 解决方案 下载新版本的 apk public void downloadNewVersion() { mDownloadManager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); // apkDownloadUrl 是 apk...