-
搭建内部技术文档搜索服务
近几年团队一直在坚持在内部的 Confluence 平台上写技术文档,使用过程中发现文档的利用率较低,主要表现在如下方面: (1)目录层级深,找到文档入口需要花费一番功夫 (2)搜索范围大,精细化的搜索使用成本较高 (3)各类技术文档缺乏分类,散落在各处为了解决这些痛点,设计了一个仅用于团队内部的技术文档管理方案。主要是实现一个数据采集器将组内的全部技术文档采集到 Elasticsearch 里面,然后利用 Elasticsearch 开箱即用的能力实现一个简易的搜索服务。整个架构如...…
-
搭建Dart Pub镜像服务
和其他的语言一样 Dart 也有自己的包管理工具,Pub 是 Dart 官方的包管理器。pub 默认从 https://pub.dartlang.org/ 下载依赖包,如果需要修改可以通过设置环境变量 PUB_HOSTED_URL。如修改为清华的镜像源可以使用如下命令进行修改:export PUB_HOSTED_URL="https://mirrors.tuna.tsinghua.edu.cn/dart-pub"PUB_HOSTED_URL 设置的地址其实是需要能访问互联网的,那么对于在内...…
-
Xcode15和iOS17相关的问题解决
近期在做一些适配相关的工作,在适配过程中踩到了一些坑。这是一篇水文,主要是记录 iOS 17 和 Xcode 15 适配过程中遇到的一些问题和解决方法。1、Xcode 14 在 iOS 17 的真机上运行一般来说Xcode和iOS系统匹配才能运行,但是有些时候不想升级Xcode但是想要在高版本的iOS真机上面调试项目。首先从别人升级过Xcode的电脑上面拷贝 DeviceSupport 目录下对应版本的镜像文件过来就行了,目录如下:/Applications/Xcode.app/Conte...…
-
Jenkins Pipeline 插件自定义环境变量丢失问题
最近将一些构建任务由 Freestyle 迁移为 Pipeline 的实现 (主要是考虑后续可以通过任务模板的方式动态创建和维护),整体的实现过程较为简单,基本上就是把原来的执行步骤拆分成一个个的 Stage,将里面用到的一些配置抽取成环境变量的方式,统一设置到一起。最终的配置脚本如下(伪代码):node("mac01") { stage('Environment Setting') { env.ENV_BUILD_SCRIPT_URL = "http://127.0....…
-
macOS SSH 登录账号过期问题解决
近期对构建环境的几台 Mac Mini 做了一些“标准化”处理,处理完成后发现通过ssh访问输入密码无法正常连接了(按回车会立即提示连接结束)。通过查看控制台日志发现有如下的记录:错误信息:error: PAM: user account has expired for xxxx from 127.0.0.1各种查找资料没有找到能讲清楚这个问题原因的,经过一番测试发现一种解决办法:(1) 查看是否打开共享的远程登录 旧版的系统(<= macOS 12) 新版的系统(>= m...…
-
Docker配置JDK的Security Provider
最近将之前写的一个消息通知的服务支持通过Docker进行部署,以前一直都是通过命令行启动的。一般的流程就是编写Dockerfile文件编译镜像运行容器就大功告成了。Dockerfile配置如下:FROM openjdk:8VOLUME /tmp/dataADD app.jar app.jarENV JAVA_OPTS=""ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -ja...…
-
macOS iTerm2 环境配置
近今年开始在macOS上面不再使用自带的终端(Terminal.app),开始使用 iTerm2 替代。整个安装配置比较简单,记录一下个性化的配置的步骤(主要是配置主题和字体),免得再次配置的时候又需要到处去找。下载安装到官网下载最新的安装包,下载地址:https://iterm2.com/downloads.html点链接下载完成后直接拖 iTerm.app 文件到 /Applications 即可。主题配置主题使用的是 Snazzy,直接到 https://github.com/sin...…
-
iOS推送支持显示用户头像
从 iOS 15.0 开始新增了 Communication Notifications 的支持,可以让通知消息更加人性化。Communication Notifications 包含发送消息的联系人的头像,并且可以与 SiriKit 集成,以便 Siri 可以智能地根据常用联系人提供操作的快捷方式和建议。当前在 iOS 上很多Apple自带的应用或一些第三方应用(如钉钉、飞书、微博等)都使用了这个特性。代码实现整体的实现流程: (1) 在APNs的Payload里面开启mutable-...…
-
iOS动态切换APP图标
有些时候需要App能在一些特殊的日子更换桌面图标,或者是出于一些个性化的需求需要能让用户自己选择自己喜欢的图标(比如VIP用户可以显示会员专属的图标)。如“微博和百度云盘的VIP个性化设置就提供了切换图标相关的功能。技术实现从 iOS 10.3 开始系统提供了动态切换图标相关的实现,要求提前将支持切换的可选图标提前预埋到APP并添加相关的配置,然后根据业务需要在合适的时机进行切换即可。配置相关以百度云盘的配置为例:<key>CFBundleIcons</key>&l...…
-
Jenkins多节点同步CocoaPods索引
CocoaPods的索引库更新一直以来是一件很痛苦的事情,为了提升效率在项目中引入了镜像索引库的方案,将项目用到的第三方库的podspec配置自动抽取到一个镜像索引库里面。这个方案确实降低了大家在同步索引库的耗时,但是在构建环境下存在较多的问题。现在是要去多台 Macos 节点 需要定期同步 CocoaPods 的索引。同步索引库直接通过命令 ` pod repo update xxx ` 就能解决,如果要多个节点同步那么使用 Pipeline 的任务每个节点执行脚本就可以了,具体的代码如...…