普通视图

发现新文章,点击刷新页面。
昨天以前obaby@mars

520,521

作者 obaby
2026年5月21日 10:23

有时候不得不佩服谐音的造物能力,这原本平平无奇的两天在某一天就忽然变成了节日。最近几天在忙着发布闺蜜圈新版本,虽然更新的功能不多,还是提交了一个新版本提交审核了。审核这件事情,想着一次过审,真的是太难了,期间免不了来回的修改,提交。

当然,有时候也会出现一些乌龙事件,oppo的审核在app被驳回之后提供的审核视频竟然是另外一个app的。

当然,这次oppo的更新,主要是加了他们家的推送sdk。这样,总算是有完整接入一个平台了。

自从上个周末过完之后,还发生了一件事情,自己的蓝牙耳机不见了。家里找了、公司找了、车上也找了,从此再也没找到那副耳机。就那么凭空消失了。对象说自己的耳机给我用,不过最终还是没接受。在找了几天无果之后,直接从二手东闪送重新买了一个,区别在于这次买了一个主动降噪的。之前没用过这种带主动降噪的耳机,体验了一下感觉还是可以的。

至于买的这个东西算什么,其实也没什么想法。邻座的小姐姐还说,你这耳机找不到了,这是马上就买到了新的吗?

作为一个行动派,自然忍不了这种磨磨唧唧的漫长等待。

有时候总说是需要点仪式感,这种仪式感有时候也感觉没什么太多的意思,但是没了却又感觉像少了点东西,有时候或许就是这么纠结吧。

车外还在淅淅沥沥的下着小雨,花束的外层塑料带上有的地方能摸到湿漉漉的雨水。

这雨已经下了好几天了,也有很多地方已经泛滥成灾。

今年的520,感觉多少是有点不正常。晚上刷短视频的时候,看到了两个神奇的生物:沙沙哥,哈哈姐。这精神病发病率15%的水准还是值得关注的,这世界上走的东西,看着是个人,实际上不一定。

早上送宝子上学,一个中老年妇女骑着电动车直接闯红灯从过马路的学生中间疾驰穿过。护学岗的大哥喊了一嗓子,小心学生。那老女人练速度都没降低一点,如出入无人之境直接走了。真想把这个贱人从电驴上拽下来揍一顿!

闺蜜圈 [v 5.1.88]

作者 obaby
2026年5月18日 11:09

更简单更好用的大姨妈记录app:https://guimiquan.cn

更新记录:
5.1.88
数字版本号:528
华为版本号:5.2.01 550
Apple 5.1.88 528

1. AI助理添加快捷指令开关,可以自行控制是否开启快捷指令处理
2. 修复了部分已知bug

距离上个版本发布已经过去数个月了,这几个月并不是什么都没干,而是想着不断的把她弄的更完美。想继续扩大上架的范围和区域,期间成功了一些,也失败了一些。

成功的几个(三星、oppo[更新])来之不易,失败的几个更是各种不同的原因,应用商店本身的、各种所谓的政策的。至于如何解读这个东西,这么久了其实自己依然解读不了,只能收到什么整改通知就去做什么类型的整改。

至于整改有没有效果,那就是另外一个故事了。在某些时候迫不得已上了个阉割版本,作为一个注重用户体验的开发者,这的确不是我想看到的。

 

 

 

UniAdmin Invalid uni-id config file

作者 obaby
2026年5月15日 15:56

上次更新闺蜜圈还是很久之前的事情,最近也确实没顾上自己的这个曾经倾注了无数心血的app。前段时间,申请了华为的商户号,本来以为能正常的上架内购相关的功能,然而最终卡在了商户密钥创建的地方。折腾来折腾去,最终还是没能跨越这个鸿沟,出师未捷身先死。

最后为了满足应用市场的合规需求,进行了功能阉割,现在华为应用市场的版本是个阉割版,如果需要全功能版本,请从官网https://guimiquan.cn下载。原生鸿蒙版本会在稍后更新,同样大概率也是个阉割版。

今天想登录下uniadmin,做下app更新发布,却发现登录不了了:

