使用 Thunderbird 同步 iCloud 日历与联系人

背景 日历频繁使用,希望在电脑上也能够同步查看日历,之前把Outlook的日历同步上去之后(使用Thunderbird的TbSync插件很方便就同步成功了),现在也希望将icloud的日历也同步一下。 Tips 提醒事项是不支持的,现在已经不能同步了,只能同步日历 在Thunderbird中直接添加icloud的邮箱他会自动查找在线服务,日历可以直接帮你同步 尝试 icloud的日历支持CalDav,所以Thunderbird可以轻松胜任,尝试了用tbsync插件同步,默认使用的服务器地址是 icloud.com,国内用的是云上贵州 icloud.com.cn 嘛,反正就是没有成功。 根据这个知乎老哥的回答尝试了,获取到自己的CalDav地址之后(如pxxx-caldav.icloud.com.cn),在tbsync上也没能成功。 获取CalDav地址的方法: 在icloud的日历中找到编辑日历,然后点击公开日历,然后点击共享链接。就是一个类似于webcal://pxxx-caldav.icloud.com.cn/published/x/xxx 的格式,取 pxxx-caldav.icloud.com.cn 这一部分填进 calDAV位置就行 在网页端登录icloud云上贵州的日历,然后F12打开控制台网络中筛选XHR,然后点击一个日历事件,然后在众多请求中你就会看到很多类似"pxx-“开头的,比如"pxx-ckevice.icloud.com.cn"等等,这个"pxx"直接替换到pxxx-caldav.icloud.com.cn就好 索性就使用Thunderbird直接添加日历,服务器地址使用这个CalDav的地址,密码使用了APP专用密码,在这里设置:arrow_right:传送门,然后就很轻松了同步成功啦~ 通讯录的同步也是同理,服务器的地址改为pxx-contacts.icloud.com.cn

May 16, 2025 · 1 min · 20 words · sirius1y

尝试在云服务器上部署 Flink 并提交计算任务

网站相似度计算:裸机 & Kubernetes 部署实战 背景与目标 任务:基于 Flink Table API,用 SQL 计算网站间的相似度(Jaccard Coefficient)。 数据:referrer-referree 格式的 CSV,数千到数万条记录。 目标: 跑通 Flink Job,并且能够在外部访问 flink web ui 在K8S集群中部署flink,能够使用多台机器共同计算较大的数据集 一些常用命令备忘: ## 将文本文件转换为csv # 1. 添加表头 echo "referrer,referree" > medium_relation.csv # 2. 替换空格为逗号并追加到新文件 sed 's/ /,/g' medium_relation >> medium_relation.csv ## 压缩和解压缩 tar -czvf xxx tar -xzvf xxx.tar.gz -C ~/ # -c 创建一个新的 tar 文件 # -x 解压文件 # -z 使用gzip压缩 后缀为.tar.gz # -j 使用bzip2压缩 后缀为.tar.bz2 # -v 显示详细的压缩过程 # -f 指定 tar 文件的名称 # -C 指定解压缩包的目录 ## 下载文件 curl -L -o helm-v3....

May 15, 2025 · 5 min · 885 words · sirius1y

只让服务器流量走 VPN

背景 服务器在学校的校园网中,然后平时需要使用 Easy Connect 连接学校的 VPN 之后,才能通过 SSH 连接到服务器。但是学校配置的 VPN 又很烦人,会接管本机上的所有流量走校园网,导致访问其他网站的速度很慢,并且连接不上外网用不了 GPT 之类的麻烦。 学校提供的 VPN 服务有两种软件可以使用,一个是 Easy Connect,一种是 Open VPN 。两种我都尝试了,都是登陆的同样的账号,但是openvpn始终ssh连接不上学校内网中的服务器,但是 Easy Connect 却可以。所以之后我都是在 Easy Connect 上进行操作的。 发现问题 发现启动 VPN 软件之后,运行ifconfig可以看到本地会多一个utun*的网络接口,然后运行netstat -rn查看电脑的路由表中可以看到,有大量的路由配置信息指向了这个utun*的网络接口。 之前之所以连接上了 VPN 之后无法正常的访问外网,是因为学校的 VPN 服务器推送了很多的路由,几乎涵盖了从1.*.*.*到255.*.*.*中的所有路由,全部设置为走utun*。即使我的default路由走的是我正常的网口,但是具体的路由的优先级是要比default路由要高的,所以几乎全部都走了 VPN 。 解决思路 有两个方法可以解决这个问题: 1 在Docker上运行 VPN 软件进行转发 在本地启动一个Docker,然后让 VPN 运行在 Docker 内,将走服务器IP地址的流量走到 Docker 容器内,然后在容器内走 VPN 出去。这个方法肯定是可行的,不过感觉稍微麻烦了一点,采用了第二个idea 2 删除多余的路由表 在 VPN 软件启动之后,他不是注册了很多具体的路由嘛,而我的需求只是让服务器流量走 VPN 就可以了,其他的流量不用他管。所以写了一个脚本,在 VPN 软件启动之后运行就行。 脚本主要实现的功能是,在路由表中匹配 VPN 网口的所有路由,只保留我服务器那一条路由,其他的全部删除,就OK,简单又完美。 #!/bin/bash # 示例 # 提示用户输入网络接口名称 read -p "请输入 VPN 网络接口名称(例如utun6): " vpn_interface # 提示用户输入需要保留的服务器IP地址或网段 read -p "请输入需要保留的服务器IP地址或网段(例如192....

