首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于在网上突然多了一个“孙子”这件事,我是服气的!

关于在网上突然多了一个“孙子”这件事,我是服气的!

作者头像
why技术
发布2022-11-01 18:43:41
2630
发布2022-11-01 18:43:41
举报
文章被收录于专栏:why技术why技术

你好呀,我是歪歪。

今天又带大家用新姿势来带吃个的瓜,这瓜老好吃了。

老规矩,先把瓜吃干净,再解锁新的技术姿势。

事情是这样的,上周五的时候不是中国第三艘航空母舰福建舰下水了嘛。

然后知乎上一个 7 年前,也就是 2015 年的赌约被翻了出来。

也就是这个链接:

https://www.zhihu.com/question/28103817/answer/39400041

从这个问题的编辑记录可以看出,最早是一个叫做王怜花的同学在 2015 年 2 月 10 日提出了这个问题:

然后在这个问题下面当时有这样的一个回答,我先给大家搬运一下:

大概意思就是题主是一个嘴硬王者,之后会被现实打脸,啪啪的,打的老疼的那种。

结果题主还来劲儿了,当即在评论区留下了“叫爷爷”的赌注。

于是一个 2015 年的,时间跨度长达 15 年的赌局就这样立下来了:

着重看一下我框起来的赌约的部分,为了让你看的更清楚,我单独拿出来,强调一下:

现在是 2015 年,15 年内,也就是 2030 年我国会拥有装有能够弹射作战状态战斗机的航空母舰。 你输了:如果是蒸汽弹射,你给我当儿子;如果是电磁弹射,你给我当孙子。 我输了:我也不会一毛不拔,虽然我没有乱认爸爸爷爷的习惯,不过我可以在你在知乎的所有答案下面叫你大哥。

结果大家也都知道了。2022 年 6 月 17 日,福建舰下水了,配置的电磁弹射:

如果你不知道什么是蒸汽弹射,什么是电磁弹射的话,没关系,不影响你吃瓜,你只要知道电磁弹射更牛一点、逼格更高一点就行。

2015 年到 2022 年,只有 7 年,中国只花了 7 年时间就让这个原本 15 年的赌局有了结果。

那么这个赌约最后履约了吗?

还是得去评论区找答案。

所以,当你一打开评论区,这个题主就排在第一个:

好,我敬你是个汉子,是个守诺之人。

但是要完整的掌握这个瓜的来龙去脉,按照我的经验是一定要把 722 条评论都看完的。

所以...

传统手艺,再来一次。

传统手艺

这个手艺我之前已经在《我宣布,这是我2022年吃的最有意思的瓜!》这篇文章中展示过了。

幸好当时的代码还在,所以我只要替换一个链接,就可以一键拉去评论,然后吃瓜了。

对了,之前还有人问我代码能不能开源,我觉得很刑啊,你们迟早是要让我把小日子过的越来越有判头嘛。

我只能给你说思路,明白吧。而且我已经在那篇文章里面把思路给你说的很清楚了,写代码加起来也就不超过 100 行。

好了,我们先把着这个瓜吃了,一会在给你补充几个技术细节,绝对够本的。

评论拉下来之后,可以看到这个回答下面的第一个评论来自 2015 年 2 月 10 日 15 点 01 分,内容就是题主主动立下的赌注:

然后就一直 battle 到了第二天凌晨 2 点过:

慢慢这个回答也就沉寂下去了,整个 2018 年到 2021 年,跟贴的数量一共也才 9 条:

直到 2022 年 6 月 17 日,这个帖子突然爆了,突然好多好多人来认孙子的:

我想看一下这个时间之后,题主王怜花的一个回复是什么,所以我直接只过滤了他的回复。

但是过滤出来之后,我看到了他这样的一条评论,又不由得燃起一些敬意:

知道我为什么说叫你爷爷值得吗?因为只要我的国家强大了,我叫你爷爷算什么,叫祖宗都乐意,我也不想自己的国家老是被他国欺负啊!一片赤诚之心在此!

其实他也不是一个彻底的喷子,甚至我觉得他根本都不是喷子。

然后在 2016 年 8 月 18 日的时候,他就已经意识到这场赌约,他要输了:

但是在 2022 年 6 月 17 日现实已经啪啪打脸,众多网友召唤他出来叫履行赌约的时候,他是这样的:

看起来还是有点嘴硬啊,似乎是要赖账的意思。

但是在进行了不到 30 分钟的心理建设之后,他还是愿赌服输:

确实比网上的很多说话不算数的人有魄力的多。

你注意他回复问题的这个时间点:

好家伙,这基本上是一夜没睡啊,看来还是遭受到了一定的心理创伤。