搜了下这堆错误,发现没什么有用的东西。最后还是得自己动手,按照字面理解就是缺少配置文件,而这个配置文件是登录必须的。打开本地目录发现这个文件竟然真的咩有了。

git追踪发现,不知道在哪个版本之后,文件忽然被删除了。这就挺神奇的,竟然还会少文件,关键是,unicloud的文件也不见了。这真是见鬼了,好在本地还有备份的uni模块目录。去扒拉一通,找到了这个文件:

要解决这个问题,加单来说就是在config目录下新建uni-id,然后穿件config.json文件。

{
    "requestAuthSecret":"sesrct",
  "passwordSecret": "password-demo",
  "tokenSecret": "tokent-demo",
  "tokenExpiresIn": 7200,
  "tokenExpiresThreshold": 3600,
  "passwordErrorLimit": 6,
  "bindTokenToDevice": false,
  "passwordErrorRetryTime": 3600,
  "autoSetInviteCode": false,
  "forceInviteCode": false,
  "app": {
    "tokenExpiresIn": 2592000,
        "tokenExpiresThreshold": 864000,
    "oauth": {
      "weixin": {
        "appid": "填写来源微信开放平台https://open.weixin.qq.com/创建的应用的appid",
        "appsecret": "填写来源微信开放平台https://open.weixin.qq.com/创建的应用的appsecret"
      },
      "apple": {
        "bundleId": "苹果开发者后台获取的bundleId"
      }
    }
  },
    "web": { 
        "tokenExpiresIn": 7200,
        "tokenExpiresThreshold": 3600,
        "oauth": {
            "weixin-h5": { 
                "appid": "微信公众号登录所用的appid、appsecret需要在对应的小程序管理控制台获取",
                "appsecret": "微信公众号后台获取的appsecret"
            },
            "weixin-web": { 
                "appid": "微信PC页面扫码登录配置appid",
                "appsecret": "微信PC页面扫码登录配置appsecret"
            }
        }
    },
  "mp-weixin": {
        "tokenExpiresIn": 259200,
        "tokenExpiresThreshold": 86400,
    "oauth": {
      "weixin": {
        "appid": "微信小程序登录所用的appid、appsecret需要在对应的小程序管理控制台获取",
        "appsecret": "微信小程序后台获取的appsecret"
      }
    }
  },
  "mp-alipay": {
        "tokenExpiresIn": 259200,
        "tokenExpiresThreshold": 86400,
    "oauth": {
      "alipay": {
        "appid": "支付宝小程序登录用到的appid、privateKey请参考支付宝小程序的文档进行设置或者获取,https://opendocs.alipay.com/open/291/105971#LDsXr",
        "privateKey": "支付宝小程序登录用到的appid、privateKey请参考支付宝小程序的文档进行设置或者获取,https://opendocs.alipay.com/open/291/105971#LDsXr"
      }
    }
  },
  "service": {
    "sms": {
      "name": "应用名称,对应短信模版的name",
      "codeExpiresIn": 300,
      "smsKey": "短信密钥key,开通短信服务处可以看到",
      "smsSecret": "短信密钥secret,开通短信服务处可以看到",
            "scene": {
                "bind-mobile-by-sms": { 
                    "templateId": "绑定手机号使用的短信验证码模板", 
                    "codeExpiresIn": 240 
                }
            }
    },
    "univerify": {
      "appid": "当前应用的appid,使用云函数URL化,此项必须配置",
      "apiKey": "apiKey 和 apiSecret 在开发者中心获取,开发者中心:https://dev.dcloud.net.cn/uniLogin/index?type=0,文档:https://ask.dcloud.net.cn/article/37965",
      "apiSecret": ""
    }
  }
}

注意,这个东西就是个json不能有注释。然后重新上传config模块即可。

如果passwordSecret 这个东西变了,可能就得直接去数据库改密码了,好在我的文件还在,不用去改密码。

人工服务

作者 obaby
2026年5月14日 15:02

多数时候,我并不喜欢去为了那点小恩小惠去折腾一些事情。主要感觉付出的精力与得到的东西相比,那些东西完全没什么性价比。

积分兑换,也基本不怎么兑换,都是快过期了,收到提醒消息才看一下有多少积分,是不是可以换点东西。而能换的东西折腾来,折腾去不外乎还是那点玩意儿,纸巾、湿巾、杯子等等。

