跳到主要内容

AnyNews日记管理器白皮书

· 阅读需 4 分钟

这是我使用AI开发一个简单的日记管理程序时撰写的提示词。

AnyNews是一个日记管理器。使用C89编写。

交互规范

用法

anynews [OPTION] DATE

参数列表

短参数长参数功能
-k--keep按原样处理
-d--decrypt解密处理
-e--encrypt加密处理
-m--edit编辑
-r--read阅读
-c--cat输出
-w--write覆写
-g--global遍历覆写
-o KEY`--option=KEY显示配置项KEY的值
-p--profile显示配置文件位置
-v--version显示版本
-h--help显示帮助

其中,处理方式组包括-k-d-e。它们的默认选项是-k

操作方式组包括-m-r-c-w-g。它们的默认选项是-m

信息展示组包括-o-p-v-h。它们优于其他的参数,优先展示。它们内部的顺序是-o>-p>-v>-h

-p-v-h-g忽略DATE。

日期表示

使用数字表示相对日期。例如,0表示今日,+1或者1表示昨日,+2或者2表示前日,-1表示明日。

数字表示法支持的日期区间为[-32768, 32767]。

默认的日期是0。

用例:anynews=anynews 0=anynews -km 0。表示按原样编辑今日的日记。

用横杠式表示绝对日期。例如2026-6-25表示2026年6月25日。

用例:anynews -dc 2026-6-25表示解密2026年6月25日的日记并输出到标准输出。

配置文件

配置文件的格式是ini。不使用小节,使用;作为注释。可配置的字段如下:

editor=     ;编辑器
viewer= ;查看器
encrypter= ;加密命令
decrypter= ;解密命令
template= ;模板命令
vault= ;仓库位置
extension= ;扩展名(不以点开头)
begin= ;内部块起始行
end= ;内部块终止行

在本文档中,{editor}表示editor配置项的值,其它配置项亦同。{timestamp}表示当前系统时间戳。

配置文件的储存位置:

  • Windows: %APPDATA%\anynews.ini
  • Unix: ~/.config/anynews.ini

如果找不到配置文件,AnyNews返回1并退出,并将“Error: config file not found.”输出到标准错误。

如果配置文件中的某些项为空,AnyNews返回1并退出,并将“Error: config is broken”输出到标准错误。

对于任何平台,AnyNews默认提供一份无法工作的待配置的配置文件,其内容是空白的,仅在注释中标明示例配置:

editor=     ;vim
viewer= ;less
encrypter= ;cat
decrypter= ;cat
template= ;true
vault= ;~/.anynews
extension= ;md
begin= ;<!--block-->
end= ;<!--endblock-->

行为规范

临时文件

临时文件的储存路径:

  • Windows: %TEMP%
  • Unix: /tmp

处理方式组

操作组参数从指定的日期对应的文件来创建一个临时文件。当指定的日期没有对应的文件时,调用template对应的命令,将日期作为标准输入,使用其标准输出创建文件。其中:

  • -k创建的临时文件即待编辑的文件本身
  • -d创建的临时文件是解密后的文件
  • -e创建的临时文件是加密后的文件

临时文件的命名:anynews_{DATE}_{timestamp}.{extension}

加密和解密

AnyNews处理纯文本文件。该文件分为两种块:

  • 内部块:由{begin}和{end}的两端标记包裹的每个连续文本块。
  • 外部块:除内部块以外的每个连续文本块。

解密时,AnyNews将每个内部块的内容作为decrypter的标准输入,并将标准输出替代内部块,逐个删除两端标记,将内部块转化为外部块。

加密时,AnyNews将每个外部块的内容作为encrypter的标准输如,并将标准输出替代外部块,逐个加上两端标记,将外部块转化为内部块。

操作方式组

操作方式组包括-m-r-c-w-g。它们的默认选项是-m

-m调用editor编辑临时文件,并在编辑器退出后,将临时文件加密,将加密后的临时文件写回源文件。注意:-m的行为永远包括写入前的加密。

-r调用viewer查看临时文件。

-c将临时文件输出到标准输出。

-w将临时文件写回到源文件。

-g遍历每个文件,对每个文件的行为相当于-w

目录结构

vault下,以这样的结构组织文件:

vault/
├── 2026/
│ ├── 01/
│ │ ├── 01.{extension}
│ │ ├── 02.{extension}
│ │ └── ...
│ └── 06/
│ ├── 24.{extension}
│ └── 25.{extension}
└── 2025/
└── 12/
└── 31.{extension}

名称来源

名字来自教员经常讲的一句话:“今天有什么新闻吗?”

编写爬虫追踪世界银行黑名单

· 阅读需 8 分钟

效果展示

该程序提供网页版,可供在线或者缓存后离线使用。

点击链接访问:追踪世界银行黑名单-网页版

待解决的问题

跟踪世界银行黑名单,及时确定指定的数家公司是否出现在该黑名单上。这一跟踪应该自动反复运行。

对问题的分析

世界银行黑名单网站的地址如下:

https://www.worldbank.org/en/projects-operations/procurement/debarred-firms

站点的字体和版式

· 阅读需 2 分钟

字体

本站的字体优先级,配置为:

--ifm-font-family-base: "Noto Sans CJK SC", "Noto Sans SC", "Noto Sans",
"思源黑体 SC", "思源黑体", "PingFang SC", "Microsoft YaHei", "Heiti SC",
"WenQuanYi Micro Hei", "Helvetica Neue", Arial, sans-serif;

站点的评论功能

· 阅读需 4 分钟

现在这里是没有评论功能的。只有作者的邮箱作为平替。

我一直觉得站点需要一个评论功能。但是这个网站是静态的,评论功能必须引入第三方服务。我目前也缺乏自建评论服务的精力、时间、经费和动力。

《民法总则手册》更新说明

· 阅读需 2 分钟

上线这个博客,本来是想写一个“民法总则重述”(restatement),按部就班地依照《总则编》的顺序安排,简单介绍相应的法律规范、司法解释、指导案例。当时想象的是,顺次看完这些规范文本,知道术语的意思,就懂得民法总则了。现在发现其实做不到。