2024-12-26 14:20:00
前几天在NameCheap白嫖 .news
域名,注册了个 hy2.news
,想着也没啥用就搭建一下个人动态页面。既然是动态的,那就得把 Wordpress 请出来,然后用 RSS 插件实现。页面地址:Hyruo News
页面是搭好了,RSS 来源成了问题,于是摸索着先从最近几个月混得比较活跃的 Nodeseek 论坛搞起。结果搞半天还是失败了。
RSSHub 官网的开发路由教程比较跳跃,主要过程如下。
git clone https://github.com/DIYgod/RSSHub.git
pnpm i
pnpm run dev
开发路由就比较简单,打开 RSSHub\lib\routes
目录,在下边新建一个文件夹,比如 nodeseek,然后在该文件夹中添加两个文件 namespace.ts
custom.ts
就完事。
这个文件照着官方教程就行,不然就随便在 lib\routes 目录下边复制别人的改改。示例如下:
|
|
这是开发路由的主文件,文件名可以按照目标网站结构来命名,看看其他文件夹就懂,难度主要是在具体内容上。示例如下:
|
|
简单说本次手搓 nodeseek 路由失败原因,主要就是没能突破 nodeseek 的反爬和 cloudflare 盾限制。
RSSHub 可以使用的极限方法就是利用 Puppeteer 来模拟浏览器行为反爬,问题是机器模拟行为很容易在攻防中被 cf 这种平台识别出来。
我在本地测试时,大概有个 50% 的成功率,这还是在本地更新最新版本 Puppeteer 的情况下,如果用 RSSHub 官方依赖中的 Puppeteer 版本,成功率不足 10%。考虑提交至 RSSHub 还要经过双重审核,这成功率没法看了。
最终只能先忍痛放弃先。
今早一起床发现天塌了,6 个 *.US.KG 免费域名因上级域名被停止解析而崩盘。
今天中午发现天又塌了一遍。好不容易弄好的 .news
域名又被官方暂停了。邮件发过来让我好好解释下为啥在注册过程中个人信息出现变更,然后强行将 NS 解析到鬼都不认识的 IP 上。
好吧,这个是我自己问题。一开始注册时直接套浏览器自动填单程序,一不小心全给填了真实信息。然后想着改回来,一改就出异常了。
PS:下午 *.us.kg 又恢复正常。但感觉不会再爱它了。
2024-12-16 16:26:00
最近几年,关于司法改革的一个热门问题是“阅核制”的实施,即在上一轮司法改革后,法院在事实上朝着“让审理者裁判、由裁判者负责”的方向前行,由员额法官独立审判成为主流办案方式。但“阅核制”的出现,似乎在开倒车,法官独立审判后,裁判文书还得经庭长、院长阅核才能签发,感觉很像回到了以前的“科层制审批”状态。
阅核制全称应该叫“院庭长阅核制”,通常指在法院系统中,由法院院长或庭长对特定案件或法律文书进行审阅和核查的制度。这一制度通常用于加强对司法工作的监督和管理,确保案件审理的公正性、合法性和规范性。
重点案件的阅核:对于重大、复杂或社会影响较大的案件,院长或庭长会亲自审阅案件材料、判决书等,确保案件审理的质量。
法律文书的核查:对法院出具的法律文书(如判决书、裁定书、调解书等)进行复核,确保文书内容准确、格式规范、法律适用正确。
程序监督:对审判程序的合法性进行核查,确保案件审理过程符合法律规定,避免程序瑕疵。
质量把关:通过阅核制,院长或庭长可以发现并纠正案件审理中可能存在的问题,提升司法工作的整体水平。
“院庭长阅核制”虽然在一定程度上能够提升司法工作的质量和规范性,但也存在一些潜在的弊端,理论界批评“阅核制”主要包括独立性、效率与司法质量方面内容,具体包括以下几个方面。
行政干预司法:主要是院庭长作为行政领导,可能会在阅核过程中对案件的审理施加不当影响,导致司法独立性受到削弱。而法官在审理案件时也可能会因为担心院庭长的审查而倾向于迎合领导的意见,而非完全依据法律和事实作出判断。
增加工作负担:院庭长需要对大量案件或法律文书进行审阅和核查,这可能会导致其工作负担过重,影响其他行政管理工作的效率。法官在撰写法律文书时也可能会因为担心被阅核而花费更多时间进行修改和完善,从而延长案件审理周期。
效率降低:阅核制的实施可能会导致案件审理流程变得更加复杂和耗时,影响司法效率。如果院庭长的阅核频率过高或范围过广,可能会导致案件积压,影响法院的整体工作进度。
责任分散:阅核制可能会导致责任分散,法官和院庭长之间的责任界限不够明确,出现问题时可能互相推诿。法官可能会认为有院庭长把关,从而放松对案件质量的自我要求。
形式主义倾向:在某些情况下,阅核制可能流于形式,院庭长只是简单地签字确认,而未真正进行实质性审查。这种形式化的阅核可能无法真正发现和解决问题,反而增加了不必要的程序负担。
影响法官独立性:法官在审理案件时可能会因为担心院庭长的审查而产生心理压力,影响其独立判断和决策。长期依赖院庭长的阅核,可能会削弱法官的专业能力和责任感。
虽然阅核制貌似弊端很多,但从现实来看,“让审理者裁判、由裁判者负责”的想法还是过于理想主义,实践中很容易搞出问题,使得整体司法公正受到质疑。
法官认知的局限性:我在之前的文章曾多次提到,受制于法官个人认识能力的局限,在审判过程中很难避免因法官自身认知不足导致裁判结果出现纰漏,而这种认知通常需要长时间的工作经验积累才能较好的弥补。甚至于一些法官因为长期身处高薪审判岗位,与普通老百姓日常生活脱节,其思维很可能带有一定的偏向性,容易影响到老百姓心目中公平正义的实现。
司法裁判的统一性:在法官独任审判后,很容易搞出同案不同判的事情,即便在制度上打补丁要求法官在办案过程中强制搜索同类裁判结果,但实际上这种制度执行并不完善,因为“同类案件”过于宽泛,很可能会查出来有数个不同判法,参照起来也很难有什么约束性可言。这里边最严重的是就同一个法院同类案件不同判,简直是突破了老百姓认知底线。比如我前些年参与处理的某小区住户起诉开发商违约的同一批案件,就因为案件分配给不同法官办理,判出来的结果天差地别。
司法责任的同一性:在关于阅核制的争论中,法院内部整体上持支持态度。比如很多院庭长认为在先前司法改革过程中,院庭长内部普遍出现了不敢管、不愿管、不会管的问题,除了审批延长审限这类无意义的形式主义签批,日常很难去过问其他员额法官案件审理情况,但在案件出责任后,院庭长却又都跑不掉。因为在宪法上,我国法院是由其整体来独立行使审判权,但凡是法院作出的判决,法院相关领导都得承担政治责任。从普通法官角度来看,也很容易赞同这种制度,因为案件独立审判所带来的终身追责压力,亦让他们亦步亦趋,如果有院庭长来帮助把把关,分担一下责任压力,自然是极好的。
最为重要的是,随着近年来多个因质疑判决不公而出现的报复法官、报复社会恶性案件被广泛关注,其中个别引发这些恶性事件的裁判结果得到广泛讨论,过程中多多少少暴露出独任审判的缺陷,自然而然也就加速了阅核制的到来。
当然,也不是说阅核制就一定能解决这种问题,相反它也有很多弊端,但归根结底,司法改革的核心一直就是责任划分问题,显然是阅核制更能匹配实际责任。毕竟,办错案对于法官个人来说只是直接责任,但是对院庭长却是主体责任。一个错案,可能对法官来说只是记过处分,可一旦引发连锁反应,很可能导致的是当地党政负责人、法院院庭长集体下台。这种时候,如果连个阅核制都没有,那承担主体责任的领导们也真是太冤了。
检察院一直执行“阅核制”,毕竟检察院本身就是检察长负责制,检察长一直对案件具有最终决策权,只是在上一轮司法改革中,员额检察官一定程度参照法院搞了独任办案制度。自从法院这两年提出搞“阅核制”后,检察院内部进一步突出办案的层级责任,要求强化检察委员会、检察长、业务部门负责人等司法办案监督管理职责,健全一体履职、综合履职机制,在案件质量上通过压实业务部门自我管理、案件管理部门专门管理和相关部门协同管理责任切实防止错案发生。讲白了就是进一步加强办案过程监督管理,更加注重结果导向。
2024-12-14 02:51:00
今早7点半,在送女儿上学后回来的路上,突然接到我妈电话,说我儿子从电动车上摔下来,已经叫救护车准备去医院。由于正值上班高峰期,我只能拼命往家赶,还没到家就远远看到一辆救护车停在小区门口,于是迅速过去登上救护车。
到车上才看到我儿子满脸是血,出血位置应该是两个鼻孔,然后额头侧面擦伤也在渗血,但人的精神状态还算好,能够正常回答我的问题。在车上我一边拿纱布帮它按住止血一边询问我妈到底发生了什么,这才知道我妈今早送小孩上学,刚出小区没多远,在一条没有行人的空路上,小孩自己摔了下来,可能是突然加速没坐稳,也可能是小孩自己在上边乱动导致的。我妈的电动车是那种很小、很矮的三轮电动车,座位高度就40公分左右,小孩坐上上边时,头部离地面高度应该不到一米。正常情况下,不至于摔很重才对。
但这事真是吓得我不轻,因为我妈头部神经也受过创伤,语言表达能力不强,倒不是不会说话,只是经常说起来没什么条理,要反复追问才能讲清。而且记性很差,经常丢三落四。今早这情况,本来最佳方案是原地打 120 去医院,但她恰好又忘了带手机,只能继续搭着小孩往家里跑。在小区保安和物业帮助下才打了 120 再打我电话。
今早情况也比较特殊,这两天我老婆去外地培训,家里就我带着两个小孩。而且由于女儿上学时间早、路程远,我 7 点前就要出发送她上学。而儿子通常是7 点半才起床,8 点去学校,这中间存在个空档期。我昨晚早早的就跟我妈说,让她设个闹钟今早 7 点过来我家免得小孩醒来时家里没人(同一栋楼不同层)。可能正是因为她比往常来得早了点,便想着早点送小孩去学校,导致小孩在没怎么睡醒的情况下,从电动车上掉了下来。
还有一个重要原因是今早我妈也忘了给小孩戴头盔,她自己的倒是没忘,但小孩的头盔却忘在家里没拿出来,不然也不至于摔伤。
接送小孩这种事,本来我一直不想让我妈来做,以前接送我女儿时纯走路倒还没事,后来我妈得了一场重病,走路太远的话有点力不从心。可是我妈坚持要由她来接送,不然显得好像继续住在我这里好像没什么意义一样,一心想回老家乡下。
为了尽量减少我妈送小孩上学过程中风险,我帮她专门设计了一条线路,虽然远了 200 来米,但只需要横过马路两次,而且这两个位置的斑马线都是我们这罕见的、专门设置有汽车不礼让行人拍照处罚的设施,并且在上下班时期几乎都有警察和志愿者在旁引路。万万想不到,人算不如天算,在一条最不可能出现问题的空旷平路上,小孩从车上摔了下来。
最终,经过医院一番检查清洗,诊断主要就是额头擦伤加鼻孔流血,自费 800 左右,开了一瓶 5 元的药膏。
2024-12-11 13:53:00
去年曾参加一个由金融办组织的会议,主要是研究一个非法集资案件的处理。由于这个案件已经水落石出,加之个人感觉具有一定的典型性,故以此案例为引子,谈谈怎么预防集资诈骗问题。
我们日常生活中所说的集资诈骗,与非法集资、非法吸收公众存款通常是混合在一起讲的。从罪名来看,主要是集资诈骗罪和非法吸收公众存款罪,两者统称非法集资犯罪。对老百姓来说,不管是非法吸收公众存款罪还是集资诈骗罪,从最终结果来看,大概率都是上当受骗,因此把两者都当成诈骗也不是没有道理。
|
|
|
|
一般来说非法吸收公众存款只要符合金额100万元、人数150人、损失50万元这三个条件之一,就构成犯罪。而集资诈骗起点则是10万元。特殊情节可以进一步下探标准的就不细说了,毕竟这年头真要干这事的,很难不达到这些标准,动则几百亿的案件数见不鲜。
一般标准 | 非法吸收公众存款罪 | 集资诈骗罪 |
---|---|---|
金额 | 100万元 | 10万元 |
人数 | 150人 | — |
损失 | 50万元 | — |
这个案件虽然已经办结,但保险起见还是不透露具体信息。简单概括如下。
总部位于某直辖市的 A 公司于会前一个月在我们这小地方注册一家分公司,该公司以当下热门的新质生产力科技概念,做了一个实体项目投资计划书,该项目可以拆分为无数小项目,并由分公司网点向公众推介,从而吸引投资。但在公众签署的书面协议上并没有约定收益回报率。
到这里,整个项目还是比较正常的,因为这种投资项目从现实来看确实具有一定的可行性。即便采取非法吸收公众存款行为,但如果它真的是用在正常经营活动,那司法机关也不会去打扰它。
非法吸收或者变相吸收公众存款,主要用于正常的生产经营活动,能够在提起公诉前清退所吸收资金,可以免予刑事处罚;情节显著轻微危害不大的,不作为犯罪处理。— 法释〔2022〕5号
不过这种未知数收益,老百姓显然不会轻易掏钱,如果没有一个眼前利益放出来,这种项目几乎不可能推销出去。于是骚操作来了。
A 公司老板在另一个省的省会注册一家旅游公司 B,然后在我们这开了一个营业点。只要是参与投资前边分公司项目的人员,都可以按投资数额高低免费拿到一定比例的旅游券卡。这种券卡除了自用,还可以转卖。例如投资 5 万可以拿到 2.5 万的券。
至此,几乎可以断定前边所谓投资项目就是个幌子,即便调查发现 A 公司确实有相关业务活动,但这种业务活动规模与其吸纳资金显然不可能成比例。
最终,经过半个月运营,该分公司共获客 40 余人,吸引资金约 200 万元。有群众看到该项目后,向金融管理部门举报。
这是我第一次参与金融办的会议,虽然很早就知道有这么个部门,但在县一级,我一直感觉这就是个养老机构,毕竟很多职能都跟垂直管理机构重合,干不干没啥区别。去年金融监管改革后,进一步理顺了这些关系,国家层面在银保监会基础上设置了国家金融监管总局,并设地方派出机构。比如派出在县级的机构,全名为
国家金融监管总局·湖南监管局·长沙分局·岳麓支局
这种模式。而地方金融管理局的设置则没有统一标准,特别是在市县两级,有的单设东莞市地方金融管理局
如东县地方金融管理局
,有的并在市县政府办公室,有的并在市县财政局,有的叫金融工作局,有的叫商务和金融局,但总的来说,央地之间金融监管职责从名字上就能看出个大概。国家层面的是监督管理,地方的是管理。
之所以要啰嗦一下金融监管机构,主要问题是金融管理对于地方来说是新事物。即便有些地方设置金融办、金融局多年,但恐怕很多时候都是为了方便政府去找银行贷款而设置的。
这次在金融办的召集下,大概有七八个部门人员参会。大家都谈了自己对案件的看法。
A 公司的分公司没有独立法人资格,在对该分公司开展检查发现,该分公司并没有超出范围经营。
该分公司是通过网络平台进行注册,市场监管部门只对其提交的材料作形式审查。
B 旅游公司的营业点也是通过网络平台进行注册,市场监管部门只对其提交的材料作形式审查。
B 旅游公司的营业网点注册违反法律规定,因为 B 公司未注册在本省,B 公司也未在本市注册分社。
对 B 旅游公司在本地设置营业网点的行为可以进行行政处罚,但因 B 公司不在本省,处罚难度很大。
A 公司分公司行为涉嫌非法吸收公众存款,但 A 公司确实有相关实体投资项目,假设以本地目前掌握到的资金规模去核查,很可能没有效果。毕竟目前掌握到的资金量只有 200 余万,而 A 公司在某直辖市的项目投资显然不止这么点。这里边存在一个资金混同的问题,没法对这些资金去向进行区分。
A 公司在本省多地注册了分公司,应该都是从事的同类行为。只有将这些分公司的情况全部弄清,才能比较妥当的办好案件。
因 A 公司注册地在省外,按照办案管辖权限,一般只能由 A 公司注册地公安部门进行核查,否则容易被当成是在 远洋捕捞
。
公安部门可以将调查结果作为犯罪线索向 A 公司所在地公安移送,但能案件能否办成功很难判断。
A 公司暂时还没有暴雷,现在的处置纯粹是为了避免日后可能的暴雷造成投资群众利益受损,并不必然要通过刑事手段进行处置。
目前发现 A 公司分公司的资金吸收规模仅有 200 万,其中还有几个大户占了 100 多万。从办案角度看,如果这几个大户在调查过程中被证明是 A 公司分公司负责人的亲朋好友或特定关系人,那这 100 多万就不能被定义为非法吸收 公众 存款,案件也可能办不下去。但我们也不能等这个公司继续经营造成影响扩大,虽然那样更有利于办案,但同样,对群众造成的损失面可能会更大。
如果只是从维护本地投资群众利益的角度出发,最佳方案显然是由有相关部门依照现有证据对 A 公司分公司和 B 公司网点负责人施压,尽量把他们赶出去。同时逐个联系这 40 名投资人,让他们赶紧想办法把钱追回。真等到 A 公司全国性暴雷后再来做,就迟了。
在 A 公司暴雷前想动用刑事手段来解决,难度非常大,不是我们这个小地方能搞得定的。一边做好本地的事,一边把信息通报出去即可,最终还是得 A 公司所在地监管部门来牵头解决。
前些天收到这个案件的后续信息。在那次开会后不久,A 公司分公司和 B 公司的网点就都撤掉了,40 多名投资人里边能联系上的大部分都退了 6 成以上的资金,相当于花钱买了个教训。刚网上查了下,这个 A 公司现在已经无数官司缠身,估计离彻底暴雷破产也不远了。
对于这类集资诈骗搞法,在现行法律框架下确实很难在初始阶段进行犯罪预防,光是一个办案程序就卡的死死的。不过,就个人而言,只要坚信天上没有掉馅饼的事,提高防范意识,不贪图小便宜,几乎可以避免市面上 9 成以上诈骗套路。
近年来,时常看到有些中西部地方基层单位搞 远洋捕捞
,被媒体和公众当作落后、愚昧
的象征,以至于上峰不得不三番五次下禁令,从程序上对这种情况设置诸多障碍。但我觉得也不能把这种做法一棒子打死,很可能这些办案单位只是在自己能力范围内为当地老百姓尽量争取一些利益、挽回一些损失,只是在地域隔阂和地域偏见所带来的思维定势下,这种声音都被淹没了。导致结果是,现实中几乎都是等到这些骗子公司暴雷后才处置,而一旦暴雷,那损失结果都是天文数字。
2024-12-09 21:10:00
在上一篇文章 Pages CMS:一个勉强够用的HUGO博客后台 中,我提到可以用 Pages CMS 作为 Hugo 的文章后台管理面板。但有个问题不是很好解决,即 Hugo 默认目录结构很难与 Pages CMS 进行适配。这也不单单是 Pages CMS 独有问题,其他任何 CMS 可能都会在适配 Hugo 时遇到这个问题。但在 Hugo 社区的强大支持下,我最终解决了这一问题。
Hugo 目录一般是下边这种形式,index.md
文件 与图片文件都保存在同一文件夹内。在 index.md
中引用图片,只需要输入 ![a](a.jpg)
即可,不需要输入图片的目录结构。除非一种情况,在下边代码类似 article-1
内有子目录,这时才需要在图片引用子目录路径。
|
|
CMS 的图片目录结构一般是下边这种形式,通常只有一个图片入口和出口,用于图片集中管理。在 CMS 中,上传或插入图片,默认的链接(按照下方代码设置)是 content/post/article-1/a.jpg
。在使用 markdown 语法后,会变成 ![a](content/post/article-1/a.jpg)
,一旦手动设置图片链接为 ![a](a.jpg)
就会产生错误。但 ![a](content/post/article-1/a.jpg)
这种链接格式,在 Hugo 中会被认为图片是保存在 index.md
所在目录的下级,即 content/post/article-1/content/post/article-1/a.jpg
,这当然是一个错误的路径。冲突由此而产生。
|
|
诚然,这看起来似乎是一个很小的问题。但想要解决这个问题却并不容易。在 CMS 中,如果要让程序将 ![a](a.jpg)
这种链接结构能够直接关联到index.md
所在目录的图片,需要下很大功夫。因为绝大多数人使用 CMS 都是使用统一图片文件夹管理,需要用到图片绝对地址,很难为了适配 Hugo 单独去做一套方案来适配,而且会产生其他冲突。例如,index.md
所在目录的下级还有图片文件夹的情况。
于是,压力给到 Hugo 这边。
在本地测试中发现,![a](content/post/article-1/a.jpg)
被 Hugo 转换为了 https://localhost/content/post/article-1/a.jpg
其中,/content/post/
来自 CMS 的图片输出设置,/article-1/
为 index.md
所在文件夹名称。
而 ![a](a.jpg)
在 Hugo 中被转换为 https://localhost/article/slug/a.jpg
其中 /article/
是由 Hugo.yaml
中的 permalinks: { post: /article/:slug/ }
输出,/slug/
内容是在 front-matter
中手动设置。
到了这里,问题解决方法就逐渐明晰起来。
在 CMS 图片输出路径中删掉 /content/
部分,这样 CMS 输出图片路径变成了 ![a](post/article-1/a.jpg)
在 Hugo.yaml
中将 permalinks: { post: /article/:slug/ }
删除,同时删除测试 index.md
中手动设置的 slug,这样固定链接将默认使用文件夹名称。
如此,CMS 中的 ![a](content/post/article-1/a.jpg)
在 Hugo 中被转换为了 https://localhost/post/article-1/a.jpg
,同样,手动输入的 ![a](a.jpg)
也在 Hugo 中被转换为了 https://localhost/post/article-1/a.jpg
。问题基本得到解决。
由于 CMS 中图片路径就是 Hugo 生成静态站点后的绝对地址,等于 CMS 在 Hugo 渲染中打了提前量,预测到这个地址最后就会有个文件存在,所以在网页中不会出现错误。
但是这种方法对于很多复杂的 Hugo 主题模板而言,还是差点意思。因为 Hugo 没有对这个地址上的图片文件作任何处理,主题模板也不会对这个地址上的图片文件作 CSS 预设。因为在整个过程而言,这实际上就相当于一个第三方图片。
由此,接下来需要解决的实际问题是:如何将 ![a](content/post/article-1/a.jpg)
导入到 Hugo 的图片渲染程序中。由于我在 Hugo 官方论坛提出前一个目录结构问题,当时技术大佬就指出我可以使用 Hugo 的图片钩子来保证这个路径上的图片得到渲染。
但这个设置并不简单。
我尝试了很多种方法去定义图片钩子。例如,判断 ![a](content/post/article-1/a.jpg)
图片 Markdown 语法中是否包含 /
斜杠符号,是否属于绝对地址,或者更改 Resources.GetMatch
函数等方式。但这些都没成功。
最终,我选择了一个最老土的办法,直接将 ![a](content/post/article-1/a.jpg)
中的图片文件名单独提取出来,无视 content/post/article-1
路径部分,只要匹配到 a.jpg
即导入 Hugo 渲染。但这样做有一个代价,就是前边说的,图片不能再放置于 article-1
内的子目录,必须直接放置在 article-1
中。
至此,我想上一篇博客的文章标题可以修改了,Pages CMS 不再是一个勉强可以使用的 Hugo 博客后台,而是一个具有完全能力的后台,一个设计非常优秀的CMS 软件。
示例:Hugo-theme-stack 主题中的图片钩子设置
|
|
备注:需要批量将index.md
所在文件夹内所有 images
文件夹中的图片文件上提一级使其与index.md
并列
|
|
2024-12-07 22:41:00
从 WordPress 迁移到 Hugo 后,我一直对 WordPress 后台管理以及手机 APP 的便利性念念不忘,为此我在之前也写过关于 如何在手机上更新Hugo博客 的文章,但是在手机上使用 Vscode 和 StackEdit 还是有点麻烦,主要是显示屏太小,一些精细化操作很难用手指触控解决。过程中我也尝试过几种 Hugo CMS 方案,但一直未满足我的需求。
Decap CMS 以前又叫 Netlify CMS,看名字就知道跟 Netlify 有着很强的关联。它默认部署方式就是在 Netlify 上,但是由于我一直没能注册到 Netlify 账号,便搁置了。后来有一天发现 Decap 还有个服务器部署版本,于是在甲骨文 VPS 上弄了下,装是装成功了,但还有一堆与 Hugo 的适配设置看着头大便没搞了。
QUIQR 是一款本地化软件,可以直接在 Windows 安装。但是它并不支持 Web 版,也没有手机 APP,这就使得它没法在手机上使用。与我预期目的不符。
Tina CMS 之前又叫 Forestry CMS 也是一款无头编辑器,但我与它无缘,即便我已经设置好 Tina Cloud 账号并添加项目,但是我一直卡在本地 Tina 安装上边。不知道是我的网络问题还是怎么,我在两台电脑上都没能成功安装 Tina 程序。然后我找到有一个 Vercel 部署的版本,但是部署过程中发现 Tina 提供的 Vercel 一键安装模板似乎是过时的,废了好大劲都没在 Vercel 部署成功。最后,我在 AI 提示下,一股脑下载了一堆 Python C++ win10 SDK,终于是把 Tina 安装上,但同样存在问题。即无法处理好图片链接问题。下边我会详细说明,与 Page CMS 是同样的情况。
Sveltia CMS 是 Hugo 官方推荐的另一个 CMS,属于 Netlify/Decap CMS 的替代者。开发者说 2025 年将发布 1.0 版本,目前的版本还是得先在 Netlify/Decap CMS 搭建好之后才能用。由于没有 Netlify 账号,暂时没办法搞。
重要提示 以下内容中提到的问题在我另一篇文章: 配置Pages CMS让其支持Hugo目录结构 已得到解决。
Pages CMS 是 Github 上一个新的开源项目,在 0.x 版本时,可以选择在 Cloudflare 快捷部署。最近升级了 1.0 版本,默认可在 Vercel 部署。之前在 0.x 版本时我曾试过用一次,当时主要问题是该 CMS 不支持 webp 图片,我在项目提交了 issue,今早收到开发者回复说最新版本已经解决该问题。
于是兴冲冲地按文档部署了 1.0 版本,过程还是相对复杂但也顺利。可是在使用过程中,有一个问题我始终 无法解决
我的 hugo 博客文件都是在
content/posts
下边的单个文件夹,博客图片跟 md 文件在同一个文件夹内。我好不容易解决了正文中图片的上传和引用问题,但是 front-matter 中自动生成的特色图片地址没法被 hugo 渲染。
于是我提交了这个 issue 向开发者反映。但开发者也说他自己暂时没办法解决,而且之前已经有几个人提出过类似问题,都是卡在 Hugo 的文件路径上。
见到开发者的回复后,我一度已经放弃继续使用 CMS 的想法。
Developer
It’s been asked a few times for this (for Hugo specifically).I’ve not yet figured out a way to handle this gracefully in Pages CMS. The expectation right now is that you upload all media in the same folders, not individual folders for your content.
Me
Thank you, I’m completely heartbroken. I’ll just keep using some IDE tools like VSCode, but it’s really inconvenient on a phone.
Developer
Doesn’t mean I won’t get something sorted out ultimately. I just need time to sit down and figure out how I would handle it.The main issue with this Hugo flow is that you need to define the name of the folder (and thus the slug) before you upload the assets. But in Pages CMS, for new entries, the slug/filename is set up on saving the entry.If you have suggestions, let me know.
见到开发者回复后,我突然想到,为啥一定要将 Hugo 的特色图片路径交由 CMS 去转换呢,我自己直接输入一个路径不就解决了。
|
|
|
|
这样,起码解决了 Hugo 特色图片路径错误问题。但其实也带来一个新问题,就是在 Pages CMS 后台,没法在文字编辑区看到图片内容了。在使用 ![](image.webp)
语法后,编辑区里图片直接消失。在添加图片名称后,稍微好点,起码知道这个位置有个图片了。
如果直接在后台按 /
呼出编辑器内的图片功能添加图片,虽然在编辑器内可以看到图片长啥样,但 PagesCMS 会自动匹配图片路径为 /content/post/articl-pyth/image.webp
,也是没法用的,Hugo 构建后图片肯定挂。
但无论如何,终于算是基本搭建好一个能够给 Hugo 使用的 CMS 后台。
我在 Pages CMS 项目下发现好几个类似问题,但都没有解决。于是又只好找老朋友 —— Hugo 官方论坛。
在 Hugo 论坛,回答我问题的又是那位西雅图的 老同志。没想到在他一再追问下,终于找到一个勉强的解决办法,只需要改动一个地方即可。删掉原来图片输出路径中的 content
|
|
但是这种方法并不彻底,仍存在两个漏洞。
相比 StackEdit 可以手动暂停同步的做法,PageCMS 这类程序,会在每一次保存 .pages.yml
文件,每一次上传图片,每一次保存文章内容的过程中都提交更新到 Github 上,这样会造成 Github Actions 或者 Cloudflare Pages, Vercel 等自动部署服务在后台不断消耗部署时长。我本以为新建一个 test 分支会避免这个问题,结果没想到还是在调试 .pages.yml
文件时,连续触发 Vercel 四十多次自动部署,感觉再多点账号都得被干废了。
在 Vercel Setting Git
中,有一个忽略构建选项,选择 custom
并在其中添加如下命令即可。
|
|
原理:在 PageCMS 中添加图片,PageCMS 会自动生成一条
Create content/editor/2024-12-07-pages-cms-a-barely-adequate-backend-for-hugo-blog/6.webp (via Pages CMS)
这样的提交信息,其中关键词就是图片格式了。所以在 Vercel 忽略构建命令中只要检测到提交信息包含 webp 即可忽略部署。不过这种设置也有其他间接影响,好的是以后不想自动部署时直接在消息中写个 webp 就行;不好的是,文件路径里边最好就不要有 webp,否则还得手动去部署。
相同原理,在 Workflow 的部署模板中,添加如下代码,侦测是否仅提交 webp 图片,如果是的话,不启动自动构建。我的 workflow 是设置由 Github 仓库部署到 VPS 的,发挥效果还是比较明显,平常几分钟的活,在 10 几秒就自动停了。但该方法似乎对部署到 Github Pages 无效 ,主要是 workflow 等到侦测命令时,其实都快构建完了,剩下 depoly to github pages 不过几秒钟的事,主要时长都花在前边。
|
|
暂未找到合适方法。不过 Cloudflare 财大气粗,可能也不在乎多构建几次。
最后传上我自己的 PagesCMS 配置文件供参考(专门创建一个 editor 文件夹用来发布由 Pages CMS 编写的内容)。
|
|