节前收到海底捞的提示信息,说有几分要过期,登录小程序之后,对换了个100块钱的代金券。

偶尔去中石油开卡加了一次油之后,给了张洗车券。后来连续下了几天雨,雨过天晴再次加油的时候想顺便洗下车,结果被告知洗车机坏了,没法洗,下午维修。这就很离谱,让加了个员工的微信,说来之前可以先问下能不能洗,第二天问依然是不能洗。一拖就是一周,终于体检结束之后去洗了一下,前后不过五分钟,连泡沫也没有,纯粹就是水冲。

这种洗法,也只能说是聊胜于无,其他的地方冲了下勉强能看了,最起码车上的鸟屎啊之类的都没了。这种后视镜上的最后还是自己用湿巾擦掉的。

相对于其他加油站的油价来说,差价也足够补出来这个洗车的钱了。毕竟自己还办了自助洗车的会员卡,这么看来,这加油洗车也不怎么划算。

这种相对来说还是能接受的,比较坑爹就是联通的积分兑换,兑换了一个折叠躺椅,到了之后发现拉链有问题,连个退款售后的按钮都没有,这意思是主打一锤子买卖。

联系联通的客服,联通答复让找京东:

然而,看了下二手东的客服电话,到下午六点,今天早上给二手东的客服打电话,根本没人接听。直接从二手东的plus会员找客服,总算是有人联系上了:

jd让提供订单号,我怎么tm有这种订单号,看不到订单号不了了之。

继续给联通打电话,客服还想踢皮球,直接告诉他们已经联系过京东了,别再说联系京东。最后客服说给联系联通商城,中午的时候,收到电话,让提供照片,上传照片时候说联系商城处理,到现在还没反馈。

打各种客服电话,都是tm清一色的狗屁智能助理让说出问题,提供答复!明确告知需要人工服务,那些智障ai也毫不理睬,这傻屌玩意儿设计的目标就是直接把用户堵在外面。

现在真的是用户都不配有个真人来服务了。

呸,都是tm垃圾!

体检以及其他

作者 obaby
2026年5月12日 15:23

2026年的体检,比25年来的晚了一些,差不多正好一个月的时间。这种体检,感觉总是有些敷衍,感觉查了很多项目,但是感觉查的效果又很一般。

昨晚跟对象说,今天要去体检,可能得走的稍微早点。最好能自己把车开回去,这样自己就可以稍微早点走了,毕竟约的时间是七点半到八点。自从上个月底对象车位重新摇号之后,就没有车位了。于是车也不开了,现在两辆车都停在我公司附近的停车场。毕竟小区里只有一个车位,开回去反而没地方可以停。

晚上下班回去也是开大白,之前对象开的时候,车机一直是连接对象的手机的carplay。未来几个月自己要长时间开这辆车,尝试连接自己的手机,发现这换了车机之后,竟然支持huawei hicar,这多少是属于有些出乎意料。当然,这个支持是通过zlink实现的。这十年前的老车,也是用上了新的车机交互系统。

用了几天之后发现链接效果还算不错,不过稍微有些可惜的就是网易云音乐可能是没有原生鸿蒙支持的问题,虽然可以播放音乐,但是无法显示歌词,在某些时候链接车机之后无法自动播放,得在手机上重新打开网易云音乐,才能播放音乐。

这个东西还有一个牛逼的地方是竟然可以播放视频,这个在carplay上是被禁止的。支持快手、抖音、bilibili等等,还支持多功能方向盘的方向键切换视频。虽然如此,用车机看视频,的确不大符合我的使用习惯。

早上送完宝子之后,驱车去体检医院。虽然还不到八点,真个海尔路已经堵成了一锅粥。终于辗转腾挪到了医院外面之后,被告知没有预约不能从北门进停车场,让走南门。而医院对面原来开放的停车场布局变了,原来的入口现在成了出口,入口在哪里根本不知道。毕竟上次来是一年前了,只好往前走找了个路边收费停车场开了进去。停好车,签到已经是八点多了。

