普通视图

发现新文章,点击刷新页面。
昨天以前Mathor's Blog

2024总结

作者 mathor
2025年1月1日 00:32

我的2024非常充实,同时也非常空虚,这两者并不矛盾。努力工作了一整年,无论是收入还是荣誉,这一年都可谓是收获颇丰,因此充实的是物质生活。但是由于每天的工作非常类似,三百六十五天过的像是一天,每天除了工作好像也不知道该干什么,更没有什么别的事情可做,由此感到无限的空虚。

工作上,今年3月初转正后,带给我的最大的变化不是工资,而是归属感。实际上,「人的一生都在不断寻求身份认同」,你可以是某某孩子的父亲,可以是某某学生的老师,也可以是某某单位的员工,但如果什么身份也没有,就会缺少归属感,进而对生活感到迷茫,转正前的我便是如此。

就像我之前在b站动态里提到的,我这一年的工作大部分时间是在写爬虫,剩下的时间在写PPT和Word。我平时写的爬虫和大家理解的在IT公司写爬虫不太一样,IT公司写爬虫可能是为了获取数据,而我写爬虫更多是为了从平台上将满足条件的数据统计出来,然后提供给同事或者我自己,最终放到PPT里给领导汇报。严格地说,这一年我也确实是在写代码,也写了很多很多代码(本来准备年底写一个统计各文件代码行数的代码,但是忘了),但是水平几乎没什么提升。这并不矛盾,毕竟长时间写相似的代码,甚至都快要形成手指的肌肉记忆了,代码能力实在难说有什么提升。回顾这一年的工作,带给我的感悟也不少,最深的两点便是「代码更新速度永远赶不上人的需求产生速度」、「工作并不会减少,它只会由一个人转移给另一个人」。先说第一点,实际上我们公司的系统中是有数据统计功能的,但是由于大家的需求每次都不一样,例如平台上的是分月的数据,而我们需要的是分年的数据,假设这次平台把分年查询数据的功能加上去了,可能过一段时间我们又需要统计分季度的数据了。人的需求是无穷无尽的,而且很多时候某些需求是一次性的,这个时候让平台增加功能也不是,不加也不是,因此就需要我来临时统计一下。再说第二点,很多时候写代码统计数据确实比人工统计要快,但是我写代码也不是完全不用思考的,而且遇到某些特殊情况时还要改bug,因此看似工作量减少了,但实际上并没有,它只是从别人那儿转移到了我这儿罢了。

细数这一年工作上取得的成果,满打满算十根手指便能数清,但每一项均来之不易。具体来说,下半年我投了一篇核心,目前处于小修状态;年底写了两篇论文也即将投出去。其中,令我印象最为深刻的是公司今年举办的科技论坛,各部门同事带着自己最自信的成果进行展示汇报,最终由领导评选一二三等奖。23年差不多相同时间举办了第四届科技论坛,当时我作为观众在台下完整的看完了所有人的汇报,除了少数几个,剩下大多我都嗤之以鼻。自那时起,我就暗下决心,如果有机会参加,一定要让大家看看什么叫真正的成果。今年第五届科技论坛我报名参加了,经过初赛、决赛的比拼,最终我一举夺魁,现在想来仍然感觉热血沸腾。如果要找类似的事情进行比喻,第一时间我想到的是萧炎在迦玛帝国炼药师大会上力挽狂澜,战胜敌国炼药师夺得冠军,此后帝国内无人不知萧炎的名号。


生活上,我其实没有太多属于自己的时间,每天唯一能让我放松的时间只有午休和晚上下班后的几个小时,并且晚上经常要加班,所以其实并没有太多时间做自己想做的事。可能正因如此,我染上了一个非常不好的习惯——购物。今年我花了不少钱买各种各样的东西,好像只有疯狂消费或者逛购物软件,才能让我感到一丝放松。今年我平均每个星期都有一个快递,等快递的过程是丰富的,但是东西拿到手后,便又空虚了起来。回过头看,我买的东西大多是电子产品,如果更细分,大抵是游戏品类居多。买这么多游戏机,主要是为了弥补自己小时候遗憾,可是每每看着这些游戏机,我知道自己怎么也不可能将上面的游戏全部通关。一想到这,便感觉刚被填满的心又空虚了起来。「年少不得之物,终将困其一生」,或许便是如此。

