📝 个人技术笔记

记录开发中的踩坑与收获 · 非经营性个人站点

📌 关于本站
这是一个纯粹的个人学习记录站,主要分享后端开发(PHP/Python/Go)、服务器运维(Linux/Nginx/Docker)以及前端小技巧。所有内容均为原创实践总结,不涉及任何商业广告或交易。如有错误欢迎指正。
🐘 PHP 7.4 → 8.1 迁移实战:废弃函数与语法变化
近期把老项目从 PHP 7.4 升级到 8.1,遇到了几个典型问题:strftime() 废弃改用 IntlDateFormattereach() 完全移除需改为 foreachimplode() 参数顺序强制统一。整理了详细的替换对照表和测试用例。
🔧 Nginx 反向代理 WebSocket 的正确姿势
给在线协作工具配置 Nginx 反代 WebSocket 时,必须显式设置 Upgrade $http_upgradeConnection "upgrade",否则连接会被断开。另外要注意 proxy_read_timeout 不能太短。附一份可直接用的 server 配置片段。
🐍 Python 批量压缩图片并保留 EXIF 信息
用 Pillow 库对 JPEG 图片做质量压缩,默认会丢掉 EXIF(拍摄时间、设备型号等)。通过 piexif 模块可以在压缩后重新注入 EXIF 数据。对比了 quality=70/80/90 时的体积与画质,推荐 80 作为平衡点。
📦 Git 常用操作速查:撤销、合并与变基
整理了几种高频场景:git reset --soft HEAD~1 撤销上次提交但保留更改;git rebase -i 合并多个 commit;git cherry-pick 挑选特定提交。每个命令都附带实际工作流示例。
🎨 CSS Grid 实现响应式瀑布流布局
不用 Masonry 库,纯 CSS Grid 配合 grid-template-rows: masonry(目前 Firefox 支持)或使用列布局模拟。本文给出一种兼容性较好的 Flexbox + columns 方案,并解决了元素高度不一致导致的错位问题。

✔ 本站遵守《非经营性互联网信息服务备案管理办法》,内容健康向上,仅供个人学习交流。