无锡的项目搞得差不多了,从忙碌的疯狂进代码阶段进入了短暂的空闲期。 手头项目状态 啤酒城:今年没有大的改动,等合同敲定、活动开业前把服务器重新部署上线即可。 不夜城街区:肥城已经完成,剑阁和临夏等项目开业后部署一下,活也不是太多。 琢磨点啥那么,得琢磨个事情干干,这段空档期干点啥好呢~ 软件的版本,又何尝不是人生的版本呢?
阿里的云小店:一台 ECS 跑六个服务
最近在把分散在各地的项目整合,计划合并到一台服务器上,搬家工作搞了整整一天。 选型研究了一番,把去年项目剩余的服务器全取消了,买了一个阿里云 云小站 的 ECS。配置有两种: 2核2G,3M固定带宽,40G ESSD Entry云盘 — ¥99.00/1年起(官网折扣价 ¥956.64/1年) 2核4G,5M固定带宽,80G ESSD Entry云盘 — ¥199.00/1年起(官网折扣价 ¥2507.70/1年) 物超所值,几乎不到 1 折的价...
Prettier 格式化前端代码
PyCharm 社区版无法直接格式化 JS、HTML、CSS 等静态文件(需要专业版)。可以在终端里用 Prettier 一键搞定。 安装1npm install -g prettier 格式化整个项目123# 格式化项目里所有的 js, jsx, ts, tsx, css, html, json# 宽屏下可以把折行宽度设大一些,我的屏幕上 180 是个不错的选择npx prettier --write "**/*.{js,jsx,ts,tsx,css,html,js...
@lru_cache 装饰器实现全局配置
在 FastAPI 项目里,配置对象通常只需要加载一次。用 @lru_cache 装饰依赖函数,可以在不引入全局变量的前提下,实现「单例式」的配置访问,测试时也方便覆盖。 示例代码12345678910111213141516171819202122from functools import lru_cachefrom fastapi import Depends, FastAPIfrom typing_extensions import Annotatedfrom . import co...
时序攻击:为什么不能用 == 比较密码
今天学习 FastAPI 时,细致了解了一下时序攻击(Timing Attack)。核心问题很简单:用 == 比较字符串时,Python 会在第一个不匹配字符处提前返回,攻击者可以通过响应时间的微小差异逐字猜出用户名和密码。 时序攻击是怎么发生的假设攻击者试图猜出用户名与密码,发送 johndoe / love123: 12if "johndoe" == "stanleyjobson" and "love123" == ...
Ruff 格式化 Python 代码可真好用
最近发现了一个非常好用的 Python 代码格式化工具:Ruff。由 Astral 出品,速度极快,还能同时做 lint 和 format。 安装1pip install ruff 基本用法格式化单个文件: 1ruff format <file> 格式化整个项目目录: 1ruff format . 体验把所有项目都用 Ruff 格式化了一遍,快到难以想象——几百个文件的项目,一两秒钟就搞定了。如果还在用 Black 或手动对齐 PEP 8,值得一试。
Counter-Strike F1 按键自动购买配置
闲来无事打了一会儿 CS,按 F1 自动购买时只买了主武器,子弹也没补满。查了一下,问题出在 <game dir>/cstrike/autobuy.txt——这个文件定义了自动购买的优先级和清单。 autobuy.txt 是什么游戏按文件中的顺序依次尝试购买。主武器买到一个之后,后面的主武器别名会跳过;副武器同理。注释里列出了所有可用的购买别名。 我的配置在默认基础上补全了弹药和装备,闪光弹买两个: 123456789101112131415161718192021222324...
页面烟花特效:用 canvas-confetti 庆祝客流破万
历史项目有个新需求:当客流达到整万数时,页面来一段庆祝特效。研究了一圈,最后选了 canvas-confetti,效果还不错——两侧礼花 + 中央爆炸 + 全屏贺词,持续约 43 秒。 点这里查看演示效果 实现思路整体分三块: 全屏贺词层:半透明黑底 + 变色文字,用 jQuery fadeIn / fadeOut 控制显隐。 两侧礼花:requestAnimationFrame 循环,从左右边缘向中间喷射粒子。 中央爆炸:setInterval 每 2 秒触发一轮,在屏幕中央...
常用的 Git Alias
重装了一次电脑,记录一下 Git alias 配置。 12345678[user] name = Jinloh WU email = i@tiaobug.com[alias] lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-comm...
用 CaptchaCracker 训练模型识别验证码
新项目需要去一个网站上爬数据,网站上有验证码。以前简单的验证码可以直接用 tesseract 识别,但这次长这样: 有斜线干扰,数字是彩色的,且歪歪扭扭。试了几次 OCR 方案都不成功,计划用 TensorFlow 训练模型,过程中发现了参数已经调好的 Python 库 CaptchaCracker。 训练模型需要调整的参数不多,给定验证码图片的宽度和高度即可: 1234567891011import globimport CaptchaCracker as cctrain_img_pa...