- BDR-005: SVG primary + PIL-generated PNG/ICO fallback for favicon set; alternatives (rsvg-convert/inkscape, SVG-only, online generator) rejected with reasons; CV mirror deferred to user finalization. - LRN-002: PIL supersample x8 + Lanczos downscale produces clean small-format icon antialiasing without rsvg-convert/inkscape/ImageMagick. - journal: 2026-05-17 entry — extended-vitrine refactor (1369d27) + favicon set (ef31fb3); CV files left untouched (user WIP). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.7 KiB
2.7 KiB
| type | entry_prefix | schema | rules | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| learnings_registry | LRN |
|
|
Learnings registry (LRN)
Index
| ID | Date | Pattern | Applies to |
|---|---|---|---|
| LRN-001 | 2026-05-15 | certbot --nginx matches server_name, not filename |
nginx + certbot on multi-site VPS |
| LRN-002 | 2026-05-17 | PIL supersample ×8 + Lanczos = clean icon antialiasing | Python stdlib icon generation |
LRN-001 — certbot --nginx matches server_name, not filename
- Date: 2026-05-15
- Pattern:
certbot install --cert-name X(andcertbot --nginx -d X) locates the target vhost by scanning everyserver_namedirective in active nginx configs. The filename insites-available/is irrelevant. A file namedX.confwithserver_name Y;inside will NOT be picked up for domain X. - Context:
/etc/nginx/sites-available/bchanot.frexisted and was symlinked intosites-enabled/, but its body still containedserver_name autreprojet.fr www.autreprojet.fr;— a copy-paste leftover from a previous project. Certbot returnedCould not automatically find a matching server block for bchanot.fr. - Future application: Before running certbot on a multi-site VPS,
grep -n "server_name" /etc/nginx/sites-enabled/*— confirm the target domain is actually declared inside, not just present in the filename. Same logic applies when troubleshooting "why is nginx serving the wrong site" — match byserver_name, never by filename.
LRN-002 — PIL supersample ×8 + Lanczos = clean small-format icon antialiasing
- Date: 2026-05-17
- Pattern: Render icon at 8× target size via
ImageDraw.rounded_rectangle+ellipseon RGBA canvas, thenImage.resize((target, target), Image.LANCZOS). Output rivalsrsvg-convert/inkscapefor simple geometric shapes. Crisp at 16×16 favicon scale, no visible jaggies. - Context: Generated
favicon-32.png,apple-touch-icon.png(180×180),favicon.ico(multi-size 16/24/32/48) forbchanot.frfrom scratch — norsvg-convert/inkscape/ImageMagickon host. Single PIL script, ~20 lines. - Future application: Any project needing a PNG/ICO icon set with a stdlib-only Python toolchain. Skip if shape is complex (text rendering, gradients, curves) — use
rsvg-convertor commit a finalized PNG instead.