开始的检查项目还算是比较迅速,除了彩超、心电图等的时间有点长,其余的半个来小时就搞定了,昨晚彩超心电图也才一个多小时。最后一想做ct反而成了最耗时的项目,就开了一个检测房间。签到排队的时候,前面大约有十几人,自己等了半个多小时做完之后,再次看排队的队伍已经排到电梯口了,大于有三四十人。万万没想到,这最后竟然都卡在了ct上。

一通检查先来,有改观,也有新的问题。

最起码原来的中度(中到重度)脂肪肝没了,身材也从肥胖变成了超重。

医生也说,再努力一下,马上就可以变成标准体重啦。

裸奔

作者 obaby
2026年5月11日 13:25

每次使用AI来写一点东西,总觉得一切内容都在ai的监视下暴露无疑。当然,那些全新创建的项目也无所谓,本来就是它生成的,但是一些旧项目,在开始ai之后,其实就相当于给ai提供了大量的代码样本和示例。

在ai能力越来越丰富,对于程序员的侵略性变的越来越强的同时,其实也引入了一些新的问题,最主要的就是安全性问题。大量ai生成的代码,无人审计也没有人知道会不会引入一些漏洞或者缺陷。另外一个问题就是,程序员与ai的交互变得可追踪,可重放。问题从来不是得到答案就结束了,后续各种交互过程就成了ai迭代训练的样本。

 

上图是教主的微博内容,发生这种现象其实毫不奇怪,毕竟交互是要提交相关的代码片段或者实现逻辑的。有时候让ai实现功能,在ai无法达到想要的效果的时候,我也会给出具体的步骤提示,甚至包含示例代码。这些稀缺性的交互内容就成了相对来说价值比较高的样本。

也不是所有的交互都会成为训练样本,毕竟用ai生成的内容训练ai会让ai不断降智,这也是为什么我说以后人工产生的内容(不是国内那种复制粘贴的内容)依然具有较高的价值。

同样对于一些敏感内容的交互,也应该有一定的加密或者保密方式,毕竟这些东西一旦到了云端之后,至于那天会出现在什么地方那就不确定了。这还是使用直连的情况。

如果使用各种聚合服务,那自己的数据就变得更加公开了,几乎所有的聚合服务平台都会记录交互内容。这些内容后期会被聚合服务平台进行售卖,这也是他们收入的一部分。至于这些东西卖给谁,那就更无法追踪了。

所以一些比较私密的项目,建议不要使用这种聚合服务,并且适当控制ai工具的权限。

毕竟,你也不想让别人看到你在互联网上裸奔吧。

死去的回忆

作者 obaby
2026年5月8日 16:34

就在刚刚,收到腾讯企业微信的消息,提示公用邮箱空间不够了,为了能够正常收发邮件请及时清理邮件。

在进行邮件批量删除的时候,隐约看到几封邮件从眼前一闪而过,而那几封邮件明显不是邮件管理员。登录到web版本的邮箱才发现,在失踪的日子里,有好多人给自己发过邮件,当然也有其他的邮件。

这些邮件淹没在了这茫茫的退信通知中。也在这时候看到了 云无心 的一封邮件:

一副水墨画,涓涓的小河,这是那小山远没有如此的巍峨。而昔人也已乘黄鹤去。

还有alrclyacevs2borear   等发的关心的邮件,时间太久了,也不回复了,感谢大家的关心和惦念,当然,还有最开始不小心删除的那些,一并谢过了。

对于jeffer.z的咨询问题,看到的有些晚了,也回复了。深表抱歉。

那些没回的消息,不是因为高冷,也不是因为不想回。从来没想到会有人直接回复到这个邮箱,有些出乎意料了。

感谢宝子们的关心,不管如何,我还是会一直向前,爱你们。

明知山有虎

作者 obaby
2026年5月8日 09:42

每当想尽心尽力的去做点事情的时候,总是会有些意外不期而至。这些意外,就一个作用,让自己那仅存的责任心,再少那么一点。

之前自己曾经说过,工作就当成工作就行了,不要当成事业来干。尤其是没有领导关注或者自己依然不在权利中心的时候,稍微的那么一点责任心带来的不是成就感,是无穷无尽的黑锅。如果说把工作当成事业来干,这工作不配,我也不配。

