如何将一个 git repo “正确地”分享给他人?

背景

有时候我需要将我写的一些代码仓库分享给别人,同时对方也需要/要求看到我的代码版本历史,这个时候可以用到这些技巧。当然,如果不需要版本历史的话,其实最简单的做法就是 rm -fr .git && git init && git commit -am “Initial commit.” 了,然后就可以压缩打包发给别人了。也不全对,因为还需要考虑到本地被 git ignored 的文件。这里我们只讨论通过文件系统下的压缩分享方式,如果是通过 git repo url 的方式的话,那就取决于托管平台的权限控制了,不在讨论范围。

git ignored

被 git 忽略的文件可能是可以二次下载的三方库文件,也可能是 .env 类似的环境变量,甚至可能是自己的密码和私钥文件等等。这个时候我们肯定是需要在分享之前删除这些文件的。

git check-ignore **/*
  
Prefer Status Bar on iOS

历史

苹果在UIKit中提供了两套关于状态栏控制的API,一套是自iOS 2.0就有的基于UIApplication层面的全局控制:

@property(readwrite, nonatomic) UIStatusBarStyle statusBarStyle; @property(readwrite, nonatomic,getter=isStatusBarHidden) BOOL statusBarHidden; - (void)setStatusBarStyle:(UIStatusBarStyle)statusBarStyle animated:(BOOL)animated; - (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation; 

从废弃的另一部分API来看,早期甚至还可以通过手动控制屏幕旋转时候的状态栏状态。当然这些API自iOS 9开始被废弃了,但是直到iOS 14上面的API还能起作用,大概是苹果统计了很多App还在用这些API吧。

从iOS 7开始,基于UIViewController的新状态栏API替代品来了:

open var preferredStatusBarStyle: UIStatusBarStyle { get } open
  

背景

上周去做了一个团体核算检测,三天后拿到了结果。直接从他们的机构的官方网站查询就行了,报告格式是PDF,因为整个过程除了输入身份证号和姓名之外,并没有其他的身份校验,所以好奇性地把最终报告的页面地址直接在隐身模式下打开,结果….有下文了,又是一个专门为爬虫设计的简单系统,前端是php,后台是Java。没有登录,没有验证码,没有请求次数限制,就好像是在说:服务全开,全开!

下载

报告分移动端和PC端两个版本,仔细看了前端的JS脚本发现都是走的同一个接口,只不过移动端是把最终的pdf内容转成了图片格式。直接在Network inspector里面找到了下载报告的XHR请求,导出对应的curl命名,贴在命令行运行就可以直接运行了。参数大概是这样的(已脱敏):

curl 'http://the/post/url' \ -H 'Connection: keep-alive' \ -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36' \ -H 'Content-Type: multipart/form-data; boundary=----WebKitFormBoundarybfGJ0I90Seu9Ywjc' \