Skip to content

Commit

Permalink
chore: update articles
Browse files Browse the repository at this point in the history
  • Loading branch information
la3rence committed Feb 23, 2024
1 parent fdb831c commit c4480ef
Show file tree
Hide file tree
Showing 17 changed files with 207 additions and 79 deletions.
2 changes: 1 addition & 1 deletion pages/blog/example.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ export const blogProps = {
someKey: "someValeInJSXProps",
tags: "example, test, jsx",
locale: "en",
visible: true,
visible: false,
};

/**
Expand Down
8 changes: 3 additions & 5 deletions posts/2022-in-review.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,12 @@ tags: review, 2022

年底 Spring 6 和 [Spring Boot 3 的 GA](https://spring.io/blog/2022/11/24/spring-boot-3-0-goes-ga) 同样令人欣喜。我们终于可以基于 GraalVM 的 AOT 去做 Spring Native on Cloud Native 了。JDK 8 仍有接近 7 年的寿命。JDK 17 的 ZGC 是最值得研究学习的,另外下个 JDK LTS (JDK 21?) 应该会让协程 (虚拟线程) GA,目前仍在孵化阶段。学 JavaScript / TypeScript 就是玩玩,真正企业级大型项目还得看 Java。为什么这么说,你去看看 [Nest.js](https://docs.nestjs.com/controllers) 就知道了。

另外又用上了一个比较简单可靠的托管服务(关键是免费):[fly.io](https://fly.io/),除常规项目外,它可以部署 Docker 容器,并提供大概 3 GB 额度的免费磁盘挂载。大多静态页面和轻量 Serverless 都依赖 Vercel 或 CloudFlare Workers,一旦遇到需要更加复杂的场景(比如 WebSocket 或 SSE),我会选择使用 fly.io 来部署。
另外又用上了一个比较简单可靠的托管服务(关键是免费):[fly.io](https://fly.io/),除常规项目外,它可以部署 Docker 容器,并提供大概 3 GB 额度的免费磁盘挂载。大多静态页面和轻量 Serverless 都依赖 Vercel 或 Cloudflare Workers,一旦遇到需要更加复杂的场景(比如 WebSocket 或 SSE),我会选择使用 fly.io 来部署。

Solidot Robot 已稳定运行将近一千天了,目前依旧基于 Vercel Serverless Function。异常稳定。[Solidot](https://www.solidot.org/) 依旧是我每天都会逛的科技新闻源。

## Work

COVID-19 导致今年我在上海 WFH 了将近一整年。去办公室的次数寥寥可数 - 这曾导致 10 月份某天回公司时忘了工位在第几层楼。

公司内的 OpenShift 今年并没有花太多时间研究,权限、开发环境问题无法在本地快速调试容器。当然我依旧对 Kubernetes 保持高昂的学习热情,并用半个工作日的时间完成公司对所有开发人员提供的 immersive training。

我对所在团队 (CVA Trading Desk[^1] in XVA) 的业务有了一定的认知:
Expand Down Expand Up @@ -74,9 +72,9 @@ CVA Trading Desk 其实是一家内部保险公司。负责保障 Business Line

文本编辑器方面,我开始尝试使用 [Obsidian](https://obsidian.md/)。目前桌面端和移动端都有一些 bug,作为 Markdown 编辑器,它的使用门槛对小白来说很低 —— 单纯的码字工具而已,而它的上限对习惯折腾的玩家来说也很高 —— 丰富多元的社区第三方插件。

最后不得不提的便是 CloudFlare 的优秀网络工具 [WARP+](https://1.1.1.1/)。他们开会期间我完全依赖它才能正常上网。使用期间发现 WARP 有流量限制,利用 API 刷到了几十 TB 的额度后发现其下「零信任网络[^2]」是完全免费且不限流量的 —— 我果断切换成此模式,同时仍然续费另外一项网络协议工具互为备选方案来帮我维持突破网络封锁的高可用。
最后不得不提的便是 Cloudflare 的优秀网络工具 [WARP+](https://1.1.1.1/)。他们开会期间我完全依赖它才能正常上网。使用期间发现 WARP 有流量限制,利用 API 刷到了几十 TB 的额度后发现其下「零信任网络[^2]」是完全免费且不限流量的 —— 我果断切换成此模式,同时仍然续费另外一项网络协议工具互为备选方案来帮我维持突破网络封锁的高可用。

## Happy Hours
## Have fun, secretly

今年 10 月中下旬,我的网易云账号因在某天评论了一首歌被禁言 366 天。微博帐号也只因**点赞**评论某事件[^3]的微博而被永久封禁。对此我的态度只有:

Expand Down
2 changes: 1 addition & 1 deletion posts/activitypub.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ curl https://lawrenceli.me/blog/ssg-ssr -H "Accept: application/activity+json"

## 社区实现

很巧合地发现 CloudFlare 也在同一时间段开发了兼容 Mastodon 的 ActivityPub 实现:[WildeBeest](https://github.com/cloudflare/wildebeest),有兴趣可以直接用他们的商业化技术栈来部署一个小型实例,或者直接参考他们的代码,用自己擅长的服务端语言实现自己的 ActivityPub。
很巧合地发现 Cloudflare 也在同一时间段开发了兼容 Mastodon 的 ActivityPub 实现:[WildeBeest](https://github.com/cloudflare/wildebeest),有兴趣可以直接用他们的商业化技术栈来部署一个小型实例,或者直接参考他们的代码,用自己擅长的服务端语言实现自己的 ActivityPub。

<div>
<github user="cloudflare" repo="wildebeest"></github>
Expand Down
10 changes: 5 additions & 5 deletions posts/app-defaults-2023.zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ modified: "2023-12-17"
tags: app, life, 2023
---

最近看到很多博主在[App Defaults](https://defaults.rknight.me/)中分享了他们的默认应用程序。以下是我自己的:
最近看到很多博主在 [App Defaults](https://defaults.rknight.me/) 中分享了他们的默认应用程序。以下是我自己的:

- 📨 邮件客户端
- Apple 邮件
Expand Down Expand Up @@ -52,20 +52,20 @@ tags: app, life, 2023
- [Slidev](https://sli.dev/)(通过 Markdown 生成幻灯片)
- 🛒 购物清单
- 在 Apple 提醒共享提醒列表
- 🍴膳食计划
- 🍴 膳食计划
-
- 💰 预算和个人理财
- 以前用过 [iOS 的 Finances 2](https://hochgatterer.me/finances/ios/),目前正在尝试 [BeanWise](https://apps.apple.com/us/app/beanwise/id6446314789?ref=https://lawrenceli.me)
- 📰 新闻
- [Solidot](https://solidot.org) (中文版 [slashdot](https://slashdot.org) )
- [Solidot](https://solidot.org) (中文版的 [slashdot](https://slashdot.org))
- [路透社](https://www.reuters.com/)
- [Hacker News](https://news.ycombinator.com/)
- 🎵 音乐
- [Apple Music](https://music.apple.com/)(学生订阅只需每月 6 元)
- [网易云音乐](https://music.163.com/)(作为 Apple Music 的补充)
- 🎤 播客
- [Apple Podcast](https://www.apple.com/apple-podcasts/) 泛用型播客客户端,无审查
- 🔐密码管理
- [Apple Podcast](https://www.apple.com/apple-podcasts/) 推荐泛用型播客客户端,无内容审查
- 🔐 密码管理
- iCloud KeyChain
- [Google 身份验证器](https://apps.apple.com/us/app/google-authenticator/id388497605) 多因素身份验证

Expand Down
18 changes: 13 additions & 5 deletions posts/apple-tv.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,31 @@
title: "Apple TV"
date: "2023-01-21"
description: " 小巧玲珑的电视盒子"
image: https://lawrenceli.me/images/apple-tv/tv.jpg
tags: apple, tv
visible: false
---

过年回老家看电视,运营商送的网络电视盒子主屏幕花花绿绿,我一个程序员都费了好久才找到地方卫视的直播频道。

索性去电商平台搜搜看有没有更好的硬件、翻看各种测评文章和视频。清晰了需求定位后,我果断找了一家有现货的店铺下单了一款美版 Apple TV 2022。
索性去电商平台搜搜看有没有更好的硬件、翻看各种测评文章和视频。清晰了需求定位后,我果断找了一家有现货的店铺下单了一款美版 Apple TV 2022 (4K)

![Apple TV](/images/apple-tv/tv.jpg)

一直担心年前收不到货,没想到快递很敬业地发过来了。

由于购买之前就已经熟悉了大部分使用细节,所以安装、使用的时候毫不费力;像是把玩过很久的玩具一样自然流畅。

用美区 Apple ID 购买了 OBOX,添加了电视直播源就看起了 CCTV。比期待的画质高出不少。遥控器的金属质感像第一次摸到棱角分明的 iPhone 5S 一样爱不释手!还用它和我爸玩了一局桌球游戏
用美区 Apple ID 购买了很多付费应用,主要都是一些国内独立开发者的作品

种种体验让我想起知乎上一个回答:
- Alplayer
- APTV
- IIVA
- Miao Projects
- VidHub

很难想象不少开发者会为国内极其小众的平台开发上架了如此小而美的 tvOS App。

搜集一些电视直播源,我就反常地看起了 CCTV。比期待的画质高出不少。遥控器的金属质感像第一次摸到棱角分明的 iPhone 5S 一样爱不释手!还用它和我爸玩了一局桌球游戏。

种种体验让我想起[知乎上一个回答](https://www.zhihu.com/question/477077785/answer/2425144012)

> 长这么大,听过最清晰的《义勇军进行曲》是在 Apple Music。
14 changes: 7 additions & 7 deletions posts/chat-ops.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ tags: devops, golang, chatops, ci

我们按照 [Kubernetes Prow 的设计语言](/blog/prow),用一个 `/` 来作为 Tag,形式如同 `/test xxx` .

因此这里必然需要做字符串处理了。除了判断 Tag 的存在之外,要取 Tag 后面的参数。项目用 Go 实现,很简单。贴其中一工具函数的代码,各位猜猜这是做什么的
因此这里必然需要做字符串处理了。除了判断 Tag 的存在之外,要取 Tag 后面的参数。项目用 Go 实现,很简单,贴其中一工具函数的代码

```go
func StringIndexOf(originalArray []string, wordToFind interface{}) []int {
Expand All @@ -56,11 +56,11 @@ func StringIndexOf(originalArray []string, wordToFind interface{}) []int {
interfaceArray[i] = v
}
var indexArray []int
for i:=0 ; i < length; i++ {
if strings.Compare(wordToFind.(string), originalArray[i]) == 0 {
indexArray = append(indexArray, i)
}
}
for i:=0 ; i < length; i++ {
if strings.Compare(wordToFind.(string), originalArray[i]) == 0 {
indexArray = append(indexArray, i)
}
}
return indexArray
}
```
Expand Down Expand Up @@ -165,6 +165,6 @@ Robot 回复: 当前支持指令列表, 带 * 需要特定人员发起

最近一次更新,让机器人支持了多个仓库,直接在 `/tag` 最后加一个可选参数 `[repo]`,然后 SDK 的参数做出相应的变动就实现了。

相关链接
此项实践已作为 ThoughtWorks 员工构建的知识体系 Ledge DevOps 对 ChatOps 这一模式的展示案例

- [Pattern#ChatOps from Ledge —— DevOps knowledge learning platform](https://devops.phodal.com/pattern#chatops)
Loading

0 comments on commit c4480ef

Please sign in to comment.