在题主的“爷爷,是我错了。”这句评论下面的回复中,大家都对题主的愿赌服输表示了自己的尊敬:

在这个评论中,我去截取两个我比较认同的放在这里:

同时,我还看到了这个评论:

我立马敏锐的感觉到:这肯定是另外一个瓜啊。

于是简单的看了一眼,果然:

你说你赌啥不好,你赌这玩意...

现在赌局结束了,你又拒不承认。这行为,属于骗吃骗喝啊。

接着,还按照追评最多这个维度排了个序:

时隔 7 年,content_id 的长度变化了这么多,也算是侧面见证了知乎这几年突飞猛进的发展吧。

最后,在吃瓜的过程中,还出现了一个乌龙。

真正的王怜花的名片是这样的:

有个点赞量很高的评论里面艾特了王怜花:

但是这个王怜花不是正确的王怜花:

导致这个王怜花感受到了一丝丝无助,并吐槽了一波:

我看了一下他过往回答中的评论,也是莫名躺枪:

随便我也去看了真的王怜花的过往回答的评论区。

果然:

最后,这瓜总体来说是真不错。

时间跨度这么长,赌约背景如此宏大,当事人也愿赌服输,比较爽快的履行了承诺。

是我在网上冲浪这么多年,难得一见的奇观。互喷的、嘴硬的、抵赖的看的太多太多了,冷不丁的看到一个信守承诺的,还感觉挺新奇的呢。

技术吃瓜

这次吃瓜,我在之前的技术上小小的迭代了一把。

另外先说一句,知乎是有防爬机制的,我这次就遇到了。

评论拉着拉着就突然要你去做个验证:

但是只要你请求的不是那么的频繁就好,像我这种抱着学习、吃瓜的态度去的,一般没问题。

而且,退一万步说,真写爬虫,谁用 Java 啊,这不扯淡呢么?

好了,不说远了,说一下我这次的小迭代是什么。

之前的方式是一次性拉取所有评论,针对后续新增的评价其实我是没有搜集到的。

按理来说,所有的评论都应应该收集到才对。

那么应该怎么处理呢?

你看这里,有一个按照评论时间排序的功能:

那么我是不是找到这个功能背后的链接,就可以拿到按照时间顺序倒叙返回的数据。

巧了,我数据库里面不是也存了时间吗?

那么我是不是可以搞个定时任务,比如每 10 分钟轮询一次这个接口。

每次从数据库里面按照时间倒序排序,拿出第一条数据上的时间。这个时间是不是代表我当前数据库里面存储的最近一次评论的时间?

那么我拿着这个时间,和前面说的接口返回的数据集合中取第一条进行对比,如果时间变化了,说明有新的评论了,那我就保存下来。

然后再取下一条,直到时间相等或者时间小于数据库里面的时间时,就停止循环。

这样,是不是就能解决新增评论的问题。

效果嘛,大概是这样的:

当我能实现新增评论也落库的这个需求之后,我发现还是差点意思。

数据倒是有了,但是我总不可能实时盯着数据库里面有没有新数据过来吧?

我希望新数据来了之后,能主动通知我一下。

所以,我也随手试了一下微信的模板消息通知功能。

我想要的功能大概是这样的:

首先我们已经可以通过定时任务感知到有新的评论过来了,然后怎么把评论推送到我的微信,让我火速赶往吃瓜现场呢?

这个功能怎么实现呢?

其实我做这个 Demo 非常的简单,你按照我的流程来,超过 10 分钟算我输。

首先如果你有一个公众号的话,登录之后,你可以看到一个叫做“开发者工具”的菜单栏,点进去之后长这样:

然后选“公众平台测试账号”,官方就会给你一个可以调用所有高级接口的测试账号。

自己玩一玩,熟悉一下微信的接口是绰绰有余了。

当然了,大多数人没有微信公众号,那么可以直接通过下面这个链接搞到一个公众平台测试账号:

https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

进来之后,你可以看到这个测试账号的 appID 和 appsecret, 这两个参数非常的重要,后面的接口中会用到:

然后下面可以看到下面有一个“体验接口权限表”,接口非常的多,但是我的需求用“模板消息”就能满足了:

点开模板消息接口文档里面写了具体调用方法:

但是说真的,这个文档写的太简陋了,我给你说另外一个地方的文档:

https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Template_Message_Interface.html#5

从这里可以看到发生模板消息,有四个必须的参数。

  • ACCESS_TOKEN:访问凭证
  • touser:接收者openid
  • template_id:模板ID
  • data:模板数据

这四个参数怎么来呢?

我一个个的给你说。

