从付费证书到零成本:我的博客 HTTPS 迁移记录
博客上线几年,一直跑在 http 上。直到前几天想把站点的分享卡片和图片引用理一理,才发现混合内容规则把 http 站点拦在外面,索性把 HTTPS 一起办了。 证书这块,最初看到的是 JoyQi 那篇《彻底放弃收费 SSL 证书》。…
博客上线几年,一直跑在 http 上。直到前几天想把站点的分享卡片和图片引用理一理,才发现混合内容规则把 http 站点拦在外面,索性把 HTTPS 一起办了。 证书这块,最初看到的是 JoyQi 那篇《彻底放弃收费 SSL 证书》。…
前一阵我把 Spring Security 的登录、角色、权限这条链路重新捋了一遍,写了一个叫 springsecurity-hello 的小项目。它不复杂:五张表、一个登录接口、一个 JWT 过滤器,再加几个用 @PreAuthor…
这周处理了两条反馈,都不是崩溃。 第一条来自一个老用户:他手机上有一份没同步出去的草稿,升级到新版本之后打开草稿箱是空的。数据没被删——是我改了 drafts 表的字段,而本地那个库文件早就存在了,建表那段代码一次都没执行过。 第二条…
我这周处理的一条反馈很没道理:用户在联系人详情页点「同组的人」进另一个详情,再按 Android 的返回键,回到的不是刚才那个列表,而是首页。两个页面本身都正常,控制台一行报错都没有。 查下去的结论是那次跳转我写的是 context.…
上一篇把网络层收拢之后,我手上剩下一个更难看的角落:model/contact.dart 那个文件。十二个字段,一个类里三段——成员声明、fromJson 里十二行 json['x'] as T、toJson 里十二行 'x': in…
我那个通讯录 App 的网络层,第一版是每个页面自己 Dio().get(...),catch 里各写各的提示。功能都能跑,我也没觉得有问题,直到后端把 token 的 header 名从 X-Token 换成 Authorizati…
我维护着一个把考勤数据从源库同步到目标库的批处理服务。两个库不在同一个机房,中间隔着一条 RTT(一次网络往返的耗时)约 41ms 的链路;外部调度器每半小时调用一次 HTTP 接口触发作业,每次先清空目标表,再把源库的人员全量和最近…
我做的第一个带长列表的页面,是本地通讯录的展示,两百多条联系人,一帧都不掉。等到接上服务端接口、数据涨到三千条,手指按住屏幕往上拖,列表就开始一顿一顿。那时候我的第一反应是「Flutter 列表性能不过如此」,后来才知道问题基本都不在…
我刚开始写 Flutter 的时候,调布局的手法跟当年写网页差不多:宽度不对就套一层 SizedBox,挤了就减 padding,改一轮跑一轮看效果。字体放大一档、或者换到平板,之前调好的间距又开始溢出。真正让我停下来的是一次 Ren…
前两篇我都在讲怎么把界面搭起来,这一篇讲那个「界面之外的部分」:数据放在哪、谁能读到它、它变了谁跟着变。 我是从「项目里第三个把回调函数往下传的文件」开始认真想这件事的。在那之前我对 setState 的理解是「改了变量就调一下它」,…
这一篇讲 Dart 本身。我是带着 Java 和一点 JS 的背景进 Flutter 的,头两周真正拖住我的不是 Widget 和布局,而是 Dart 里那些「看着眼熟但意思不一样」的东西:late、const、mixin、await…
这是系列的第一篇,目标很具体:把开发环境装好、跑通第一个应用,并且在这个过程中把 Flutter 最容易让人误解的两件事讲清楚——它的渲染方式,以及 Widget 到底是个什么东西。我自己是先把这两处理顺了,后面写起来才不拧巴。