当然,生活并不只有工作,实际上今年借着几次休假的机会,5月我去了广州核聚变(这是一个由机核举办的游戏展会,具体详情可以看羊城游记 day3(核聚变专场);7月我去了上海ChinaJoy,具体详情同样可以看【Vlog】2024 ChinaJoy;10月在重庆听了一场黑神话音乐会;除了上述这些,还有各种各样半出差半旅游的时候。现在想来,每次出去旅游都录Vlog是一个好习惯,满足他人窥私欲的同时,也起到了记录自己生活的作用。


前面说了这么多流水账,最后我想简单总结下2024年。今年对我来说是意义极不平凡的一年,因为我在可能要供职一辈子的单位转正了,都说女怕嫁错郎,男怕入错行,就目前来看,当初找工作时,我的选择是无比正确的。在网上看了一圈大家的年终总结,有担心被裁员的,有已经被裁员的,至少对我来说,我还能天天无病呻吟,发发牢骚,不用担心裁员问题,这已经很幸运了。除此之外,今年是我进步非常大的一年,主要体现在个人心态转变,我逐渐褪去了学生思维,转而变成职场思维,也意识到在工作中过程正确远大于结果正确。

最后,照例展望下2025年。新的一年我要继续努力,保持对工作的热情,更重要的是保持对写代码的热情。此外,多剪剪视频,Vlog也好,其他类型的视频也好,一方面是提升自己的剪辑水平,另一方面是把b站账号运营起来。如果还有精力,找个女朋友。

图解CodeWhisperer的安装使用

作者 mathor
2024年3月29日 14:29

今天我们主要来了解一下codewhisperer的安装和使用,大家使用过程中的疑问可以一起交流。另外,参与亚马逊云科技云创计划即可免费体验各种云服务。

CodeWhisperer简介

CodeWhisperer是亚⻢逊出品的一款基于机器学习的通用代码生成器,可实时提供代码建议。

在编写代码时,它会自动根据现有的代码和注释生成建议。从单行代码建议到完整的函数,它可以提供各种大小和范围的个性化建议。CodeWhisperer 还可以扫描代码以突出显示和定义安全问题。

第一步:在pycharm插件搜索AWS并下载

第二步:打开AWS Toolkit视图(菜单View/Tool Windows/AWS Toolkit),点击"Developer Tools"tab⻚⾯,选择“CodeWhisperer/Start"

第三步:选择个人应用绑定自己的账号,选择allow之后就可以配置我们的IDEA使用了

在IDEA中使用

  1. 还是进行最简单的测试,在UI自动化,只写注释,然后CodeWhisperer会根据注释自动生成几段代码,可以根据自己的需要选择table键表示我们想要选择的,next、previous可以向前向后选择非常方便。

2.经过实际测试,在代码补全,根据注释生成代码方面,效果还不错,在注释生成代码方面,可以不断细化注释的描述,描述的越清楚,代码生成的精度更高,不得不说这款编程助手做的还是不错的,能大大提升办公效率。

3.提供的安全扫描功能,互联网的发展迅速代码安全检查是不能忽视的一个大头,我们使用CodeWhisperer中的Security Scan可以轻松的扫描代码,并更具扫描代码的结果更改我们代码中检测到的问题,上线的项目可以更加安全。

4.使用总结:在平时使用idea开发编码中,使用此插件,确实能如虎添翼,对于自动生成代码,代码提示。代码编写规范自动提醒。根据注释生成代码结构,能大大提高开发工作效率。之后会继续使用此插件,来减少开发量。同时也会向身边同事推荐此款插件,来提升团队开发能力。参与亚马逊云科技云创计划即可免费体验各种云服务。

借助 ControlNet 生成艺术二维码 – 基于 Stable Diffusion 的 AI 绘画方案

作者 mathor
2024年2月27日 11:26

背景介绍

在过去的数月中,亚马逊云科技已经推出了多篇 Blog,来介绍如何在亚马逊云科技上部署 Stable Diffusion,或是如何结合 Amazon SageMaker 与 Stable Diffusion 进行模型训练和推理任务。

最近,亚马逊云科技核心级服务合作伙伴 eCloudrover(伊克罗德) 推出了基于 Stable Diffusion 的 AI 绘画解决方案——imAgine,既拥有经过广泛验证且易于部署的先进 AI 算法模型,又提供丰富且高性价比的云端资源以优化成本,旨在帮助游戏、电商、媒体、影视、广告、传媒等行业快速构建 AIGC 应用通路,打造 AI 时代的领先生产力。参与亚马逊云科技云创计划即可免费体验各种云服务

本文主要分享使用 Stable Diffusion 时的实战经验,以及使用基于 Stable Diffusion 研发的 imAgine 产品生成艺术二维码的最佳实践。

我们将以 QRCode 作为 ControlNet 的输入,使 QRCode 数据点融入到艺术图像中,同时仍然可以被 QRCode 阅读器扫描。借助这项技术,您可以将任何二维码转化为独特的艺术作品,以一种全新的方式来表达和传递信息。以下为几张图片案例:

Stable Diffusion 实战技巧

古语有云:“万事开头难”,“致广大而尽精微”。这对应了在 Stable Diffusion 实战中,最常遇到的两方面问题,一是如何选择合适的提示词起手式,来生成满足期望的图片;二是如何对图片进行细节优化,使最终产出的结果能够满足生产应用需求。

我们整理了以下内容作为推荐的最佳实践,希望对读者使用 Stable Diffusion 进行创作时提供参考。

提示词工程

随着 Stable Diffusion 版本不断迭代,AI 对语义的理解越来越接近“常识”之后,对提示词(Prompts)的要求也会越来越高。很多提示词上的误区有时会对绘图产生反作用。

Prompt的基本概念
  • 提示词分为正向提示词(positive prompt)和反向提示词(negative prompt),用来告诉 AI 哪些需要,哪些不需要。
Prompt的误区
  • Prompt 在于精确,不在于数量;用最简短的单词阐述画面,比自然语言要更有效。
  • 提升质量的描绘词绝不是无脑堆砌、越多越好。
  • 经常出现的起手式:“masterpiece”, “best quality” 等,很多时候会成为提示词中的累赘。这些词语在 NovelAI 时代是有意义的,因为当时 NovelAI 训练模型时大量使用了这些词汇来对图像进行评价;但在如今,经过 Civitai 上模型作者们不断重新炼制模型,这些提示词已经很难在生图结果中展现应有的作用。
调整提示词的权重
  • 词缀的权重默认值都是 1,从左到右依次减弱
  • 提示词权重会显著影响画面生成结果
  • 通过小括号+冒号+数字来指定提示词权重,写法如 (one girl:1.5)
注意提示词的顺序
  • 比如景色 Tag 在前,人物就会小,相反的人物会变大或半身
  • 选择正确的顺序、语法来使用提示词,将更好、更快、更有效率地展现所想所愿的画面
Prompt中的Emoji
  • Prompt 支持使用 emoji,且表现力较好,对于特定的人脸表情或动作,可通过添加 emoji 图来达到效果
  • 为了防止语义偏移,优先考虑 emoji,然后少用不必要的 with 一类的复杂语法
视角Prompt推荐
参数解释
extreme closeup脸部特写
close up头部
medium close up证件照
medium shot半身
cowboy shot无腿
medium full shot无脚
full shot全身

图片优化

很多时候我们生成了一张差强人意的图片,希望对这个结果进行进一步的优化,但往往不知道从何下手。这时您或许可以参考以下图片参数调优的最佳实践:

哪些参数需要调整
  • CFG Scale:图像与提示词的相关度。该值越高,提示词对最终生成结果的影响越大,契合度越高。

    • CFG 2-6:有创意,但可能太扭曲,没有遵循提示。对于简短的提示来说,可以很有趣和有用。
    • CFG 7-10:推荐用于大多数提示。创造力和引导力度之间的良好平衡。
    • CFG 10-15:当您确定提示是详细且非常清晰的,对图片内容有极明确的要求时使用。
    • CFG 16-20:除非提示非常详细,否则通常不推荐。可能影响一致性和质量。
    • CFG > 20:几乎无法使用。
  • Sampling Steps 迭代步数:步骤越多,每一步图像的调整也就越小、越精确。同时也会成比例地增加生成图像所需要的时间。

    • 对于大部分采样器,迭代越多次效果越好,但超过 50 步后就收效甚微。
  • Sampling method 采样方法:不同的采样方法,对应的最佳迭代步数是不同的,在进行对比时需要综合考虑。

    • Euler a:富有创造力,不同步数可以生产出不同的图片。并且这是一个效率较高的采样方法,可以用来快速检查 prompt 效果的好坏。
    • DPM2 a Karras:适合跑真实模型,30 步以后不好把控。
    • DPM++ 2M Karras:在高步数下表现优异,步数越高细节越多。
    • DDIM:收敛快,但效率相对较低,因为需要很多 step 才能获得好的结果,适合在重绘时候使用。
    • 不同模型与采样方法搭配出的结果也不同,以上仅供参考,在进行采样方法的选择时,最好使用 X/Y/Z 图表进行对比。
  • Seed 随机种子:随机种子值很多时候对构图的影响是巨大的,这也是 SD 生图随机性的最主要来源。

    • 保持种子不变,同样的提示词和模型,保持所有参数一致的情况下,相同的种子可以多次生成(几乎)相同的图像。
    • 在确定好一个合适的画面构图时,固定种子,对细节进行进一步打磨,是最合适的做法。
如何对比寻找最佳参数
  • 利用X/Y/Z图找最佳参数:通过使用 X/Y/Z 图,我们可以很清晰地对比不同参数下的结果,快速定位合适的参数范围,进行进一步的生成控制。

图片尺寸优化
  • 图片质量并不直接与图像尺寸挂钩。
  • 但尺寸在一定程度上影响了主题/图片内容,因为它潜在代表选择的类别(比如竖屏人物,横屏风景,小分辨率表情包等)。
  • 当出图尺寸太宽时,图中可能会出现多个主体。
  • 1024 之上的尺寸可能会出现不理想的结果,并且对服务器显存压力是巨大的。推荐使用小尺寸分辨率 + 高清修复。
优化多人物 / 宽幅单人物的生成
  • 单纯使用 txt2img 无法有效指定多人物情况下,单个人物的特征。
  • 较为推荐的方案是制作草稿 + img2img 或 ControlNet 的方式。
  • 宽幅画作+单人物生成最好打草图,进行色彩涂抹,确定画面主体;或使用 ControlNet 的 OpenPose 做好人物骨架。
  • 多人物确定人物数量,最好使用 ControlNet 的 OpenPose 来指定;该方案也适合画同一人物的三视图。
进行手部修复
  • 将图片送入 img2img inpaint,使用大致相同的提示词,将关于“手”的提示放在前面,根据希望手部特征变动多少来设置重绘幅度(如果只是希望手更完整,调至 0.25 以下),然后保留步骤和 CFG 与 txt2img 相同。
  • 找到一个满足期望的手部图片,借助 ControlNet 的 Canny 或 OpenPose_hands 等预处理器+模型,结合 inpaint 操作,能实现更精确的手部控制。
进行面部修复
  • 在绘制人物主体较小的图片时,经常会出现面部崩坏的情况。尤其是本文之后会介绍的生成艺术二维码流程,人物的面部经常会因为二维码码点的存在而崩坏。
  • 对面部的重绘,更推荐使用 !After Detailer 插件实现,通称 ADetailer。
  • 该插件会使用 yolo 算法对图片中的物体进行识别,我们设定其识别人物面部,并提供面部重绘的提示词和模型;该插件会在识别到的面部位置进行局部重绘,完成面部修复。
  • ADetailer 插件可以满足面部和手部的识别与修复。
  • 在 ADetailer 中也能引用 Lora 模型进行局部重绘生成。

借助ControlNet生成艺术二维码

Step1:优化二维码

二维码是一种借助特定几何图形分配,在二维空间上分布的、黑白相间的、记录数据符号信息的图形。二维码有多种不同的编码方式,我们此处采用通用度最高也是最基础的编码方式:QR Code。

输入的二维码是借助 SD 生成艺术二维码过程中最重要的部分之一。我们主要关心输入的二维码的以下两个特点:

1.二维码中包含的信息量

无论二维码采用何种编码方式,承载的字符信息越多,二维码在视觉上呈现的黑白结构就越复杂。复杂的结构很容易导致我们在生成艺术创意时,极大地收到二维码本身信息的掣肘。因此我们首先要想办法精简二维码中包含的字符长度

对于最广泛的应用场景,二维码通常会包含一个网页链接;为了提升二维码生成的美观性,我们首先需要对网页链接进行缩短。市面上的链接缩短工具有很多,您可以自由选择。但需要注意,在中国大陆境内请选择有域名备案的缩链平台,否则会被微信、浏览器等阻挡。

例如我们有一个希望制作成二维码的网址:https://www.ecloudrover.com/aigc/,通过缩链处理后为:http://c.suo.nz/7KZrF

通过下图可以比较直观地看出链接长短对于二维码视觉的影响,缩短的链接将更有利于我们接下来的创作。

2.二维码的呈现形式

随着技术发展,二维码不仅只支持黑白方块状的图案样式,定位点和码元都支持多样化的呈现,例如以下几种样式

在实际操作中,我们可以尝试多种不同的码点形式,以使得生图效果符合我们的预期。

下图展示了不同的二维码形式对最终效果图的影响:

生成参数:

Prompt: mountain, green grassland, sky, cloud, bird, blue sky, no human, day, wide shot, flying, border, outdoors, white bird, scenery
Negative prompt: easynegative
Steps: 40, Sampler: DPM++ 2M Karras, CFG scale: 6, Seed: 3943213078, Size: 872x872, Model hash: 876b4c7ba5, Model: cetusMix_Whalefall2, Clip skip: 2, ControlNet: "preprocessor: none, model: control_v1p_sd15_qrcode_monster [a6e58995], weight: 1.35-1.5, starting/ending: (0.05, 1), resize mode: Resize and Fill, pixel perfect: True, control mode: Balanced, preprocessor params: (512, 64, 64)", Version: v1.3.
Step2:制作基础二维码

了解了上述要点后,我们将要开始使用二维码制作工具,生成一个输入给 SD 的基础二维码。互联网上有多种网页二维码生成工具,您可以自由选择。同时为了方便您使用,我们在 Blog 专用的 AMI 中已经预装了 QRCode 生成插件,只要您从正确的版本中启用 AMI,都可以直接在 Webui 上看到下述的 QRCode Toolkit:

  • Anthony’s QR Toolkit:整合在 Webui 的 QRCode 生成与优化工具

https://github.com/antfu/sd-webui-qrcode-toolkit

接下来我们演示如何使用 Anthony’s QR Toolkit 来生成二维码,您可以参考下图完成二维码参数的配置。

完成二维码制作后,可以点击右侧的 “Download” 以下载到本地。或点击 “Send to ControlNet”,直接将二维码发送至 ControlNet 以进行下一步操作。

Step3:确定艺术风格

使用 Stable Diffusion 进行艺术创作的核心是选择合适的模型+提示词。我们在创作艺术二维码之前,建议先不使用 ControlNet,先进行一次普通的图片生成,以测试生图效果。

此处我希望二维码中有山川、蓝天、白云等自然景观,因此先使用以下参数,测试提示词和模型的生成效果。

生成参数:

Prompt: mountain, green grassland, sky, cloud, bird, blue sky, no human, day, wide shot, flying, border, outdoors, white bird, scenery
Negative prompt: easynegative
Steps: 20, Sampler: Euler a, CFG scale: 7, Seed: 4078355702, Face restoration: CodeFormer, Size: 512x512, Model hash: 876b4c7ba5, Model: cetusMix_Whalefall2, Clip skip: 2, Version: v1.3.2
Step4:在 ControlNet 中导入二维码

确认好图片风格后,我们将未经处理的二维码上传 ControlNet。请注意以下几个选项的配置:

  • “启用” 按钮:勾选以确保 ControlNet 在图片生成过程中生效;
  • 模型选框:请选择 “control_v1p_sd15_qrcode_monster” 来加强二维码的控制力度;
  • 控制权重:对于 qrcode_monster 模型,我们建议设置在 1.1-1.6 之间;
  • 引导介入/终止时机:介入时机建议在 0-0.1 之间,终止时机建议为 1

在文生图配置中建议调整两组数值:

  • 迭代步数:建议在 30-50 之间,默认值 20 不足以引导生成一个高质量的二维码图片
  • 宽度/高度:建议直接从 ControlNet 发送二维码原图的宽高比至上方

参数全部配置完成后,点击生成即可,可以看到此处我们生成了一个效果不错的图片,使用手机扫码测试也完全通过。

如果生成的二维码不能够达到期望,可以选择微调以下几个参数,并增加生成的总批次数,不断尝试抽卡以逼近最终期望的效果:

  • 提示词
  • 采样方法
  • ControlNet 控制权重
  • ControlNet 引导介入/终止时机

必要时可以选择使用 “脚本” 中的 X/Y/Z Plot,来对比不同参数下生成二维码的效果。我们此处对比了 ControlNet 的控制权重和引导介入时机:

参与亚马逊云科技云创计划即可免费体验各种云服务。云服务器 12 个月免费、虚拟服务器 VPS 3 个月免费、无服务器计算服务永久免费,更多详情请进入官网查看。

附录

附录1:ControlNet QRCode模型的选择

为方便您使用,我们在 Blog 专用的 AMI 中已经完成了 ControlNet QRCode 模型的植入,只要您从正确的版本中启用 AMI,都可以直接在 ControlNet 中选择模型。

截至目前,QRCode Monster 是我们测试后认为控制二维码成功率最高,也是二维码融入图像效果最好的模型,该模型可以在 HuggingFace 下载到:

https://huggingface.co/monster-labs/control_v1p_sd15_qrcode_monster

市面上也有另一个二维码模型:QR Pattern v2.0。该模型我们建议结合使用IoC Lab的 Brightness 模型作为辅助模型来提高局部对比度,也会产出不错的效果。但根据我们的测试,该模型自带的干扰内容较多,可能会导致图像风格发生很大的变化。这两个模型可以在下方链接下载:

https://civitai.com/models/90940/controlnet-qr-pattern-qr-codes

https://huggingface.co/ioclab/ioc-controlnet

附录2:如何使用 Stable Diffusion AI 绘图解决方案

imAgine 是一款由亚马逊云科技核心级服务合作伙伴伊克罗德,基于 Automatic1111 Stable Diffusion Webui,结合亚马逊云科技多种托管服务定制开发的AI绘图解决方案。imAgine 目前已经上线亚马逊云科技MarketPlace,用户能够在 Marketplace 中一键订阅,快速启动,无需进行复杂的环境配置,敏捷地在云上部署 AI 绘画环境。

同时还结合亚马逊云科技无服务器服务 Amazon API Gateway、AWS DynamoDB 等,将 WebUI 前端的训练、推理请求,无缝转发到 Amazon SageMaker 后端的专用推理、训练服务器上,实现算力的无缝扩展,并基于此架构基础实现前后端分离、精确的成本管控。

对于任何希望快速上手 AIGC 技术,并且希望得到全生命周期维护与技术支持的读者订阅并测试解决方案,限于篇幅,订阅 imAgine 解决方案的详细操作流程请参考 WorkShop 页面:https://catalog.us-east-1.prod.workshops.aws/workshops/facdf921-2eea-4638-bc01-522e1eef3dc5

参考链接

  • 免费AI代码生成器Amazon CodeWhisperer初体验

    作者 mathor
    2023年12月25日 18:23

    简介

    随着ChatGPT的到来,不由让很多程序员感到恐慌。虽然我们阻止不了AI时代到来,但是我们可以跟随AI的脚步,近期我发现了一个神仙AI代码生产工具CodeWhisperer ,它是一项基于机器学习的服务,其根据自然语言注释和集成开发环境(IDE)中的代码,生成代码建议,帮助提高开发者生产力。参与亚马逊云科技云创计划即可免费体验各种云服务。云服务器 12 个月免费、虚拟服务器 VPS 3 个月免费、无服务器计算服务永久免费,更多详情请进入官网查看。

    接下來就跟随我的脚步来看看这款VSCode插件的使用方式吧。

    安装使用

    • 开发工具:Visual Studio Code(VSCode)
    • 打开工具拓展安装(快捷键:Ctrl + Shift + X),然后搜索AWS或AWS Toolkit,如下图所示

    • 安装完成之后,按照下图步骤进行登录,偷偷告诉你,目前可以免费使用呦。

    • 根据弹窗出来的操作,复制 => 打开aws网站,黏贴验证码 => 进行aws账号注册(特别提醒,密码需要3中字符以上)=> 然后会出现允许aws在你的VSCode上使用
    • 完成上诉步骤之后,点击下图位置,开启AI代码生成之路

    • 无线的代码联想,让你为所欲为,大大提升了你的划水时间,话不多说,上代码,图1:插件代码联想,图2:按下Tab键之后生产的代码。

    • 简单的业务描述,入参定义,它就能够帮你完整实现逻辑,联想过程中,最下面的状态栏CodeWhisperer会转动。

    • 上下文联想,让你欲罢不能。

    总结

    相对其他GPT代码工具,使用方便,上下文联想强,同时CodeWhisperer还可以再代码中检测潜在的错误或问题,并向开发者发送警告,以便他们可以尽早解决这些问题,重点是免费免费免费,重要的事情说3遍。参与亚马逊云科技云创计划即可免费体验。

    关于毕业和未来展望

    作者 mathor
    2023年6月17日 17:10

    各位同学大家好!这篇文章我想简单对自己研究生三年做个总结,至于为什么是“简单的总结”,因为实际上我读研期间一直有在写各种总结的blog,所以这篇文章中也不需要重复赘述。另外也想和大家分享一些这半年的所思所想,主要是两点:关于毕业和未来展望(工作与生活)

    关于毕业

    对我来说,2023年上半年几乎没有别的事比毕业更重要了,或者说,没有别的事比写出一篇合格的毕业论文更重要。自从2月底到了学校以后,我每天的大部分时间都是在实验室度过的,写论文固然重要,可是身体以及心理状态也很重要,这里简单说说我每天的饮食以及生活作息,供大家参考。早餐是一定要吃的,如果在家(湖北),我一般会选择吃一碗汤面,但其实早餐吃碳水并不算多健康,毕竟摄入过多碳水会让人犯困,另外碳水也仅仅只能提供能量,至于维生素和微量元素只能说几乎没有。在学校的时候,我每天早上只买两个鸡蛋,偶尔配一杯不加糖的豆浆。午餐倒没有什么特别要注意的,无非就是多吃点,吃的种类多一点。晚餐也没有什么特别的讲究,不需要吃太多,以瘦肉、蔬菜为主即可。当然了,我们大部分人并不是健身爱好者,也不需要特别控制体重、体脂率,因此每一顿吃什么也不必太过纠结

    长时间的学习工作不一定会得到很好的效果,因此需要控制时间,适当放松。例如我每天下午6点左右就会离开实验室,围着操场跑20分钟。说到跑步,其实我从没有这个习惯,或者说我根本就不喜欢任何体育运动。主要是由于写毕业论文那段时间压力太大,正好我室友有跑步的习惯,他问我要不要考虑跑跑步释放一下压力,跑了几天以后发现确实人的精神要好很多,于是便坚持了下来,实际上也没有坚持多久,也就跑了大概一个月左右便放弃了(因为真的很累)。晚上我从不去实验室,因为我认为睡前的几个小时是属于自己的娱乐时间,可以看看直播或者打打游戏缓解一天学习的压力。我几乎不熬夜,一般11点整就上床睡觉。我室友是个夜猫子,不过这次来学校以后他的发际线明显有点问题,于是他立了个flag,说是只要我上床,他就必定在20分钟内也上床。不过上床不等于睡觉,就我所知,他虽然上了床,可仍然在刷手机,所以发际线问题也没能得到缓解(现在正在考虑抹药)

    前面是生活部分,下面讲讲毕业相关的事。我们学校大概是4月初需要将毕业论文进行查重,意味着我们需要在此之前将毕业论文写完。查重通过后一个星期左右申请预答辩,预答辩通过的同学可以参加论文盲审,一部分同学被抽中教育部盲审,也就是送到其他学校,给其他老师审。剩下大部分同学提交到学院内进行双盲审。也不知道运气好还是不好,我就被抽中了教育部盲审。从盲审到出结果,中间大约有一个月的时间,这段时间其实并不忙,或者说完全闲下来了,毕竟此时自己再如何努力也没用,自己的命运已经不掌握在自己手里了。这段时间也是大家“最后疯狂”的一段时间,有的同学选择出去旅游,有的同学在进行春招,还有的同学(例如我)选择在宿舍摆烂。但无论每个人在做什么,其实都在等待着悬在头上的达摩克利斯之剑落下的那天。

    达摩克利斯之剑(The Sword of Damocles)的说法源自古希腊传说:迪奥尼修斯国王(Dionysius)邀请他贪婪的大臣达摩克利斯(Damocles)坐在自己的宝座之上掌管王位,达摩克里斯却发现自己坐在用一根马鬃悬挂的一把寒光闪闪的利剑下,仓皇而逃。

    迪奥尼修斯王用这个故事说明,国王的幸福和安乐都是假象,极大的财富和权力也意味着巨大的责任和危险。

    5月中旬的某一天盲审结果公布了,有人欢喜就有人忧,通过的同学自然欢喜,没通过的同学想必心里并不好受。盲审通过的同学就可以参加毕业前的最后一步——答辩。我依然忘不了我的答辩日期:5月24日,倒不是那天有多特别。诚然,答辩前和答辩结束的几天内,这个日子确实让人紧张以及具有纪念意义,可是之后这种感觉就慢慢淡化了。所以令人难以忘记,只是因为我的生日是11月24日,两个24正好重复罢了

    总的来说,我们学院的延毕率不算低。应该说自从“翟天临”事件以来,全国大部分高校的研究生延毕率相较以前有所上升,这里我只叙述整体的客观事实,并不想对此多加评论

    通过答辩之后我就又进入了一段摆烂的阶段,好像答辩通过,我人生的一道大坎儿也通过了一样,每天继续看看书,打打游戏

    未来展望(工作与生活)

    在之前的文章里我提到过,去年秋招我应聘的岗位是中石化江汉油田的信息技术岗,正好最近单位也发了通知,我们需要在7月12日之前去潜江报到,报到之后会进行一段时间的培训,培训结束了再分配到工作岗位。距离报到还有一段时间,因此我打算在7月2日去一趟苏州,实际上苏州以前我就去旅游过,而且我也不觉得夏天适合去江南地区游玩,主要是因为我想线下观看一次LPL比赛,正好7月2日是LNG在苏州主场对战OMG,我是LNG粉丝,我妹是OMG粉丝,我俩一拍即合决定一块儿去。看完比赛之后我想一路向东,去看看海,顺便吃几顿海鲜大餐

    再说说这段时间的计划,首先我要完成可能是最后一个与学习有关的视频——prompt的代码实现。这个视频我之前就说过要做,只不过因为毕业的事儿一直搁置到现在。另外,我深感以后写博客的频率不会很高,每年花一笔钱在服务器和域名上有些浪费,所以我要考虑将博客迁移到github上,这样以后就不用花钱续费服务器和域名了

    最后这一段算不上未来展望,但是我不知道写在什么地方比较好,所以就干脆放这里了。不知道从什么时候开始,随着时间的推移,我离学术界越来越远,业界最新的技术、方法我一点也没有去仔细了解原理,也没有仔细看过论文。每天都会有这样的情况发生,我关注的公众号按时发布了一条关于NLP最新技术或者方法的剖析,我看着标题以及配图,感到很好奇,非常想要了解其中具体的内容,但不知道为什么,我就是没有点进去阅读的欲望。仔细想想,这其实是我的好奇心和懒惰所产生的矛盾。不仅是学术,我对这个世界很多未知的东西仍然保有着最大的好奇,但同时我又是一个懒惰的人,我的懒惰致使我不想跨出舒适圈。现在是如此,等工作以后,我更没有精力去了解其他东西了。刚学计算机的时候,我真的觉得编程很有意思,凭借我对计算机的热爱,到了30岁甚至40岁肯定还能写得出代码。现在我越来越觉得当年的想法是一个很难完成的flag,我也能理解为什么有些程序员出身的大佬到最后也只能纸上谈兵。不过人的一生,代码并不是全部,就算到了40岁写不出来代码也无所谓,毕竟古语有云:吾生也有涯,而知也无涯,以有涯随无涯,殆已

    AWS教程—解决网站加载缓慢的难题

    作者 mathor
    2023年3月10日 12:05

    谁不喜欢免费的东西?谁不想网站访问更快呢?让我们试一试。借助亚马逊云技术的CloudFront CDN服务提供的免费套餐,通过简单的配置,加速你的WordPress网站。

    作为一个强大的CMS(内容管理系统)平台,WordPress以其完善的功能、一流的定制能力和丰富的插件广受好评。从个人博客到企业网站,从初创企业到大型跨国企业,我们日常访问的很多网站都是基于WordPress创建的。

    如果你有这样一个网站,想为世界各地的访问者提供快速流畅的访问体验,你该怎么做?最简单的方法是使用CDN,借助CDN服务提供商在全球主要地区的节点,将内容传递给附近的用户。但是这样一套方案会不会很贵?选择合适的CDN服务其实可以很便宜,甚至对于很多流量不是很大的网站来说,完全可以实现免费。

    请注意,本文的所有操作将以全球版亚马逊云科技平台为准。点击这里详细了解CloudFront CDN服务并注册账户开始使用免费套餐。

    先决条件

    要使用本文介绍的方法,你需要具备:

    • 一个基于WordPress平台创建的现成网站;
    • 为该网站安装一款名为“WPAdmin AWS CDN”的插件;
    • 一个亚马逊云科技账户

    仅此而已!

    Amazon CloudFront服务是什么

    Amazon CloudFront是亚马逊云科技提供的CDN服务,可以用极低的延迟和极高的传输速度实现内容的全球化交付。目前,该服务已经通过超过310个节点覆盖全球47个国家/地区的90多个城市,基本上可以全面覆盖所有主要的人口聚集区。

    那么这项服务为何可以免费使用?其实这主要得益于亚马逊云科技为所有用户提供的“免费套餐”。该套餐涵盖了亚马逊云科技的上百项产品,这些产品有些可以“免费试用”,有些可以“12个月内免费”,有些则是“永久免费”。有关免费套餐涵盖的服务以及详细信息,可以点击这里查看。

    具体到CloudFront,在免费套餐涵盖下,用户每月可免费获得1TB传出数据流量,1000万次HTTP或HTTPS请求,以及200万次函数调用。该免费套餐永久有效,只有每月用量超出套餐额度,才会对超出部分根据实际用量收费。CloudFront的具体收费方式和费率可参考这里:https://aws.amazon.com/cn/cloudfront/pricing/

    第一步:注册帐号并开通CloudFront服务
    1.首先访问亚马逊云科技官网(aws.amazon.com)注册账户,或使用现有账户登录到管理后台。
    2.随后点击左上角的“Services”,并依次点击“安全性、身份与合规性”,以及“IAM”:

    3.接下来会打开IAM界面,我们需要在这里创建一个CloudFront用户,随后需要配置WordPress网站使用该用户来访问CloudFront服务。
    4.请点击页面左侧的“用户”,随后点击“添加用户”:

    5.在“用户名”处输入一个有意义的名称,例如“CloudFront-User”;将“AWS凭证类型”选择为“访问密钥-编程访问”;然后点击“下一步:权限”:

    6.选择“直接附加现有策略”;在策略搜索框中输入“CloudFront”,从搜索结果中选择“CloudFrontFullAccess”;随后点击“下一步:标签”:

    7.随后出现的标签页面上可以为该IAM用户设置一些描述性的标签,不过对于一般的小规模云部署来说,标签的作用并不大,因此不设置也没关系。但对于大规模的,包含几十上百个用户的部署来说,为了简化后续管理,强烈建议设置标签。这里我们不设置标签,直接点击“下一步:审核”。
    8.在随后的页面上检查所有设置,确定无误后,点击“创建用户”。
    9.接着会看到下图所示的界面。这里列出了访问密钥ID和私有访问密钥这两个非常关键的信息。请记录这两个信息并妥善保管(后续操作中还将用到)。并且需要注意保密,任何人知道这两个信息后,都将可以使用你的CloudFront服务!

    至此,CloudFront端的配置已经全部完成。接下来需要配置WordPress网站了。

    第二步:为WordPress网站启用CloudFront CDN

    1.登录到WordPress网站的管理后台,在左侧列表中依次点击“插件”和“安装插件”。
    2.随后在插件搜索框中输入“WPAdmin AWS CDN”;点击对应的“立即安装”按钮:

    3.安装完成后点击“启用”,随后在WordPress后台界面的左侧会出现一个“WPAdmin CDN”菜单项,鼠标指向该选项,并从弹出菜单中选择“WPAdmin CDN”:

    4.接下来会看到该插件的配置界面,这里重点需要输入“Access ID”和“Secret Key”这两项。而这两项就是刚才创建IAM用户后获得的那两个值。请将其填写到这里。

    5.将“访问密钥ID”填入“Access ID”,将“私有访问密钥”填入“Secret Key”。“Cache Policy”请选择“Enabled with Compression”;“Price Class”请选择“All Location”。其他设置均可使用默认值。点击“Create Distribution”:

    6.稍等片刻该页面会显示已成功创建CloudFront分配,随后点击“Reload the page”链接,可以看到左侧显示出了已分配的CloudFront二级域名,点击该域名对应的“Active”按钮:

    至此,WordPress网站端的设置已经全部完成。

    随后如果重新回到CloudFront的后台界面,会看到这里列出了一个“分配”,这就是WPAdmin插件为WordPress网站自动创建的CDN分配。从这里也可以看到,该CDN已经创建成功,并已成功启用。此后全球用户在访问这个网站时,就可以通过CloudFront CDN服务获得更快速、流畅的体验了。

    那么实际效果到底如何?让我们使用浏览器内置的Lighthouse性能测试工具测试看看。在启用CloudFront CDN之前,通过该工具测试的网站性能结果如下:

    在启用CDN后,重新测试获得的结果如下:

    所有性能测试指标都有一定提升。提升幅度看似并不大,主要是因为这是一个新搭建的测试用WordPress空白网站,除了自动生成的一篇占位文章外,并没有包含其他内容,因此本身加载速度就不慢,但CloudFront CDN依然让网站性能有了一定程度的提升。对于已经长时间运营,包含大量文章、图片等内容的网站来说,自然也就可以实现更好的提速效果。

    每月1TB免费流量,已经可以满足个人或大部分低负载网站的需求。就算超出免费额度,亦可按照极低的费率付费,就能让你的网站享受到以往只有大型企业才能使用的专业级CDN服务。更重要的是,相关的开通和设置操作都很简单,只要安装一个WordPress插件,并进行简单的配置,无需高深的技术能力,几分钟就能轻松搞定。

    试试看吧!点击这里详细了解CloudFront CDN服务,立即注册账户开始使用免费套餐,为你的WordPress网站提速。

    2022总结

    作者 mathor
    2022年12月28日 16:37

    这篇文章简单总结下我的2022年。这一年对我而言是丰富的,上半年我的小论文发表了,下半年我去了云南旅游,年底还找到了工作。总的来说,今年比去年好

    首先,我要进行一番自我批斗。自从3月我的论文发表后,就再没看过论文,甚至也没写几篇博客。与此同时,几乎每天都有同学在b站或者博客中提出各种各样的问题,有的问题太过基础,有的问题我也不知道作何解答,因此几乎所有问题我都看到了,但是大多没有回答

    暑假我去云南玩了大概一个星期,从昆明到大理,再到丽江。不得不说云南确实是个好地方,气候宜人,即便当时是最热的那段时间,在云南都能感受到一丝凉爽。旅行结束后休整了一段时间,随即便开始准备秋招

    每年都听闻秋招神仙打架、诸神黄昏、地狱难度,疫情这几年尤是如此。但实际上我刚开始进行秋招的时候并没有感受到行业的"寒气",放眼望去不少企业都在招聘,有大家熟知的大厂,还有不少小厂,算上各种国企、央企,一时间我产生了一种错觉——好像找工作并不难。随着时间的推移,我也投了十几家公司,大大小小的笔试也参加了不少,但都没什么回应。笔试的时候,我甚至在想,这些题目真的能起到区分水平刷人的效果吗?例如小米的某些岗位,笔试内容是行测,难度不算很高,甚至有的人如果找同学帮忙一起做,那不是随便考满分。后来我明白了,对于某些大厂来说,他们今年实际上压根就没有什么招聘指标,换句话说,不缺人。因此大家做了也是白做,无论你是985,还是普通211,最后的结局都是被添加进人才库。除了虚假的招聘岗位外,今年很多企业的报录比也创下了新高,以中石化为例,去年秋招招聘人数共11694人,今年仅有11421人,少了273个名额。去年共136850人报名,今年有超过177606人报名。我报的计算机岗位招10人,报名参加笔试的有601人,最终进入面试的有将近100人。这100人中,有本硕都是985的大佬,有国外留学的大佬,有拿了两次国家奖学金的大佬等等,这个比例以及难度相较于考研,只能说有过之而无不及。每个人找工作想必都有自己的目标,或者说优先级,对我来说,国企>工作地点在海外的企业>私企。我一直比较追求work life balance,所以国企自然是首选。而工作地点在海外的企业,是因为我想借助海外工作的机会和平台,在合适的时机润出去。私企实际上我并不考虑,即便是华为给我开30k我也不去,倒不是说我不喜欢钱,而是因为我不想出卖自己的时间,我还有很多事情想做,我的生活不能只有工作。而且私企的不稳定因素太多,不知道什么时候就被裁了,与其每天提心吊胆,倒不如去更稳定的国企。当然,国企和国企之间,亦有差距,接下来的内容算是我的一点心得。对于我们计算机专业来说,提到国企,大家首先想到的肯定是银行以及各大运营商,并且到目前为止你可能仍然觉得这些企业待遇很好,但实际上银行和运营商,能不去就别去。首先对于银行来说,除了总行或是省会城市的开发岗以外,其他地方分行并没有很多需要开发的内容,因此小县城的银行开发岗千万别去。再者,无论是哪儿的开发岗,校招入职银行都需要在一线工作一段时间,美其名曰熟悉业务,而所谓的"一线"实际上就是柜员。每天坐在里面替别人办理业务,运气不好甚至还有某些奇奇怪怪的绩效考核,例如售卖理财产品,拉存款等等。运营商亦是如此,除却某些设计院或是研究院,其他地方的运营商,不管你是不是技术岗,或多或少也都有绩效考核。另外,如果你很优秀,甚至根本拿不到它们的offer,借用牛客网某位大佬的评论

    因为你太优秀了,也有很多公司保底。你要明白他们需要什么样的人,招个一般的一本的进去,好管理,而且也知道自己的劣势,不会不知天高地厚,毕竟岗位本质是销售,你太优秀了,万一受不了客户的气,走了,或者发现别人双休,你单休,再或者发现本科、硕士福利都差不多。考,肯定能考进去,前提是你得准备好,是他们需要的本地人,毕竟要招存款,要卖各种产品。一个外地孩子,需要更努力才会认可你

    总之各位学弟学妹找工作应该多收集信息,多在知乎、牛客网上看看经验总结。我个人觉得随着疫情的结束,私企应该要重新恢复活力了,而不再像现在这样,大家为了国企那低到可怜的工资挤破头

    提到工作,我不得不反思下自己的阿喀琉斯之踵。说来惭愧,虽然我是计算机专业,但是长久以来,我对于开发这件事一直都很恐惧

    Achilles' Heel(阿喀琉斯之踵)阿喀琉斯是古希腊神话故事中的英雄人物,刀枪不入,唯一的弱点是脚后跟(踵)。后用于来比喻某东西的致命缺陷

    最早接触开发是在本科学习Java Web的时候,那时候上机课跟着老师敲代码经常走神,等回过头来便不知道老师在讲什么了。亦或是照着老师的操作,将这个库添加进环境,将那个包导入等等,但实际上我并不懂这样做到底是什么意思,回到寝室在自己的电脑上操作一番又是各种报错。久而久之我便对开发失去了兴趣,后来很长一段时间我都没有碰过开发。不过好在东边不亮西边亮,虽然我的开发水平很菜,但是我的数学以及算法水平还算不错,这也为我研究生期间的算法工作打下了扎实的基础。提这个事儿,是因为我签的工作是信息技术工程岗,打听之后才了解,工作内容就是要做开发,因此也只能想办法克服了

    最后,我想谈谈今年对我影响最深的一部作品——《斗破苍穹》。我大概是从8月底开始看《斗破苍穹》,与其说是"看",不如说是听,因为我是直接听的有声书(桑梓播讲的版本)。实际上这并不是我第一次看《斗破苍穹》,读高中的时候,每天上学路上我都戴着蓝牙耳机,耳机里放的就是《斗破苍穹》,只不过没听多久就转而听英语听力了。今年9月正值秋招,那时候我每天都在投简历、刷题,整个人处于一种非常低迷的情绪中,而《斗破苍穹》的剧情正好属于那种充满幻想且富有希望的感觉。实话说,在听《斗破苍穹》的过程中,我有意识地将自己代入成主人公萧炎,这确实给我带来了极大地自信,帮我度过了秋招那段压抑的时间。话又说回来,我和萧炎在某些方面很像,例如,我们都有一个坚定的目标,我们为这个目标都付出了很多,我们的性格都很坚韧等等。可能很多人认为《斗破苍穹》只不过是一部爽文罢了,诚然,它确实存在很多问题,剧情的节奏有些不到位、经常出现越级挑战的桥段、后期内容有些重复等等。但是对我而言,《斗破苍穹》就是一部好作品

    我与胖子的二三事&暑假杂记-1

    作者 mathor
    2022年8月27日 14:38

    我与胖子的二三事

    还记得以前看过一部关于高中生的电影,里面说到,无论你在哪读高中,基本上班里都会有一个被称为胖子的家伙,与之相对应的也会有一个被称为子的男生。在我们班上,我就是那个瘦子,而胖子是我的好哥们儿


    最近一次测体重只有50.2

    我与胖子的关系最早可以追溯到初中,我们从初中开始就在一个班,甚至很长一段时间他都是我的同桌,可能是老师分配座位的时候故意为之,想平衡一下我俩的体重。胖子的妈是我们学校旁边一家网吧的网管,而且是夜班的网管,所以初中周末我们经常会叫上胖子一块儿去通宵。他上网不需要掏网费,我们几个也想走走“后门儿”,但没人好意思开口。有一次家长会,胖子的妈坐我旁边儿,我没敢抬头,生怕她认出我,后来我再去上网的时候,她在柜台直接跟我们说:“上次家长会你们太好玩儿了,一个个都不敢抬头看我,怕我告诉你们家长是吧?”。自此以后的家长会我们就再没低过头


    一点通网吧

    初中在我早恋以前,我的成绩基本上是班里前几。这并没有吹牛,即便我经常去网吧通宵,但学业从没有落下过。胖子的成绩倒是一般般,以前并不觉得,现在想来算是我害了他。因为我和胖子是同桌,所以每次家庭作业的答案他也总是能从我这儿弄到第一手资料,别的同学要么等他抄完再抄我的,要么就再抄他的。有的作业是上午布置的,那我就赶在下午上学前在家写完(或许我没有午睡的习惯就是因为习惯了中午做作业)。还有些作业是下午上完课才布置的,那我就会和胖子在放学后找个僻静的地儿,我边做他边抄。有时候我会和胖子提出一些等价交换,例如他骑自行车载我回家,如果没骑自行车就背我回家,那时候胖子就有1米7了,再加上我很轻,所以对他来说没什么太大问题。当然也会存在作业实在太多或太难,来不及抄。这种情况我一般会回家写完,第二天凌晨5点多就起床去学校,每次我进教室胖子一般都在,就是为了等我的作业(还有一些其他同学也在等我的作业)

    后来因为一些原因我学坏了,所以中考自然也考的不咋地,胖子就更不用说了。不过我们那个年代是可以买分上高中的,这也并不违法。但是我家拿不出那么多钱,所以我在初中老师的推荐下去了一所非常差的公办高中。胖子买分上的另一所高中,他上的高中实际上就是我们的初中学校,我们这个学校既有高中也有初中

    我在高中上了一年之后,学校里陆陆续续有传言,说是我所在的高中即将拆了,变成一个小学。一开始只是一两个人在传,后面传的人越来越多,直到那一天真的来临了。周一早上照例升国旗,校长在国旗下讲话通知了这件事情,并且明确告诉我们所有的学生都将进入另一所高中学习,要不怎么说缘,妙不可言呢,这个高中就是胖子所在的高中

    大概高二开学没几个月,我们就到了新的高中。我学的是理科,胖子学的也是理科,但是胖子所在的高中有两个理科班(这两个理科班是同一等级的,不存在什么火箭班之类的),我们基本上是按照一半一半的比例平均分配到两个班,说来就是这么巧,我正好被分配到了胖子所在的班。如果硬要说,我原来的高中实力是不如新高中的,所以我们这些“外来者”无不例外都被安排在了最后一排。胖子上了高中后听说有些开窍,所以他没有坐在后几排,因此自然也没可能成为我的同桌。后来经过了几次考试,我的实力有所展现,老师也就把我调到了前面几排,这中间有一次我和胖子坐了一段时间的同桌,不过考试很频繁,每次考完试基本上就会换座位,所以我们同桌的时间也没有那么长。再到后面我的记忆就很模糊了,因为学习压力越来越重,下课铃好像被附了魔法一样,铃声一响所有人都趴桌子上睡着了

    中间我和胖子有两件大事儿,我觉得不得不提。高三的时候我喜欢上了我们班一个女生,这个女生和胖子的关系还不错。晚自习之前我把她拉到墙角表白,结果当然以失败告终,当天晚上回到家后她给我发了个qq消息,是她和胖子的聊天记录截图,内容大概就是她和胖子说了一声我对她表白了,胖子的回复是让她认真考虑,并且附上了我的一些缺点。当时我就想,这家伙不地道,兄弟表白,你不帮我就算了,还在背后说我坏话。我当时很气愤,把这张截图反手转发给了胖子,然后把他删了,后面直到高中毕业我们都没说过一句话。第二件事儿发生在高考结束,还没出分数的那段时间,那时候我想着要及时行乐,找个城市进行一趟毕业旅行,于是我叫上了初中的另一个铁哥们儿,他和我一拍即合决定去杭州,但是他想要叫上胖子,因为初中的时候我们仨经常在一块儿鬼混。我对他说了我和胖子的事儿,表示会有点尴尬,他觉得没啥,并且劝我把胖子加回来。其实当时我早就不生气了,只不过拉不下面子。经历了一段时间的思想斗争,某一天我照例在外面吃完早餐后,坐在面馆门口把胖子加了回来,很快他就通过了好友申请,不过现在我已经想不起来谁发的第一句话,以及第一句话说了什么。唯一记得的是,我和胖子没说几句就都释怀了,并且表示这都不是事儿。后来我们仨把江苏基本上玩儿了个遍,并且赶在出成绩之前去了趟灵隐寺,拜了拜各路神仙,祈求考个好成绩。不过胖子本身学的就不咋的,神仙也救不了,最终上了襄阳的一所专科,而我去了武汉的一所本科


    暑假杂记-1

    前两天,也就是7月14日我到襄阳找胖子玩儿,这也是我时隔4年再见胖子。18年暑假的时候我就去找过胖子,那时候他快要毕业了,正准备秋招,在襄阳租了个房子,房子虽然小,晚上我俩挤在一张床上,不过有地方住也不错,省下了酒店的费用。这次去找胖子,他换了个离公司更近的地儿,房子也更大了,还多了个室友,就是我们一块儿去苏州的初中同学。14号早上到襄阳,胖子没能来接我,因为他要上班,另一个同学来接的我。胖子住在一个机关大院儿里,据他说是捡漏租到了这里。胖子家里还养了条狗,很听话,刚去的时候对我一直叫,没过多久就跟我熟络了,经常跑到我面前把肚皮对着我让我摸


    胖子养的中华田园犬

    胖子混的不错,找的一个955的公司做后端开发,几年前被提到技术总监的位置。他跟我说前两年公司老总犯事儿被判了三年,所以这几年公司一直群龙无首,每个员工自己就是老板。谈及胖子的感情史,他说这些年从上大学开始陆陆续续谈了四个,最长的谈了两年,最短的十几天。针对胖子的四段感情我做了一个大约半小时采访,本来准备剪剪做个字幕发到b站,不过我太懒,也就作罢了。在来襄阳之前,胖子就有咨询过我考研的相关事宜,这次我去襄阳,看到他的桌子上有一堆考研的书籍,我不解,问他现在日子不是挺好的吗,工资照发,工作又轻松,为什么要考研,他的回答很干脆,想进国企


    胖子背考研单词的草稿

    胖子在用墨墨背单词

    与胖子交流的这两天,我才发现我是一个活在过去的人,我主动和胖子交流的话题总是些初高中时候的那些事儿,聊聊以前谁干了些什么蠢事儿,那些同学最近都在干什么。胖子是活在未来的人,他对过去没有像我这般留恋,他觉得当下是最好的,对未来也不迷茫

    我才知道胖子买了辆车,我坐在后座儿看着他开车的背影,也不知自己在想什么,只觉得他变得有些陌生,我在想以后是不是不应该用“胖子”来称呼他,毕竟这多少对他有些不尊重,不过我也只是稍微想了一下而已,实际上我还是叫他“胖子”,这么多年的贯口不是那么容易改的


    开车的是胖子,副驾驶是我们初中同学

    那天晚上我们仨吃烧烤聊天,胖子说他羡慕我学历这么高,我羡慕他实现了财富自由。我们干了最后一杯,我说我来付钱,他说:“你都还没赚钱,不用你来付”


    部分烤串儿

    这篇回忆录越写到后面越写不下去,倒不是别的原因,只是因为我太懒,想着快点儿收尾。最后我在想要不要把这篇文章发给胖子看一下,思索了一下觉得还是不了,我不想让他知道我这么矫情,也不想听他对我的调侃

    ❌
    ❌