Pkl:苹果公司可能取代 JSON 和 YAML 的新配置语言 |
2024-11-02 |
文章:Pkl: Apple’s New Configuration Language That Could Replace JSON and YAML
Pkl 不只是另一种配置格式。它融合了静态配置格式(如 JSON/YAML)和编程语言。可以认为它既有 YAML 的简洁性,又有在需要时实际操作的强大功能
pkl是苹果开发的一种配置语言,旨在取代 JSON 和 YAML
在使用 JSON 或 YAML 的时候,如果配置少,可读性就还行,但配置一多,可读性直线下降。
看了pkl的示例,整体感觉还不错,主要是增加了像编程语言一样支持抽象和重用,这非常有用
// Basic config
name = "My Service"
port = 8080
// Template for shared settings
baseService {
image = "nginx:1.19"
healthCheck = true
}
// Reuse template for specific services
webService = new baseService {
port = 80
}
apiService = new baseService {
port = 3000
}
而且还有验证功能,但正如文章下半部分所说的,“真的有必要吗?”
而且该配置语言还引入了JVM。。。。这开销估计只能在大型项目中才值得。
LII 原则 |
2024-11-02 |
文章:The principle of LII
术语:LII: Least Inbox Interruption ( 最少收件箱中断 )
这是一篇来自buttondown,关于邮件营销的文章。
阐述了3条规则:
1.不要在用户注册时自动将其添加到邮件列表中
2.让人们选择接收他们希望收到的邮件
3.只发送收件人会欣赏的邮件
其中一些方法挺有意思,比如怎样分类订阅者?
可以在不同页面放置不同的订阅按钮,如果有人从 API 页面注册,则只发送开发和服务状态相关的邮件;
如果是从定价页面注册的,则发送业务相关的邮件,或者功能介绍和促销邮件。
VPS的初始化安全设置 |
2024-11-02 |
记录下我每次开通新VPS后的安全配置,适用于Debian系
基础设置
登陆
ssh root@ip
升级系统
apt update && apt upgrade -y
安装必要软件
apt install vim sudo curl uidmap fail2ban ufw -y
添加非root用户
adduser your_name
加入sudo
usermod -aG sudo your_name
在本地电脑上生成新的ssh密钥对
ssh-keygen -t rsa -b 4096 -C "your-vps-name"
它会提示你保存的位置,我默认保存到~/.ssh/your-vps-name
将公钥发送到vps
ssh-copy-id -i ~/.ssh/your-vps-name.pub your_name@ip
验证ssh密钥
ssh -i ~/.ssh/your-vps-name -o PasswordAuthentication=no your_name@ip
在vps里执行:
使用非root用户登陆
禁用ssh的密码和root登陆
sudo vim /etc/ssh/sshd_config
查找并启用下面的设置
PermitRootLogin no
ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no
保存后,重启服务sudo systemctl restart ssh
先不要关闭当前的ssh连接,开新的终端测试下,应该只允许非root使用密钥登陆,root和密码登录都是不允许的
安全设置
启用 ufw 防火墙
先禁用 ufw
sudo ufw disable
设置默认规则
sudo ufw default deny incoming
sudo ufw default allow outgoing
添加需要的端口
sudo ufw allow ssh
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
确认当前配置的规则
sudo ufw show added
启用 ufw
sudo ufw enable
确认 ufw 正在运行
sudo ufw status verbose
启用 fail2ban
进入配置目录并创建配置文件
cd /etc/fail2ban
sudo cp jail.conf jail.local
编辑配置文档
sudo vim jail.local
找到 [sshd]
模块, 添加
[sshd]
enabled = true
mode = aggressive
启用服务
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
解封ip命令:
sudo fail2ban-client set sshd unbanip <ip地址>
日志文件在:/var/log/fail2ban.log
完成
使用 Strava 跟踪国家领导者 |
2024-11-02 |
文章:Tracking World Leaders Using Strava
早在 2018 年,人们就注意到,使用 Strava 健身应用发布的数据,您可以找到秘密军事基地。士兵和其他军事人员都在使用它们来追踪自己的跑步情况,你可以查看公开数据,找到本不应该有人跑步的地方。
六年后,问题依然存在。Le Monde也报道了使用 Strava 数据用于跟踪世界各国领导人的行踪。他们没有佩戴跟踪设备,但他们的许多保镖佩戴了。
社工无处不在,比如还追踪名人的私人飞机来进行跟踪的,追踪披萨的订购数量等,这种side-channel attack非常广泛,想象力是唯一能束缚它的
网络框架 Hono 的故事,来自 Hono 的创建者 |
2024-11-02 |
文章:The story of web framework Hono, from the creator of Hono
挺有意思的一篇 Hono 的介绍,这是一个快速、轻量级的 Web 框架,支持任何 JavaScript 运行时,来自Cloudflare。
如果说 Next.js 是从客户端 React 开始的全栈框架,则 Hono 正试图成为一个从服务器端开始的全栈框架。
看起来概念比React简单很多,至少我能看懂,非常看好这个框架
技术雷达 第31期 |
2024-11-01 |
PDF:技术雷达 第31期
来自Thoughtworks团队的“技术雷达”报告,该团队每半年左右会针对近半年的工具、技术、平台、语言、框架等进行指南。
报告质量很不错,上一次的报告我还没看完,积灰很久了
高和低 |
2024-11-01 |
文章:High and Low
换一个角度来看待一个问题,不再将问题描述为大或小,而是高或低
类似于第一性原理,当出现一个问题时,可能这个问题是由于一个更高层次的问题而产生的,所以解决当前问题并不是最佳选择,而应该找出造成该问题的上层问题去解决。
今天在HN上看到了一个帖子似乎也印证了这个想法:
人们不断为 JavaScript 语言发布新的捆绑器、压缩器、转译器、包管理器。这是一个警告,表明这门语言有些地方出了问题。
显然经过一次次重写,问题还没有得到解决。对我来说,这表明存在根本问题:我们没有在正确的层次上解决问题,或者可能根本无法解决。
Firefox隐私设置入门指南 |
2024-10-30 |
宗旨:适合新手,简易快速
使用工具:https://github.com/arkenfox/user.js
参考资料:https://github.com/arkenfox/user.js/wiki/3.4-Apply-&-Update-&-Maintain#-apply
平台:桌面端
第一步:下载Firefox
如果从 Mozilla 网站下载的Firefox,会自动生成一个唯一标识符用于遥测。
因此建议从 Mozilla FTP 下载没有标识符的安装包,截止2024年10月30日的最新版本是132.0
第二步:安装Firefox
第三步:下载配置文件
共需要下载3个文件:
第四步:配置Firefox
- 打开Firefox,输入
about:profiles
- 打开Profile: default-release的Root Directory文件夹,并进入default-release文件夹,然后将下载的3个文件复制进去
- 可以自行创建
user-overrides.js
添加额外的配置,可参考我使用的 - 关闭Firefox
- 双击运行prefsCleaner
- 双击运行updater
第五步:验证配置
输入about:support
查找user.js
如果显示如下图,则表示应用成功:

