轩辕十四

探索科技与创新的个人博客

在 macOS 上,man 命令用于查看系统中安装的程序的帮助文档。然而,默认情况下,这些帮助文档都是英文的,对于不熟悉英文的用户来说可能会有些困难。幸运的是,我们可以安装 manpages-zh 来获取中文帮助文档。

阅读全文 »

在 GitHub 上,我们可以使用 Fork 操作将其他用户的仓库复制到自己的账户下。但如果原始仓库更新了,我们可能需要将其再次 fork 到自己的账户下,以保持代码与原始仓库同步。下面将介绍如何使用 Git 命令行进行 GitHub 仓库再次 fork 的操作。

阅读全文 »

Git 是一款分布式版本控制系统,于 2005 年由 Linus Torvalds 创造并开源发布。Git 的设计初衷是为了更好地管理 Linux 内核代码,它的分布式特性使得多人协作开发和大型项目的版本控制变得更加高效和可靠。现在,Git 已经成为了开源社区和软件开发领域中最受欢迎的版本控制工具之一。

阅读全文 »

C 语言能让程序员恰到好处的控制程序,这是它的优势之一。程序员通过 C 的内存管理系统指定变量的作用域和生命周期,实现对程序的控制。合理使用内存存储数据是设计程序的一个要点。

存储类别

C 提供了多种不同的模型或存储类别在内存中存储数据。要理解这些存储类别,我们先来了解一些概念和术语。

程序中的大部分数据都是存储在内存中。从硬件方面来看,被存储的每个值都占用一定的物理内存,C 语言把这样的一块内存称为 对象(objc)。这里所指的对象和我们面向对象编程所说的对象是不同的,要注意(面向对象中的对象指的是类对象)。这里所说的对象实际指的是一块可以存储数据的内存。对象可以存储一个或多个值。一个对象可能并未存储实际的值,但是它在存储适当的值时一定具有相应的大小 。

阅读全文 »

在一款 App 从开发到上架都会经历 编译 -> 打包 -> 签名 -> 推送 App Store Connect -> 提审 -> 上架 的过程。其中编译打包这种重复且繁琐的工作公司内都会有一个 CI 平台去负责,我们今天就来了解一下 CI 的编译打包流程是怎样的。

阅读全文 »

编译准备

首先保证硬盘空间足够,本人一套流程下来文件夹有将近 60GB 大小。接下来是相关环境的安装,因为我的环境都是最新的,所以基本安装的都是最新版的包,如果你的环境不是新版的话,请找对应版本包安装。本人环境说明:

名称 版本
芯片 Apple M2 Pro
macOS Ventura 13.3
Python 3.11.2
CMake 3.26.3
ninja 1.11.1
sccache 0.4.1
Xcode 14.3

我们可以通过 homebrew 统一安装环境:

1
$ brew install cmake ninja sccache

此文只介绍 Xcode 调试环境,如果想用 VS Code 调试的话,需要用 Ninja 编译,Ninja 的编译请移步官方文档。

阅读全文 »

ProvisionQL 是一款支持快速预览 ipaprovision 等文件信息的插件。它能以美观整洁的页面快速预览大量信息,包括设备 UUID、证书、授权等等。

截图示例如下:

此插件支持的文件类型有:

  • .ipa - iOS 的打包应用
  • .xcarchive - Xcode archive
  • .appex - iOS/OSX 应用扩展
  • .mobileprovision - iOS provisioning profile
  • .provisionprofile - OSX provisioning profile
阅读全文 »

之前的文章介绍过,字符串是以空字符(\0)结尾的char类型数组。常用的输出字符串的方式有两种 printf()puts(),他们不同之处在于,printf()是格式化输出字符串,而puts()只显示字符串。

在程序中定义字符串

用双引号括起来的内容称为字符串字面量,也叫字符串常量。字符串常量属于静态存储类别,这说明如果在函数中使用字符串常量,该字符串只会被存储一次,在整个程序的生命期内存在,即使函数被调用多次。用双引号括起来的内容被视为指向该字符串存储位置的指针。这类似于把数组名作为指向该数组位置的指针。如果确实如此,下面的程序会输出什么?

1
2
3
4
5
6
#include <stdio.h>

int main(void) {
printf("%s, %p, %c\n", "we", "are", *"space farers");
return 0;
}

输出如下:

1
we, 0x100003fa7, s
阅读全文 »

macOS 上的 Ruby 环境管理我相信是大多数软件开发都会遇到的一个问题,如果我们需要同时管理多个 Ruby 版本的话,有 rbenvrvm 的方式,具体的操作网上已有大量的文章供我们学习,本文不再做赘述。今天我们来看一下如何使用 Homebrew 来管理我们的 Ruby。

什么情况下我们可以使用 Homebrew 来管理我们的 Ruby 环境?

  • 你只是学习一下 Ruby 语言
  • 你只是想编译一个项目(例如我们使用 cocoapods 来管理我们的项目)

在使用之前,首先我们需要知道用 Homebrew 来管理 Ruby 有什么缺点。

  • 当你升级其他 Homebrew 包时,Homebrew 可能会将 Ruby 更新到新版本
  • 你不能非常轻松的在多个 Ruby 版本之间频繁切换

如果你的需求不满足上述描述的话,特别是需要经常切换 Ruby 版本,那么 Homebrew 的方式就不是太适合。

阅读全文 »
0%