大象笔记

知者行之始,行者知之成

计划管理由 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 脚本,同步联调环 ...

阅读全文...

烟台今年夏天可真热啊

来烟台十多年了,第一次感觉夏天这么热。稀稀拉拉连续下了半个多月的雨,湿度也大,每天晚上不开空调根本无法入睡。仿佛回到了珠海的感觉。 往年的烟台,夏天睡觉都是要盖棉被,毫不夸张。今年一反常态,同事说是厄尔尼诺影响,我不懂,也不想研究。只想这个夏天赶紧过去,也希望不要再下雨了。周边地区好多被水淹的,好在这边靠海,都排海里了。要不也得淹。 昨天去海边办公,那边奉行环保式办公。。。连空调都不开,我呆了一个上午,汗流浃背。虽然海风还挺凉爽,但是湿度极大,加上笔记本发热严重,双手放上面感觉酷热难耐。随身带的纸巾都擦汗擦光了。下午赶紧回老巢办公,还是有空调好😂 我同事说,在家没有空调的房间玩魔兽世界,电脑都 ...

阅读全文...

开源商城系统 Magento 修改 Content Security Policy (CSP) 配置,添加新域名白名单

新搭建的 Magento 2.4 开源版本的商城系统,网站首页会报 js 错误,在浏览器的开发者工具中可以看到: refused to load script https://static.cloudflareinsights.com/beacon.min.js,because it violates the following Content Security Policy directive 虽然不影响功能,但是看起来比较让人担心。 static.cloudflareinsights.com/beacon.min.js 做啥的 Cloudflare occasionally upda ...

阅读全文...

DotNet 8 Minimal API with AOT (三): Ubuntu Server 生产环境部署

在使用 HTMX 调用 .NET 8 Minimal API 实现的接口后,这个小的练手项目就算是开发完了。现在需要部署到生产服务器上。 编译 > dotnet publish 可执行文件的大小 > ls bin/Release/net8.0/linux-x64/publish/ -lah total 32M 4.0K ./ 4.0K ../ 11M app* 21M app.dbg* 127 appsettings.Development.json* 151 appsettings.json* 4.0K wwwroot/ app 就是生成的独立的可执行的 ...

阅读全文...