几年前一个烂尾项目,项目经理离职之后,验收无望。连个推进的人都没有,当时自己带着研发去开发的这套系统。之所以验收无望是原来的项目经理与甲方完全没有任何的功能需求交互,开发了一堆毫无实际价值的功能。我安排产品经理去沟通需求的时候,项目经理说,沟通什么需求,完全没必要,我说的就是需求。

在这种所谓的大言不惭的承诺下,系统开发出来,发现完全无法满足甲方的需求。也就在这时候,项目经理离职了,火速交接,第一天听说,第二天人就不见了。这个烂摊子从此就成了无人问津的项目,所有人避之唯恐不及。彼时,自己座位项目的研发总监,想着能交付还是要教父的。于是接下了这个烂摊子,带着产品经理驻场对接需求,所有功能推翻重新开发,两个月之后勉强满足了甲方需求。服务器费用报批一直走不出来,为了上线,自己还垫付了一年的服务器费用两万多,这两万多至今还没给报销。

后来甲方要求进行项目推广,这本来也不是开发方的需求,就是因为前项目经理的口头承诺,自己又带着人自付邮费跑了一个多月进行项目推广。终于在半年之后,项目验收了。在验收前就开始盯着考核验收的问题,每个月扣10个点的绩效。连续扣了三个月,不得不说,自己也是真的傻逼。

半年之后,甲方终于签了验收合同,这件事情才算告一段落。而现在,又开始折腾回款,至于回不回款,那不是我能左右的。严格说来,我们其实是算丙方,乙方与实际使用方签的合同,我们作为分包商拿的这个合同。我们的甲方-项目乙方以甲方没给他们付款为由,不给我们付款。当然,他们说的也是事实。但是这个回款关我屁事?

现在又开始考核这个所谓的回款,又要扣10个点的绩效。当能力成为负担的时候,我还是决定做一个战五渣。

明知山有虎,还向虎山行?

这纯粹就是有病。

明知山有虎,

那就别上明知山!!

稍纵即逝

作者 obaby
2026年5月7日 21:55

五一之前忽然收到二姐的消息问什么时候回去,说老太太的钥匙又丢了。二姐说的钥匙,是那个写字台上钥匙。之前已经丢过好几次了,上次回去有用钢锯把锁给锯开,换上新的锁。不过这把锁只带了两把钥匙,一把留给老太太,另外一把自己带走了,就是怕那天她丢了钥匙,需要再次锯锁。万万没想到,这次丢的这么快。

收到这条消息的时候,正在陪宝子上网球课,我回了一条,不回了吧。回完消息,看到宝子已经打完一筐球了,把手机装进口袋,过去跟宝子一起捡球。

教练问了一句:『明天回老家?啥时候回来?』

『还不大好确定,到时候看看吧』我回道。这种兴趣班之类的,节假日基本都没放假了,正常上课。目的自然也很简单,就是为了挣课时费。

当然,这种答复主要是因为不想假期去上好几节课。毕竟,现在一周两节课,费用的确是有点高,另外一个原因就是可能还想着出去玩玩。每当休息的时候,闲暇的时间,真的并没有想象的那么多。第二天约了眼科医院的检查,带着宝子去查了下视力,同时测了下眼轴,被告知远视储备依然不足了。

对象陪着宝子等待叫号去做检查,自己打伞找了个配钥匙的地方去重新配几把钥匙,回家之后给姐姐留下几把,不至于丢了之后要又打不开抽屉。配一把钥匙2块钱,不到几分钟的时间,重新又配了五把钥匙出来。

回到医院,复诊医生看了下报告,说可以配一副减缓视力衰减的眼镜,这种眼镜很多的小凸点。但是价格,的确也不算便宜,国产三千,进口五千多。一时没想好配还是不配,事情暂时搁置。只是,有时候真的怕如果错过了这个机会,后面近视了,可能还是会后悔。

回家之后,宝子说:『我想回老家。』

她想回去,自然是想和她的小姐姐一起玩。既然没有安排其他的行程,回去自然也不是不可。周三从青岛出发,出了青岛就开始下雨,要么淅淅沥沥,要么大雨倾盆。到了县城雨势才逐渐变小,等到家的时候,甚至偶尔能看到太阳。