首先是 ACCESS_TOKEN,看接口文档:

https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html

从接口文档中我们知道,access_token 是调用一个接口后返回的参数。

而这个接口的入参有三个:grant_type 传固定值 client_credential,appid 和 secret 你也有。

所以你可以获取到 access_token。

按照接口文档写代码,这个没有问题吧?

但是,微信还给你提供了一个直接获取 access_token 的工具页面:

https://mp.weixin.qq.com/debug

把你的参数填进去之后,就可以获取到一个 access_token。

而且你要记住,access_token 的有效期只有 2 个小时,我在这里获取只是为了先拿到一个可以用的参数而已。

接下来的一个入参是 touser,也就是接收者的 openid。

openid 也是可以通过接口获取的,获取方式网上一抓一大把,我就不细说了。

把接口文档链接放一下:

https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html

openId 在微信的接口里面是一个非常、非常、非常重要的参数,如果感兴趣的话,我建议你仔细研读一下。

想要通过编码获取 openId 还是要稍微花一点时间的。

但是,朋友们,我要但是了。

在当前这个测试的账号下,你扫码关注自己的这个测试号二维码,这里的这个微信号,就是自己的 openId,所以直接拿来用就行,你甚至不用写一行代码:

第三个和第四个参数分别是 template_id 和 data,这两个参数都是直接在页面上新增就有了。

现在参数齐了,我就可以直接写个 main 方法来跑一把了:

代码里面的链接和 json 结构我都是从接口文档里面粘过来的,然后把 main 方法一跑,你就能收到微信给你推送的消息了。

我说了,按照我的这个流程来,写个 Demo 超过 10 分钟算我输。

真正编码的时候就是要注意维护好 access_token 就行了,因为这个玩意是有时间限制的。

现在回到我们的需求中,当新增评论之后,我是不是可以直接发一个微信通知,这样我就能主动感知到有新评论了,就可以火速赶往现场吃瓜?

或者我再提一个简单的需求,我只关心题主王怜花的新评论,其他的新评论我不关心。

这个需求对应的伪代码是不是这样的:

if(是xx银行的储户){
    赋红码
}

对不对,这个逻辑很清楚嘛,肯定不会有什么错的。

额...

不好意思,阿 sir,写错了,这是我在网上直接复制的代码,不能用,还得改改。

改成这样:

if(是王怜花的评论){
    发微信通知
}

简单的扣脚,多加一个分支判断而已。

好了,瓜已吃完,打完收工。

荒腔走板

上周六凌晨的时候我发了一个纯文字的推送:《嘿,来评论区聊聊天吧。》

其实我当时是有点深夜 emo 的,所以我就抽空花了几分钟发了一个纯文字的推送,当时我想着这么晚了,再加上这种推送的内容应该看的人不多,所以还在评论区留下了“每条评论,我都回复”的 flag。

微信公众号最多能放出 100 条留言,我没想到的是这条推送的留言居然超过 100 条了。

不管你有没有在留言区释放你的压力、你的负面情绪或者你的无聊,至少你愿意点进来,看一下,然后留下一条评论。

我谢谢你,这是对我的一种鼓励和认可。

我也做到了每个评论都回复的承诺。

大多数留言都在说自己的困惑,迷茫和苦难,我也一样有自己的困惑,迷茫和苦难。

其中有一部分是来自于网络上的消息,而我的应对之法,在之前的文章里面提到过:

分清网络上发生的事情和身边发生的事情。前者即使让我再开心、再愤怒、再悲伤,它对我当下的生活影响并不大,我只需要给它 20%,甚至更少的注意力。我更应该关注的是围绕在自己身边真真切切发生的事情,更应该在意的是自己生活,提升自己的修养。

红红火火的生活,比深不见底的网络,有意思的多。

祝好。

··················END················

你好呀,我是歪歪。我没进过一线大厂,没创过业,也没写过书,更不是技术专家,所以也没有什么亮眼的title。

当年高考,随缘调剂到了某二本院校计算机专业。纯属误打误撞,进入程序员的行列,之后开始了运气爆棚的程序员之路。

说起程序员之路还是有点意思,可以点击蓝字,查看我的程序员之路

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-06-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 why技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 传统手艺
  • 技术吃瓜
  • 荒腔走板
相关产品与服务
云开发 CLI 工具
云开发 CLI 工具(Cloudbase CLI Devtools,CCLID)是云开发官方指定的 CLI 工具,可以帮助开发者快速构建 Serverless 应用。CLI 工具提供能力包括文件储存的管理、云函数的部署、模板项目的创建、HTTP Service、静态网站托管等,您可以专注于编码,无需在平台中切换各类配置。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档