January 4, 2025 · 1 min · 132 words · sirius1y

Docker run hello-world 超时

问题描述 $ docker run hello-world Unable to find image 'hello-world:latest' locally docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers). See 'docker run --help'. 在安装完成docker之后,本来想运行一下 docker run hello-world测试安装成功与否,然后发现连接不上。 先测试以下curl这个网站的返回情况,发现返回401,说明 DNS 没有问题 $ curl -v https://registry-1.docker.io/v2/ * Uses proxy env variable no_proxy == '127.0.0.1,localhost' * Uses proxy env variable https_proxy == 'http://127.0.0.1:7890' * Trying 127.0.0.1:7890... * Connected to 127.0.0.1 (127.0.0.1) port 7890 * CONNECT tunnel: HTTP/1....

December 25, 2024 · 2 min · 402 words · sirius1y

BLOG迁移之旅

迁移的开始 在随着华为云服务器到期邮件和电话的轰炸之下,我终于开始行动起来要去迁移我的博客了。太久没有写博客,已经忘记了距离上一篇博文一经过了很久很久了,想不起来时间,只记得是在做 aorb 项目的时候写的。 也忘记了之前对博客进行了一系列 CI 的优化,现在已经能够实现提交博客内容到 git repo 上,会自动拉起 github action 进行检查和部署的操作。 不幸 然额呢,隐约记得我之前在部署的时候在 workflow 里面编写了一些机密 (secrets) 用于访问服务器但是又不公开,现在大体忘却了他们是干什么的了。服务器过了十二点就冻结了,现在晚上十点,明天下午有一个面试,可能面试官会看我的博客(虽然我大概知道他们不会这么做),但是还想在这之前把他修好。冰冷的房间,饥饿的肚子,颤抖的双手,宕机的脑袋…尝试了无论怎么修改 secrets 中的 private key,依然显示我的 SSH 验证不通过。似乎我隐约记得上次我也这么干过,在这里也卡住了。 … 还尝试了不用 github action,直接把它部署到云服务器上的方案,虽然最后也没成功(因为我后来发现这台新电脑上的博客拉下来之后本地都没有跑对页面)。 但是复习到了以下内容: 存放我们 public/ 代码的地方在 /var/www/blog/ 下,我是直接把 public/ 下的内容拿过的,没有要 public/ 这一层。这里要与 nginx 的配置相对应 nginx 的配置文件在:/etc/nginx/sites-availble/sirius1y.top,日志文件在 /var/log/nginx/error.log ,分析网站为什么返回403、404很常用的 检查 nginx 配置文件是否正确的命令:sudo nginx -t,重新加载 nginx 配置文件的命令 sudo systemctl reload nginx /var/www/下的文件所有者和组应该是 www-data,并且对目录和文件的权限有要求的 … 第二天晚上,在清醒的大脑之下,在排除了用户的权限和文件夹、文件的权限正确设置之后,google 了一下,发现网上有两种说法:https://github.com/openssl/openssl/issues/20054 。大概是: 添加一段 before_script 的代码 私钥后添加 \n 然后我尝试之后,由于我设置的用户没有 sudo 权限,所以在 before_scirot 中的 chmod 命令无法执行。然后就试了第二种方法,还是不行。然后我索性在私钥之后按下回车。然后,It works!...

December 16, 2024 · 1 min · 157 words · sirius1y