防止AirPods 自动连接至 Mac/iPhone/iPad

在Mac上:

  1. 打开“系统设置”(macOS Ventura 及以上版本)或“系统偏好设置”(macOS Monterey 及以下版本)。

  2. 选择“AirPods”

    image-20240617上午82139846

  3. 在“连接到此Mac”选项下,不选择自动,选择“上次连接到此Mac时。

  4. 选择后,如果断开AirPods,就找不到这个侧边栏选项了。

  5. iPhone iPad也是类似。

    IMG_8078


Anki 简单实用的记忆神器

最近接触的Anki。稍微记录一些它的情况。Anki 是一款备受欢迎的记忆软件,帮助用户有效地记忆各种信息。官方网站 AnkiWeb

Anki 的基本功能

  1. 间隔重复:Anki 的核心功能是基于艾宾浩斯遗忘曲线理论,通过在适当的时间间隔内重复呈现卡片,帮助用户将信息从短期记忆转化为长期记忆。这种方法被证明可以显著提高记忆效果,减少遗忘。

  2. 卡片库:Anki 提供了一个庞大的卡片库,用户可以根据自己的需求下载现成的卡片库,也可以自行创建卡片。AnkiWeb 上有丰富的共享卡片库,涵盖了从语言学习到医学考试的各个领域。下面这两个卡片库是我目前暂时使用的:
  3. 多平台支持:Anki 支持多种平台,包括 Windows、Mac、Linux、iOS 和 Android,这意味着你可以在任何设备上进行学习,并且数据可以通过 AnkiWeb 实现同步。
  4. 高度自定义:用户可以根据个人需求自定义卡片格式,添加图片、音频、视频等多种媒体,使学习过程更加生动有趣。你还可以使用 Anki 的插件系统来扩展其功能,根据自己的需求调整软件的表现。d

使用 Anki 的实用技巧

  1. 每日坚持:记忆的关键在于每天坚持使用 Anki 进行复习,即使每次只有几分钟,也能带来显著的效果。

  2. 分散学习:将学习任务分散到一天中的不同时间段,而不是一次性完成大量的学习,这样可以提高记忆效果。

  3. 创建高质量卡片:高质的卡片应该简洁明了,每张卡片只包含一个信息点,避免信息过载。

  4. 利用共享卡片库:对于一些通用知识点,如语言学习和考试准备,可以充分利用 AnkiWeb 上的共享卡片库,这样可以节省时间并获得高质量的学习资源。


解决 Homebrew 更新时的 "No remote 'origin'" 警告问题

今天在某台Mac在使用 Homebrew 更新包管理器时,我遇到这样一个警告:

brew update
==> Updating Homebrew...
Warning: No remote 'origin' in /opt/homebrew/Library/Taps/homebrew/homebrew-services, skipping update!

image-20240531上午103103101

这条警告信息是说,Homebrew 的 homebrew-services tap 没有设置远程 origin,这会阻止它的更新。这通常是由于 tap 添加不正确或其远程 URL 被移除导致的。

解决方法

1. 取消有问题的 tap

brew untap homebrew/services

2. 重新添加 tap

brew tap homebrew/services

3. 更新 Homebrew

brew update

这个命令会更新 Homebrew 及其所有的 taps,包括重新添加的 homebrew/services

image-20240531上午104610171

Happy brewing! 🍻


如何检查 iOS ipa 文件的签名信息

方法一:使用 codesign 工具

codesign 是 macOS 自带的工具,可以用来检查应用的签名信息。以下是具体步骤:

  1. 解压 IPA 文件: IPA 文件其实是一个 ZIP 压缩包,先将其解压缩。

    unzip MyApp.ipa
    
  2. 找到应用包: 解压后,你会得到一个 Payload 文件夹,里面有一个 .app 文件夹。

  3. 使用 codesign 检查签名

    codesign -dvvv Payload/MyApp.app
    

    这条命令会显示详细的签名信息。