也可在about:config
中搜索相关的配置,查看是否和user.js中配置的一样
维护和更新
适用于更新user.js
或者user-overrides.js
- 关闭 Firefox 浏览器
- 运行updater
- 运行prefsCleaner
进阶: 阅读arkenfox/user.js的wiki
批量将Miniflux阅读器的条目设置为已读 |
2024-10-24 |
由于follow阅读器今天公测,导致服务器卡爆,内容完全刷新不出来。
这件事让我再次警觉起来,意识到了掌握自己数据的重要性。
因此我重新启用了Miniflux,并重新导入了源,但同时也丢失了阅读记录,产生了大量的未阅读条目。
所以只能从数据库层面,进行筛选,将发布时间大于7天的内容全部设置为已读,步骤如下:
1.首先要连接到miniflux的pg数据库:docker exec -it <container_name> psql -U miniflux -d miniflux
2.查看会影响多少条记录:
SELECT COUNT(*)
FROM entries
WHERE status = 'unread'
AND published_at < (CURRENT_TIMESTAMP - INTERVAL '7 days');
3.如果数量合理,执行更新:
UPDATE entries
SET status = 'read'
WHERE status = 'unread'
AND published_at < (CURRENT_TIMESTAMP - INTERVAL '7 days');
4.验证更新结果:
SELECT COUNT(*)
FROM entries
WHERE status = 'unread'
AND published_at < (CURRENT_TIMESTAMP - INTERVAL '7 days');
这次应该返回0条记录。
为什么要早起 |
2024-10-18 |
我从大一开始到现在,几乎每天,我的生物钟准时在5点到6点半期间叫醒我(取决于阳光)
我已经养成了习惯,所以并不痛苦,但当我想让自己的女儿也养成早起的习惯时,才发现确实很难
但换一个角度看,并不是她不愿意早起,而是早起没事做,或者没有动力早起,那么这个问题就好解决了。
我告诉她:早起可以在上学之前做任何你想做的事,有很多玩的时间,你想玩什么都可以,我们不会管,只要按时吃饭上学就行。
女儿:包括玩switch游戏吗
我:是的
正如预见的那样,接下来的几天,我只要提前半小时叫她,她都能起来,并玩一会游戏,开开心心的吃饭上学,不在像以前那样,因为赖床,搞的大家匆匆忙忙,心情很不好。
当然,任何事都有代价,比如玩游戏伤眼睛就是代价,但还是可控的。
而且早上的情绪非常能影响一天的活力,所以还是很值得的。