到家之后,姐姐们早就到了,开始准备午饭。合适的气温,合适的天气,索性直接在院子里摆好桌子,在院子里吃饭。除了偶尔从树上飘下来的杨树毛,一切都完美无瑕。

两张桌子拼在一起,还是稍显拥挤,只好先让孩子们先吃。毕竟他们吃的快一些,一个孩子吃饱跑了,剩下的也就吃不动了,跟着一起跑掉了。饭后,我又想起来上次回家的时候从阡岭上看到的那几株植物,小时候虽然常吃。但是却不知道学名是什么,上次回家的时候还在花期,现在已经结果了。跟二姐扛着镢头,去刨了几株出来。放到了后备箱里,从老家往回走的时候发现有些蔫了,还是刨的太早了,应该走之前刨出来,可能成活率会更高一些。小的时候,在外面见到一些小树苗,总是刨出来,移植回家,但是却从来没有成才过,过一段时间就死掉了。尽管如此,却还是乐此不疲,想着哪一天这颗幼苗能长大,结出果子来。

回到家,二姐提议,『不如咱们去司马沟吧,哪里有个大的秋千。』

这个司马沟的大秋千,早在过年的时候就建好了,不过但是没去,主要是感觉可能真的挺多的人的。拿出手机看了下,预计半小时之后将会下雨。我提议稍等一下,果然,半小时后狂风大作,院墙外的杨树被吹得大幅摇摆,感觉随时要断掉的感觉。在狂风吹了十几分钟后,忽然听到一声巨响,跑外院内一看,屋顶上掉上了两根碗口粗的树枝。屋顶的瓦,也已然已经有好几块阵亡的。

一个小时之后,风停了,雨停了。这时候自己能做的,不过是把屋顶的树枝拉下来,找了一根细绳,拴上一根木棍。抛了几次之后,终于成功把树枝给拉了下来。至于怎么修复屋顶,这个自己的确无能为力了,只能找专业的人士来处理了。

雨过天晴,空气也变得清冽,空气中的花香不在浓郁。想着宝子的姥姥喜欢吃槐花,虽然现在多数的槐花都已经完全盛开,不过要想找到那种稍微绽开的虽然需要费些功夫,却也不是完全找不到。带着孩子们,沿着村里的小路往东山前进。说是东山,其实并不算高,山腰上是各种新建的以及废弃的厂房。

野外的槐树,挂满了白色的花朵,靠近之后能闻到真真的芬芳,撸一把放进口中,能吃到丝丝的甜味。宝子说,生的比熟的好吃。

沿着厂房的铁栅栏前行,继续寻找尚未完全盛开的槐树,这次搜寻,并未找到合适的槐树。在路的尽头是一个类似水坝的结构,两侧有两排台阶,每级台阶大约四十厘米,宽度大约也有三四十厘米,整个大坝高度大约有七八米。看着这两排台阶,以及缓缓落下的夕阳,忽然内心有个大胆的想法,如果自己爬上去,应该刚好可以拍到夕阳落下的场景。

自己爬到一半的时候,宝子在下面喊:『我也想爬』。

『太陡了,你别上来』我停下来回答。等爬到顶才发现,自己真的没那么大胆,站起来之后,双腿甚至稍微有些发抖,而此刻如果让自己站着掏出手机牌照,感觉的确是有些难度。本来以为大坝两个H型的顶部是完全连着的,到顶才发现,这个H中间的横梁,竟然有个大约一米多的凹槽,完全就是一个凹字形。这四十公分的宽度,加上这一米的深坑,一米多的宽度,自己也不敢跳过去。

真的害怕一不小心就掉到了下面的石堆上,那就嗝屁了。只好蹲下来,沿着原来的台阶,颤颤巍巍的有回到了地面。然而,等自己绕过这个大坝从边上的斜坡到坝顶的时候,太阳已经完全落到地平线以下了。

这稍纵即逝的夕阳,真的没有抓住。只看到远方山顶的风力发电机在夕阳的余晖中旋转。

Keep Moving

