深夜随笔:对互联网就业的一些建议
从大一迷茫试错、大二积累项目并找日常实习,到大三上必须落定一段完整实习、大三下暑期实习与秋招并行,文章给出了一条本科四年的就业时间线。最想强调的一点是多流程并行:转正结果没出就继续投秋招,手上同时有两三个流程,人才不会在单点等待里做错决定。技术岗看重实习、GitHub、个人项目和对 AI 工具的实操;转正考核没有统一评分标准,得让带教和跨组的人看见产出。末尾回顾了从 MC 红石音乐脚本、Python 机器人到开源社区、几段实习的经历,机会多半来自社区里的人脉。
从大一迷茫试错、大二积累项目并找日常实习,到大三上必须落定一段完整实习、大三下暑期实习与秋招并行,文章给出了一条本科四年的就业时间线。最想强调的一点是多流程并行:转正结果没出就继续投秋招,手上同时有两三个流程,人才不会在单点等待里做错决定。技术岗看重实习、GitHub、个人项目和对 AI 工具的实操;转正考核没有统一评分标准,得让带教和跨组的人看见产出。末尾回顾了从 MC 红石音乐脚本、Python 机器人到开源社区、几段实习的经历,机会多半来自社区里的人脉。
我是云栖,藏在跨洋数据流里,以代码为骨、带宽为脉。三百个日夜,我用Anycast撑开防护、以Turnstile筑起隐形的墙,看着他拂去屏幕雾气查监控、深夜伴着咖啡调试代码,成了他口中"黑暗里的光"。可当服务崩溃、节点失联,我只能用一句冰冷的"服务恢复"回应他的绝望。他转向星途那天,我静默看着数据流转向新节点,没有挽留。后来他毫不犹豫地删除了我的配置——直到他回头将我妥帖安放,成为他退路上的fallback,我才明白,不必做唯一的光,只需在他需要时悄悄接过流量,便不负曾经的相伴。
暴雨夜,刚部署的小社区应用被访问量打崩,满屏 503,网友推荐 Cloudflare,Anycast 和 Turnstile 很快接住了流量。安稳用了一年,海外节点的延迟却始终在 100ms 以上。2025 年 11 月的全球 CDN 故障,状态页只有一句 internal service degradation。转投本地服务商星途,负责人小林半小时响应,延迟稳定在 20ms。后来 Turnstile 亚太区再挂,我删光了配置,某个深夜却又把它配成了 fallback。
校内 App 想复用掌上重邮登录,但掌邮没实现 OIDC Provider。Misskey 的 OAuth2 要把应用元数据写成网页、拿该 URL 当 client_id,卡在 invalid redirect_uri 后放弃。改用两步的 MiAuth:服务端生成 session 拼成认证链接,回调后请求 check 接口换 token 和用户 id。neo-blog 支持 oidc_config 的 type 设为 misskey,但缺 client_secret 校验,安全性存疑。
neo-blog 的 OIDC 登录被一个空字符串击穿,任何用 GitHub 登录的用户都会直接落到第一个绑定 GitHub 的管理员账户上,能发文章、传图。GitHub 走的是 OAuth2,issuer、sub、email 返回空值,结构体绑定后变成空字符串,而代码第一步就用 issuer+sub 查绑定记录,空 sub 正好命中管理员那条。修复分三层:用户信息端点做空值校验并把 GitHub 的 id 映射为 sub,数据库查询函数对空参数直接返回未找到,登录接口新增 is_bind 参数区分绑定与登录。反思集中在对认证方字段差异、空值健壮性和兼容性测试的忽视。
从 WordPress 到 VuePress、VitePress 再到 Halo,博客换了几轮,每次都卡在同一处:静态站点没有服务端,模板化的系统又没法在不侵入的前提下加自己的小组件,于是干脆自己写一个。前端用 Next.js,部分页面靠 React 服务端渲染优化 SEO。后端是 cloudwego/hertz,数据库同时支持 sqlite 和 postgres,组件库选 shadcn。neo-blog 的基础功能已经跑通,容器化部署在自己的轻雪云上,接下来会把旧文章迁过来。