大象笔记

知者行之始,行者知之成

AI 大模型取代搜索引擎的时代,是时候取消博客网站的 AMP MIP 支持了

这个周有个人加我微信,咨询微信小程序开发的事情。聊之前,他贴了个手机截屏,我一看是百度 app,搜出来的页面是我网站的 AMP 版本(Accelerated Mobile Pages,加速移动页面,最初由谷歌推出,旨在通过优化网页内容来加快移动页面的加载速度)。 如果不是看到这个界面,我都已经忘记了这个版本的存在。原因是,AMP 中我没有加百度统计的代码,而 google 分析我已经好多年没有看过了。 第一感觉是这个风格太丑陋了,而且没有统计跟踪,于是直接上服务器,把 AMP 及 MIP 版本的页面全部 301 跳转到了正常的页面。PHP 就是这点好,直接线上改代码,立马看效果。 取消 AMP ...

阅读全文...

.NET 8 C# 使用模板引擎 Scriban

由于 C# 中没有像 golang 一样内置一个模板引擎,所以做一下选型。 选型一:T4 text templates https://learn.microsoft.com/en-us/visualstudio/modeling/code-generation-and-t4-text-templates?view=vs-2022 没有看懂是否能够在 Visual Studio 之外使用,所以放弃。 选型二:类 razor 模板引擎 https://github.com/toddams/RazorLight 比较喜欢 Razor 的语法,但是这个项目引入政治元素,而且看起来文档也有点乱。 不太 ...

阅读全文...

在编程中变量名的几种表示方法

早上开会时,太无聊了,于是摸了个鱼,查询了一下在编程中变量名的几种表示方法对应的叫法。 为何要了解不同的命名方式呢? 因为 AI 时代,要让 AI 帮你写代码,首先要能描述清楚你的需求。例如,我在实现一个自动生成项目代码的 .NET 工具时,发现对于变量名格式的描述很模糊,需要不断举例说明,但是如果换成约定俗成的叫法,那么 AI 里面就能理解了。 下面就是一个案例: c# 将变量名 PascalCase 形式,转换为短横线命名法(KebabCase) 然后 AI 立即生成了对应的正则表达式代码。(腾讯元宝生成的代码还是不太行,用 POE 的 gpt-3.5-turbo 就非常准确) 下面是 ...

阅读全文...

计划管理由 obsidian 看板回归 vim markdown 的纯文本文件方式

计划管理似乎是一个永恒的话题,我已经记不清在各种项目管理工具之间切换了多少个轮回了😅从 Trac -> Trello -> Asana -> Trello -> TAPD -> Redmine -> Vim Markdown -> Obsidian Kanban -> Vim Markdown 。。。当然还有其他数不清的工具。差生文具多,所言不虚。 最近,我又回归了 Vim Markdown 这种纯文本的记录方式。例如,今晚在赶工一个 android 项目时,为了不让自己过于急躁,我直接在纸上用铅笔整理个大概,然后在项目的 README.md 中 ...

阅读全文...

.NET 8 C# Console 程序命令行解析

由于平时要写大量的增删改查代码,包括 golang gin 的和 C# asp.net 的等等。 用 VIM Snippet 可以解决单文件的问题,但是解决不了要同时新建多个文件的情况。 所以,想用 .NET 8 Console 来实现一个自动生成代码的工具。 首先呢,就需要能方便的解析命令行参数,来区分不同的框架。 依赖库:System.CommandLine 官方介绍 https://learn.microsoft.com/en-us/dotnet/standard/commandline/get-started-tutorial GitHub 项目: https://github.com ...

阅读全文...

QMS 质量管理系统中的供应商管理

最近一直在开发公司内部使用的 QMS 质量管理系统。 虽然是给质量检测部门使用,但是依然加入了供应商管理功能。 一开始感觉质检部门不应该有权限去查看供应商相关的信息,但是后续在开发的过程中,发现确实还是有一点必要,但是需要区分好侧重点。 数据同步策略 将集采平台的供应商都同步过来?感觉没有意义。 不如直接拉取集采平台中的列表,当有评价、打分时,才去创建评价记录。 采用用户故事的分析方法,即领域模型 打开列表页,从集采平台去拉取供应商列表 添加评价时,新建一条本地的供应商扩展记录,再创建一个供应商评价记录 定时同步来料统计,合格率统计 另一个方案: 将供应商列表直接同步过来。 直接使用集采 ...

阅读全文...

多张 PPT 无缝切换,适用于 win10 / win11