作者 obaby
2026年4月28日 16:45

昨天晚上跳绳的时候,终于用的跳绳,另外一根绳子也断掉了。这个跳绳用到现在,也的确是不容易了。

上周的时候就发现摇起来不是很顺滑了,对象说给买新的,这两天应该就能到。然而,等的桃花都谢了,绳依然没到。只好拆掉断掉的部分,重新插回去。不过这么一来,鉴于之前左手一侧的已经断过一次了。这次右手的断了,正好调整完就一样长了。

坚持一项运动,自己也没想到能坚持这么久,甚至让跳绳成为一种习惯。

在跳绳之前,也有几年不曾进行任何的运动。之前,总是有无数的接口,跑步机被卖了,不想出去运动。

等真正的下定决心之后,发现事情似乎也没那么困难,事情的开始,总是有些艰难,有些痛苦,有些抵触。然而,当一切成为习惯之后,发现也没那么困难了。只是有的装备来的稍微晚了点。

前段时间开始买鲨鱼裤,之所以买这个,主要是以前太胖真的穿不了,另外一个原因是,小腿在运动的时候缺少束缚力,运动完之后总是觉得没那么舒服。

然而,这女装啊,尺码跟尺码差距还是有些大。同样是xl,一条穿着非常合适,另外一条就穿着有点大。

xl跟xl还是不一样的,这就挺离谱的。

至于那个跳绳为什么没到,对象发了条消息说快递被拦截了:

这商家的操作,是脑子进水了?

坑爹玩意儿,简直是我减肥路上的绊脚石。

浅谈前后端分离系统的SEO优化

作者 obaby
2026年4月27日 10:03

开发一个系统,不管是从头开始,还是在已有系统上二次开发,从来都不是一蹴而就的事情。在上线以前总觉得已经做够了足够的测试,但是在上线之后还是会出现各种各样的问题。

有的问题,如果是新系统完全可以避免,正是由于是在已有系统上开发的为了兼容wp才会引入一系列的问题,这类问题主要是wp原生的一些机制兼容问题导致的包括但不限于:

1.wp固定连接的兼容

2.shortcode的解析处理

3.wp资源文件与新系统资源文件的路径兼容处理

4.wp启用插件的功能实现,邮件通知、micro-post、邮件发送、邮件模板等等

5.其他的未知问题

也有一部分是新系统天生的缺陷:seo不友好,搜索引擎爬虫无法获取网页内容,毕竟robot不会执行js,这个是前后端分离系统的必然缺陷。

<!doctype html>
<html lang="zh-CN">
  <head>
    <meta charset="UTF-8" />
    <link
      rel="icon"
      href="https://zhongxiaojie.cn/wp-content/uploads/2026/01/uugai.com-166111691272754-100x100.png"
      sizes="32x32"
    />
    <link
      rel="icon"
      href="https://zhongxiaojie.cn/wp-content/uploads/2026/01/uugai.com-166111691272754-200x200.png"
      sizes="192x192"
    />
    <link
      rel="apple-touch-icon"
      href="https://zhongxiaojie.cn/wp-content/uploads/2026/01/uugai.com-166111691272754-200x200.png"
    />
    <meta
      name="msapplication-TileImage"
      content="https://zhongxiaojie.cn/wp-content/uploads/2026/01/uugai.com-166111691272754-300x300.png"
    />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta
      name="description"
      content="爱好广泛的女王 独立APP开发者 AI修理师 爬虫砖家 逆向工程师 人工智能 全栈工程师"
    />
    <meta
      name="keywords"
      content="人工智能,机器学习,ml,逆向分析,信息安全,物联网,ida,uniapp,python,爬虫,妹子图,秀人集,java,vue"
    />
    <meta
      name="theme-color"
      content="#ff4f87"
    />
    <link
      rel="manifest"
      href="/manifest.json"
    />
    <link
      rel="stylesheet"
      href="/vendor/enlighterjs.min.css"
    />
    <link
      rel="stylesheet"
      href="/vendor/simple-microblogging.css"
    />
    <title>obaby 𝐢‍𝐧⃝ void - 程序媛 / 独立开发者 / 智商不稳定的女神经</title>
    <script type="module" crossorigin src="/assets/index-DFHpxK1A.js"></script>
    <link rel="stylesheet" crossorigin href="/assets/index-CKljzL1r.css">
  </head>
  <body>
    <div id="app"></div>
    <script
      defer
      src="/vendor/enlighterjs.min.js"
    ></script>
    <script defer src="/vendor/obaby.js"></script>

  </body>