方法二:使用 codesign 结合 ldid 工具

ldid 工具可以更详细地查看签名信息,尤其是在查看 entitlements(权限)方面。

  1. 安装 ldid: 首先需要安装 ldid,可以使用 Homebrew 安装:

    brew install ldid
    
  2. 使用 ldid 检查签名

    ldid -e Payload/MyApp.app/MyApp
    

    这条命令会显示应用的 entitlements 信息。

方法三:使用第三方工具

  • iOS App Signer
  • iFunbox

Mac 设置全局快捷键打开任意程序

没想到不是在快捷键那里设置!之前设置了没生效,都懵了。正确的方式是使用“自动操作” 这个app进行配置,然后再配置全局快捷键。

“自动操作”(Automator)是一个内置的应用程序,它可以让你创建自定义的自动化流程,其中包括设置应用快捷启动。

使用Automator创建一个包含你想要启动的应用程序的自动化流程,并将其保存为服务,然后在系统偏好设置中为该服务分配一个全局快捷键:

  1. 自动操作:

    image-20240507下午12250088

  2. 快速操作

    image-20240507下午12536713

  3. 打开应用程序:

    image-20240507下午13536713

  4. cmd+s 保存

  5. 系统偏好设置,分别点击键盘->快捷键->服务,下拉找到「通用」

    image-20240507下午13009248


自动化同步外网文件至内网

下面是一个我的示例脚本。在运行脚本之前,请确保已经安装了所需的软件和工具,并且已经配置了正确的权限和认证信息。

#!/bin/bash

set -e

filename="$1"

# 设置远程机器的地址、用户名和密码
remote_host="your_username@your_remote_ip"
password="your_password"
lockfile="$filename.lock"

# 获取当前日期和时间,并格式化为年月日时分秒
current_time=$(date +"%Y%m%d%H%M%S")

# 创建以当前日期和时间命名的zip文件
zip_file_name="$filename.${current_time}.zip"

# 检查远程服务器上是否存在.lock文件,如果存在则直接退出
if ssh your_username@your_remote_ip '[ -f /path/to/lockfile/$lockfile ]'; then
    echo "$lockfile file exists on remote server. Exiting..."
    exit 0
else
    echo "$lockfile not exists"
fi

# 在远程服务器上检查文件是否存在,如果存在则创建.lock文件
ssh your_username@your_remote_ip "[ -f /path/to/remote/directory/$filename.zip ] && touch /path/to/lockfile/$lockfile"

# 拷贝文件到本地
scp your_username@your_remote_ip:/path/to/remote/directory/$filename.zip /path/to/local/directory/$zip_file_name

# 拷贝文件到远程机器
/opt/homebrew/bin/sshpass -p "$password" scp /path/to/local/directory/$zip_file_name "$remote_host:/path/to/remote/directory/$zip_file_name"

echo ">>>>>>>>>>>>>>>>>> File '$zip_file_name' copied to remote machine successfully."

# 清理远程服务器上的文件和锁文件
ssh your_username@your_remote_ip "rm /path/to/remote/directory/$filename.zip /path/to/lockfile/$lockfile"

需要替换脚本中的以下信息:

  • your_username: 远程服务器的用户名。
  • your_remote_ip: 远程服务器的IP地址或域名。
  • your_password: 远程服务器的密码。请注意,为了安全考虑,你可能需要使用更安全的认证方法,比如SSH密钥对。
  • /path/to/remote/directory/: 在远程服务器上文件所在的路径。
  • /path/to/local/directory/: 本地文件所在的路径。

这个脚本首先检查远程服务器上是否存在锁文件,以确保不会同时运行多个实例。

然后它检查远程服务器上是否存在要同步的文件,如果存在,则创建锁文件以防止其他实例同时操作该文件。

接下来,它将文件从远程服务器复制到本地目录,然后将文件从本地目录复制到另一个远程服务器。

最后,它清理远程服务器上的文件和锁文件。