昨天公司举办一年一度的行业大会,我以第一鼠标操作员的身份参加了大会。 主要承担了给各个专家演讲时,播放 PPT 的核心工作 💣。在上午彩排预演的时候,政府领导对我切换 PPT 的手法提出了质疑,说每播放完一个 ppt,就回到系统桌面,或者文件夹,再选择下一个,看起来比较 low。是否可以做到无缝切换? 虽然我心中一万匹草泥马飘过,但是想想也非常合理。。。于是在手机上搜索了一下,没找到简单的解决方案。不知为何会议现场手机 5g 信号满格,但是网络异常卡,发个消息都发不出去。于是作罢,先完成彩排,然后想办法。 系统多屏幕设置 中午吃饭的时候,突然想到既然插了 hdmi 线投屏,理论上跟平时办公写代 ...

阅读全文...

.net 8 asp.net core 开发的网站偶尔报 503 错误, 没想到竟然是 Nginx 限速配置导致

现象 实际现象并不是页面直接报 503,而是一个用 vuejs 开发的在线二维码生成工具,后台是 asp.net core。 偶尔会出现 vue 变量不渲染的情况,而且我印象中,一个周遇到 3 次了。 今天在使用这个页面时,又遇到了。不能再拖延了,现在动手排查一下。 从浏览器的调试窗口中,可以看到实际上是在加载一个 js 文件时,报了 503 错误。 我们知道 HTTP 503 状态码代表: 服务器过载:当服务器接收到的请求量超过其处理能力时,可能会返回 HTTP 503 错误 通常是进行了请求限速之后,会触发这个错误。因为大家一般不使用 429 来直接提示请求过多。 惯性思维 因为这个网 ...

阅读全文...

在 Nginx 日志中记录请求的真实 IP,而非 CloudFlare 的节点 IP

最近发现 Joomla 搭建的网站中出现了大量的垃圾评论。 从 Nginx 日志里的行为看是通过程序自动提交的,而非手动提交。因为提交成功后,没有自动跳转到成功页。 暂时不确定对方是如何绕过 recaptcha V2 的验证组件的。。。 于是,想先通过简单粗暴的方式,看看对方的请求 IP 是否有规律。(虽然希望渺茫) 但 Nginx access log 记录的是 cloudflare 节点的 IP (reverse proxy network),而非用户的真实 IP。 查询了一下如何通过更改 Nginx 配置来记录访客的真实 IP。 配置 有个 github 上的配置,可以参考: https ...

阅读全文...

ASP.NET Core in .NET 8 的 I18N 多语言国际化

配置 例如,我想要的效果如下: 支持中文和英文两门语言 默认语言是英文 翻译文件放到 Resources 目录下 上代码,在 Program.cs 入口文件中添加: using Microsoft.AspNetCore.Localization; var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllersWithViews(); builder.Services.AddLocalization(options =&g ...

阅读全文...

基于 ASP.NET Core in .NET 8 开发了一个在线二维码生成工具

平时经常要将开发好的 Android APP 上传到云服务器,然后将下载链接生成二维码,发送给客户,方便扫码下载安装。 之前用的草料二维码虽然满足需求,但是操作有点繁琐,所以想借自学 .NET 8 的机会,边学习边开发一个在线的二维码生成工具。 也算是在枯燥的工作之余,自己找点乐趣吧。 断断续续搞了一个周,每天最多半小时,终于上线了。总体感觉 .NET 8 的 ASP.NET Core MVC 开发起来还算舒服。 就是官方文档比较杂乱,需要东找西找。市面上的书籍也滥竽充数的居多,鲜有从头一步步的构建流程,大多是官方文档的二次消化式输出。 所以,写个 .NET 8 的入门教程,应该很有市场。 体 ...

阅读全文...

对话机器人 Rasa(三十七):服务器上搭建一套新的调试环境

需求 在服务器上搭建一套新的 Rasa 环境,用于联调。 使用不同的 model actions.py 也不同 之所以在生产服务器上新增一个联调环境,原因是: 只有一台服务器。。。 客户端开发跟服务端开发都是远程办公,无法在一个局域网环境下联调。 原环境已经正式使用,不能在上面直接改动,会影响到现有业务。 服务器内存确认 共 8G 内存, 目前已使用 2.4G。有足够的剩余内存搭建新的环境。 实测,两套环境同时运行,使用内存也才 3.8G,不到 4G。 大体思路 [X] 服务器上新建一个同步目录,用来同步联调用的环境。 [X] rasa 项目中,新建一个 rsync 脚本,同步联调环 ...

阅读全文...