</html>

 

当然有人会比较在意这个东西,不是说这个东西不对。可能是自己没那么在乎吧,之前就曾经收到过数次关于seo友链不显示的问题,上次是搞页面静态化。

其实,在我的博客添加的友链,也并不是全部都不显示,毕竟还有其他的域名,zhongxiaojie.com 以及 oba.by等还是会显示完整的友链信息,这两个域名并没有切换到新的前后端分离的系统。所以,我博客的友链,相当于数个站都给友链做了多次链接,我不知道这个东西对于seo有没有作用,至于是有好处,还是有坏处,我并不清除,我自己并不是那么关注所谓的seo。如果觉得这样反而会出问题的,欢迎反馈,我会及时删除相关链接哈。

当然,这个东西有办法解决吗?答案自然是有,至于解决方法,那就是继续回归服务器渲染。

这解决方案真的是简单粗暴啊,合着这折腾来折腾去,又要弄回服务器渲染,这辛辛苦苦四十年,一夜回到解放前?

采用这种简单粗暴的方法来解决seo问题,显示不是本仙女的作风。既然是针对搜索引擎的,那就直接对搜索引擎做单独的处理就完了。检测ua,如果是收缩引起的ua返回服务器渲染之后的内容,如果是正常浏览(搜索引擎爬虫意外的ua)返回前后端分离的内容。

要实现服务器渲染,基于vue的可以参考nuxt.js(百度百科):

Nuxt.js是由NuxtLabs团队于2016年10月推出的基于Vue.js的开源Web框架,采用MIT License授权。该框架灵感来源于Next.js,Nuxt采用了约定俗成的规范以及一种明确的目录结构,以实现对重复性任务的自动化处理,并使开发人员能够专注于推进新功能的开发。 [2] [5] [8]
Nuxt默认内置服务器端渲染(SSR)功能、支持静态站点生成(SSG)和单页面应用(SPA)三种部署模式,可通过”nuxt generate”命令生成预渲染HTML文件实现静态化部署 [5] [7]。采用模块化架构提供50多个扩展模块,支持TypeScript类型安全、推送和现代化开发工具链 [4] [6]

接下来也就简单了,创建nuxt项目,实现与frontend同样的页面路由和相关的页面文件布局。接口可以直接复用当前的接口,

配置openresty的处理逻辑:

# -----------------------------------------------------------------------------
# Dynamic Rendering(SEO):爬虫 UA → Nuxt SSR;普通用户 → 现有 SPA
# - Nuxt SSR 服务建议监听 127.0.0.1:3000(可按需调整)
# - ?__ssr=1 可强制走 SSR(方便自测/排障)
# - 仅对“页面路由”生效,不影响 /assets、/vendor、/bp-api、WP 后台等
# -----------------------------------------------------------------------------
set $bp_force_ssr 0;
if ($arg___ssr = "1") {
    set $bp_force_ssr 1;
}

set $bp_is_bot 0;
if ($http_user_agent ~* "(googlebot|bingbot|baiduspider|yandexbot|duckduckbot|slurp|sogou|360spider|bytespider|petalbot|facebookexternalhit|twitterbot|rogerbot|ahrefsbot|semrushbot|mj12bot)") {
    set $bp_is_bot 1;
}

location @nuxt_ssr {
    proxy_pass http://127.0.0.1:3000;
    proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Uri $request_uri;
}

# 418 跳转技巧:在页面路由里 return 418 → error_page 转到 @nuxt_ssr
error_page 418 = @nuxt_ssr;

启动之后就可以查看服务器渲染的页面了:

当然,这个实现方法的缺点就是得完全复刻frontend的相关路由和页面,优点就是不用关注原来的系统实现逻辑,哪怕爬虫seo系统出问题也不会影响现有的系统运行。

 

❌
❌