大象笔记

知者行之始,行者知之成

golang gin static 强制以文件方式下载

用 golang gin static 实现了一个文件下载功能,同时下载前需要先鉴权。例如: // serve /download under a group that enforces token validation g := r.Group("/download") g.Use(DownloadAuthMiddleware()) g.Static("/", downloadPath) DownloadAuthMiddleware 是一个中间件,会判断文件下载链接中的 token 参数是否过期。 这个加载功能,在本地开发环境是一切正常的,但是到了线 ...

阅读全文...

Docker Compose 配置容器的工作目录(working_dir)

使用 Docker Compose 配置文件,新建了一个 alpine 镜像的容器。 里面运行了一个 golang gin 开发的 web 应用。没想到,又踩了一个 docker 配置的坑 🥲 我感觉踩的 docker 坑多得数不过来啦 相对目录问题 我发现了一个线上的 bug,线上服务器中,使用 golang 创建的相对路径的目录,结果发现目录创建在了根目录 / 下,而不是预期的 /app 目录下。 本地开发机,没有使用 docker,目录位置都是正常的 线上服务器,使用 docker 部署的,目录位置不对。全部到了根目录下。 线上服务器,不使用 docker,使用 systemd 直接运 ...

阅读全文...

昆汀推荐的21世纪10部电影

近日,知名导演昆汀·塔伦蒂诺在播客节目中,正式揭晓了他心目中自21世纪以来最为杰出的电影作品榜单。据悉,这份精心挑选的片单共收录二十部影片,其中位列前十的电影如下: 《黑鹰坠落》 《玩具总动员3》 《迷失东京》- 2025-12-07 看完。英文名为 《Lost in Translation》,中文名翻译的不太好 《敦刻尔克》 《血色将至》- 2025-12-08 看完。神剧本,只有老美才能拍出这种类型的神片 《十二宫》 《危情时速》 《疯狂的麦克斯:狂暴之路》 《僵尸肖恩》 《午夜巴黎》 正好最近不知道看什么,是个值得参考的清单。我决定从迷失东京开始 🤣 (周末看了一下,开屏雷击,建议独 ...

阅读全文...

Golang Gin Static 缓存大坑:embed 文件无法被 CDN 和浏览器缓存

Golang 最爽的一点是,可以打包时将静态文件 embed 进二进制文件中,部署时只需一个可执行文件,极大简化了部署流程。 例如,网站的 js 和 css 文件,可以 embed 进二进制文件中,而无需发布时再额外拷贝一堆静态文件。 但是,最近我发现了一个浏览器缓存问题! 😓 问题现象 今天早晨,我还没起床,突然想看看最新开发的一个网页版手机租金计算器是否能在微信里正常打开,主要是担心微信对某些 js 特性的支持不好。 结果发现,页面一片空白,但是刷新了几次就正常了。有点懵,打开阿里云 ESA 的请求日志,发现访问 css 文件时,每次都回源站请求。 其中一次源站没有响应,导致页面空白。这 ...

阅读全文...

Cloudflare VS 阿里云 ESA :开发者眼中的“流量黑洞”与“免费天堂”

最近一周同时经历了国内网站服务器和海外服务器被大规模 CC 攻击的经历。 恰好同时使用了阿里云 ESA 和 Cloudflare 两种不同的防护服务,也通过这两家的服务分别解决了国内和海外的 CC 攻击问题。 经过几天的折腾,算是有了一点点的经验收获。这里主要说一下阿里云 ESA,因为 cloudflare 大家可能都比较熟悉了。 而我则是先使用的阿里云 ESA,之后才使用的 cloudflare。我用 cloudflare 时,也是完全依据使用 ESA 时积累的经验。 先说好的地方 经过一周多的使用,算是掌握了基本的阿里云 ESA 内置的 WAF (Web Application Firew ...

阅读全文...

打工人的工作月报生存指南:把周报喂给 AI,月报轻松生成的提示词

这个周末,也是月末,刚写完工作周报,又要写月报。 感觉非常得麻烦。周报还好,把几个项目的 Git 提交记录整理一下就行了。 但是月报就麻烦了,不仅要把周报内容汇总,还要进行分析总结,编写 KPI 达成情况。 我就想能否把每个周的周报内容,从企业微信的周报里导出来,放到一个文本文件里,然后让 AI 帮我生成月报内容。 于是,我动手测试了一下。先说结论,效果不太理想。 主要不理想的地方是,AI 生成的月报虽然看起来比较正式,也比我更懂 KPI 这些东西(其实我连部门的 KPI 是啥都不知道),但是内容比较空洞,缺乏细节。 但也许这就是领导们想要的吧,毕竟领导们也不太关心细节。 对我而言,写周报也好 ...

阅读全文...

Magento 服务器清理日志,释放磁盘空间

今天发现 Magento 服务器的磁盘空间又快满了。怕是支撑不到下周了,所以周末清理了一下。 还是做成自动化脚本比较好。 Magento Log 我发现一个 exception.log 文件占了 50G。可能是攻击请求太多导致日志特别多。 cd var/log/ ls -lah truncate -s 0 *.log truncate 命令专门用于调整文件的大小,可以将文件截断为指定的长度,将长度设置为 0 即可清空文件内容。 系统日志 /var/log/journal 是 Linux 系统中 systemd-journald 服务用于存储日志的目录。它记录了系统启动、内核信息、服务运行状态 ...

阅读全文...

海外站被攻击,cloudflare 自定义防护规则创建策略

周六的凌晨被一堆网站服务器宕机报警邮件吵醒。这两周刚经历了国内网站被广东电信日均 40 万 PCDN IP 轰炸攻击, 没想到海外站又被攻击了。查看 Cloudflare 仪表盘,发现流量暴增。 第一次遇到海外站的流量攻击,我感觉处理策略跟国内站有些不同,特此记录一下。 虽然大家都知道 cloudflare 很强大,但是对于非技术人员来说,要能梳理出来防护策略,我感觉还是有点难。 我这周也提交了阿里云 ESA 工单,我发现售后工程师也业余的不行,给出的策略都反逻辑的,如果是没有经验的客户直接使用,会导致正常流量被误封。这是没有办法的事情,处理攻击还是需要稍微了解一点开发和运维的知识。 首先确认 ...

阅读全文...